permdock 0.6.0 → 0.8.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 +2 -3
- package/dist/{2020-C9VN-x8c.js → 2020-CJbO8Bvz.js} +1 -3
- package/dist/a2a/index.d.ts +7 -7
- package/dist/a2a/index.js +9 -9
- package/dist/action-result-CL-QCITA.d.ts +19 -0
- package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
- package/dist/{adoption-scan-DCYe60Pi.js → adoption-scan-BLs67P1l.js} +5 -5
- package/dist/agent/index.d.ts +3 -3
- package/dist/agent/index.js +1 -1
- package/dist/ai-sdk/index.d.ts +31 -10
- package/dist/ai-sdk/index.js +22 -12
- package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
- package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
- package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
- package/dist/{approval-prompt-DvSSPQJX.d.ts → approval-prompt-PYagyQUj.d.ts} +13 -11
- package/dist/approvals/index.d.ts +5 -5
- package/dist/approvals/index.js +7 -7
- package/dist/{approvals-p1PGoVjb.js → approvals-DnIBTuXE.js} +128 -78
- package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
- package/dist/{arazzo-41WuzHou.js → arazzo-3RhGfkAK.js} +2 -2
- package/dist/{arazzo-CaUVBn7D.js → arazzo-B5-ulWif.js} +6 -6
- package/dist/{args-IIolxxKA.js → args-0FrVs5EH.js} +125 -8
- package/dist/astro/index.d.ts +30 -12
- package/dist/astro/index.js +2 -2
- package/dist/{audience-DabClFLQ.js → audience-BAkBDMqn.js} +8 -8
- package/dist/{auth-DRLEizbL.js → auth--yPyZNgr.js} +21 -10
- package/dist/authzen/index.d.ts +171 -25
- package/dist/authzen/index.js +321 -149
- package/dist/{automation-BNM3TtDo.d.ts → automation-DqEoWHBc.d.ts} +42 -32
- package/dist/{automation-DVjOckjV.js → automation-x3KEUusw.js} +22 -21
- package/dist/base-url-BQbddZO5.js +9 -0
- package/dist/better-auth/index.d.ts +2 -2
- package/dist/better-auth/index.js +13 -7
- package/dist/better-supabase/index.d.ts +392 -220
- package/dist/better-supabase/index.js +293 -152
- package/dist/{bind-DOyrv6zi.d.ts → bind-Cp2hBHzP.d.ts} +27 -12
- package/dist/{bind-CAvgUuKs.js → bind-D_sZSVA3.js} +22 -10
- package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
- package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
- package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
- package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
- package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
- package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
- package/dist/{build-instance-Bu_eDqYw.js → build-instance-CNWaYJyr.js} +3 -3
- package/dist/{canonical-json-BC8_nMTw.js → canonical-json-DwilZ1iB.js} +6 -3
- package/dist/{capability-N1K9IpqS.js → capability-BqX94r07.js} +31 -25
- package/dist/{capability-Drg-1YhL.d.ts → capability-ChuiONQU.d.ts} +41 -29
- package/dist/{casbin-Dyu2gnUD.js → casbin-H0rKxBx2.js} +16 -8
- package/dist/{casbin-Cr7RLtA3.js → casbin-cbSbhT_k.js} +2 -2
- package/dist/{casl-64gpT-8x.js → casl-C4OINZHI.js} +2 -2
- package/dist/{casl-DjEDhTCP.js → casl-CHHoCldP.js} +19 -10
- package/dist/catalog/index.d.ts +104 -23
- package/dist/catalog/index.js +117 -8
- package/dist/{catalog-HD2gf5mY.js → catalog-BFpz2EmT.js} +57 -26
- package/dist/{catalog-DZVbrF-z.js → catalog-DCspHDc8.js} +3 -3
- package/dist/{catalog-doc-Cdn7-0pQ.js → catalog-doc-DjMKzJp9.js} +53 -16
- package/dist/{catalog-fingerprint-CCP0-yQS.js → catalog-fingerprint-e6aCWosn.js} +19 -15
- package/dist/catalog-mRQQQhNK.js +1 -0
- package/dist/catalog-operations-Dadrl7Z-.js +60 -0
- package/dist/{create-CQWIpUG-.js → challenge-DImNcR7B.js} +157 -39
- package/dist/chat/index.d.ts +1 -1
- package/dist/chat/index.js +13 -10
- package/dist/chat-sdk/index.d.ts +44 -26
- package/dist/chat-sdk/index.js +17 -17
- package/dist/checks-CGkP3Z7A.js +40 -0
- package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
- package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
- package/dist/claude-agent/index.d.ts +6 -6
- package/dist/claude-agent/index.js +6 -3
- package/dist/clerk/index.d.ts +11 -7
- package/dist/clerk/index.js +6 -6
- package/dist/cli/bin.js +4 -4
- package/dist/cli/index.d.ts +82 -7
- package/dist/cli/index.js +6 -6
- package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
- package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
- package/dist/cloud/index.d.ts +186 -38
- package/dist/cloud/index.js +293 -31
- package/dist/{cloud-ytQ3uviA.js → cloud-BFlGMaak.js} +5 -6
- package/dist/{codemod-5mpSpnUY.js → codemod-DLQ9Zpo4.js} +3 -4
- package/dist/{codemod-ua2hHy7w.js → codemod-DWSN2erG.js} +523 -201
- package/dist/collect-B5BL3klN.js +1 -0
- package/dist/{collect-mLTY4nwb.js → collect-B7ZFAJU3.js} +36 -64
- package/dist/{collect-Ci6akVwH.js → collect-Bzv3le0A.js} +6 -6
- package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
- package/dist/compile/index.d.ts +2 -2
- package/dist/compile/index.js +1 -1
- package/dist/{compile-1bsAezL0.d.ts → compile-BFzysW3o.d.ts} +36 -12
- package/dist/{compile-CMqMx_IN.js → compile-EzEMB-7v.js} +77 -33
- package/dist/{completion-BTFrHZhX.js → completion-saoYiRFO.js} +17 -8
- package/dist/config-BwPBfN0t.js +108 -0
- package/dist/{config-Bj2Ixq3d.js → config-DBeXXmBF.js} +2 -2
- package/dist/{config-report-DSpsLpCE.js → config-report-BipSWA6V.js} +9 -6
- package/dist/config-shape-ykV0Vm2n.js +134 -0
- package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
- package/dist/connector-schema-CYLQNMYq.js +434 -0
- package/dist/{context-B_u3_bDJ.js → context-BnIzxTNE.js} +4 -3
- package/dist/convex/index.d.ts +13 -7
- package/dist/convex/index.js +9 -6
- package/dist/core-H-mbhpZc.js +341 -0
- package/dist/core-hWIARPDz.d.ts +206 -0
- package/dist/{create-CBMmFie-.d.ts → create-BSNrVuxh.d.ts} +87 -34
- package/dist/{create-B30OMUOJ.d.ts → create-BVq1lNQE.d.ts} +49 -28
- package/dist/{create-D_NmPOdH.d.ts → create-CM1FciYG.d.ts} +37 -29
- package/dist/{create-CGm28gyI.js → create-Cq4Uox0f.js} +13 -9
- package/dist/{create-DCF2SvoT.js → create-_noSrY1T.js} +15 -21
- package/dist/{credential-BcoiejpY.js → credential-CyyyvCsL.js} +42 -39
- package/dist/{credentials-DPyHmYz5.js → credentials-CdDxp7jN.js} +6 -6
- package/dist/{deciding-columns-Sq12mEA6.js → deciding-columns-NB4wcyBf.js} +13 -2
- package/dist/{delegation-j6-rc37o.js → delegation-CDB6_keF.js} +31 -22
- package/dist/delivery/index.d.ts +5 -5
- package/dist/delivery/index.js +6 -5
- package/dist/{delivery-DCAgNyCn.js → delivery-BupfvJIV.js} +81 -20
- package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
- package/dist/denied-text-CHNlVInN.d.ts +22 -0
- package/dist/{describe-BybMRY7A.js → describe-Bb4hGK5d.js} +6 -5
- package/dist/{describe-B5qgDvEW.d.ts → describe-ByS9LgHK.d.ts} +5 -5
- package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
- package/dist/{diff-CmuSD3vc.js → diff-CN8IYhC_.js} +2 -2
- package/dist/{diff-3jbx6Rm4.js → diff-iZWV65nC.js} +23 -14
- package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
- package/dist/{doctor-BdZw53-k.js → doctor-CHD1M9R5.js} +485 -141
- package/dist/{doctor-3ZqNHX_G.js → doctor-D3wo-yuz.js} +4 -4
- package/dist/drizzle/index.d.ts +33 -19
- package/dist/drizzle/index.js +17 -9
- package/dist/elysia/index.d.ts +17 -11
- package/dist/elysia/index.js +5 -5
- package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
- package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
- package/dist/{errors-CWTY6uih.js → errors-Vpu6rKHl.js} +14 -10
- package/dist/{errors-DH5QEGXh.d.ts → errors-zi_4T-rx.d.ts} +22 -6
- package/dist/{evaluate-CNClBvcj.js → evaluate-Dd8Ta0Ie.js} +185 -80
- package/dist/{evaluations-beAooV0n.js → evaluations-IBceAeKT.js} +41 -20
- package/dist/{evaluations-C_1vdSZc.d.ts → evaluations-z8dQFDaN.d.ts} +12 -6
- package/dist/eve/index.d.ts +9 -6
- package/dist/eve/index.js +4 -4
- package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
- package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
- package/dist/express/index.d.ts +9 -6
- package/dist/express/index.js +9 -6
- package/dist/fastify/index.d.ts +16 -10
- package/dist/fastify/index.js +8 -5
- package/dist/{fetch-adapter-Dw0MTS3D.d.ts → fetch-adapter-C1DCvpqV.d.ts} +9 -6
- package/dist/{fetch-adapter-DD_gfmrC.js → fetch-adapter-JL43jD3E.js} +14 -11
- package/dist/fields-D0vUI6dq.js +498 -0
- package/dist/{files-C5ZI27eV.js → files-B3AA05f1.js} +21 -5
- package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
- package/dist/{fixtures-B7XrLeY7.js → fixtures-A1_sp_tR.js} +15 -6
- package/dist/{flags-C3DktBDY.js → flags-DXjoTVbS.js} +2 -2
- package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
- package/dist/{from-snapshot-CTCMsFZk.js → from-snapshot-DCakWRsr.js} +26 -16
- package/dist/gen-B5kvbAoZ.js +58 -0
- package/dist/gen-DWCYcMQM.js +827 -0
- package/dist/generate-CRVV5V7l.js +165 -0
- package/dist/generate-CezbCaTI.js +275 -0
- package/dist/{grantee-hxrUsbpM.js → grantee-Dke-9rd1.js} +4 -4
- package/dist/{grantee-conditions-CcXf8hMM.js → grantee-conditions-BrYPe-w0.js} +12 -12
- package/dist/{grantee-match-DbENBHLB.js → grantee-match-7RZZvoT_.js} +12 -6
- package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
- package/dist/h3/index.d.ts +10 -7
- package/dist/h3/index.js +3 -3
- package/dist/headers-B9jQxjtW.d.ts +10 -0
- package/dist/{helpers-CBYVMjwh.js → helpers-DJicaG6f.js} +40 -28
- package/dist/hono/index.d.ts +16 -10
- package/dist/hono/index.js +5 -5
- package/dist/{hosted-BPk51-kX.d.ts → hosted-Cmtxogd0.d.ts} +44 -20
- package/dist/{hosted-B46-5LYE.js → hosted-D0IzESu_.js} +68 -25
- package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
- package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
- package/dist/{http-DXJ37RDA.js → http-DOL33cO0.js} +11 -8
- package/dist/{import-wyqXUyjm.js → import-CST57XLp.js} +64 -51
- package/dist/{import-CNV7I2Dw.js → import-_YqhhwvX.js} +6 -6
- package/dist/{index-B8YjkEZ4.d.ts → index-B8s204GL.d.ts} +64 -52
- package/dist/{index-Ch8LpNDp.d.ts → index-BT5-1VsX.d.ts} +64 -25
- package/dist/{index-DuWxc5dt.d.ts → index-BW_0MZOS.d.ts} +388 -149
- package/dist/index-BhxEUY9J.d.ts +233 -0
- package/dist/index-Bv5iXPqU.d.ts +210 -0
- package/dist/{index-C-6Letxg.d.ts → index-_9UiQIkt.d.ts} +164 -77
- package/dist/index.d.ts +22 -21
- package/dist/index.js +35 -33
- package/dist/{init-GG6Jh8HD.js → init-Dz_PsHdv.js} +5 -5
- package/dist/{init-DeMYsnYJ.js → init-cE3A8aXq.js} +10 -10
- package/dist/{instance-options-BsVpyGIk.d.ts → instance-options-B0KXqTrJ.d.ts} +4 -4
- package/dist/{instance-snapshot-BOEhcqIF.js → instance-snapshot--JWiTrvO.js} +81 -56
- package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
- package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
- package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
- package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
- package/dist/jwt/index.d.ts +125 -17
- package/dist/jwt/index.js +157 -16
- package/dist/{kernel-D0NVb1cK.js → kernel-C-fYydV2.js} +151 -16
- package/dist/kysely/index.d.ts +49 -33
- package/dist/kysely/index.js +9 -7
- package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
- package/dist/{load-DFS_ry0W.js → load-DjSU5KXO.js} +6 -6
- package/dist/load-Dm0pSYH3.js +1 -0
- package/dist/{login-Dfe5RlYk.js → login-D-8tMqzo.js} +4 -4
- package/dist/{login-imhuwvn3.js → login-DplQ0s84.js} +18 -15
- package/dist/{manifest-dvL2XEe1.js → manifest-Cgiq5oqc.js} +67 -37
- package/dist/{manifest-mx5ghSFM.d.ts → manifest-CzzWtnAb.d.ts} +144 -28
- package/dist/{manifest-schema-C0kK_8V0.js → manifest-schema-2r37XRhD.js} +80 -9
- package/dist/{manifest-C8IzW3Do.js → manifest-wg8WkkpD.js} +11 -7
- package/dist/{map-claims-D3oRmTk0.js → map-claims-BNWCJtmP.js} +27 -18
- package/dist/{map-error-Dr70oA_3.js → map-error-pasIGqMT.js} +7 -7
- package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
- package/dist/mcp/index.d.ts +154 -47
- package/dist/mcp/index.js +200 -41
- package/dist/{migrate-CIq4-E9F.js → migrate-B7oP_sQU.js} +102 -31
- package/dist/module-values-BJTBdo6y.js +107 -0
- package/dist/nest/index.d.ts +23 -13
- package/dist/nest/index.js +18 -11
- package/dist/next/client.d.ts +5 -2
- package/dist/next/client.js +1 -1
- package/dist/next/index.d.ts +72 -26
- package/dist/next/index.js +110 -6
- package/dist/next/plugin.d.ts +1 -1
- package/dist/next/plugin.js +4 -3
- package/dist/node/index.d.ts +5 -5
- package/dist/node/index.js +3 -3
- package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
- package/dist/openai/index.d.ts +13 -7
- package/dist/openai/index.js +3 -3
- package/dist/openapi/index.d.ts +61 -30
- package/dist/openapi/index.js +2 -2
- package/dist/{openapi-B7HZ0f-r.js → openapi-BOsx0xn9.js} +34 -24
- package/dist/{openapi-C4dDTVEd.js → openapi-CBZUhA3l.js} +4 -5
- package/dist/{openapi-DD1SV-5-.js → openapi-VeHHU2l9.js} +23 -14
- package/dist/{operation-findings-DgATDpvh.js → operation-findings-CXtFzlKJ.js} +3 -3
- package/dist/{operations-X0VM7F3m.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
- package/dist/orpc/index.d.ts +68 -14
- package/dist/orpc/index.js +62 -13
- package/dist/otel/index.d.ts +7 -4
- package/dist/otel/index.js +8 -5
- package/dist/output-files-BHOIlrfD.js +1 -0
- package/dist/{output-files-DhRBBE4n.js → output-files-BIQ_9pIs.js} +29 -17
- package/dist/{output-1im__-08.js → output-tkju6U7R.js} +15 -7
- package/dist/ownership-B4L59T9u.js +1054 -0
- package/dist/parse-1_ZheTW5.js +151 -0
- package/dist/parse-local-manifest-BQhTlLQS.d.ts +10 -0
- package/dist/parse-local-manifest-DEiCF4ah.js +69 -0
- package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
- package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
- package/dist/pdp/index.d.ts +9 -6
- package/dist/pdp/index.js +23 -12
- package/dist/{peer-CRvC7Hg1.js → peer-C9LvBCcb.js} +1 -1
- package/dist/peer-Q0fuZ6hx.js +982 -0
- package/dist/{permdock-SV8ZINYT.d.ts → permdock-B6Sf4T_S.d.ts} +270 -117
- package/dist/{permdock-BrAscV28.js → permdock-L-_I_3zP.js} +226 -74
- package/dist/{permission-registry-Br4jSNVi.js → permission-registry-B8tYxPIt.js} +24 -11
- package/dist/{vocabulary-CN8H_9UF.d.ts → permission-types-CAY-GU7e.d.ts} +130 -104
- package/dist/{permissions-u_KHg-sN.d.ts → permissions-Bx6UI8n1.d.ts} +6 -2
- package/dist/{permissions-B-wCP5ZC.js → permissions-CVXmRILq.js} +3 -3
- package/dist/{permissions-BPxlwVhN.js → permissions-mDcTWoBs.js} +8 -5
- package/dist/pg-DQTqRrou.js +60 -0
- package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
- package/dist/pkce-CnmmYqUZ.js +21 -0
- package/dist/{policy-77FSAq_V.d.ts → policy-Ba4bDhaj.d.ts} +5 -5
- package/dist/{policy-DbM5YYtV.js → policy-CLQ8__GF.js} +49 -20
- package/dist/{policy-from-catalog-C2gMa2Dj.js → policy-from-catalog-CJgOm6aq.js} +28 -25
- package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
- package/dist/{policy-types-n0uRTsW8.d.ts → policy-types-CCiDRZBH.d.ts} +802 -334
- package/dist/postgres-store-DcyrPS-r.js +1028 -0
- package/dist/{postgrest-DAjUkF9w.js → postgrest-D4nuPXIQ.js} +88 -36
- package/dist/{postgrest-CEgRbefE.d.ts → postgrest-DicQyqm-.d.ts} +60 -30
- package/dist/powersync-DHNQX06W.js +1117 -0
- package/dist/{powersync-DISt6SUe.js → powersync-DXqGuq9A.js} +3 -3
- package/dist/powersync-Djf-zCpB.js +1 -0
- package/dist/preset/index.d.ts +38 -28
- package/dist/preset/index.js +1 -1
- package/dist/{preset-DZdU0tne.js → preset-BjLzeFpp.js} +58 -34
- package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
- package/dist/prisma/index.d.ts +69 -41
- package/dist/prisma/index.js +21 -17
- package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
- package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
- package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
- package/dist/prompt-BYc6drYW.js +938 -0
- package/dist/protected-action-BE7N_Luo.d.ts +58 -0
- package/dist/protected-action-DUYqb-Ma.js +80 -0
- package/dist/{protected-BlF0F6wL.js → protected-action-QEA8arRB.js} +48 -14
- package/dist/{provider-B1al-AZz.js → provider-C55OGXJ7.js} +5 -4
- package/dist/{provider-DILL9oPK.d.ts → provider-DXfq5c2d.d.ts} +1 -1
- package/dist/{provider-store-DM6DNcta.js → provider-store-CaTv00tr.js} +13 -9
- package/dist/pull-B65ndFNZ.js +1 -0
- package/dist/{pull-jEwbf80J.js → pull-CwpGaQSi.js} +12 -11
- package/dist/{push-BD4f15co.js → push-DgssgzkK.js} +62 -16
- package/dist/{pushed-policy-DCW91KQU.d.ts → pushed-policy-D1Eoi6NM.d.ts} +12 -6
- package/dist/{pushed-policy-CqtxkV4G.js → pushed-policy-ITwYKvvH.js} +10 -7
- package/dist/react/index.d.ts +9 -8
- package/dist/react/index.js +7 -6
- package/dist/react/provider-client.d.ts +1 -1
- package/dist/react/provider-client.js +1 -1
- package/dist/react-native/index.d.ts +104 -51
- package/dist/react-native/index.js +394 -67
- package/dist/{refs-K6eWUJ0H.js → refs-C8BKxc_e.js} +17 -3
- package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
- package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
- package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
- package/dist/{replay-Bkm-Ne4l.d.ts → replay-DNftIb_R.d.ts} +1 -1
- package/dist/{request-context-C81Pip9n.js → request-context-C25ilqiJ.js} +8 -8
- package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
- package/dist/resend/index.d.ts +34 -28
- package/dist/resend/index.js +29 -29
- package/dist/resolve-names-CF7xXLSG.js +201 -0
- package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
- package/dist/{retire-CALjIQ7e.js → retire-B2xffQgY.js} +15 -6
- package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
- package/dist/{rls-DTvYd-lI.js → rls-CNEH2_BG.js} +743 -624
- package/dist/{rls-BAqP4q66.js → rls-Ca8Jz9b5.js} +41 -10
- package/dist/{role-builder-uWQZ4v84.js → role-builder-BK2-T6oD.js} +41 -20
- package/dist/rolldown-runtime-C3I60J0A.js +4 -0
- package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
- package/dist/{rpc-VSl5ylaQ.js → rpc-fNqAIqQk.js} +8 -5
- package/dist/{run-CUKuz0A8.js → run-Bz26OTfO.js} +26 -23
- package/dist/run-D-JE8QWb.js +1 -0
- package/dist/{run-ticket-DocwaTKn.d.ts → run-ticket-DbWI9f99.d.ts} +33 -13
- package/dist/{run-ticket-sxFI6LAk.js → run-ticket-Dv7aF7Dk.js} +29 -8
- package/dist/{runtime-D3VTAiCA.js → runtime-BGnrOkVH.js} +5 -2
- package/dist/{saas-BCXRuXca.js → saas-iWnUdwCt.js} +42 -29
- package/dist/{scan-qvOe0hS3.js → scan-DCj1KQfn.js} +1 -1
- package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
- package/dist/{schema-yLuBWWsh.js → schema-Dst9I9Gs.js} +9 -5
- package/dist/scim/index.d.ts +3 -2
- package/dist/scim/index.js +3 -1
- package/dist/scim-D8YupzX1.js +44 -0
- package/dist/{scim-ClHtpyV3.js → scim-jJBJ7g1Z.js} +35 -551
- package/dist/{scopes-CUPSjo9q.js → scopes-0Up_UA2t.js} +42 -24
- package/dist/server/index.d.ts +12 -12
- package/dist/server/index.js +13 -13
- package/dist/{server-C3WXAHZj.js → server-3cVlTLde.js} +31 -31
- package/dist/{server-types-CKQiCnON.d.ts → server-types-CIlpSA2G.d.ts} +81 -46
- package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
- package/dist/{shared-BAK8t4Uo.js → shared-Afctg7B0.js} +100 -61
- package/dist/{shared-DvvFzYXe.js → shared-l0oGGetg.js} +9 -6
- package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
- package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
- package/dist/{sink-4-eQIRWf.d.ts → sink-Dvi7YZG_.d.ts} +44 -20
- package/dist/{skills-B6lVdD_W.js → skills-Bjj7BNEQ.js} +16 -12
- package/dist/{skills-CTYwkl44.js → skills-OuoMR49L.js} +3 -3
- package/dist/{snapshot-B7DkYg6g.js → snapshot-CXlzi69u.js} +21 -18
- package/dist/{snapshot-cache-PXI-vGpY.d.ts → snapshot-cache-BAXZ0KOp.d.ts} +21 -12
- package/dist/{snapshot-cache-DZHQ0KF6.js → snapshot-cache-Bx_4xC_6.js} +14 -11
- package/dist/solid/index.d.ts +55 -15
- package/dist/solid/index.js +46 -12
- package/dist/solid-start/index.d.ts +30 -12
- package/dist/solid-start/index.js +3 -3
- package/dist/sources-B1Os_YUu.d.ts +312 -0
- package/dist/{sources-vs5dGOsS.js → sources-CMAM-2A3.js} +156 -51
- package/dist/sources-qoIJQrJv.js +11 -0
- package/dist/{sql-B5T1IL83.js → sql-0WjxIp9g.js} +32 -7
- package/dist/sql-B80DFdpG.d.ts +10 -0
- package/dist/{src-Cu2m75uo.js → src-DZ0l9UAg.js} +305 -123
- package/dist/ssf/index.d.ts +4 -4
- package/dist/ssf/index.js +665 -224
- package/dist/{standard-webhooks-rbD7LS6h.d.ts → standard-webhooks-C-qX4mJW.d.ts} +7 -7
- package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
- package/dist/{store-BDutJkDL.js → store-RNFvaJJv.js} +43 -29
- package/dist/{store-options-u0ycEe8s.js → store-options-Dil3lraY.js} +105 -15
- package/dist/stores-C0Kta5Ft.d.ts +59 -0
- package/dist/{stores-CGhM8BN_.js → stores-DxZWDXCs.js} +42 -5
- package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
- package/dist/{stream-CeCMJmBB.d.ts → stream-ltuLdtTG.d.ts} +4 -3
- package/dist/{style-DiKWnAvn.js → style-DblOtSga.js} +1 -1
- package/dist/{style-Uao76wO7.js → style-Ds11Hmk4.js} +3 -1
- package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
- package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
- package/dist/supabase/index.d.ts +48 -37
- package/dist/supabase/index.js +6 -6
- package/dist/supabase/middleware.d.ts +19 -13
- package/dist/supabase/middleware.js +7 -7
- package/dist/{supabase-x5JtR2tc.js → supabase-BL1qJzzY.js} +82 -36
- package/dist/{supabase-By_frk3U.js → supabase-D39cuGPt.js} +3 -3
- package/dist/{supabase-hook-BMoEhZir.js → supabase-hook-B-yXnzUl.js} +1206 -286
- package/dist/supabase-hook-H-MtE9Wd.js +1 -0
- package/dist/supautils-BU-pAEpf.js +808 -0
- package/dist/{support-session-C6xJQYut.js → support-session-BsmPCbz8.js} +22 -22
- package/dist/svelte/PermissionBoundary.svelte +2 -6
- package/dist/svelte/Protected.svelte +2 -8
- package/dist/svelte/index.d.ts +9 -8
- package/dist/svelte/index.js +10 -9
- package/dist/svelte/runtime.d.ts +4 -4
- package/dist/svelte/runtime.js +4 -4
- package/dist/svelte/source.d.ts +9 -8
- package/dist/svelte/source.js +6 -5
- package/dist/sveltekit/index.d.ts +30 -12
- package/dist/sveltekit/index.js +2 -2
- package/dist/{ownership-DqaJNJPn.js → tables-DeMNEy6V.js} +1025 -1085
- package/dist/tanstack-start/index.d.ts +22 -10
- package/dist/tanstack-start/index.js +2 -2
- package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
- package/dist/{tenancy-DN2QAx9z.js → tenancy-5d1zVBvK.js} +36 -21
- package/dist/terminal/index.d.ts +23 -14
- package/dist/terminal/index.js +17 -20
- package/dist/testing/core.d.ts +2 -0
- package/dist/testing/core.js +1 -0
- package/dist/testing/fixtures/index.d.ts +15 -0
- package/dist/testing/fixtures/index.js +831 -0
- package/dist/testing/index.d.ts +235 -285
- package/dist/testing/index.js +502 -927
- package/dist/testing/saas/index.d.ts +43 -27
- 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-BtfSmdUo.js +444 -0
- package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
- package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
- package/dist/{token-BLZcjQgt.js → token-DC9EQiet.js} +15 -13
- package/dist/{tool-refusal-CMLN5xhn.js → tool-refusal-Qpjs_W6M.js} +5 -2
- package/dist/trpc/index.d.ts +11 -8
- package/dist/trpc/index.js +15 -9
- package/dist/type-helpers-BIPIDa6a.d.ts +50 -0
- package/dist/{types-8RnwUAvE.d.ts → types-AMJ5qoU_.d.ts} +49 -30
- package/dist/{types-C_IiEs64.d.ts → types-B2mlGuhW.d.ts} +14 -11
- package/dist/{types-_WhUP7ud.d.ts → types-B4uqKDnp.d.ts} +25 -12
- package/dist/{types-CX7AvRqP.d.ts → types-BJk0BKRX.d.ts} +24 -14
- package/dist/types-B_d_g7T3.d.ts +262 -0
- package/dist/{types-BdtSDbBO.d.ts → types-B_tiYvk8.d.ts} +59 -32
- package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
- package/dist/{types-Dfv0aTER.d.ts → types-DC1Loeh3.d.ts} +449 -168
- package/dist/{types-lUlG3TVd.d.ts → types-DHKPcqzr.d.ts} +2 -2
- package/dist/{types-C791HFu9.d.ts → types-DjuMBNF9.d.ts} +68 -32
- package/dist/{types-C863OQiR.d.ts → types-HzqOtvsJ.d.ts} +23 -12
- package/dist/{types-Druu9wLM.d.ts → types-ZzRGoViD.d.ts} +77 -24
- package/dist/{types-BzzaHxt3.d.ts → types-ah9NlU6j.d.ts} +137 -48
- package/dist/{types-CVZSNocA.d.ts → types-djVzLlIV.d.ts} +31 -14
- package/dist/{types-BtHtcKMr.d.ts → types-yUuPR5Hy.d.ts} +47 -24
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/usage-CYeXek0p.js +1 -0
- package/dist/{usage-SveTRTyr.js → usage-CxEzS4ey.js} +50 -26
- package/dist/{usage-CRVl9V3t.js → usage-ab0PdusX.js} +2 -2
- package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
- package/dist/{validation-error-DHUrAkku.d.ts → validation-error-YGg2mXyH.d.ts} +5 -2
- package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
- package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
- package/dist/{verify-BaAKx7t6.js → verify-DZeqoWu5.js} +417 -489
- package/dist/version-DMQ0dnN5.js +48 -0
- package/dist/version-DizhmD72.js +1 -0
- package/dist/{views-DTIIO-oQ.js → views-CD8wuL4Z.js} +19 -6
- package/dist/vocabulary-DEJ5j4mR.d.ts +70 -0
- package/dist/vue/index.d.ts +71 -21
- package/dist/vue/index.js +50 -13
- package/dist/{waiter-B986w1oK.d.ts → waiter-Bu9zAlE0.d.ts} +13 -10
- package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
- package/dist/{watch-vea54PRw.js → watch-Cx_WciLE.js} +8 -8
- package/dist/watch-DB42U1ib.js +1 -0
- package/dist/webmcp/index.d.ts +11 -11
- package/dist/webmcp/index.js +8 -5
- package/dist/{where-scope-C9vfEphl.js → where-scope-DlCdCM_8.js} +56 -30
- package/dist/{who-can-DWBAcaCQ.js → who-can-rI7dCR9Q.js} +23 -20
- package/dist/workflow/index.d.ts +3 -3
- package/dist/workflow/index.js +13 -13
- package/dist/workflow-sdk/index.d.ts +19 -13
- package/dist/workflow-sdk/index.js +6 -6
- package/dist/{wrap-gX61EtpB.js → wrap-B2wziJI_.js} +11 -5
- package/dist/{wrap-C5jC6sKI.d.ts → wrap-DlJE3gS_.d.ts} +8 -5
- package/package.json +25 -14
- package/schemas/catalog-v1.json +3 -0
- 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 +308 -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-credentials/references/tokens-keys-links.md +8 -6
- package/skills/permdock-data/references/queries-and-rls.md +6 -2
- package/skills/permdock-tenancy/SKILL.md +1 -1
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -1
- package/skills/permdock-wire/references/adapters.md +28 -22
- package/skills/permdock-wire/references/policy-options.md +1 -0
- package/dist/catalog-BoWglDPI.js +0 -1
- package/dist/collect-D7eQDffE.js +0 -1
- package/dist/config-bs_kZeYq.js +0 -162
- package/dist/denied-text-CiFQNuMV.d.ts +0 -19
- package/dist/fields-OYG_JR78.js +0 -203
- package/dist/generate-CNU1pIOo.js +0 -171
- package/dist/headers-BIjfMaoC.js +0 -8
- package/dist/headers-CIbDTUTK.d.ts +0 -7
- package/dist/index-Cp_ilKi1.d.ts +0 -91
- package/dist/index-CueFnxQc.d.ts +0 -110
- package/dist/load-BxEtwlBS.js +0 -1
- package/dist/output-files-B3IZJksC.js +0 -1
- package/dist/package-root-Dk_ETdkp.js +0 -31
- package/dist/parse-Cxq0WxrA.js +0 -53
- package/dist/parse-local-manifest-5ODwqu8b.d.ts +0 -10
- package/dist/parse-local-manifest-CVSs6J9I.js +0 -34
- package/dist/peer-C8swJ2GH.js +0 -50
- package/dist/policies-DP2nqRoF.js +0 -295
- package/dist/powersync-BkWWCS1K.js +0 -538
- package/dist/powersync-MMJ2mI2q.js +0 -1
- package/dist/problem-details-B45V5d2b.d.ts +0 -7
- package/dist/prompt-DfZLJLIn.js +0 -32
- package/dist/protected-RFGpakN9.d.ts +0 -38
- package/dist/pull-CvpINcMK.js +0 -1
- package/dist/run-DDwUaJDU.js +0 -1
- package/dist/sources-Xc4zkszI.d.ts +0 -190
- package/dist/stores-BUGNbJTt.d.ts +0 -30
- package/dist/supabase-hook-CCw5m35C.js +0 -1
- package/dist/supautils-B6HYL9eL.js +0 -91
- package/dist/text-diff-BQcUapOb.js +0 -15
- package/dist/types-B3_ooZgZ.d.ts +0 -172
- package/dist/usage-CZpSQP6L.js +0 -1
- package/dist/version-CEbQ5UeM.js +0 -18
- package/dist/version-DXkYUISx.js +0 -1
- package/dist/watch--ovlPOc0.js +0 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { n as isReadonlyArray, r as isRecord, t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
2
|
+
import { i as readAppData } from "./app-data-UNNm07jV.js";
|
|
3
|
+
import { d as isoNow } from "./time-nR1JesoH.js";
|
|
4
|
+
import { t as canonicalJson } from "./canonical-json-DwilZ1iB.js";
|
|
5
|
+
import { n as sha256, r as sha256Digest } from "./sha256-C-4WXKIu.js";
|
|
6
|
+
import { d as membershipEvent, f as memoryDecisionSink } from "./sink-D9_vh372.js";
|
|
7
|
+
import { n as readBodyText, t as MAX_BODY_BYTES } from "./body-text-DQhcmqdY.js";
|
|
8
|
+
import { t as readClaim } from "./claims-map-CKkoAAYF.js";
|
|
9
|
+
import { _ as SCIM_CONTENT_TYPE, b as isDirectoryUniquenessError, c as parseScimFilter, f as ERROR_SCHEMA, g as ROLES_EXTENSION, l as APP_DATA_EXTENSION, m as LIST_SCHEMA, o as filterSupported, p as GROUP_SCHEMA, v as USER_SCHEMA, y as isDirectoryNotFoundError } from "./postgres-store-DcyrPS-r.js";
|
|
10
10
|
//#region src/scim/auth.ts
|
|
11
11
|
function hexToBytes(hex) {
|
|
12
12
|
if (hex.length % 2 !== 0) return;
|
|
@@ -85,43 +85,6 @@ function sha256Hex(value) {
|
|
|
85
85
|
return hex;
|
|
86
86
|
}
|
|
87
87
|
//#endregion
|
|
88
|
-
//#region src/scim/types.ts
|
|
89
|
-
const SCIM_CONTENT_TYPE = "application/scim+json";
|
|
90
|
-
const USER_SCHEMA = "urn:ietf:params:scim:schemas:core:2.0:User";
|
|
91
|
-
const GROUP_SCHEMA = "urn:ietf:params:scim:schemas:core:2.0:Group";
|
|
92
|
-
const LIST_SCHEMA = "urn:ietf:params:scim:api:messages:2.0:ListResponse";
|
|
93
|
-
const ERROR_SCHEMA = "urn:ietf:params:scim:api:messages:2.0:Error";
|
|
94
|
-
const PATCH_SCHEMA = "urn:ietf:params:scim:api:messages:2.0:PatchOp";
|
|
95
|
-
/** The RFC 7643 section 3.3 Group extension that carries PermDock roles. */
|
|
96
|
-
const ROLES_EXTENSION = "urn:ietf:params:scim:schemas:extension:permdock:2.0:Group";
|
|
97
|
-
/** The extension that carries the application's own data (`x`) on a User or a Group. */
|
|
98
|
-
const APP_DATA_EXTENSION = "urn:ietf:params:scim:schemas:extension:permdock:2.0:AppData";
|
|
99
|
-
var DirectoryUniquenessError = class extends Error {
|
|
100
|
-
name = "DirectoryUniquenessError";
|
|
101
|
-
code = "uniqueness";
|
|
102
|
-
constructor(message = "uniqueness") {
|
|
103
|
-
super(message);
|
|
104
|
-
}
|
|
105
|
-
};
|
|
106
|
-
var DirectoryNotFoundError = class extends Error {
|
|
107
|
-
name = "DirectoryNotFoundError";
|
|
108
|
-
code = "not-found";
|
|
109
|
-
constructor(message = "not found") {
|
|
110
|
-
super(message);
|
|
111
|
-
}
|
|
112
|
-
};
|
|
113
|
-
function isNamedError(error, name, code) {
|
|
114
|
-
return error instanceof Error && error.name === name && Reflect.get(error, "code") === code;
|
|
115
|
-
}
|
|
116
|
-
/** Matches by `name` and `code`, so an error from another copy of the module still maps. */
|
|
117
|
-
function isDirectoryUniquenessError(error) {
|
|
118
|
-
return isNamedError(error, "DirectoryUniquenessError", "uniqueness");
|
|
119
|
-
}
|
|
120
|
-
/** Matches by `name` and `code`, so an error from another copy of the module still maps. */
|
|
121
|
-
function isDirectoryNotFoundError(error) {
|
|
122
|
-
return isNamedError(error, "DirectoryNotFoundError", "not-found");
|
|
123
|
-
}
|
|
124
|
-
//#endregion
|
|
125
88
|
//#region src/scim/discovery.ts
|
|
126
89
|
const SCHEMA_SCHEMA = "urn:ietf:params:scim:schemas:core:2.0:Schema";
|
|
127
90
|
function serviceProviderConfig() {
|
|
@@ -240,240 +203,11 @@ function schemas() {
|
|
|
240
203
|
];
|
|
241
204
|
}
|
|
242
205
|
//#endregion
|
|
243
|
-
//#region src/scim/filter.ts
|
|
244
|
-
const COMPARE = /* @__PURE__ */ new Set([
|
|
245
|
-
"eq",
|
|
246
|
-
"ne",
|
|
247
|
-
"co",
|
|
248
|
-
"sw"
|
|
249
|
-
]);
|
|
250
|
-
function skipSpace(input, index) {
|
|
251
|
-
let cursor = index;
|
|
252
|
-
while (cursor < input.length && input[cursor] === " ") cursor += 1;
|
|
253
|
-
return cursor;
|
|
254
|
-
}
|
|
255
|
-
function readIdent(input, index) {
|
|
256
|
-
const start = skipSpace(input, index);
|
|
257
|
-
if (!/[A-Za-z]/u.test(input[start] ?? "")) return;
|
|
258
|
-
let cursor = start;
|
|
259
|
-
while (cursor < input.length && /[A-Za-z0-9._]/u.test(input[cursor] ?? "")) cursor += 1;
|
|
260
|
-
return {
|
|
261
|
-
value: input.slice(start, cursor),
|
|
262
|
-
next: cursor
|
|
263
|
-
};
|
|
264
|
-
}
|
|
265
|
-
function readString(input, index) {
|
|
266
|
-
const start = skipSpace(input, index);
|
|
267
|
-
if (input[start] !== "\"") return;
|
|
268
|
-
let cursor = start + 1;
|
|
269
|
-
let value = "";
|
|
270
|
-
while (cursor < input.length) {
|
|
271
|
-
const char = input[cursor];
|
|
272
|
-
if (char === "\\") {
|
|
273
|
-
value += input[cursor + 1] ?? "";
|
|
274
|
-
cursor += 2;
|
|
275
|
-
continue;
|
|
276
|
-
}
|
|
277
|
-
if (char === "\"") return {
|
|
278
|
-
value,
|
|
279
|
-
next: cursor + 1
|
|
280
|
-
};
|
|
281
|
-
value += char;
|
|
282
|
-
cursor += 1;
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
function readLiteral(input, index) {
|
|
286
|
-
const quoted = readString(input, index);
|
|
287
|
-
if (quoted !== void 0) return quoted;
|
|
288
|
-
const ident = readIdent(input, index);
|
|
289
|
-
if (ident === void 0) return;
|
|
290
|
-
if (ident.value.toLowerCase() === "true") return {
|
|
291
|
-
value: true,
|
|
292
|
-
next: ident.next
|
|
293
|
-
};
|
|
294
|
-
if (ident.value.toLowerCase() === "false") return {
|
|
295
|
-
value: false,
|
|
296
|
-
next: ident.next
|
|
297
|
-
};
|
|
298
|
-
return {
|
|
299
|
-
value: ident.value,
|
|
300
|
-
next: ident.next
|
|
301
|
-
};
|
|
302
|
-
}
|
|
303
|
-
function parsePrimary(input, index) {
|
|
304
|
-
const start = skipSpace(input, index);
|
|
305
|
-
if (input[start] === "(") {
|
|
306
|
-
const inner = parseOr(input, start + 1);
|
|
307
|
-
if (inner === void 0) return;
|
|
308
|
-
const close = skipSpace(input, inner.next);
|
|
309
|
-
if (input[close] !== ")") return;
|
|
310
|
-
return {
|
|
311
|
-
filter: inner.filter,
|
|
312
|
-
next: close + 1
|
|
313
|
-
};
|
|
314
|
-
}
|
|
315
|
-
const attribute = readIdent(input, start);
|
|
316
|
-
if (attribute === void 0) return;
|
|
317
|
-
const opToken = readIdent(input, attribute.next);
|
|
318
|
-
if (opToken === void 0) return;
|
|
319
|
-
const op = opToken.value.toLowerCase();
|
|
320
|
-
if (op === "pr") return {
|
|
321
|
-
filter: {
|
|
322
|
-
op: "pr",
|
|
323
|
-
attribute: attribute.value
|
|
324
|
-
},
|
|
325
|
-
next: opToken.next
|
|
326
|
-
};
|
|
327
|
-
if (!COMPARE.has(op)) return;
|
|
328
|
-
const value = readLiteral(input, opToken.next);
|
|
329
|
-
if (value === void 0) return;
|
|
330
|
-
return {
|
|
331
|
-
filter: {
|
|
332
|
-
op,
|
|
333
|
-
attribute: attribute.value,
|
|
334
|
-
value: value.value
|
|
335
|
-
},
|
|
336
|
-
next: value.next
|
|
337
|
-
};
|
|
338
|
-
}
|
|
339
|
-
function parseAnd(input, index) {
|
|
340
|
-
const first = parsePrimary(input, index);
|
|
341
|
-
if (first === void 0) return;
|
|
342
|
-
const filters = [first.filter];
|
|
343
|
-
let cursor = first.next;
|
|
344
|
-
for (;;) {
|
|
345
|
-
const nextOp = readIdent(input, cursor);
|
|
346
|
-
if (nextOp?.value.toLowerCase() !== "and") break;
|
|
347
|
-
const next = parsePrimary(input, nextOp.next);
|
|
348
|
-
if (next === void 0) return;
|
|
349
|
-
filters.push(next.filter);
|
|
350
|
-
cursor = next.next;
|
|
351
|
-
}
|
|
352
|
-
if (filters.length === 1) return {
|
|
353
|
-
filter: first.filter,
|
|
354
|
-
next: cursor
|
|
355
|
-
};
|
|
356
|
-
return {
|
|
357
|
-
filter: {
|
|
358
|
-
op: "and",
|
|
359
|
-
filters
|
|
360
|
-
},
|
|
361
|
-
next: cursor
|
|
362
|
-
};
|
|
363
|
-
}
|
|
364
|
-
function parseOr(input, index) {
|
|
365
|
-
const first = parseAnd(input, index);
|
|
366
|
-
if (first === void 0) return;
|
|
367
|
-
const filters = [first.filter];
|
|
368
|
-
let cursor = first.next;
|
|
369
|
-
for (;;) {
|
|
370
|
-
const nextOp = readIdent(input, cursor);
|
|
371
|
-
if (nextOp?.value.toLowerCase() !== "or") break;
|
|
372
|
-
const next = parseAnd(input, nextOp.next);
|
|
373
|
-
if (next === void 0) return;
|
|
374
|
-
filters.push(next.filter);
|
|
375
|
-
cursor = next.next;
|
|
376
|
-
}
|
|
377
|
-
if (filters.length === 1) return {
|
|
378
|
-
filter: first.filter,
|
|
379
|
-
next: cursor
|
|
380
|
-
};
|
|
381
|
-
return {
|
|
382
|
-
filter: {
|
|
383
|
-
op: "or",
|
|
384
|
-
filters
|
|
385
|
-
},
|
|
386
|
-
next: cursor
|
|
387
|
-
};
|
|
388
|
-
}
|
|
389
|
-
function parseScimFilter(input) {
|
|
390
|
-
const trimmed = input.trim();
|
|
391
|
-
if (trimmed === "") return;
|
|
392
|
-
const parsed = parseOr(trimmed, 0);
|
|
393
|
-
if (parsed === void 0) return;
|
|
394
|
-
if (skipSpace(trimmed, parsed.next) !== trimmed.length) return;
|
|
395
|
-
return parsed.filter;
|
|
396
|
-
}
|
|
397
|
-
function readAttribute(target, attribute) {
|
|
398
|
-
if (attribute === "members.value") {
|
|
399
|
-
const members = target["members"];
|
|
400
|
-
if (!Array.isArray(members)) return;
|
|
401
|
-
return members.map((member) => {
|
|
402
|
-
if (member !== null && typeof member === "object" && "value" in member) return member.value;
|
|
403
|
-
});
|
|
404
|
-
}
|
|
405
|
-
const parts = attribute.split(".");
|
|
406
|
-
let current = target;
|
|
407
|
-
for (const part of parts) {
|
|
408
|
-
if (current === null || typeof current !== "object") return;
|
|
409
|
-
current = current[part];
|
|
410
|
-
}
|
|
411
|
-
return current;
|
|
412
|
-
}
|
|
413
|
-
function asString(value) {
|
|
414
|
-
if (typeof value === "boolean") return value ? "true" : "false";
|
|
415
|
-
return String(value);
|
|
416
|
-
}
|
|
417
|
-
function matchCompare(actual, op, expected) {
|
|
418
|
-
if (Array.isArray(actual)) return actual.some((item) => matchCompare(item, op, expected));
|
|
419
|
-
if (actual === void 0 || actual === null) return op === "ne";
|
|
420
|
-
if (typeof expected === "boolean" || typeof actual === "boolean") {
|
|
421
|
-
const left = asString(actual).toLowerCase();
|
|
422
|
-
const right = asString(expected).toLowerCase();
|
|
423
|
-
return op === "eq" ? left === right : op === "ne" ? left !== right : false;
|
|
424
|
-
}
|
|
425
|
-
const left = asString(actual);
|
|
426
|
-
const right = asString(expected);
|
|
427
|
-
switch (op) {
|
|
428
|
-
case "eq": return left === right;
|
|
429
|
-
case "ne": return left !== right;
|
|
430
|
-
case "co": return left.includes(right);
|
|
431
|
-
case "sw": return left.startsWith(right);
|
|
432
|
-
default: return op;
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
/** RFC 7644 §3.4.2.2: `pr` needs a non-empty value; a multi-valued one needs an item. */
|
|
436
|
-
function present(value) {
|
|
437
|
-
if (Array.isArray(value)) return value.some(present);
|
|
438
|
-
return value !== void 0 && value !== null && value !== "";
|
|
439
|
-
}
|
|
440
|
-
function matchFilter(target, filter) {
|
|
441
|
-
if (filter === void 0) return true;
|
|
442
|
-
const record = target;
|
|
443
|
-
switch (filter.op) {
|
|
444
|
-
case "and": return filter.filters.every((item) => matchFilter(target, item));
|
|
445
|
-
case "or": return filter.filters.some((item) => matchFilter(target, item));
|
|
446
|
-
case "pr": return present(readAttribute(record, filter.attribute));
|
|
447
|
-
case "eq":
|
|
448
|
-
case "ne":
|
|
449
|
-
case "co":
|
|
450
|
-
case "sw": return matchCompare(readAttribute(record, filter.attribute), filter.op, filter.value);
|
|
451
|
-
default: return filter;
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
const SUPPORTED_FILTER_ATTRIBUTES = /* @__PURE__ */ new Set([
|
|
455
|
-
"id",
|
|
456
|
-
"userName",
|
|
457
|
-
"externalId",
|
|
458
|
-
"active",
|
|
459
|
-
"displayName",
|
|
460
|
-
"members.value"
|
|
461
|
-
]);
|
|
462
|
-
function filterSupported(filter) {
|
|
463
|
-
switch (filter.op) {
|
|
464
|
-
case "and":
|
|
465
|
-
case "or": return filter.filters.every(filterSupported);
|
|
466
|
-
case "pr":
|
|
467
|
-
case "eq":
|
|
468
|
-
case "ne":
|
|
469
|
-
case "co":
|
|
470
|
-
case "sw": return SUPPORTED_FILTER_ATTRIBUTES.has(filter.attribute);
|
|
471
|
-
default: return filter;
|
|
472
|
-
}
|
|
473
|
-
}
|
|
474
|
-
//#endregion
|
|
475
206
|
//#region src/scim/body.ts
|
|
476
|
-
/**
|
|
207
|
+
/**
|
|
208
|
+
* The parsed body; `undefined` for an empty or unreadable one. Invalid JSON
|
|
209
|
+
* throws a `SyntaxError`.
|
|
210
|
+
*/
|
|
477
211
|
async function readJson(request) {
|
|
478
212
|
const read = await readBodyText(request);
|
|
479
213
|
if (!read.ok) return read.cause === "too-large" ? { tooLarge: true } : {
|
|
@@ -499,7 +233,10 @@ function readRoles(body) {
|
|
|
499
233
|
if (!isRecord(extension) || !Array.isArray(extension["roles"])) return;
|
|
500
234
|
return extension["roles"].filter((item) => typeof item === "string");
|
|
501
235
|
}
|
|
502
|
-
/**
|
|
236
|
+
/**
|
|
237
|
+
* `x` from the `AppData` extension; a value that is not a plain JSON object is
|
|
238
|
+
* dropped.
|
|
239
|
+
*/
|
|
503
240
|
function readX(body) {
|
|
504
241
|
const extension = body[APP_DATA_EXTENSION];
|
|
505
242
|
return isRecord(extension) && extension["x"] !== void 0 ? readAppData(void 0, extension["x"]) : void 0;
|
|
@@ -782,7 +519,10 @@ function scimResponse(status, body, extra) {
|
|
|
782
519
|
}
|
|
783
520
|
});
|
|
784
521
|
}
|
|
785
|
-
/**
|
|
522
|
+
/**
|
|
523
|
+
* RFC 7644 section 3.12: `scimType` is defined for `400` and `409` only, so
|
|
524
|
+
* other statuses omit it.
|
|
525
|
+
*/
|
|
786
526
|
function scimError(status, scimType, detail, extra) {
|
|
787
527
|
return scimResponse(status, compact({
|
|
788
528
|
schemas: [ERROR_SCHEMA],
|
|
@@ -798,8 +538,8 @@ function forbidden() {
|
|
|
798
538
|
return scimError(403, "", "the credential may not provision this tenant", { "www-authenticate": "Bearer error=\"insufficient_scope\"" });
|
|
799
539
|
}
|
|
800
540
|
/**
|
|
801
|
-
* RFC 7644 section 3.14 `meta.version`: a weak entity tag over the
|
|
802
|
-
*
|
|
541
|
+
* RFC 7644 section 3.14 `meta.version`: a weak entity tag over the resource as
|
|
542
|
+
* rendered, `meta.location` excluded so every URL agrees.
|
|
803
543
|
*/
|
|
804
544
|
function withVersion(resource, meta) {
|
|
805
545
|
const { location: _location, ...stable } = meta;
|
|
@@ -823,14 +563,20 @@ function versionOf(rendered) {
|
|
|
823
563
|
function entityTags(field) {
|
|
824
564
|
return field.split(",").map((tag) => tag.trim().replace(/^W\//u, "")).filter((tag) => tag !== "");
|
|
825
565
|
}
|
|
826
|
-
/**
|
|
566
|
+
/**
|
|
567
|
+
* RFC 9110 section 13.1.1 `If-Match` against a weak `meta.version`: `true` when
|
|
568
|
+
* the request may proceed.
|
|
569
|
+
*/
|
|
827
570
|
function ifMatchHolds(request, version) {
|
|
828
571
|
const field = request.headers.get("if-match");
|
|
829
572
|
if (field === null) return true;
|
|
830
573
|
const tags = entityTags(field);
|
|
831
574
|
return tags.includes("*") || tags.includes(version.replace(/^W\//u, ""));
|
|
832
575
|
}
|
|
833
|
-
/**
|
|
576
|
+
/**
|
|
577
|
+
* RFC 9110 section 13.1.2 `If-None-Match`: `true` when the client holds
|
|
578
|
+
* `version`.
|
|
579
|
+
*/
|
|
834
580
|
function ifNoneMatchHolds(request, version) {
|
|
835
581
|
const field = request.headers.get("if-none-match");
|
|
836
582
|
if (field === null) return false;
|
|
@@ -989,7 +735,10 @@ function resourceResponse(status, rendered, location) {
|
|
|
989
735
|
function renderedOf(request, resource) {
|
|
990
736
|
return "userName" in resource ? renderUser(resource, locationOf(request, "Users", resource.id)) : renderGroup(resource, locationOf(request, "Groups", resource.id));
|
|
991
737
|
}
|
|
992
|
-
/**
|
|
738
|
+
/**
|
|
739
|
+
* `false` when `If-Match` names a version other than `current`'s; a missing
|
|
740
|
+
* resource passes to the store.
|
|
741
|
+
*/
|
|
993
742
|
function matches(request, current) {
|
|
994
743
|
return current === null || ifMatchHolds(request, versionOf(renderedOf(request, current)));
|
|
995
744
|
}
|
|
@@ -1303,269 +1052,4 @@ function directoryMembershipSource(store, options = {}) {
|
|
|
1303
1052
|
} };
|
|
1304
1053
|
}
|
|
1305
1054
|
//#endregion
|
|
1306
|
-
|
|
1307
|
-
const DEFAULT_COUNT = 100;
|
|
1308
|
-
function now() {
|
|
1309
|
-
return isoNow();
|
|
1310
|
-
}
|
|
1311
|
-
function createdAt(at, ...candidates) {
|
|
1312
|
-
return candidates.find((value) => value !== void 0 && value !== "") ?? at;
|
|
1313
|
-
}
|
|
1314
|
-
function randomId(prefix) {
|
|
1315
|
-
const bytes = /* @__PURE__ */ new Uint8Array(8);
|
|
1316
|
-
crypto.getRandomValues(bytes);
|
|
1317
|
-
let hex = "";
|
|
1318
|
-
for (const byte of bytes) hex += byte.toString(16).padStart(2, "0");
|
|
1319
|
-
return `${prefix}${hex}`;
|
|
1320
|
-
}
|
|
1321
|
-
function directoryKey(tenant, id) {
|
|
1322
|
-
return `${tenant}\0${id}`;
|
|
1323
|
-
}
|
|
1324
|
-
function asError(error) {
|
|
1325
|
-
return error instanceof Error ? error : new Error(String(error));
|
|
1326
|
-
}
|
|
1327
|
-
function pageOf(items, page) {
|
|
1328
|
-
const count = page.count ?? DEFAULT_COUNT;
|
|
1329
|
-
let start = 0;
|
|
1330
|
-
if (page.cursor !== void 0 && page.cursor !== "") {
|
|
1331
|
-
const decoded = Math.trunc(Number(page.cursor));
|
|
1332
|
-
start = Number.isFinite(decoded) && decoded > 0 ? decoded : 0;
|
|
1333
|
-
} else if (page.startIndex !== void 0 && page.startIndex > 0) start = page.startIndex - 1;
|
|
1334
|
-
const slice = items.slice(start, start + count);
|
|
1335
|
-
const nextIndex = start + slice.length;
|
|
1336
|
-
return compact({
|
|
1337
|
-
Resources: slice,
|
|
1338
|
-
totalResults: items.length,
|
|
1339
|
-
startIndex: start + 1,
|
|
1340
|
-
itemsPerPage: slice.length,
|
|
1341
|
-
nextCursor: nextIndex < items.length ? String(nextIndex) : void 0
|
|
1342
|
-
});
|
|
1343
|
-
}
|
|
1344
|
-
function emailsOf(value) {
|
|
1345
|
-
if (!Array.isArray(value)) return;
|
|
1346
|
-
return value.flatMap((item) => {
|
|
1347
|
-
if (item === null || typeof item !== "object") return [];
|
|
1348
|
-
const record = item;
|
|
1349
|
-
if (typeof record.value !== "string") return [];
|
|
1350
|
-
return [compact({
|
|
1351
|
-
value: record.value,
|
|
1352
|
-
primary: typeof record.primary === "boolean" ? record.primary : void 0,
|
|
1353
|
-
type: typeof record.type === "string" ? record.type : void 0
|
|
1354
|
-
})];
|
|
1355
|
-
});
|
|
1356
|
-
}
|
|
1357
|
-
function membersOf(value) {
|
|
1358
|
-
if (!Array.isArray(value)) return [];
|
|
1359
|
-
return value.flatMap((item) => {
|
|
1360
|
-
if (item === null || typeof item !== "object") return [];
|
|
1361
|
-
const record = item;
|
|
1362
|
-
return typeof record.value === "string" ? [{ value: record.value }] : [];
|
|
1363
|
-
});
|
|
1364
|
-
}
|
|
1365
|
-
function rolesOf(value) {
|
|
1366
|
-
if (!Array.isArray(value)) return;
|
|
1367
|
-
return value.filter((item) => typeof item === "string");
|
|
1368
|
-
}
|
|
1369
|
-
function memberValues(value) {
|
|
1370
|
-
return membersOf(value).map((member) => member.value);
|
|
1371
|
-
}
|
|
1372
|
-
function applyUserOp(user, op) {
|
|
1373
|
-
const path = op.path ?? "";
|
|
1374
|
-
if (path === "active" && typeof op.value === "boolean") return {
|
|
1375
|
-
...user,
|
|
1376
|
-
active: op.value
|
|
1377
|
-
};
|
|
1378
|
-
if (path === "userName" && typeof op.value === "string") return {
|
|
1379
|
-
...user,
|
|
1380
|
-
userName: op.value
|
|
1381
|
-
};
|
|
1382
|
-
if (path === "externalId") return compact({
|
|
1383
|
-
...user,
|
|
1384
|
-
externalId: typeof op.value === "string" ? op.value : void 0
|
|
1385
|
-
});
|
|
1386
|
-
if (path === "emails") return compact({
|
|
1387
|
-
...user,
|
|
1388
|
-
emails: emailsOf(op.value)
|
|
1389
|
-
});
|
|
1390
|
-
return user;
|
|
1391
|
-
}
|
|
1392
|
-
function applyGroupOp(group, op) {
|
|
1393
|
-
const path = op.path ?? "";
|
|
1394
|
-
if (path === "displayName" && typeof op.value === "string") return {
|
|
1395
|
-
...group,
|
|
1396
|
-
displayName: op.value
|
|
1397
|
-
};
|
|
1398
|
-
if (path === "externalId") return compact({
|
|
1399
|
-
...group,
|
|
1400
|
-
externalId: typeof op.value === "string" ? op.value : void 0
|
|
1401
|
-
});
|
|
1402
|
-
if (path === "roles") return compact({
|
|
1403
|
-
...group,
|
|
1404
|
-
roles: rolesOf(op.value)
|
|
1405
|
-
});
|
|
1406
|
-
if (path !== "members") return group;
|
|
1407
|
-
const incoming = memberValues(op.value);
|
|
1408
|
-
const current = group.members.map((member) => member.value);
|
|
1409
|
-
if (op.op === "replace") return {
|
|
1410
|
-
...group,
|
|
1411
|
-
members: incoming.map((value) => ({ value }))
|
|
1412
|
-
};
|
|
1413
|
-
if (op.op === "add") {
|
|
1414
|
-
const next = [...current];
|
|
1415
|
-
for (const value of incoming) if (!next.includes(value)) next.push(value);
|
|
1416
|
-
return {
|
|
1417
|
-
...group,
|
|
1418
|
-
members: next.map((value) => ({ value }))
|
|
1419
|
-
};
|
|
1420
|
-
}
|
|
1421
|
-
return {
|
|
1422
|
-
...group,
|
|
1423
|
-
members: current.filter((value) => !incoming.includes(value)).map((value) => ({ value }))
|
|
1424
|
-
};
|
|
1425
|
-
}
|
|
1426
|
-
function stampUser(user, created) {
|
|
1427
|
-
const at = now();
|
|
1428
|
-
return freezeDeep({
|
|
1429
|
-
...user,
|
|
1430
|
-
meta: compact({
|
|
1431
|
-
created: createdAt(at, created, user.meta.created),
|
|
1432
|
-
lastModified: at,
|
|
1433
|
-
resourceType: "User",
|
|
1434
|
-
location: user.meta.location
|
|
1435
|
-
})
|
|
1436
|
-
});
|
|
1437
|
-
}
|
|
1438
|
-
function stampGroup(group, created) {
|
|
1439
|
-
const at = now();
|
|
1440
|
-
return freezeDeep({
|
|
1441
|
-
...group,
|
|
1442
|
-
meta: compact({
|
|
1443
|
-
created: createdAt(at, created, group.meta.created),
|
|
1444
|
-
lastModified: at,
|
|
1445
|
-
resourceType: "Group",
|
|
1446
|
-
location: group.meta.location
|
|
1447
|
-
})
|
|
1448
|
-
});
|
|
1449
|
-
}
|
|
1450
|
-
function memoryDirectoryStore() {
|
|
1451
|
-
const users = /* @__PURE__ */ new Map();
|
|
1452
|
-
const groups = /* @__PURE__ */ new Map();
|
|
1453
|
-
function usersIn(tenant) {
|
|
1454
|
-
const found = [];
|
|
1455
|
-
for (const [key, user] of users) if (key.startsWith(`${tenant}\0`)) found.push(user);
|
|
1456
|
-
return found;
|
|
1457
|
-
}
|
|
1458
|
-
function groupsIn(tenant) {
|
|
1459
|
-
const found = [];
|
|
1460
|
-
for (const [key, group] of groups) if (key.startsWith(`${tenant}\0`)) found.push(group);
|
|
1461
|
-
return found;
|
|
1462
|
-
}
|
|
1463
|
-
function assertUserUnique(tenant, user, ignoreId) {
|
|
1464
|
-
for (const existing of usersIn(tenant)) {
|
|
1465
|
-
if (existing.id === ignoreId) continue;
|
|
1466
|
-
if (existing.userName === user.userName) throw new DirectoryUniquenessError("userName");
|
|
1467
|
-
if (user.externalId !== void 0 && existing.externalId === user.externalId) throw new DirectoryUniquenessError("externalId");
|
|
1468
|
-
}
|
|
1469
|
-
}
|
|
1470
|
-
function assertGroupUnique(tenant, group, ignoreId) {
|
|
1471
|
-
for (const existing of groupsIn(tenant)) {
|
|
1472
|
-
if (existing.id === ignoreId) continue;
|
|
1473
|
-
if (group.externalId !== void 0 && existing.externalId === group.externalId) throw new DirectoryUniquenessError("externalId");
|
|
1474
|
-
}
|
|
1475
|
-
}
|
|
1476
|
-
return {
|
|
1477
|
-
getUser(tenant, id) {
|
|
1478
|
-
return Promise.resolve(users.get(directoryKey(tenant, id)) ?? null);
|
|
1479
|
-
},
|
|
1480
|
-
findUsers(tenant, filter, page) {
|
|
1481
|
-
const matched = usersIn(tenant).filter((user) => matchFilter(user, filter));
|
|
1482
|
-
return Promise.resolve(pageOf(matched, page));
|
|
1483
|
-
},
|
|
1484
|
-
putUser(tenant, user) {
|
|
1485
|
-
try {
|
|
1486
|
-
const id = user.id === "" ? randomId("u_") : user.id;
|
|
1487
|
-
const existing = users.get(directoryKey(tenant, id));
|
|
1488
|
-
const next = stampUser({
|
|
1489
|
-
...user,
|
|
1490
|
-
id
|
|
1491
|
-
}, existing?.meta.created);
|
|
1492
|
-
assertUserUnique(tenant, next, id);
|
|
1493
|
-
users.set(directoryKey(tenant, id), next);
|
|
1494
|
-
return Promise.resolve(next);
|
|
1495
|
-
} catch (error) {
|
|
1496
|
-
return Promise.reject(asError(error));
|
|
1497
|
-
}
|
|
1498
|
-
},
|
|
1499
|
-
patchUser(tenant, id, ops) {
|
|
1500
|
-
try {
|
|
1501
|
-
const existing = users.get(directoryKey(tenant, id));
|
|
1502
|
-
if (existing === void 0) throw new DirectoryNotFoundError();
|
|
1503
|
-
let next = existing;
|
|
1504
|
-
for (const op of ops) next = applyUserOp(next, op);
|
|
1505
|
-
next = stampUser(next, existing.meta.created);
|
|
1506
|
-
assertUserUnique(tenant, next, id);
|
|
1507
|
-
users.set(directoryKey(tenant, id), next);
|
|
1508
|
-
return Promise.resolve(next);
|
|
1509
|
-
} catch (error) {
|
|
1510
|
-
return Promise.reject(asError(error));
|
|
1511
|
-
}
|
|
1512
|
-
},
|
|
1513
|
-
deleteUser(tenant, id) {
|
|
1514
|
-
if (!users.delete(directoryKey(tenant, id))) return Promise.reject(new DirectoryNotFoundError());
|
|
1515
|
-
for (const group of groupsIn(tenant)) {
|
|
1516
|
-
if (!group.members.some((member) => member.value === id)) continue;
|
|
1517
|
-
groups.set(directoryKey(tenant, group.id), stampGroup({
|
|
1518
|
-
...group,
|
|
1519
|
-
members: group.members.filter((member) => member.value !== id)
|
|
1520
|
-
}, group.meta.created));
|
|
1521
|
-
}
|
|
1522
|
-
return Promise.resolve();
|
|
1523
|
-
},
|
|
1524
|
-
getGroup(tenant, id) {
|
|
1525
|
-
return Promise.resolve(groups.get(directoryKey(tenant, id)) ?? null);
|
|
1526
|
-
},
|
|
1527
|
-
findGroups(tenant, filter, page) {
|
|
1528
|
-
const matched = groupsIn(tenant).filter((group) => matchFilter(group, filter));
|
|
1529
|
-
return Promise.resolve(pageOf(matched, page));
|
|
1530
|
-
},
|
|
1531
|
-
putGroup(tenant, group) {
|
|
1532
|
-
try {
|
|
1533
|
-
const id = group.id === "" ? randomId("g_") : group.id;
|
|
1534
|
-
const existing = groups.get(directoryKey(tenant, id));
|
|
1535
|
-
const next = stampGroup({
|
|
1536
|
-
...group,
|
|
1537
|
-
id,
|
|
1538
|
-
members: group.members
|
|
1539
|
-
}, existing?.meta.created);
|
|
1540
|
-
assertGroupUnique(tenant, next, id);
|
|
1541
|
-
groups.set(directoryKey(tenant, id), next);
|
|
1542
|
-
return Promise.resolve(next);
|
|
1543
|
-
} catch (error) {
|
|
1544
|
-
return Promise.reject(asError(error));
|
|
1545
|
-
}
|
|
1546
|
-
},
|
|
1547
|
-
patchGroup(tenant, id, ops) {
|
|
1548
|
-
try {
|
|
1549
|
-
const existing = groups.get(directoryKey(tenant, id));
|
|
1550
|
-
if (existing === void 0) throw new DirectoryNotFoundError();
|
|
1551
|
-
let next = existing;
|
|
1552
|
-
for (const op of ops) next = applyGroupOp(next, op);
|
|
1553
|
-
next = stampGroup(next, existing.meta.created);
|
|
1554
|
-
assertGroupUnique(tenant, next, id);
|
|
1555
|
-
groups.set(directoryKey(tenant, id), next);
|
|
1556
|
-
return Promise.resolve(next);
|
|
1557
|
-
} catch (error) {
|
|
1558
|
-
return Promise.reject(asError(error));
|
|
1559
|
-
}
|
|
1560
|
-
},
|
|
1561
|
-
deleteGroup(tenant, id) {
|
|
1562
|
-
if (!groups.delete(directoryKey(tenant, id))) return Promise.reject(new DirectoryNotFoundError());
|
|
1563
|
-
return Promise.resolve();
|
|
1564
|
-
},
|
|
1565
|
-
groupsFor(tenant, userId) {
|
|
1566
|
-
return Promise.resolve(groupsIn(tenant).filter((group) => group.members.some((member) => member.value === userId)));
|
|
1567
|
-
}
|
|
1568
|
-
};
|
|
1569
|
-
}
|
|
1570
|
-
//#endregion
|
|
1571
|
-
export { isDirectoryUniquenessError as C, isDirectoryNotFoundError as S, sha256Hex as T, LIST_SCHEMA as _, normalizePatchOps as a, SCIM_CONTENT_TYPE as b, parseScimFilter as c, serviceProviderConfig as d, APP_DATA_EXTENSION as f, GROUP_SCHEMA as g, ERROR_SCHEMA as h, tenantFromPath as i, resourceTypes as l, DirectoryUniquenessError as m, directoryMembershipSource as n, filterSupported as o, DirectoryNotFoundError as p, scimHandler as r, matchFilter as s, memoryDirectoryStore as t, schemas as u, PATCH_SCHEMA as v, authenticateScim as w, USER_SCHEMA as x, ROLES_EXTENSION as y };
|
|
1055
|
+
export { resourceTypes as a, authenticateScim as c, normalizePatchOps as i, sha256Hex as l, scimHandler as n, schemas as o, tenantFromPath as r, serviceProviderConfig as s, directoryMembershipSource as t };
|