@cimplify/sdk 0.108.0 → 0.110.2
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/LICENSE +21 -0
- package/dist/advanced.d.mts +4 -3
- package/dist/advanced.d.ts +4 -3
- package/dist/advanced.js +24 -24
- package/dist/advanced.mjs +5 -5
- package/dist/animation-4EXBXRVX.js +27 -0
- package/dist/animation-6DICNWUP.mjs +6 -0
- package/dist/audio-DhvyjqdA.d.mts +249 -0
- package/dist/audio-m0w8cnxq.d.ts +249 -0
- package/dist/avatars.d.mts +110 -0
- package/dist/avatars.d.ts +110 -0
- package/dist/avatars.js +82 -0
- package/dist/avatars.mjs +5 -0
- package/dist/backend-gUCzs5Kg.d.mts +3866 -0
- package/dist/backend-gUCzs5Kg.d.ts +3866 -0
- package/dist/{catalogue-B4eLL8Mi.d.ts → catalogue-CPTMyBUz.d.mts} +109 -221
- package/dist/catalogue-DzrTXP3v.d.mts +541 -0
- package/dist/catalogue-DzrTXP3v.d.ts +541 -0
- package/dist/{catalogue-OT89_Ifs.d.mts → catalogue-OTuS5zp-.d.ts} +109 -221
- package/dist/chunk-22BD3RHN.mjs +1809 -0
- package/dist/chunk-25T4JHEA.mjs +21 -0
- package/dist/chunk-2AQ237Y4.js +508 -0
- package/dist/chunk-2IC4H6OV.mjs +48 -0
- package/dist/chunk-2LHLG4OB.mjs +71 -0
- package/dist/chunk-2O2CG465.js +1709 -0
- package/dist/chunk-2Q4DTHXK.js +316 -0
- package/dist/chunk-2QTQ6BUH.mjs +46 -0
- package/dist/chunk-2UN4SFLR.mjs +100 -0
- package/dist/chunk-2V75I7K3.js +454 -0
- package/dist/chunk-2V7IL4HC.js +10 -0
- package/dist/chunk-34XBXUMW.js +296 -0
- package/dist/chunk-3C4C654I.js +71 -0
- package/dist/chunk-3DAD2LDF.mjs +72 -0
- package/dist/chunk-3GXH2NFD.mjs +4 -0
- package/dist/chunk-3O47ZFW3.js +961 -0
- package/dist/chunk-3OY3VYNF.mjs +11 -0
- package/dist/chunk-3S6WPBZL.js +2936 -0
- package/dist/chunk-3TUOUP5T.js +399 -0
- package/dist/chunk-3VEH23I5.mjs +1380 -0
- package/dist/chunk-3ZYSAW2T.mjs +263 -0
- package/dist/chunk-4ANVF274.js +103 -0
- package/dist/chunk-4C7I3ELN.js +388 -0
- package/dist/chunk-4DYKAYFO.mjs +8 -0
- package/dist/chunk-4ZDR72SG.js +329 -0
- package/dist/chunk-52YS45RR.js +1066 -0
- package/dist/chunk-5325XSCH.js +107 -0
- package/dist/chunk-5AD5X6AV.js +13 -0
- package/dist/chunk-5BYDGGWO.mjs +197 -0
- package/dist/chunk-5C3C7VDM.mjs +55 -0
- package/dist/chunk-5HFMY3D7.js +660 -0
- package/dist/chunk-5LH2QN3T.js +1862 -0
- package/dist/chunk-5PJEXSOW.js +44 -0
- package/dist/chunk-5SXDH3Y7.js +90 -0
- package/dist/chunk-5YFBGGCK.mjs +502 -0
- package/dist/chunk-5YWN6H5Q.mjs +133 -0
- package/dist/chunk-66QP3SMN.js +402 -0
- package/dist/chunk-6DAEZKIG.mjs +385 -0
- package/dist/chunk-6DATW7TB.mjs +420 -0
- package/dist/{chunk-JRGK3NXR.mjs → chunk-6ETDAU62.mjs} +72 -212
- package/dist/chunk-6H254EVP.mjs +178 -0
- package/dist/chunk-6PFNJPBJ.mjs +820 -0
- package/dist/chunk-6PJWXIFX.mjs +357 -0
- package/dist/chunk-6SWKWCMS.js +80 -0
- package/dist/chunk-6VVXXX7S.js +808 -0
- package/dist/chunk-6WUBSMTX.js +1403 -0
- package/dist/chunk-73SGZLAQ.mjs +35 -0
- package/dist/chunk-76L2V6KD.mjs +4 -0
- package/dist/chunk-7AAIAVAA.js +1531 -0
- package/dist/chunk-7ARSJPV3.mjs +93 -0
- package/dist/chunk-7BHW5GTC.mjs +1234 -0
- package/dist/chunk-7DQSDKDU.js +6 -0
- package/dist/chunk-7IQQQENP.mjs +401 -0
- package/dist/chunk-7KFTYENS.js +11357 -0
- package/dist/chunk-7SM6XSPZ.js +3171 -0
- package/dist/chunk-7SXOHAIR.mjs +28 -0
- package/dist/chunk-A2MAX6S4.js +90 -0
- package/dist/chunk-A33OORT7.mjs +1530 -0
- package/dist/{chunk-U6ACF76H.mjs → chunk-A36JRXXH.mjs} +1075 -1845
- package/dist/chunk-A7BU3BK4.js +52 -0
- package/dist/chunk-A7MQSN2V.mjs +77 -0
- package/dist/chunk-A7V4L2IT.mjs +416 -0
- package/dist/chunk-AABEK6XU.js +226 -0
- package/dist/chunk-AGV33FWC.mjs +5005 -0
- package/dist/chunk-AHNR3BXI.js +108 -0
- package/dist/chunk-AQ5RLBU2.mjs +286 -0
- package/dist/chunk-AQOE6WCG.js +1270 -0
- package/dist/chunk-ATAWRACV.mjs +62 -0
- package/dist/chunk-ATCURNUV.js +14 -0
- package/dist/chunk-AWPV33OO.js +6 -0
- package/dist/chunk-AYJPHKYV.js +337 -0
- package/dist/chunk-AZ5BGWHB.js +162 -0
- package/dist/chunk-AZAXD44P.js +1373 -0
- package/dist/chunk-BBGKQIJJ.mjs +406 -0
- package/dist/chunk-BP4JLSUA.js +1453 -0
- package/dist/{chunk-SUCE7FWA.mjs → chunk-BTUSVHIE.mjs} +539 -978
- package/dist/chunk-BU6OK542.mjs +818 -0
- package/dist/chunk-CVSRWM6W.js +418 -0
- package/dist/chunk-CYBMFMJD.mjs +247 -0
- package/dist/chunk-DDJLDOUX.mjs +217 -0
- package/dist/{chunk-V32BCG7M.js → chunk-DFZWHNRG.js} +75 -215
- package/dist/chunk-DJ2C7AVG.js +644 -0
- package/dist/chunk-DS2VU4WW.mjs +102 -0
- package/dist/chunk-DSAG7T5P.js +7290 -0
- package/dist/chunk-E2QPPH7I.js +327 -0
- package/dist/chunk-E65WCTIG.mjs +1187 -0
- package/dist/{chunk-33VCYWVL.mjs → chunk-E6QQKDNE.mjs} +30 -42
- package/dist/chunk-ECDK6QBF.mjs +981 -0
- package/dist/chunk-EIB4OWVQ.mjs +620 -0
- package/dist/chunk-EQUZYCGO.js +250 -0
- package/dist/chunk-F3UJ6ZRM.mjs +313 -0
- package/dist/chunk-F63N2ZTQ.js +7023 -0
- package/dist/chunk-F6XRYEM3.mjs +26 -0
- package/dist/chunk-FE6VCE4K.js +5030 -0
- package/dist/chunk-FLWD6GRR.js +1372 -0
- package/dist/chunk-FQBFWJBS.mjs +110 -0
- package/dist/chunk-FXVJ2HFU.js +26 -0
- package/dist/chunk-FZMQMQBW.js +312 -0
- package/dist/chunk-G3EEC44R.js +53 -0
- package/dist/{chunk-KG3WT4PR.mjs → chunk-GCKWKLZF.mjs} +73 -104
- package/dist/chunk-GCX7TY4D.mjs +6826 -0
- package/dist/chunk-GDB6TCSD.js +450 -0
- package/dist/chunk-GDCV4IWO.mjs +21 -0
- package/dist/chunk-GDZT5LZ5.js +170 -0
- package/dist/chunk-GHPUYD4I.mjs +213 -0
- package/dist/chunk-GHS6MIL6.mjs +1432 -0
- package/dist/chunk-GPS2THCL.mjs +11 -0
- package/dist/{chunk-EV2EVOYS.js → chunk-GTJWQAGU.js} +31 -42
- package/dist/chunk-GVTI6UJQ.mjs +130 -0
- package/dist/chunk-GXKI64OT.mjs +1138 -0
- package/dist/chunk-GYDYF2WX.js +275 -0
- package/dist/chunk-GYLP6UG4.mjs +705 -0
- package/dist/chunk-H3OQKK6X.js +1158 -0
- package/dist/chunk-H5DFSCJ6.js +40 -0
- package/dist/chunk-HAGEIC2L.mjs +186 -0
- package/dist/chunk-HAJ4JRFO.js +293 -0
- package/dist/chunk-HDR72GB6.js +188 -0
- package/dist/chunk-HF5HPS4T.mjs +40 -0
- package/dist/chunk-HK6LOFDS.js +218 -0
- package/dist/chunk-HMWYTXCY.mjs +143 -0
- package/dist/chunk-HPCSRCMA.js +89 -0
- package/dist/chunk-HSEO6TPU.js +247 -0
- package/dist/chunk-I5FOHCLH.js +132 -0
- package/dist/chunk-IDLW4NWA.mjs +85 -0
- package/dist/chunk-IIDZ5WUX.js +61 -0
- package/dist/chunk-IR74FJHU.js +2332 -0
- package/dist/chunk-IRVFYAKP.mjs +100 -0
- package/dist/{chunk-XBL3TMPC.mjs → chunk-IZDWAL53.mjs} +1795 -3287
- package/dist/chunk-J2KZXIU3.js +51 -0
- package/dist/chunk-J2U6PJSO.js +91 -0
- package/dist/chunk-J5AJNY2N.js +283 -0
- package/dist/chunk-J6KQZ4FO.mjs +821 -0
- package/dist/{chunk-OWW5GUSB.js → chunk-JGBCIKJV.js} +7 -6
- package/dist/chunk-JKGTBMU7.mjs +25 -0
- package/dist/chunk-JR3TNEQC.js +422 -0
- package/dist/chunk-JURRXY2J.mjs +29 -0
- package/dist/chunk-K3HW5I2A.mjs +317 -0
- package/dist/chunk-K46SMZ66.mjs +103 -0
- package/dist/chunk-K4UDGE3Z.mjs +6 -0
- package/dist/chunk-KDQOR4QQ.mjs +350 -0
- package/dist/chunk-KDTVOLHI.mjs +288 -0
- package/dist/chunk-KGHJH5KJ.mjs +35 -0
- package/dist/chunk-KIZOA5LX.mjs +140 -0
- package/dist/chunk-KK6HYVBI.mjs +242 -0
- package/dist/chunk-KMKWGXMK.js +856 -0
- package/dist/chunk-KPA6K5IB.js +80 -0
- package/dist/chunk-KU7O4IXU.mjs +260 -0
- package/dist/chunk-KVFNRJOR.mjs +11142 -0
- package/dist/chunk-KZJRSXHK.js +2432 -0
- package/dist/chunk-LHWPRUJL.js +79 -0
- package/dist/chunk-LIV3KXJG.mjs +369 -0
- package/dist/chunk-LKV4LACG.js +21 -0
- package/dist/chunk-LUY45X3U.mjs +263 -0
- package/dist/chunk-LYEZZEEF.mjs +17 -0
- package/dist/chunk-M5EXQZYY.mjs +1519 -0
- package/dist/chunk-ME6HGG4I.mjs +1338 -0
- package/dist/chunk-MEXP6DA6.js +31 -0
- package/dist/chunk-MG52AW3H.js +902 -0
- package/dist/chunk-MIPO6F72.js +334 -0
- package/dist/{chunk-5QW7CQBA.js → chunk-MKIJQL5Q.js} +211 -321
- package/dist/chunk-MN3YETVN.mjs +17 -0
- package/dist/chunk-MOBSBXVE.mjs +2391 -0
- package/dist/chunk-MOMOZEUM.mjs +88 -0
- package/dist/chunk-MRFUNRAP.js +62 -0
- package/dist/chunk-MTIHEW2M.js +433 -0
- package/dist/chunk-N4RGGDEL.mjs +73 -0
- package/dist/chunk-NH654HAT.js +10 -0
- package/dist/chunk-NHJUGZUR.mjs +253 -0
- package/dist/chunk-NMQT4HG3.mjs +757 -0
- package/dist/chunk-NPSYB6DC.mjs +906 -0
- package/dist/chunk-NW2GPMSO.js +857 -0
- package/dist/chunk-NXKQOQ6L.js +76 -0
- package/dist/chunk-NXLAZIJZ.js +309 -0
- package/dist/chunk-NYWNA5CF.js +148 -0
- package/dist/chunk-NZTKLY2W.js +1442 -0
- package/dist/chunk-O2ICABUD.js +36 -0
- package/dist/chunk-OIVVQQ22.js +862 -0
- package/dist/chunk-OKC2B4O3.mjs +312 -0
- package/dist/chunk-OLWFPDBK.js +2220 -0
- package/dist/chunk-OMTVH334.js +3779 -0
- package/dist/chunk-OQRVEM56.mjs +362 -0
- package/dist/chunk-OXMIBOD4.js +337 -0
- package/dist/chunk-PBL6YL5L.mjs +288 -0
- package/dist/chunk-PDOELNNQ.js +97 -0
- package/dist/chunk-PDQJY2GZ.js +136 -0
- package/dist/chunk-PKOZXD2Q.js +1274 -0
- package/dist/chunk-PPF2BYFL.mjs +2191 -0
- package/dist/chunk-PQTQKNKD.js +539 -0
- package/dist/chunk-PRSR4FAV.mjs +81 -0
- package/dist/chunk-PTRNO5UD.js +95 -0
- package/dist/chunk-Q2Y3VMKH.js +2000 -0
- package/dist/chunk-QCZOE65N.js +96 -0
- package/dist/chunk-QDYFLATW.mjs +52 -0
- package/dist/chunk-QQABGCMM.js +22 -0
- package/dist/chunk-QS6TRHMR.js +345 -0
- package/dist/chunk-R56P64LB.mjs +208 -0
- package/dist/chunk-RCQ2MPBV.js +428 -0
- package/dist/chunk-RFVRPYR2.mjs +856 -0
- package/dist/chunk-RKBLPGPV.js +11521 -0
- package/dist/chunk-RM2V4IND.mjs +327 -0
- package/dist/chunk-RQXN5A34.mjs +613 -0
- package/dist/chunk-RUVGVNOF.mjs +2687 -0
- package/dist/chunk-SAFJIGYB.mjs +165 -0
- package/dist/chunk-SKQFLBDD.js +263 -0
- package/dist/chunk-SMK6JU2F.mjs +2092 -0
- package/dist/{chunk-UVRPC2P7.js → chunk-SNNEOS5Z.js} +1984 -3476
- package/dist/chunk-SPCRQ6NO.mjs +1246 -0
- package/dist/chunk-SWX4SALA.mjs +19 -0
- package/dist/{chunk-JVODCGFP.mjs → chunk-SYEO2WV4.mjs} +128 -238
- package/dist/chunk-T2QQMX2N.js +10 -0
- package/dist/chunk-T3AFF3L7.mjs +57 -0
- package/dist/chunk-T6Z2EXYL.js +712 -0
- package/dist/chunk-T7LOXGYX.js +118 -0
- package/dist/chunk-TJCAE7RC.mjs +1315 -0
- package/dist/chunk-TJI3K6RP.js +137 -0
- package/dist/chunk-TL2SVO4P.mjs +55 -0
- package/dist/chunk-TM63CYGN.mjs +399 -0
- package/dist/chunk-TU5RYTYU.mjs +13 -0
- package/dist/chunk-TVJZ4GPS.js +1553 -0
- package/dist/chunk-TWM6DLYF.js +371 -0
- package/dist/chunk-U63OC4TQ.js +30 -0
- package/dist/{chunk-L5GKVQVJ.js → chunk-U6BVSJZ6.js} +25 -57
- package/dist/chunk-U6UVWEAK.mjs +792 -0
- package/dist/chunk-UCEPNO6N.mjs +11048 -0
- package/dist/{chunk-ANT574FD.js → chunk-UCR5HRYM.js} +74 -105
- package/dist/chunk-UG5BTOTF.mjs +334 -0
- package/dist/chunk-UGH37BQW.mjs +157 -0
- package/dist/chunk-V7ZRH3PY.mjs +271 -0
- package/dist/chunk-VBGHBL3E.mjs +1394 -0
- package/dist/chunk-VRBDAS5I.js +920 -0
- package/dist/chunk-VVE3Y76O.js +230 -0
- package/dist/chunk-W65JIRI4.mjs +1182 -0
- package/dist/chunk-WHYKAT7G.js +62 -0
- package/dist/{chunk-YOIVZ6OA.mjs → chunk-WIZRUIZB.mjs} +25 -57
- package/dist/chunk-WKWTDZS7.js +385 -0
- package/dist/chunk-WLMINRC4.mjs +78 -0
- package/dist/chunk-WOF3AD3J.js +22 -0
- package/dist/chunk-WWKMOA76.js +1262 -0
- package/dist/chunk-X5A5FOWW.js +615 -0
- package/dist/chunk-X6CN6KQF.mjs +192 -0
- package/dist/chunk-XD2PMH46.mjs +517 -0
- package/dist/chunk-XJA2NGTI.mjs +88 -0
- package/dist/chunk-XJIHN3BY.mjs +8 -0
- package/dist/chunk-XK6UDWJS.js +203 -0
- package/dist/chunk-XPG3N5CF.mjs +415 -0
- package/dist/chunk-XVZ2NKSU.mjs +74 -0
- package/dist/chunk-XYP45OLE.js +117 -0
- package/dist/chunk-XZSDGZX6.mjs +301 -0
- package/dist/chunk-Y2EMGN4T.mjs +120 -0
- package/dist/chunk-Y3XWP5XW.mjs +298 -0
- package/dist/chunk-Y4K22JL6.js +228 -0
- package/dist/chunk-Y65LXQGA.mjs +3164 -0
- package/dist/chunk-Y66WVMO5.mjs +87 -0
- package/dist/chunk-Y7JWLB25.mjs +7280 -0
- package/dist/chunk-YCDXAJKU.js +175 -0
- package/dist/chunk-YRDQCCIS.js +152 -0
- package/dist/chunk-YV52DGSA.js +111 -0
- package/dist/chunk-YXGZQPUD.js +94 -0
- package/dist/chunk-Z3A3AFVU.mjs +102 -0
- package/dist/chunk-ZCY6YKKP.mjs +475 -0
- package/dist/chunk-ZEQHXVU5.js +215 -0
- package/dist/chunk-ZF7JCXCI.js +284 -0
- package/dist/chunk-ZJBRUH6V.js +29 -0
- package/dist/chunk-ZMIL4ZOA.js +365 -0
- package/dist/chunk-ZR5ULMN2.mjs +337 -0
- package/dist/chunk-ZXREOYOW.js +87 -0
- package/dist/{client-BSP9U1O1.d.mts → client-CX_WR0-J.d.mts} +2 -2
- package/dist/client-Dytx_ZTC.d.ts +230 -0
- package/dist/{client-B878xeAP.d.ts → client-dqOhP9Nc.d.ts} +2 -2
- package/dist/client-hTKbCuhG.d.mts +230 -0
- package/dist/clock-B-UAjkKa.d.mts +5 -0
- package/dist/clock-B-UAjkKa.d.ts +5 -0
- package/dist/config-BlXQluJR.d.mts +36 -0
- package/dist/config-BlXQluJR.d.ts +36 -0
- package/dist/courier-Cnn-edJ4.d.ts +95 -0
- package/dist/courier-FmGfkvIN.d.mts +95 -0
- package/dist/crowd-DdHFbqKK.d.ts +186 -0
- package/dist/crowd-hOVSAmA3.d.mts +186 -0
- package/dist/danfo-BEBapFlX.d.mts +146 -0
- package/dist/danfo-UQ_PTIIx.d.ts +146 -0
- package/dist/{elements-Bty6Qs_N.d.mts → elements-DdsRig-2.d.mts} +1548 -257
- package/dist/{elements-Bty6Qs_N.d.ts → elements-DdsRig-2.d.ts} +1548 -257
- package/dist/engines/godot.d.mts +56 -0
- package/dist/engines/godot.d.ts +56 -0
- package/dist/engines/godot.js +28 -0
- package/dist/engines/godot.mjs +3 -0
- package/dist/engines/wasm.d.mts +11 -0
- package/dist/engines/wasm.d.ts +11 -0
- package/dist/engines/wasm.js +178 -0
- package/dist/engines/wasm.mjs +176 -0
- package/dist/fallback-CrG_lTFk.d.mts +270 -0
- package/dist/fallback-CrG_lTFk.d.ts +270 -0
- package/dist/fallback-KDB4Y2CE.mjs +6 -0
- package/dist/fallback-Y26TQENE.js +19 -0
- package/dist/features-CZB4rmcD.d.mts +118 -0
- package/dist/features-CZB4rmcD.d.ts +118 -0
- package/dist/fit-BWiE7rgA.d.mts +44 -0
- package/dist/fit-DK0oT7zO.d.ts +44 -0
- package/dist/five-a-side-Bv1AOUy3.d.mts +115 -0
- package/dist/five-a-side-EC51SJY1.d.ts +115 -0
- package/dist/fluid-ARr0qUIL.d.ts +939 -0
- package/dist/fluid-DLlEj2cs.d.mts +939 -0
- package/dist/game/conformance.d.mts +84 -0
- package/dist/game/conformance.d.ts +84 -0
- package/dist/game/conformance.js +1025 -0
- package/dist/game/conformance.mjs +994 -0
- package/dist/game/heap.d.mts +40 -0
- package/dist/game/heap.d.ts +40 -0
- package/dist/game/heap.js +48 -0
- package/dist/game/heap.mjs +7 -0
- package/dist/game/kit/canvas.d.mts +240 -0
- package/dist/game/kit/canvas.d.ts +240 -0
- package/dist/game/kit/canvas.js +3566 -0
- package/dist/game/kit/canvas.mjs +1039 -0
- package/dist/game/kit/courier.d.mts +17 -0
- package/dist/game/kit/courier.d.ts +17 -0
- package/dist/game/kit/courier.js +66 -0
- package/dist/game/kit/courier.mjs +49 -0
- package/dist/game/kit/danfo.d.mts +11 -0
- package/dist/game/kit/danfo.d.ts +11 -0
- package/dist/game/kit/danfo.js +109 -0
- package/dist/game/kit/danfo.mjs +44 -0
- package/dist/game/kit/engine.d.mts +29 -0
- package/dist/game/kit/engine.d.ts +29 -0
- package/dist/game/kit/engine.js +183 -0
- package/dist/game/kit/engine.mjs +30 -0
- package/dist/game/kit/five-a-side.d.mts +11 -0
- package/dist/game/kit/five-a-side.d.ts +11 -0
- package/dist/game/kit/five-a-side.js +86 -0
- package/dist/game/kit/five-a-side.mjs +41 -0
- package/dist/game/kit/frontier.d.mts +344 -0
- package/dist/game/kit/frontier.d.ts +344 -0
- package/dist/game/kit/frontier.js +435 -0
- package/dist/game/kit/frontier.mjs +14 -0
- package/dist/game/kit/genesis.d.mts +752 -0
- package/dist/game/kit/genesis.d.ts +752 -0
- package/dist/game/kit/genesis.js +380 -0
- package/dist/game/kit/genesis.mjs +15 -0
- package/dist/game/kit/ludo.d.mts +15 -0
- package/dist/game/kit/ludo.d.ts +15 -0
- package/dist/game/kit/ludo.js +87 -0
- package/dist/game/kit/ludo.mjs +42 -0
- package/dist/game/kit/runner.d.mts +12 -0
- package/dist/game/kit/runner.d.ts +12 -0
- package/dist/game/kit/runner.js +83 -0
- package/dist/game/kit/runner.mjs +46 -0
- package/dist/game/kit/shootout.d.mts +13 -0
- package/dist/game/kit/shootout.d.ts +13 -0
- package/dist/game/kit/shootout.js +122 -0
- package/dist/game/kit/shootout.mjs +57 -0
- package/dist/game/kit/slots.d.mts +392 -0
- package/dist/game/kit/slots.d.ts +392 -0
- package/dist/game/kit/slots.js +215 -0
- package/dist/game/kit/slots.mjs +6 -0
- package/dist/game/kit/tycoon.d.mts +16 -0
- package/dist/game/kit/tycoon.d.ts +16 -0
- package/dist/game/kit/tycoon.js +145 -0
- package/dist/game/kit/tycoon.mjs +44 -0
- package/dist/game/kit/word.d.mts +11 -0
- package/dist/game/kit/word.d.ts +11 -0
- package/dist/game/kit/word.js +78 -0
- package/dist/game/kit/word.mjs +41 -0
- package/dist/game/kit/worlds.d.mts +18 -0
- package/dist/game/kit/worlds.d.ts +18 -0
- package/dist/game/kit/worlds.js +74 -0
- package/dist/game/kit/worlds.mjs +49 -0
- package/dist/game/kit.d.mts +53 -0
- package/dist/game/kit.d.ts +53 -0
- package/dist/game/kit.js +2610 -0
- package/dist/game/kit.mjs +101 -0
- package/dist/game/prepared.d.mts +14 -0
- package/dist/game/prepared.d.ts +14 -0
- package/dist/game/prepared.js +81 -0
- package/dist/game/prepared.mjs +32 -0
- package/dist/game-Bx8onkhX.d.mts +1451 -0
- package/dist/game-fgQy2YIm.d.ts +1451 -0
- package/dist/game-theme-CBTw1b_d.d.mts +35 -0
- package/dist/game-theme-Dg-ict5A.d.ts +35 -0
- package/dist/game.d.mts +3546 -0
- package/dist/game.d.ts +3546 -0
- package/dist/game.js +4455 -0
- package/dist/game.mjs +50 -0
- package/dist/graphics-C6YjWYvP.d.ts +5 -0
- package/dist/graphics-Dk2yQnYN.d.mts +5 -0
- package/dist/guest-DrsA00XD.d.mts +732 -0
- package/dist/guest-wIdfoT05.d.ts +732 -0
- package/dist/hit-stop-BKkVwTq7.d.mts +43 -0
- package/dist/hit-stop-D-8pPYnM.d.ts +43 -0
- package/dist/hot-Crn9XpHJ.d.ts +29 -0
- package/dist/hot-DH3nOhQD.d.mts +29 -0
- package/dist/{index-CQStGb3B.d.mts → index-6gkHMGAq.d.mts} +2 -2
- package/dist/index-B8ybCKJI.d.ts +41 -0
- package/dist/{index-DJwXmoaP.d.ts → index-B98Xac8e.d.ts} +2 -2
- package/dist/{index-B7oA_1XI.d.ts → index-B_ByTtIT.d.ts} +2 -2
- package/dist/index-DHjNHb1c.d.mts +41 -0
- package/dist/{index-DhUSTAhT.d.mts → index-DbAN_VQE.d.mts} +2 -2
- package/dist/index.d.mts +134 -24
- package/dist/index.d.ts +134 -24
- package/dist/index.js +407 -248
- package/dist/index.mjs +184 -58
- package/dist/interactives-authoring.d.mts +231 -0
- package/dist/interactives-authoring.d.ts +231 -0
- package/dist/interactives-authoring.js +1743 -0
- package/dist/interactives-authoring.mjs +1704 -0
- package/dist/interactives-canvas.global.js +148 -0
- package/dist/interactives-guest.d.mts +20 -0
- package/dist/interactives-guest.d.ts +20 -0
- package/dist/interactives-guest.js +63 -0
- package/dist/interactives-guest.json +1 -0
- package/dist/interactives-guest.mjs +61 -0
- package/dist/interactives-jsc.global.js +9357 -0
- package/dist/interactives-meters.d.mts +93 -0
- package/dist/interactives-meters.d.ts +93 -0
- package/dist/interactives-meters.js +252 -0
- package/dist/interactives-meters.mjs +68 -0
- package/dist/interactives-production.d.mts +430 -0
- package/dist/interactives-production.d.ts +430 -0
- package/dist/interactives-production.js +1231 -0
- package/dist/interactives-production.mjs +1170 -0
- package/dist/interactives-record.d.mts +112 -0
- package/dist/interactives-record.d.ts +112 -0
- package/dist/interactives-record.js +302 -0
- package/dist/interactives-record.mjs +295 -0
- package/dist/interactives-runtime.d.mts +61 -0
- package/dist/interactives-runtime.d.ts +61 -0
- package/dist/interactives-runtime.js +442 -0
- package/dist/interactives-runtime.mjs +25 -0
- package/dist/interactives-studio-kernel.global.js +1 -0
- package/dist/interactives-studio.d.mts +806 -0
- package/dist/interactives-studio.d.ts +806 -0
- package/dist/interactives-studio.js +5741 -0
- package/dist/interactives-studio.mjs +5651 -0
- package/dist/interactives-tick.d.mts +90 -0
- package/dist/interactives-tick.d.ts +90 -0
- package/dist/interactives-tick.js +203 -0
- package/dist/interactives-tick.mjs +6 -0
- package/dist/interactives-web.d.mts +762 -0
- package/dist/interactives-web.d.ts +762 -0
- package/dist/interactives-web.js +5000 -0
- package/dist/interactives-web.mjs +4628 -0
- package/dist/interactives.d.mts +2430 -0
- package/dist/interactives.d.ts +2430 -0
- package/dist/interactives.js +5723 -0
- package/dist/interactives.mjs +4333 -0
- package/dist/juice-CoHxlpKA.d.ts +42 -0
- package/dist/juice-DQztFS43.d.mts +42 -0
- package/dist/launch-T2f4_Di4.d.mts +151 -0
- package/dist/launch-d6oreMzR.d.ts +151 -0
- package/dist/library-DXYaMFhi.d.mts +69 -0
- package/dist/library-DXYaMFhi.d.ts +69 -0
- package/dist/link-BUTqGmyi.d.mts +38 -0
- package/dist/link-BUTqGmyi.d.ts +38 -0
- package/dist/lint.js +104 -204
- package/dist/lint.mjs +103 -203
- package/dist/local-D8_I6UeL.d.mts +6967 -0
- package/dist/local-VZkqsCzR.d.ts +6967 -0
- package/dist/lockstep-BLf6dglI.d.mts +321 -0
- package/dist/lockstep-D50Ia0JW.d.ts +321 -0
- package/dist/ludo-B8ClkDqr.d.ts +205 -0
- package/dist/ludo-BOuohQ-M.d.mts +205 -0
- package/dist/mock/cli.mjs +200 -56
- package/dist/mock/library.js +200 -56
- package/dist/mock/library.mjs +200 -56
- package/dist/mock/msw.js +200 -56
- package/dist/mock/msw.mjs +200 -56
- package/dist/native-BodxSh03.d.mts +16 -0
- package/dist/native-DUHMT8gA.d.ts +16 -0
- package/dist/network-ZXLD7l1b.d.mts +19 -0
- package/dist/network-ZXLD7l1b.d.ts +19 -0
- package/dist/online-XeymeM9s.d.ts +381 -0
- package/dist/online-d7W_Al9a.d.mts +381 -0
- package/dist/params-DxFb5G_U.d.mts +155 -0
- package/dist/params-DxFb5G_U.d.ts +155 -0
- package/dist/play-BRRlfLhX.d.ts +940 -0
- package/dist/play-ClrMd_e8.d.mts +940 -0
- package/dist/policy-CCw8tXLm.d.mts +3078 -0
- package/dist/policy-CMqOSQIu.d.ts +3078 -0
- package/dist/ports-B_0v_P3A.d.mts +13 -0
- package/dist/ports-CGU_3e_0.d.ts +13 -0
- package/dist/prefetch-BHnicOQj.d.ts +117 -0
- package/dist/prefetch-CBXgYacv.d.mts +117 -0
- package/dist/{price-CSztR02F.d.mts → price-BOzexBww.d.mts} +1 -1
- package/dist/{price-C_vasx9A.d.ts → price-C1h9sPxE.d.ts} +1 -1
- package/dist/protocol-C8qbpUbT.d.mts +242 -0
- package/dist/protocol-C8qbpUbT.d.ts +242 -0
- package/dist/rapier-AZHT4YI7.js +7886 -0
- package/dist/rapier-ODEPCQA6.mjs +7792 -0
- package/dist/react.d.mts +157 -15
- package/dist/react.d.ts +157 -15
- package/dist/react.js +5564 -5904
- package/dist/react.mjs +5451 -5808
- package/dist/runner-CQcLL7By.d.ts +189 -0
- package/dist/runner-D46Yj-wE.d.mts +189 -0
- package/dist/runtime-BRWfkf_q.d.mts +51 -0
- package/dist/runtime-DyuBMkKM.d.ts +51 -0
- package/dist/scheduling-D2ajXpMC.d.ts +224 -0
- package/dist/scheduling-DSRbbaZb.d.mts +224 -0
- package/dist/schema-BrWxzKp6.d.mts +63 -0
- package/dist/schema-BrWxzKp6.d.ts +63 -0
- package/dist/server/evict.js +34 -37
- package/dist/server/evict.mjs +34 -37
- package/dist/server/tanstack.d.mts +49 -3
- package/dist/server/tanstack.d.ts +49 -3
- package/dist/server/tanstack.js +169 -117
- package/dist/server/tanstack.mjs +166 -118
- package/dist/{server-Dckg4Vdr.d.ts → server-D29IIuDV.d.ts} +136 -130
- package/dist/{server-B6dW7-Lj.d.mts → server-DQMWPnc8.d.mts} +136 -130
- package/dist/server.d.mts +45 -5
- package/dist/server.d.ts +45 -5
- package/dist/server.js +171 -227
- package/dist/server.mjs +165 -225
- package/dist/session-grant-CJ27DwrT.d.mts +19 -0
- package/dist/session-grant-CJ27DwrT.d.ts +19 -0
- package/dist/shootout-BJZeX6FG.d.ts +140 -0
- package/dist/shootout-tcZd1Rxt.d.mts +140 -0
- package/dist/state-replica-stMtdkVD.d.mts +42 -0
- package/dist/state-replica-stMtdkVD.d.ts +42 -0
- package/dist/studio-CowqWqez.d.mts +14 -0
- package/dist/studio-CowqWqez.d.ts +14 -0
- package/dist/styles.css +1 -1
- package/dist/template-AhCdB1kW.d.mts +190 -0
- package/dist/template-BkEGVTQj.d.ts +190 -0
- package/dist/terrain-BMxEc6Oc.d.ts +429 -0
- package/dist/terrain-C-XC1Oui.d.mts +429 -0
- package/dist/testing/msw.d.mts +28 -4
- package/dist/testing/msw.d.ts +28 -4
- package/dist/testing/msw.js +15 -21
- package/dist/testing/msw.mjs +15 -21
- package/dist/testing/suite.d.mts +6 -5
- package/dist/testing/suite.d.ts +6 -5
- package/dist/testing/suite.js +89 -124
- package/dist/testing/suite.mjs +81 -116
- package/dist/testing.d.mts +27 -1227
- package/dist/testing.d.ts +27 -1227
- package/dist/testing.js +127 -131
- package/dist/testing.mjs +19 -23
- package/dist/tick-transport-C8QEh8Uw.d.mts +50 -0
- package/dist/tick-transport-UjHY3xK1.d.ts +50 -0
- package/dist/timeline-protocol-hp6e8zFB.d.mts +47 -0
- package/dist/timeline-protocol-hp6e8zFB.d.ts +47 -0
- package/dist/tokens-DhanQRQS.d.mts +21 -0
- package/dist/tokens-K8yxwd6G.d.ts +21 -0
- package/dist/tree-C-Io2Hbx.d.mts +35 -0
- package/dist/tree-CP_qSW4H.d.ts +35 -0
- package/dist/tycoon-B5KHk2Xx.d.mts +255 -0
- package/dist/tycoon-hmHo-3HX.d.ts +255 -0
- package/dist/types-BQkxPwZP.d.mts +219 -0
- package/dist/types-D_f6UUxM.d.ts +219 -0
- package/dist/ui-DwHicuFv.d.mts +563 -0
- package/dist/ui-hi7S2YcH.d.ts +563 -0
- package/dist/{sign-in-DQlIdqsi.d.mts → url-52ndUruG.d.mts} +15 -1
- package/dist/{sign-in-DQlIdqsi.d.ts → url-52ndUruG.d.ts} +15 -1
- package/dist/utils.d.mts +3 -3
- package/dist/utils.d.ts +3 -3
- package/dist/utils.js +37 -37
- package/dist/utils.mjs +4 -4
- package/dist/vars-Dc_PrhBK.d.mts +511 -0
- package/dist/vars-Dc_PrhBK.d.ts +511 -0
- package/dist/vm-IUARFFAI.mjs +63 -0
- package/dist/vm-N7L6MGGH.js +65 -0
- package/dist/weave-delivery-CW-Kstut.d.mts +360 -0
- package/dist/weave-delivery-CW-Kstut.d.ts +360 -0
- package/dist/web-Dss74a7v.d.ts +883 -0
- package/dist/web-f9ZQPoyw.d.mts +883 -0
- package/dist/web-transport-C7MkBL0a.d.ts +19 -0
- package/dist/web-transport-aYEqXMd9.d.mts +19 -0
- package/dist/weight-CPGjsgjV.d.ts +92 -0
- package/dist/weight-tF1ODR1p.d.mts +92 -0
- package/dist/word-BcX9Jcmv.d.mts +70 -0
- package/dist/word-C7sVPLHm.d.ts +70 -0
- package/dist/world-PvILHDR1.d.ts +2285 -0
- package/dist/world-qekkXjJv.d.mts +2285 -0
- package/dist/worlds-Br2Pb0Cs.d.ts +109 -0
- package/dist/worlds-D5ydYr7d.d.mts +109 -0
- package/engines/c/cimplify.h +108 -0
- package/engines/c/cimplify.lib.js +11 -0
- package/engines/godot/addons/cimplify/cimplify.gd +97 -0
- package/engines/rust/interactives-ctx/Cargo.toml +9 -0
- package/engines/rust/interactives-ctx/src/lib.rs +189 -0
- package/package.json +189 -3
- package/vendor/rapier3d-compat/LICENSE +201 -0
- package/vendor/rapier3d-compat/PATCHES.md +61 -0
- package/dist/chunk-2P4KXFB6.js +0 -274
- package/dist/chunk-3G6RQLXK.mjs +0 -21
- package/dist/chunk-3V4DVXV3.mjs +0 -254
- package/dist/chunk-EDK3LNM6.js +0 -2436
- package/dist/chunk-F7J3HK27.js +0 -4549
- package/dist/chunk-U4MW6PYU.mjs +0 -23
- package/dist/chunk-XREIZ56K.js +0 -26
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PURCHASE_INTENT_MOBILE_MONEY_NETWORK,
|
|
1
|
+
import { PURCHASE_INTENT_MOBILE_MONEY_NETWORK, money } from './chunk-GCKWKLZF.mjs';
|
|
2
2
|
|
|
3
3
|
// src/utils/price.ts
|
|
4
4
|
var CURRENCY_SYMBOLS = {
|
|
@@ -76,27 +76,16 @@ function getCurrencySymbol(currencyCode2) {
|
|
|
76
76
|
return CURRENCY_SYMBOLS[currencyCode2.toUpperCase()] || currencyCode2;
|
|
77
77
|
}
|
|
78
78
|
function formatNumberCompact(value, decimals = 1) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
if (absValue >= 1e9) {
|
|
82
|
-
return `${sign}${(absValue / 1e9).toFixed(decimals)}B`;
|
|
83
|
-
}
|
|
84
|
-
if (absValue >= 1e6) {
|
|
85
|
-
return `${sign}${(absValue / 1e6).toFixed(decimals)}M`;
|
|
86
|
-
}
|
|
87
|
-
if (absValue >= 1e3) {
|
|
88
|
-
return `${sign}${(absValue / 1e3).toFixed(decimals)}K`;
|
|
89
|
-
}
|
|
90
|
-
return `${sign}${absValue.toFixed(decimals)}`;
|
|
79
|
+
let absValue = Math.abs(value), sign = value < 0 ? "-" : "";
|
|
80
|
+
return absValue >= 1e9 ? `${sign}${(absValue / 1e9).toFixed(decimals)}B` : absValue >= 1e6 ? `${sign}${(absValue / 1e6).toFixed(decimals)}M` : absValue >= 1e3 ? `${sign}${(absValue / 1e3).toFixed(decimals)}K` : `${sign}${absValue.toFixed(decimals)}`;
|
|
91
81
|
}
|
|
92
82
|
function formatPrice(amount, currency = "GHS", locale = "en-US") {
|
|
93
|
-
|
|
94
|
-
if (isNaN(numAmount))
|
|
83
|
+
let numAmount = typeof amount == "string" ? parseFloat(amount) : amount;
|
|
84
|
+
if (isNaN(numAmount))
|
|
95
85
|
return `${getCurrencySymbol(currency)}0.00`;
|
|
96
|
-
|
|
97
|
-
const symbol = getCurrencySymbol(currency);
|
|
86
|
+
let symbol = getCurrencySymbol(currency);
|
|
98
87
|
try {
|
|
99
|
-
|
|
88
|
+
let formatted = new Intl.NumberFormat(locale, {
|
|
100
89
|
minimumFractionDigits: 2,
|
|
101
90
|
maximumFractionDigits: 2
|
|
102
91
|
}).format(numAmount);
|
|
@@ -106,57 +95,36 @@ function formatPrice(amount, currency = "GHS", locale = "en-US") {
|
|
|
106
95
|
}
|
|
107
96
|
}
|
|
108
97
|
function formatPriceAdjustment(amount, currency = "GHS", locale = "en-US") {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
return `+${formatted}`;
|
|
112
|
-
} else if (amount < 0) {
|
|
113
|
-
return `-${formatted}`;
|
|
114
|
-
}
|
|
115
|
-
return formatted;
|
|
98
|
+
let formatted = formatPrice(Math.abs(amount), currency, locale);
|
|
99
|
+
return amount > 0 ? `+${formatted}` : amount < 0 ? `-${formatted}` : formatted;
|
|
116
100
|
}
|
|
117
101
|
function formatPriceCompact(amount, currency = "GHS", decimals = 1) {
|
|
118
|
-
|
|
119
|
-
if (isNaN(numAmount))
|
|
102
|
+
let numAmount = typeof amount == "string" ? parseFloat(amount) : amount;
|
|
103
|
+
if (isNaN(numAmount))
|
|
120
104
|
return `${getCurrencySymbol(currency)}0`;
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
if (Math.abs(numAmount) < 1e3) {
|
|
124
|
-
return `${symbol}${numAmount.toFixed(2)}`;
|
|
125
|
-
}
|
|
126
|
-
return `${symbol}${formatNumberCompact(numAmount, decimals)}`;
|
|
105
|
+
let symbol = getCurrencySymbol(currency);
|
|
106
|
+
return Math.abs(numAmount) < 1e3 ? `${symbol}${numAmount.toFixed(2)}` : `${symbol}${formatNumberCompact(numAmount, decimals)}`;
|
|
127
107
|
}
|
|
128
108
|
function formatMoney(amount, currency = "GHS") {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
if (isNaN(numAmount)) {
|
|
132
|
-
return `${symbol}0.00`;
|
|
133
|
-
}
|
|
134
|
-
return `${symbol}${numAmount.toFixed(2)}`;
|
|
109
|
+
let symbol = getCurrencySymbol(currency), numAmount = typeof amount == "string" ? parseFloat(amount) : amount;
|
|
110
|
+
return isNaN(numAmount) ? `${symbol}0.00` : `${symbol}${numAmount.toFixed(2)}`;
|
|
135
111
|
}
|
|
136
112
|
function parsePrice(value) {
|
|
137
|
-
if (value
|
|
113
|
+
if (value == null)
|
|
138
114
|
return 0;
|
|
139
|
-
|
|
140
|
-
if (typeof value === "number") {
|
|
115
|
+
if (typeof value == "number")
|
|
141
116
|
return isNaN(value) ? 0 : value;
|
|
142
|
-
|
|
143
|
-
const cleaned = value.replace(/[^\d.-]/g, "");
|
|
144
|
-
const parsed = parseFloat(cleaned);
|
|
117
|
+
let cleaned = value.replace(/[^\d.-]/g, ""), parsed = parseFloat(cleaned);
|
|
145
118
|
return isNaN(parsed) ? 0 : parsed;
|
|
146
119
|
}
|
|
147
120
|
function getVariantUnitPrice(product, variant) {
|
|
148
|
-
if (variant?.price_info)
|
|
121
|
+
if (variant?.price_info)
|
|
149
122
|
return parsePrice(variant.price_info.final_price);
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
if (!variant) {
|
|
123
|
+
let defaultPrice = parsePrice(product.default_price);
|
|
124
|
+
if (!variant)
|
|
153
125
|
return defaultPrice;
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
if (!defaultVariant) {
|
|
157
|
-
return variant.is_default ? defaultPrice : defaultPrice + parsePrice(variant.price_adjustment);
|
|
158
|
-
}
|
|
159
|
-
return defaultPrice - parsePrice(defaultVariant.price_adjustment) + parsePrice(variant.price_adjustment);
|
|
126
|
+
let defaultVariant = product.variants?.find((candidate) => candidate.is_default);
|
|
127
|
+
return defaultVariant ? defaultPrice - parsePrice(defaultVariant.price_adjustment) + parsePrice(variant.price_adjustment) : variant.is_default ? defaultPrice : defaultPrice + parsePrice(variant.price_adjustment);
|
|
160
128
|
}
|
|
161
129
|
function hasTaxInfo(priceInfo) {
|
|
162
130
|
return priceInfo.tax_info !== void 0 && priceInfo.tax_info !== null;
|
|
@@ -168,107 +136,53 @@ function isTaxInclusive(priceInfo) {
|
|
|
168
136
|
return priceInfo.tax_info?.is_inclusive === true;
|
|
169
137
|
}
|
|
170
138
|
function formatPriceWithTax(priceInfo, currency = "GHS") {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
return finalPrice;
|
|
174
|
-
}
|
|
175
|
-
if (isTaxInclusive(priceInfo)) {
|
|
176
|
-
return `${finalPrice} (incl. tax)`;
|
|
177
|
-
}
|
|
178
|
-
return `${finalPrice} + ${formatPrice(getTaxAmount(priceInfo), currency)} tax`;
|
|
139
|
+
let finalPrice = formatPrice(priceInfo.final_price, currency);
|
|
140
|
+
return hasTaxInfo(priceInfo) ? isTaxInclusive(priceInfo) ? `${finalPrice} (incl. tax)` : `${finalPrice} + ${formatPrice(getTaxAmount(priceInfo), currency)} tax` : finalPrice;
|
|
179
141
|
}
|
|
180
142
|
function getDisplayPrice(product) {
|
|
181
|
-
|
|
182
|
-
return parsePrice(product.sale.price);
|
|
183
|
-
}
|
|
184
|
-
if (product.price_info) {
|
|
185
|
-
return parsePrice(product.price_info.final_price);
|
|
186
|
-
}
|
|
187
|
-
if (product.final_price !== void 0 && product.final_price !== null) {
|
|
188
|
-
return parsePrice(product.final_price);
|
|
189
|
-
}
|
|
190
|
-
if (product.default_price !== void 0 && product.default_price !== null) {
|
|
191
|
-
return parsePrice(product.default_price);
|
|
192
|
-
}
|
|
193
|
-
return 0;
|
|
143
|
+
return product.sale ? parsePrice(product.sale.price) : product.price_info ? parsePrice(product.price_info.final_price) : product.final_price !== void 0 && product.final_price !== null ? parsePrice(product.final_price) : product.default_price !== void 0 && product.default_price !== null ? parsePrice(product.default_price) : 0;
|
|
194
144
|
}
|
|
195
145
|
function getBasePrice(product) {
|
|
196
|
-
|
|
197
|
-
return parsePrice(product.sale.original);
|
|
198
|
-
}
|
|
199
|
-
if (product.price_info) {
|
|
200
|
-
return parsePrice(product.price_info.base_price);
|
|
201
|
-
}
|
|
202
|
-
if (product.base_price !== void 0 && product.base_price !== null) {
|
|
203
|
-
return parsePrice(product.base_price);
|
|
204
|
-
}
|
|
205
|
-
if (product.default_price !== void 0 && product.default_price !== null) {
|
|
206
|
-
return parsePrice(product.default_price);
|
|
207
|
-
}
|
|
208
|
-
return 0;
|
|
146
|
+
return product.sale ? parsePrice(product.sale.original) : product.price_info ? parsePrice(product.price_info.base_price) : product.base_price !== void 0 && product.base_price !== null ? parsePrice(product.base_price) : product.default_price !== void 0 && product.default_price !== null ? parsePrice(product.default_price) : 0;
|
|
209
147
|
}
|
|
210
148
|
function isOnSale(product) {
|
|
211
|
-
if (product.sale)
|
|
149
|
+
if (product.sale)
|
|
212
150
|
return true;
|
|
213
|
-
|
|
214
|
-
const basePrice = getBasePrice(product);
|
|
215
|
-
const finalPrice = getDisplayPrice(product);
|
|
151
|
+
let basePrice = getBasePrice(product), finalPrice = getDisplayPrice(product);
|
|
216
152
|
return basePrice > finalPrice && basePrice > 0;
|
|
217
153
|
}
|
|
218
154
|
function getDiscountPercentage(product) {
|
|
219
|
-
if (product.sale)
|
|
155
|
+
if (product.sale)
|
|
220
156
|
return parsePrice(product.sale.percent_off);
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
const finalPrice = getDisplayPrice(product);
|
|
224
|
-
if (basePrice > finalPrice && basePrice > 0) {
|
|
225
|
-
return Math.round((basePrice - finalPrice) / basePrice * 100);
|
|
226
|
-
}
|
|
227
|
-
return 0;
|
|
157
|
+
let basePrice = getBasePrice(product), finalPrice = getDisplayPrice(product);
|
|
158
|
+
return basePrice > finalPrice && basePrice > 0 ? Math.round((basePrice - finalPrice) / basePrice * 100) : 0;
|
|
228
159
|
}
|
|
229
160
|
function getMarkupPercentage(product) {
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
if (finalPrice > basePrice && basePrice > 0) {
|
|
233
|
-
return Math.round((finalPrice - basePrice) / basePrice * 100);
|
|
234
|
-
}
|
|
235
|
-
return 0;
|
|
161
|
+
let basePrice = getBasePrice(product), finalPrice = getDisplayPrice(product);
|
|
162
|
+
return finalPrice > basePrice && basePrice > 0 ? Math.round((finalPrice - basePrice) / basePrice * 100) : 0;
|
|
236
163
|
}
|
|
237
164
|
function getProductCurrency(product) {
|
|
238
|
-
|
|
239
|
-
return product.price_info.currency;
|
|
240
|
-
}
|
|
241
|
-
if (product.currency) {
|
|
242
|
-
return product.currency;
|
|
243
|
-
}
|
|
244
|
-
return "GHS";
|
|
165
|
+
return product.price_info?.currency ? product.price_info.currency : product.currency ? product.currency : "GHS";
|
|
245
166
|
}
|
|
246
167
|
function formatProductPrice(product, locale = "en-US") {
|
|
247
|
-
|
|
248
|
-
const currency = getProductCurrency(product);
|
|
168
|
+
let price = getDisplayPrice(product), currency = getProductCurrency(product);
|
|
249
169
|
return formatPrice(price, currency, locale);
|
|
250
170
|
}
|
|
251
171
|
function getUnitPriceAtQuantity(tiers, quantity, fallback) {
|
|
252
|
-
|
|
253
|
-
let
|
|
254
|
-
|
|
255
|
-
if (quantity >= tier.min_quantity) {
|
|
256
|
-
if (tier.max_quantity == null || quantity <= tier.max_quantity) {
|
|
257
|
-
matched = tier;
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
}
|
|
172
|
+
let sorted = [...tiers].sort((a, b) => a.min_quantity - b.min_quantity), matched;
|
|
173
|
+
for (let tier of sorted)
|
|
174
|
+
quantity >= tier.min_quantity && (tier.max_quantity == null || quantity <= tier.max_quantity) && (matched = tier);
|
|
261
175
|
return matched ? parsePrice(matched.unit_price) : fallback;
|
|
262
176
|
}
|
|
263
177
|
function getPriceRange(product) {
|
|
264
|
-
|
|
178
|
+
let tiers = product.quantity_pricing;
|
|
265
179
|
if (tiers && tiers.length > 1) {
|
|
266
|
-
|
|
180
|
+
let prices = tiers.map((t) => parsePrice(t.unit_price));
|
|
267
181
|
return { min: Math.min(...prices), max: Math.max(...prices) };
|
|
268
182
|
}
|
|
269
|
-
|
|
183
|
+
let variants = product.variants;
|
|
270
184
|
if (variants && variants.length > 1) {
|
|
271
|
-
|
|
185
|
+
let prices = variants.map((variant) => getVariantUnitPrice(product, variant));
|
|
272
186
|
return { min: Math.min(...prices), max: Math.max(...prices) };
|
|
273
187
|
}
|
|
274
188
|
return null;
|
|
@@ -279,54 +193,24 @@ function formatPriceRange(min, max, currency = "GHS") {
|
|
|
279
193
|
|
|
280
194
|
// src/utils/payment.ts
|
|
281
195
|
function categorizePaymentError(error, errorCode) {
|
|
282
|
-
let message = "An unexpected error occurred during payment processing. Please try again or contact support.";
|
|
283
|
-
|
|
284
|
-
let code = errorCode || "PAYMENT_ERROR";
|
|
285
|
-
const technical = error.stack;
|
|
286
|
-
const errorMessage = error.message?.toLowerCase() || "";
|
|
287
|
-
if (errorCode === "INSUFFICIENT_FUNDS" || errorMessage.includes("insufficient") || errorMessage.includes("funds")) {
|
|
288
|
-
code = "INSUFFICIENT_FUNDS";
|
|
289
|
-
message = "Your payment method has insufficient funds. Please try another payment method.";
|
|
290
|
-
} else if (errorCode === "CARD_DECLINED" || errorMessage.includes("declined")) {
|
|
291
|
-
code = "CARD_DECLINED";
|
|
292
|
-
message = "Your card was declined. Please try another card or payment method.";
|
|
293
|
-
} else if (errorMessage.includes("cancelled") || errorMessage.includes("canceled") || errorCode === "PAYMENT_CANCELLED") {
|
|
294
|
-
code = "PAYMENT_CANCELLED";
|
|
295
|
-
message = "Payment was cancelled. You can try again when ready.";
|
|
296
|
-
} else if (errorMessage.includes("network") || errorMessage.includes("connection") || errorCode === "NETWORK_ERROR") {
|
|
297
|
-
code = "NETWORK_ERROR";
|
|
298
|
-
message = "Network connection issue. Please check your internet connection and try again.";
|
|
299
|
-
} else if (errorMessage.includes("timeout") || errorCode === "TIMEOUT") {
|
|
300
|
-
code = "TIMEOUT";
|
|
301
|
-
message = "Payment processing timed out. Please try again.";
|
|
302
|
-
} else if (errorCode === "PAYMENT_ACTION_NOT_COMPLETED") {
|
|
303
|
-
code = "PAYMENT_ACTION_NOT_COMPLETED";
|
|
304
|
-
message = "Payment action was not completed. Please try again.";
|
|
305
|
-
} else if (errorCode === "AUTHORIZATION_FAILED") {
|
|
306
|
-
code = "AUTHORIZATION_FAILED";
|
|
307
|
-
message = "Authorization failed. Please check your code and try again.";
|
|
308
|
-
} else if (errorCode === "INVALID_OTP") {
|
|
309
|
-
code = "INVALID_OTP";
|
|
310
|
-
message = "Invalid verification code. Please check and try again.";
|
|
311
|
-
}
|
|
312
|
-
return { code, message, recoverable, technical };
|
|
196
|
+
let message = "An unexpected error occurred during payment processing. Please try again or contact support.", recoverable = true, code = errorCode || "PAYMENT_ERROR", technical = error.stack, errorMessage = error.message?.toLowerCase() || "";
|
|
197
|
+
return errorCode === "INSUFFICIENT_FUNDS" || errorMessage.includes("insufficient") || errorMessage.includes("funds") ? (code = "INSUFFICIENT_FUNDS", message = "Your payment method has insufficient funds. Please try another payment method.") : errorCode === "CARD_DECLINED" || errorMessage.includes("declined") ? (code = "CARD_DECLINED", message = "Your card was declined. Please try another card or payment method.") : errorMessage.includes("cancelled") || errorMessage.includes("canceled") || errorCode === "PAYMENT_CANCELLED" ? (code = "PAYMENT_CANCELLED", message = "Payment was cancelled. You can try again when ready.") : errorMessage.includes("network") || errorMessage.includes("connection") || errorCode === "NETWORK_ERROR" ? (code = "NETWORK_ERROR", message = "Network connection issue. Please check your internet connection and try again.") : errorMessage.includes("timeout") || errorCode === "TIMEOUT" ? (code = "TIMEOUT", message = "Payment processing timed out. Please try again.") : errorCode === "PAYMENT_ACTION_NOT_COMPLETED" ? (code = "PAYMENT_ACTION_NOT_COMPLETED", message = "Payment action was not completed. Please try again.") : errorCode === "AUTHORIZATION_FAILED" ? (code = "AUTHORIZATION_FAILED", message = "Authorization failed. Please check your code and try again.") : errorCode === "INVALID_OTP" && (code = "INVALID_OTP", message = "Invalid verification code. Please check and try again."), { code, message, recoverable, technical };
|
|
313
198
|
}
|
|
314
199
|
function isQuickPaymentResponse(response) {
|
|
315
|
-
return response !== null && typeof response
|
|
200
|
+
return response !== null && typeof response == "object" && "payment" in response && typeof response.payment == "object";
|
|
316
201
|
}
|
|
317
202
|
function isWebPaymentResponse(response) {
|
|
318
|
-
return response !== null && typeof response
|
|
203
|
+
return response !== null && typeof response == "object" && "transaction" in response && typeof response.transaction == "object";
|
|
319
204
|
}
|
|
320
205
|
function normalizePaymentResponse(response) {
|
|
321
|
-
if (!response)
|
|
206
|
+
if (!response)
|
|
322
207
|
return {
|
|
323
208
|
method: "unknown",
|
|
324
209
|
provider: "unknown",
|
|
325
210
|
requires_action: false,
|
|
326
211
|
metadata: {}
|
|
327
212
|
};
|
|
328
|
-
|
|
329
|
-
if (isQuickPaymentResponse(response)) {
|
|
213
|
+
if (isQuickPaymentResponse(response))
|
|
330
214
|
return {
|
|
331
215
|
method: response.payment.type?.toLowerCase() || "unknown",
|
|
332
216
|
provider: response.payment.provider?.toLowerCase() || "unknown",
|
|
@@ -341,12 +225,8 @@ function normalizePaymentResponse(response) {
|
|
|
341
225
|
instructions: response.payment.instructions,
|
|
342
226
|
metadata: response.payment.metadata
|
|
343
227
|
};
|
|
344
|
-
}
|
|
345
228
|
if (isWebPaymentResponse(response)) {
|
|
346
|
-
|
|
347
|
-
const authType = typeof response.authorization_type === "string" ? response.authorization_type.trim().toLowerCase().replace(/[\s-]+/g, "_") : void 0;
|
|
348
|
-
const validStringAuthTypes = ["otp", "pin", "phone", "birthday"];
|
|
349
|
-
const safeAuthType = objectAuthType || (authType && validStringAuthTypes.includes(authType) ? authType : void 0);
|
|
229
|
+
let objectAuthType = response.authorization_type && typeof response.authorization_type == "object" && "address" in response.authorization_type ? { address: response.authorization_type.address } : void 0, authType = typeof response.authorization_type == "string" ? response.authorization_type.trim().toLowerCase().replace(/[\s-]+/g, "_") : void 0, safeAuthType = objectAuthType || (authType && ["otp", "pin", "phone", "birthday"].includes(authType) ? authType : void 0);
|
|
350
230
|
return {
|
|
351
231
|
provider: response.transaction.provider_type?.toLowerCase() || "unknown",
|
|
352
232
|
requires_action: response.requires_action || false,
|
|
@@ -379,8 +259,7 @@ var PAYMENT_SUCCESS_STATUSES = /* @__PURE__ */ new Set([
|
|
|
379
259
|
"captured",
|
|
380
260
|
"completed",
|
|
381
261
|
"not_required"
|
|
382
|
-
])
|
|
383
|
-
var PAYMENT_TERMINAL_FAILURE_STATUSES = [
|
|
262
|
+
]), PAYMENT_TERMINAL_FAILURE_STATUSES = [
|
|
384
263
|
"failed",
|
|
385
264
|
"cancelled",
|
|
386
265
|
"voided",
|
|
@@ -389,13 +268,10 @@ var PAYMENT_TERMINAL_FAILURE_STATUSES = [
|
|
|
389
268
|
"refund_pending",
|
|
390
269
|
"reversed",
|
|
391
270
|
"disputed"
|
|
392
|
-
]
|
|
393
|
-
var PAYMENT_FAILURE_STATUSES = new Set(PAYMENT_TERMINAL_FAILURE_STATUSES);
|
|
394
|
-
var PAYMENT_REQUIRES_ACTION_STATUSES = /* @__PURE__ */ new Set([
|
|
271
|
+
], PAYMENT_FAILURE_STATUSES = new Set(PAYMENT_TERMINAL_FAILURE_STATUSES), PAYMENT_REQUIRES_ACTION_STATUSES = /* @__PURE__ */ new Set([
|
|
395
272
|
"requires_action",
|
|
396
273
|
"requires_payment_method"
|
|
397
|
-
])
|
|
398
|
-
var PAYMENT_STATUS_ALIAS_MAP = {
|
|
274
|
+
]), PAYMENT_STATUS_ALIAS_MAP = {
|
|
399
275
|
ok: "captured",
|
|
400
276
|
done: "captured",
|
|
401
277
|
paid: "captured",
|
|
@@ -420,8 +296,7 @@ var PAYMENT_STATUS_ALIAS_MAP = {
|
|
|
420
296
|
cancelled: "cancelled",
|
|
421
297
|
unresolved: "pending",
|
|
422
298
|
error: "failed"
|
|
423
|
-
}
|
|
424
|
-
var KNOWN_PAYMENT_STATUSES = /* @__PURE__ */ new Set([
|
|
299
|
+
}, KNOWN_PAYMENT_STATUSES = /* @__PURE__ */ new Set([
|
|
425
300
|
"initialized",
|
|
426
301
|
"pending",
|
|
427
302
|
"processing",
|
|
@@ -443,40 +318,31 @@ function normalizeStatusToken(status) {
|
|
|
443
318
|
return status?.trim().toLowerCase().replace(/[\s-]+/g, "_") ?? "";
|
|
444
319
|
}
|
|
445
320
|
function normalizePaymentStatusValue(status) {
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
return PAYMENT_STATUS_ALIAS_MAP[normalized];
|
|
449
|
-
}
|
|
450
|
-
return KNOWN_PAYMENT_STATUSES.has(normalized) ? normalized : "unknown";
|
|
321
|
+
let normalized = normalizeStatusToken(status);
|
|
322
|
+
return Object.prototype.hasOwnProperty.call(PAYMENT_STATUS_ALIAS_MAP, normalized) ? PAYMENT_STATUS_ALIAS_MAP[normalized] : KNOWN_PAYMENT_STATUSES.has(normalized) ? normalized : "unknown";
|
|
451
323
|
}
|
|
452
324
|
function isPaymentStatusSuccess(status) {
|
|
453
|
-
|
|
325
|
+
let normalizedStatus = normalizePaymentStatusValue(status);
|
|
454
326
|
return PAYMENT_SUCCESS_STATUSES.has(normalizedStatus);
|
|
455
327
|
}
|
|
456
328
|
function isPaymentStatusFailure(status) {
|
|
457
|
-
|
|
329
|
+
let normalizedStatus = normalizePaymentStatusValue(status);
|
|
458
330
|
return PAYMENT_FAILURE_STATUSES.has(normalizedStatus);
|
|
459
331
|
}
|
|
460
332
|
function isPaymentStatusRequiresAction(status) {
|
|
461
|
-
|
|
333
|
+
let normalizedStatus = normalizePaymentStatusValue(status);
|
|
462
334
|
return PAYMENT_REQUIRES_ACTION_STATUSES.has(normalizedStatus);
|
|
463
335
|
}
|
|
464
336
|
function normalizeStatusResponse(response) {
|
|
465
|
-
if (!response || typeof response
|
|
337
|
+
if (!response || typeof response != "object")
|
|
466
338
|
return {
|
|
467
339
|
status: "pending",
|
|
468
340
|
paid: false,
|
|
469
|
-
amount:
|
|
341
|
+
amount: 0,
|
|
470
342
|
currency: "",
|
|
471
343
|
message: "No status available"
|
|
472
344
|
};
|
|
473
|
-
|
|
474
|
-
const res = response;
|
|
475
|
-
const normalizedStatus = normalizePaymentStatusValue(res.status ?? void 0);
|
|
476
|
-
const normalizedAmount = typeof res.amount === "string" ? money(res.amount) : typeof res.amount === "number" && Number.isFinite(res.amount) ? moneyFromNumber(res.amount) : moneyFromNumber(0);
|
|
477
|
-
const normalizedCurrency = typeof res.currency === "string" && res.currency.trim().length > 0 ? res.currency : "";
|
|
478
|
-
const paidValue = res.paid === true && normalizedStatus !== "authorized" && !PAYMENT_REQUIRES_ACTION_STATUSES.has(normalizedStatus) && !PAYMENT_FAILURE_STATUSES.has(normalizedStatus);
|
|
479
|
-
const derivedPaid = paidValue || PAYMENT_SUCCESS_STATUSES.has(normalizedStatus);
|
|
345
|
+
let res = response, normalizedStatus = normalizePaymentStatusValue(res.status ?? void 0), normalizedAmount = typeof res.amount == "string" ? money(res.amount) : typeof res.amount == "number" && Number.isFinite(res.amount) ? res.amount : 0, normalizedCurrency = typeof res.currency == "string" && res.currency.trim().length > 0 ? res.currency : "", derivedPaid = res.paid === true && normalizedStatus !== "authorized" && !PAYMENT_REQUIRES_ACTION_STATUSES.has(normalizedStatus) && !PAYMENT_FAILURE_STATUSES.has(normalizedStatus) || PAYMENT_SUCCESS_STATUSES.has(normalizedStatus);
|
|
480
346
|
return {
|
|
481
347
|
status: normalizedStatus,
|
|
482
348
|
paid: derivedPaid,
|
|
@@ -493,8 +359,7 @@ var MOBILE_MONEY_PROVIDERS = {
|
|
|
493
359
|
},
|
|
494
360
|
vodafone: { name: "Telecel Cash", prefix: ["020", "050"] },
|
|
495
361
|
airtel: { name: "AirtelTigo Money", prefix: ["026", "027", "056", "057"] }
|
|
496
|
-
}
|
|
497
|
-
var MOBILE_MONEY_PROVIDER_ALIASES = {
|
|
362
|
+
}, MOBILE_MONEY_PROVIDER_ALIASES = {
|
|
498
363
|
mtn: "mtn",
|
|
499
364
|
mtnmomo: "mtn",
|
|
500
365
|
vod: "telecel",
|
|
@@ -507,8 +372,8 @@ var MOBILE_MONEY_PROVIDER_ALIASES = {
|
|
|
507
372
|
mpesa: "mpesa"
|
|
508
373
|
};
|
|
509
374
|
function canonicalMobileMoneyProvider(provider) {
|
|
510
|
-
if (typeof provider
|
|
511
|
-
|
|
375
|
+
if (typeof provider != "string") return null;
|
|
376
|
+
let normalized = provider.trim().toLowerCase().replace(/[\s_-]+/g, "");
|
|
512
377
|
return MOBILE_MONEY_PROVIDER_ALIASES[normalized] ?? null;
|
|
513
378
|
}
|
|
514
379
|
var PURCHASE_INTENT_NETWORK_BY_PROVIDER = {
|
|
@@ -517,30 +382,25 @@ var PURCHASE_INTENT_NETWORK_BY_PROVIDER = {
|
|
|
517
382
|
airteltigo: PURCHASE_INTENT_MOBILE_MONEY_NETWORK.AIRTEL
|
|
518
383
|
};
|
|
519
384
|
function purchaseIntentMobileMoneyNetwork(provider) {
|
|
520
|
-
|
|
385
|
+
let canonical = canonicalMobileMoneyProvider(provider);
|
|
521
386
|
return canonical ? PURCHASE_INTENT_NETWORK_BY_PROVIDER[canonical] ?? null : null;
|
|
522
387
|
}
|
|
523
388
|
var LOOPBACK_AUTHORIZATION_HOSTS = /* @__PURE__ */ new Set(["localhost", "127.0.0.1", "[::1]"]);
|
|
524
389
|
function paymentAuthorizationUrl(value) {
|
|
525
|
-
if (typeof value
|
|
390
|
+
if (typeof value != "string" || !value.trim()) return null;
|
|
526
391
|
try {
|
|
527
|
-
|
|
528
|
-
if (url.protocol === "https:"
|
|
529
|
-
if (url.protocol === "http:" && LOOPBACK_AUTHORIZATION_HOSTS.has(url.hostname)) {
|
|
392
|
+
let url = new URL(value);
|
|
393
|
+
if (url.protocol === "https:" || url.protocol === "http:" && LOOPBACK_AUTHORIZATION_HOSTS.has(url.hostname))
|
|
530
394
|
return url.toString();
|
|
531
|
-
}
|
|
532
395
|
} catch {
|
|
533
396
|
}
|
|
534
397
|
return null;
|
|
535
398
|
}
|
|
536
399
|
function detectMobileMoneyProvider(phoneNumber) {
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
if (info.prefix.some((p) => p.slice(1) === networkCode)) {
|
|
400
|
+
let networkCode = phoneNumber.replace(/\D/g, "").slice(-9, -7);
|
|
401
|
+
for (let [provider, info] of Object.entries(MOBILE_MONEY_PROVIDERS))
|
|
402
|
+
if (info.prefix.some((p) => p.slice(1) === networkCode))
|
|
541
403
|
return provider;
|
|
542
|
-
}
|
|
543
|
-
}
|
|
544
404
|
return null;
|
|
545
405
|
}
|
|
546
406
|
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { loadEngineRuntime, enginePlatformOf } from './chunk-GHS6MIL6.mjs';
|
|
2
|
+
|
|
3
|
+
// src/game/conformance/engine-platform.ts
|
|
4
|
+
var FS_MODULE = "node:fs/promises";
|
|
5
|
+
async function load(file) {
|
|
6
|
+
let bytes = await (await import(
|
|
7
|
+
/* @vite-ignore */
|
|
8
|
+
FS_MODULE
|
|
9
|
+
)).readFile(file);
|
|
10
|
+
return enginePlatformOf(await loadEngineRuntime(bytes));
|
|
11
|
+
}
|
|
12
|
+
function bytesFramePlatform(bytes) {
|
|
13
|
+
let platform = null;
|
|
14
|
+
return {
|
|
15
|
+
engine: () => (platform ?? (platform = loadEngineRuntime(bytes).then(enginePlatformOf)), platform)
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function engineFramePlatform(file) {
|
|
19
|
+
let platform = null;
|
|
20
|
+
return {
|
|
21
|
+
engine: () => (platform ?? (platform = load(file)), platform)
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// src/game/conformance/heap.ts
|
|
26
|
+
var V8_MODULE = "node:v8", YOUNG_SPACE = "new_space", GC_ENTRY = "gc", SETTLE_DELAY_MS = 0, MEASURE_WINDOW_FRAMES = 500, MAX_REGULAR_OBJECT_BYTES = 131072, OBJECT_HEADER_BYTES = 64, CALIBRATION_ELEMENTS = 1024, ALIGNED_WINDOWS = 16, STEADY_BLOCKS = 8, STEADY_BLOCK_FRAMES = 2e3, alignmentSink = [];
|
|
27
|
+
function elementBytes(young) {
|
|
28
|
+
let start = young(), probe = new Array((1024)).fill(0), filled = young(), empty = young();
|
|
29
|
+
return alignmentSink = probe, Math.max(1, Math.round((filled - start - (empty - filled)) / (1024)));
|
|
30
|
+
}
|
|
31
|
+
function isV8(value) {
|
|
32
|
+
return typeof value == "object" && value !== null && typeof Reflect.get(value, "getHeapSpaceStatistics") == "function";
|
|
33
|
+
}
|
|
34
|
+
async function createNodeHeapMeter() {
|
|
35
|
+
let v8;
|
|
36
|
+
try {
|
|
37
|
+
v8 = await import(
|
|
38
|
+
/* @vite-ignore */
|
|
39
|
+
V8_MODULE
|
|
40
|
+
);
|
|
41
|
+
} catch {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
if (!isV8(v8)) return null;
|
|
45
|
+
let stats = v8, youngBytes = () => {
|
|
46
|
+
let spaces = stats.getHeapSpaceStatistics();
|
|
47
|
+
for (let i = 0; i < spaces.length; i++) if (spaces[i].space_name === YOUNG_SPACE) return spaces[i].space_used_size;
|
|
48
|
+
return 0;
|
|
49
|
+
}, halfPage = Math.floor(((131072) - (64)) / elementBytes(youngBytes)), Observer = Reflect.get(globalThis, "PerformanceObserver"), gcCount = 0, gcStarts = [], observer = null;
|
|
50
|
+
if (Observer) {
|
|
51
|
+
observer = new Observer((list) => {
|
|
52
|
+
let entries = list.getEntries();
|
|
53
|
+
gcCount += entries.length;
|
|
54
|
+
for (let i = 0; i < entries.length; i++) gcStarts.push(entries[i].startTime);
|
|
55
|
+
});
|
|
56
|
+
try {
|
|
57
|
+
observer.observe({ entryTypes: [GC_ENTRY] });
|
|
58
|
+
} catch {
|
|
59
|
+
observer = null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
name: "v8-young-space",
|
|
64
|
+
youngBytes,
|
|
65
|
+
align() {
|
|
66
|
+
let first = new Array(halfPage).fill(0);
|
|
67
|
+
alignmentSink = new Array(halfPage).fill(0), alignmentSink[0] = first;
|
|
68
|
+
},
|
|
69
|
+
collections() {
|
|
70
|
+
return gcCount;
|
|
71
|
+
},
|
|
72
|
+
collectionsBetween(start, end) {
|
|
73
|
+
let count = 0;
|
|
74
|
+
for (let i = 0; i < gcStarts.length; i++) gcStarts[i] >= start && gcStarts[i] <= end && count++;
|
|
75
|
+
return count;
|
|
76
|
+
},
|
|
77
|
+
settle() {
|
|
78
|
+
return new Promise((resolve) => setTimeout(resolve, (0)));
|
|
79
|
+
},
|
|
80
|
+
dispose() {
|
|
81
|
+
observer?.disconnect();
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
var INSPECTOR_MODULE = "node:inspector/promises", SAMPLING_INTERVAL_BYTES = 16, DEFAULT_SITES = 8, FULL_COLLECTIONS = 2;
|
|
86
|
+
function frameName(frame) {
|
|
87
|
+
let file = frame.url.slice(frame.url.lastIndexOf("/") + 1);
|
|
88
|
+
return `${frame.functionName || "(anonymous)"} ${file}:${frame.lineNumber + 1}`;
|
|
89
|
+
}
|
|
90
|
+
function collectSites(node, path, out) {
|
|
91
|
+
if (path.push(frameName(node.callFrame)), node.selfSize > 0) {
|
|
92
|
+
let key = path.slice(-4).join(" < ");
|
|
93
|
+
out.set(key, (out.get(key) ?? 0) + node.selfSize);
|
|
94
|
+
}
|
|
95
|
+
for (let child of node.children) collectSites(child, path, out);
|
|
96
|
+
path.pop();
|
|
97
|
+
}
|
|
98
|
+
async function collectGarbage() {
|
|
99
|
+
let Session;
|
|
100
|
+
try {
|
|
101
|
+
let inspector = await import(
|
|
102
|
+
/* @vite-ignore */
|
|
103
|
+
INSPECTOR_MODULE
|
|
104
|
+
);
|
|
105
|
+
Session = Reflect.get(inspector, "Session");
|
|
106
|
+
} catch {
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
let session = new Session();
|
|
110
|
+
session.connect();
|
|
111
|
+
try {
|
|
112
|
+
for (let i = 0; i < (2); i++) await session.post("HeapProfiler.collectGarbage");
|
|
113
|
+
return !0;
|
|
114
|
+
} finally {
|
|
115
|
+
session.disconnect();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function collectYoung() {
|
|
119
|
+
let gc = Reflect.get(globalThis, "gc");
|
|
120
|
+
return typeof gc != "function" ? false : (gc({ type: "minor", execution: "sync" }), true);
|
|
121
|
+
}
|
|
122
|
+
async function warmUp(frames, frame) {
|
|
123
|
+
let half = frames >> 1;
|
|
124
|
+
for (let i = 0; i < half; i++) frame(i);
|
|
125
|
+
await collectGarbage();
|
|
126
|
+
for (let i = half; i < frames; i++) frame(i);
|
|
127
|
+
}
|
|
128
|
+
async function profileAllocationSites(frames, frame, limit = (8)) {
|
|
129
|
+
let Session;
|
|
130
|
+
try {
|
|
131
|
+
let inspector = await import(
|
|
132
|
+
/* @vite-ignore */
|
|
133
|
+
INSPECTOR_MODULE
|
|
134
|
+
);
|
|
135
|
+
Session = Reflect.get(inspector, "Session");
|
|
136
|
+
} catch {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
let session = new Session();
|
|
140
|
+
session.connect();
|
|
141
|
+
try {
|
|
142
|
+
await session.post("HeapProfiler.startSampling", {
|
|
143
|
+
samplingInterval: (16),
|
|
144
|
+
includeObjectsCollectedByMajorGC: !0,
|
|
145
|
+
includeObjectsCollectedByMinorGC: !0
|
|
146
|
+
});
|
|
147
|
+
for (let i = 0; i < frames; i++) frame(i);
|
|
148
|
+
let result = await session.post("HeapProfiler.stopSampling"), sites = /* @__PURE__ */ new Map();
|
|
149
|
+
return collectSites(result.profile.head, [], sites), [...sites.entries()].sort((a, b) => b[1] - a[1]).slice(0, limit).map(([stack, bytes]) => ({ stack, bytes }));
|
|
150
|
+
} finally {
|
|
151
|
+
session.disconnect();
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
async function measureAllocations(meter, frames, frame) {
|
|
155
|
+
await meter.settle(), meter.align?.();
|
|
156
|
+
let gcBefore = meter.collections(), opened = performance.now(), bytes = 0, measured = 0, windows = 0;
|
|
157
|
+
for (let start = 0; start < frames; start += (500)) {
|
|
158
|
+
windows > 0 && windows % (16) === 0 && meter.align?.(), windows++;
|
|
159
|
+
let end = Math.min(frames, start + (500)), lead = meter.youngBytes(), before = meter.youngBytes();
|
|
160
|
+
for (let i = start; i < end; i++) frame(i);
|
|
161
|
+
let after = meter.youngBytes(), tail = meter.youngBytes(), leading = before - lead, trailing = tail - after, overhead = leading > trailing ? leading : trailing, delta = after - before - (overhead > 0 ? overhead : 0);
|
|
162
|
+
after < before || (bytes += delta > 0 ? delta : 0, measured += end - start);
|
|
163
|
+
}
|
|
164
|
+
let closed = performance.now();
|
|
165
|
+
await meter.settle();
|
|
166
|
+
let collections = meter.collectionsBetween ? meter.collectionsBetween(opened, closed) : meter.collections() - gcBefore, perFrame = measured > 0 ? bytes / measured : 0;
|
|
167
|
+
return { frames, bytes: perFrame * frames, bytesPerFrame: perFrame, collections };
|
|
168
|
+
}
|
|
169
|
+
async function measureSteadyAllocations(meter, frames, frame) {
|
|
170
|
+
let start = 0;
|
|
171
|
+
for (let block = 0; block < (8); block++) {
|
|
172
|
+
let from = start, settled = await measureAllocations(meter, (2e3), (i) => frame(from + i));
|
|
173
|
+
if (start += (2e3), settled.bytes === 0 && settled.collections === 0) break;
|
|
174
|
+
}
|
|
175
|
+
return measureAllocations(meter, frames, (i) => frame(start + i));
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
export { bytesFramePlatform, collectGarbage, collectYoung, createNodeHeapMeter, engineFramePlatform, measureAllocations, measureSteadyAllocations, profileAllocationSites, warmUp };
|