gemi 0.115.0 → 0.117.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/index.js +2 -2
- package/dist/ai/index.js.map +1 -1
- package/dist/app/index.js +2 -2
- package/dist/app/index.js.map +1 -1
- package/dist/auth/AuthServiceProvider.d.ts.map +1 -1
- package/dist/auth/config.d.ts +27 -0
- package/dist/auth/config.d.ts.map +1 -1
- package/dist/auth/connections/ConnectionManager.d.ts +133 -0
- package/dist/auth/connections/ConnectionManager.d.ts.map +1 -0
- package/dist/auth/connections/ConnectionStore.d.ts +146 -0
- package/dist/auth/connections/ConnectionStore.d.ts.map +1 -0
- package/dist/auth/connections/ConnectionsController.d.ts +23 -0
- package/dist/auth/connections/ConnectionsController.d.ts.map +1 -0
- package/dist/auth/connections/OAuthConnectionProvider.d.ts +105 -0
- package/dist/auth/connections/OAuthConnectionProvider.d.ts.map +1 -0
- package/dist/auth/connections/errors.d.ts +32 -0
- package/dist/auth/connections/errors.d.ts.map +1 -0
- package/dist/auth/oauth/oauthState.d.ts +15 -2
- package/dist/auth/oauth/oauthState.d.ts.map +1 -1
- package/dist/auth/routes.d.ts +13 -0
- package/dist/auth/routes.d.ts.map +1 -1
- package/dist/bin/orm/emit.d.ts.map +1 -1
- package/dist/bin/orm-generator.js +51 -4
- package/dist/bin/orm-generator.js.map +4 -4
- package/dist/bun/plugin.js +2 -2
- package/dist/bun/plugin.js.map +1 -1
- package/dist/bun/preload.js +2 -2
- package/dist/bun/preload.js.map +1 -1
- package/dist/chunk-00n3gwr8.js +71 -0
- package/dist/chunk-00n3gwr8.js.map +13 -0
- package/dist/{chunk-t4yh4nf9.js → chunk-076jezzg.js} +3 -3
- package/dist/{chunk-t4yh4nf9.js.map → chunk-076jezzg.js.map} +1 -1
- package/dist/{chunk-qjhw8nje.js → chunk-077rea02.js} +1 -1
- package/dist/{chunk-0av6xvm6.js → chunk-1ckha5dt.js} +3 -3
- package/dist/{chunk-0av6xvm6.js.map → chunk-1ckha5dt.js.map} +1 -1
- package/dist/{chunk-mschc94q.js → chunk-1zzd39qg.js} +2 -2
- package/dist/{chunk-mschc94q.js.map → chunk-1zzd39qg.js.map} +1 -1
- package/dist/{chunk-5stgtwqw.js → chunk-2bja99cq.js} +2 -2
- package/dist/{chunk-5stgtwqw.js.map → chunk-2bja99cq.js.map} +1 -1
- package/dist/chunk-2czfefn2.js +10 -0
- package/dist/{chunk-t4t3hqe0.js.map → chunk-2czfefn2.js.map} +5 -4
- package/dist/{chunk-aazmrxj9.js → chunk-37pk2cjg.js} +2 -2
- package/dist/{chunk-aazmrxj9.js.map → chunk-37pk2cjg.js.map} +1 -1
- package/dist/{chunk-qsrcdzan.js → chunk-3w4hk6q2.js} +3 -3
- package/dist/{chunk-qsrcdzan.js.map → chunk-3w4hk6q2.js.map} +1 -1
- package/dist/chunk-51w202vr.js +5 -0
- package/dist/{chunk-whtzggn6.js.map → chunk-51w202vr.js.map} +3 -4
- package/dist/{chunk-0z8ejxre.js → chunk-5m8vvtvn.js} +3 -3
- package/dist/{chunk-0z8ejxre.js.map → chunk-5m8vvtvn.js.map} +1 -1
- package/dist/{chunk-jafm3613.js → chunk-5p4z1fgc.js} +2 -2
- package/dist/{chunk-jafm3613.js.map → chunk-5p4z1fgc.js.map} +1 -1
- package/dist/{chunk-kejwjerj.js → chunk-5w6kyxsj.js} +2 -2
- package/dist/{chunk-kejwjerj.js.map → chunk-5w6kyxsj.js.map} +1 -1
- package/dist/{chunk-pyk3gzvc.js → chunk-62jw0vsf.js} +2 -2
- package/dist/{chunk-pyk3gzvc.js.map → chunk-62jw0vsf.js.map} +1 -1
- package/dist/chunk-63ewmmhc.js +5 -0
- package/dist/{chunk-t24p7gc6.js.map → chunk-63ewmmhc.js.map} +1 -1
- package/dist/{chunk-p1aqq0ga.js → chunk-6ggmk2eg.js} +3 -3
- package/dist/{chunk-p1aqq0ga.js.map → chunk-6ggmk2eg.js.map} +1 -1
- package/dist/{chunk-2tzm58j3.js → chunk-6y4nk9f1.js} +2 -2
- package/dist/{chunk-2tzm58j3.js.map → chunk-6y4nk9f1.js.map} +1 -1
- package/dist/{chunk-1hr4xht1.js → chunk-8gtc3s1y.js} +2 -2
- package/dist/{chunk-1hr4xht1.js.map → chunk-8gtc3s1y.js.map} +1 -1
- package/dist/{chunk-frerzsxq.js → chunk-a22h5cby.js} +2 -2
- package/dist/{chunk-frerzsxq.js.map → chunk-a22h5cby.js.map} +1 -1
- package/dist/{chunk-zyt2w03d.js → chunk-a32wfzdq.js} +2 -2
- package/dist/{chunk-zyt2w03d.js.map → chunk-a32wfzdq.js.map} +1 -1
- package/dist/{chunk-t04f3akb.js → chunk-a77586gv.js} +2 -2
- package/dist/{chunk-t04f3akb.js.map → chunk-a77586gv.js.map} +1 -1
- package/dist/chunk-a7r39713.js +5 -0
- package/dist/chunk-a7r39713.js.map +10 -0
- package/dist/{chunk-vxm6yevm.js → chunk-arwmvgrz.js} +2 -2
- package/dist/{chunk-vxm6yevm.js.map → chunk-arwmvgrz.js.map} +1 -1
- package/dist/{chunk-41da9628.js → chunk-bvqae0px.js} +1 -1
- package/dist/{chunk-d9mar37g.js → chunk-c2n6zdyd.js} +2 -2
- package/dist/{chunk-d9mar37g.js.map → chunk-c2n6zdyd.js.map} +1 -1
- package/dist/{chunk-56jky6vf.js → chunk-cytss9mb.js} +2 -2
- package/dist/{chunk-56jky6vf.js.map → chunk-cytss9mb.js.map} +1 -1
- package/dist/{chunk-vw8849ys.js → chunk-dcgvq79a.js} +2 -2
- package/dist/{chunk-m54s6jpr.js.map → chunk-dcgvq79a.js.map} +1 -1
- package/dist/{chunk-6chz1ktz.js → chunk-de4t48j9.js} +3 -3
- package/dist/{chunk-6chz1ktz.js.map → chunk-de4t48j9.js.map} +1 -1
- package/dist/{chunk-cbqazg9k.js → chunk-dz99g58c.js} +2 -2
- package/dist/{chunk-cbqazg9k.js.map → chunk-dz99g58c.js.map} +1 -1
- package/dist/{chunk-e573yxpq.js → chunk-e7ezmag9.js} +3 -3
- package/dist/{chunk-e573yxpq.js.map → chunk-e7ezmag9.js.map} +1 -1
- package/dist/{chunk-yer1r3t3.js → chunk-epvpmakp.js} +2 -2
- package/dist/{chunk-yer1r3t3.js.map → chunk-epvpmakp.js.map} +1 -1
- package/dist/{chunk-yhrye9cm.js → chunk-f8vcwzgd.js} +2 -2
- package/dist/{chunk-yhrye9cm.js.map → chunk-f8vcwzgd.js.map} +1 -1
- package/dist/chunk-fa37qzm3.js +5 -0
- package/dist/chunk-fa37qzm3.js.map +12 -0
- package/dist/{chunk-fxgxf16k.js → chunk-ffgmqwzy.js} +2 -2
- package/dist/{chunk-fxgxf16k.js.map → chunk-ffgmqwzy.js.map} +1 -1
- package/dist/{chunk-er3wf6ng.js → chunk-fk6nxhxn.js} +2 -2
- package/dist/{chunk-er3wf6ng.js.map → chunk-fk6nxhxn.js.map} +1 -1
- package/dist/{chunk-3hrj5rwm.js → chunk-fnwbbmnk.js} +2 -2
- package/dist/{chunk-3hrj5rwm.js.map → chunk-fnwbbmnk.js.map} +1 -1
- package/dist/chunk-g2wncay4.js +9 -0
- package/dist/{chunk-hytt9qyj.js.map → chunk-g2wncay4.js.map} +3 -4
- package/dist/{chunk-gts5p6mw.js → chunk-ge9xjwgq.js} +4 -4
- package/dist/{chunk-gts5p6mw.js.map → chunk-ge9xjwgq.js.map} +1 -1
- package/dist/{chunk-tw5kwbx4.js → chunk-gjy2qjcr.js} +2 -2
- package/dist/{chunk-tw5kwbx4.js.map → chunk-gjy2qjcr.js.map} +1 -1
- package/dist/{chunk-15c2vgaf.js → chunk-gn7kne7r.js} +2 -2
- package/dist/{chunk-15c2vgaf.js.map → chunk-gn7kne7r.js.map} +1 -1
- package/dist/{chunk-9n1hx3mq.js → chunk-hr61ekcr.js} +3 -3
- package/dist/{chunk-9n1hx3mq.js.map → chunk-hr61ekcr.js.map} +1 -1
- package/dist/{chunk-m54s6jpr.js → chunk-hvgmqt6z.js} +2 -2
- package/dist/{chunk-vw8849ys.js.map → chunk-hvgmqt6z.js.map} +1 -1
- package/dist/{chunk-aeh67ynz.js → chunk-hvpn18bb.js} +3 -3
- package/dist/{chunk-aeh67ynz.js.map → chunk-hvpn18bb.js.map} +1 -1
- package/dist/{chunk-jdhdrr2k.js → chunk-j1453bn1.js} +2 -2
- package/dist/{chunk-jdhdrr2k.js.map → chunk-j1453bn1.js.map} +1 -1
- package/dist/{chunk-tn2bryy2.js → chunk-jpetnpzn.js} +2 -2
- package/dist/{chunk-tn2bryy2.js.map → chunk-jpetnpzn.js.map} +1 -1
- package/dist/{chunk-mtbygktb.js → chunk-jqrs16g2.js} +3 -3
- package/dist/{chunk-mtbygktb.js.map → chunk-jqrs16g2.js.map} +1 -1
- package/dist/{chunk-4mfrgd5m.js → chunk-kk77x2v4.js} +2 -2
- package/dist/{chunk-4mfrgd5m.js.map → chunk-kk77x2v4.js.map} +1 -1
- package/dist/chunk-kpn7f58a.js +14 -0
- package/dist/{chunk-dexdkh3z.js.map → chunk-kpn7f58a.js.map} +11 -6
- package/dist/chunk-mhteg4yz.js +57 -0
- package/dist/{chunk-d6591xck.js.map → chunk-mhteg4yz.js.map} +16 -12
- package/dist/{chunk-n672d4g8.js → chunk-n9jyjp4a.js} +2 -2
- package/dist/{chunk-n672d4g8.js.map → chunk-n9jyjp4a.js.map} +1 -1
- package/dist/{chunk-vbdty91k.js → chunk-nb2gggba.js} +3 -3
- package/dist/{chunk-vbdty91k.js.map → chunk-nb2gggba.js.map} +1 -1
- package/dist/chunk-ntxsdchf.js +50 -0
- package/dist/chunk-ntxsdchf.js.map +10 -0
- package/dist/{chunk-2z1981d0.js → chunk-pepzecrm.js} +2 -2
- package/dist/{chunk-2z1981d0.js.map → chunk-pepzecrm.js.map} +1 -1
- package/dist/{chunk-785b41h1.js → chunk-pgy3mfxw.js} +3 -3
- package/dist/{chunk-785b41h1.js.map → chunk-pgy3mfxw.js.map} +1 -1
- package/dist/{chunk-98m15b9x.js → chunk-qhw0hej0.js} +2 -2
- package/dist/{chunk-98m15b9x.js.map → chunk-qhw0hej0.js.map} +1 -1
- package/dist/{chunk-303mprnv.js → chunk-r3v2cnrj.js} +2 -2
- package/dist/{chunk-303mprnv.js.map → chunk-r3v2cnrj.js.map} +1 -1
- package/dist/{chunk-ktr3k768.js → chunk-rhmpphhc.js} +3 -3
- package/dist/{chunk-ktr3k768.js.map → chunk-rhmpphhc.js.map} +1 -1
- package/dist/{chunk-fre6f4nk.js → chunk-s4f56035.js} +2 -2
- package/dist/{chunk-fre6f4nk.js.map → chunk-s4f56035.js.map} +1 -1
- package/dist/{chunk-sr942vb1.js → chunk-sj4f7x4p.js} +2 -2
- package/dist/{chunk-sr942vb1.js.map → chunk-sj4f7x4p.js.map} +1 -1
- package/dist/{chunk-wyw6p3fg.js → chunk-sksmnjkn.js} +3 -3
- package/dist/{chunk-wyw6p3fg.js.map → chunk-sksmnjkn.js.map} +1 -1
- package/dist/{chunk-kqxdsv22.js → chunk-stnd9qht.js} +2 -2
- package/dist/{chunk-kqxdsv22.js.map → chunk-stnd9qht.js.map} +1 -1
- package/dist/{chunk-1myhm0g3.js → chunk-t65074mw.js} +3 -3
- package/dist/{chunk-1myhm0g3.js.map → chunk-t65074mw.js.map} +1 -1
- package/dist/chunk-t87w4h84.js +24 -0
- package/dist/{chunk-wzrt5mac.js.map → chunk-t87w4h84.js.map} +2 -2
- package/dist/{chunk-z10cas5r.js → chunk-thz75w6e.js} +2 -2
- package/dist/{chunk-z10cas5r.js.map → chunk-thz75w6e.js.map} +1 -1
- package/dist/{chunk-xt9tv99x.js → chunk-v8vnxkvp.js} +2 -2
- package/dist/{chunk-xt9tv99x.js.map → chunk-v8vnxkvp.js.map} +1 -1
- package/dist/{chunk-x7cpth2f.js → chunk-veq07rp8.js} +1 -1
- package/dist/{chunk-agyfv3f8.js → chunk-vj5necm0.js} +1 -1
- package/dist/{chunk-mps6ynbh.js → chunk-vtc23xpk.js} +2 -2
- package/dist/{chunk-mps6ynbh.js.map → chunk-vtc23xpk.js.map} +1 -1
- package/dist/{chunk-jmpw6bqz.js → chunk-w4e480he.js} +2 -2
- package/dist/{chunk-jmpw6bqz.js.map → chunk-w4e480he.js.map} +1 -1
- package/dist/{chunk-8rv62v14.js → chunk-wgb79ysr.js} +2 -2
- package/dist/{chunk-8rv62v14.js.map → chunk-wgb79ysr.js.map} +1 -1
- package/dist/{chunk-1vzks22y.js → chunk-wk1tp1f1.js} +2 -2
- package/dist/{chunk-1vzks22y.js.map → chunk-wk1tp1f1.js.map} +1 -1
- package/dist/{chunk-bra1a1fq.js → chunk-wwdbgshx.js} +2 -2
- package/dist/{chunk-bra1a1fq.js.map → chunk-wwdbgshx.js.map} +1 -1
- package/dist/{chunk-eqse2m6n.js → chunk-wzzrz612.js} +2 -2
- package/dist/{chunk-eqse2m6n.js.map → chunk-wzzrz612.js.map} +1 -1
- package/dist/{chunk-hdps9n52.js → chunk-x7qwx07b.js} +3 -3
- package/dist/{chunk-hdps9n52.js.map → chunk-x7qwx07b.js.map} +1 -1
- package/dist/chunk-x84as3vy.js +5 -0
- package/dist/chunk-x84as3vy.js.map +12 -0
- package/dist/chunk-y0en07zh.js +302 -0
- package/dist/chunk-y0en07zh.js.map +17 -0
- package/dist/{chunk-d2gfcf85.js → chunk-yfwrbfnw.js} +2 -2
- package/dist/{chunk-d2gfcf85.js.map → chunk-yfwrbfnw.js.map} +1 -1
- package/dist/{chunk-mazznq15.js → chunk-yhp6bvhj.js} +3 -3
- package/dist/{chunk-mazznq15.js.map → chunk-yhp6bvhj.js.map} +1 -1
- package/dist/{chunk-tzm3c7n6.js → chunk-yvtmygrk.js} +4 -4
- package/dist/{chunk-tzm3c7n6.js.map → chunk-yvtmygrk.js.map} +1 -1
- package/dist/{chunk-mqfzdfnz.js → chunk-zkjs3m5m.js} +2 -2
- package/dist/{chunk-mqfzdfnz.js.map → chunk-zkjs3m5m.js.map} +1 -1
- package/dist/chunk-zw6843j3.js +5 -0
- package/dist/chunk-zw6843j3.js.map +12 -0
- package/dist/chunks/{ThemeProvider-BgLyzzOL.js → ThemeProvider-BLI4zpLu.js} +8 -3
- package/dist/chunks/ThemeProvider-BLI4zpLu.js.map +1 -0
- package/dist/client/ClientRouter.d.ts +3 -5
- package/dist/client/ClientRouter.d.ts.map +1 -1
- package/dist/client/ClientRouterContext.d.ts.map +1 -1
- package/dist/client/Head.d.ts +1 -1
- package/dist/client/Head.d.ts.map +1 -1
- package/dist/client/ServerDataProvider.d.ts +2 -0
- package/dist/client/ServerDataProvider.d.ts.map +1 -1
- package/dist/client/createRoot.d.ts +2 -4
- package/dist/client/createRoot.d.ts.map +1 -1
- package/dist/client/fonts.d.ts +69 -0
- package/dist/client/fonts.d.ts.map +1 -0
- package/dist/client/htmlAttributes.d.ts +18 -0
- package/dist/client/htmlAttributes.d.ts.map +1 -0
- package/dist/client/index.d.ts +2 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +153 -6
- package/dist/client/index.js.map +1 -1
- package/dist/config/index.js +1 -1
- package/dist/console/builtins.d.ts +13 -0
- package/dist/console/builtins.d.ts.map +1 -0
- package/dist/console/run.js +13 -11
- package/dist/console/run.js.map +6 -5
- package/dist/console/runner.d.ts.map +1 -1
- package/dist/console/usage.d.ts +2 -0
- package/dist/console/usage.d.ts.map +1 -1
- package/dist/container/index.js +2 -2
- package/dist/container/index.js.map +1 -1
- package/dist/database/index.js +2 -2
- package/dist/database/index.js.map +1 -1
- package/dist/email/index.js +2 -2
- package/dist/email/index.js.map +1 -1
- package/dist/facades/Connections.d.ts +36 -0
- package/dist/facades/Connections.d.ts.map +1 -0
- package/dist/facades/Crypt.d.ts +26 -0
- package/dist/facades/Crypt.d.ts.map +1 -0
- package/dist/facades/Meta.d.ts +17 -1
- package/dist/facades/Meta.d.ts.map +1 -1
- package/dist/facades/Storage.d.ts +29 -0
- package/dist/facades/Storage.d.ts.map +1 -1
- package/dist/facades/index.d.ts +2 -0
- package/dist/facades/index.d.ts.map +1 -1
- package/dist/facades/index.js +2 -2
- package/dist/facades/index.js.map +1 -1
- package/dist/foundation/index.js +2 -2
- package/dist/foundation/index.js.map +1 -1
- package/dist/http/HttpRequest.d.ts +4 -0
- package/dist/http/HttpRequest.d.ts.map +1 -1
- package/dist/http/Metadata.d.ts +28 -0
- package/dist/http/Metadata.d.ts.map +1 -1
- package/dist/http/index.d.ts +3 -1
- package/dist/http/index.d.ts.map +1 -1
- package/dist/http/index.js +2 -2
- package/dist/http/index.js.map +1 -1
- package/dist/http/requestContext.d.ts +4 -0
- package/dist/http/requestContext.d.ts.map +1 -1
- package/dist/http/safeFetch/errors.d.ts +10 -0
- package/dist/http/safeFetch/errors.d.ts.map +1 -1
- package/dist/http/safeFetch/index.d.ts +1 -1
- package/dist/http/safeFetch/index.d.ts.map +1 -1
- package/dist/http/sitemap/Robots.d.ts +95 -0
- package/dist/http/sitemap/Robots.d.ts.map +1 -0
- package/dist/http/sitemap/Sitemap.d.ts +145 -0
- package/dist/http/sitemap/Sitemap.d.ts.map +1 -0
- package/dist/http/sitemap/fetchText.d.ts +16 -0
- package/dist/http/sitemap/fetchText.d.ts.map +1 -0
- package/dist/http/sitemap/index.d.ts +3 -0
- package/dist/http/sitemap/index.d.ts.map +1 -0
- package/dist/http/sitemap/xml.d.ts +21 -0
- package/dist/http/sitemap/xml.d.ts.map +1 -0
- package/dist/i18n/Translator.d.ts.map +1 -1
- package/dist/i18n/dictionaryRuntime.js +2 -2
- package/dist/i18n/dictionaryRuntime.js.map +1 -1
- package/dist/i18n/index.d.ts +1 -0
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +2 -2
- package/dist/i18n/index.js.map +2 -2
- package/dist/i18n/resolveLocale.d.ts +18 -0
- package/dist/i18n/resolveLocale.d.ts.map +1 -1
- package/dist/kernel/index.js +3 -3
- package/dist/kernel/index.js.map +3 -3
- package/dist/kernel/providers.d.ts +2 -2
- package/dist/kernel/providers.d.ts.map +1 -1
- package/dist/orm/Model.d.ts.map +1 -1
- package/dist/orm/encryption-rotate.d.ts +44 -0
- package/dist/orm/encryption-rotate.d.ts.map +1 -0
- package/dist/orm/encryption.d.ts +54 -0
- package/dist/orm/encryption.d.ts.map +1 -0
- package/dist/orm/index.d.ts +2 -0
- package/dist/orm/index.d.ts.map +1 -1
- package/dist/orm/index.js +3 -3
- package/dist/orm/index.js.map +4 -4
- package/dist/orm/schema.d.ts +25 -1
- package/dist/orm/schema.d.ts.map +1 -1
- package/dist/server/index.js +2 -2
- package/dist/server/index.js.map +1 -1
- package/dist/services/encryption/Encrypter.d.ts +86 -0
- package/dist/services/encryption/Encrypter.d.ts.map +1 -0
- package/dist/services/encryption/EncryptionServiceProvider.d.ts +13 -0
- package/dist/services/encryption/EncryptionServiceProvider.d.ts.map +1 -0
- package/dist/services/encryption/config.d.ts +36 -0
- package/dist/services/encryption/config.d.ts.map +1 -0
- package/dist/services/file-storage/drivers/FileStorageDriver.d.ts +12 -1
- package/dist/services/file-storage/drivers/FileStorageDriver.d.ts.map +1 -1
- package/dist/services/file-storage/drivers/FileSystemDriver.d.ts +8 -1
- package/dist/services/file-storage/drivers/FileSystemDriver.d.ts.map +1 -1
- package/dist/services/file-storage/drivers/types.d.ts +17 -0
- package/dist/services/file-storage/drivers/types.d.ts.map +1 -1
- package/dist/services/file-storage/putFromUrl.d.ts +56 -0
- package/dist/services/file-storage/putFromUrl.d.ts.map +1 -0
- package/dist/services/file-storage/sniffContentType.d.ts +33 -0
- package/dist/services/file-storage/sniffContentType.d.ts.map +1 -0
- package/dist/services/index.d.ts +19 -5
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +10 -10
- package/dist/services/index.js.map +4 -3
- package/dist/services/queue/DatabaseQueueDriver.d.ts +96 -7
- package/dist/services/queue/DatabaseQueueDriver.d.ts.map +1 -1
- package/dist/services/queue/Job.d.ts +72 -0
- package/dist/services/queue/Job.d.ts.map +1 -1
- package/dist/services/queue/MemoryQueueDriver.d.ts +22 -2
- package/dist/services/queue/MemoryQueueDriver.d.ts.map +1 -1
- package/dist/services/queue/QueueDriver.d.ts +74 -1
- package/dist/services/queue/QueueDriver.d.ts.map +1 -1
- package/dist/services/queue/QueueManager.d.ts +47 -0
- package/dist/services/queue/QueueManager.d.ts.map +1 -1
- package/dist/services/queue/batch.d.ts +112 -0
- package/dist/services/queue/batch.d.ts.map +1 -0
- package/dist/services/queue/queueDriverContract.d.ts +5 -0
- package/dist/services/queue/queueDriverContract.d.ts.map +1 -1
- package/dist/services/queue/work.js +2 -2
- package/dist/services/queue/work.js.map +1 -1
- package/dist/services/router/ViewRouteDispatcher.d.ts +3 -1
- package/dist/services/router/ViewRouteDispatcher.d.ts.map +1 -1
- package/dist/services/router/config.d.ts +19 -0
- package/dist/services/router/config.d.ts.map +1 -1
- package/dist/stats/route-table.js +1 -1
- package/dist/support/index.js +2 -2
- package/dist/support/index.js.map +1 -1
- package/dist/testing/index.js +1 -1
- package/dist/vitest/index.js +2 -2
- package/dist/vitest/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-7g9yh5ae.js +0 -5
- package/dist/chunk-7g9yh5ae.js.map +0 -12
- package/dist/chunk-7vb4eey2.js +0 -217
- package/dist/chunk-7vb4eey2.js.map +0 -16
- package/dist/chunk-9b4erdy2.js +0 -5
- package/dist/chunk-9b4erdy2.js.map +0 -11
- package/dist/chunk-d6591xck.js +0 -46
- package/dist/chunk-dexdkh3z.js +0 -14
- package/dist/chunk-hytt9qyj.js +0 -54
- package/dist/chunk-t24p7gc6.js +0 -5
- package/dist/chunk-t4t3hqe0.js +0 -10
- package/dist/chunk-whtzggn6.js +0 -5
- package/dist/chunk-wzrt5mac.js +0 -24
- package/dist/chunks/ThemeProvider-BgLyzzOL.js.map +0 -1
- /package/dist/{chunk-qjhw8nje.js.map → chunk-077rea02.js.map} +0 -0
- /package/dist/{chunk-41da9628.js.map → chunk-bvqae0px.js.map} +0 -0
- /package/dist/{chunk-x7cpth2f.js.map → chunk-veq07rp8.js.map} +0 -0
- /package/dist/{chunk-agyfv3f8.js.map → chunk-vj5necm0.js.map} +0 -0
|
@@ -10,10 +10,10 @@
|
|
|
10
10
|
"\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar chunk_IH6S2YZX_exports = {};\n__export(chunk_IH6S2YZX_exports, {\n generatorHandler: () => generatorHandler\n});\nmodule.exports = __toCommonJS(chunk_IH6S2YZX_exports);\nvar import_chunk_EOPVK4AE = require(\"./chunk-EOPVK4AE.js\");\nfunction generatorHandler(handler) {\n (0, import_chunk_EOPVK4AE.byline)(process.stdin).on(\"data\", async (line) => {\n const json = JSON.parse(String(line));\n if (json.method === \"generate\" && json.params) {\n try {\n const result = await handler.onGenerate(json.params);\n respond({\n jsonrpc: \"2.0\",\n result,\n id: json.id\n });\n } catch (_e) {\n const e = _e;\n respond({\n jsonrpc: \"2.0\",\n error: {\n code: -32e3,\n message: e.message,\n data: {\n stack: e.stack\n }\n },\n id: json.id\n });\n }\n }\n if (json.method === \"getManifest\") {\n if (handler.onManifest) {\n try {\n const manifest = await handler.onManifest(json.params);\n respond({\n jsonrpc: \"2.0\",\n result: {\n manifest\n },\n id: json.id\n });\n } catch (_e) {\n const e = _e;\n respond({\n jsonrpc: \"2.0\",\n error: {\n code: -32e3,\n message: e.message,\n data: {\n stack: e.stack\n }\n },\n id: json.id\n });\n }\n } else {\n respond({\n jsonrpc: \"2.0\",\n result: {\n manifest: null\n },\n id: json.id\n });\n }\n }\n });\n process.stdin.resume();\n}\nfunction respond(response) {\n process.stderr.write(JSON.stringify(response) + \"\\n\");\n}\n",
|
|
11
11
|
"\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar index_exports = {};\n__export(index_exports, {\n GeneratorError: () => import_chunk_MXZE5TCU.GeneratorError,\n GeneratorProcess: () => import_chunk_MXZE5TCU.GeneratorProcess,\n generatorHandler: () => import_chunk_IH6S2YZX.generatorHandler\n});\nmodule.exports = __toCommonJS(index_exports);\nvar import_chunk_MXZE5TCU = require(\"./chunk-MXZE5TCU.js\");\nvar import_chunk_IH6S2YZX = require(\"./chunk-IH6S2YZX.js\");\nvar import_chunk_EOPVK4AE = require(\"./chunk-EOPVK4AE.js\");\nvar import_chunk_KEYE2GFS = require(\"./chunk-KEYE2GFS.js\");\nvar import_chunk_QGM4M3NI = require(\"./chunk-QGM4M3NI.js\");\n",
|
|
12
12
|
"import { mkdir, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\n\nimport { generatorHandler } from \"@prisma/generator-helper\";\nimport type { GeneratorOptions } from \"@prisma/generator-helper\";\n\nimport { emitArtifacts } from \"./orm/emit\";\n\n// A Prisma generator plugin, deliberately *not* a `gemi` subcommand: Prisma owns\n// schema and migrations, and gemi must not shadow or wrap the Prisma CLI. Apps\n// add a second generator block and every `prisma generate` — including the one\n// `prisma migrate dev` runs for them — refreshes the gemi artifacts with it:\n//\n// generator gemi {\n// provider = \"gemi-orm-generator\"\n// output = \"../app/models/generated\"\n// }\n//\n// The Prisma CLI spawns this file as its own process and talks JSON-RPC over\n// stdio, which is why it needs its own `bin` entry, a shebang and an executable\n// bit (see scripts/prepare-bin.ts).\n\n// This generator needs no other generator to have run, and a schema whose only\n// generator block is this one is the ordinary case.\n//\n// It used to need `generator client`, and refused to run without it: the model\n// bases it emitted did `import type { Prisma } from \"@prisma/client\"`, so the\n// client had to exist for the app to typecheck. That single type-only import —\n// erased at build, never present in a bundle — was what made every gemi app\n// install a 74MB package, and generate a further 23MB of client, that it never\n// called.\n//\n// Nothing outside gemi ever wanted it. The `prisma` CLI depends on\n// `@prisma/config` and `@prisma/engines` and not on the client; `migrate dev`,\n// `migrate deploy`, `db push` and `migrate diff` all run to completion against a\n// schema with no generator block at all. The requirement was gemi's alone, and\n// removing the import removed it. See `orm/types.ts`.\n\n// `@prisma/generator-helper` is a devDependency bundled into this binary, so the\n// DMMF reader's version is frozen at gemi's publish time. An app on a much newer\n// Prisma would otherwise get a silently mismatched reader — the DMMF is\n// Prisma-internal and has changed shape across majors. Warn rather than throw:\n// the mismatch is usually harmless, and refusing to generate would be a worse\n// failure than a noisy one.\nconst SUPPORTED_PRISMA_MAJOR = 6;\n\nfunction warnOnPrismaVersion(options: GeneratorOptions): void {\n const major = Number.parseInt(options.version?.split(\".\")[0] ?? \"\", 10);\n if (!Number.isFinite(major) || major === SUPPORTED_PRISMA_MAJOR) return;\n\n console.warn(\n `gemi ORM: this is Prisma ${options.version}, but the gemi ORM generator ` +\n `was built against Prisma ${SUPPORTED_PRISMA_MAJOR}.x. The artifacts are ` +\n `still generated; check them, and upgrade gemi if they look wrong.`,\n );\n}\n\n// Informational only. Which dialect the ORM speaks is a *runtime* property read\n// from `DatabaseManager`, because `DATABASE_URL` can point at a different\n// database than the one generation saw. Nothing dialect-specific is ever baked\n// into a generated file, so this cannot do more than warn.\nconst SUPPORTED_PROVIDERS = new Set([\n \"sqlite\",\n \"postgresql\",\n \"postgres\",\n \"prisma+postgres\",\n]);\n\nfunction warnOnDatasource(options: GeneratorOptions): void {\n const datasource = options.datasources[0];\n if (!datasource || SUPPORTED_PROVIDERS.has(datasource.provider)) return;\n\n console.warn(\n `gemi ORM: this schema's datasource is '${datasource.provider}', which the ` +\n `gemi ORM cannot execute queries against yet. The artifacts are still ` +\n `generated — they are dialect-agnostic — but queries will fail at runtime.`,\n );\n}\n\ngeneratorHandler({\n onManifest: () => ({\n prettyName: \"gemi ORM\",\n defaultOutput: \"../app/models/generated\",\n }),\n\n onGenerate: async (options: GeneratorOptions) => {\n const output = options.generator.output?.value;\n if (!output) {\n throw new Error(\n \"The gemi ORM generator needs an `output` path. Add \" +\n '`output = \"../app/models/generated\"` to the generator block.',\n );\n }\n\n warnOnPrismaVersion(options);\n warnOnDatasource(options);\n\n // A `client` option used to sit here: the module specifier the emitted\n // models type-imported `Prisma` from, for a schema whose `generator client`\n // wrote somewhere other than `@prisma/client`. Nothing type-imports anything\n // from Prisma any more, so the option describes a decision no longer being\n // made and is gone. A schema still carrying the line is not an error —\n // Prisma passes unknown generator config through, and refusing it would\n // break a working schema over a word that now means nothing.\n\n // Prisma hands the DMMF over directly, so nothing here parses\n // `schema.prisma`. Enums come along for the model bases, which type an enum\n // column as the union of its members.\n //\n // `emit.ts` collects its diagnostics rather than printing them, so that it\n // stays the pure function of the DMMF its header claims to be. This is the\n // process boundary — where `warnOnPrismaVersion` and `warnOnDatasource`\n // already are — so this is where they get written.\n const warnings: string[] = [];\n const files = emitArtifacts(\n options.dmmf.datamodel.models,\n options.dmmf.datamodel.enums,\n warnings,\n );\n for (const warning of warnings) console.warn(warning);\n\n await mkdir(output, { recursive: true });\n for (const [name, content] of Object.entries(files)) {\n await writeFile(join(output, name), content, \"utf8\");\n }\n },\n});\n",
|
|
13
|
-
"// Runtime model metadata: the shape the Prisma generator plugin emits into an\n// app's `app/models/generated/schema.ts`, and the only thing the compiler is\n// allowed to read identifiers from.\n//\n// Nothing here is discovered from the database at runtime. It is all generated,\n// which is what makes `compile` a pure function and what makes SQL injection\n// structurally impossible: every identifier the compiler emits is looked up in\n// one of these objects first (see the README's invariant 2).\n//\n// The generator deliberately emits *more* than the current iteration reads.\n// Regenerating an app's artifacts is free; changing the shape of the emitted\n// artifact after apps depend on it is not.\n\n/**\n * Bumped whenever the emitted artifact's shape changes in a way the runtime\n * cannot read. Generated `schema.ts` files carry their own literal copy, and\n * `assertSchemaArtifactVersion` compares the two at registration time so a stale\n * `app/models/generated` fails with \"run prisma generate\" rather than with a\n * `TypeError` five stack frames into the compiler.\n *\n * **`FieldSchema.isList` did not bump it**, and the argument given at the time\n * was that the generator is `bin/orm` and the runtime is `orm/`, both shipped\n * by the same `gemi` package at the same version — so a *new* artifact could\n * never be read by an *old* runtime.\n *\n * **That argument is wrong, and #350's review is what showed it.** The two\n * halves do not travel together. The artifact is committed to git; the runtime\n * is a version in a lockfile. A teammate who pulls a branch without installing,\n * or a deploy box a release behind, reads a freshly committed artifact with the\n * previous runtime — and because the version literal in that artifact was never\n * bumped, `assertSchemaArtifactVersion` sees `1 === 1` and says nothing.\n *\n * The consequence is worse than being unable to read the column, because\n * `isClientSideDefault` used to be a *denylist* — anything that was not\n * `autoincrement` or `dbgenerated` counted as gemi's. An old runtime meeting\n * `{ kind: \"nanoid\" }` therefore answered \"yes, gemi supplies this\", included\n * the column in the insert, asked `clientSideValue` for a value, got\n * `undefined` from its `default:` arm, and bound **NULL**. On a required column\n * that is a NOT NULL violation; on a nullable one it writes NULL into every row\n * forever, which is strictly harder to find than a column that was omitted.\n *\n * So this is now **2**, and `isClientSideDefault` is an allowlist. The bump is\n * the mechanism that catches the skew — both directions fail with \"run\n * `prisma generate`\" — and the allowlist is what makes the failure loud rather\n * than silent if one ever slips past it.\n */\nexport const SCHEMA_ARTIFACT_VERSION = 2;\n\n/**\n * Prisma's scalar types, verbatim. Not SQL types — the mapping from these to a\n * column type is the dialect's business, and it differs (SQLite has no\n * `DateTime` and no `Boolean`).\n */\nexport type ScalarType =\n | \"Int\"\n | \"String\"\n | \"DateTime\"\n | \"Boolean\"\n | \"Float\"\n | \"BigInt\"\n | \"Decimal\"\n | \"Json\"\n | \"Bytes\";\n\n/**\n * Prisma 6.19.2's parser accepts seven default functions, and its client\n * registers client-side generators for **four** of them — `cuid`, `nanoid`,\n * `ulid` and `uuid`. All four produce a column whose DDL carries no `DEFAULT`,\n * so all four are gemi's to supply; that is the whole of #350, and `ulid` was\n * the last one still missing when its review was written.\n *\n * Read off the shipped artifacts rather than the docs: the parser's own string\n * table is `autoincrement ulid cuid dbgenerated nanoid now uuid`, and\n * `prisma migrate diff` on a schema using every one of them emits\n * `TEXT NOT NULL` with no default for each.\n */\nexport type DefaultKind =\n | \"autoincrement\"\n | \"cuid\"\n | \"uuid\"\n | \"nanoid\"\n | \"ulid\"\n | \"now\"\n | \"dbgenerated\"\n | \"value\";\n\n/** What `@default(nanoid())` means when written without an argument. */\nexport const NANOID_DEFAULT_LENGTH = 21;\n\nexport interface DefaultSpec {\n kind: DefaultKind;\n /** Present only for `kind: \"value\"` — the literal written in the schema. */\n value?: unknown;\n /**\n * Present only for `kind: \"nanoid\"` — the id's length in characters.\n *\n * Part of the default rather than a detail of it: `nanoid()` is 21 characters\n * and `nanoid(10)` is 10, and the column Prisma's migration emits is a plain\n * `TEXT` that constrains neither. So the length lives nowhere but the schema,\n * and if it does not survive into this artifact the runtime cannot mint the\n * same id the Prisma client would.\n */\n length?: number;\n /**\n * Present only for `kind: \"uuid\"` — `4` or `7`.\n *\n * The same reasoning as `length`, and it took the same bug to notice: `uuid()`\n * and `uuid(7)` are one `TEXT` column apart in the DDL and two different\n * *kinds* of identifier in practice. A v7 is time-ordered, which is the entire\n * reason a schema asks for one — order by it and rows come back in insertion\n * order, and a B-tree insert lands next to the last one. Minting a v4 where\n * the schema said 7 loses both, silently, in a column that still looks like a\n * UUID.\n *\n * Absent on an artifact generated before this existed. The runtime reads a\n * missing version as 4, which is what `uuid()` meant then and means now —\n * though `SCHEMA_ARTIFACT_VERSION` makes that pairing fail loudly first.\n *\n * `cuid` has a version argument too and does **not** get a field here: `cuid(2)`\n * is refused by the generator rather than recorded, so the only cuid that\n * reaches an artifact is v1. See `emit.ts`.\n */\n version?: number;\n}\n\nexport interface FieldSchema {\n /** The field name as an app author writes it: `organizationId`. */\n name: string;\n /** The column name in the database: `@map(...)` if present, else `name`. */\n column: string;\n type: ScalarType;\n nullable: boolean;\n isId: boolean;\n isUpdatedAt: boolean;\n /**\n * A Prisma **scalar list** — `tags String[]`. Postgres only; SQLite has no\n * array type and Prisma refuses the declaration there outright.\n *\n * **A flag beside `type` rather than a `ScalarType` constructor**, and the\n * choice reaches further than it looks. `type` keeps meaning the *element*\n * type, so every `switch (field.type)` already written — `encode`, `decode`,\n * `castParameter`, the lateral strategy's `jsonConverter`, `COMPOSITE_IN_TYPES`\n * — keeps reading correctly and only has to ask this one extra question where\n * a list genuinely differs. A `\"String[]\"` member of the union would have made\n * every one of those switches silently non-exhaustive instead: no compile\n * error, just a `default:` branch answering for a shape it had never seen.\n *\n * Absent rather than `false` on a non-list field, so an artifact generated\n * before this existed is byte-identical to one generated after it — see the\n * note on `SCHEMA_ARTIFACT_VERSION`, which is deliberately *not* bumped here.\n */\n isList?: boolean;\n /**\n * Set when the field is a Prisma enum. The enum's members are strings on the\n * wire, so `type` is `\"String\"` and this carries the name for later.\n */\n enum?: string;\n default?: DefaultSpec;\n}\n\nexport interface RelationSchema {\n /** The field name on the owning model: `accounts`. */\n name: string;\n /** The related model's *name*, resolved through the registry at call time. */\n model: string;\n kind: \"one\" | \"many\";\n /**\n * Prisma's relation name, shared by both sides. It is what lets the planner\n * find the other side of a relation whose `from`/`to` live on that side only.\n */\n relationName: string;\n /** Local fields. Empty on the side that does not hold the foreign key. */\n from: string[];\n /** Fields on the related model. Empty on the non-owning side, as above. */\n to: string[];\n nullable: boolean;\n /** Implicit many-to-many join table. Emitted now, unused until iteration 3. */\n joinTable?: {\n table: string;\n a: string;\n b: string;\n /**\n * Which column holds the owner of **this** relation field, for a\n * *self*-referential implicit m-n where `a === b` and the model names\n * cannot say.\n *\n * Prisma assigns the columns by **field name, alphabetically**: the\n * alphabetically-first of the relation's two fields has its owner in `A`.\n * Determined by experiment against a generated client, in both directions,\n * rather than from the docs — the two candidate rules (declaration order\n * and field-name order) disagree only when a schema declares the fields out\n * of alphabetical order, which is exactly the case that would have shipped\n * reversed.\n *\n * Absent for a non-self m-n, where comparing the model names answers it,\n * and absent in artifacts generated before this existed — which is why\n * reading it is optional rather than required. Such an artifact behaves\n * exactly as it did: a self-referential m-n is refused.\n */\n ownerColumn?: \"A\" | \"B\";\n };\n}\n\nexport interface ModelSchema {\n /** Registry key: `\"User\"`. */\n name: string;\n /** `@@map(...)` if present, else `name`. Never inferred or pluralised. */\n table: string;\n /** Insertion-ordered by schema declaration — this is the `select` order. */\n fields: Record<string, FieldSchema>;\n primaryKey: string[];\n /** Single-field `@unique` and composite `@@unique`, in declaration order. */\n uniques: string[][];\n relations: Record<string, RelationSchema>;\n}\n\nexport class StaleSchemaArtifactError extends Error {\n constructor(found: number) {\n super(\n `The generated model artifact is version ${found}, but this version of ` +\n `gemi reads version ${SCHEMA_ARTIFACT_VERSION}. Re-run \\`prisma generate\\` ` +\n `to refresh app/models/generated.`,\n );\n this.name = \"StaleSchemaArtifactError\";\n }\n}\n\n/**\n * Called by the generated `index.ts` with its own artifact version literal.\n */\nexport function assertSchemaArtifactVersion(version: number): void {\n if (version !== SCHEMA_ARTIFACT_VERSION) {\n throw new StaleSchemaArtifactError(version);\n }\n}\n",
|
|
14
|
-
"import type { DMMF } from \"@prisma/generator-helper\";\n\nimport {\n NANOID_DEFAULT_LENGTH,\n SCHEMA_ARTIFACT_VERSION,\n type DefaultSpec,\n type FieldSchema,\n type ModelSchema,\n type RelationSchema,\n type ScalarType,\n} from \"../../orm/schema\";\n\n// Build-time only. This file runs inside the Prisma generator process and may\n// import from `@prisma/*` freely; the ORM *runtime* under `packages/gemi/orm/`\n// may not, and there is an acceptance test that greps for exactly that.\n//\n// Everything here is a pure function of the DMMF so the emitters can be unit\n// tested with no Prisma CLI and no database, and so running the generator twice\n// over an unchanged schema produces a byte-identical file.\n\nexport const GENERATED_FILES = [\"schema.ts\", \"models.ts\", \"index.ts\"] as const;\nexport type GeneratedFile = (typeof GENERATED_FILES)[number];\n\nconst HEADER = `// Generated by the gemi ORM generator. Do not edit.\n//\n// Re-run \\`prisma generate\\` (or \\`prisma migrate dev\\`) to refresh this file.\n// It is committed on purpose: diffs stay reviewable and CI needs no codegen step.\n`;\n\nconst SCALAR_TYPES: Record<string, ScalarType> = {\n int: \"Int\",\n string: \"String\",\n datetime: \"DateTime\",\n boolean: \"Boolean\",\n float: \"Float\",\n bigint: \"BigInt\",\n decimal: \"Decimal\",\n json: \"Json\",\n bytes: \"Bytes\",\n};\n\n// Scalars the artifact can describe but no dialect can round-trip yet, mapped\n// to the reason. Refusing at generation time rather than emitting the column:\n// the alternative is a model that generates cleanly and then returns a value\n// that silently disagrees with the type Prisma gave it. That is the failure\n// mode this iteration is built around.\n//\n// **A scalar list used to be refused here too, and is not any more** (#300).\n// The refusal was right for as long as no dialect could decode an array, and\n// its comment pointed at \"iteration 2\", which shipped without doing it. What\n// changed the answer is not that lists became decodable — it is *where* the\n// refusal belongs. A list is legal on Postgres and a validation error on\n// SQLite, but this artifact is generated once and is dialect-agnostic by\n// design: `DATABASE_URL` can name a different database than `prisma generate`\n// saw. So refusing here would refuse a column the running dialect can serve\n// perfectly well, and the honest place to say no is the dialect, at compile\n// time, naming which one — the shape `UnsupportedDialectError` already has.\n// `SqliteDialect.listFilters` is that refusal.\n//\n// `Decimal[]` is still refused, and by this table rather than by a list rule:\n// a list of a scalar no dialect can round-trip is not more supportable for\n// being a list.\nconst UNSUPPORTED_SCALARS: Partial<Record<ScalarType, string>> = {\n Decimal:\n \"Prisma types a Decimal field as `Prisma.Decimal`, but SQLite stores it \" +\n \"as a REAL and the driver returns a JS number — so the value would be a \" +\n \"float pretending to be an arbitrary-precision decimal, losing exactly \" +\n \"the precision the type exists to keep\",\n};\n\nexport class UnsupportedSchemaError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"UnsupportedSchemaError\";\n }\n}\n\nfunction scalarType(model: string, field: DMMF.Field): ScalarType {\n const mapped = SCALAR_TYPES[field.type.toLowerCase()];\n if (!mapped) {\n throw new UnsupportedSchemaError(\n `${model}.${field.name} has the scalar type '${field.type}', which the ` +\n `gemi ORM generator does not know how to map.`,\n );\n }\n\n const reason = UNSUPPORTED_SCALARS[mapped];\n if (reason) {\n throw new UnsupportedSchemaError(\n `${model}.${field.name} is a ${mapped}, which the gemi ORM does not ` +\n `support yet: ${reason}. Keep using the Prisma client for this model, ` +\n `or change the field's type.`,\n );\n }\n\n return mapped;\n}\n\n/**\n * Is this DMMF default a *function* call — `autoincrement()`, `cuid()`, `now()`\n * — rather than a literal or a list?\n *\n * A hand-written predicate rather than the inline\n * `typeof value === \"object\" && !Array.isArray(value)` this replaces, for two\n * reasons. TypeScript does not narrow a `readonly T[]` out of a union through\n * `Array.isArray`, whose signature asserts `arg is any[]` — so the inline form\n * left `value.name` unresolved, which is the error that surfaced the moment\n * `bin/orm` entered the tsconfig. And `typeof null === \"object\"`, so the inline\n * form would have dereferenced a null default rather than falling through to\n * the literal branch.\n *\n * Note it does **not** additionally require a string `name`, though the first\n * version of it did. That looked like a tightening and was a behaviour change:\n * an object default carrying no `name` used to reach `switch (undefined)` and\n * come out as `{ kind: \"dbgenerated\" }`, and requiring the name sent it to\n * `{ kind: \"value\" }` instead. DMMF's `FieldDefault` always carries one, so\n * neither path is reachable — but the two are not equally safe if it ever is:\n * `dbgenerated` omits the column and lets the database supply it, while `value`\n * would try to bind the object itself as the column's value. The safer of two\n * unreachable branches is still the one to keep.\n */\nfunction isFunctionDefault(\n value: unknown,\n): value is { name?: string; args?: readonly (string | number)[] } {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n/**\n * The first argument, when it is a number.\n *\n * DMMF types an argument as `string | number`, so a non-number is not excluded\n * by the types even though Prisma's parser only produces numbers here. The\n * caller warns rather than falling back silently: a `nanoid` recorded at the\n * wrong width, or a `uuid` at the wrong version, is authoritative-looking and\n * wrong, and nothing downstream can tell it apart from what the schema asked\n * for.\n */\nfunction numericArg(\n args: readonly (string | number)[] | undefined,\n): number | undefined {\n const [first] = args ?? [];\n return typeof first === \"number\" ? first : undefined;\n}\n\n/**\n * Translates one DMMF default, and reports what it could not translate.\n *\n * **The warning lives in the `default:` arm rather than in a second pass over\n * the same field**, which is where #350's review put it. There used to be a\n * `RECOGNISED_DEFAULTS` set restating every `case` label so a separate function\n * could ask \"did the switch handle this?\" — a hand-maintained copy of a list\n * the switch already is. This arm *is* that question, so the copy is gone and\n * the drift it could suffer is now unrepresentable.\n */\nfunction defaultSpec(\n model: string,\n field: DMMF.Field,\n warnings: string[],\n): DefaultSpec | undefined {\n if (!field.hasDefaultValue || field.default === undefined) return undefined;\n\n const value = field.default;\n if (!isFunctionDefault(value)) return { kind: \"value\", value: value as unknown };\n\n const column = `${model}.${field.name}`;\n\n switch (value.name) {\n case \"autoincrement\":\n case \"now\":\n case \"dbgenerated\":\n return { kind: value.name };\n\n // The four Prisma fills in its own client. Each gets a `TEXT NOT NULL` with\n // no `DEFAULT`, so each is gemi's to supply or the row does not insert —\n // #350, and `ulid` is the one its first fix still missed.\n case \"ulid\":\n return { kind: \"ulid\" };\n\n case \"cuid\": {\n // The DMMF normalises a bare `cuid()` to `args: [1]`, so this is always\n // present in practice; absent means a hand-built DMMF, and v1 is what\n // `cuid()` has always meant.\n const version = numericArg(value.args) ?? 1;\n if (version !== 1) {\n // Refused rather than recorded, and rather than silently minting a v1.\n // Prisma builds a cuid2 with `@paralleldrive/cuid2`, which hashes with\n // SHA-3; gemi cannot reproduce that without vendoring the hash, and the\n // two formats do not even agree on length — 24 characters against v1's\n // 25. Emitting a v1 here is what the generator did before, which put\n // ids of the wrong shape in a column Prisma would fill differently.\n throw new UnsupportedSchemaError(\n `${column} is @default(cuid(${version})), which the gemi ORM cannot ` +\n `generate: Prisma mints a cuid2 through @paralleldrive/cuid2, ` +\n `whose output gemi cannot reproduce. Use @default(cuid(1)), or ` +\n `keep the Prisma client for this model.`,\n );\n }\n return { kind: \"cuid\" };\n }\n\n case \"uuid\": {\n const version = numericArg(value.args) ?? 4;\n if (version !== 4 && version !== 7) {\n // Prisma's own client throws \"Invalid UUID generator arguments\" for\n // these; saying so at generation time is the same answer, earlier.\n throw new UnsupportedSchemaError(\n `${column} is @default(uuid(${version})), and the only UUID ` +\n `versions Prisma generates are 4 and 7.`,\n );\n }\n return { kind: \"uuid\", version };\n }\n\n case \"nanoid\": {\n const length = numericArg(value.args);\n if (length === undefined && (value.args?.length ?? 0) > 0) {\n warnings.push(\n `gemi ORM: ${column} is @default(nanoid(${String(value.args?.[0])})), ` +\n `whose argument is not a number. The length was recorded as ` +\n `${NANOID_DEFAULT_LENGTH}, so every id gemi writes to this column ` +\n `will be ${NANOID_DEFAULT_LENGTH} characters — check the schema.`,\n );\n }\n return { kind: \"nanoid\", length: length ?? NANOID_DEFAULT_LENGTH };\n }\n\n default:\n warnings.push(unrecognisedDefaultWarning(column, model, value.name));\n return { kind: \"dbgenerated\" };\n }\n}\n\n/**\n * A function default this generator has no case for.\n *\n * It is recorded as the database's, which is the only guess available. When the\n * guess is wrong — the default is one Prisma fills client-side, as `nanoid()`\n * and `ulid()` both were — nothing fails at generation time and nothing fails\n * at boot, because the field *looks* handled: it was classified.\n *\n * **Both outcomes are reported, not just the loud one.** This used to return\n * early for a nullable column, on the reasoning that \"a nullable one is nobody's\n * problem either way\". That is true for a genuinely database-side default and\n * false for exactly the case the warning exists to catch: an unrecognised\n * *client-side* default on a nullable column is omitted from the insert, the\n * database has no `DEFAULT` to supply, and the row lands with NULL where an id\n * belonged. Nothing fails at insert or at read. It surfaces much later, when a\n * lookup by that id finds nothing.\n *\n * For the same reason the old text's first suggestion — \"make the field\n * optional\" — is gone. It converted a loud NOT NULL failure into that silent\n * one.\n *\n * A warning rather than a refusal: most `dbgenerated(...)` columns really are\n * the database's, and refusing would break schemas that generate and run\n * correctly today. But silence is what made #350 cost an afternoon — the\n * generator is the only place that still knows the function's *name*, and by\n * the time a row is rejected all that is left is a column that \"should have had\n * a default\".\n */\nfunction unrecognisedDefaultWarning(\n column: string,\n model: string,\n name: string | undefined,\n): string {\n // `isFunctionDefault` deliberately admits an object default carrying no\n // `name`, and that path is the *strongest* case for this warning rather than\n // one to skip: the generator called the column the database's with no name to\n // base the guess on at all.\n const called = name ? `${name}()` : \"a function this generator cannot name\";\n\n return (\n `gemi ORM: ${column} defaults to ${called}, which this generator does not ` +\n `recognise, so it is recorded as a database-side default and the ORM will ` +\n `omit the column on insert. If Prisma fills that default in its own client ` +\n `— as it does for cuid, uuid, nanoid and ulid — the column has no default ` +\n `in the database either, so every write to ${model} either fails on NOT ` +\n `NULL or silently stores NULL. Give the field a default the ORM knows, or ` +\n `upgrade gemi.`\n );\n}\n\nfunction fieldSchema(\n model: string,\n field: DMMF.Field,\n warnings: string[],\n): FieldSchema {\n // Key order here is the key order in the emitted file. Keep it stable.\n const schema: FieldSchema = {\n name: field.name,\n column: field.dbName ?? field.name,\n type: field.kind === \"enum\" ? \"String\" : scalarType(model, field),\n nullable: !field.isRequired,\n isId: field.isId,\n isUpdatedAt: field.isUpdatedAt === true,\n };\n\n // Prisma enums travel as strings on the wire, so `type` stays `\"String\"` and\n // the enum's identity is recorded separately for a later iteration.\n if (field.kind === \"enum\") schema.enum = field.type;\n\n // A scalar list — `tags String[]`. `type` above is already the *element*\n // type, which is the whole reason this is a flag: the generator says what the\n // column holds and how many of them, and the dialect decides what that is in\n // SQL. Set rather than always-emitted so a schema with no list generates the\n // artifact it generated before this existed, byte for byte.\n //\n // Deliberately after the `scalarType` call above rather than before it, so a\n // `Decimal[]` is refused as a **Decimal** — with the precision reasoning in\n // `UNSUPPORTED_SCALARS`, which is the part a reader needs — rather than being\n // admitted as a list of something no dialect can round-trip one of.\n if (field.isList) schema.isList = true;\n\n const def = defaultSpec(model, field, warnings);\n if (def) schema.default = def;\n\n return schema;\n}\n\nfunction relationSchema(\n field: DMMF.Field,\n joinTable: RelationSchema[\"joinTable\"],\n): RelationSchema {\n const relation: RelationSchema = {\n name: field.name,\n model: field.type,\n kind: field.isList ? \"many\" : \"one\",\n relationName: field.relationName ?? \"\",\n from: [...(field.relationFromFields ?? [])],\n to: [...(field.relationToFields ?? [])],\n nullable: !field.isRequired,\n };\n if (joinTable) relation.joinTable = joinTable;\n return relation;\n}\n\n/**\n * Prisma's implicit many-to-many relations have no join model in the datamodel:\n * both sides are lists holding no foreign key. The table Prisma creates for\n * them is `_<relationName>` with columns `A` and `B`, ordered by the two model\n * names alphabetically. Emitted now, unused until iteration 3.\n */\nfunction implicitJoinTable(\n model: DMMF.Model,\n field: DMMF.Field,\n byRelationName: Map<string, { model: string; field: DMMF.Field }[]>,\n): RelationSchema[\"joinTable\"] | undefined {\n if (!field.isList || !field.relationName) return undefined;\n if ((field.relationFromFields ?? []).length > 0) return undefined;\n\n const sides = byRelationName.get(field.relationName) ?? [];\n if (sides.length !== 2) return undefined;\n if (!sides.every((side) => side.field.isList)) return undefined;\n\n const [first, second] = [model.name, field.type].sort();\n const table = `_${field.relationName}`;\n\n // On a *self*-referential implicit m-n both names are the same string, so\n // `a === b` and the model names cannot say which column holds which end.\n //\n // Prisma assigns them by **field name, alphabetically**: the\n // alphabetically-first of the relation's two fields has its owner in `A`.\n // Established by experiment against a generated client — connecting through\n // each field in turn and reading the join table — because the plausible rule\n // (declaration order) is indistinguishable from this one on any schema whose\n // fields happen to be declared alphabetically, and disagrees on every other.\n // Guessing would have reversed the relation silently on exactly those.\n if (first === second) {\n const names = sides.map((side) => side.field.name).sort();\n return {\n table,\n a: first,\n b: second,\n ownerColumn: field.name === names[0] ? (\"A\" as const) : (\"B\" as const),\n };\n }\n\n return { table, a: first, b: second };\n}\n\n/** Single-field `@unique` plus composite `@@unique`, deduplicated, in order. */\nfunction uniques(model: DMMF.Model): string[][] {\n const seen = new Set<string>();\n const out: string[][] = [];\n\n const push = (fields: string[]) => {\n // NUL cannot appear in a field name, so it cannot merge two distinct groups.\n const key = fields.join(\"\\u0000\");\n if (seen.has(key)) return;\n seen.add(key);\n out.push(fields);\n };\n\n for (const field of model.fields) {\n if (field.kind !== \"object\" && field.isUnique) push([field.name]);\n }\n for (const group of model.uniqueFields) push([...group]);\n\n return out;\n}\n\nexport function buildModelSchema(\n model: DMMF.Model,\n byRelationName: Map<string, { model: string; field: DMMF.Field }[]>,\n warnings: string[] = [],\n): ModelSchema {\n const fields: Record<string, FieldSchema> = {};\n const relations: Record<string, RelationSchema> = {};\n\n for (const field of model.fields) {\n if (field.kind === \"object\") {\n relations[field.name] = relationSchema(\n field,\n implicitJoinTable(model, field, byRelationName),\n );\n continue;\n }\n if (field.kind === \"unsupported\") {\n // Prisma's own client omits `Unsupported(...)` columns from its result\n // types, so omitting them keeps our result shape identical to Prisma's.\n continue;\n }\n fields[field.name] = fieldSchema(model.name, field, warnings);\n }\n\n const primaryKey = model.primaryKey\n ? [...model.primaryKey.fields]\n : model.fields.filter((field) => field.isId).map((field) => field.name);\n\n return {\n name: model.name,\n table: model.dbName ?? model.name,\n fields,\n primaryKey,\n uniques: uniques(model),\n relations,\n };\n}\n\nexport function buildModelSchemas(\n models: readonly DMMF.Model[],\n warnings: string[] = [],\n): ModelSchema[] {\n const byRelationName = new Map<\n string,\n { model: string; field: DMMF.Field }[]\n >();\n for (const model of models) {\n for (const field of model.fields) {\n if (field.kind !== \"object\" || !field.relationName) continue;\n const sides = byRelationName.get(field.relationName) ?? [];\n sides.push({ model: model.name, field });\n byRelationName.set(field.relationName, sides);\n }\n }\n\n // Sorted by name rather than left in declaration order, so reordering the\n // Prisma schema does not churn the generated diff.\n return [...models]\n .sort((a, b) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0))\n .map((model) => buildModelSchema(model, byRelationName, warnings));\n}\n\n// `JSON.stringify` is the serializer on purpose: the emitted metadata is plain\n// data, the key order is the insertion order built above, and `undefined`\n// members drop out — so the output is deterministic by construction rather than\n// by a formatting convention nobody re-checks.\nfunction literal(value: unknown): string {\n return JSON.stringify(value, null, 2);\n}\n\nexport function emitSchemaFile(schemas: ModelSchema[]): string {\n const parts = [\n HEADER,\n `\\nimport type { ModelSchema } from \"gemi/orm\";\\n`,\n `\\n// Compared against the runtime's own constant when this artifact is\\n`,\n `// registered, so a stale directory fails with \"re-run prisma generate\"\\n`,\n `// rather than with a TypeError inside the compiler.\\n`,\n `export const ARTIFACT_VERSION = ${SCHEMA_ARTIFACT_VERSION};\\n`,\n ];\n\n // `satisfies` rather than a `: ModelSchema` annotation, which is the whole of\n // #262's compile-time half. An annotation *widens*: `fields` becomes\n // `Record<string, FieldSchema>`, so `keyof` it is `string` and nothing built\n // on top of it can tell a column from a typo. `satisfies` checks the literal\n // against the same interface and keeps its keys, so `$schema.fields` carries\n // the model's real column names into the type system — which is what lets\n // `softDeletes` constrain `field` to columns rather than to an instance's\n // keys, where `\"save\"` is as valid a spelling as `\"deletedAt\"`.\n //\n // Type-level only: the emitted value is byte-identical.\n for (const schema of schemas) {\n parts.push(\n `\\nexport const ${schema.name} = ${literal(schema)} satisfies ModelSchema;\\n`,\n );\n }\n\n return parts.join(\"\");\n}\n\n// ---------------------------------------------------------------------------\n// The type descriptor\n//\n// Everything below emits the *facts* about a model that only the generator\n// knows, and leaves the rules to `orm/types.ts`. The split is the whole reason\n// an app no longer installs `@prisma/client`: the emitted file names concrete\n// column types and relation targets, and `gemi/orm` supplies `select`\n// narrowing, the filter grammars and the argument shapes over them.\n//\n// The facts have to be emitted rather than derived from the runtime metadata in\n// `schema.ts`, because the metadata does not record them. A `Json` column's\n// value type, an enum's members and a `String[]`'s element type are all things\n// the DMMF says and `FieldSchema` deliberately does not — `type` there is the\n// *storage* classification the SQL compiler switches on, not a TypeScript type.\n// ---------------------------------------------------------------------------\n\n/**\n * How each storage type surfaces in TypeScript, which is a statement about what\n * this ORM's decoders return rather than about what Prisma's client returns.\n *\n * The two agree today and are not required to: `Bytes` is a `Uint8Array` on\n * both dialects because `dialect/postgres.ts` deliberately views the driver's\n * `Buffer` as one — a divergence it had to *fix* to match, and the kind of thing\n * that used to be asserted only by a type imported from the other library.\n *\n * `Decimal` is unreachable: `UNSUPPORTED_SCALARS` refuses the column before any\n * of this runs. It is listed so the record stays total and a future entry\n * cannot be forgotten here.\n */\nconst TS_SCALARS: Record<ScalarType, string> = {\n Int: \"number\",\n Float: \"number\",\n String: \"string\",\n Boolean: \"boolean\",\n DateTime: \"Date\",\n BigInt: \"bigint\",\n Bytes: \"Uint8Array\",\n Json: \"JsonValue\",\n Decimal: \"never\",\n};\n\n/** A Prisma enum's members, by enum name. */\nexport type EnumMap = Record<string, readonly string[]>;\n\n/**\n * Whether a value needs parentheses before `[]` or `| null` is appended.\n *\n * An enum is the only base that is itself a union, and `\"a\" | \"b\"[]` parses as\n * `\"a\" | (\"b\"[])` — a silently wrong type rather than a syntax error.\n */\nfunction parenthesized(ts: string): string {\n return ts.includes(\" | \") ? `(${ts})` : ts;\n}\n\n/**\n * The element type of a column.\n *\n * `position` distinguishes reading from writing, and today only `Json` cares:\n * a read produces a `JsonValue`, while a write also accepts the two null\n * sentinels, which are the column's two empty states and are not values.\n */\nfunction scalarTs(\n field: FieldSchema,\n enums: EnumMap,\n position: \"read\" | \"write\",\n): string {\n if (field.enum) {\n const members = enums[field.enum];\n // An enum the map does not carry falls back to `string`, which is what the\n // column holds on the wire anyway. Generating a broken union, or throwing\n // over a name the DMMF simply did not repeat, would both be worse than\n // being less specific.\n if (members && members.length > 0) {\n return members.map((member) => JSON.stringify(member)).join(\" | \");\n }\n return \"string\";\n }\n\n if (field.type === \"Json\") {\n return position === \"write\" ? \"JsonInput\" : \"JsonValue\";\n }\n\n return TS_SCALARS[field.type];\n}\n\nfunction fieldTs(\n field: FieldSchema,\n enums: EnumMap,\n position: \"read\" | \"write\",\n): string {\n let ts = scalarTs(field, enums, position);\n if (field.isList) ts = `${parenthesized(ts)}[]`;\n // A `Json` write already spells its own empty states, and `| null` beside them\n // would reintroduce the bare `null` the sentinels exist to refuse.\n if (field.nullable && !(field.type === \"Json\" && position === \"write\")) {\n ts = `${ts} | null`;\n }\n return ts;\n}\n\n/**\n * The columns that hold a relation's foreign key, on this side of it.\n *\n * `RelationSchema.from` is empty on the side that does not own the key, so this\n * is exactly the local columns some relation writes.\n */\nfunction relationBackedColumns(schema: ModelSchema): Set<string> {\n const columns = new Set<string>();\n for (const relation of Object.values(schema.relations)) {\n for (const field of relation.from) columns.add(field);\n }\n return columns;\n}\n\n/**\n * Whether `create` may omit this column.\n *\n * Four reasons, none of them visible in the column's *type*, which is why the\n * descriptor carries the split rather than leaving `orm/types.ts` to guess: the\n * column is nullable, the database supplies a default, it is an `@updatedAt`\n * that the ORM stamps, or **a relation can supply it**.\n *\n * That fourth one is the difference between offering `connect` and offering it\n * usefully. `CreateInput` is the scalar half intersected with the relation half,\n * so a required foreign key stayed required no matter which spelling the caller\n * chose — and Prisma's canonical form,\n *\n * SocialAccount.create({ data: { …, user: { connect: { id: 1 } } } })\n *\n * did not compile, because `userId` was missing from an intersection that\n * demanded it. Prisma avoids this by having two types, `CreateInput` with\n * `connect` and `UncheckedCreateInput` with the raw column, and accepting either\n * at the operation. Here both are offered on one type, so the column has to be\n * optional for the pair to be a real choice.\n *\n * The genuinely-missing case is still refused, just later: `compile/write.ts`\n * raises `MissingRequiredValueError` naming the column when neither spelling\n * supplies it. It has to do that regardless — types are erased, and an untyped\n * caller reaches the compiler with the column absent either way.\n */\nfunction optionalOnCreate(\n field: FieldSchema,\n relationBacked: Set<string>,\n): boolean {\n return (\n field.nullable ||\n field.default !== undefined ||\n field.isUpdatedAt ||\n relationBacked.has(field.name)\n );\n}\n\n/** Prisma field names are `[A-Za-z][A-Za-z0-9_]*`, but emit defensively. */\nfunction propertyName(name: string): string {\n return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(name) ? name : JSON.stringify(name);\n}\n\n/**\n * The model's columns as TypeScript sees them.\n *\n * A `type` alias rather than an `interface`, and the distinction is load-bearing\n * twice over. TypeScript gives an implicit index signature to an object *type\n * alias* and not to an interface, which is what lets this satisfy\n * `ModelTypeInfo`'s `scalars: Record<string, unknown>`. And the emitted\n * `interface ${model}Model extends ${model}Scalars` needs a statically known\n * base, which a named alias is and an indexed access into a generic is not.\n */\nfunction scalarsType(schema: ModelSchema, enums: EnumMap): string {\n const fields = Object.values(schema.fields).map(\n (field) =>\n ` ${propertyName(field.name)}: ${fieldTs(field, enums, \"read\")};`,\n );\n\n return `\nexport type ${schema.name}Scalars = {\n${fields.join(\"\\n\")}\n};\n`;\n}\n\n/**\n * The scalar half of `create`'s `data`.\n *\n * Foreign key columns are present, which is a deliberate difference from\n * Prisma's `<M>CreateInput` — that type hides them and demands the nested\n * `connect` spelling, offering the raw columns only through a second\n * `UncheckedCreateInput`. gemi's write compiler takes the column directly, so\n * describing it as unavailable would have been the types refusing something the\n * runtime does.\n */\nfunction createType(schema: ModelSchema, enums: EnumMap): string {\n const relationBacked = relationBackedColumns(schema);\n const fields = Object.values(schema.fields).map(\n (field) =>\n ` ${propertyName(field.name)}` +\n `${optionalOnCreate(field, relationBacked) ? \"?\" : \"\"}: ` +\n `${fieldTs(field, enums, \"write\")};`,\n );\n\n return `\nexport type ${schema.name}CreateScalars = {\n${fields.join(\"\\n\")}\n};\n`;\n}\n\n/** Where each relation points, and what shape it resolves to. */\nfunction relationsType(schema: ModelSchema): string {\n const relations = Object.values(schema.relations).map(\n (relation) =>\n ` ${propertyName(relation.name)}: { kind: \"${relation.kind}\"; ` +\n `nullable: ${relation.nullable}; target: ${relation.model}Types };`,\n );\n\n // `Record<never, never>` — no keys — and emphatically not\n // `Record<string, never>`, which is `{ [k: string]: never }`. That gave a\n // relation-less model's `WhereInput` an index signature of\n // `RelationFilter<never>`, which every *scalar* key then had to satisfy too:\n // the template's `Membership` could not be filtered, `findUnique`d, updated or\n // deleted by its own primary key. `select` and `orderBy` happened to survive,\n // so it read as partly working rather than broken. See `orm/types.ts`.\n if (relations.length === 0) {\n return `\nexport type ${schema.name}Relations = Record<never, never>;\n`;\n }\n\n return `\nexport type ${schema.name}Relations = {\n${relations.join(\"\\n\")}\n};\n`;\n}\n\n/**\n * The selectors `findUnique` accepts: `@id`, every `@unique`, every `@@unique`.\n *\n * A composite group is one key holding an object, joined by underscores — the\n * spelling Prisma exposes and `compile/unique.ts` resolves, so a model like the\n * template's `SocialAccount` can be fetched by `provider_providerId` at all.\n *\n * `never` when a model has none, which makes `findUnique` uncallable on it\n * rather than callable with nothing that identifies a row.\n */\nfunction uniqueType(schema: ModelSchema, enums: EnumMap): string {\n const groups: string[][] = [];\n const seen = new Set<string>();\n\n const push = (fields: string[]) => {\n if (fields.length === 0) return;\n const key = fields.join(\"\u0000\");\n if (seen.has(key)) return;\n seen.add(key);\n groups.push(fields);\n };\n\n push(schema.primaryKey);\n for (const group of schema.uniques) push(group);\n\n const members = groups.map((group) => {\n // The column type without its nullability: a selector identifies a row, and\n // `null` never does.\n const member = (name: string) => {\n const field = schema.fields[name];\n if (!field) return `${propertyName(name)}: never`;\n const ts = field.isList\n ? `${parenthesized(scalarTs(field, enums, \"read\"))}[]`\n : scalarTs(field, enums, \"read\");\n return `${propertyName(name)}: ${ts}`;\n };\n\n if (group.length === 1) return `{ ${member(group[0])} }`;\n\n const inner = group.map(member).join(\"; \");\n return `{ ${propertyName(group.join(\"_\"))}: { ${inner} } }`;\n });\n\n const union = members.length > 0 ? members.join(\" | \") : \"never\";\n\n return `\nexport type ${schema.name}Unique = ${union};\n`;\n}\n\n/**\n * The descriptor itself: the one type every signature on the model is built\n * from, and the only thing `orm/types.ts` reads.\n */\nfunction typesInterface(schema: ModelSchema): string {\n return `\nexport interface ${schema.name}Types extends ModelTypeInfo {\n scalars: ${schema.name}Scalars;\n relations: ${schema.name}Relations;\n unique: ${schema.name}Unique;\n create: ${schema.name}CreateScalars;\n}\n`;\n}\n\n/**\n * The read surface, and how each operation's return type is built.\n *\n * `returns` is a template over the model's descriptor. The three shapes are:\n * many rows, one row or `null`, and one row (the `*OrThrow` variants, which\n * never resolve to `null` because `$exec` raises instead).\n */\ninterface ReadOperation {\n name: string;\n args: string;\n returns: (types: string) => string;\n /** `findUnique` cannot be called without a `where`, so its args are required. */\n required?: boolean;\n}\n\nconst READ_OPERATIONS: ReadOperation[] = [\n {\n name: \"findMany\",\n args: \"FindManyArgs\",\n returns: (t) => `Payload<${t}, T>[]`,\n },\n {\n name: \"findFirst\",\n args: \"FindFirstArgs\",\n returns: (t) => `Payload<${t}, T> | null`,\n },\n {\n name: \"findFirstOrThrow\",\n args: \"FindFirstOrThrowArgs\",\n returns: (t) => `Payload<${t}, T>`,\n },\n {\n name: \"findUnique\",\n args: \"FindUniqueArgs\",\n returns: (t) => `Payload<${t}, T> | null`,\n required: true,\n },\n {\n name: \"findUniqueOrThrow\",\n args: \"FindUniqueOrThrowArgs\",\n returns: (t) => `Payload<${t}, T>`,\n required: true,\n },\n];\n\n/**\n * `wrap`, typed to reject a partial row at compile time.\n *\n * The parameter is the model's full scalar payload — `Prisma.<M>GetPayload<{}>` —\n * so a `Pick` of it fails to type-check for the ordinary reason that it is\n * missing properties. That single constraint is what lets instances and `select`\n * coexist: a method reading `this.email` can only ever run on a row that\n * actually fetched `email`.\n *\n * The return type intersects the row with the class, so the instance carries both\n * the columns and whatever the application's subclass adds. `this: C` plus\n * `C[\"prototype\"]` is what makes it the *subclass's* instance type rather than\n * the generated base's — `Account.wrap(...)` returns an `Account`, not an\n * `AccountModel`, so a method defined on the subclass is visible on the result.\n *\n * `{ prototype: unknown }` rather than the more obvious\n * `new (...args: never[]) => any`, because `Model`'s constructor is `protected`\n * (which is what stops a directly constructed instance from lying about its\n * columns) and a protected constructor does not satisfy a public construct\n * signature. Constraining on the prototype reads the instance type without\n * caring how — or whether — the class can be constructed from outside.\n *\n * `R` is generic rather than fixed to the payload so a row carrying `include`d\n * relations keeps them in the result type. The constraint still requires *at\n * least* the full scalar set, which is the property that matters.\n */\nfunction wrapOperation(model: string): string {\n const payload = `${model}Scalars`;\n return `\n static wrap<C extends { prototype: unknown }, R extends ${payload}>(\n this: C,\n row: R,\n ): C[\"prototype\"] & R {\n return (Model.wrap as (row: object) => any).call(this, row);\n }\n`;\n}\n\n/**\n * Declaration merging, so an instance's *columns* are visible to methods written\n * on the subclass.\n *\n * An `interface` sharing the class's name merges into its instance type, which is\n * what makes this work:\n *\n * export class User extends UserModel {\n * get displayName() { return this.name ?? this.email ?? \"anonymous\" }\n * }\n *\n * Without it `this.name` does not exist and the entity tier is useless — a\n * wrapper whose methods cannot read the row is not a wrapper. The first version\n * of `wrap` intersected the columns into its *return* type only, which typed the\n * call site correctly and left the class body blind.\n *\n * Emitted as an interface rather than as `declare` fields for two reasons: it\n * reuses the descriptor's own scalar type rather than restating the columns, so\n * the two cannot drift; and it is zero runtime output, which `declare` also is\n * but less obviously.\n *\n * The honest cost: `new UserModel()` now type-checks as having columns it does\n * not have. These classes are constructed by `wrap` and by nothing else — the\n * fifteen operations return plain objects — so the lie is confined to a\n * constructor call no application has a reason to make.\n */\nfunction instanceShape(model: string): string {\n return `\n// Merges the row's columns into the instance type, so a method on a subclass can\n// read \\`this.email\\`. No runtime output.\n//\n// oxlint flags class/interface merging because TypeScript does not check the\n// merged properties are initialised — a directly constructed instance would type\n// as carrying every column while holding none. That hazard is closed rather than\n// accepted: \\`Model\\`'s constructor is \\`protected\\`, so the only way to get an\n// instance is \\`wrap\\`, which assigns a complete row. See bin/orm/emit.ts.\n// oxlint-disable-next-line typescript-eslint/no-unsafe-declaration-merging\nexport interface ${model}Model extends ${model}Scalars {}\n`;\n}\n\n/**\n * The model's policy types, emitted so an application never writes\n * `ModelPolicy<Prisma.UserWhereInput, Prisma.UserCreateInput, …>` by hand.\n *\n * Two names because the two authoring forms need different things, and one name\n * cannot be both a class to extend and a plain type alias:\n *\n * static $policies: UserPolicy[] = [{ scope: (ctx) => … }] // object form\n * class Tenant extends UserScopedPolicy { … } // class form\n *\n * The annotation on the object form is load-bearing rather than decorative.\n * TypeScript does not contextually type an initializer from an inherited static\n * declaration, so a bare `static $policies = [{ scope: (ctx) => … }]` leaves\n * `ctx` an implicit `any` — the return type is still checked against the base's\n * declaration, but the author gets no help writing the body. Naming the type is\n * what turns the hook into a typed one.\n *\n * `${model}Policy` is a `type` and `${model}ScopedPolicy` is a class, which is\n * the split their uses actually want. The scoped one *has* to be a class —\n * abstract members are the entire mechanism. The plain one is only ever an\n * annotation (`static $policies: UserPolicy[] = [...]`), and emitting it as a\n * class would put two runtime declarations plus a value import of `Policy` into\n * every generated `models.ts`, once per model, to serve a use nobody has: an\n * author who wants methods without the mandatory write halves extends\n * `Policy<…>` from `gemi/orm` directly.\n */\nfunction policyTypes(model: string): string {\n return `\nexport type ${model}Policy = ModelPolicy<\n WhereInput<${model}Types>,\n CreateInput<${model}Types>,\n ${model}Scalars\n>;\n\n// The same shape with \\`scope\\`, \\`onCreate\\` and \\`onUpdate\\` abstract, so a policy\n// that scopes cannot omit the write halves. The runtime refuses those\n// combinations too — this makes it \\`TS2515\\` at the class declaration instead of\n// an error on the first write that reaches production.\nexport abstract class ${model}ScopedPolicy extends ScopedPolicy<\n WhereInput<${model}Types>,\n CreateInput<${model}Types>,\n ${model}Scalars\n> {}\n`;\n}\n\nfunction operation(model: string, op: ReadOperation): string {\n const types = `${model}Types`;\n const argsType = `${op.args}<${types}>`;\n const returns = op.returns(types);\n // `options` is a *second parameter* rather than a key inside `args`, so the\n // args type keeps describing exactly what the *query* accepts — one shape,\n // matching `READ_ARGS` in the compiler, with nothing in it the compiler would\n // reject. It also keeps the flag away from the plan key, which it must not\n // reach, since it does not change the SQL.\n return `\n static ${op.name}<T extends ${argsType}>(\n args${op.required ? \"\" : \"?\"}: Subset<T, ${argsType}>,\n options?: ExecOptions,\n ): Promise<${returns}> {\n return this.$exec(\"${op.name}\", args, options) as Promise<${returns}>;\n }\n`;\n}\n\n/**\n * `count`, whose result depends on whether it was given a `select`.\n *\n * Without one it is a plain `number`. With one it is Prisma's object of\n * per-field counts — `{ _all: 3, email: 2 }`, where each field's number is the\n * rows whose column is *not null*. Both spellings are Prisma's, so the overload\n * is what keeps the return type exact rather than widening it to\n * `number | object` for every caller.\n *\n * `CountPayload` is the mapper: it turns the caller's select into the shape it\n * produces, which is how `count({ select: { email: true } })` narrows to\n * `{ email: number }` and not to the whole model. Prisma spells the same thing\n * `GetScalarType<T[\"select\"], <M>CountAggregateOutputType>`, whose second\n * parameter carries nothing the first does not.\n */\nfunction countOperation(model: string): string {\n const types = `${model}Types`;\n return `\n static count(args?: Omit<CountArgs<${types}>, \"select\">): Promise<number>;\n static count<T extends CountArgs<${types}>>(\n args: SelectSubset<T, CountArgs<${types}>> & {\n select: NonNullable<T[\"select\"]>;\n },\n ): Promise<CountPayload<T[\"select\"]>>;\n static count(args?: unknown): Promise<unknown> {\n return this.$exec(\"count\", args as never);\n }\n`;\n}\n\n/**\n * `aggregate` — `_count`, `_avg`, `_sum`, `_min`, `_max` over a filtered set.\n *\n * `AggregatePayload<M, T>` is what makes `_max: { position: true }` narrow to\n * `{ _max: { position: number | null } }` rather than to every field of every\n * function. It also restricts `_sum` and `_avg` to numeric columns and\n * `_min`/`_max` to orderable ones, matching `NUMERIC` and its sibling in\n * `compile/aggregate.ts` — so a `_sum` over a `String` is a compile error at the\n * same place the runtime would refuse it.\n *\n * `groupBy` is beside it, and takes `GroupByOrderByInput` rather than the\n * `OrderByInput` the other reads take, because its ordering may name an\n * aggregate and theirs may name a relation — different grammars, not a wider\n * one (#340). One rule of its is still a runtime check.\n *\n * `orderBy` may only name a column that is in `by`. Expressing that in the type\n * would mean making `orderBy`'s key set depend on the `by` literal, which is\n * possible and which produces an error message about a mapped type rather than\n * about the field. `compile/group-by.ts` refuses it by name instead, saying\n * which field and why. A compile-time error would be better; a *worse-worded*\n * compile-time error is not.\n */\nfunction aggregateOperation(model: string): string {\n const types = `${model}Types`;\n return `\n static aggregate<T extends AggregateArgs<${types}>>(\n args: Subset<T, AggregateArgs<${types}>>,\n ): Promise<AggregatePayload<${types}, T>> {\n return this.$exec(\"aggregate\", args) as Promise<\n AggregatePayload<${types}, T>\n >;\n }\n\n static groupBy<T extends GroupByArgs<${types}>>(\n args: Subset<T, GroupByArgs<${types}>>,\n ): Promise<GroupByPayload<${types}, T>> {\n return this.$exec(\"groupBy\", args) as Promise<\n GroupByPayload<${types}, T>\n >;\n }\n`;\n}\n\n/**\n * The write surface.\n *\n * `create`, `update`, `delete` and `upsert` return a payload narrowed by the\n * caller's `select` / `include`, exactly as the reads do — and, like the\n * `*OrThrow` reads, they never resolve to `null`: Prisma raises when an\n * `update` or a `delete` matches nothing, and `$exec` does the same.\n *\n * The three `*Many` writes return Prisma's `BatchPayload` — `{ count: number }`\n * — rather than rows. Prisma's own `createManyAndReturn` is a separate\n * operation and is not emitted.\n *\n * `args` is required on every one of them: there is no meaningful `create()`\n * with no data, and a `deleteMany()` with no arguments is spelled\n * `deleteMany({})` so that emptying a table stays something you typed on purpose.\n */\nconst WRITE_OPERATIONS: ReadOperation[] = [\n {\n name: \"create\",\n args: \"CreateArgs\",\n returns: (t) => `Payload<${t}, T>`,\n required: true,\n },\n {\n name: \"update\",\n args: \"UpdateArgs\",\n returns: (t) => `Payload<${t}, T>`,\n required: true,\n },\n {\n name: \"delete\",\n args: \"DeleteArgs\",\n returns: (t) => `Payload<${t}, T>`,\n required: true,\n },\n {\n name: \"upsert\",\n args: \"UpsertArgs\",\n returns: (t) => `Payload<${t}, T>`,\n required: true,\n },\n];\n\n/** The writes whose result is a count rather than a payload. */\nconst BATCH_OPERATIONS = [\n { name: \"createMany\", args: \"CreateManyArgs\" },\n { name: \"updateMany\", args: \"UpdateManyArgs\" },\n { name: \"deleteMany\", args: \"DeleteManyArgs\" },\n] as const;\n\nfunction batchOperation(\n model: string,\n op: (typeof BATCH_OPERATIONS)[number],\n): string {\n return `\n static ${op.name}(\n args?: ${op.args}<${model}Types>,\n ): Promise<{ count: number }> {\n return this.$exec(\"${op.name}\", args) as Promise<{ count: number }>;\n }\n`;\n}\n\n/**\n * The types every emitted `models.ts` imports from `gemi/orm`.\n *\n * A fixed list because every model gets every operation, so each of these is\n * used by any non-empty schema. The two `Json` types are conditional: a schema\n * with no `Json` column would import them unused, which `oxlint` reports in the\n * app rather than here.\n */\nconst RUNTIME_IMPORTS = [\n \"Model\",\n \"ScopedPolicy\",\n \"type AggregateArgs\",\n \"type AggregatePayload\",\n \"type CountArgs\",\n \"type CountPayload\",\n \"type CreateArgs\",\n \"type CreateInput\",\n \"type CreateManyArgs\",\n \"type DeleteArgs\",\n \"type DeleteManyArgs\",\n \"type ExecOptions\",\n \"type FindFirstArgs\",\n \"type FindFirstOrThrowArgs\",\n \"type FindManyArgs\",\n \"type FindUniqueArgs\",\n \"type FindUniqueOrThrowArgs\",\n \"type GroupByArgs\",\n \"type GroupByPayload\",\n \"type ModelPolicy\",\n \"type ModelTypeInfo\",\n \"type Payload\",\n \"type PolicyEntry\",\n \"type SelectSubset\",\n \"type Subset\",\n \"type UpdateArgs\",\n \"type UpdateManyArgs\",\n \"type UpsertArgs\",\n \"type WhereInput\",\n];\n\nfunction usesJson(schemas: ModelSchema[]): boolean {\n return schemas.some((schema) =>\n Object.values(schema.fields).some((field) => field.type === \"Json\"),\n );\n}\n\nexport function emitModelsFile(\n schemas: ModelSchema[],\n enums: EnumMap = {},\n): string {\n // A schema with no models needs none of them, and importing twenty-eight\n // unused names would be reported by the *app's* linter, in a generated file it\n // is told not to edit.\n if (schemas.length === 0) return HEADER;\n\n const imports = [...RUNTIME_IMPORTS];\n if (usesJson(schemas)) {\n imports.push(\"type JsonInput\", \"type JsonValue\");\n }\n imports.sort((a, b) => {\n // Values first, then types, each alphabetically — the order `oxlint` and a\n // reader both expect, and stable regardless of what the schema contains.\n const aType = a.startsWith(\"type \");\n const bType = b.startsWith(\"type \");\n if (aType !== bType) return aType ? 1 : -1;\n return a < b ? -1 : a > b ? 1 : 0;\n });\n\n const parts = [\n HEADER,\n `\n// Every argument and result type here comes from \\`gemi/orm\\`, which is what lets\n// an app install \\`prisma\\` alone: nothing in this file resolves to\n// \\`@prisma/client\\`, so nothing forces it into the dependency graph for types\n// that are erased at build. Each model's \\`…Types\\` interface below is the\n// descriptor those generic types read.\n`,\n `import {\n${imports.map((name) => ` ${name},`).join(\"\\n\")}\n} from \"gemi/orm\";\\n`,\n `\\nimport * as schema from \"./schema\";\\n`,\n ];\n\n for (const schema of schemas) {\n parts.push(scalarsType(schema, enums));\n parts.push(createType(schema, enums));\n parts.push(relationsType(schema));\n parts.push(uniqueType(schema, enums));\n parts.push(typesInterface(schema));\n parts.push(instanceShape(schema.name));\n parts.push(policyTypes(schema.name));\n parts.push(`\nexport class ${schema.name}Model extends Model {\n static $schema = schema.${schema.name};\n\n // Says this class came out of the generator, so \\`registerModels\\` can prefer\n // the application's subclass over it without having to *infer* which is which.\n // It reads own-vs-inherited, and a subclass inherits this rather than\n // declaring it — so the mark is on exactly one class per model. See\n // \\`isGeneratedBase\\`.\n //\n // \\`readonly\\` so the initialiser keeps the literal type. \\`Model\\` declares this\n // \\`?: true\\`, and a mutable \\`= true\\` widens to \\`boolean\\` — which is not\n // assignable to it, so every class in this file was a TS2417 until a reviewer\n // regenerating a 79-model schema found 79 of them. \\`tsconfig.generated.json\\`\n // is the check that now says so here rather than in an app.\n static readonly $generated = true;\n\n // Narrowed from \\`Model\\`'s \\`PolicyEntry[]\\` to this model's own, so a policy\n // written for another model is a type error here rather than a scope compiled\n // against columns that do not exist.\n static $policies?: readonly PolicyEntry<\n WhereInput<${schema.name}Types>,\n CreateInput<${schema.name}Types>,\n ${schema.name}Scalars\n >[];\n${READ_OPERATIONS.map((op) => operation(schema.name, op)).join(\"\")}${countOperation(\n schema.name,\n )}${aggregateOperation(schema.name)}${WRITE_OPERATIONS.map((op) => operation(schema.name, op)).join(\n \"\",\n )}${BATCH_OPERATIONS.map((op) => batchOperation(schema.name, op)).join(\n \"\",\n )}${wrapOperation(schema.name)}}\n`);\n }\n\n return parts.join(\"\");\n}\n\nexport function emitIndexFile(schemas: ModelSchema[]): string {\n const imports = schemas.map((s) => ` ${s.name}Model,`).join(\"\\n\");\n const registrations = schemas\n .map((s) => `register(\"${s.name}\", ${s.name}Model);`)\n .join(\"\\n\");\n\n return `${HEADER}\nimport { assertSchemaArtifactVersion, register } from \"gemi/orm\";\n\nimport { ARTIFACT_VERSION } from \"./schema\";\nimport {\n${imports}\n} from \"./models\";\n\nassertSchemaArtifactVersion(ARTIFACT_VERSION);\n\n// Registration is by name, and resolution happens at call time. That is what\n// lets two models reference each other without the generated files forming an\n// import cycle.\n${registrations}\n\nexport * from \"./models\";\nexport * as schema from \"./schema\";\n`;\n}\n\n/**\n * The enum members, keyed by name, so an enum column types as the union of what\n * it can hold rather than as `string`.\n *\n * Read from `dmmf.datamodel.enums` and passed separately because\n * `buildModelSchemas` deliberately drops them: `FieldSchema.enum` keeps the\n * enum's *name* for the runtime, whose only interest is that the value travels\n * as a string. The members matter to the compiler and to nothing else.\n *\n * **`dbName` wins over `name`, and that is a deliberate divergence from\n * Prisma.** A value-level `@map` — `free @map(\"FREE\")` — gives a member two\n * spellings: `free` in the schema, `FREE` in the column. Prisma's client\n * translates between them, so its types say `free`. gemi does not translate: its\n * decoders hand back the string the database returned, and its encoders bind the\n * string they were given, so the value an application sees and writes is `FREE`.\n * Typing these as `name` would describe Prisma's behaviour and mistype gemi's.\n *\n * No schema in this repository has a value-level `@map`, so the differential\n * harness never compares the two — which is exactly why this is written down and\n * asserted in `emit.test.ts` rather than left to be rediscovered.\n */\nfunction enumMap(enums: readonly DMMF.DatamodelEnum[]): EnumMap {\n const out: EnumMap = {};\n for (const item of enums) {\n out[item.name] = item.values.map((value) => value.dbName ?? value.name);\n }\n return out;\n}\n\n/**\n * `warnings` is an out-parameter rather than a return value or a `console.warn`,\n * and both alternatives were tried on the way here.\n *\n * Printing from this file is what #350's review objected to, and the header\n * above is why: *\"Everything here is a pure function of the DMMF so the emitters\n * can be unit tested with no Prisma CLI and no database\"*. A `console.warn` in\n * `fieldSchema` makes `buildModelSchemas` write to stderr, so every unit test of\n * it has to tolerate or stub console output, and the stated invariant stops\n * being true. `bin/orm-generator.ts` already owns that boundary — it holds\n * `warnOnPrismaVersion` and `warnOnDatasource` — and now prints these too.\n *\n * Widening the return type instead would have rippled through every call in\n * `emit.test.ts`, which destructures the schemas directly. A defaulted\n * out-parameter leaves those calls alone and lets the tests that *are* about\n * diagnostics pass an array and read it.\n */\nexport function emitArtifacts(\n models: readonly DMMF.Model[],\n enums: readonly DMMF.DatamodelEnum[] = [],\n warnings: string[] = [],\n): Record<GeneratedFile, string> {\n const schemas = buildModelSchemas(models, warnings);\n return {\n \"schema.ts\": emitSchemaFile(schemas),\n \"models.ts\": emitModelsFile(schemas, enumMap(enums)),\n \"index.ts\": emitIndexFile(schemas),\n };\n}\n"
|
|
13
|
+
"// Runtime model metadata: the shape the Prisma generator plugin emits into an\n// app's `app/models/generated/schema.ts`, and the only thing the compiler is\n// allowed to read identifiers from.\n//\n// Nothing here is discovered from the database at runtime. It is all generated,\n// which is what makes `compile` a pure function and what makes SQL injection\n// structurally impossible: every identifier the compiler emits is looked up in\n// one of these objects first (see the README's invariant 2).\n//\n// The generator deliberately emits *more* than the current iteration reads.\n// Regenerating an app's artifacts is free; changing the shape of the emitted\n// artifact after apps depend on it is not.\n\n/**\n * Bumped whenever the emitted artifact's shape changes in a way the runtime\n * cannot read. Generated `schema.ts` files carry their own literal copy, and\n * `assertSchemaArtifactVersion` compares the two at registration time so a stale\n * `app/models/generated` fails with \"run prisma generate\" rather than with a\n * `TypeError` five stack frames into the compiler.\n *\n * **`FieldSchema.isList` did not bump it**, and the argument given at the time\n * was that the generator is `bin/orm` and the runtime is `orm/`, both shipped\n * by the same `gemi` package at the same version — so a *new* artifact could\n * never be read by an *old* runtime.\n *\n * **That argument is wrong, and #350's review is what showed it.** The two\n * halves do not travel together. The artifact is committed to git; the runtime\n * is a version in a lockfile. A teammate who pulls a branch without installing,\n * or a deploy box a release behind, reads a freshly committed artifact with the\n * previous runtime — and because the version literal in that artifact was never\n * bumped, `assertSchemaArtifactVersion` sees `1 === 1` and says nothing.\n *\n * The consequence is worse than being unable to read the column, because\n * `isClientSideDefault` used to be a *denylist* — anything that was not\n * `autoincrement` or `dbgenerated` counted as gemi's. An old runtime meeting\n * `{ kind: \"nanoid\" }` therefore answered \"yes, gemi supplies this\", included\n * the column in the insert, asked `clientSideValue` for a value, got\n * `undefined` from its `default:` arm, and bound **NULL**. On a required column\n * that is a NOT NULL violation; on a nullable one it writes NULL into every row\n * forever, which is strictly harder to find than a column that was omitted.\n *\n * So this is now **2**, and `isClientSideDefault` is an allowlist. The bump is\n * the mechanism that catches the skew — both directions fail with \"run\n * `prisma generate`\" — and the allowlist is what makes the failure loud rather\n * than silent if one ever slips past it.\n */\nexport const SCHEMA_ARTIFACT_VERSION = 3;\n\n/**\n * Every artifact version this runtime reads. **3** added\n * `FieldSchema.encrypted`, and is the version emitted only for a schema that\n * uses it: a runtime that predates encrypted columns would ignore the flag and\n * write those columns in plaintext, which is exactly the silent skew this\n * version check exists to make loud. A schema without encrypted columns is\n * still emitted as **2** — it is the same artifact — so regenerating does not\n * force every teammate and deploy onto the new runtime for nothing.\n */\nexport const READABLE_ARTIFACT_VERSIONS: readonly number[] = [2, 3];\n\n/** The version a generated artifact for these schemas is stamped with. */\nexport function artifactVersionFor(schemas: readonly ModelSchema[]): number {\n const encrypted = schemas.some((schema) =>\n Object.values(schema.fields).some((field) => field.encrypted === true),\n );\n return encrypted ? 3 : 2;\n}\n\n/**\n * Prisma's scalar types, verbatim. Not SQL types — the mapping from these to a\n * column type is the dialect's business, and it differs (SQLite has no\n * `DateTime` and no `Boolean`).\n */\nexport type ScalarType =\n | \"Int\"\n | \"String\"\n | \"DateTime\"\n | \"Boolean\"\n | \"Float\"\n | \"BigInt\"\n | \"Decimal\"\n | \"Json\"\n | \"Bytes\";\n\n/**\n * Prisma 6.19.2's parser accepts seven default functions, and its client\n * registers client-side generators for **four** of them — `cuid`, `nanoid`,\n * `ulid` and `uuid`. All four produce a column whose DDL carries no `DEFAULT`,\n * so all four are gemi's to supply; that is the whole of #350, and `ulid` was\n * the last one still missing when its review was written.\n *\n * Read off the shipped artifacts rather than the docs: the parser's own string\n * table is `autoincrement ulid cuid dbgenerated nanoid now uuid`, and\n * `prisma migrate diff` on a schema using every one of them emits\n * `TEXT NOT NULL` with no default for each.\n */\nexport type DefaultKind =\n | \"autoincrement\"\n | \"cuid\"\n | \"uuid\"\n | \"nanoid\"\n | \"ulid\"\n | \"now\"\n | \"dbgenerated\"\n | \"value\";\n\n/** What `@default(nanoid())` means when written without an argument. */\nexport const NANOID_DEFAULT_LENGTH = 21;\n\nexport interface DefaultSpec {\n kind: DefaultKind;\n /** Present only for `kind: \"value\"` — the literal written in the schema. */\n value?: unknown;\n /**\n * Present only for `kind: \"nanoid\"` — the id's length in characters.\n *\n * Part of the default rather than a detail of it: `nanoid()` is 21 characters\n * and `nanoid(10)` is 10, and the column Prisma's migration emits is a plain\n * `TEXT` that constrains neither. So the length lives nowhere but the schema,\n * and if it does not survive into this artifact the runtime cannot mint the\n * same id the Prisma client would.\n */\n length?: number;\n /**\n * Present only for `kind: \"uuid\"` — `4` or `7`.\n *\n * The same reasoning as `length`, and it took the same bug to notice: `uuid()`\n * and `uuid(7)` are one `TEXT` column apart in the DDL and two different\n * *kinds* of identifier in practice. A v7 is time-ordered, which is the entire\n * reason a schema asks for one — order by it and rows come back in insertion\n * order, and a B-tree insert lands next to the last one. Minting a v4 where\n * the schema said 7 loses both, silently, in a column that still looks like a\n * UUID.\n *\n * Absent on an artifact generated before this existed. The runtime reads a\n * missing version as 4, which is what `uuid()` meant then and means now —\n * though `SCHEMA_ARTIFACT_VERSION` makes that pairing fail loudly first.\n *\n * `cuid` has a version argument too and does **not** get a field here: `cuid(2)`\n * is refused by the generator rather than recorded, so the only cuid that\n * reaches an artifact is v1. See `emit.ts`.\n */\n version?: number;\n}\n\nexport interface FieldSchema {\n /** The field name as an app author writes it: `organizationId`. */\n name: string;\n /** The column name in the database: `@map(...)` if present, else `name`. */\n column: string;\n type: ScalarType;\n nullable: boolean;\n isId: boolean;\n isUpdatedAt: boolean;\n /**\n * A Prisma **scalar list** — `tags String[]`. Postgres only; SQLite has no\n * array type and Prisma refuses the declaration there outright.\n *\n * **A flag beside `type` rather than a `ScalarType` constructor**, and the\n * choice reaches further than it looks. `type` keeps meaning the *element*\n * type, so every `switch (field.type)` already written — `encode`, `decode`,\n * `castParameter`, the lateral strategy's `jsonConverter`, `COMPOSITE_IN_TYPES`\n * — keeps reading correctly and only has to ask this one extra question where\n * a list genuinely differs. A `\"String[]\"` member of the union would have made\n * every one of those switches silently non-exhaustive instead: no compile\n * error, just a `default:` branch answering for a shape it had never seen.\n *\n * Absent rather than `false` on a non-list field, so an artifact generated\n * before this existed is byte-identical to one generated after it — see the\n * note on `SCHEMA_ARTIFACT_VERSION`, which is deliberately *not* bumped here.\n */\n isList?: boolean;\n /**\n * Set when the field is a Prisma enum. The enum's members are strings on the\n * wire, so `type` is `\"String\"` and this carries the name for later.\n */\n enum?: string;\n default?: DefaultSpec;\n /**\n * `/// @gemi.encrypted` on the field: stored as an encrypted envelope and\n * decrypted on every read (`orm/encryption.ts`). Only on a non-list `String`\n * that is not a key, has no default and is not a relation's foreign key —\n * the generator refuses the rest.\n *\n * Absent rather than `false`, so an artifact without encrypted columns is\n * byte-identical to one generated before this existed. An artifact *with*\n * one is emitted as version 3, which a runtime that predates this refuses —\n * see `SCHEMA_ARTIFACT_VERSION`.\n */\n encrypted?: true;\n}\n\nexport interface RelationSchema {\n /** The field name on the owning model: `accounts`. */\n name: string;\n /** The related model's *name*, resolved through the registry at call time. */\n model: string;\n kind: \"one\" | \"many\";\n /**\n * Prisma's relation name, shared by both sides. It is what lets the planner\n * find the other side of a relation whose `from`/`to` live on that side only.\n */\n relationName: string;\n /** Local fields. Empty on the side that does not hold the foreign key. */\n from: string[];\n /** Fields on the related model. Empty on the non-owning side, as above. */\n to: string[];\n nullable: boolean;\n /** Implicit many-to-many join table. Emitted now, unused until iteration 3. */\n joinTable?: {\n table: string;\n a: string;\n b: string;\n /**\n * Which column holds the owner of **this** relation field, for a\n * *self*-referential implicit m-n where `a === b` and the model names\n * cannot say.\n *\n * Prisma assigns the columns by **field name, alphabetically**: the\n * alphabetically-first of the relation's two fields has its owner in `A`.\n * Determined by experiment against a generated client, in both directions,\n * rather than from the docs — the two candidate rules (declaration order\n * and field-name order) disagree only when a schema declares the fields out\n * of alphabetical order, which is exactly the case that would have shipped\n * reversed.\n *\n * Absent for a non-self m-n, where comparing the model names answers it,\n * and absent in artifacts generated before this existed — which is why\n * reading it is optional rather than required. Such an artifact behaves\n * exactly as it did: a self-referential m-n is refused.\n */\n ownerColumn?: \"A\" | \"B\";\n };\n}\n\nexport interface ModelSchema {\n /** Registry key: `\"User\"`. */\n name: string;\n /** `@@map(...)` if present, else `name`. Never inferred or pluralised. */\n table: string;\n /** Insertion-ordered by schema declaration — this is the `select` order. */\n fields: Record<string, FieldSchema>;\n primaryKey: string[];\n /** Single-field `@unique` and composite `@@unique`, in declaration order. */\n uniques: string[][];\n relations: Record<string, RelationSchema>;\n}\n\nexport class StaleSchemaArtifactError extends Error {\n constructor(found: number) {\n super(\n `The generated model artifact is version ${found}, but this version of ` +\n `gemi reads version ${READABLE_ARTIFACT_VERSIONS.join(\" or \")}. Re-run ` +\n `\\`prisma generate\\` ` +\n `to refresh app/models/generated.`,\n );\n this.name = \"StaleSchemaArtifactError\";\n }\n}\n\n/**\n * Called by the generated `index.ts` with its own artifact version literal.\n */\nexport function assertSchemaArtifactVersion(version: number): void {\n if (!READABLE_ARTIFACT_VERSIONS.includes(version)) {\n throw new StaleSchemaArtifactError(version);\n }\n}\n",
|
|
14
|
+
"import type { DMMF } from \"@prisma/generator-helper\";\n\nimport {\n NANOID_DEFAULT_LENGTH,\n artifactVersionFor,\n type DefaultSpec,\n type FieldSchema,\n type ModelSchema,\n type RelationSchema,\n type ScalarType,\n} from \"../../orm/schema\";\n\n// Build-time only. This file runs inside the Prisma generator process and may\n// import from `@prisma/*` freely; the ORM *runtime* under `packages/gemi/orm/`\n// may not, and there is an acceptance test that greps for exactly that.\n//\n// Everything here is a pure function of the DMMF so the emitters can be unit\n// tested with no Prisma CLI and no database, and so running the generator twice\n// over an unchanged schema produces a byte-identical file.\n\nexport const GENERATED_FILES = [\"schema.ts\", \"models.ts\", \"index.ts\"] as const;\nexport type GeneratedFile = (typeof GENERATED_FILES)[number];\n\nconst HEADER = `// Generated by the gemi ORM generator. Do not edit.\n//\n// Re-run \\`prisma generate\\` (or \\`prisma migrate dev\\`) to refresh this file.\n// It is committed on purpose: diffs stay reviewable and CI needs no codegen step.\n`;\n\nconst SCALAR_TYPES: Record<string, ScalarType> = {\n int: \"Int\",\n string: \"String\",\n datetime: \"DateTime\",\n boolean: \"Boolean\",\n float: \"Float\",\n bigint: \"BigInt\",\n decimal: \"Decimal\",\n json: \"Json\",\n bytes: \"Bytes\",\n};\n\n// Scalars the artifact can describe but no dialect can round-trip yet, mapped\n// to the reason. Refusing at generation time rather than emitting the column:\n// the alternative is a model that generates cleanly and then returns a value\n// that silently disagrees with the type Prisma gave it. That is the failure\n// mode this iteration is built around.\n//\n// **A scalar list used to be refused here too, and is not any more** (#300).\n// The refusal was right for as long as no dialect could decode an array, and\n// its comment pointed at \"iteration 2\", which shipped without doing it. What\n// changed the answer is not that lists became decodable — it is *where* the\n// refusal belongs. A list is legal on Postgres and a validation error on\n// SQLite, but this artifact is generated once and is dialect-agnostic by\n// design: `DATABASE_URL` can name a different database than `prisma generate`\n// saw. So refusing here would refuse a column the running dialect can serve\n// perfectly well, and the honest place to say no is the dialect, at compile\n// time, naming which one — the shape `UnsupportedDialectError` already has.\n// `SqliteDialect.listFilters` is that refusal.\n//\n// `Decimal[]` is still refused, and by this table rather than by a list rule:\n// a list of a scalar no dialect can round-trip is not more supportable for\n// being a list.\nconst UNSUPPORTED_SCALARS: Partial<Record<ScalarType, string>> = {\n Decimal:\n \"Prisma types a Decimal field as `Prisma.Decimal`, but SQLite stores it \" +\n \"as a REAL and the driver returns a JS number — so the value would be a \" +\n \"float pretending to be an arbitrary-precision decimal, losing exactly \" +\n \"the precision the type exists to keep\",\n};\n\nexport class UnsupportedSchemaError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"UnsupportedSchemaError\";\n }\n}\n\nfunction scalarType(model: string, field: DMMF.Field): ScalarType {\n const mapped = SCALAR_TYPES[field.type.toLowerCase()];\n if (!mapped) {\n throw new UnsupportedSchemaError(\n `${model}.${field.name} has the scalar type '${field.type}', which the ` +\n `gemi ORM generator does not know how to map.`,\n );\n }\n\n const reason = UNSUPPORTED_SCALARS[mapped];\n if (reason) {\n throw new UnsupportedSchemaError(\n `${model}.${field.name} is a ${mapped}, which the gemi ORM does not ` +\n `support yet: ${reason}. Keep using the Prisma client for this model, ` +\n `or change the field's type.`,\n );\n }\n\n return mapped;\n}\n\n/**\n * Is this DMMF default a *function* call — `autoincrement()`, `cuid()`, `now()`\n * — rather than a literal or a list?\n *\n * A hand-written predicate rather than the inline\n * `typeof value === \"object\" && !Array.isArray(value)` this replaces, for two\n * reasons. TypeScript does not narrow a `readonly T[]` out of a union through\n * `Array.isArray`, whose signature asserts `arg is any[]` — so the inline form\n * left `value.name` unresolved, which is the error that surfaced the moment\n * `bin/orm` entered the tsconfig. And `typeof null === \"object\"`, so the inline\n * form would have dereferenced a null default rather than falling through to\n * the literal branch.\n *\n * Note it does **not** additionally require a string `name`, though the first\n * version of it did. That looked like a tightening and was a behaviour change:\n * an object default carrying no `name` used to reach `switch (undefined)` and\n * come out as `{ kind: \"dbgenerated\" }`, and requiring the name sent it to\n * `{ kind: \"value\" }` instead. DMMF's `FieldDefault` always carries one, so\n * neither path is reachable — but the two are not equally safe if it ever is:\n * `dbgenerated` omits the column and lets the database supply it, while `value`\n * would try to bind the object itself as the column's value. The safer of two\n * unreachable branches is still the one to keep.\n */\nfunction isFunctionDefault(\n value: unknown,\n): value is { name?: string; args?: readonly (string | number)[] } {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n/**\n * The first argument, when it is a number.\n *\n * DMMF types an argument as `string | number`, so a non-number is not excluded\n * by the types even though Prisma's parser only produces numbers here. The\n * caller warns rather than falling back silently: a `nanoid` recorded at the\n * wrong width, or a `uuid` at the wrong version, is authoritative-looking and\n * wrong, and nothing downstream can tell it apart from what the schema asked\n * for.\n */\nfunction numericArg(\n args: readonly (string | number)[] | undefined,\n): number | undefined {\n const [first] = args ?? [];\n return typeof first === \"number\" ? first : undefined;\n}\n\n/**\n * Translates one DMMF default, and reports what it could not translate.\n *\n * **The warning lives in the `default:` arm rather than in a second pass over\n * the same field**, which is where #350's review put it. There used to be a\n * `RECOGNISED_DEFAULTS` set restating every `case` label so a separate function\n * could ask \"did the switch handle this?\" — a hand-maintained copy of a list\n * the switch already is. This arm *is* that question, so the copy is gone and\n * the drift it could suffer is now unrepresentable.\n */\nfunction defaultSpec(\n model: string,\n field: DMMF.Field,\n warnings: string[],\n): DefaultSpec | undefined {\n if (!field.hasDefaultValue || field.default === undefined) return undefined;\n\n const value = field.default;\n if (!isFunctionDefault(value)) return { kind: \"value\", value: value as unknown };\n\n const column = `${model}.${field.name}`;\n\n switch (value.name) {\n case \"autoincrement\":\n case \"now\":\n case \"dbgenerated\":\n return { kind: value.name };\n\n // The four Prisma fills in its own client. Each gets a `TEXT NOT NULL` with\n // no `DEFAULT`, so each is gemi's to supply or the row does not insert —\n // #350, and `ulid` is the one its first fix still missed.\n case \"ulid\":\n return { kind: \"ulid\" };\n\n case \"cuid\": {\n // The DMMF normalises a bare `cuid()` to `args: [1]`, so this is always\n // present in practice; absent means a hand-built DMMF, and v1 is what\n // `cuid()` has always meant.\n const version = numericArg(value.args) ?? 1;\n if (version !== 1) {\n // Refused rather than recorded, and rather than silently minting a v1.\n // Prisma builds a cuid2 with `@paralleldrive/cuid2`, which hashes with\n // SHA-3; gemi cannot reproduce that without vendoring the hash, and the\n // two formats do not even agree on length — 24 characters against v1's\n // 25. Emitting a v1 here is what the generator did before, which put\n // ids of the wrong shape in a column Prisma would fill differently.\n throw new UnsupportedSchemaError(\n `${column} is @default(cuid(${version})), which the gemi ORM cannot ` +\n `generate: Prisma mints a cuid2 through @paralleldrive/cuid2, ` +\n `whose output gemi cannot reproduce. Use @default(cuid(1)), or ` +\n `keep the Prisma client for this model.`,\n );\n }\n return { kind: \"cuid\" };\n }\n\n case \"uuid\": {\n const version = numericArg(value.args) ?? 4;\n if (version !== 4 && version !== 7) {\n // Prisma's own client throws \"Invalid UUID generator arguments\" for\n // these; saying so at generation time is the same answer, earlier.\n throw new UnsupportedSchemaError(\n `${column} is @default(uuid(${version})), and the only UUID ` +\n `versions Prisma generates are 4 and 7.`,\n );\n }\n return { kind: \"uuid\", version };\n }\n\n case \"nanoid\": {\n const length = numericArg(value.args);\n if (length === undefined && (value.args?.length ?? 0) > 0) {\n warnings.push(\n `gemi ORM: ${column} is @default(nanoid(${String(value.args?.[0])})), ` +\n `whose argument is not a number. The length was recorded as ` +\n `${NANOID_DEFAULT_LENGTH}, so every id gemi writes to this column ` +\n `will be ${NANOID_DEFAULT_LENGTH} characters — check the schema.`,\n );\n }\n return { kind: \"nanoid\", length: length ?? NANOID_DEFAULT_LENGTH };\n }\n\n default:\n warnings.push(unrecognisedDefaultWarning(column, model, value.name));\n return { kind: \"dbgenerated\" };\n }\n}\n\n/**\n * A function default this generator has no case for.\n *\n * It is recorded as the database's, which is the only guess available. When the\n * guess is wrong — the default is one Prisma fills client-side, as `nanoid()`\n * and `ulid()` both were — nothing fails at generation time and nothing fails\n * at boot, because the field *looks* handled: it was classified.\n *\n * **Both outcomes are reported, not just the loud one.** This used to return\n * early for a nullable column, on the reasoning that \"a nullable one is nobody's\n * problem either way\". That is true for a genuinely database-side default and\n * false for exactly the case the warning exists to catch: an unrecognised\n * *client-side* default on a nullable column is omitted from the insert, the\n * database has no `DEFAULT` to supply, and the row lands with NULL where an id\n * belonged. Nothing fails at insert or at read. It surfaces much later, when a\n * lookup by that id finds nothing.\n *\n * For the same reason the old text's first suggestion — \"make the field\n * optional\" — is gone. It converted a loud NOT NULL failure into that silent\n * one.\n *\n * A warning rather than a refusal: most `dbgenerated(...)` columns really are\n * the database's, and refusing would break schemas that generate and run\n * correctly today. But silence is what made #350 cost an afternoon — the\n * generator is the only place that still knows the function's *name*, and by\n * the time a row is rejected all that is left is a column that \"should have had\n * a default\".\n */\nfunction unrecognisedDefaultWarning(\n column: string,\n model: string,\n name: string | undefined,\n): string {\n // `isFunctionDefault` deliberately admits an object default carrying no\n // `name`, and that path is the *strongest* case for this warning rather than\n // one to skip: the generator called the column the database's with no name to\n // base the guess on at all.\n const called = name ? `${name}()` : \"a function this generator cannot name\";\n\n return (\n `gemi ORM: ${column} defaults to ${called}, which this generator does not ` +\n `recognise, so it is recorded as a database-side default and the ORM will ` +\n `omit the column on insert. If Prisma fills that default in its own client ` +\n `— as it does for cuid, uuid, nanoid and ulid — the column has no default ` +\n `in the database either, so every write to ${model} either fails on NOT ` +\n `NULL or silently stores NULL. Give the field a default the ORM knows, or ` +\n `upgrade gemi.`\n );\n}\n\nfunction fieldSchema(\n model: string,\n field: DMMF.Field,\n warnings: string[],\n): FieldSchema {\n // Key order here is the key order in the emitted file. Keep it stable.\n const schema: FieldSchema = {\n name: field.name,\n column: field.dbName ?? field.name,\n type: field.kind === \"enum\" ? \"String\" : scalarType(model, field),\n nullable: !field.isRequired,\n isId: field.isId,\n isUpdatedAt: field.isUpdatedAt === true,\n };\n\n // Prisma enums travel as strings on the wire, so `type` stays `\"String\"` and\n // the enum's identity is recorded separately for a later iteration.\n if (field.kind === \"enum\") schema.enum = field.type;\n\n // A scalar list — `tags String[]`. `type` above is already the *element*\n // type, which is the whole reason this is a flag: the generator says what the\n // column holds and how many of them, and the dialect decides what that is in\n // SQL. Set rather than always-emitted so a schema with no list generates the\n // artifact it generated before this existed, byte for byte.\n //\n // Deliberately after the `scalarType` call above rather than before it, so a\n // `Decimal[]` is refused as a **Decimal** — with the precision reasoning in\n // `UNSUPPORTED_SCALARS`, which is the part a reader needs — rather than being\n // admitted as a list of something no dialect can round-trip one of.\n if (field.isList) schema.isList = true;\n\n const def = defaultSpec(model, field, warnings);\n if (def) schema.default = def;\n\n // Last, so an artifact without encrypted columns keeps its key order and is\n // byte-identical to one generated before this existed.\n if (isEncryptedField(field)) {\n assertEncryptable(model, field);\n schema.encrypted = true;\n }\n\n return schema;\n}\n\n/**\n * `/// @gemi.encrypted` in the field's doc comment. A Prisma schema cannot\n * carry custom attributes, and a triple-slash comment is the one thing the\n * DMMF hands a generator per field — the same channel Prisma's own ecosystem\n * uses for annotations.\n */\nconst ENCRYPTED_ANNOTATION = /(^|\\s)@gemi\\.encrypted(?![\\w.])/;\n\nfunction isEncryptedField(field: DMMF.Field): boolean {\n return typeof field.documentation === \"string\" && ENCRYPTED_ANNOTATION.test(field.documentation);\n}\n\n/**\n * Refused at generation time rather than at the first query: every one of\n * these is a schema that cannot work, and the schema is where it is fixed.\n *\n * - **Only `String`.** The envelope is text, and the ORM hands back the string\n * that was written. A non-string would need a serialisation the type does\n * not record.\n * - **Not a key, not unique, not a foreign key.** Each write stores a\n * different random ciphertext, so equality on the column means nothing: a\n * unique index would never collide and a join would never match.\n * - **No `@default`.** A default is filled in after encryption runs (or by the\n * database), so it would be stored in plaintext and then fail to decrypt.\n */\nfunction assertEncryptable(model: string, field: DMMF.Field): void {\n const name = `${model}.${field.name}`;\n const refuse = (why: string) => {\n throw new UnsupportedSchemaError(`gemi ORM: ${name} is marked @gemi.encrypted, but ${why}`);\n };\n if (field.kind !== \"scalar\" || field.type !== \"String\") {\n refuse(`only String columns can be encrypted (it is ${field.type}).`);\n }\n if (field.isList) refuse(\"a list column cannot be encrypted.\");\n if (field.isId) refuse(\"an @id cannot be encrypted: it could never be looked up.\");\n if (field.isUnique) {\n refuse(\"an @unique column cannot be encrypted: each write stores a different ciphertext, so the index would never collide.\");\n }\n if (field.hasDefaultValue) {\n refuse(\"a column with @default cannot be encrypted: the default would be stored in plaintext.\");\n }\n}\n\nfunction relationSchema(\n field: DMMF.Field,\n joinTable: RelationSchema[\"joinTable\"],\n): RelationSchema {\n const relation: RelationSchema = {\n name: field.name,\n model: field.type,\n kind: field.isList ? \"many\" : \"one\",\n relationName: field.relationName ?? \"\",\n from: [...(field.relationFromFields ?? [])],\n to: [...(field.relationToFields ?? [])],\n nullable: !field.isRequired,\n };\n if (joinTable) relation.joinTable = joinTable;\n return relation;\n}\n\n/**\n * Prisma's implicit many-to-many relations have no join model in the datamodel:\n * both sides are lists holding no foreign key. The table Prisma creates for\n * them is `_<relationName>` with columns `A` and `B`, ordered by the two model\n * names alphabetically. Emitted now, unused until iteration 3.\n */\nfunction implicitJoinTable(\n model: DMMF.Model,\n field: DMMF.Field,\n byRelationName: Map<string, { model: string; field: DMMF.Field }[]>,\n): RelationSchema[\"joinTable\"] | undefined {\n if (!field.isList || !field.relationName) return undefined;\n if ((field.relationFromFields ?? []).length > 0) return undefined;\n\n const sides = byRelationName.get(field.relationName) ?? [];\n if (sides.length !== 2) return undefined;\n if (!sides.every((side) => side.field.isList)) return undefined;\n\n const [first, second] = [model.name, field.type].sort();\n const table = `_${field.relationName}`;\n\n // On a *self*-referential implicit m-n both names are the same string, so\n // `a === b` and the model names cannot say which column holds which end.\n //\n // Prisma assigns them by **field name, alphabetically**: the\n // alphabetically-first of the relation's two fields has its owner in `A`.\n // Established by experiment against a generated client — connecting through\n // each field in turn and reading the join table — because the plausible rule\n // (declaration order) is indistinguishable from this one on any schema whose\n // fields happen to be declared alphabetically, and disagrees on every other.\n // Guessing would have reversed the relation silently on exactly those.\n if (first === second) {\n const names = sides.map((side) => side.field.name).sort();\n return {\n table,\n a: first,\n b: second,\n ownerColumn: field.name === names[0] ? (\"A\" as const) : (\"B\" as const),\n };\n }\n\n return { table, a: first, b: second };\n}\n\n/** Single-field `@unique` plus composite `@@unique`, deduplicated, in order. */\nfunction uniques(model: DMMF.Model): string[][] {\n const seen = new Set<string>();\n const out: string[][] = [];\n\n const push = (fields: string[]) => {\n // NUL cannot appear in a field name, so it cannot merge two distinct groups.\n const key = fields.join(\"\\u0000\");\n if (seen.has(key)) return;\n seen.add(key);\n out.push(fields);\n };\n\n for (const field of model.fields) {\n if (field.kind !== \"object\" && field.isUnique) push([field.name]);\n }\n for (const group of model.uniqueFields) push([...group]);\n\n return out;\n}\n\nexport function buildModelSchema(\n model: DMMF.Model,\n byRelationName: Map<string, { model: string; field: DMMF.Field }[]>,\n warnings: string[] = [],\n): ModelSchema {\n const fields: Record<string, FieldSchema> = {};\n const relations: Record<string, RelationSchema> = {};\n\n for (const field of model.fields) {\n if (field.kind === \"object\") {\n relations[field.name] = relationSchema(\n field,\n implicitJoinTable(model, field, byRelationName),\n );\n continue;\n }\n if (field.kind === \"unsupported\") {\n // Prisma's own client omits `Unsupported(...)` columns from its result\n // types, so omitting them keeps our result shape identical to Prisma's.\n continue;\n }\n fields[field.name] = fieldSchema(model.name, field, warnings);\n }\n\n const primaryKey = model.primaryKey\n ? [...model.primaryKey.fields]\n : model.fields.filter((field) => field.isId).map((field) => field.name);\n\n const keys = uniques(model);\n assertEncryptedNotKeys(model.name, fields, primaryKey, keys, relations);\n\n return {\n name: model.name,\n table: model.dbName ?? model.name,\n fields,\n primaryKey,\n uniques: keys,\n relations,\n };\n}\n\n/** The model-level half of `assertEncryptable`: compound keys and foreign keys. */\nfunction assertEncryptedNotKeys(\n model: string,\n fields: Record<string, FieldSchema>,\n primaryKey: string[],\n keys: string[][],\n relations: Record<string, RelationSchema>,\n): void {\n for (const field of Object.values(fields)) {\n if (field.encrypted !== true) continue;\n const name = `${model}.${field.name}`;\n if (primaryKey.includes(field.name) || keys.some((key) => key.includes(field.name))) {\n throw new UnsupportedSchemaError(\n `gemi ORM: ${name} is marked @gemi.encrypted, but it is part of a ` +\n `primary or unique key: each write stores a different ciphertext, ` +\n `so the key could never match.`,\n );\n }\n for (const relation of Object.values(relations)) {\n if (relation.from.includes(field.name)) {\n throw new UnsupportedSchemaError(\n `gemi ORM: ${name} is marked @gemi.encrypted, but it is the foreign ` +\n `key of ${model}.${relation.name}: a relation cannot join on a ciphertext.`,\n );\n }\n }\n }\n}\n\nexport function buildModelSchemas(\n models: readonly DMMF.Model[],\n warnings: string[] = [],\n): ModelSchema[] {\n const byRelationName = new Map<\n string,\n { model: string; field: DMMF.Field }[]\n >();\n for (const model of models) {\n for (const field of model.fields) {\n if (field.kind !== \"object\" || !field.relationName) continue;\n const sides = byRelationName.get(field.relationName) ?? [];\n sides.push({ model: model.name, field });\n byRelationName.set(field.relationName, sides);\n }\n }\n\n // Sorted by name rather than left in declaration order, so reordering the\n // Prisma schema does not churn the generated diff.\n return [...models]\n .sort((a, b) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0))\n .map((model) => buildModelSchema(model, byRelationName, warnings));\n}\n\n// `JSON.stringify` is the serializer on purpose: the emitted metadata is plain\n// data, the key order is the insertion order built above, and `undefined`\n// members drop out — so the output is deterministic by construction rather than\n// by a formatting convention nobody re-checks.\nfunction literal(value: unknown): string {\n return JSON.stringify(value, null, 2);\n}\n\nexport function emitSchemaFile(schemas: ModelSchema[]): string {\n const parts = [\n HEADER,\n `\\nimport type { ModelSchema } from \"gemi/orm\";\\n`,\n `\\n// Compared against the runtime's own constant when this artifact is\\n`,\n `// registered, so a stale directory fails with \"re-run prisma generate\"\\n`,\n `// rather than with a TypeError inside the compiler.\\n`,\n `export const ARTIFACT_VERSION = ${artifactVersionFor(schemas)};\\n`,\n ];\n\n // `satisfies` rather than a `: ModelSchema` annotation, which is the whole of\n // #262's compile-time half. An annotation *widens*: `fields` becomes\n // `Record<string, FieldSchema>`, so `keyof` it is `string` and nothing built\n // on top of it can tell a column from a typo. `satisfies` checks the literal\n // against the same interface and keeps its keys, so `$schema.fields` carries\n // the model's real column names into the type system — which is what lets\n // `softDeletes` constrain `field` to columns rather than to an instance's\n // keys, where `\"save\"` is as valid a spelling as `\"deletedAt\"`.\n //\n // Type-level only: the emitted value is byte-identical.\n for (const schema of schemas) {\n parts.push(\n `\\nexport const ${schema.name} = ${literal(schema)} satisfies ModelSchema;\\n`,\n );\n }\n\n return parts.join(\"\");\n}\n\n// ---------------------------------------------------------------------------\n// The type descriptor\n//\n// Everything below emits the *facts* about a model that only the generator\n// knows, and leaves the rules to `orm/types.ts`. The split is the whole reason\n// an app no longer installs `@prisma/client`: the emitted file names concrete\n// column types and relation targets, and `gemi/orm` supplies `select`\n// narrowing, the filter grammars and the argument shapes over them.\n//\n// The facts have to be emitted rather than derived from the runtime metadata in\n// `schema.ts`, because the metadata does not record them. A `Json` column's\n// value type, an enum's members and a `String[]`'s element type are all things\n// the DMMF says and `FieldSchema` deliberately does not — `type` there is the\n// *storage* classification the SQL compiler switches on, not a TypeScript type.\n// ---------------------------------------------------------------------------\n\n/**\n * How each storage type surfaces in TypeScript, which is a statement about what\n * this ORM's decoders return rather than about what Prisma's client returns.\n *\n * The two agree today and are not required to: `Bytes` is a `Uint8Array` on\n * both dialects because `dialect/postgres.ts` deliberately views the driver's\n * `Buffer` as one — a divergence it had to *fix* to match, and the kind of thing\n * that used to be asserted only by a type imported from the other library.\n *\n * `Decimal` is unreachable: `UNSUPPORTED_SCALARS` refuses the column before any\n * of this runs. It is listed so the record stays total and a future entry\n * cannot be forgotten here.\n */\nconst TS_SCALARS: Record<ScalarType, string> = {\n Int: \"number\",\n Float: \"number\",\n String: \"string\",\n Boolean: \"boolean\",\n DateTime: \"Date\",\n BigInt: \"bigint\",\n Bytes: \"Uint8Array\",\n Json: \"JsonValue\",\n Decimal: \"never\",\n};\n\n/** A Prisma enum's members, by enum name. */\nexport type EnumMap = Record<string, readonly string[]>;\n\n/**\n * Whether a value needs parentheses before `[]` or `| null` is appended.\n *\n * An enum is the only base that is itself a union, and `\"a\" | \"b\"[]` parses as\n * `\"a\" | (\"b\"[])` — a silently wrong type rather than a syntax error.\n */\nfunction parenthesized(ts: string): string {\n return ts.includes(\" | \") ? `(${ts})` : ts;\n}\n\n/**\n * The element type of a column.\n *\n * `position` distinguishes reading from writing, and today only `Json` cares:\n * a read produces a `JsonValue`, while a write also accepts the two null\n * sentinels, which are the column's two empty states and are not values.\n */\nfunction scalarTs(\n field: FieldSchema,\n enums: EnumMap,\n position: \"read\" | \"write\",\n): string {\n if (field.enum) {\n const members = enums[field.enum];\n // An enum the map does not carry falls back to `string`, which is what the\n // column holds on the wire anyway. Generating a broken union, or throwing\n // over a name the DMMF simply did not repeat, would both be worse than\n // being less specific.\n if (members && members.length > 0) {\n return members.map((member) => JSON.stringify(member)).join(\" | \");\n }\n return \"string\";\n }\n\n if (field.type === \"Json\") {\n return position === \"write\" ? \"JsonInput\" : \"JsonValue\";\n }\n\n return TS_SCALARS[field.type];\n}\n\nfunction fieldTs(\n field: FieldSchema,\n enums: EnumMap,\n position: \"read\" | \"write\",\n): string {\n let ts = scalarTs(field, enums, position);\n if (field.isList) ts = `${parenthesized(ts)}[]`;\n // A `Json` write already spells its own empty states, and `| null` beside them\n // would reintroduce the bare `null` the sentinels exist to refuse.\n if (field.nullable && !(field.type === \"Json\" && position === \"write\")) {\n ts = `${ts} | null`;\n }\n return ts;\n}\n\n/**\n * The columns that hold a relation's foreign key, on this side of it.\n *\n * `RelationSchema.from` is empty on the side that does not own the key, so this\n * is exactly the local columns some relation writes.\n */\nfunction relationBackedColumns(schema: ModelSchema): Set<string> {\n const columns = new Set<string>();\n for (const relation of Object.values(schema.relations)) {\n for (const field of relation.from) columns.add(field);\n }\n return columns;\n}\n\n/**\n * Whether `create` may omit this column.\n *\n * Four reasons, none of them visible in the column's *type*, which is why the\n * descriptor carries the split rather than leaving `orm/types.ts` to guess: the\n * column is nullable, the database supplies a default, it is an `@updatedAt`\n * that the ORM stamps, or **a relation can supply it**.\n *\n * That fourth one is the difference between offering `connect` and offering it\n * usefully. `CreateInput` is the scalar half intersected with the relation half,\n * so a required foreign key stayed required no matter which spelling the caller\n * chose — and Prisma's canonical form,\n *\n * SocialAccount.create({ data: { …, user: { connect: { id: 1 } } } })\n *\n * did not compile, because `userId` was missing from an intersection that\n * demanded it. Prisma avoids this by having two types, `CreateInput` with\n * `connect` and `UncheckedCreateInput` with the raw column, and accepting either\n * at the operation. Here both are offered on one type, so the column has to be\n * optional for the pair to be a real choice.\n *\n * The genuinely-missing case is still refused, just later: `compile/write.ts`\n * raises `MissingRequiredValueError` naming the column when neither spelling\n * supplies it. It has to do that regardless — types are erased, and an untyped\n * caller reaches the compiler with the column absent either way.\n */\nfunction optionalOnCreate(\n field: FieldSchema,\n relationBacked: Set<string>,\n): boolean {\n return (\n field.nullable ||\n field.default !== undefined ||\n field.isUpdatedAt ||\n relationBacked.has(field.name)\n );\n}\n\n/** Prisma field names are `[A-Za-z][A-Za-z0-9_]*`, but emit defensively. */\nfunction propertyName(name: string): string {\n return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(name) ? name : JSON.stringify(name);\n}\n\n/**\n * The model's columns as TypeScript sees them.\n *\n * A `type` alias rather than an `interface`, and the distinction is load-bearing\n * twice over. TypeScript gives an implicit index signature to an object *type\n * alias* and not to an interface, which is what lets this satisfy\n * `ModelTypeInfo`'s `scalars: Record<string, unknown>`. And the emitted\n * `interface ${model}Model extends ${model}Scalars` needs a statically known\n * base, which a named alias is and an indexed access into a generic is not.\n */\nfunction scalarsType(schema: ModelSchema, enums: EnumMap): string {\n const fields = Object.values(schema.fields).map(\n (field) =>\n ` ${propertyName(field.name)}: ${fieldTs(field, enums, \"read\")};`,\n );\n\n return `\nexport type ${schema.name}Scalars = {\n${fields.join(\"\\n\")}\n};\n`;\n}\n\n/**\n * The scalar half of `create`'s `data`.\n *\n * Foreign key columns are present, which is a deliberate difference from\n * Prisma's `<M>CreateInput` — that type hides them and demands the nested\n * `connect` spelling, offering the raw columns only through a second\n * `UncheckedCreateInput`. gemi's write compiler takes the column directly, so\n * describing it as unavailable would have been the types refusing something the\n * runtime does.\n */\nfunction createType(schema: ModelSchema, enums: EnumMap): string {\n const relationBacked = relationBackedColumns(schema);\n const fields = Object.values(schema.fields).map(\n (field) =>\n ` ${propertyName(field.name)}` +\n `${optionalOnCreate(field, relationBacked) ? \"?\" : \"\"}: ` +\n `${fieldTs(field, enums, \"write\")};`,\n );\n\n return `\nexport type ${schema.name}CreateScalars = {\n${fields.join(\"\\n\")}\n};\n`;\n}\n\n/** Where each relation points, and what shape it resolves to. */\nfunction relationsType(schema: ModelSchema): string {\n const relations = Object.values(schema.relations).map(\n (relation) =>\n ` ${propertyName(relation.name)}: { kind: \"${relation.kind}\"; ` +\n `nullable: ${relation.nullable}; target: ${relation.model}Types };`,\n );\n\n // `Record<never, never>` — no keys — and emphatically not\n // `Record<string, never>`, which is `{ [k: string]: never }`. That gave a\n // relation-less model's `WhereInput` an index signature of\n // `RelationFilter<never>`, which every *scalar* key then had to satisfy too:\n // the template's `Membership` could not be filtered, `findUnique`d, updated or\n // deleted by its own primary key. `select` and `orderBy` happened to survive,\n // so it read as partly working rather than broken. See `orm/types.ts`.\n if (relations.length === 0) {\n return `\nexport type ${schema.name}Relations = Record<never, never>;\n`;\n }\n\n return `\nexport type ${schema.name}Relations = {\n${relations.join(\"\\n\")}\n};\n`;\n}\n\n/**\n * The selectors `findUnique` accepts: `@id`, every `@unique`, every `@@unique`.\n *\n * A composite group is one key holding an object, joined by underscores — the\n * spelling Prisma exposes and `compile/unique.ts` resolves, so a model like the\n * template's `SocialAccount` can be fetched by `provider_providerId` at all.\n *\n * `never` when a model has none, which makes `findUnique` uncallable on it\n * rather than callable with nothing that identifies a row.\n */\nfunction uniqueType(schema: ModelSchema, enums: EnumMap): string {\n const groups: string[][] = [];\n const seen = new Set<string>();\n\n const push = (fields: string[]) => {\n if (fields.length === 0) return;\n const key = fields.join(\"\u0000\");\n if (seen.has(key)) return;\n seen.add(key);\n groups.push(fields);\n };\n\n push(schema.primaryKey);\n for (const group of schema.uniques) push(group);\n\n const members = groups.map((group) => {\n // The column type without its nullability: a selector identifies a row, and\n // `null` never does.\n const member = (name: string) => {\n const field = schema.fields[name];\n if (!field) return `${propertyName(name)}: never`;\n const ts = field.isList\n ? `${parenthesized(scalarTs(field, enums, \"read\"))}[]`\n : scalarTs(field, enums, \"read\");\n return `${propertyName(name)}: ${ts}`;\n };\n\n if (group.length === 1) return `{ ${member(group[0])} }`;\n\n const inner = group.map(member).join(\"; \");\n return `{ ${propertyName(group.join(\"_\"))}: { ${inner} } }`;\n });\n\n const union = members.length > 0 ? members.join(\" | \") : \"never\";\n\n return `\nexport type ${schema.name}Unique = ${union};\n`;\n}\n\n/**\n * The descriptor itself: the one type every signature on the model is built\n * from, and the only thing `orm/types.ts` reads.\n */\nfunction typesInterface(schema: ModelSchema): string {\n return `\nexport interface ${schema.name}Types extends ModelTypeInfo {\n scalars: ${schema.name}Scalars;\n relations: ${schema.name}Relations;\n unique: ${schema.name}Unique;\n create: ${schema.name}CreateScalars;\n}\n`;\n}\n\n/**\n * The read surface, and how each operation's return type is built.\n *\n * `returns` is a template over the model's descriptor. The three shapes are:\n * many rows, one row or `null`, and one row (the `*OrThrow` variants, which\n * never resolve to `null` because `$exec` raises instead).\n */\ninterface ReadOperation {\n name: string;\n args: string;\n returns: (types: string) => string;\n /** `findUnique` cannot be called without a `where`, so its args are required. */\n required?: boolean;\n}\n\nconst READ_OPERATIONS: ReadOperation[] = [\n {\n name: \"findMany\",\n args: \"FindManyArgs\",\n returns: (t) => `Payload<${t}, T>[]`,\n },\n {\n name: \"findFirst\",\n args: \"FindFirstArgs\",\n returns: (t) => `Payload<${t}, T> | null`,\n },\n {\n name: \"findFirstOrThrow\",\n args: \"FindFirstOrThrowArgs\",\n returns: (t) => `Payload<${t}, T>`,\n },\n {\n name: \"findUnique\",\n args: \"FindUniqueArgs\",\n returns: (t) => `Payload<${t}, T> | null`,\n required: true,\n },\n {\n name: \"findUniqueOrThrow\",\n args: \"FindUniqueOrThrowArgs\",\n returns: (t) => `Payload<${t}, T>`,\n required: true,\n },\n];\n\n/**\n * `wrap`, typed to reject a partial row at compile time.\n *\n * The parameter is the model's full scalar payload — `Prisma.<M>GetPayload<{}>` —\n * so a `Pick` of it fails to type-check for the ordinary reason that it is\n * missing properties. That single constraint is what lets instances and `select`\n * coexist: a method reading `this.email` can only ever run on a row that\n * actually fetched `email`.\n *\n * The return type intersects the row with the class, so the instance carries both\n * the columns and whatever the application's subclass adds. `this: C` plus\n * `C[\"prototype\"]` is what makes it the *subclass's* instance type rather than\n * the generated base's — `Account.wrap(...)` returns an `Account`, not an\n * `AccountModel`, so a method defined on the subclass is visible on the result.\n *\n * `{ prototype: unknown }` rather than the more obvious\n * `new (...args: never[]) => any`, because `Model`'s constructor is `protected`\n * (which is what stops a directly constructed instance from lying about its\n * columns) and a protected constructor does not satisfy a public construct\n * signature. Constraining on the prototype reads the instance type without\n * caring how — or whether — the class can be constructed from outside.\n *\n * `R` is generic rather than fixed to the payload so a row carrying `include`d\n * relations keeps them in the result type. The constraint still requires *at\n * least* the full scalar set, which is the property that matters.\n */\nfunction wrapOperation(model: string): string {\n const payload = `${model}Scalars`;\n return `\n static wrap<C extends { prototype: unknown }, R extends ${payload}>(\n this: C,\n row: R,\n ): C[\"prototype\"] & R {\n return (Model.wrap as (row: object) => any).call(this, row);\n }\n`;\n}\n\n/**\n * Declaration merging, so an instance's *columns* are visible to methods written\n * on the subclass.\n *\n * An `interface` sharing the class's name merges into its instance type, which is\n * what makes this work:\n *\n * export class User extends UserModel {\n * get displayName() { return this.name ?? this.email ?? \"anonymous\" }\n * }\n *\n * Without it `this.name` does not exist and the entity tier is useless — a\n * wrapper whose methods cannot read the row is not a wrapper. The first version\n * of `wrap` intersected the columns into its *return* type only, which typed the\n * call site correctly and left the class body blind.\n *\n * Emitted as an interface rather than as `declare` fields for two reasons: it\n * reuses the descriptor's own scalar type rather than restating the columns, so\n * the two cannot drift; and it is zero runtime output, which `declare` also is\n * but less obviously.\n *\n * The honest cost: `new UserModel()` now type-checks as having columns it does\n * not have. These classes are constructed by `wrap` and by nothing else — the\n * fifteen operations return plain objects — so the lie is confined to a\n * constructor call no application has a reason to make.\n */\nfunction instanceShape(model: string): string {\n return `\n// Merges the row's columns into the instance type, so a method on a subclass can\n// read \\`this.email\\`. No runtime output.\n//\n// oxlint flags class/interface merging because TypeScript does not check the\n// merged properties are initialised — a directly constructed instance would type\n// as carrying every column while holding none. That hazard is closed rather than\n// accepted: \\`Model\\`'s constructor is \\`protected\\`, so the only way to get an\n// instance is \\`wrap\\`, which assigns a complete row. See bin/orm/emit.ts.\n// oxlint-disable-next-line typescript-eslint/no-unsafe-declaration-merging\nexport interface ${model}Model extends ${model}Scalars {}\n`;\n}\n\n/**\n * The model's policy types, emitted so an application never writes\n * `ModelPolicy<Prisma.UserWhereInput, Prisma.UserCreateInput, …>` by hand.\n *\n * Two names because the two authoring forms need different things, and one name\n * cannot be both a class to extend and a plain type alias:\n *\n * static $policies: UserPolicy[] = [{ scope: (ctx) => … }] // object form\n * class Tenant extends UserScopedPolicy { … } // class form\n *\n * The annotation on the object form is load-bearing rather than decorative.\n * TypeScript does not contextually type an initializer from an inherited static\n * declaration, so a bare `static $policies = [{ scope: (ctx) => … }]` leaves\n * `ctx` an implicit `any` — the return type is still checked against the base's\n * declaration, but the author gets no help writing the body. Naming the type is\n * what turns the hook into a typed one.\n *\n * `${model}Policy` is a `type` and `${model}ScopedPolicy` is a class, which is\n * the split their uses actually want. The scoped one *has* to be a class —\n * abstract members are the entire mechanism. The plain one is only ever an\n * annotation (`static $policies: UserPolicy[] = [...]`), and emitting it as a\n * class would put two runtime declarations plus a value import of `Policy` into\n * every generated `models.ts`, once per model, to serve a use nobody has: an\n * author who wants methods without the mandatory write halves extends\n * `Policy<…>` from `gemi/orm` directly.\n */\nfunction policyTypes(model: string): string {\n return `\nexport type ${model}Policy = ModelPolicy<\n WhereInput<${model}Types>,\n CreateInput<${model}Types>,\n ${model}Scalars\n>;\n\n// The same shape with \\`scope\\`, \\`onCreate\\` and \\`onUpdate\\` abstract, so a policy\n// that scopes cannot omit the write halves. The runtime refuses those\n// combinations too — this makes it \\`TS2515\\` at the class declaration instead of\n// an error on the first write that reaches production.\nexport abstract class ${model}ScopedPolicy extends ScopedPolicy<\n WhereInput<${model}Types>,\n CreateInput<${model}Types>,\n ${model}Scalars\n> {}\n`;\n}\n\nfunction operation(model: string, op: ReadOperation): string {\n const types = `${model}Types`;\n const argsType = `${op.args}<${types}>`;\n const returns = op.returns(types);\n // `options` is a *second parameter* rather than a key inside `args`, so the\n // args type keeps describing exactly what the *query* accepts — one shape,\n // matching `READ_ARGS` in the compiler, with nothing in it the compiler would\n // reject. It also keeps the flag away from the plan key, which it must not\n // reach, since it does not change the SQL.\n return `\n static ${op.name}<T extends ${argsType}>(\n args${op.required ? \"\" : \"?\"}: Subset<T, ${argsType}>,\n options?: ExecOptions,\n ): Promise<${returns}> {\n return this.$exec(\"${op.name}\", args, options) as Promise<${returns}>;\n }\n`;\n}\n\n/**\n * `count`, whose result depends on whether it was given a `select`.\n *\n * Without one it is a plain `number`. With one it is Prisma's object of\n * per-field counts — `{ _all: 3, email: 2 }`, where each field's number is the\n * rows whose column is *not null*. Both spellings are Prisma's, so the overload\n * is what keeps the return type exact rather than widening it to\n * `number | object` for every caller.\n *\n * `CountPayload` is the mapper: it turns the caller's select into the shape it\n * produces, which is how `count({ select: { email: true } })` narrows to\n * `{ email: number }` and not to the whole model. Prisma spells the same thing\n * `GetScalarType<T[\"select\"], <M>CountAggregateOutputType>`, whose second\n * parameter carries nothing the first does not.\n */\nfunction countOperation(model: string): string {\n const types = `${model}Types`;\n return `\n static count(args?: Omit<CountArgs<${types}>, \"select\">): Promise<number>;\n static count<T extends CountArgs<${types}>>(\n args: SelectSubset<T, CountArgs<${types}>> & {\n select: NonNullable<T[\"select\"]>;\n },\n ): Promise<CountPayload<T[\"select\"]>>;\n static count(args?: unknown): Promise<unknown> {\n return this.$exec(\"count\", args as never);\n }\n`;\n}\n\n/**\n * `aggregate` — `_count`, `_avg`, `_sum`, `_min`, `_max` over a filtered set.\n *\n * `AggregatePayload<M, T>` is what makes `_max: { position: true }` narrow to\n * `{ _max: { position: number | null } }` rather than to every field of every\n * function. It also restricts `_sum` and `_avg` to numeric columns and\n * `_min`/`_max` to orderable ones, matching `NUMERIC` and its sibling in\n * `compile/aggregate.ts` — so a `_sum` over a `String` is a compile error at the\n * same place the runtime would refuse it.\n *\n * `groupBy` is beside it, and takes `GroupByOrderByInput` rather than the\n * `OrderByInput` the other reads take, because its ordering may name an\n * aggregate and theirs may name a relation — different grammars, not a wider\n * one (#340). One rule of its is still a runtime check.\n *\n * `orderBy` may only name a column that is in `by`. Expressing that in the type\n * would mean making `orderBy`'s key set depend on the `by` literal, which is\n * possible and which produces an error message about a mapped type rather than\n * about the field. `compile/group-by.ts` refuses it by name instead, saying\n * which field and why. A compile-time error would be better; a *worse-worded*\n * compile-time error is not.\n */\nfunction aggregateOperation(model: string): string {\n const types = `${model}Types`;\n return `\n static aggregate<T extends AggregateArgs<${types}>>(\n args: Subset<T, AggregateArgs<${types}>>,\n ): Promise<AggregatePayload<${types}, T>> {\n return this.$exec(\"aggregate\", args) as Promise<\n AggregatePayload<${types}, T>\n >;\n }\n\n static groupBy<T extends GroupByArgs<${types}>>(\n args: Subset<T, GroupByArgs<${types}>>,\n ): Promise<GroupByPayload<${types}, T>> {\n return this.$exec(\"groupBy\", args) as Promise<\n GroupByPayload<${types}, T>\n >;\n }\n`;\n}\n\n/**\n * The write surface.\n *\n * `create`, `update`, `delete` and `upsert` return a payload narrowed by the\n * caller's `select` / `include`, exactly as the reads do — and, like the\n * `*OrThrow` reads, they never resolve to `null`: Prisma raises when an\n * `update` or a `delete` matches nothing, and `$exec` does the same.\n *\n * The three `*Many` writes return Prisma's `BatchPayload` — `{ count: number }`\n * — rather than rows. Prisma's own `createManyAndReturn` is a separate\n * operation and is not emitted.\n *\n * `args` is required on every one of them: there is no meaningful `create()`\n * with no data, and a `deleteMany()` with no arguments is spelled\n * `deleteMany({})` so that emptying a table stays something you typed on purpose.\n */\nconst WRITE_OPERATIONS: ReadOperation[] = [\n {\n name: \"create\",\n args: \"CreateArgs\",\n returns: (t) => `Payload<${t}, T>`,\n required: true,\n },\n {\n name: \"update\",\n args: \"UpdateArgs\",\n returns: (t) => `Payload<${t}, T>`,\n required: true,\n },\n {\n name: \"delete\",\n args: \"DeleteArgs\",\n returns: (t) => `Payload<${t}, T>`,\n required: true,\n },\n {\n name: \"upsert\",\n args: \"UpsertArgs\",\n returns: (t) => `Payload<${t}, T>`,\n required: true,\n },\n];\n\n/** The writes whose result is a count rather than a payload. */\nconst BATCH_OPERATIONS = [\n { name: \"createMany\", args: \"CreateManyArgs\" },\n { name: \"updateMany\", args: \"UpdateManyArgs\" },\n { name: \"deleteMany\", args: \"DeleteManyArgs\" },\n] as const;\n\nfunction batchOperation(\n model: string,\n op: (typeof BATCH_OPERATIONS)[number],\n): string {\n return `\n static ${op.name}(\n args?: ${op.args}<${model}Types>,\n ): Promise<{ count: number }> {\n return this.$exec(\"${op.name}\", args) as Promise<{ count: number }>;\n }\n`;\n}\n\n/**\n * The types every emitted `models.ts` imports from `gemi/orm`.\n *\n * A fixed list because every model gets every operation, so each of these is\n * used by any non-empty schema. The two `Json` types are conditional: a schema\n * with no `Json` column would import them unused, which `oxlint` reports in the\n * app rather than here.\n */\nconst RUNTIME_IMPORTS = [\n \"Model\",\n \"ScopedPolicy\",\n \"type AggregateArgs\",\n \"type AggregatePayload\",\n \"type CountArgs\",\n \"type CountPayload\",\n \"type CreateArgs\",\n \"type CreateInput\",\n \"type CreateManyArgs\",\n \"type DeleteArgs\",\n \"type DeleteManyArgs\",\n \"type ExecOptions\",\n \"type FindFirstArgs\",\n \"type FindFirstOrThrowArgs\",\n \"type FindManyArgs\",\n \"type FindUniqueArgs\",\n \"type FindUniqueOrThrowArgs\",\n \"type GroupByArgs\",\n \"type GroupByPayload\",\n \"type ModelPolicy\",\n \"type ModelTypeInfo\",\n \"type Payload\",\n \"type PolicyEntry\",\n \"type SelectSubset\",\n \"type Subset\",\n \"type UpdateArgs\",\n \"type UpdateManyArgs\",\n \"type UpsertArgs\",\n \"type WhereInput\",\n];\n\nfunction usesJson(schemas: ModelSchema[]): boolean {\n return schemas.some((schema) =>\n Object.values(schema.fields).some((field) => field.type === \"Json\"),\n );\n}\n\nexport function emitModelsFile(\n schemas: ModelSchema[],\n enums: EnumMap = {},\n): string {\n // A schema with no models needs none of them, and importing twenty-eight\n // unused names would be reported by the *app's* linter, in a generated file it\n // is told not to edit.\n if (schemas.length === 0) return HEADER;\n\n const imports = [...RUNTIME_IMPORTS];\n if (usesJson(schemas)) {\n imports.push(\"type JsonInput\", \"type JsonValue\");\n }\n imports.sort((a, b) => {\n // Values first, then types, each alphabetically — the order `oxlint` and a\n // reader both expect, and stable regardless of what the schema contains.\n const aType = a.startsWith(\"type \");\n const bType = b.startsWith(\"type \");\n if (aType !== bType) return aType ? 1 : -1;\n return a < b ? -1 : a > b ? 1 : 0;\n });\n\n const parts = [\n HEADER,\n `\n// Every argument and result type here comes from \\`gemi/orm\\`, which is what lets\n// an app install \\`prisma\\` alone: nothing in this file resolves to\n// \\`@prisma/client\\`, so nothing forces it into the dependency graph for types\n// that are erased at build. Each model's \\`…Types\\` interface below is the\n// descriptor those generic types read.\n`,\n `import {\n${imports.map((name) => ` ${name},`).join(\"\\n\")}\n} from \"gemi/orm\";\\n`,\n `\\nimport * as schema from \"./schema\";\\n`,\n ];\n\n for (const schema of schemas) {\n parts.push(scalarsType(schema, enums));\n parts.push(createType(schema, enums));\n parts.push(relationsType(schema));\n parts.push(uniqueType(schema, enums));\n parts.push(typesInterface(schema));\n parts.push(instanceShape(schema.name));\n parts.push(policyTypes(schema.name));\n parts.push(`\nexport class ${schema.name}Model extends Model {\n static $schema = schema.${schema.name};\n\n // Says this class came out of the generator, so \\`registerModels\\` can prefer\n // the application's subclass over it without having to *infer* which is which.\n // It reads own-vs-inherited, and a subclass inherits this rather than\n // declaring it — so the mark is on exactly one class per model. See\n // \\`isGeneratedBase\\`.\n //\n // \\`readonly\\` so the initialiser keeps the literal type. \\`Model\\` declares this\n // \\`?: true\\`, and a mutable \\`= true\\` widens to \\`boolean\\` — which is not\n // assignable to it, so every class in this file was a TS2417 until a reviewer\n // regenerating a 79-model schema found 79 of them. \\`tsconfig.generated.json\\`\n // is the check that now says so here rather than in an app.\n static readonly $generated = true;\n\n // Narrowed from \\`Model\\`'s \\`PolicyEntry[]\\` to this model's own, so a policy\n // written for another model is a type error here rather than a scope compiled\n // against columns that do not exist.\n static $policies?: readonly PolicyEntry<\n WhereInput<${schema.name}Types>,\n CreateInput<${schema.name}Types>,\n ${schema.name}Scalars\n >[];\n${READ_OPERATIONS.map((op) => operation(schema.name, op)).join(\"\")}${countOperation(\n schema.name,\n )}${aggregateOperation(schema.name)}${WRITE_OPERATIONS.map((op) => operation(schema.name, op)).join(\n \"\",\n )}${BATCH_OPERATIONS.map((op) => batchOperation(schema.name, op)).join(\n \"\",\n )}${wrapOperation(schema.name)}}\n`);\n }\n\n return parts.join(\"\");\n}\n\nexport function emitIndexFile(schemas: ModelSchema[]): string {\n const imports = schemas.map((s) => ` ${s.name}Model,`).join(\"\\n\");\n const registrations = schemas\n .map((s) => `register(\"${s.name}\", ${s.name}Model);`)\n .join(\"\\n\");\n\n return `${HEADER}\nimport { assertSchemaArtifactVersion, register } from \"gemi/orm\";\n\nimport { ARTIFACT_VERSION } from \"./schema\";\nimport {\n${imports}\n} from \"./models\";\n\nassertSchemaArtifactVersion(ARTIFACT_VERSION);\n\n// Registration is by name, and resolution happens at call time. That is what\n// lets two models reference each other without the generated files forming an\n// import cycle.\n${registrations}\n\nexport * from \"./models\";\nexport * as schema from \"./schema\";\n`;\n}\n\n/**\n * The enum members, keyed by name, so an enum column types as the union of what\n * it can hold rather than as `string`.\n *\n * Read from `dmmf.datamodel.enums` and passed separately because\n * `buildModelSchemas` deliberately drops them: `FieldSchema.enum` keeps the\n * enum's *name* for the runtime, whose only interest is that the value travels\n * as a string. The members matter to the compiler and to nothing else.\n *\n * **`dbName` wins over `name`, and that is a deliberate divergence from\n * Prisma.** A value-level `@map` — `free @map(\"FREE\")` — gives a member two\n * spellings: `free` in the schema, `FREE` in the column. Prisma's client\n * translates between them, so its types say `free`. gemi does not translate: its\n * decoders hand back the string the database returned, and its encoders bind the\n * string they were given, so the value an application sees and writes is `FREE`.\n * Typing these as `name` would describe Prisma's behaviour and mistype gemi's.\n *\n * No schema in this repository has a value-level `@map`, so the differential\n * harness never compares the two — which is exactly why this is written down and\n * asserted in `emit.test.ts` rather than left to be rediscovered.\n */\nfunction enumMap(enums: readonly DMMF.DatamodelEnum[]): EnumMap {\n const out: EnumMap = {};\n for (const item of enums) {\n out[item.name] = item.values.map((value) => value.dbName ?? value.name);\n }\n return out;\n}\n\n/**\n * `warnings` is an out-parameter rather than a return value or a `console.warn`,\n * and both alternatives were tried on the way here.\n *\n * Printing from this file is what #350's review objected to, and the header\n * above is why: *\"Everything here is a pure function of the DMMF so the emitters\n * can be unit tested with no Prisma CLI and no database\"*. A `console.warn` in\n * `fieldSchema` makes `buildModelSchemas` write to stderr, so every unit test of\n * it has to tolerate or stub console output, and the stated invariant stops\n * being true. `bin/orm-generator.ts` already owns that boundary — it holds\n * `warnOnPrismaVersion` and `warnOnDatasource` — and now prints these too.\n *\n * Widening the return type instead would have rippled through every call in\n * `emit.test.ts`, which destructures the schemas directly. A defaulted\n * out-parameter leaves those calls alone and lets the tests that *are* about\n * diagnostics pass an array and read it.\n */\nexport function emitArtifacts(\n models: readonly DMMF.Model[],\n enums: readonly DMMF.DatamodelEnum[] = [],\n warnings: string[] = [],\n): Record<GeneratedFile, string> {\n const schemas = buildModelSchemas(models, warnings);\n return {\n \"schema.ts\": emitSchemaFile(schemas),\n \"models.ts\": emitModelsFile(schemas, enumMap(enums)),\n \"index.ts\": emitIndexFile(schemas),\n };\n}\n"
|
|
15
15
|
],
|
|
16
|
-
"mappings": "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",
|
|
17
|
-
"debugId": "
|
|
16
|
+
"mappings": "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",
|
|
17
|
+
"debugId": "049E59ABB41E57F464756E2164756E21",
|
|
18
18
|
"names": []
|
|
19
19
|
}
|