gemi 0.51.0-rc.8 → 0.51.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/app/index.js +1 -1
- package/dist/auth/AuthController.d.ts +0 -2
- package/dist/auth/AuthController.d.ts.map +1 -1
- package/dist/auth/UserProvider.d.ts +18 -0
- package/dist/auth/UserProvider.d.ts.map +1 -1
- package/dist/auth/config.d.ts +53 -0
- package/dist/auth/config.d.ts.map +1 -1
- package/dist/auth/routes.d.ts +0 -2
- package/dist/auth/routes.d.ts.map +1 -1
- package/dist/auth/types.d.ts +7 -1
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/bin/gemi.js +230 -13
- package/dist/bin/gemi.js.map +6 -5
- package/dist/bin/migrate/index.d.ts.map +1 -1
- package/dist/bin/migrate/orm.d.ts +20 -0
- package/dist/bin/migrate/orm.d.ts.map +1 -0
- package/dist/bin/orm/emit.d.ts +20 -3
- package/dist/bin/orm/emit.d.ts.map +1 -1
- package/dist/bin/orm-generator.js +57 -23
- package/dist/bin/orm-generator.js.map +5 -5
- package/dist/broadcasting/index.js +1 -1
- package/dist/bun/plugin.js +1 -1
- package/dist/bun/preload.js +1 -1
- package/dist/{chunk-2z5ryzx2.js → chunk-0k5jhyry.js} +2 -2
- package/dist/{chunk-2z5ryzx2.js.map → chunk-0k5jhyry.js.map} +1 -1
- package/dist/{chunk-r71za45z.js → chunk-16bnbtyn.js} +2 -2
- package/dist/{chunk-r71za45z.js.map → chunk-16bnbtyn.js.map} +1 -1
- package/dist/{chunk-kkyzhkgp.js → chunk-1sbm38g3.js} +3 -3
- package/dist/{chunk-kkyzhkgp.js.map → chunk-1sbm38g3.js.map} +1 -1
- package/dist/{chunk-nnaym0jj.js → chunk-3fcgg506.js} +3 -3
- package/dist/{chunk-nnaym0jj.js.map → chunk-3fcgg506.js.map} +1 -1
- package/dist/chunk-3z4nwzvp.js +9 -0
- package/dist/chunk-3z4nwzvp.js.map +12 -0
- package/dist/chunk-45c8sqb7.js +5 -0
- package/dist/chunk-45c8sqb7.js.map +14 -0
- package/dist/{chunk-r1v5qe5j.js → chunk-53w1njqz.js} +1 -1
- package/dist/{chunk-ke0fje4r.js → chunk-5t2c9194.js} +1 -1
- package/dist/{chunk-gbhc7ek8.js → chunk-5v36t9j3.js} +3 -3
- package/dist/{chunk-gbhc7ek8.js.map → chunk-5v36t9j3.js.map} +1 -1
- package/dist/{chunk-jdpme1nd.js → chunk-6fym5bfg.js} +3 -3
- package/dist/{chunk-jdpme1nd.js.map → chunk-6fym5bfg.js.map} +1 -1
- package/dist/{chunk-2d4ckpjb.js → chunk-6wm9bsz9.js} +2 -2
- package/dist/{chunk-2d4ckpjb.js.map → chunk-6wm9bsz9.js.map} +1 -1
- package/dist/{chunk-7te6veh7.js → chunk-6x6gb7zg.js} +2 -2
- package/dist/{chunk-7te6veh7.js.map → chunk-6x6gb7zg.js.map} +4 -4
- package/dist/chunk-8gb1w19q.js +5 -0
- package/dist/{chunk-5ngwktak.js.map → chunk-8gb1w19q.js.map} +1 -1
- package/dist/chunk-8m3wq94b.js +4 -0
- package/dist/{chunk-hmc7wzdk.js.map → chunk-8m3wq94b.js.map} +2 -2
- package/dist/{chunk-swkxdq82.js → chunk-8vnbvfmd.js} +2 -2
- package/dist/{chunk-swkxdq82.js.map → chunk-8vnbvfmd.js.map} +1 -1
- package/dist/{chunk-g426t44w.js → chunk-8zd6d5nd.js} +2 -2
- package/dist/{chunk-3ykxxj3p.js.map → chunk-8zd6d5nd.js.map} +1 -1
- package/dist/{chunk-rz599b1k.js → chunk-94k8pjmf.js} +3 -3
- package/dist/{chunk-rz599b1k.js.map → chunk-94k8pjmf.js.map} +1 -1
- package/dist/{chunk-728bsexv.js → chunk-98sj7tkf.js} +3 -3
- package/dist/{chunk-728bsexv.js.map → chunk-98sj7tkf.js.map} +1 -1
- package/dist/{chunk-zweee4n8.js → chunk-a6w4tpwz.js} +2 -2
- package/dist/{chunk-zweee4n8.js.map → chunk-a6w4tpwz.js.map} +1 -1
- package/dist/{chunk-zx2nmzwt.js → chunk-an6nq9yd.js} +3 -3
- package/dist/{chunk-zx2nmzwt.js.map → chunk-an6nq9yd.js.map} +1 -1
- package/dist/{chunk-tvbee7hf.js → chunk-asgfqcwd.js} +2 -2
- package/dist/{chunk-tvbee7hf.js.map → chunk-asgfqcwd.js.map} +1 -1
- package/dist/{chunk-x0pd91cj.js → chunk-bm6q0q1q.js} +2 -2
- package/dist/{chunk-x0pd91cj.js.map → chunk-bm6q0q1q.js.map} +1 -1
- package/dist/chunk-c4r1zh9q.js +81 -0
- package/dist/{chunk-4tmfjgp8.js.map → chunk-c4r1zh9q.js.map} +4 -4
- package/dist/{chunk-1kwqmzgg.js → chunk-d3tf618w.js} +2 -2
- package/dist/{chunk-1kwqmzgg.js.map → chunk-d3tf618w.js.map} +1 -1
- package/dist/{chunk-0jnbs0pz.js → chunk-dk01r6se.js} +3 -3
- package/dist/{chunk-0jnbs0pz.js.map → chunk-dk01r6se.js.map} +1 -1
- package/dist/chunk-eby61053.js +9 -0
- package/dist/chunk-eby61053.js.map +18 -0
- package/dist/{chunk-07r5kadp.js → chunk-eyvtf769.js} +2 -2
- package/dist/{chunk-07r5kadp.js.map → chunk-eyvtf769.js.map} +1 -1
- package/dist/{chunk-6gs18rp1.js → chunk-fs091xz7.js} +2 -2
- package/dist/{chunk-6gs18rp1.js.map → chunk-fs091xz7.js.map} +1 -1
- package/dist/{chunk-nfxz92th.js → chunk-g0w87jtw.js} +3 -3
- package/dist/{chunk-nfxz92th.js.map → chunk-g0w87jtw.js.map} +1 -1
- package/dist/{chunk-0pxd557f.js → chunk-g4gjn481.js} +3 -3
- package/dist/{chunk-0pxd557f.js.map → chunk-g4gjn481.js.map} +1 -1
- package/dist/chunk-gdegb5t0.js +9 -0
- package/dist/chunk-gdegb5t0.js.map +12 -0
- package/dist/chunk-gvf1d636.js +4 -0
- package/dist/{chunk-5pkt98gq.js.map → chunk-gvf1d636.js.map} +2 -2
- package/dist/{chunk-qem8wrcw.js → chunk-hnw1jy86.js} +2 -2
- package/dist/{chunk-qem8wrcw.js.map → chunk-hnw1jy86.js.map} +1 -1
- package/dist/chunk-hwwp6x2s.js +4 -0
- package/dist/{chunk-xra38x4e.js.map → chunk-hwwp6x2s.js.map} +2 -2
- package/dist/{chunk-53hv9ceh.js → chunk-j33n723q.js} +3 -3
- package/dist/{chunk-53hv9ceh.js.map → chunk-j33n723q.js.map} +1 -1
- package/dist/{chunk-cgkafq6b.js → chunk-j4rkk01q.js} +2 -2
- package/dist/{chunk-cgkafq6b.js.map → chunk-j4rkk01q.js.map} +1 -1
- package/dist/{chunk-h857g5ey.js → chunk-k4mjcvsm.js} +2 -2
- package/dist/{chunk-h857g5ey.js.map → chunk-k4mjcvsm.js.map} +1 -1
- package/dist/{chunk-karc839d.js → chunk-kv8p4h79.js} +3 -3
- package/dist/{chunk-karc839d.js.map → chunk-kv8p4h79.js.map} +1 -1
- package/dist/{chunk-hsgfx736.js → chunk-mrf9tjev.js} +2 -2
- package/dist/{chunk-hsgfx736.js.map → chunk-mrf9tjev.js.map} +1 -1
- package/dist/chunk-nbx9mgmr.js +50 -0
- package/dist/chunk-nbx9mgmr.js.map +10 -0
- package/dist/{chunk-je4hh59f.js → chunk-ntr81h76.js} +2 -2
- package/dist/{chunk-je4hh59f.js.map → chunk-ntr81h76.js.map} +1 -1
- package/dist/chunk-p0z35s59.js +4 -0
- package/dist/{chunk-89w6dfj9.js.map → chunk-p0z35s59.js.map} +1 -1
- package/dist/{chunk-0kj7h7s3.js → chunk-pkzj7c5w.js} +2 -2
- package/dist/{chunk-0kj7h7s3.js.map → chunk-pkzj7c5w.js.map} +1 -1
- package/dist/{chunk-3g50s2sr.js → chunk-q0xq0pt0.js} +4 -4
- package/dist/{chunk-3g50s2sr.js.map → chunk-q0xq0pt0.js.map} +1 -1
- package/dist/{chunk-fa46et3w.js → chunk-rxeyhwqz.js} +4 -4
- package/dist/{chunk-fa46et3w.js.map → chunk-rxeyhwqz.js.map} +1 -1
- package/dist/{chunk-da3wdrnn.js → chunk-w7fpm2pw.js} +2 -2
- package/dist/{chunk-da3wdrnn.js.map → chunk-w7fpm2pw.js.map} +1 -1
- package/dist/{chunk-yg6pttvd.js → chunk-x80n922n.js} +2 -2
- package/dist/{chunk-yg6pttvd.js.map → chunk-x80n922n.js.map} +1 -1
- package/dist/chunk-ybqftmjx.js +4 -0
- package/dist/{chunk-06aawgwq.js.map → chunk-ybqftmjx.js.map} +2 -2
- package/dist/chunk-ygpzyxr6.js +6 -0
- package/dist/{chunk-34yzbcrg.js.map → chunk-ygpzyxr6.js.map} +2 -2
- package/dist/{chunk-pamswvee.js → chunk-zezdm4ep.js} +3 -3
- package/dist/{chunk-pamswvee.js.map → chunk-zezdm4ep.js.map} +1 -1
- package/dist/{chunk-3ykxxj3p.js → chunk-zwpx6z5f.js} +2 -2
- package/dist/{chunk-g426t44w.js.map → chunk-zwpx6z5f.js.map} +1 -1
- package/dist/{chunk-6j0e593s.js → chunk-zznpmnp7.js} +3 -3
- package/dist/{chunk-6j0e593s.js.map → chunk-zznpmnp7.js.map} +1 -1
- package/dist/client/ClientRouter.d.ts.map +1 -1
- package/dist/client/ClientRouterContext.d.ts +2 -0
- package/dist/client/ClientRouterContext.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/auth/useSignIn.d.ts +0 -3
- package/dist/client/auth/useSignIn.d.ts.map +1 -1
- package/dist/client/auth/useUser.d.ts +0 -1
- package/dist/client/auth/useUser.d.ts.map +1 -1
- package/dist/client/index.js +37 -3
- package/dist/client/index.js.map +1 -1
- package/dist/config/index.js +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/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/index.js +2 -2
- package/dist/http/index.js.map +1 -1
- package/dist/i18n/index.js +2 -2
- package/dist/i18n/index.js.map +1 -1
- package/dist/kernel/index.js +2 -2
- package/dist/kernel/index.js.map +1 -1
- package/dist/orm/Model.d.ts.map +1 -1
- package/dist/orm/compile/fragment.d.ts +19 -0
- package/dist/orm/compile/fragment.d.ts.map +1 -1
- package/dist/orm/compile/group-by.d.ts +23 -0
- package/dist/orm/compile/group-by.d.ts.map +1 -1
- package/dist/orm/compile/nested-writes.d.ts +94 -0
- package/dist/orm/compile/nested-writes.d.ts.map +1 -1
- package/dist/orm/compile/plan-relations.d.ts +21 -9
- package/dist/orm/compile/plan-relations.d.ts.map +1 -1
- package/dist/orm/compile/where.d.ts +35 -0
- package/dist/orm/compile/where.d.ts.map +1 -1
- package/dist/orm/compile/write.d.ts.map +1 -1
- package/dist/orm/corpus.d.ts.map +1 -1
- package/dist/orm/defaults.d.ts +37 -30
- package/dist/orm/defaults.d.ts.map +1 -1
- package/dist/orm/dialect/index.d.ts +34 -0
- package/dist/orm/dialect/index.d.ts.map +1 -1
- package/dist/orm/dialect/postgres.d.ts +1 -0
- package/dist/orm/dialect/postgres.d.ts.map +1 -1
- package/dist/orm/dialect/sqlite.d.ts +1 -0
- package/dist/orm/dialect/sqlite.d.ts.map +1 -1
- package/dist/orm/errors.d.ts +176 -6
- package/dist/orm/errors.d.ts.map +1 -1
- package/dist/orm/fixtures.d.ts +118 -0
- package/dist/orm/fixtures.d.ts.map +1 -1
- package/dist/orm/index.d.ts +4 -3
- package/dist/orm/index.d.ts.map +1 -1
- package/dist/orm/index.js +4 -4
- package/dist/orm/index.js.map +14 -13
- package/dist/orm/json-param.d.ts +27 -0
- package/dist/orm/json-param.d.ts.map +1 -0
- package/dist/orm/page-args.d.ts +108 -0
- package/dist/orm/page-args.d.ts.map +1 -0
- package/dist/orm/plan.d.ts.map +1 -1
- package/dist/orm/policy.d.ts +42 -0
- package/dist/orm/policy.d.ts.map +1 -1
- package/dist/orm/registration.d.ts.map +1 -1
- package/dist/orm/relation-filters.d.ts +23 -0
- package/dist/orm/relation-filters.d.ts.map +1 -1
- package/dist/orm/schema.d.ts +71 -11
- package/dist/orm/schema.d.ts.map +1 -1
- package/dist/orm/sql.d.ts +15 -4
- package/dist/orm/sql.d.ts.map +1 -1
- package/dist/orm/types.d.ts +441 -42
- package/dist/orm/types.d.ts.map +1 -1
- package/dist/server/httpProd.d.ts.map +1 -1
- package/dist/server/index.js +2 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/modulePreloads.d.ts +40 -0
- package/dist/server/modulePreloads.d.ts.map +1 -0
- package/dist/services/index.js +4 -4
- package/dist/services/index.js.map +2 -2
- package/dist/services/router/ViewRouteDispatcher.d.ts +35 -1
- package/dist/services/router/ViewRouteDispatcher.d.ts.map +1 -1
- package/dist/support/index.js +2 -2
- package/dist/support/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-06aawgwq.js +0 -4
- package/dist/chunk-34yzbcrg.js +0 -6
- package/dist/chunk-4tmfjgp8.js +0 -81
- package/dist/chunk-5ngwktak.js +0 -5
- package/dist/chunk-5pkt98gq.js +0 -4
- package/dist/chunk-5tfyjdad.js +0 -5
- package/dist/chunk-5tfyjdad.js.map +0 -13
- package/dist/chunk-89w6dfj9.js +0 -4
- package/dist/chunk-8seh6182.js +0 -31
- package/dist/chunk-8seh6182.js.map +0 -10
- package/dist/chunk-ed9a34ey.js +0 -9
- package/dist/chunk-ed9a34ey.js.map +0 -18
- package/dist/chunk-hmc7wzdk.js +0 -4
- package/dist/chunk-q8j8bhv2.js +0 -9
- package/dist/chunk-q8j8bhv2.js.map +0 -11
- package/dist/chunk-wed7a2t8.js +0 -7
- package/dist/chunk-wed7a2t8.js.map +0 -12
- package/dist/chunk-xra38x4e.js +0 -4
- /package/dist/{chunk-r1v5qe5j.js.map → chunk-53w1njqz.js.map} +0 -0
- /package/dist/{chunk-ke0fje4r.js.map → chunk-5t2c9194.js.map} +0 -0
package/dist/app/index.js
CHANGED
|
@@ -68,7 +68,6 @@ export declare class AuthController extends Controller {
|
|
|
68
68
|
email: string | null;
|
|
69
69
|
emailVerifiedAt: Date | null;
|
|
70
70
|
globalRole: number;
|
|
71
|
-
organizationId: number | null;
|
|
72
71
|
accounts: import("./types").Account[];
|
|
73
72
|
extension: Record<string, any>;
|
|
74
73
|
}>;
|
|
@@ -79,7 +78,6 @@ export declare class AuthController extends Controller {
|
|
|
79
78
|
email: string | null;
|
|
80
79
|
emailVerifiedAt: Date | null;
|
|
81
80
|
globalRole: number;
|
|
82
|
-
organizationId: number | null;
|
|
83
81
|
accounts: import("./types").Account[];
|
|
84
82
|
extension: Record<string, any>;
|
|
85
83
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthController.d.ts","sourceRoot":"","sources":["../../auth/AuthController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAMlD,OAAO,KAAK,EAAc,IAAI,EAAE,MAAM,SAAS,CAAC;AAGhD,cAAM,aAAc,SAAQ,WAAW,CACrC;IACE,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,EACD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CACvB;IACC,MAAM;;;;;;;;;MASJ;CACH;AAED,cAAM,qBAAsB,SAAQ,WAAW,CAC7C;IACE,KAAK,EAAE,MAAM,CAAC;CACf,EACD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CACvB;IACC,MAAM;;;;;MAKJ;CACH;AAED,cAAM,oBAAqB,SAAQ,WAAW,CAC5C;IACE,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,EACD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CACvB;IACC,MAAM;;;;;MAKJ;CACH;AAED,qBAAa,cAAe,SAAQ,UAAU;IACtC,EAAE;IAUF,WAAW,CAAC,GAAG;eAA4B,MAAM;6BAAK;;;IAmBtD,mBAAmB,CAAC,GAAG,4DAAoB;;;;;;;IAwC3C,eAAe,CACnB,GAAG;eAA4B,MAAM;aAAO,MAAM;6BAAK;IAoCnD,aAAa,CAAC,GAAG;eAA4B,MAAM;aAAO,MAAM;6BAAK;;;IAmCrE,QAAQ,CAAC,GAAG,gBAAsB
|
|
1
|
+
{"version":3,"file":"AuthController.d.ts","sourceRoot":"","sources":["../../auth/AuthController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAMlD,OAAO,KAAK,EAAc,IAAI,EAAE,MAAM,SAAS,CAAC;AAGhD,cAAM,aAAc,SAAQ,WAAW,CACrC;IACE,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,EACD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CACvB;IACC,MAAM;;;;;;;;;MASJ;CACH;AAED,cAAM,qBAAsB,SAAQ,WAAW,CAC7C;IACE,KAAK,EAAE,MAAM,CAAC;CACf,EACD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CACvB;IACC,MAAM;;;;;MAKJ;CACH;AAED,cAAM,oBAAqB,SAAQ,WAAW,CAC5C;IACE,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,EACD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CACvB;IACC,MAAM;;;;;MAKJ;CACH;AAED,qBAAa,cAAe,SAAQ,UAAU;IACtC,EAAE;IAUF,WAAW,CAAC,GAAG;eAA4B,MAAM;6BAAK;;;IAmBtD,mBAAmB,CAAC,GAAG,4DAAoB;;;;;;;IAwC3C,eAAe,CACnB,GAAG;eAA4B,MAAM;aAAO,MAAM;6BAAK;IAoCnD,aAAa,CAAC,GAAG;eAA4B,MAAM;aAAO,MAAM;6BAAK;;;IAmCrE,QAAQ,CAAC,GAAG,gBAAsB;;;;;;;;;;IAgDlC,MAAM,CAAC,GAAG,gBAAsB;;;;;;;;;;IAgDhC,MAAM;IA6FN,OAAO,CAAC,GAAG,4DAAoB;IAqB/B,cAAc,CAAC,GAAG,wBAA8B;IA6BhD,aAAa,CAAC,GAAG,uBAA6B;IAsD9C,cAAc,CAClB,GAAG;qBAAkC,MAAM;qBAAe,MAAM;6BAAK;IA+BjE,aAAa,CAAC,GAAG,4DAAoB;;;IAcrC,aAAa,CAAC,GAAG,4DAAoB;;;IAgGrC,oBAAoB,CAAC,GAAG;eAA4B,MAAM;6BAAK;;;CAetE"}
|
|
@@ -16,6 +16,24 @@ export declare class UserProvider {
|
|
|
16
16
|
* server error. One wrapper, applied uniformly, so no method can forget.
|
|
17
17
|
*/
|
|
18
18
|
protected run<T>(fn: () => Promise<T>): Promise<T>;
|
|
19
|
+
/**
|
|
20
|
+
* Runs `fn` inside a transaction on the connection the `User` model lives on.
|
|
21
|
+
* Every ORM query in it joins automatically, at any call depth — see
|
|
22
|
+
* `Model.transaction`.
|
|
23
|
+
*
|
|
24
|
+
* Here so that `AuthController` can make a sign-up atomic without importing a
|
|
25
|
+
* model: the controller has none, and reaching for a bare `Model.transaction`
|
|
26
|
+
* would open on the ambient connection rather than the one this provider's
|
|
27
|
+
* models are bound to. Nesting is a savepoint, so an application that already
|
|
28
|
+
* wrapped its own transaction around a sign-up composes instead of breaking.
|
|
29
|
+
*
|
|
30
|
+
* Deliberately **not** wrapped in `run`. `asSystem` is applied per query by
|
|
31
|
+
* the methods below, which keeps it to this class's own reads and writes;
|
|
32
|
+
* hoisting it here would silently suspend policies for `config.onUserCreated`
|
|
33
|
+
* too, and an application's provisioning writes should run under the same
|
|
34
|
+
* policy resolution as the rest of its code.
|
|
35
|
+
*/
|
|
36
|
+
transaction<T>(fn: () => Promise<T>): Promise<T>;
|
|
19
37
|
/**
|
|
20
38
|
* Note the password is **removed from the returned object**, matching Prisma's
|
|
21
39
|
* adapter, which uses `omit: { password: true }`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserProvider.d.ts","sourceRoot":"","sources":["../../auth/UserProvider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACV,iBAAiB,EACjB,wBAAwB,EACxB,4BAA4B,EAC5B,iBAAiB,EACjB,uBAAuB,EACvB,cAAc,EACd,4BAA4B,EAC5B,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,IAAI,EACL,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"UserProvider.d.ts","sourceRoot":"","sources":["../../auth/UserProvider.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/config.d.ts
CHANGED
|
@@ -15,6 +15,59 @@ export interface AuthConfig {
|
|
|
15
15
|
generateEmailVerificationToken?: (email: string) => Promise<string> | string;
|
|
16
16
|
generateMagicLinkToken?: (email: string) => Promise<string> | string;
|
|
17
17
|
extendSession?: <T extends User>(user: T) => Promise<any> | any;
|
|
18
|
+
/**
|
|
19
|
+
* **This one is not a notification, whatever the name suggests.** It runs
|
|
20
|
+
* *inside* the transaction that creates the user, after the row is written
|
|
21
|
+
* and before it commits, and a throw rolls the user back. Every other `onXxx`
|
|
22
|
+
* here fires after its work is committed and can only report; this one
|
|
23
|
+
* participates in the write.
|
|
24
|
+
*
|
|
25
|
+
* The past tense is worth distrusting, then, and it is deliberate that this
|
|
26
|
+
* paragraph comes first: an application that mistakes this for `onSignUp`
|
|
27
|
+
* with better timing, and swallows its own errors inside it, gets exactly the
|
|
28
|
+
* orphaned user the hook exists to prevent.
|
|
29
|
+
*
|
|
30
|
+
* That is what it is for: an application that must create rows *alongside*
|
|
31
|
+
* every user — an organization, a workspace, a default settings row — has
|
|
32
|
+
* nowhere else to do it atomically. `onSignUp` fires after the commit on both
|
|
33
|
+
* paths, so provisioning there leaves an orphaned user when the second insert
|
|
34
|
+
* fails, which is a failure that only turns up in production.
|
|
35
|
+
*
|
|
36
|
+
* Fires on all three creation paths — email/password sign-up, invited
|
|
37
|
+
* sign-up, and first OAuth sign-in — and receives the same password-stripped
|
|
38
|
+
* user the endpoint returns, so a hook that logs its argument does not log a
|
|
39
|
+
* credential hash.
|
|
40
|
+
*
|
|
41
|
+
* On the invited path the inviting organization's `Account` row is already
|
|
42
|
+
* written when this runs, so a hook provisioning an own workspace should
|
|
43
|
+
* check before adding a second one.
|
|
44
|
+
*
|
|
45
|
+
* Four constraints come from where this runs:
|
|
46
|
+
*
|
|
47
|
+
* - **Writes to a policied model need `Model.asSystem`.** This runs with no
|
|
48
|
+
* user in scope — a sign-up has not authenticated anybody yet — so a policy
|
|
49
|
+
* whose `scope` or `onCreate` reads `ctx.user` raises `PolicyDeniedError`
|
|
50
|
+
* under deny-by-default, and the rollback takes the user with it. That is
|
|
51
|
+
* the correct behaviour and the reason this hook is *not* wrapped in
|
|
52
|
+
* `UserProvider.run`: suspending policies for application code is a
|
|
53
|
+
* sentence somebody types, never something a framework does quietly. Say it
|
|
54
|
+
* at the call site:
|
|
55
|
+
*
|
|
56
|
+
* await Model.asSystem(() => Organization.create({ data }))
|
|
57
|
+
*
|
|
58
|
+
* - **Errors thrown here reach the client as-is.** A `ValidationError` is a
|
|
59
|
+
* 400 on `POST /sign-up`; anything else is a 500. On the OAuth path there
|
|
60
|
+
* is no form to fail — a throw is a 500 page mid-redirect. Either way no
|
|
61
|
+
* user is created.
|
|
62
|
+
* - **Raw queries do not join the transaction.** ORM calls at any depth do,
|
|
63
|
+
* automatically; a hand-written Prisma or `DB` statement runs outside and
|
|
64
|
+
* survives the rollback.
|
|
65
|
+
* - **`Promise.all` over ORM calls is not safe here.** The transaction holds
|
|
66
|
+
* one reserved connection, so await them in sequence. Keep network and
|
|
67
|
+
* filesystem I/O out entirely — the connection is held for as long as this
|
|
68
|
+
* runs.
|
|
69
|
+
*/
|
|
70
|
+
onUserCreated?: (user: User) => Promise<void>;
|
|
18
71
|
onSignUp?: (user: User, verificationToken: string, search: Record<string, string>) => Promise<void> | void;
|
|
19
72
|
onSignIn?: (session: any, search: Record<string, string>) => Promise<void> | void;
|
|
20
73
|
onSignOut?: (session: any) => Promise<void> | void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../auth/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAI3D,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,6BAA6B,CAAC,EAAE,MAAM,CAAC;IAEvC,aAAa,CAAC,EAAE,UAAU,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAChD,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAE/C,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACtE,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,2BAA2B,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9D,8BAA8B,CAAC,EAAE,CAC/B,KAAK,EAAE,MAAM,KACV,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAC9B,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAGrE,aAAa,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAEhE,QAAQ,CAAC,EAAE,CACT,IAAI,EAAE,IAAI,EACV,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,CACT,OAAO,EAAE,GAAG,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnD,gBAAgB,CAAC,EAAE,CACjB,IAAI,EAAE,GAAG,EACT,iBAAiB,EAAE,MAAM,KACtB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1B,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACzD,kBAAkB,CAAC,EAAE,CACnB,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,KAChD,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC3B;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAE/D;AAID,wBAAgB,kBAAkB,CAChC,MAAM,GAAE,UAAe,GACtB,QAAQ,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../auth/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAI3D,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,6BAA6B,CAAC,EAAE,MAAM,CAAC;IAEvC,aAAa,CAAC,EAAE,UAAU,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAChD,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAE/C,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACtE,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,2BAA2B,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9D,8BAA8B,CAAC,EAAE,CAC/B,KAAK,EAAE,MAAM,KACV,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAC9B,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAGrE,aAAa,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmDG;IACH,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C,QAAQ,CAAC,EAAE,CACT,IAAI,EAAE,IAAI,EACV,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,CACT,OAAO,EAAE,GAAG,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnD,gBAAgB,CAAC,EAAE,CACjB,IAAI,EAAE,GAAG,EACT,iBAAiB,EAAE,MAAM,KACtB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1B,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACzD,kBAAkB,CAAC,EAAE,CACnB,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,KAChD,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC3B;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAE/D;AAID,wBAAgB,kBAAkB,CAChC,MAAM,GAAE,UAAe,GACtB,QAAQ,CAAC,UAAU,CAAC,CA8CtB"}
|
package/dist/auth/routes.d.ts
CHANGED
|
@@ -37,7 +37,6 @@ export declare class AuthApiRouter extends ApiRouter {
|
|
|
37
37
|
email: string | null;
|
|
38
38
|
emailVerifiedAt: Date | null;
|
|
39
39
|
globalRole: number;
|
|
40
|
-
organizationId: number | null;
|
|
41
40
|
accounts: import("./types").Account[];
|
|
42
41
|
extension: Record<string, any>;
|
|
43
42
|
}>, Record<string, string>>;
|
|
@@ -51,7 +50,6 @@ export declare class AuthApiRouter extends ApiRouter {
|
|
|
51
50
|
email: string | null;
|
|
52
51
|
emailVerifiedAt: Date | null;
|
|
53
52
|
globalRole: number;
|
|
54
|
-
organizationId: number | null;
|
|
55
53
|
accounts: import("./types").Account[];
|
|
56
54
|
extension: Record<string, any>;
|
|
57
55
|
}>, Record<string, string>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../auth/routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,cAAM,eAAgB,SAAQ,UAAU;IACtC,WAAW,WAAqB;IAChC,MAAM;;;;;;;MAMJ;CACH;AAED,qBAAa,cAAe,SAAQ,UAAU;IAC5C,WAAW,WAAqB;IAChC,MAAM;;;;;;;;;MAMJ;CACH;AAED,qBAAa,aAAc,SAAQ,SAAS;IAC1C,WAAW,WAAqB;IAChC,MAAM
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../auth/routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,cAAM,eAAgB,SAAQ,UAAU;IACtC,WAAW,WAAqB;IAChC,MAAM;;;;;;;MAMJ;CACH;AAED,qBAAa,cAAe,SAAQ,UAAU;IAC5C,WAAW,WAAqB;IAChC,MAAM;;;;;;;;;MAMJ;CACH;AAED,qBAAa,aAAc,SAAQ,SAAS;IAC1C,WAAW,WAAqB;IAChC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAaJ;CACH"}
|
package/dist/auth/types.d.ts
CHANGED
|
@@ -64,6 +64,13 @@ export type Account = {
|
|
|
64
64
|
organizationRole: number;
|
|
65
65
|
organization: Organization;
|
|
66
66
|
};
|
|
67
|
+
/**
|
|
68
|
+
* A user's organizations are reached through `accounts`, each of which carries
|
|
69
|
+
* the organization it is a membership in. There is deliberately no
|
|
70
|
+
* `organizationId` here: a user may be in more than one organization, so a
|
|
71
|
+
* single column could not answer the question, and `SESSION_USER` no longer
|
|
72
|
+
* selects one — see the note there.
|
|
73
|
+
*/
|
|
67
74
|
export interface User {
|
|
68
75
|
id: number;
|
|
69
76
|
publicId: string;
|
|
@@ -72,7 +79,6 @@ export interface User {
|
|
|
72
79
|
emailVerifiedAt: Date | null;
|
|
73
80
|
globalRole: number;
|
|
74
81
|
password: string | null;
|
|
75
|
-
organizationId: number | null;
|
|
76
82
|
accounts: Account[];
|
|
77
83
|
extension: Record<string, any>;
|
|
78
84
|
}
|
package/dist/auth/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../auth/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,+EAA+E;AAC/E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,GAAG,CAAC;IACV,OAAO,EAAE,GAAG,CAAC;IACb,OAAO,EAAE,GAAG,CAAC;IACb,kBAAkB,EAAE,GAAG,CAAC;IACxB,cAAc,EAAE,GAAG,CAAC;IACpB,sBAAsB,EAAE,GAAG,CAAC;IAC5B,aAAa,EAAE,GAAG,CAAC;CACpB;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,eAAe,EAAE,IAAI,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../auth/types.ts"],"names":[],"mappings":"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"}
|
package/dist/bin/gemi.js
CHANGED
|
@@ -36732,6 +36732,174 @@ var EXTRACTION_TARGETS = {
|
|
|
36732
36732
|
};
|
|
36733
36733
|
var TODO = "// TODO(gemi-migrate):";
|
|
36734
36734
|
|
|
36735
|
+
// bin/migrate/orm.ts
|
|
36736
|
+
var P2002_HAZARD = '`"P2002"` stops matching the moment the write it guards moves onto the ORM. ' + "gemi raises `UniqueConstraintError`, which carries `model`, `operation`, " + "`fields` and `constraint` and no `code` anywhere on its prototype chain \u2014 so " + "the check returns false, the recovery branch it exists to run never runs, and " + "nothing reports it: it compiles, it runs, and a test that mocks " + '`{ code: "P2002" }` still passes while the branch it certifies is dead. Use ' + "`isUniqueConstraintError` from `gemi/orm`. While some writes in this app are " + "still on Prisma, keep the old check as a second arm \u2014 " + '`isUniqueConstraintError(e) || (isRecord(e) && e.code === "P2002")` \u2014 and ' + "delete that arm when the last Prisma writer goes. See UPGRADE.md.";
|
|
36737
|
+
var PAGE_ARGUMENT_HAZARD = "`take` and `skip` must be integers \u2014 gemi refuses a fractional one with " + "`InvalidArgumentError` where Prisma truncated it, because SQLite answers " + "`limit 1.5` with an opaque driver error and Postgres rounds it up to 2 rows. " + "This value is not an integer literal, which is usually fine: confirm it is " + "truncated where it enters the app rather than reading this as a bug. " + '`Number(req.search.get("limit"))` is the shape that breaks, and a fractional ' + "`page` is the one to look hardest for \u2014 it never reaches the ORM itself, it " + "reaches it multiplied, as a fractional `skip`. `paginate({ page, perPage })` " + "from `gemi/orm` truncates and clamps in one place and cannot produce a value " + "the ORM refuses.";
|
|
36738
|
+
function annotateOrmPortHazards(source, label, notes) {
|
|
36739
|
+
const spliceable = !JSX_FILE.test(label);
|
|
36740
|
+
let result = source;
|
|
36741
|
+
if (importsModelSurface(result)) {
|
|
36742
|
+
result = runPass(result, prismaErrorCodeLiterals(result), '`"P2002"`', P2002_HAZARD, label, notes, spliceable);
|
|
36743
|
+
}
|
|
36744
|
+
result = runPass(result, nonIntegerPageArguments(result), "`take` / `skip`", PAGE_ARGUMENT_HAZARD, label, notes, spliceable);
|
|
36745
|
+
return result;
|
|
36746
|
+
}
|
|
36747
|
+
var JSX_FILE = /\.[jt]sx$/i;
|
|
36748
|
+
function runPass(src, hits, what, message, label, notes, spliceable) {
|
|
36749
|
+
if (!hits.length)
|
|
36750
|
+
return src;
|
|
36751
|
+
if (!spliceable) {
|
|
36752
|
+
notes.push({
|
|
36753
|
+
file: label,
|
|
36754
|
+
message: `${what} on ${lineList(src, hits)} \u2014 reported rather than annotated: ` + `a \`//\` line inside JSX children is page text, not a comment, so ` + `writing one here would stop the file parsing. ${message}`
|
|
36755
|
+
});
|
|
36756
|
+
return src;
|
|
36757
|
+
}
|
|
36758
|
+
const marked = annotateLines(src, hits, message);
|
|
36759
|
+
if (marked.annotated > 0) {
|
|
36760
|
+
notes.push({
|
|
36761
|
+
file: label,
|
|
36762
|
+
message: `${what} (${occurrences(hits.length)}) \u2014 ${message}`
|
|
36763
|
+
});
|
|
36764
|
+
}
|
|
36765
|
+
return marked.text;
|
|
36766
|
+
}
|
|
36767
|
+
var occurrences = (count) => count === 1 ? "1 occurrence" : `${count} occurrences`;
|
|
36768
|
+
function lineList(src, offsets) {
|
|
36769
|
+
const numbers = [];
|
|
36770
|
+
for (const offset of offsets) {
|
|
36771
|
+
let line = 1;
|
|
36772
|
+
for (let i = 0;i < offset && i < src.length; i++) {
|
|
36773
|
+
if (src[i] === `
|
|
36774
|
+
`)
|
|
36775
|
+
line++;
|
|
36776
|
+
}
|
|
36777
|
+
if (numbers[numbers.length - 1] !== line)
|
|
36778
|
+
numbers.push(line);
|
|
36779
|
+
}
|
|
36780
|
+
return numbers.length === 1 ? `line ${numbers[0]}` : `lines ${numbers.join(", ")}`;
|
|
36781
|
+
}
|
|
36782
|
+
function prismaErrorCodeLiterals(src) {
|
|
36783
|
+
const hits = [];
|
|
36784
|
+
let i = 0;
|
|
36785
|
+
while (i < src.length) {
|
|
36786
|
+
const end = skipAtomic(src, i);
|
|
36787
|
+
if (end === null || end <= i) {
|
|
36788
|
+
i++;
|
|
36789
|
+
continue;
|
|
36790
|
+
}
|
|
36791
|
+
const span = src.slice(i, end);
|
|
36792
|
+
if (/^["'`]/.test(span) && span.slice(1, -1) === "P2002")
|
|
36793
|
+
hits.push(i);
|
|
36794
|
+
i = end;
|
|
36795
|
+
}
|
|
36796
|
+
return hits;
|
|
36797
|
+
}
|
|
36798
|
+
var MODEL_SURFACE = /(^|\/)models(\/|$)/;
|
|
36799
|
+
function importsModelSurface(src) {
|
|
36800
|
+
return parseImports(src).some((decl) => decl.module === "gemi/orm" || MODEL_SURFACE.test(decl.module));
|
|
36801
|
+
}
|
|
36802
|
+
var PAGE_KEYS = ["take", "skip"];
|
|
36803
|
+
function nonIntegerPageArguments(src) {
|
|
36804
|
+
const hits = [];
|
|
36805
|
+
let i = 0;
|
|
36806
|
+
while (i < src.length) {
|
|
36807
|
+
const skipped = skipAtomic(src, i);
|
|
36808
|
+
if (skipped !== null && skipped > i) {
|
|
36809
|
+
i = skipped;
|
|
36810
|
+
continue;
|
|
36811
|
+
}
|
|
36812
|
+
const key = PAGE_KEYS.find((candidate) => src.startsWith(candidate, i));
|
|
36813
|
+
if (!key || /[\w$.]/.test(src[i - 1] ?? "")) {
|
|
36814
|
+
i++;
|
|
36815
|
+
continue;
|
|
36816
|
+
}
|
|
36817
|
+
let after = skipTrivia(src, i + key.length);
|
|
36818
|
+
if (src[after] === "?")
|
|
36819
|
+
after = skipTrivia(src, after + 1);
|
|
36820
|
+
if (src[after] !== ":") {
|
|
36821
|
+
i += key.length;
|
|
36822
|
+
continue;
|
|
36823
|
+
}
|
|
36824
|
+
const valueStart = skipTrivia(src, after + 1);
|
|
36825
|
+
const valueEnd = endOfValue(src, valueStart);
|
|
36826
|
+
if (!isIntegerArgument(src.slice(valueStart, valueEnd).trim())) {
|
|
36827
|
+
hits.push(i);
|
|
36828
|
+
}
|
|
36829
|
+
i = Math.max(valueEnd, i + key.length);
|
|
36830
|
+
}
|
|
36831
|
+
return hits;
|
|
36832
|
+
}
|
|
36833
|
+
var CLOSERS = { "(": ")", "[": "]", "{": "}" };
|
|
36834
|
+
function endOfValue(src, from) {
|
|
36835
|
+
let i = from;
|
|
36836
|
+
while (i < src.length) {
|
|
36837
|
+
const skipped = skipAtomic(src, i);
|
|
36838
|
+
if (skipped !== null && skipped > i) {
|
|
36839
|
+
i = skipped;
|
|
36840
|
+
continue;
|
|
36841
|
+
}
|
|
36842
|
+
const c = src[i];
|
|
36843
|
+
const closer = CLOSERS[c];
|
|
36844
|
+
if (closer) {
|
|
36845
|
+
i = matchDelims(src, i, c, closer);
|
|
36846
|
+
continue;
|
|
36847
|
+
}
|
|
36848
|
+
if (c === "," || c === ")" || c === "]" || c === "}" || c === ";" || c === `
|
|
36849
|
+
`) {
|
|
36850
|
+
return i;
|
|
36851
|
+
}
|
|
36852
|
+
i++;
|
|
36853
|
+
}
|
|
36854
|
+
return src.length;
|
|
36855
|
+
}
|
|
36856
|
+
var INTEGER_LITERAL = /^-?\d+(?:_\d+)*$/;
|
|
36857
|
+
var TRUNCATING_CALL = /^(?:Math\.(?:trunc|floor|ceil|round)|(?:Number\.)?parseInt)\s*(?=\()/;
|
|
36858
|
+
var TYPE_POSITION = /^number(?:\s*\|\s*undefined)?$/;
|
|
36859
|
+
function isIntegerArgument(value) {
|
|
36860
|
+
if (INTEGER_LITERAL.test(value))
|
|
36861
|
+
return true;
|
|
36862
|
+
if (TYPE_POSITION.test(value))
|
|
36863
|
+
return true;
|
|
36864
|
+
const call = TRUNCATING_CALL.exec(value);
|
|
36865
|
+
if (!call)
|
|
36866
|
+
return false;
|
|
36867
|
+
const open = call[0].length;
|
|
36868
|
+
return value[open] === "(" && matchDelims(value, open, "(", ")") === value.length;
|
|
36869
|
+
}
|
|
36870
|
+
function annotateLines(src, offsets, message) {
|
|
36871
|
+
if (!offsets.length)
|
|
36872
|
+
return { text: src, annotated: 0 };
|
|
36873
|
+
const lines = src.split(`
|
|
36874
|
+
`);
|
|
36875
|
+
const targets = new Set;
|
|
36876
|
+
let cursor = 0;
|
|
36877
|
+
let next = 0;
|
|
36878
|
+
for (let index = 0;index < lines.length && next < offsets.length; index++) {
|
|
36879
|
+
const end = cursor + lines[index].length;
|
|
36880
|
+
while (next < offsets.length && offsets[next] <= end) {
|
|
36881
|
+
targets.add(index);
|
|
36882
|
+
next++;
|
|
36883
|
+
}
|
|
36884
|
+
cursor = end + 1;
|
|
36885
|
+
}
|
|
36886
|
+
const out = [];
|
|
36887
|
+
let annotated = 0;
|
|
36888
|
+
for (let index = 0;index < lines.length; index++) {
|
|
36889
|
+
const line = lines[index];
|
|
36890
|
+
if (targets.has(index)) {
|
|
36891
|
+
const previous = out[out.length - 1] ?? "";
|
|
36892
|
+
if (!previous.includes(message)) {
|
|
36893
|
+
out.push(`${/^[ \t]*/.exec(line)[0]}${TODO} ${message}`);
|
|
36894
|
+
annotated++;
|
|
36895
|
+
}
|
|
36896
|
+
}
|
|
36897
|
+
out.push(line);
|
|
36898
|
+
}
|
|
36899
|
+
return { text: out.join(`
|
|
36900
|
+
`), annotated };
|
|
36901
|
+
}
|
|
36902
|
+
|
|
36735
36903
|
// bin/migrate/index.ts
|
|
36736
36904
|
var GEMI_MODULES = [
|
|
36737
36905
|
"gemi/services",
|
|
@@ -36835,6 +37003,34 @@ async function runMigrate(options) {
|
|
|
36835
37003
|
if (rewritten !== source)
|
|
36836
37004
|
changes.push({ file, contents: rewritten });
|
|
36837
37005
|
}
|
|
37006
|
+
const pending = new Map;
|
|
37007
|
+
const removed = new Set;
|
|
37008
|
+
changes.forEach((change, index) => {
|
|
37009
|
+
if (change.contents === null)
|
|
37010
|
+
removed.add(change.file);
|
|
37011
|
+
else
|
|
37012
|
+
pending.set(change.file, index);
|
|
37013
|
+
});
|
|
37014
|
+
const swept = new Set;
|
|
37015
|
+
for (const file of walk(appDir)) {
|
|
37016
|
+
if (removed.has(file))
|
|
37017
|
+
continue;
|
|
37018
|
+
swept.add(file);
|
|
37019
|
+
const index = pending.get(file);
|
|
37020
|
+
const before = index === undefined ? readFileSync(file, "utf8") : changes[index].contents;
|
|
37021
|
+
const after = annotateOrmPortHazards(before, rel(rootDir, file), notes);
|
|
37022
|
+
if (after === before)
|
|
37023
|
+
continue;
|
|
37024
|
+
if (index === undefined)
|
|
37025
|
+
changes.push({ file, contents: after });
|
|
37026
|
+
else
|
|
37027
|
+
changes[index].contents = after;
|
|
37028
|
+
}
|
|
37029
|
+
for (const change of changes) {
|
|
37030
|
+
if (change.contents === null || swept.has(change.file))
|
|
37031
|
+
continue;
|
|
37032
|
+
change.contents = annotateOrmPortHazards(change.contents, rel(rootDir, change.file), notes);
|
|
37033
|
+
}
|
|
36838
37034
|
for (const change of changes) {
|
|
36839
37035
|
const label = rel(rootDir, change.file);
|
|
36840
37036
|
if (change.contents === null) {
|
|
@@ -37686,22 +37882,43 @@ function auditModules(orm, files, baseline) {
|
|
|
37686
37882
|
orm.registry.register(name, model);
|
|
37687
37883
|
};
|
|
37688
37884
|
const findings = [];
|
|
37689
|
-
|
|
37690
|
-
|
|
37691
|
-
for (const
|
|
37692
|
-
|
|
37693
|
-
|
|
37694
|
-
|
|
37695
|
-
|
|
37696
|
-
|
|
37697
|
-
|
|
37698
|
-
|
|
37699
|
-
|
|
37885
|
+
const unreadable = [];
|
|
37886
|
+
try {
|
|
37887
|
+
for (const file of files) {
|
|
37888
|
+
restore();
|
|
37889
|
+
const problems = auditOne(orm, file, unreadable);
|
|
37890
|
+
for (const problem of problems) {
|
|
37891
|
+
if (problem.carries !== "queried")
|
|
37892
|
+
continue;
|
|
37893
|
+
findings.push({
|
|
37894
|
+
file: file.label,
|
|
37895
|
+
specifier: file.specifier,
|
|
37896
|
+
className: problem.queried,
|
|
37897
|
+
message: problem.message
|
|
37898
|
+
});
|
|
37899
|
+
}
|
|
37700
37900
|
}
|
|
37901
|
+
} finally {
|
|
37902
|
+
restore();
|
|
37903
|
+
}
|
|
37904
|
+
if (unreadable.length > 0) {
|
|
37905
|
+
throw new CheckModelsError(`${unreadable.length === 1 ? "A file" : `${unreadable.length} files`} ` + `could not be checked:
|
|
37906
|
+
|
|
37907
|
+
${unreadable.join(`
|
|
37908
|
+
|
|
37909
|
+
`)}`);
|
|
37701
37910
|
}
|
|
37702
|
-
restore();
|
|
37703
37911
|
return findings;
|
|
37704
37912
|
}
|
|
37913
|
+
function auditOne(orm, file, unreadable) {
|
|
37914
|
+
try {
|
|
37915
|
+
return orm.auditModelRegistrations(file.module);
|
|
37916
|
+
} catch (error) {
|
|
37917
|
+
unreadable.push(`${file.label}:
|
|
37918
|
+
${error.message}`);
|
|
37919
|
+
return [];
|
|
37920
|
+
}
|
|
37921
|
+
}
|
|
37705
37922
|
|
|
37706
37923
|
class CheckModelsError extends Error {
|
|
37707
37924
|
}
|
|
@@ -38241,5 +38458,5 @@ program.command("app:route-manifest").action(async () => {
|
|
|
38241
38458
|
});
|
|
38242
38459
|
program.parse();
|
|
38243
38460
|
|
|
38244
|
-
//# debugId=
|
|
38461
|
+
//# debugId=55F098D9978D9B5064756E2164756E21
|
|
38245
38462
|
//# sourceMappingURL=gemi.js.map
|