permdock 0.5.0 → 0.7.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 +1 -0
- package/dist/{2020-C9VN-x8c.js → 2020-CJbO8Bvz.js} +1 -3
- package/dist/a2a/index.d.ts +5 -5
- package/dist/a2a/index.js +4 -4
- package/dist/{adoption-scan-B4R5fnMU.js → adoption-scan-D-feE7BE.js} +1 -1
- package/dist/agent/index.d.ts +3 -3
- package/dist/agent/index.js +1 -1
- package/dist/ai-sdk/index.d.ts +21 -6
- package/dist/ai-sdk/index.js +19 -9
- package/dist/{approval-prompt-Djo_PyZc.d.ts → approval-prompt-K0faOLFp.d.ts} +2 -2
- package/dist/approvals/index.d.ts +4 -4
- package/dist/approvals/index.js +4 -4
- package/dist/{approvals-DJ6Yd5z1.js → approvals-CMRfsbBh.js} +74 -48
- package/dist/{arazzo-B6lebmiQ.js → arazzo-ClrF3PVb.js} +2 -2
- package/dist/{arazzo-BWhNF-k0.js → arazzo-rdeJ8n1J.js} +4 -4
- package/dist/{args-IIolxxKA.js → args-CC3OwyHW.js} +112 -2
- package/dist/astro/index.d.ts +6 -6
- package/dist/astro/index.js +2 -2
- package/dist/{audience-Dg8XsRaO.js → audience-BrMs8c4o.js} +1 -1
- package/dist/{auth-DRLEizbL.js → auth-CscUX8Sy.js} +3 -4
- package/dist/authzen/index.d.ts +162 -22
- package/dist/authzen/index.js +315 -146
- package/dist/{automation-BMZPIVUM.d.ts → automation-DOtAFWdy.d.ts} +3 -3
- package/dist/{automation-DVjOckjV.js → automation-ySsxp_Yp.js} +1 -1
- package/dist/base-url-BQbddZO5.js +9 -0
- package/dist/better-auth/index.d.ts +2 -2
- package/dist/better-auth/index.js +2 -2
- package/dist/better-supabase/index.d.ts +50 -8
- package/dist/better-supabase/index.js +94 -32
- package/dist/{bind-CZzhx-Vj.js → bind-D1nO6fiC.js} +5 -5
- package/dist/{bind--9EFVYWF.d.ts → bind-JDuvxjuW.d.ts} +7 -7
- package/dist/{build-instance-BMnAudHn.js → build-instance-DxE7czo9.js} +1 -1
- package/dist/{canonical-json-BC8_nMTw.js → canonical-json-DwilZ1iB.js} +6 -3
- package/dist/{capability-BSslw1QV.d.ts → capability-D4UC9TTW.d.ts} +2 -2
- package/dist/{capability-N1K9IpqS.js → capability-L7NnfhiE.js} +1 -1
- package/dist/{casbin-Cr7RLtA3.js → casbin-BHijLuHY.js} +2 -2
- package/dist/{casbin-Dyu2gnUD.js → casbin-BW9pS47J.js} +1 -1
- package/dist/{casl-64gpT-8x.js → casl-CmJlgziS.js} +2 -2
- package/dist/{casl-DjEDhTCP.js → casl-UbI8v-Wq.js} +1 -1
- package/dist/catalog/index.d.ts +70 -10
- package/dist/catalog/index.js +112 -6
- package/dist/catalog-BCCjSAdH.js +1 -0
- package/dist/{catalog-R_A__RsH.js → catalog-BaMQfQ6Y.js} +3 -3
- package/dist/{catalog-BECMPrwc.js → catalog-D69WhFii.js} +43 -13
- package/dist/{catalog-doc-C9wjsfNY.js → catalog-doc-CV9s6B1S.js} +28 -5
- package/dist/{catalog-fingerprint-CCP0-yQS.js → catalog-fingerprint-C144oW4M.js} +1 -1
- package/dist/{create-BWRSXgOF.js → challenge-nGWma08S.js} +122 -25
- package/dist/chat/index.d.ts +1 -1
- package/dist/chat/index.js +2 -2
- package/dist/chat-sdk/index.d.ts +3 -3
- package/dist/checks-BC_0mPIq.js +37 -0
- package/dist/claude-agent/index.d.ts +3 -3
- package/dist/claude-agent/index.js +2 -2
- package/dist/clerk/index.d.ts +3 -3
- package/dist/clerk/index.js +1 -1
- package/dist/cli/bin.js +2 -2
- package/dist/cli/index.d.ts +3 -3
- package/dist/cli/index.js +3 -3
- package/dist/cloud/index.d.ts +127 -11
- package/dist/cloud/index.js +251 -3
- package/dist/{cloud-CIoHNevm.js → cloud-CO8pYtwr.js} +5 -5
- package/dist/{codemod-Cxvvc70T.js → codemod-BP6n8N9L.js} +3 -3
- package/dist/{codemod-Bmj9dWMH.js → codemod-i4N2BhDc.js} +3 -3
- package/dist/{collect-CrZJJnEF.js → collect-BaWeMjwV.js} +17 -8
- package/dist/{collect-DloHbDVa.js → collect-DNm3oKOk.js} +6 -5
- package/dist/collect-k_Dulxr5.js +1 -0
- package/dist/compile/index.d.ts +1 -1
- package/dist/compile/index.js +1 -1
- package/dist/{compile-CMqMx_IN.js → compile-BAEO5bOk.js} +2 -2
- package/dist/{compile-Ckm2HqBZ.d.ts → compile-COM2VKuN.d.ts} +3 -3
- package/dist/{completion-BqhRBJD8.js → completion-BNdVf7X2.js} +3 -3
- package/dist/{config-bs_kZeYq.js → config-CoQHDrDi.js} +7 -3
- package/dist/{config-B46rm9sc.js → config-DGZzMV1B.js} +2 -2
- package/dist/{config-report-DUgj62Ai.js → config-report-Cm7UITNA.js} +3 -3
- package/dist/connector-schema-_VCSsdtD.js +433 -0
- package/dist/{context-bbFHR-0D.js → context--uM9V3Ui.js} +2 -2
- package/dist/convex/index.d.ts +5 -5
- package/dist/convex/index.js +2 -2
- package/dist/core-B5-w6Kw9.js +335 -0
- package/dist/core-CQkE8Esr.d.ts +179 -0
- package/dist/{create-0VZ7Pdiu.d.ts → create-B2-CQqCI.d.ts} +5 -5
- package/dist/{create-C3b4B5eF.js → create-Cb86Z8Im.js} +9 -8
- package/dist/{create-DnrmLnLW.js → create-DJrlhEp9.js} +5 -5
- package/dist/{create-BFfm17UA.d.ts → create-QHuuPw3q.d.ts} +7 -7
- package/dist/{create-BDS7wc3y.d.ts → create-UTnUVETj.d.ts} +30 -10
- package/dist/{credential-DM2um3ha.js → credential-CIM7wHwA.js} +4 -4
- package/dist/{credentials-DPyHmYz5.js → credentials-BpuTwd7a.js} +1 -1
- package/dist/{deciding-columns-Sq12mEA6.js → deciding-columns-DRo2QM6E.js} +13 -2
- package/dist/{delegation-DaXVdDhM.js → delegation-C5rOdTp5.js} +5 -5
- package/dist/delivery/index.d.ts +5 -5
- package/dist/delivery/index.js +4 -3
- package/dist/{delivery-DCAgNyCn.js → delivery-rwOKLWRm.js} +51 -2
- package/dist/{denied-text-D8jDHgsl.d.ts → denied-text-D4qkEtFz.d.ts} +2 -2
- package/dist/{describe-BybMRY7A.js → describe-DZlnEtLy.js} +1 -0
- package/dist/{describe-BZUsixiL.d.ts → describe-O0SwYIK8.d.ts} +2 -2
- package/dist/{diff-CxZo9pTq.js → diff-Btr1c1Ow.js} +2 -2
- package/dist/{diff-DCePiN6M.js → diff-DzT-xD13.js} +10 -10
- package/dist/{doctor-DFjUxf2f.js → doctor-BU1szn63.js} +241 -49
- package/dist/{doctor-CxiwSfqH.js → doctor-BoK_y0KO.js} +4 -4
- package/dist/drizzle/index.d.ts +3 -3
- package/dist/drizzle/index.js +1 -1
- package/dist/elysia/index.d.ts +5 -5
- package/dist/elysia/index.js +3 -3
- package/dist/{errors-C2PXIv4c.d.ts → errors-B_Qg9D3e.d.ts} +2 -2
- package/dist/{errors-CWTY6uih.js → errors-DpP_U6Bf.js} +1 -0
- package/dist/{evaluate-_R8QkWaf.js → evaluate-B_oqFbWC.js} +130 -34
- package/dist/{evaluations-16UqqQ6W.d.ts → evaluations-BCddEOfO.d.ts} +4 -4
- package/dist/{evaluations-DZ2CbV5k.js → evaluations-DReoiVBw.js} +4 -4
- package/dist/eve/index.d.ts +5 -5
- package/dist/eve/index.js +3 -3
- package/dist/express/index.d.ts +5 -5
- package/dist/express/index.js +3 -3
- package/dist/fastify/index.d.ts +5 -5
- package/dist/fastify/index.js +3 -3
- package/dist/{fetch-adapter-qKJBuRqy.d.ts → fetch-adapter-CuhyYwC1.d.ts} +4 -4
- package/dist/{fetch-adapter-g0ypLkID.js → fetch-adapter-De-u6vhJ.js} +3 -3
- package/dist/{fields-D9tPVUUS.js → fields-ClcQLrVc.js} +48 -13
- package/dist/{files-C5ZI27eV.js → files-acUbNwWt.js} +15 -2
- package/dist/{fixtures-B7XrLeY7.js → fixtures-BTMW6zgU.js} +2 -2
- package/dist/{flags-C3DktBDY.js → flags-aaeRAdiD.js} +2 -2
- package/dist/{from-snapshot-D2lZt4Dd.js → from-snapshot-Bz469dIh.js} +17 -10
- package/dist/generate-3FNO5P5Q.js +159 -0
- package/dist/{grantee-Cn1HyUsI.js → grantee-BrRANrpT.js} +14 -4
- package/dist/{grantee-conditions-CcXf8hMM.js → grantee-conditions-C6P1Tvol.js} +1 -1
- package/dist/{grantee-match-DHArqY82.js → grantee-match-0RtHWQDx.js} +3 -3
- package/dist/h3/index.d.ts +4 -4
- package/dist/h3/index.js +3 -3
- package/dist/{helpers-DTcZOzhF.js → helpers-DY3vXuGs.js} +3 -3
- package/dist/hono/index.d.ts +5 -5
- package/dist/hono/index.js +3 -3
- package/dist/{hosted-DBDX0M-P.d.ts → hosted-BmjzxQhp.d.ts} +14 -2
- package/dist/{hosted-BZIAYvon.js → hosted-XBgU6RGT.js} +34 -12
- package/dist/{http-DXJ37RDA.js → http-Ca3Sr5x1.js} +1 -1
- package/dist/{import-DMmOG27O.js → import-Bz0GefWg.js} +5 -5
- package/dist/{import-CNV7I2Dw.js → import-DB2EG_iy.js} +3 -3
- package/dist/{index-CxGUswIC.d.ts → index-BE8y3moU.d.ts} +50 -8
- package/dist/{index-Chrs5fQ-.d.ts → index-BSfRl0hZ.d.ts} +6 -6
- package/dist/{index-DOVf7RJv.d.ts → index-BTkwrK7v.d.ts} +155 -17
- package/dist/index-CMiPH2Tv.d.ts +206 -0
- package/dist/{index-SGdIQyzc.d.ts → index-DH9DUDEM.d.ts} +18 -3
- package/dist/{index-BcHcPyIo.d.ts → index-DLwcuCN_.d.ts} +86 -7
- package/dist/index.d.ts +18 -17
- package/dist/index.js +27 -25
- package/dist/{init-GG6Jh8HD.js → init-5TXNji88.js} +5 -5
- package/dist/{init-DeMYsnYJ.js → init-B-4t1NzC.js} +4 -4
- package/dist/{instance-options-Omfd793B.d.ts → instance-options-CU0YQCLH.d.ts} +1 -1
- package/dist/{instance-snapshot-Cxq4ygFc.js → instance-snapshot-CjcwnEiV.js} +20 -14
- package/dist/jwt/index.d.ts +83 -5
- package/dist/jwt/index.js +143 -5
- package/dist/{kernel-5JatXyND.js → kernel-DVExUwkp.js} +138 -12
- package/dist/kysely/index.d.ts +3 -3
- package/dist/kysely/index.js +1 -1
- package/dist/load-DrMHXzgN.js +1 -0
- package/dist/{load-DFS_ry0W.js → load-DxroEzH1.js} +2 -2
- package/dist/{login-Dfe5RlYk.js → login-ClSJh5t5.js} +4 -4
- package/dist/{login-imhuwvn3.js → login-WC9HPJpU.js} +6 -10
- package/dist/{manifest-C8IzW3Do.js → manifest-B79YuF2T.js} +6 -2
- package/dist/{manifest-mx5ghSFM.d.ts → manifest-BVhExYhw.d.ts} +23 -2
- package/dist/{manifest-CtKR3GXL.js → manifest-Dv6q4i5s.js} +54 -35
- package/dist/{manifest-schema-C0kK_8V0.js → manifest-schema-Cv492Qev.js} +37 -7
- package/dist/{map-claims-D3oRmTk0.js → map-claims-etGIS_Dv.js} +14 -11
- package/dist/{map-error-TCAdw-eW.js → map-error-BQGyDm_M.js} +1 -1
- package/dist/mcp/index.d.ts +64 -10
- package/dist/mcp/index.js +151 -22
- package/dist/{migrate-BShP7Vf4.js → migrate-Dodel0IJ.js} +77 -24
- package/dist/nest/index.d.ts +5 -5
- package/dist/nest/index.js +3 -3
- package/dist/next/index.d.ts +9 -9
- package/dist/next/index.js +5 -5
- package/dist/next/plugin.d.ts +1 -1
- package/dist/next/plugin.js +2 -2
- package/dist/node/index.d.ts +5 -5
- package/dist/node/index.js +2 -2
- package/dist/openai/index.d.ts +5 -5
- package/dist/openai/index.js +3 -3
- package/dist/openapi/index.d.ts +14 -4
- package/dist/openapi/index.js +1 -1
- package/dist/{openapi-ahr8rHu3.js → openapi-DMocl1bh.js} +4 -4
- package/dist/{openapi-B7HZ0f-r.js → openapi-Ddb4628T.js} +2 -7
- package/dist/{openapi-DTaEmTSW.js → openapi-ztVaux6j.js} +8 -8
- package/dist/{operation-findings-DgATDpvh.js → operation-findings-kRcEp8lE.js} +1 -1
- package/dist/{operations-CxybZErY.d.ts → operations-BNLes61x.d.ts} +1 -1
- package/dist/orpc/index.d.ts +6 -6
- package/dist/orpc/index.js +4 -4
- package/dist/otel/index.d.ts +3 -3
- package/dist/otel/index.js +1 -1
- package/dist/{output-Dyw8fyPF.js → output-DgSDLrta.js} +7 -3
- package/dist/{output-files-DhRBBE4n.js → output-files-CCMdcFWb.js} +2 -2
- package/dist/output-files-DPAY7-GX.js +1 -0
- package/dist/{ownership-BatFgAA4.js → ownership-Z2LpxsGa.js} +1349 -883
- package/dist/parse-Ddhz2xf4.js +148 -0
- package/dist/{parse-local-manifest-CVSs6J9I.js → parse-local-manifest-T1Q8X3A2.js} +24 -1
- package/dist/{parse-local-manifest-DgqtruPn.d.ts → parse-local-manifest-e4mdwAKd.d.ts} +1 -1
- package/dist/pdp/index.d.ts +3 -3
- package/dist/pdp/index.js +7 -3
- package/dist/peer-12Q5I_RH.js +976 -0
- package/dist/{peer-CRvC7Hg1.js → peer-DOzzMfZL.js} +1 -1
- package/dist/{permdock-B9JxkBwC.js → permdock-BfWEeMqk.js} +177 -49
- package/dist/{permdock-D7eeLJER.d.ts → permdock-Dco6dyCK.d.ts} +34 -5
- package/dist/{permission-registry-Br4jSNVi.js → permission-registry-DpPtSKNZ.js} +1 -1
- package/dist/{vocabulary-D6lPdb4Z.d.ts → permission-types-DhNEmoRG.d.ts} +4 -62
- package/dist/{permissions-oEWfl-kl.d.ts → permissions-CoqCOfJ3.d.ts} +2 -1
- package/dist/{permissions-B-wCP5ZC.js → permissions-CyH2MV_B.js} +1 -1
- package/dist/{permissions-CZKiUfFM.js → permissions-DArULThq.js} +4 -4
- package/dist/pkce-5h8NgMQJ.js +21 -0
- package/dist/{policies-CO1oOymN.js → policies-B2lZIurj.js} +3 -3
- package/dist/{policy-Czo4n3Hs.d.ts → policy-B7dg_yzu.d.ts} +2 -2
- package/dist/{policy-DLZJ5gAp.js → policy-DaJy4nK4.js} +17 -8
- package/dist/{policy-from-catalog-DzhEc3Y9.js → policy-from-catalog-DFWYkNdu.js} +9 -9
- package/dist/{policy-types-DzwivBgR.d.ts → policy-types-B-F-qAZk.d.ts} +109 -5
- package/dist/postgres-store-BL9M_CA1.js +1001 -0
- package/dist/{postgrest-NUqZT-RB.d.ts → postgrest-CYacM_u7.d.ts} +12 -1
- package/dist/{postgrest-CW0IqC-U.js → postgrest-r5faDIzD.js} +47 -5
- package/dist/{powersync-BHfuehf3.js → powersync-13odBwiM.js} +3 -3
- package/dist/powersync-53ryOZip.js +1059 -0
- package/dist/powersync-CExtTLyA.js +1 -0
- package/dist/preset/index.js +1 -1
- package/dist/{preset-DZdU0tne.js → preset-CHTbd-DQ.js} +2 -2
- package/dist/prisma/index.d.ts +2 -2
- package/dist/prisma/index.js +1 -1
- package/dist/{problem-details-DXlt-vks.d.ts → problem-details-Tcfmj3bV.d.ts} +1 -1
- package/dist/prompt-DwtVemER.js +935 -0
- package/dist/{protected-DEPHc2xV.d.ts → protected-BwZYL1X_.d.ts} +6 -5
- package/dist/{protected-DfjY5mLA.js → protected-DXE3cQYg.js} +2 -2
- package/dist/{provider-CC-u3bYP.js → provider-BQsTYYy0.js} +2 -2
- package/dist/{provider-DMVt6yYn.d.ts → provider-Csk-THAn.d.ts} +1 -1
- package/dist/{provider-store-B5Yrkhzr.js → provider-store-IgqQipCO.js} +2 -2
- package/dist/{pull-BgIfno6w.js → pull-CN5OLxrF.js} +7 -7
- package/dist/pull-Cty6Ovyu.js +1 -0
- package/dist/{push-CmFVBOeI.js → push-tVdG8dUL.js} +54 -14
- package/dist/{pushed-policy-BImMTTIM.d.ts → pushed-policy-BbcY9r_4.d.ts} +1 -1
- package/dist/{pushed-policy-DobP7AHI.js → pushed-policy-CmYeSQqq.js} +1 -1
- package/dist/react/index.d.ts +6 -6
- package/dist/react/index.js +3 -3
- package/dist/react/provider-client.d.ts +1 -1
- package/dist/react/provider-client.js +1 -1
- package/dist/react-native/index.d.ts +25 -11
- package/dist/react-native/index.js +214 -24
- package/dist/{refs-K6eWUJ0H.js → refs-CNJBiTFo.js} +15 -1
- package/dist/{replay-D7iKcLFe.d.ts → replay-DCDD_ZfL.d.ts} +1 -1
- package/dist/{request-context-BTRTG7OT.js → request-context-BykKLmyE.js} +2 -2
- package/dist/resend/index.d.ts +4 -4
- package/dist/{retire-CALjIQ7e.js → retire-Wj6dkyDE.js} +2 -2
- package/dist/{rls-BA8an5Ap.js → rls-Ck_PocSp.js} +32 -8
- package/dist/{rls-j6t43t7n.js → rls-CxBZb4rZ.js} +478 -534
- package/dist/{role-builder-CXbis5-X.js → role-builder-C1VJzvcr.js} +3 -3
- package/dist/rolldown-runtime-C3I60J0A.js +4 -0
- package/dist/{rpc-aPyNi6tA.js → rpc-Bk1bE-ch.js} +1 -1
- package/dist/run-Bz7DXGEv.js +1 -0
- package/dist/{run-ticket-sxFI6LAk.js → run-ticket-B5d_63Ma.js} +22 -1
- package/dist/{run-ticket-BjhTOi6u.d.ts → run-ticket-BpNi7BCi.d.ts} +8 -3
- package/dist/{run-DOfMtc9V.js → run-uLD2aWuO.js} +7 -7
- package/dist/{runtime-D3VTAiCA.js → runtime-Vif3_-zf.js} +1 -1
- package/dist/{saas-FO-Q8oj0.js → saas-Az_Kz-4D.js} +7 -7
- package/dist/{scan-BOI5tJ-6.js → scan-DSljDE1Y.js} +1 -1
- package/dist/{schema-yLuBWWsh.js → schema-gIcCx7zM.js} +1 -1
- package/dist/scim/index.d.ts +3 -2
- package/dist/scim/index.js +3 -1
- package/dist/scim-C7JYhySg.js +44 -0
- package/dist/{scim-ClHtpyV3.js → scim-YNieBO1U.js} +3 -537
- package/dist/{scopes-CUPSjo9q.js → scopes-BHsc-wp-.js} +1 -1
- package/dist/server/index.d.ts +11 -11
- package/dist/server/index.js +7 -7
- package/dist/{server-DqCT4CgZ.js → server-Bnga6I50.js} +3 -3
- package/dist/{server-types-BLd4MnBX.d.ts → server-types-C4gZUEZy.d.ts} +9 -9
- package/dist/{shared-DvvFzYXe.js → shared-C8LjUdVU.js} +1 -1
- package/dist/{shared-CD11nBbC.js → shared-fMKOv8hP.js} +46 -39
- package/dist/{sink-Bj_lDUDq.d.ts → sink-Cp_Eot9W.d.ts} +4 -4
- package/dist/{skills-B6lVdD_W.js → skills-Dcjw9_1C.js} +5 -5
- package/dist/{skills-CTYwkl44.js → skills-g_3BS9NC.js} +3 -3
- package/dist/{snapshot-CXUWfsNy.js → snapshot-CbGmYiJx.js} +4 -4
- package/dist/{snapshot-cache-DZHQ0KF6.js → snapshot-cache-DT2Kx1F8.js} +1 -1
- package/dist/{snapshot-cache-DqK9eDmM.d.ts → snapshot-cache-Pahd3IYJ.d.ts} +1 -1
- package/dist/solid/index.d.ts +6 -5
- package/dist/solid/index.js +4 -4
- package/dist/solid-start/index.d.ts +6 -6
- package/dist/solid-start/index.js +3 -3
- package/dist/{sources-vs5dGOsS.js → sources-B-zYB4GS.js} +111 -25
- package/dist/{sources-BV9j0DeZ.d.ts → sources-DEEuGb8S.d.ts} +63 -14
- package/dist/sources-qoIJQrJv.js +11 -0
- package/dist/{sql-B5T1IL83.js → sql-B96movIM.js} +5 -1
- package/dist/sql-CDEPCA0g.d.ts +10 -0
- package/dist/{src-DLfUWFAI.js → src-DLFrtrrC.js} +154 -53
- package/dist/ssf/index.d.ts +4 -4
- package/dist/ssf/index.js +640 -211
- package/dist/{standard-webhooks-6lg8v_is.d.ts → standard-webhooks-B_qRg0ws.d.ts} +2 -2
- package/dist/{store-4u_hxjWa.js → store-DSP9oGvh.js} +15 -7
- package/dist/{store-options-BqEakYRa.js → store-options-B_poyYvg.js} +6 -6
- package/dist/{stores-ClZUgeoP.d.ts → stores-BAZwSYZA.d.ts} +6 -5
- package/dist/{stores-BbsD4fAR.js → stores-BqEuHC05.js} +2 -2
- package/dist/{stream-7-xmnf3U.d.ts → stream-2Vwhl7Er.d.ts} +2 -2
- package/dist/{style-Uao76wO7.js → style-Cqo7-73x.js} +1 -0
- package/dist/{style-DiKWnAvn.js → style-Ds1gNm77.js} +1 -1
- package/dist/supabase/index.d.ts +8 -7
- package/dist/supabase/index.js +5 -5
- package/dist/supabase/middleware.d.ts +6 -6
- package/dist/supabase/middleware.js +6 -6
- package/dist/{supabase-Dxlp8A94.js → supabase--0aJdLEd.js} +9 -7
- package/dist/{supabase-9pqI57pW.js → supabase-Bqp7iIY2.js} +3 -3
- package/dist/supabase-hook-DJxC4PoP.js +1 -0
- package/dist/{supabase-hook-DdDQhMlw.js → supabase-hook-Dg0SrQWR.js} +1069 -123
- package/dist/supautils-MESd81bF.js +689 -0
- package/dist/{support-session-C6xJQYut.js → support-session-Cna49-3f.js} +2 -2
- package/dist/svelte/index.d.ts +5 -5
- package/dist/svelte/index.js +5 -5
- package/dist/svelte/runtime.d.ts +3 -3
- package/dist/svelte/runtime.js +3 -3
- package/dist/svelte/source.d.ts +5 -5
- package/dist/svelte/source.js +2 -2
- package/dist/sveltekit/index.d.ts +6 -6
- package/dist/sveltekit/index.js +2 -2
- package/dist/tanstack-start/index.d.ts +6 -6
- package/dist/tanstack-start/index.js +2 -2
- package/dist/{tenancy-DN2QAx9z.js → tenancy-CmeBQ6Nv.js} +12 -3
- package/dist/terminal/index.d.ts +6 -6
- package/dist/terminal/index.js +3 -3
- package/dist/testing/core.d.ts +2 -0
- package/dist/testing/core.js +1 -0
- package/dist/testing/fixtures/index.d.ts +12 -0
- package/dist/testing/fixtures/index.js +770 -0
- package/dist/testing/index.d.ts +41 -174
- package/dist/testing/index.js +241 -731
- package/dist/testing/saas/index.d.ts +5 -5
- 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/text-diff-DhITNCnD.js +444 -0
- package/dist/{token-BLZcjQgt.js → token-2qYDvXz2.js} +1 -1
- package/dist/{tool-refusal-CMLN5xhn.js → tool-refusal-reAhIzdl.js} +1 -1
- package/dist/trpc/index.d.ts +6 -6
- package/dist/trpc/index.js +3 -3
- package/dist/{types-5Ut_pbKy.d.ts → types-BWZybqs9.d.ts} +112 -8
- package/dist/{types-CZTnPFzM.d.ts → types-BXMYB7BY.d.ts} +2 -2
- package/dist/{types-CdlxsYQh.d.ts → types-BfVmNJO5.d.ts} +14 -3
- package/dist/{types-BqAKcRNW.d.ts → types-CIeZcG8v.d.ts} +2 -2
- package/dist/{types-BNORmDM8.d.ts → types-CKV71kKh.d.ts} +4 -4
- package/dist/{types-tIgIeIKJ.d.ts → types-CQVEQawv.d.ts} +4 -4
- package/dist/{types-BjV-fqcA.d.ts → types-CeIscIKp.d.ts} +4 -4
- package/dist/{types-_sHy8BQf.d.ts → types-CfiKC5aN.d.ts} +1 -1
- package/dist/{types-ClZaWzfb.d.ts → types-D3A19w4A.d.ts} +8 -4
- package/dist/{types-C8-KNsFf.d.ts → types-DBHftjgS.d.ts} +15 -8
- package/dist/{types-CCpc2Dcv.d.ts → types-DC44-hqb.d.ts} +2 -2
- package/dist/{types-fbZ7JEXr.d.ts → types-DXmwu78Z.d.ts} +4 -4
- package/dist/{types-DiQjupG2.d.ts → types-cTos-H7p.d.ts} +2 -2
- package/dist/{types-DX0LaKTb.d.ts → types-g7Oy6Zg4.d.ts} +3 -3
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/{usage-T5mXq98v.js → usage-Bybmck7f.js} +7 -7
- package/dist/{usage-DHtE8j4E.js → usage-CDaLXCfL.js} +2 -2
- package/dist/usage-y-kBNdqs.js +1 -0
- package/dist/{validation-error-Bg5Tpluk.d.ts → validation-error-CQpoquwj.d.ts} +1 -1
- package/dist/{verify-DbCL9bnB.js → verify-pe8rL_Qw.js} +350 -83
- package/dist/{views-DTIIO-oQ.js → views-BB8E9dTP.js} +1 -1
- package/dist/vocabulary-Bg3eeT2H.d.ts +67 -0
- package/dist/vue/index.d.ts +6 -5
- package/dist/vue/index.js +4 -4
- package/dist/{waiter-CKy4MQSY.d.ts → waiter-DwEyouan.d.ts} +2 -2
- package/dist/watch-Bd9mx3rd.js +1 -0
- package/dist/{watch-CszoTJMq.js → watch-C-4VmFlL.js} +3 -3
- package/dist/webmcp/index.d.ts +2 -2
- package/dist/webmcp/index.js +2 -2
- package/dist/{where-scope-Dv-WTP-w.js → where-scope-wq2coopv.js} +41 -21
- package/dist/{who-can-D0QoYbEb.js → who-can-BwNsI_Js.js} +6 -6
- package/dist/workflow/index.d.ts +3 -3
- package/dist/workflow/index.js +5 -5
- package/dist/workflow-sdk/index.d.ts +5 -5
- package/dist/{wrap-Bd1Tejur.d.ts → wrap-B6R0cMRL.d.ts} +2 -2
- package/dist/{wrap-gX61EtpB.js → wrap-CiSc_KCq.js} +8 -2
- package/package.json +22 -11
- package/schemas/cli-result-v1.json +1 -0
- package/schemas/cloud-api-v1.json +152 -7
- package/schemas/connector-v1.json +8 -0
- package/schemas/supabase-claims-v1.json +5 -0
- package/schemas/supabase-manifest-v1.json +276 -75
- package/skills/permdock/SKILL.md +1 -0
- package/skills/permdock-agents/references/runtimes.md +3 -1
- package/skills/permdock-approvals/references/stores-and-resume.md +2 -1
- package/skills/permdock-data/references/queries-and-rls.md +5 -2
- package/skills/permdock-tenancy/SKILL.md +1 -1
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -0
- package/skills/permdock-wire/references/adapters.md +14 -0
- package/skills/permdock-wire/references/policy-options.md +1 -0
- package/dist/catalog-DjhMYYCq.js +0 -1
- package/dist/collect-FlXJlhus.js +0 -1
- package/dist/index-D8EovfsP.d.ts +0 -91
- package/dist/load-BxEtwlBS.js +0 -1
- package/dist/output-files-B3IZJksC.js +0 -1
- package/dist/parse-Cxq0WxrA.js +0 -53
- package/dist/peer-C8swJ2GH.js +0 -50
- package/dist/powersync-CbzkqL_M.js +0 -1
- package/dist/powersync-bYUDLOAO.js +0 -538
- package/dist/prompt-DfZLJLIn.js +0 -32
- package/dist/pull-ByOks_Tg.js +0 -1
- package/dist/run-CNsApDpd.js +0 -1
- package/dist/supabase-hook-CXcGpHqq.js +0 -1
- package/dist/supautils-B6HYL9eL.js +0 -91
- package/dist/text-diff-BQcUapOb.js +0 -15
- package/dist/usage-CHOtwL19.js +0 -1
- package/dist/watch-Cb-NcaUw.js +0 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { et as MembershipSource } from "./policy-types-
|
|
2
|
-
import { n as
|
|
3
|
-
import {
|
|
1
|
+
import { et as MembershipSource } from "./policy-types-B-F-qAZk.js";
|
|
2
|
+
import { b as SupabaseSuspension, n as RoleMap, r as RoleThrough } from "./types-BfVmNJO5.js";
|
|
3
|
+
import { t as SqlQuery } from "./sql-CDEPCA0g.js";
|
|
4
|
+
import { c as SupabaseManifestMembership } from "./manifest-BVhExYhw.js";
|
|
4
5
|
//#region src/supabase/roles.d.ts
|
|
5
6
|
/** A roles table a role column references, by `schema.table`. */
|
|
6
7
|
type RoleKeys = {
|
|
@@ -12,15 +13,26 @@ type RoleKeys = {
|
|
|
12
13
|
/** The referencing table's column. */
|
|
13
14
|
readonly ref: string;
|
|
14
15
|
};
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
/** One role source of a membership row: a key column, or a reference to a roles table. */
|
|
17
|
+
type RoleSource = string | RoleThrough | RoleMap;
|
|
18
|
+
/** A role source, or several the row holds at once. */
|
|
19
|
+
type RoleSpec = RoleSource | readonly RoleSource[];
|
|
17
20
|
/**
|
|
18
|
-
*
|
|
19
|
-
*
|
|
21
|
+
* A roles table whose tenant rows are written by tenants. A role key read
|
|
22
|
+
* through it from a tenant row that is one of `declared` reads as null, so a
|
|
23
|
+
* tenant cannot claim the grants of a declared role by naming a role after it.
|
|
20
24
|
*/
|
|
21
|
-
type
|
|
22
|
-
|
|
23
|
-
|
|
25
|
+
type RoleGuard = {
|
|
26
|
+
/** `schema.table`, or `public`. */
|
|
27
|
+
readonly table: string;
|
|
28
|
+
/** The tenant column of the roles table. */
|
|
29
|
+
readonly tenant: string;
|
|
30
|
+
/** A tenant row with this column true is the application's own copy of a declared role. */
|
|
31
|
+
readonly skip?: string | undefined;
|
|
32
|
+
readonly declared: readonly string[];
|
|
33
|
+
};
|
|
34
|
+
//#endregion
|
|
35
|
+
//#region src/supabase/sources.d.ts
|
|
24
36
|
type Common = {
|
|
25
37
|
readonly table: string;
|
|
26
38
|
/** Runs the lookups; without it the source only describes SQL (for `permdock supabase hook generate`). */
|
|
@@ -41,7 +53,7 @@ type MembershipTableOptions = Common & {
|
|
|
41
53
|
* The role key column, a reference to a roles table that holds the key,
|
|
42
54
|
* or several of them: the row holds every non-null key.
|
|
43
55
|
*/
|
|
44
|
-
readonly role?:
|
|
56
|
+
readonly role?: RoleSpec;
|
|
45
57
|
readonly via?: string;
|
|
46
58
|
readonly expiresAt?: string;
|
|
47
59
|
readonly disabledAt?: string;
|
|
@@ -73,8 +85,8 @@ type MembershipJunctionOptions = Common & {
|
|
|
73
85
|
* roles every row holds (a contact table with no role column), or
|
|
74
86
|
* `{ sources }`: several role columns whose non-null keys the row holds.
|
|
75
87
|
*/
|
|
76
|
-
readonly roles: string | RoleThrough | readonly string[] | {
|
|
77
|
-
readonly sources: readonly
|
|
88
|
+
readonly roles: string | RoleThrough | RoleMap | readonly string[] | {
|
|
89
|
+
readonly sources: readonly RoleSource[];
|
|
78
90
|
};
|
|
79
91
|
/** The membership kind every row has (`contact`, `staff`, `partner`). */
|
|
80
92
|
readonly via?: string;
|
|
@@ -135,6 +147,41 @@ type MembershipSql = {
|
|
|
135
147
|
readonly manifest: SupabaseManifestMembership;
|
|
136
148
|
/** What the ownership triggers count; absent on a source that is not a table. */
|
|
137
149
|
readonly holders?: MembershipHolders;
|
|
150
|
+
/** The rows as plain columns, for Sync Streams and `powerSyncSource`; a source without it does not sync. */
|
|
151
|
+
readonly stream?: MembershipStream;
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* One membership source as columns a Sync Streams query can filter on.
|
|
155
|
+
* Tables are `schema.table`; a `through` table is qualified in the source's
|
|
156
|
+
* schema when it names none.
|
|
157
|
+
*/
|
|
158
|
+
type MembershipStream = {
|
|
159
|
+
readonly table: string;
|
|
160
|
+
/** The user id column, or the reference to the table that holds the user id. */
|
|
161
|
+
readonly user: string | RoleThrough;
|
|
162
|
+
/** The scope column, or the scope every row is a membership of. */
|
|
163
|
+
readonly scope: {
|
|
164
|
+
readonly column: string;
|
|
165
|
+
} | {
|
|
166
|
+
readonly value: string;
|
|
167
|
+
};
|
|
168
|
+
readonly id: string;
|
|
169
|
+
/** The role sources (the row holds every non-null key), or the fixed roles every row holds. */
|
|
170
|
+
readonly roles: RoleSpec | {
|
|
171
|
+
readonly value: readonly string[];
|
|
172
|
+
};
|
|
173
|
+
/** The membership kind column, or the kind every row has. */
|
|
174
|
+
readonly via?: {
|
|
175
|
+
readonly column: string;
|
|
176
|
+
} | {
|
|
177
|
+
readonly value: string;
|
|
178
|
+
};
|
|
179
|
+
readonly expiresAt?: string;
|
|
180
|
+
readonly disabledAt?: string;
|
|
181
|
+
/** A row may hold no role key: such a row is no membership, and a reader drops it. */
|
|
182
|
+
readonly nullableRoles: boolean;
|
|
183
|
+
/** The guard the source reads its roles table with: a tenant row named like a declared role is no role. */
|
|
184
|
+
readonly guard?: RoleGuard;
|
|
138
185
|
};
|
|
139
186
|
/**
|
|
140
187
|
* The rows of a membership table, for the holder-count and transfer-only
|
|
@@ -158,6 +205,8 @@ type MembershipHolders = {
|
|
|
158
205
|
};
|
|
159
206
|
type SqlMembershipSource = MembershipSource & {
|
|
160
207
|
readonly sql: MembershipSql;
|
|
208
|
+
/** The same source with the role keys of tenant rows of `guard.table` named like a declared role read as null. */
|
|
209
|
+
readonly guarded?: (guard: RoleGuard) => SqlMembershipSource;
|
|
161
210
|
};
|
|
162
211
|
/** The part of `@supabase/server`'s `PostgresApi` a `SqlQuery` needs. */
|
|
163
212
|
type SupabasePostgres = {
|
|
@@ -187,4 +236,4 @@ declare function authzVersion(options: {
|
|
|
187
236
|
readonly schema?: string;
|
|
188
237
|
}): NonNullable<MembershipSource["version"]>;
|
|
189
238
|
//#endregion
|
|
190
|
-
export {
|
|
239
|
+
export { MembershipStream as a, SupabasePostgres as c, supabasePostgresQuery as d, tableMembershipSource as f, MembershipSql as i, authzVersion as l, MembershipHolders as n, MembershipTableOptions as o, MembershipJunctionOptions as r, SqlMembershipSource as s, AUTHZ_VERSION_TABLE as t, junctionMembershipSource as u };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//#region src/cli/sql/sources.ts
|
|
2
|
+
/**
|
|
3
|
+
* The membership sources a project reads: `rls.membershipSources`, else
|
|
4
|
+
* `supabase.hook.memberships`. Every generator, doctor check and verifier
|
|
5
|
+
* resolves them here, so they all read the same tables.
|
|
6
|
+
*/
|
|
7
|
+
function membershipSourcesOf(config) {
|
|
8
|
+
return config.rls?.membershipSources ?? config.supabase?.hook?.memberships ?? [];
|
|
9
|
+
}
|
|
10
|
+
//#endregion
|
|
11
|
+
export { membershipSourcesOf as t };
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
//#region src/core/sql.ts
|
|
2
|
+
/** The rows of a `SqlQuery` result, whichever of its two shapes the driver resolved. */
|
|
3
|
+
function sqlRows(result) {
|
|
4
|
+
return Array.isArray(result) ? result : result.rows;
|
|
5
|
+
}
|
|
2
6
|
/** A bare Postgres identifier PermDock emits unquoted-safe: letters, digits and `_`, not starting with a digit. */
|
|
3
7
|
const SQL_IDENT = /^[A-Za-z_][A-Za-z0-9_]*$/u;
|
|
4
8
|
/** A validated, double-quoted identifier; anything outside `SQL_IDENT` throws. */
|
|
@@ -52,4 +56,4 @@ function defaultSqlCommand(action) {
|
|
|
52
56
|
}
|
|
53
57
|
}
|
|
54
58
|
//#endregion
|
|
55
|
-
export { quoteQualifiedTable as a, quoteSqlTable as c, qualifySqlTable as i, sqlIdent as l, defaultSqlCommand as n, quoteSqlIdent as o, escapeSqlIdent as r, quoteSqlLiteral as s, SQL_IDENT as t,
|
|
59
|
+
export { quoteQualifiedTable as a, quoteSqlTable as c, sqlTextArray as d, qualifySqlTable as i, sqlIdent as l, defaultSqlCommand as n, quoteSqlIdent as o, escapeSqlIdent as r, quoteSqlLiteral as s, SQL_IDENT as t, sqlRows as u };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
//#region src/core/sql.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Runs one parameterised statement: `pg`'s `client.query` (which resolves
|
|
4
|
+
* `{ rows }`) and `postgres`'s `sql.unsafe` (which resolves the rows) both fit.
|
|
5
|
+
*/
|
|
6
|
+
type SqlQuery = (text: string, values: readonly unknown[]) => Promise<readonly Record<string, unknown>[] | {
|
|
7
|
+
readonly rows: readonly Record<string, unknown>[];
|
|
8
|
+
}>;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { SqlQuery as t };
|
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
import { n as isReadonlyArray, r as isRecord, t as compact } from "./compact-CAf557ZB.js";
|
|
2
2
|
import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
|
|
3
3
|
import { n as isForbiddenKey, r as ownGet } from "./paths-DXSHAMIa.js";
|
|
4
|
-
import { f as normalizeApproval, g as assertSqlFunctionName, h as assertSqlFunctionArg, m as assertPortableTwin, p as normalizeWhere, u as assertApprovalRelations } from "./role-builder-
|
|
4
|
+
import { f as normalizeApproval, g as assertSqlFunctionName, h as assertSqlFunctionArg, m as assertPortableTwin, p as normalizeWhere, u as assertApprovalRelations } from "./role-builder-C1VJzvcr.js";
|
|
5
5
|
import { n as PermDockDeniedError } from "./errors-BKy0EfhN.js";
|
|
6
6
|
import { o as sameId } from "./expiry-D4_YKRKD.js";
|
|
7
7
|
import { n as internalsOf } from "./internals-Dk8A8fX3.js";
|
|
8
|
-
import { c as listPermissions, i as getRegistry, n as findPermission, o as isPermission } from "./permission-registry-
|
|
8
|
+
import { c as listPermissions, i as getRegistry, n as findPermission, o as isPermission } from "./permission-registry-DpPtSKNZ.js";
|
|
9
9
|
import { n as isThenable$1 } from "./thenable-yD7SabqG.js";
|
|
10
10
|
import { c as isEdgeRelation, m as restrictedStops, o as groupEntries, s as isComputedRelation, u as isPrincipalRelation } from "./resource-relations-D_jw0BFx.js";
|
|
11
11
|
import { a as durationOf, g as secondsOf, m as rfc3339, p as nowSeconds } from "./time-DkWjdL98.js";
|
|
12
|
-
import { d as
|
|
13
|
-
import { u as evaluateCondition } from "./delegation-
|
|
14
|
-
import { _ as listPlans, a as authenticated, m as findRole, o as flattenGrantee } from "./grantee-
|
|
15
|
-
import { m as tenantsOf, r as isMembershipExpired } from "./tenancy-
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import { n as OPERATION_RISKS, r as isOperationRisk } from "./permissions-
|
|
19
|
-
import {
|
|
20
|
-
import { d as rankRoles, f as usesAssigns, i as collectSnapshotGrants, n as snapshotScopes, t as snapshotOf, u as bindingOf } from "./instance-snapshot-
|
|
12
|
+
import { a as normalizeMembership$1, d as scopeIdOf, f as scopeList, h as tenantOf, o as normalizeMemberships$1, s as resolveScope$1, u as scopeChain } from "./scopes-BHsc-wp-.js";
|
|
13
|
+
import { u as evaluateCondition } from "./delegation-C5rOdTp5.js";
|
|
14
|
+
import { _ as listPlans, a as authenticated, m as findRole, o as flattenGrantee } from "./grantee-BrRANrpT.js";
|
|
15
|
+
import { m as tenantsOf, r as isMembershipExpired } from "./tenancy-CmeBQ6Nv.js";
|
|
16
|
+
import { r as grantList, s as levelNames, t as declaredRoleNames } from "./policy-DaJy4nK4.js";
|
|
17
|
+
import { o as isPortableCondition } from "./hosted-XBgU6RGT.js";
|
|
18
|
+
import { n as OPERATION_RISKS, r as isOperationRisk } from "./permissions-CyH2MV_B.js";
|
|
19
|
+
import { C as tenantCustomRoles, f as customRoleId, l as ceilingGrants, m as customRoleScope, p as customRoleOf, x as resolveCustomRole } from "./evaluate-B_oqFbWC.js";
|
|
20
|
+
import { d as rankRoles, f as usesAssigns, i as collectSnapshotGrants, n as snapshotScopes, t as snapshotOf, u as bindingOf } from "./instance-snapshot-CjcwnEiV.js";
|
|
21
21
|
import { n as relationId } from "./relations-BnCWnJGI.js";
|
|
22
|
-
import { r as snapshotGrant, t as buildSnapshot } from "./snapshot-
|
|
23
|
-
import { n as LOCAL_CUSTOM_ROLE } from "./parse-local-manifest-
|
|
24
|
-
import {
|
|
25
|
-
import { i as memoryApprovalStore } from "./store-
|
|
26
|
-
import { n as wrapPermDock } from "./wrap-
|
|
22
|
+
import { r as snapshotGrant, t as buildSnapshot } from "./snapshot-CbGmYiJx.js";
|
|
23
|
+
import { n as LOCAL_CUSTOM_ROLE } from "./parse-local-manifest-T1Q8X3A2.js";
|
|
24
|
+
import { c as APP, r as resolveSubject } from "./permdock-BfWEeMqk.js";
|
|
25
|
+
import { i as memoryApprovalStore } from "./store-DSP9oGvh.js";
|
|
26
|
+
import { n as wrapPermDock } from "./wrap-CiSc_KCq.js";
|
|
27
27
|
//#region src/conditions/sql-function.ts
|
|
28
28
|
function sqlFunction(name, options) {
|
|
29
29
|
assertSqlFunctionName(name);
|
|
@@ -89,7 +89,12 @@ function memorySnapshotSource(initial) {
|
|
|
89
89
|
function memoryCustomRoleSource(customRoles) {
|
|
90
90
|
const byTenant = /* @__PURE__ */ new Map();
|
|
91
91
|
const global = [];
|
|
92
|
+
const shared = [];
|
|
92
93
|
for (const role of customRoles) {
|
|
94
|
+
if (role.shared === true) {
|
|
95
|
+
shared.push(role);
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
93
98
|
if (role.tenant === void 0) {
|
|
94
99
|
global.push(role);
|
|
95
100
|
continue;
|
|
@@ -104,6 +109,9 @@ function memoryCustomRoleSource(customRoles) {
|
|
|
104
109
|
},
|
|
105
110
|
globalRoles() {
|
|
106
111
|
return [...global];
|
|
112
|
+
},
|
|
113
|
+
sharedRoles() {
|
|
114
|
+
return [...shared];
|
|
107
115
|
}
|
|
108
116
|
};
|
|
109
117
|
}
|
|
@@ -1460,8 +1468,8 @@ function ofTenant(tenant, roles) {
|
|
|
1460
1468
|
/**
|
|
1461
1469
|
* A `CustomRoleSource` over a reader that returns every custom role of a tenant.
|
|
1462
1470
|
* It keeps only the roles of the requested tenant. With `read: 'held'` it
|
|
1463
|
-
* skips a tenant's read, and `globalRoles`, when the
|
|
1464
|
-
* declared roles there.
|
|
1471
|
+
* skips a tenant's read, and `globalRoles` and `sharedRoles`, when the
|
|
1472
|
+
* subject holds only declared roles there.
|
|
1465
1473
|
*/
|
|
1466
1474
|
function customRoleSource(reader, options = {}) {
|
|
1467
1475
|
const declared = options.read === "held" ? declaredRoleNames(options.policy) : void 0;
|
|
@@ -1472,7 +1480,8 @@ function customRoleSource(reader, options = {}) {
|
|
|
1472
1480
|
return isThenable$1(roles) ? roles.then((list) => ofTenant(tenant, list)) : ofTenant(tenant, roles);
|
|
1473
1481
|
},
|
|
1474
1482
|
...reader.assignable === void 0 ? {} : { assignable: (tenant) => reader.assignable?.(tenant) ?? [] },
|
|
1475
|
-
...reader.globalRoles === void 0 ? {} : { globalRoles: (context) => declared !== void 0 && context?.held.every((name) => declared.has(name)) === true ? [] : reader.globalRoles?.() ?? [] }
|
|
1483
|
+
...reader.globalRoles === void 0 ? {} : { globalRoles: (context) => declared !== void 0 && context?.held.every((name) => declared.has(name)) === true ? [] : reader.globalRoles?.() ?? [] },
|
|
1484
|
+
...reader.sharedRoles === void 0 ? {} : { sharedRoles: (context) => declared !== void 0 && context?.held.every((name) => declared.has(name)) === true ? [] : reader.sharedRoles?.() ?? [] }
|
|
1476
1485
|
});
|
|
1477
1486
|
}
|
|
1478
1487
|
//#endregion
|
|
@@ -1503,7 +1512,7 @@ function snapshotFor(policy, user, options = {}) {
|
|
|
1503
1512
|
if (isThenable$1(resolved)) throw new TypeError("PermDock: snapshotFor() needs synchronous subject and context mappers. Resolve async data first and pass it as a Subject, or use (await getPermDock(...)).snapshot().");
|
|
1504
1513
|
const subject = withPlans(resolved, options.plans);
|
|
1505
1514
|
const tenants = new Set(tenantsOf(subject.principal, scopeList(policy.scopes)));
|
|
1506
|
-
const customRoles = (options.customRoles ?? []).filter((item) => item.scope === "global" || item.tenant !== void 0 && tenants.has(item.tenant));
|
|
1515
|
+
const customRoles = (options.customRoles ?? []).filter((item) => item.scope === "global" || item.shared === true && tenants.size > 0 || item.tenant !== void 0 && tenants.has(item.tenant));
|
|
1507
1516
|
const names = options.assignable;
|
|
1508
1517
|
const assignable = names === void 0 ? void 0 : new Map([...tenants].map((tenant) => [tenant, Object.hasOwn(names, tenant) ? names[tenant] ?? [] : []]));
|
|
1509
1518
|
return snapshotOf(policy, subject, compact({
|
|
@@ -1590,12 +1599,34 @@ function writable(options) {
|
|
|
1590
1599
|
return finishPreset(WRITABLE_ACTIONS, WRITABLE_COLLECTION, options);
|
|
1591
1600
|
}
|
|
1592
1601
|
//#endregion
|
|
1602
|
+
//#region src/core/scope-helpers.ts
|
|
1603
|
+
/**
|
|
1604
|
+
* The canonical form PermDock evaluates one membership in, or `undefined`
|
|
1605
|
+
* when it is malformed and grants nothing. `scopes` is the policy's or the
|
|
1606
|
+
* catalog's scope list; absent or empty means the implicit `tenant` and
|
|
1607
|
+
* `team` pair.
|
|
1608
|
+
*/
|
|
1609
|
+
function normalizeMembership(input, scopes) {
|
|
1610
|
+
return normalizeMembership$1(input, scopeList(scopes));
|
|
1611
|
+
}
|
|
1612
|
+
/** Every well-formed membership of `input` in canonical form; malformed entries are dropped. */
|
|
1613
|
+
function normalizeMemberships(input, scopes) {
|
|
1614
|
+
return normalizeMemberships$1(input, scopeList(scopes));
|
|
1615
|
+
}
|
|
1616
|
+
/**
|
|
1617
|
+
* The declared scope `name` stands for: the name itself, or the scope the
|
|
1618
|
+
* `tenant` (first) or `team` (second) alias names. `undefined` otherwise.
|
|
1619
|
+
*/
|
|
1620
|
+
function resolveScope(scopes, name) {
|
|
1621
|
+
return resolveScope$1(scopeList(scopes), name);
|
|
1622
|
+
}
|
|
1623
|
+
//#endregion
|
|
1593
1624
|
//#region src/core/ownership.ts
|
|
1594
1625
|
function coversInstance(membership, scopes, scope, id, within) {
|
|
1595
1626
|
if (membership.scope === void 0 || membership.id === void 0) return false;
|
|
1596
1627
|
if (membership.scope === scope) return sameId(membership.id, id);
|
|
1597
1628
|
if (!scopeChain(scopes, scope).slice(1).includes(membership.scope)) return false;
|
|
1598
|
-
const wanted = within === void 0 ? void 0 : Object.entries(within).find(([key]) => resolveScope(scopes, key) === membership.scope)?.[1] ?? void 0;
|
|
1629
|
+
const wanted = within === void 0 ? void 0 : Object.entries(within).find(([key]) => resolveScope$1(scopes, key) === membership.scope)?.[1] ?? void 0;
|
|
1599
1630
|
return wanted !== void 0 && scopeIdOf(membership, membership.scope) === wanted;
|
|
1600
1631
|
}
|
|
1601
1632
|
/** Roles the principal holds at the instance, at an ancestor named in `within`, or globally. */
|
|
@@ -1630,12 +1661,13 @@ function conflictsWith(policy, role) {
|
|
|
1630
1661
|
return out;
|
|
1631
1662
|
}
|
|
1632
1663
|
/** What the change does to the instance's holder count. */
|
|
1633
|
-
function countRules(
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1664
|
+
function countRules(rules, holders, delta, deny) {
|
|
1665
|
+
const role = rules.key;
|
|
1666
|
+
if (delta === 0) return;
|
|
1667
|
+
const min = rules.min ?? 0;
|
|
1668
|
+
if (!(min > 0 || rules.max !== void 0 || rules.transferOnly === true)) return;
|
|
1637
1669
|
if (!(holders !== void 0 && Number.isInteger(holders) && holders >= 0)) {
|
|
1638
|
-
deny(delta < 0 && min > 0 ? "last-holder" : delta > 0 &&
|
|
1670
|
+
deny(delta < 0 && min > 0 ? "last-holder" : delta > 0 && rules.max !== void 0 ? "max-holders" : "transfer-only", {
|
|
1639
1671
|
role,
|
|
1640
1672
|
holders: null
|
|
1641
1673
|
});
|
|
@@ -1647,17 +1679,85 @@ function countRules(binding, role, holders, delta, deny) {
|
|
|
1647
1679
|
min,
|
|
1648
1680
|
holders
|
|
1649
1681
|
});
|
|
1650
|
-
if (delta > 0 &&
|
|
1682
|
+
if (delta > 0 && rules.max !== void 0 && after > rules.max) deny("max-holders", {
|
|
1651
1683
|
role,
|
|
1652
|
-
max:
|
|
1684
|
+
max: rules.max,
|
|
1653
1685
|
holders
|
|
1654
1686
|
});
|
|
1655
|
-
if (
|
|
1687
|
+
if (rules.transferOnly === true && holders > 0 && after > 0) deny("transfer-only", {
|
|
1656
1688
|
role,
|
|
1657
1689
|
holders
|
|
1658
1690
|
});
|
|
1659
1691
|
}
|
|
1660
1692
|
/**
|
|
1693
|
+
* The rules of a role change that need no subject: `assigns`, `for`,
|
|
1694
|
+
* `exclusiveWith`, `min`, `max` and `transferOnly`, from holder counts and
|
|
1695
|
+
* the target's roles alone. `decideRoleChange` runs the same function after
|
|
1696
|
+
* its actor, tenant and ceiling checks; a service that holds only the
|
|
1697
|
+
* catalog calls it with the `CatalogRole` entries.
|
|
1698
|
+
*/
|
|
1699
|
+
function checkRoleChange(role, input) {
|
|
1700
|
+
const name = role.key;
|
|
1701
|
+
const denials = [];
|
|
1702
|
+
const deny = (reason, detail) => {
|
|
1703
|
+
denials.push(compact({
|
|
1704
|
+
role: name,
|
|
1705
|
+
reason,
|
|
1706
|
+
detail
|
|
1707
|
+
}));
|
|
1708
|
+
};
|
|
1709
|
+
const kind = input.change?.kind;
|
|
1710
|
+
const target = input.change?.target;
|
|
1711
|
+
if (kind !== "assign" && kind !== "revoke" && kind !== "transfer" || target === null || typeof target !== "object") {
|
|
1712
|
+
deny("validation");
|
|
1713
|
+
return freezeDeep({
|
|
1714
|
+
ok: false,
|
|
1715
|
+
denials
|
|
1716
|
+
});
|
|
1717
|
+
}
|
|
1718
|
+
const roles = input.roles ?? [];
|
|
1719
|
+
const targetRoles = isReadonlyArray(target.roles) ? target.roles : [];
|
|
1720
|
+
const already = targetRoles.includes(name);
|
|
1721
|
+
let by = null;
|
|
1722
|
+
if (kind !== "transfer" && input.actorRoles !== void 0 && roles.some((rules) => rules.assigns !== void 0)) {
|
|
1723
|
+
const held = input.actorRoles;
|
|
1724
|
+
by = held.find((actorRole) => roles.find((rules) => rules.key === actorRole)?.assigns?.includes(name) === true) ?? null;
|
|
1725
|
+
if (by === null) deny("not-assignable-by", { held });
|
|
1726
|
+
}
|
|
1727
|
+
if (kind !== "revoke" && !already) {
|
|
1728
|
+
const kinds = role.for;
|
|
1729
|
+
if (kinds !== void 0 && (target.via === void 0 || !kinds.includes(target.via))) deny("not-allowed-for-membership", {
|
|
1730
|
+
via: target.via ?? null,
|
|
1731
|
+
for: kinds
|
|
1732
|
+
});
|
|
1733
|
+
const conflicts = new Set(role.exclusiveWith ?? []);
|
|
1734
|
+
for (const rules of roles) if (rules.exclusiveWith?.includes(name) === true) conflicts.add(rules.key);
|
|
1735
|
+
const clash = targetRoles.filter((held) => conflicts.has(held));
|
|
1736
|
+
if (clash.length > 0) deny("conflicting-role", { with: clash });
|
|
1737
|
+
}
|
|
1738
|
+
const delta = kind === "assign" ? already ? 0 : 1 : kind === "revoke" ? targetRoles.length > 0 && !already ? 0 : -1 : already ? -1 : 0;
|
|
1739
|
+
countRules(role, input.holders, delta, deny);
|
|
1740
|
+
return freezeDeep(denials.length === 0 ? {
|
|
1741
|
+
ok: true,
|
|
1742
|
+
by
|
|
1743
|
+
} : {
|
|
1744
|
+
ok: false,
|
|
1745
|
+
denials
|
|
1746
|
+
});
|
|
1747
|
+
}
|
|
1748
|
+
/** A declared binding's rules, by the name `checkRoleChange` reads. */
|
|
1749
|
+
function rulesOf(binding) {
|
|
1750
|
+
return compact({
|
|
1751
|
+
key: binding.name,
|
|
1752
|
+
min: binding.min,
|
|
1753
|
+
max: binding.max,
|
|
1754
|
+
transferOnly: binding.transferOnly,
|
|
1755
|
+
assigns: binding.assigns,
|
|
1756
|
+
for: binding.for,
|
|
1757
|
+
exclusiveWith: binding.exclusiveWith
|
|
1758
|
+
});
|
|
1759
|
+
}
|
|
1760
|
+
/**
|
|
1661
1761
|
* A live membership of the principal on the instance or on an instance under
|
|
1662
1762
|
* it: the one in-band fact that ties a nested instance to a tenant.
|
|
1663
1763
|
*/
|
|
@@ -1736,10 +1836,10 @@ function decideRoleChangeWith(policy, principal, scopes, change, customRoles, au
|
|
|
1736
1836
|
deny("unknown-role");
|
|
1737
1837
|
return done(null);
|
|
1738
1838
|
}
|
|
1739
|
-
const scope = global ? "global" : resolveScope(scopes, change.scope);
|
|
1839
|
+
const scope = global ? "global" : resolveScope$1(scopes, change.scope);
|
|
1740
1840
|
const customAt = named.map((role) => customRoleScope(role, scopes));
|
|
1741
1841
|
const on = declared ? binding?.on ?? findRole(policy.vocabulary?.roles, name)?.on : customAt.includes(scope) ? scope : customAt[0];
|
|
1742
|
-
const heldAt = typeof on === "string" ? resolveScope(scopes, on) : global ? "global" : void 0;
|
|
1842
|
+
const heldAt = typeof on === "string" ? resolveScope$1(scopes, on) : global ? "global" : void 0;
|
|
1743
1843
|
if (scope === void 0 || heldAt === void 0 || heldAt !== scope) {
|
|
1744
1844
|
deny("scope", { expected: heldAt ?? null });
|
|
1745
1845
|
return done(null);
|
|
@@ -1749,7 +1849,7 @@ function decideRoleChangeWith(policy, principal, scopes, change, customRoles, au
|
|
|
1749
1849
|
let custom;
|
|
1750
1850
|
if (!global) {
|
|
1751
1851
|
const root = scopes[0]?.name;
|
|
1752
|
-
const supplied = change.within === void 0 ? void 0 : Object.entries(change.within).find(([key]) => resolveScope(scopes, key) === root)?.[1];
|
|
1852
|
+
const supplied = change.within === void 0 ? void 0 : Object.entries(change.within).find(([key]) => resolveScope$1(scopes, key) === root)?.[1];
|
|
1753
1853
|
if (scope === root) tenant = id;
|
|
1754
1854
|
else {
|
|
1755
1855
|
const anchor = heldAnchor(principal, scopes, scope, id, now);
|
|
@@ -1767,7 +1867,7 @@ function decideRoleChangeWith(policy, principal, scopes, change, customRoles, au
|
|
|
1767
1867
|
return done(null);
|
|
1768
1868
|
}
|
|
1769
1869
|
const found = tenant;
|
|
1770
|
-
custom = named.find((role) =>
|
|
1870
|
+
custom = named.find((role) => customRoleOf(role, found) && customRoleScope(role, scopes) === scope && sameId(customRoleId(role) ?? id, id));
|
|
1771
1871
|
}
|
|
1772
1872
|
if (!declared && custom === void 0) {
|
|
1773
1873
|
deny("unknown-role");
|
|
@@ -1778,9 +1878,8 @@ function decideRoleChangeWith(policy, principal, scopes, change, customRoles, au
|
|
|
1778
1878
|
return done(null);
|
|
1779
1879
|
}
|
|
1780
1880
|
const self = target.id === principal.id;
|
|
1781
|
-
const targetRoles = isReadonlyArray(target.roles) ? target.roles : [];
|
|
1782
|
-
const already = targetRoles.includes(name);
|
|
1783
1881
|
let by = null;
|
|
1882
|
+
let actorRoles;
|
|
1784
1883
|
if (kind === "transfer") {
|
|
1785
1884
|
if (self) deny("self-demotion");
|
|
1786
1885
|
if (global ? (principal.roles ?? []).includes(name) : holdsAt(principal, name, scope, id, now)) by = name;
|
|
@@ -1790,24 +1889,26 @@ function decideRoleChangeWith(policy, principal, scopes, change, customRoles, au
|
|
|
1790
1889
|
const allowed = authority(tenant);
|
|
1791
1890
|
const revocable = kind === "revoke" && custom !== void 0 && allowed.inert?.has(name);
|
|
1792
1891
|
if (!allowed.assignable.has(name) && revocable !== true) deny("not-assignable-by");
|
|
1793
|
-
else if (custom === void 0 && usesAssigns(policy) && !allowed.manage)
|
|
1794
|
-
const held = global ? rankRoles(policy, (principal.roles ?? []).filter((role) => declaredRoleNames(policy).has(role))) : rolesAtInstance(policy, principal, scopes, scope, id, within, now);
|
|
1795
|
-
by = held.find((role) => bindingOf(policy, role)?.assigns?.includes(name) === true) ?? null;
|
|
1796
|
-
if (by === null) deny("not-assignable-by", { held });
|
|
1797
|
-
}
|
|
1892
|
+
else if (custom === void 0 && usesAssigns(policy) && !allowed.manage) actorRoles = global ? rankRoles(policy, (principal.roles ?? []).filter((role) => declaredRoleNames(policy).has(role))) : rolesAtInstance(policy, principal, scopes, scope, id, within, now);
|
|
1798
1893
|
}
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1894
|
+
const conflicts = custom === void 0 ? conflictsWith(policy, name) : new Set(includedRoles(custom).flatMap((include) => Array.from(conflictsWith(policy, include))));
|
|
1895
|
+
const checked = checkRoleChange(compact({
|
|
1896
|
+
...binding === void 0 ? {} : rulesOf(binding),
|
|
1897
|
+
key: name,
|
|
1898
|
+
for: custom === void 0 ? binding?.for : customForKinds(policy, custom),
|
|
1899
|
+
exclusiveWith: [...conflicts],
|
|
1900
|
+
assigns: void 0
|
|
1901
|
+
}), compact({
|
|
1902
|
+
change: {
|
|
1903
|
+
kind,
|
|
1904
|
+
target
|
|
1905
|
+
},
|
|
1906
|
+
holders: change.holders,
|
|
1907
|
+
roles: actorRoles === void 0 ? void 0 : policy.roles.map(rulesOf),
|
|
1908
|
+
actorRoles
|
|
1909
|
+
}));
|
|
1910
|
+
if (checked.ok) by = actorRoles === void 0 ? by : checked.by;
|
|
1911
|
+
else denials.push(...checked.denials);
|
|
1811
1912
|
return done(by);
|
|
1812
1913
|
}
|
|
1813
1914
|
//#endregion
|
|
@@ -1848,4 +1949,4 @@ function toCsvRow(event) {
|
|
|
1848
1949
|
].map(field).join(",");
|
|
1849
1950
|
}
|
|
1850
1951
|
//#endregion
|
|
1851
|
-
export {
|
|
1952
|
+
export { memoryCustomRoleSource as A, stripeEntitlementSource as C, validateApprovalPolicy as D, memoryApprovalPolicySource as E, sqlFunction as F, memoryMembershipSource as M, memorySettingsSource as N, defineOperations as O, memorySnapshotSource as P, memoryLimitStore as S, approvalPoliciesFor as T, arazzoFindings as _, normalizeMembership as a, memoryRelationSource as b, crud as c, snapshotFor as d, customRoleSource as f, localSnapshotManifest as g, defineApp as h, decideRoleChange as i, memoryEntitlementSource as j, isOperationEffect as k, readable as l, shadowMode as m, toCsvRow as n, normalizeMemberships as o, mayAccess as p, checkRoleChange as r, resolveScope as s, CSV_COLUMNS as t, writable as u, simulateArazzo as v, approvalPolicies as w, limits as x, signPolicyDocument as y };
|
package/dist/ssf/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as SsfSubject, C as SsfEventName, D as SsfReceiver, E as SsfPermDockOptions, M as SsfTransmitterConfiguration, N as SsfVerification, O as SsfStreamConfiguration, S as SsfEventListener, T as SsfPermDock, _ as SetSubject, a as PollHandle, b as SsfEventHandler, c as PushSetOptions, d as SetDelivery, f as SetDeliveryFailureCause, g as SetQueue, h as SetPollHandlerOptions, i as CaepReason, j as SsfSubjectResolver, k as SsfStreamStatus, l as ReplayStore, m as SetEvent, n as CaepEventName, o as PollOptions, p as SetError, r as CaepInitiatingEntity, s as PollResult, t as CaepCommon, u as RiscEventName, v as SignSetOptions, w as SsfOnEvent, x as SsfEventInput, y as SsfAuditEvent } from "../types-
|
|
2
|
-
import { t as memoryReplayStore } from "../replay-
|
|
3
|
-
import {
|
|
4
|
-
export { type CaepAssuranceLevelChange, type CaepCommon, type CaepCredentialChange, type CaepDeviceComplianceChange, type CaepEventName, type CaepEvents, type CaepInitiatingEntity, type CaepReason, type CaepTokenClaimsChange, type PollHandle, type PollOptions, type PollResult, type PushSetOptions, type ReplayStore, type RiscAccountDisabled, type RiscCredentialCompromise, type RiscEventName, type RiscEvents, SSF_POLL_DELIVERY, SSF_PUSH_DELIVERY, type SetDelivery, type SetDeliveryFailureCause, type SetError, type SetEvent, type SetPollHandlerOptions, type SetQueue, type SetSubject, type SignSetOptions, type SsfAuditEvent, type SsfEventHandler, type SsfEventInput, type SsfEventListener, type SsfEventName, type SsfOnEvent, type SsfPermDock, type SsfPermDockOptions, type SsfReceiver, type SsfStreamConfiguration, type SsfStreamStatus, type SsfSubject, type SsfSubjectResolver, type SsfTransmitterConfiguration, type SsfVerification, caepEvents, createPermDock, memoryReplayStore, memorySetQueue, pushSet, riscEvents, setPollHandler, signSet, streamVerificationEvent };
|
|
1
|
+
import { A as SsfSubject, C as SsfEventName, D as SsfReceiver, E as SsfPermDockOptions, M as SsfTransmitterConfiguration, N as SsfVerification, O as SsfStreamConfiguration, S as SsfEventListener, T as SsfPermDock, _ as SetSubject, a as PollHandle, b as SsfEventHandler, c as PushSetOptions, d as SetDelivery, f as SetDeliveryFailureCause, g as SetQueue, h as SetPollHandlerOptions, i as CaepReason, j as SsfSubjectResolver, k as SsfStreamStatus, l as ReplayStore, m as SetEvent, n as CaepEventName, o as PollOptions, p as SetError, r as CaepInitiatingEntity, s as PollResult, t as CaepCommon, u as RiscEventName, v as SignSetOptions, w as SsfOnEvent, x as SsfEventInput, y as SsfAuditEvent } from "../types-cTos-H7p.js";
|
|
2
|
+
import { t as memoryReplayStore } from "../replay-DCDD_ZfL.js";
|
|
3
|
+
import { A as createPermDock, C as memorySsfStreamStore, D as PollSetsResult, E as PollSetsOptions, O as PolledSet, S as SsfStreamStore, T as setPollHandler, _ as SsfFanOut, a as CaepTokenClaimsChange, b as ssfTransmitter, c as RiscEvents, d as caepEvents, f as pushSet, g as FanOutSetOptions, h as streamVerificationEvent, i as CaepEvents, k as pollSets, l as SSF_POLL_DELIVERY, m as signSet, n as CaepCredentialChange, o as RiscAccountDisabled, p as riscEvents, r as CaepDeviceComplianceChange, s as RiscCredentialCompromise, t as CaepAssuranceLevelChange, u as SSF_PUSH_DELIVERY, v as SsfTransmitterOptions, w as memorySetQueue, x as SsfStream, y as fanOutSet } from "../index-CMiPH2Tv.js";
|
|
4
|
+
export { type CaepAssuranceLevelChange, type CaepCommon, type CaepCredentialChange, type CaepDeviceComplianceChange, type CaepEventName, type CaepEvents, type CaepInitiatingEntity, type CaepReason, type CaepTokenClaimsChange, type FanOutSetOptions, type PollHandle, type PollOptions, type PollResult, type PollSetsOptions, type PollSetsResult, type PolledSet, type PushSetOptions, type ReplayStore, type RiscAccountDisabled, type RiscCredentialCompromise, type RiscEventName, type RiscEvents, SSF_POLL_DELIVERY, SSF_PUSH_DELIVERY, type SetDelivery, type SetDeliveryFailureCause, type SetError, type SetEvent, type SetPollHandlerOptions, type SetQueue, type SetSubject, type SignSetOptions, type SsfAuditEvent, type SsfEventHandler, type SsfEventInput, type SsfEventListener, type SsfEventName, type SsfFanOut, type SsfOnEvent, type SsfPermDock, type SsfPermDockOptions, type SsfReceiver, type SsfStream, type SsfStreamConfiguration, type SsfStreamStatus, type SsfStreamStore, type SsfSubject, type SsfSubjectResolver, type SsfTransmitterConfiguration, type SsfTransmitterOptions, type SsfVerification, caepEvents, createPermDock, fanOutSet, memoryReplayStore, memorySetQueue, memorySsfStreamStore, pollSets, pushSet, riscEvents, setPollHandler, signSet, ssfTransmitter, streamVerificationEvent };
|