@baasix/baasix 0.1.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/LICENSE.MD +85 -0
- package/README.md +526 -0
- package/assets/banner.jpg +0 -0
- package/assets/banner_small.jpg +0 -0
- package/assets/logo_icon.svg +20 -0
- package/assets/logo_icon_rounded.svg +20 -0
- package/dist/LICENSE.MD +85 -0
- package/dist/README.md +526 -0
- package/dist/app/404/index.html +1 -0
- package/dist/app/404.html +1 -0
- package/dist/app/_next/static/chunks/041e1f03-56ae8a902a7f2fe6.js +24 -0
- package/dist/app/_next/static/chunks/1117-05479929a8da73e3.js +1 -0
- package/dist/app/_next/static/chunks/1299.77cc7b7b76b75cba.js +1 -0
- package/dist/app/_next/static/chunks/1303-35a96e9c9cdeab9d.js +1 -0
- package/dist/app/_next/static/chunks/1509-56ac00cdaaecdf53.js +1 -0
- package/dist/app/_next/static/chunks/1668-e3eabd0f6753c780.js +1 -0
- package/dist/app/_next/static/chunks/1783-d9fb550fd324300c.js +1 -0
- package/dist/app/_next/static/chunks/2117-29b5fa47421595ad.js +2 -0
- package/dist/app/_next/static/chunks/2344.35b46d2179a765b5.js +1 -0
- package/dist/app/_next/static/chunks/257.990da16794a31292.js +1 -0
- package/dist/app/_next/static/chunks/2676-73b0ee7c80073a84.js +1 -0
- package/dist/app/_next/static/chunks/3563-b8842744384391fe.js +1 -0
- package/dist/app/_next/static/chunks/363642f4-933b579ed3c85f60.js +1 -0
- package/dist/app/_next/static/chunks/3817-e20c8f0a0810fc95.js +1 -0
- package/dist/app/_next/static/chunks/3834.84944e390d902509.js +2 -0
- package/dist/app/_next/static/chunks/4043-3a30c8a75896f241.js +1 -0
- package/dist/app/_next/static/chunks/4225-14090c7c0cd9dec6.js +1 -0
- package/dist/app/_next/static/chunks/4438-c9a12ca15b6e9160.js +1 -0
- package/dist/app/_next/static/chunks/4458-679fd0c6884f456a.js +1 -0
- package/dist/app/_next/static/chunks/4475-8bdfbd536fba8c48.js +1 -0
- package/dist/app/_next/static/chunks/4883-8a924721bb21b3b0.js +1 -0
- package/dist/app/_next/static/chunks/489-683ab07188f9df2b.js +1 -0
- package/dist/app/_next/static/chunks/4952-1b97320cf61f3f21.js +1 -0
- package/dist/app/_next/static/chunks/5094-8d53e403235d4ca6.js +1 -0
- package/dist/app/_next/static/chunks/5101-3a146e0625747ad1.js +1 -0
- package/dist/app/_next/static/chunks/54a60aa6-d9747982e0a81f58.js +79 -0
- package/dist/app/_next/static/chunks/5650-f096291df402bfc2.js +1 -0
- package/dist/app/_next/static/chunks/600-539045311240f579.js +1 -0
- package/dist/app/_next/static/chunks/6170-803b82e19d3ade6d.js +89 -0
- package/dist/app/_next/static/chunks/6241-30d7169d1010e5a4.js +1 -0
- package/dist/app/_next/static/chunks/6530-a91e10cffa4200c4.js +1 -0
- package/dist/app/_next/static/chunks/6547-4bbbdb5c399aef1e.js +1 -0
- package/dist/app/_next/static/chunks/6712-781937c53a2c49da.js +1 -0
- package/dist/app/_next/static/chunks/6fcbdc68-90be1a5480b8d353.js +1 -0
- package/dist/app/_next/static/chunks/70e0d97a-aeaf0cdc26ba1a58.js +1 -0
- package/dist/app/_next/static/chunks/7214-5154a89d08d24dde.js +1 -0
- package/dist/app/_next/static/chunks/7324-b53229c59a640880.js +10 -0
- package/dist/app/_next/static/chunks/7636-66424f0b51d350e9.js +1 -0
- package/dist/app/_next/static/chunks/7874-39a3f2541165a675.js +1 -0
- package/dist/app/_next/static/chunks/7982-9da12b83f11e3f5f.js +1 -0
- package/dist/app/_next/static/chunks/8213a2eb-da25a3b3c5521b2b.js +1 -0
- package/dist/app/_next/static/chunks/8473-6598318371eca31b.js +1 -0
- package/dist/app/_next/static/chunks/8640fa6b-72e43370f68e5587.js +1 -0
- package/dist/app/_next/static/chunks/9090-3ef676f29c95f1c7.js +1 -0
- package/dist/app/_next/static/chunks/9124-a02f9e209e6e3cce.js +1 -0
- package/dist/app/_next/static/chunks/926-156f32067d111d6b.js +1 -0
- package/dist/app/_next/static/chunks/9487-b17481605e513b83.js +1 -0
- package/dist/app/_next/static/chunks/9599-a7e572bb88c3392b.js +1 -0
- package/dist/app/_next/static/chunks/9881-419697138376e755.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/activity-log/all-activity/page-8917930b4d663405.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/activity-log/email-log/page-b27a6ee32782d7df.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/activity-log/notifications/page-b7eda523ede2702c.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/activity-log/page-1cfa62d1caedaed0.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/activity-log/sessions/page-3e21e20db90aeff7.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/activity-log/workflow-executions/page-27bcc26b747fb29b.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/activity-log/workflow-logs/page-9f9e9e952aef436e.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/change-password/page-8d61aa499eabb127.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/dashboard/page-1ceeac9e72997a8a.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/data-browser/page-8cda2b57759dd670.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/file-manager/page-8c6f1b1da66ad7e4.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/layout-f70d225b2759c998.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/settings/migrations/page-aacec8f7cfb40ab2.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/settings/permissions/page-828110cfcde429c6.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/settings/project/page-420e794bb76bd204.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/settings/roles/page-9001d02b28f70708.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/settings/schema/page-899574f35091dd58.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/settings/tasks/page-ad7ab3e27c83f44f.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/settings/templates/edit/page-bd83414cb8c4cb04.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/settings/templates/page-3181447f8772b1d3.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/settings/tenants/page-ef9bfbacef5a1d73.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/users/invites/page-480306b7b2bbac7e.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/users/list/page-74da51254c2606b3.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/users/page-e99c6f0b915001b2.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/users/preferences/page-1a935630ce8f2b12.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/users/user-roles/page-901dfb8ea1f39ca8.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/workflows/detail/page-9a6b839aea688ca4.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/workflows/edit/page-11774efbc2fecae2.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/workflows/execution/page-8ec1aea90412c03d.js +1 -0
- package/dist/app/_next/static/chunks/app/(authenticated)/workflows/page-88bc5b36ccb0a1f7.js +1 -0
- package/dist/app/_next/static/chunks/app/(public)/forgot-password/page-ed263fd46ef81c20.js +1 -0
- package/dist/app/_next/static/chunks/app/(public)/layout-f538977545844af8.js +1 -0
- package/dist/app/_next/static/chunks/app/(public)/login/page-c0a10b137f346096.js +1 -0
- package/dist/app/_next/static/chunks/app/(public)/register/page-4cb7644893efd9b3.js +1 -0
- package/dist/app/_next/static/chunks/app/_not-found/page-653f8815b78256cc.js +1 -0
- package/dist/app/_next/static/chunks/app/layout-591ca7a3e16528a1.js +1 -0
- package/dist/app/_next/static/chunks/app/page-dd19d124b5fa2577.js +1 -0
- package/dist/app/_next/static/chunks/c37d3baf.c2ff165f5b02c692.js +1 -0
- package/dist/app/_next/static/chunks/d0deef33.0379166a4ec23470.js +1 -0
- package/dist/app/_next/static/chunks/fd9d1056-54169f07cd680d6c.js +1 -0
- package/dist/app/_next/static/chunks/framework-8e0e0f4a6b83a956.js +1 -0
- package/dist/app/_next/static/chunks/main-324e91f5a430cddf.js +1 -0
- package/dist/app/_next/static/chunks/main-app-55bcae20c77aaf0e.js +1 -0
- package/dist/app/_next/static/chunks/pages/_app-3c9ca398d360b709.js +1 -0
- package/dist/app/_next/static/chunks/pages/_error-cf5ca766ac8f493f.js +1 -0
- package/dist/app/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/dist/app/_next/static/chunks/webpack-2c306566f7ee1b63.js +1 -0
- package/dist/app/_next/static/css/6c4002bae4e236b2.css +3 -0
- package/dist/app/_next/static/css/a275cc2b185e04f8.css +1 -0
- package/dist/app/_next/static/eCWhKA8XHqmB1zgFcEtN2/_buildManifest.js +1 -0
- package/dist/app/_next/static/eCWhKA8XHqmB1zgFcEtN2/_ssgManifest.js +1 -0
- package/dist/app/activity-log/all-activity/index.html +1 -0
- package/dist/app/activity-log/all-activity/index.txt +14 -0
- package/dist/app/activity-log/email-log/index.html +1 -0
- package/dist/app/activity-log/email-log/index.txt +14 -0
- package/dist/app/activity-log/index.html +1 -0
- package/dist/app/activity-log/index.txt +14 -0
- package/dist/app/activity-log/notifications/index.html +1 -0
- package/dist/app/activity-log/notifications/index.txt +14 -0
- package/dist/app/activity-log/sessions/index.html +1 -0
- package/dist/app/activity-log/sessions/index.txt +14 -0
- package/dist/app/activity-log/workflow-executions/index.html +1 -0
- package/dist/app/activity-log/workflow-executions/index.txt +14 -0
- package/dist/app/activity-log/workflow-logs/index.html +1 -0
- package/dist/app/activity-log/workflow-logs/index.txt +14 -0
- package/dist/app/change-password/index.html +1 -0
- package/dist/app/change-password/index.txt +14 -0
- package/dist/app/dashboard/index.html +1 -0
- package/dist/app/dashboard/index.txt +14 -0
- package/dist/app/data-browser/index.html +1 -0
- package/dist/app/data-browser/index.txt +14 -0
- package/dist/app/file-manager/index.html +1 -0
- package/dist/app/file-manager/index.txt +14 -0
- package/dist/app/forgot-password/index.html +1 -0
- package/dist/app/forgot-password/index.txt +13 -0
- package/dist/app/index.html +1 -0
- package/dist/app/index.txt +9 -0
- package/dist/app/login/index.html +1 -0
- package/dist/app/login/index.txt +13 -0
- package/dist/app/logo-dark.png +0 -0
- package/dist/app/logo-icon.svg +81 -0
- package/dist/app/logo-light.png +0 -0
- package/dist/app/register/index.html +1 -0
- package/dist/app/register/index.txt +13 -0
- package/dist/app/settings/migrations/index.html +1 -0
- package/dist/app/settings/migrations/index.txt +14 -0
- package/dist/app/settings/permissions/index.html +1 -0
- package/dist/app/settings/permissions/index.txt +14 -0
- package/dist/app/settings/project/index.html +1 -0
- package/dist/app/settings/project/index.txt +14 -0
- package/dist/app/settings/roles/index.html +1 -0
- package/dist/app/settings/roles/index.txt +14 -0
- package/dist/app/settings/schema/index.html +1 -0
- package/dist/app/settings/schema/index.txt +14 -0
- package/dist/app/settings/tasks/index.html +1 -0
- package/dist/app/settings/tasks/index.txt +14 -0
- package/dist/app/settings/templates/edit/index.html +1 -0
- package/dist/app/settings/templates/edit/index.txt +14 -0
- package/dist/app/settings/templates/index.html +1 -0
- package/dist/app/settings/templates/index.txt +14 -0
- package/dist/app/settings/tenants/index.html +1 -0
- package/dist/app/settings/tenants/index.txt +14 -0
- package/dist/app/users/index.html +1 -0
- package/dist/app/users/index.txt +14 -0
- package/dist/app/users/invites/index.html +1 -0
- package/dist/app/users/invites/index.txt +14 -0
- package/dist/app/users/list/index.html +1 -0
- package/dist/app/users/list/index.txt +14 -0
- package/dist/app/users/preferences/index.html +1 -0
- package/dist/app/users/preferences/index.txt +14 -0
- package/dist/app/users/user-roles/index.html +1 -0
- package/dist/app/users/user-roles/index.txt +14 -0
- package/dist/app/workflows/detail/index.html +1 -0
- package/dist/app/workflows/detail/index.txt +14 -0
- package/dist/app/workflows/edit/index.html +1 -0
- package/dist/app/workflows/edit/index.txt +14 -0
- package/dist/app/workflows/execution/index.html +1 -0
- package/dist/app/workflows/execution/index.txt +14 -0
- package/dist/app/workflows/index.html +1 -0
- package/dist/app/workflows/index.txt +14 -0
- package/dist/app.d.ts +36 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +546 -0
- package/dist/app.js.map +1 -0
- package/dist/auth/adapters/baasix-adapter.d.ts +12 -0
- package/dist/auth/adapters/baasix-adapter.d.ts.map +1 -0
- package/dist/auth/adapters/baasix-adapter.js +318 -0
- package/dist/auth/adapters/baasix-adapter.js.map +1 -0
- package/dist/auth/adapters/index.d.ts +6 -0
- package/dist/auth/adapters/index.d.ts.map +1 -0
- package/dist/auth/adapters/index.js +5 -0
- package/dist/auth/adapters/index.js.map +1 -0
- package/dist/auth/core.d.ts +73 -0
- package/dist/auth/core.d.ts.map +1 -0
- package/dist/auth/core.js +528 -0
- package/dist/auth/core.js.map +1 -0
- package/dist/auth/index.d.ts +56 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +58 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/oauth2/index.d.ts +5 -0
- package/dist/auth/oauth2/index.d.ts.map +1 -0
- package/dist/auth/oauth2/index.js +5 -0
- package/dist/auth/oauth2/index.js.map +1 -0
- package/dist/auth/oauth2/utils.d.ts +90 -0
- package/dist/auth/oauth2/utils.d.ts.map +1 -0
- package/dist/auth/oauth2/utils.js +167 -0
- package/dist/auth/oauth2/utils.js.map +1 -0
- package/dist/auth/providers/apple.d.ts +28 -0
- package/dist/auth/providers/apple.d.ts.map +1 -0
- package/dist/auth/providers/apple.js +192 -0
- package/dist/auth/providers/apple.js.map +1 -0
- package/dist/auth/providers/credential.d.ts +87 -0
- package/dist/auth/providers/credential.d.ts.map +1 -0
- package/dist/auth/providers/credential.js +162 -0
- package/dist/auth/providers/credential.js.map +1 -0
- package/dist/auth/providers/facebook.d.ts +26 -0
- package/dist/auth/providers/facebook.d.ts.map +1 -0
- package/dist/auth/providers/facebook.js +112 -0
- package/dist/auth/providers/facebook.js.map +1 -0
- package/dist/auth/providers/github.d.ts +29 -0
- package/dist/auth/providers/github.d.ts.map +1 -0
- package/dist/auth/providers/github.js +144 -0
- package/dist/auth/providers/github.js.map +1 -0
- package/dist/auth/providers/google.d.ts +32 -0
- package/dist/auth/providers/google.d.ts.map +1 -0
- package/dist/auth/providers/google.js +145 -0
- package/dist/auth/providers/google.js.map +1 -0
- package/dist/auth/providers/index.d.ts +22 -0
- package/dist/auth/providers/index.d.ts.map +1 -0
- package/dist/auth/providers/index.js +17 -0
- package/dist/auth/providers/index.js.map +1 -0
- package/dist/auth/routes.d.ts +63 -0
- package/dist/auth/routes.d.ts.map +1 -0
- package/dist/auth/routes.js +827 -0
- package/dist/auth/routes.js.map +1 -0
- package/dist/auth/services/index.d.ts +10 -0
- package/dist/auth/services/index.d.ts.map +1 -0
- package/dist/auth/services/index.js +7 -0
- package/dist/auth/services/index.js.map +1 -0
- package/dist/auth/services/session.d.ts +81 -0
- package/dist/auth/services/session.d.ts.map +1 -0
- package/dist/auth/services/session.js +186 -0
- package/dist/auth/services/session.js.map +1 -0
- package/dist/auth/services/token.d.ts +41 -0
- package/dist/auth/services/token.d.ts.map +1 -0
- package/dist/auth/services/token.js +44 -0
- package/dist/auth/services/token.js.map +1 -0
- package/dist/auth/services/verification.d.ts +77 -0
- package/dist/auth/services/verification.d.ts.map +1 -0
- package/dist/auth/services/verification.js +143 -0
- package/dist/auth/services/verification.js.map +1 -0
- package/dist/auth/types.d.ts +318 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +6 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/customTypes/arrays.d.ts +200 -0
- package/dist/customTypes/arrays.d.ts.map +1 -0
- package/dist/customTypes/arrays.js +309 -0
- package/dist/customTypes/arrays.js.map +1 -0
- package/dist/customTypes/index.d.ts +8 -0
- package/dist/customTypes/index.d.ts.map +1 -0
- package/dist/customTypes/index.js +11 -0
- package/dist/customTypes/index.js.map +1 -0
- package/dist/customTypes/postgis.d.ts +146 -0
- package/dist/customTypes/postgis.d.ts.map +1 -0
- package/dist/customTypes/postgis.js +315 -0
- package/dist/customTypes/postgis.js.map +1 -0
- package/dist/customTypes/ranges.d.ts +128 -0
- package/dist/customTypes/ranges.d.ts.map +1 -0
- package/dist/customTypes/ranges.js +257 -0
- package/dist/customTypes/ranges.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -0
- package/dist/migrations/0.1.0-alpha.0_initial_setup.d.ts +29 -0
- package/dist/migrations/0.1.0-alpha.0_initial_setup.d.ts.map +1 -0
- package/dist/migrations/0.1.0-alpha.0_initial_setup.js +72 -0
- package/dist/migrations/0.1.0-alpha.0_initial_setup.js.map +1 -0
- package/dist/migrations/_example_migration.d.ts +31 -0
- package/dist/migrations/_example_migration.d.ts.map +1 -0
- package/dist/migrations/_example_migration.js +75 -0
- package/dist/migrations/_example_migration.js.map +1 -0
- package/dist/plugins/definePlugin.d.ts +49 -0
- package/dist/plugins/definePlugin.d.ts.map +1 -0
- package/dist/plugins/definePlugin.js +131 -0
- package/dist/plugins/definePlugin.js.map +1 -0
- package/dist/plugins/softDelete.d.ts +179 -0
- package/dist/plugins/softDelete.d.ts.map +1 -0
- package/dist/plugins/softDelete.js +235 -0
- package/dist/plugins/softDelete.js.map +1 -0
- package/dist/routes/auth.route.d.ts +14 -0
- package/dist/routes/auth.route.d.ts.map +1 -0
- package/dist/routes/auth.route.js +421 -0
- package/dist/routes/auth.route.js.map +1 -0
- package/dist/routes/file.route.d.ts +7 -0
- package/dist/routes/file.route.d.ts.map +1 -0
- package/dist/routes/file.route.js +274 -0
- package/dist/routes/file.route.js.map +1 -0
- package/dist/routes/items.route.d.ts +7 -0
- package/dist/routes/items.route.d.ts.map +1 -0
- package/dist/routes/items.route.js +369 -0
- package/dist/routes/items.route.js.map +1 -0
- package/dist/routes/migration.route.d.ts +7 -0
- package/dist/routes/migration.route.d.ts.map +1 -0
- package/dist/routes/migration.route.js +225 -0
- package/dist/routes/migration.route.js.map +1 -0
- package/dist/routes/notification.route.d.ts +7 -0
- package/dist/routes/notification.route.d.ts.map +1 -0
- package/dist/routes/notification.route.js +124 -0
- package/dist/routes/notification.route.js.map +1 -0
- package/dist/routes/openapi.route.d.ts +7 -0
- package/dist/routes/openapi.route.d.ts.map +1 -0
- package/dist/routes/openapi.route.js +2169 -0
- package/dist/routes/openapi.route.js.map +1 -0
- package/dist/routes/permission.route.d.ts +7 -0
- package/dist/routes/permission.route.d.ts.map +1 -0
- package/dist/routes/permission.route.js +158 -0
- package/dist/routes/permission.route.js.map +1 -0
- package/dist/routes/realtime.route.d.ts +21 -0
- package/dist/routes/realtime.route.d.ts.map +1 -0
- package/dist/routes/realtime.route.js +243 -0
- package/dist/routes/realtime.route.js.map +1 -0
- package/dist/routes/reports.route.d.ts +7 -0
- package/dist/routes/reports.route.d.ts.map +1 -0
- package/dist/routes/reports.route.js +95 -0
- package/dist/routes/reports.route.js.map +1 -0
- package/dist/routes/schema.route.d.ts +7 -0
- package/dist/routes/schema.route.d.ts.map +1 -0
- package/dist/routes/schema.route.js +1780 -0
- package/dist/routes/schema.route.js.map +1 -0
- package/dist/routes/settings.route.d.ts +7 -0
- package/dist/routes/settings.route.d.ts.map +1 -0
- package/dist/routes/settings.route.js +154 -0
- package/dist/routes/settings.route.js.map +1 -0
- package/dist/routes/templates.route.d.ts +7 -0
- package/dist/routes/templates.route.d.ts.map +1 -0
- package/dist/routes/templates.route.js +91 -0
- package/dist/routes/templates.route.js.map +1 -0
- package/dist/routes/utils.route.d.ts +7 -0
- package/dist/routes/utils.route.d.ts.map +1 -0
- package/dist/routes/utils.route.js +33 -0
- package/dist/routes/utils.route.js.map +1 -0
- package/dist/routes/workflow.route.d.ts +7 -0
- package/dist/routes/workflow.route.d.ts.map +1 -0
- package/dist/routes/workflow.route.js +787 -0
- package/dist/routes/workflow.route.js.map +1 -0
- package/dist/services/AssetsService.d.ts +39 -0
- package/dist/services/AssetsService.d.ts.map +1 -0
- package/dist/services/AssetsService.js +255 -0
- package/dist/services/AssetsService.js.map +1 -0
- package/dist/services/CacheService.d.ts +169 -0
- package/dist/services/CacheService.d.ts.map +1 -0
- package/dist/services/CacheService.js +722 -0
- package/dist/services/CacheService.js.map +1 -0
- package/dist/services/FilesService.d.ts +30 -0
- package/dist/services/FilesService.d.ts.map +1 -0
- package/dist/services/FilesService.js +268 -0
- package/dist/services/FilesService.js.map +1 -0
- package/dist/services/HooksManager.d.ts +38 -0
- package/dist/services/HooksManager.d.ts.map +1 -0
- package/dist/services/HooksManager.js +165 -0
- package/dist/services/HooksManager.js.map +1 -0
- package/dist/services/ItemsService.d.ts +273 -0
- package/dist/services/ItemsService.d.ts.map +1 -0
- package/dist/services/ItemsService.js +2458 -0
- package/dist/services/ItemsService.js.map +1 -0
- package/dist/services/MailService.d.ts +76 -0
- package/dist/services/MailService.d.ts.map +1 -0
- package/dist/services/MailService.js +585 -0
- package/dist/services/MailService.js.map +1 -0
- package/dist/services/MigrationService.d.ts +243 -0
- package/dist/services/MigrationService.d.ts.map +1 -0
- package/dist/services/MigrationService.js +914 -0
- package/dist/services/MigrationService.js.map +1 -0
- package/dist/services/NotificationService.d.ts +35 -0
- package/dist/services/NotificationService.d.ts.map +1 -0
- package/dist/services/NotificationService.js +159 -0
- package/dist/services/NotificationService.js.map +1 -0
- package/dist/services/PermissionService.d.ts +128 -0
- package/dist/services/PermissionService.d.ts.map +1 -0
- package/dist/services/PermissionService.js +373 -0
- package/dist/services/PermissionService.js.map +1 -0
- package/dist/services/PluginManager.d.ts +138 -0
- package/dist/services/PluginManager.d.ts.map +1 -0
- package/dist/services/PluginManager.js +463 -0
- package/dist/services/PluginManager.js.map +1 -0
- package/dist/services/RealtimeService.d.ts +209 -0
- package/dist/services/RealtimeService.d.ts.map +1 -0
- package/dist/services/RealtimeService.js +978 -0
- package/dist/services/RealtimeService.js.map +1 -0
- package/dist/services/ReportService.d.ts +13 -0
- package/dist/services/ReportService.d.ts.map +1 -0
- package/dist/services/ReportService.js +91 -0
- package/dist/services/ReportService.js.map +1 -0
- package/dist/services/SettingsService.d.ts +60 -0
- package/dist/services/SettingsService.d.ts.map +1 -0
- package/dist/services/SettingsService.js +474 -0
- package/dist/services/SettingsService.js.map +1 -0
- package/dist/services/SocketService.d.ts +129 -0
- package/dist/services/SocketService.d.ts.map +1 -0
- package/dist/services/SocketService.js +600 -0
- package/dist/services/SocketService.js.map +1 -0
- package/dist/services/StatsService.d.ts +10 -0
- package/dist/services/StatsService.d.ts.map +1 -0
- package/dist/services/StatsService.js +40 -0
- package/dist/services/StatsService.js.map +1 -0
- package/dist/services/StorageService.d.ts +20 -0
- package/dist/services/StorageService.d.ts.map +1 -0
- package/dist/services/StorageService.js +164 -0
- package/dist/services/StorageService.js.map +1 -0
- package/dist/services/TasksService.d.ts +74 -0
- package/dist/services/TasksService.d.ts.map +1 -0
- package/dist/services/TasksService.js +404 -0
- package/dist/services/TasksService.js.map +1 -0
- package/dist/services/WorkflowService.d.ts +305 -0
- package/dist/services/WorkflowService.d.ts.map +1 -0
- package/dist/services/WorkflowService.js +1811 -0
- package/dist/services/WorkflowService.js.map +1 -0
- package/dist/templates/logo/logo.png +0 -0
- package/dist/templates/mails/default.liquid +23 -0
- package/dist/types/aggregation.d.ts +40 -0
- package/dist/types/aggregation.d.ts.map +1 -0
- package/dist/types/aggregation.js +6 -0
- package/dist/types/aggregation.js.map +1 -0
- package/dist/types/assets.d.ts +32 -0
- package/dist/types/assets.d.ts.map +1 -0
- package/dist/types/assets.js +6 -0
- package/dist/types/assets.js.map +1 -0
- package/dist/types/auth.d.ts +50 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/auth.js +6 -0
- package/dist/types/auth.js.map +1 -0
- package/dist/types/cache.d.ts +47 -0
- package/dist/types/cache.d.ts.map +1 -0
- package/dist/types/cache.js +6 -0
- package/dist/types/cache.js.map +1 -0
- package/dist/types/database.d.ts +16 -0
- package/dist/types/database.d.ts.map +1 -0
- package/dist/types/database.js +6 -0
- package/dist/types/database.js.map +1 -0
- package/dist/types/fields.d.ts +71 -0
- package/dist/types/fields.d.ts.map +1 -0
- package/dist/types/fields.js +6 -0
- package/dist/types/fields.js.map +1 -0
- package/dist/types/files.d.ts +33 -0
- package/dist/types/files.d.ts.map +1 -0
- package/dist/types/files.js +6 -0
- package/dist/types/files.js.map +1 -0
- package/dist/types/hooks.d.ts +29 -0
- package/dist/types/hooks.d.ts.map +1 -0
- package/dist/types/hooks.js +6 -0
- package/dist/types/hooks.js.map +1 -0
- package/dist/types/import-export.d.ts +62 -0
- package/dist/types/import-export.d.ts.map +1 -0
- package/dist/types/import-export.js +6 -0
- package/dist/types/import-export.js.map +1 -0
- package/dist/types/index.d.ts +31 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +58 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/mail.d.ts +34 -0
- package/dist/types/mail.d.ts.map +1 -0
- package/dist/types/mail.js +6 -0
- package/dist/types/mail.js.map +1 -0
- package/dist/types/notifications.d.ts +16 -0
- package/dist/types/notifications.d.ts.map +1 -0
- package/dist/types/notifications.js +6 -0
- package/dist/types/notifications.js.map +1 -0
- package/dist/types/plugin.d.ts +351 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/plugin.js +8 -0
- package/dist/types/plugin.js.map +1 -0
- package/dist/types/query.d.ts +71 -0
- package/dist/types/query.d.ts.map +1 -0
- package/dist/types/query.js +6 -0
- package/dist/types/query.js.map +1 -0
- package/dist/types/relations.d.ts +111 -0
- package/dist/types/relations.d.ts.map +1 -0
- package/dist/types/relations.js +6 -0
- package/dist/types/relations.js.map +1 -0
- package/dist/types/reports.d.ts +17 -0
- package/dist/types/reports.d.ts.map +1 -0
- package/dist/types/reports.js +6 -0
- package/dist/types/reports.js.map +1 -0
- package/dist/types/schema.d.ts +26 -0
- package/dist/types/schema.d.ts.map +1 -0
- package/dist/types/schema.js +6 -0
- package/dist/types/schema.js.map +1 -0
- package/dist/types/seed.d.ts +27 -0
- package/dist/types/seed.d.ts.map +1 -0
- package/dist/types/seed.js +6 -0
- package/dist/types/seed.js.map +1 -0
- package/dist/types/services.d.ts +68 -0
- package/dist/types/services.d.ts.map +1 -0
- package/dist/types/services.js +6 -0
- package/dist/types/services.js.map +1 -0
- package/dist/types/settings.d.ts +36 -0
- package/dist/types/settings.d.ts.map +1 -0
- package/dist/types/settings.js +6 -0
- package/dist/types/settings.js.map +1 -0
- package/dist/types/sockets.d.ts +26 -0
- package/dist/types/sockets.d.ts.map +1 -0
- package/dist/types/sockets.js +6 -0
- package/dist/types/sockets.js.map +1 -0
- package/dist/types/sort.d.ts +25 -0
- package/dist/types/sort.d.ts.map +1 -0
- package/dist/types/sort.js +6 -0
- package/dist/types/sort.js.map +1 -0
- package/dist/types/spatial.d.ts +19 -0
- package/dist/types/spatial.d.ts.map +1 -0
- package/dist/types/spatial.js +6 -0
- package/dist/types/spatial.js.map +1 -0
- package/dist/types/stats.d.ts +21 -0
- package/dist/types/stats.d.ts.map +1 -0
- package/dist/types/stats.js +6 -0
- package/dist/types/stats.js.map +1 -0
- package/dist/types/storage.d.ts +19 -0
- package/dist/types/storage.d.ts.map +1 -0
- package/dist/types/storage.js +6 -0
- package/dist/types/storage.js.map +1 -0
- package/dist/types/tasks.d.ts +14 -0
- package/dist/types/tasks.d.ts.map +1 -0
- package/dist/types/tasks.js +6 -0
- package/dist/types/tasks.js.map +1 -0
- package/dist/types/utils.d.ts +54 -0
- package/dist/types/utils.d.ts.map +1 -0
- package/dist/types/utils.js +6 -0
- package/dist/types/utils.js.map +1 -0
- package/dist/types/workflow.d.ts +17 -0
- package/dist/types/workflow.d.ts.map +1 -0
- package/dist/types/workflow.js +6 -0
- package/dist/types/workflow.js.map +1 -0
- package/dist/utils/aggregationUtils.d.ts +192 -0
- package/dist/utils/aggregationUtils.d.ts.map +1 -0
- package/dist/utils/aggregationUtils.js +450 -0
- package/dist/utils/aggregationUtils.js.map +1 -0
- package/dist/utils/auth.d.ts +93 -0
- package/dist/utils/auth.d.ts.map +1 -0
- package/dist/utils/auth.js +557 -0
- package/dist/utils/auth.js.map +1 -0
- package/dist/utils/cache.d.ts +64 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +464 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/common.d.ts +53 -0
- package/dist/utils/common.d.ts.map +1 -0
- package/dist/utils/common.js +162 -0
- package/dist/utils/common.js.map +1 -0
- package/dist/utils/db.d.ts +101 -0
- package/dist/utils/db.d.ts.map +1 -0
- package/dist/utils/db.js +413 -0
- package/dist/utils/db.js.map +1 -0
- package/dist/utils/dirname.d.ts +30 -0
- package/dist/utils/dirname.d.ts.map +1 -0
- package/dist/utils/dirname.js +95 -0
- package/dist/utils/dirname.js.map +1 -0
- package/dist/utils/dynamicVariableResolver.d.ts +17 -0
- package/dist/utils/dynamicVariableResolver.d.ts.map +1 -0
- package/dist/utils/dynamicVariableResolver.js +262 -0
- package/dist/utils/dynamicVariableResolver.js.map +1 -0
- package/dist/utils/env.d.ts +38 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +80 -0
- package/dist/utils/env.js.map +1 -0
- package/dist/utils/errorHandler.d.ts +14 -0
- package/dist/utils/errorHandler.d.ts.map +1 -0
- package/dist/utils/errorHandler.js +79 -0
- package/dist/utils/errorHandler.js.map +1 -0
- package/dist/utils/fieldExpansion.d.ts +30 -0
- package/dist/utils/fieldExpansion.d.ts.map +1 -0
- package/dist/utils/fieldExpansion.js +145 -0
- package/dist/utils/fieldExpansion.js.map +1 -0
- package/dist/utils/fieldUtils.d.ts +179 -0
- package/dist/utils/fieldUtils.d.ts.map +1 -0
- package/dist/utils/fieldUtils.js +424 -0
- package/dist/utils/fieldUtils.js.map +1 -0
- package/dist/utils/filterOperators.d.ts +472 -0
- package/dist/utils/filterOperators.d.ts.map +1 -0
- package/dist/utils/filterOperators.js +1229 -0
- package/dist/utils/filterOperators.js.map +1 -0
- package/dist/utils/importUtils.d.ts +127 -0
- package/dist/utils/importUtils.d.ts.map +1 -0
- package/dist/utils/importUtils.js +437 -0
- package/dist/utils/importUtils.js.map +1 -0
- package/dist/utils/index.d.ts +75 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +101 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +41 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +217 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/orderUtils.d.ts +117 -0
- package/dist/utils/orderUtils.d.ts.map +1 -0
- package/dist/utils/orderUtils.js +249 -0
- package/dist/utils/orderUtils.js.map +1 -0
- package/dist/utils/queryBuilder.d.ts +118 -0
- package/dist/utils/queryBuilder.d.ts.map +1 -0
- package/dist/utils/queryBuilder.js +489 -0
- package/dist/utils/queryBuilder.js.map +1 -0
- package/dist/utils/relationLoader.d.ts +65 -0
- package/dist/utils/relationLoader.d.ts.map +1 -0
- package/dist/utils/relationLoader.js +1081 -0
- package/dist/utils/relationLoader.js.map +1 -0
- package/dist/utils/relationPathResolver.d.ts +30 -0
- package/dist/utils/relationPathResolver.d.ts.map +1 -0
- package/dist/utils/relationPathResolver.js +173 -0
- package/dist/utils/relationPathResolver.js.map +1 -0
- package/dist/utils/relationUtils.d.ts +139 -0
- package/dist/utils/relationUtils.d.ts.map +1 -0
- package/dist/utils/relationUtils.js +711 -0
- package/dist/utils/relationUtils.js.map +1 -0
- package/dist/utils/router.d.ts +6 -0
- package/dist/utils/router.d.ts.map +1 -0
- package/dist/utils/router.js +95 -0
- package/dist/utils/router.js.map +1 -0
- package/dist/utils/schema.d.ts +88 -0
- package/dist/utils/schema.d.ts.map +1 -0
- package/dist/utils/schema.js +24 -0
- package/dist/utils/schema.js.map +1 -0
- package/dist/utils/schemaManager.d.ts +238 -0
- package/dist/utils/schemaManager.d.ts.map +1 -0
- package/dist/utils/schemaManager.js +1992 -0
- package/dist/utils/schemaManager.js.map +1 -0
- package/dist/utils/schemaValidator.d.ts +83 -0
- package/dist/utils/schemaValidator.d.ts.map +1 -0
- package/dist/utils/schemaValidator.js +491 -0
- package/dist/utils/schemaValidator.js.map +1 -0
- package/dist/utils/seed.d.ts +45 -0
- package/dist/utils/seed.d.ts.map +1 -0
- package/dist/utils/seed.js +248 -0
- package/dist/utils/seed.js.map +1 -0
- package/dist/utils/sessionCleanup.d.ts +10 -0
- package/dist/utils/sessionCleanup.d.ts.map +1 -0
- package/dist/utils/sessionCleanup.js +49 -0
- package/dist/utils/sessionCleanup.js.map +1 -0
- package/dist/utils/sortUtils.d.ts +117 -0
- package/dist/utils/sortUtils.d.ts.map +1 -0
- package/dist/utils/sortUtils.js +232 -0
- package/dist/utils/sortUtils.js.map +1 -0
- package/dist/utils/spatialUtils.d.ts +244 -0
- package/dist/utils/spatialUtils.d.ts.map +1 -0
- package/dist/utils/spatialUtils.js +359 -0
- package/dist/utils/spatialUtils.js.map +1 -0
- package/dist/utils/systemschema.d.ts +11040 -0
- package/dist/utils/systemschema.d.ts.map +1 -0
- package/dist/utils/systemschema.js +1777 -0
- package/dist/utils/systemschema.js.map +1 -0
- package/dist/utils/tenantUtils.d.ts +34 -0
- package/dist/utils/tenantUtils.d.ts.map +1 -0
- package/dist/utils/tenantUtils.js +124 -0
- package/dist/utils/tenantUtils.js.map +1 -0
- package/dist/utils/typeMapper.d.ts +25 -0
- package/dist/utils/typeMapper.d.ts.map +1 -0
- package/dist/utils/typeMapper.js +282 -0
- package/dist/utils/typeMapper.js.map +1 -0
- package/dist/utils/valueValidator.d.ts +60 -0
- package/dist/utils/valueValidator.d.ts.map +1 -0
- package/dist/utils/valueValidator.js +303 -0
- package/dist/utils/valueValidator.js.map +1 -0
- package/dist/utils/workflow.d.ts +87 -0
- package/dist/utils/workflow.d.ts.map +1 -0
- package/dist/utils/workflow.js +205 -0
- package/dist/utils/workflow.js.map +1 -0
- package/package.json +115 -0
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Order/Sort Utilities Module for Drizzle ORM
|
|
3
|
+
*
|
|
4
|
+
* This module provides sorting utilities that convert Sequelize-style
|
|
5
|
+
* sort objects into Drizzle ORM orderBy clauses.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Convert sort objects to Drizzle orderBy
|
|
9
|
+
* - Support ascending/descending sort
|
|
10
|
+
* - Handle nested relation sorting
|
|
11
|
+
* - Support special fields (aggregate functions, computed columns)
|
|
12
|
+
* - Full-text search relevance ranking
|
|
13
|
+
*/
|
|
14
|
+
import { sql, asc, desc } from 'drizzle-orm';
|
|
15
|
+
/**
|
|
16
|
+
* Process a single sort field
|
|
17
|
+
* Handles both simple fields and complex nested relation paths
|
|
18
|
+
*/
|
|
19
|
+
function processSortField(fieldPath, direction, ctx) {
|
|
20
|
+
const normalizedDirection = direction.toUpperCase();
|
|
21
|
+
// Handle nested relation paths
|
|
22
|
+
if (fieldPath.includes('.')) {
|
|
23
|
+
const parts = fieldPath.split('.');
|
|
24
|
+
// For nested relation paths (e.g., "userRoles.role.name" or "author.name"),
|
|
25
|
+
// the table alias is the SECOND-TO-LAST part (the immediate parent relation),
|
|
26
|
+
// and the column is the LAST part.
|
|
27
|
+
//
|
|
28
|
+
// Example: "userRoles.role.name"
|
|
29
|
+
// - userRoles is aliased as "userRoles" (HasMany JOIN)
|
|
30
|
+
// - role is aliased as "role" (BelongsTo nested JOIN under userRoles)
|
|
31
|
+
// - We ORDER BY "role"."name"
|
|
32
|
+
//
|
|
33
|
+
// Example: "author.name"
|
|
34
|
+
// - author is aliased as "author"
|
|
35
|
+
// - We ORDER BY "author"."name"
|
|
36
|
+
const relationName = parts[parts.length - 2]; // Second-to-last part is the table alias
|
|
37
|
+
const columnName = parts[parts.length - 1]; // Last part is the column
|
|
38
|
+
const sqlColumn = sql.raw(`"${relationName}"."${columnName}"`);
|
|
39
|
+
return normalizedDirection === 'ASC' ? asc(sqlColumn) : desc(sqlColumn);
|
|
40
|
+
}
|
|
41
|
+
// Direct field - check if it exists in schema
|
|
42
|
+
if (ctx.schema && ctx.schema[fieldPath]) {
|
|
43
|
+
const column = ctx.schema[fieldPath];
|
|
44
|
+
return normalizedDirection === 'ASC' ? asc(column) : desc(column);
|
|
45
|
+
}
|
|
46
|
+
// Fallback to raw SQL for computed/aggregate fields
|
|
47
|
+
const sqlColumn = ctx.tableName
|
|
48
|
+
? sql.raw(`"${ctx.tableName}"."${fieldPath}"`)
|
|
49
|
+
: sql.raw(`"${fieldPath}"`);
|
|
50
|
+
return normalizedDirection === 'ASC' ? asc(sqlColumn) : desc(sqlColumn);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Convert Sequelize-style sort object to Drizzle orderBy array
|
|
54
|
+
*
|
|
55
|
+
* @param sort - Sort object or JSON string
|
|
56
|
+
* @param ctx - Sort context with table schema
|
|
57
|
+
* @returns Array of Drizzle orderBy SQL expressions
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* const sort = { name: 'ASC', createdAt: 'DESC' };
|
|
62
|
+
*
|
|
63
|
+
* const orderBy = drizzleOrder(sort, {
|
|
64
|
+
* table: usersTable,
|
|
65
|
+
* tableName: 'users',
|
|
66
|
+
* schema: usersTable
|
|
67
|
+
* });
|
|
68
|
+
*
|
|
69
|
+
* // Use in query:
|
|
70
|
+
* const results = await db.select().from(usersTable).orderBy(...orderBy);
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export function drizzleOrder(sort, ctx) {
|
|
74
|
+
if (!sort)
|
|
75
|
+
return [];
|
|
76
|
+
// Parse JSON string if needed
|
|
77
|
+
let sortObject;
|
|
78
|
+
if (typeof sort === 'string') {
|
|
79
|
+
try {
|
|
80
|
+
sortObject = JSON.parse(sort);
|
|
81
|
+
}
|
|
82
|
+
catch (e) {
|
|
83
|
+
console.warn('Failed to parse sort string:', e);
|
|
84
|
+
return [];
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
sortObject = sort;
|
|
89
|
+
}
|
|
90
|
+
// Convert each sort field to Drizzle orderBy
|
|
91
|
+
return Object.entries(sortObject).map(([field, direction]) => {
|
|
92
|
+
// Handle special _distance sorting
|
|
93
|
+
if (field === '_distance' && typeof direction === 'object') {
|
|
94
|
+
const distanceConfig = direction;
|
|
95
|
+
const { target, column, direction: sortDir } = distanceConfig;
|
|
96
|
+
// Build qualified field name
|
|
97
|
+
let fieldRef;
|
|
98
|
+
if (column.startsWith('"')) {
|
|
99
|
+
fieldRef = column;
|
|
100
|
+
}
|
|
101
|
+
else if (column.includes('.')) {
|
|
102
|
+
const [table, col] = column.split('.');
|
|
103
|
+
fieldRef = `"${table}"."${col}"`;
|
|
104
|
+
}
|
|
105
|
+
else if (ctx.tableName) {
|
|
106
|
+
fieldRef = `"${ctx.tableName}"."${column}"`;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
fieldRef = `"${column}"`;
|
|
110
|
+
}
|
|
111
|
+
return sortByDistance(fieldRef, { type: 'Point', coordinates: target }, sortDir);
|
|
112
|
+
}
|
|
113
|
+
return processSortField(field, direction, ctx);
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Apply full-text search ranking to sort
|
|
118
|
+
* Used for relevance-based sorting when searching
|
|
119
|
+
*
|
|
120
|
+
* @param searchFields - Fields to search in
|
|
121
|
+
* @param searchQuery - Search query string
|
|
122
|
+
* @param ctx - Sort context
|
|
123
|
+
* @returns SQL for ts_rank ordering
|
|
124
|
+
*/
|
|
125
|
+
export function applyFullTextSearchRanking(searchFields, searchQuery, ctx) {
|
|
126
|
+
const tableName = ctx.tableName || 'table';
|
|
127
|
+
// Create concatenated string of all searchable fields using sql template
|
|
128
|
+
const fieldParts = searchFields.map(field => sql `COALESCE(${sql.raw(`"${tableName}"."${field}"`)}::text, '')`);
|
|
129
|
+
const concatFields = sql.join(fieldParts, sql ` || ' ' || `);
|
|
130
|
+
// Prepare the full-text search query (escape single quotes)
|
|
131
|
+
const tsQuery = searchQuery.trim().replace(/\s+/g, ":* & ") + ":*";
|
|
132
|
+
const escapedTsQuery = tsQuery.replace(/'/g, "''");
|
|
133
|
+
// Build ts_rank expression using sql template
|
|
134
|
+
const rankSQL = sql `ts_rank(to_tsvector('english', ${concatFields}), to_tsquery('english', ${escapedTsQuery}))`;
|
|
135
|
+
return desc(rankSQL);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Sort by aggregate function result
|
|
139
|
+
* Example: Sort by count of related records
|
|
140
|
+
*/
|
|
141
|
+
export function sortByAggregate(aggregateExpression, direction = 'DESC') {
|
|
142
|
+
const normalizedDirection = direction.toUpperCase();
|
|
143
|
+
return normalizedDirection === 'ASC' ? asc(aggregateExpression) : desc(aggregateExpression);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Sort by distance (for geo queries)
|
|
147
|
+
*
|
|
148
|
+
* @param fieldName - The geometry/geography field name
|
|
149
|
+
* @param referencePoint - GeoJSON point to measure distance from
|
|
150
|
+
* @param direction - Sort direction (usually ASC for nearest first)
|
|
151
|
+
*/
|
|
152
|
+
export function sortByDistance(fieldName, referencePoint, direction = 'ASC') {
|
|
153
|
+
const geoJSON = JSON.stringify(referencePoint);
|
|
154
|
+
// Use ST_DistanceSpheroid for accurate earth-surface distance calculations in meters
|
|
155
|
+
// This is more reliable than ::geography casting across different PostGIS versions
|
|
156
|
+
const spheroid = `SPHEROID["WGS 84",6378137,298.257223563]`;
|
|
157
|
+
const distanceSQL = sql `ST_DistanceSpheroid(${sql.raw(fieldName)}, ST_SetSRID(ST_GeomFromGeoJSON(${geoJSON}), 4326), ${spheroid})`;
|
|
158
|
+
const normalizedDirection = direction.toUpperCase();
|
|
159
|
+
return normalizedDirection === 'ASC' ? asc(distanceSQL) : desc(distanceSQL);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Sort by CASE expression (conditional sorting)
|
|
163
|
+
* Useful for custom sort orders
|
|
164
|
+
*
|
|
165
|
+
* @example
|
|
166
|
+
* ```typescript
|
|
167
|
+
* // Sort by status: active first, then pending, then inactive
|
|
168
|
+
* const sortExpr = sortByCase({
|
|
169
|
+
* field: 'status',
|
|
170
|
+
* cases: [
|
|
171
|
+
* { when: 'active', then: 1 },
|
|
172
|
+
* { when: 'pending', then: 2 },
|
|
173
|
+
* { when: 'inactive', then: 3 }
|
|
174
|
+
* ],
|
|
175
|
+
* direction: 'ASC'
|
|
176
|
+
* });
|
|
177
|
+
* ```
|
|
178
|
+
*/
|
|
179
|
+
export function sortByCase(options) {
|
|
180
|
+
const { field, cases, direction = 'ASC', defaultValue = 999 } = options;
|
|
181
|
+
// Build CASE expression using sql template with parameterized values
|
|
182
|
+
const caseParts = cases.map(c => sql `WHEN ${sql.raw(`"${field}"`)} = ${c.when} THEN ${c.then}`);
|
|
183
|
+
const caseSQL = sql `CASE ${sql.join(caseParts, sql ` `)} ELSE ${defaultValue} END`;
|
|
184
|
+
const normalizedDirection = direction.toUpperCase();
|
|
185
|
+
return normalizedDirection === 'ASC' ? asc(caseSQL) : desc(caseSQL);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Sort nulls first or last
|
|
189
|
+
* PostgreSQL default: ASC puts nulls last, DESC puts nulls first
|
|
190
|
+
* This function allows explicit control
|
|
191
|
+
*/
|
|
192
|
+
export function sortWithNulls(column, direction = 'ASC', nullsFirst = false) {
|
|
193
|
+
const normalizedDirection = direction.toUpperCase();
|
|
194
|
+
const baseSort = normalizedDirection === 'ASC' ? asc(column) : desc(column);
|
|
195
|
+
// Use sql literals instead of sql.raw for keywords
|
|
196
|
+
if (nullsFirst) {
|
|
197
|
+
return sql `${baseSort} NULLS FIRST`;
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
return sql `${baseSort} NULLS LAST`;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Parse sort string formats
|
|
205
|
+
* Supports various input formats:
|
|
206
|
+
* - "name" -> { name: 'ASC' }
|
|
207
|
+
* - "-name" -> { name: 'DESC' }
|
|
208
|
+
* - "name,createdAt" -> { name: 'ASC', createdAt: 'ASC' }
|
|
209
|
+
* - "-name,createdAt" -> { name: 'DESC', createdAt: 'ASC' }
|
|
210
|
+
*/
|
|
211
|
+
export function parseSortString(sortStr) {
|
|
212
|
+
if (!sortStr || sortStr.trim() === '')
|
|
213
|
+
return {};
|
|
214
|
+
const result = {};
|
|
215
|
+
const fields = sortStr.split(',').map(f => f.trim());
|
|
216
|
+
for (const field of fields) {
|
|
217
|
+
if (field.startsWith('-')) {
|
|
218
|
+
// Descending
|
|
219
|
+
result[field.substring(1)] = 'DESC';
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
// Ascending
|
|
223
|
+
result[field] = 'ASC';
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return result;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Combine multiple sort criteria
|
|
230
|
+
* Earlier criteria take precedence
|
|
231
|
+
*/
|
|
232
|
+
export function combineSorts(...sorts) {
|
|
233
|
+
const result = {};
|
|
234
|
+
// Process in reverse order so earlier sorts override later ones
|
|
235
|
+
for (let i = sorts.length - 1; i >= 0; i--) {
|
|
236
|
+
const sort = sorts[i];
|
|
237
|
+
if (sort) {
|
|
238
|
+
Object.assign(result, sort);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
return result;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Default sort (by ID descending for most recent first)
|
|
245
|
+
*/
|
|
246
|
+
export function defaultSort(ctx) {
|
|
247
|
+
return drizzleOrder({ id: 'DESC' }, ctx);
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=orderUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orderUtils.js","sourceRoot":"","sources":["../../baasix/utils/orderUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query Builder Module for Drizzle ORM
|
|
3
|
+
*
|
|
4
|
+
* This module provides query building utilities that convert Sequelize-style
|
|
5
|
+
* filter/where objects into Drizzle ORM where conditions.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Convert filter objects to Drizzle where conditions
|
|
9
|
+
* - Support AND/OR logical operators
|
|
10
|
+
* - Handle nested conditions and relations
|
|
11
|
+
* - Column qualification for joins
|
|
12
|
+
* - Type casting support
|
|
13
|
+
* - Pagination helpers
|
|
14
|
+
*
|
|
15
|
+
* RELATION PATH FILTERING:
|
|
16
|
+
* - Relation path filters (e.g., "userRoles.role.name") ARE NOW SUPPORTED
|
|
17
|
+
* 1. Parses relation paths into segments
|
|
18
|
+
* 2. Recursively resolves each segment by looking up relation metadata
|
|
19
|
+
* 3. Builds LEFT JOIN clauses dynamically
|
|
20
|
+
* 4. Returns the final column reference for the WHERE clause
|
|
21
|
+
*
|
|
22
|
+
* Example usage:
|
|
23
|
+
* conditions: {
|
|
24
|
+
* "userRoles.role.name": { in: ["admin", "user"] },
|
|
25
|
+
* "author.company.name": { eq: "ACME" }
|
|
26
|
+
* }
|
|
27
|
+
*
|
|
28
|
+
* The query builder will automatically generate the necessary JOINs:
|
|
29
|
+
* LEFT JOIN userRoles_... ON ...
|
|
30
|
+
* LEFT JOIN roles_... ON ...
|
|
31
|
+
* LEFT JOIN companies_... ON ...
|
|
32
|
+
*
|
|
33
|
+
* Joins are accumulated in ctx.joins array and must be applied by the caller.
|
|
34
|
+
*
|
|
35
|
+
* NOTES:
|
|
36
|
+
* - Currently supports BelongsTo, HasMany, and HasOne relations
|
|
37
|
+
* - BelongsToMany (many-to-many) uses simplified join (needs junction table support)
|
|
38
|
+
* - Coordination with the two-query approach for HasMany sorting is handled by the caller
|
|
39
|
+
*/
|
|
40
|
+
import { SQL } from 'drizzle-orm';
|
|
41
|
+
import { JoinDefinition as RelationJoinDefinition } from './relationPathResolver.js';
|
|
42
|
+
import type { FilterObject, QueryContext, PaginationOptions, PaginationMetadata } from '../types/index.js';
|
|
43
|
+
export type { FilterObject, QueryContext, PaginationOptions, PaginationMetadata };
|
|
44
|
+
export type { RelationJoinDefinition as JoinDefinition };
|
|
45
|
+
/**
|
|
46
|
+
* Main function: Convert Sequelize-style filter to Drizzle where condition
|
|
47
|
+
*
|
|
48
|
+
* @param filter - Filter object (Sequelize-style)
|
|
49
|
+
* @param ctx - Query context with table schema information
|
|
50
|
+
* @returns Drizzle SQL where condition
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* const filter = {
|
|
55
|
+
* age: { gt: 18 },
|
|
56
|
+
* status: { in: ['active', 'pending'] }
|
|
57
|
+
* };
|
|
58
|
+
*
|
|
59
|
+
* const where = drizzleWhere(filter, {
|
|
60
|
+
* table: usersTable,
|
|
61
|
+
* tableName: 'users',
|
|
62
|
+
* schema: usersTable
|
|
63
|
+
* });
|
|
64
|
+
*
|
|
65
|
+
* // Use in query:
|
|
66
|
+
* const results = await db.select().from(usersTable).where(where);
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export declare function drizzleWhere(filter: FilterObject | null | undefined, ctx: QueryContext): SQL | undefined;
|
|
70
|
+
/**
|
|
71
|
+
* Extract field paths from relational conditions
|
|
72
|
+
* Used to determine which relations need to be included/joined
|
|
73
|
+
*/
|
|
74
|
+
export declare function extractFieldPathsFromRelConditions(relConditions: any): string[];
|
|
75
|
+
/**
|
|
76
|
+
* Combine multiple filters with AND logic
|
|
77
|
+
* Returns empty object instead of undefined for better type safety
|
|
78
|
+
*/
|
|
79
|
+
export declare function combineFilters(...filters: (FilterObject | null | undefined)[]): FilterObject;
|
|
80
|
+
/**
|
|
81
|
+
* Apply pagination to query
|
|
82
|
+
* Supports both limit/offset and page/pageSize styles
|
|
83
|
+
* When page is provided with limit, uses limit as pageSize and calculates offset
|
|
84
|
+
*/
|
|
85
|
+
export declare function applyPagination(options: PaginationOptions): {
|
|
86
|
+
limit?: number;
|
|
87
|
+
offset?: number;
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Calculate pagination metadata
|
|
91
|
+
*/
|
|
92
|
+
export declare function calculatePaginationMetadata(total: number, options: PaginationOptions): PaginationMetadata;
|
|
93
|
+
/**
|
|
94
|
+
* Helper to build WHERE clause from multiple filter sources
|
|
95
|
+
* Useful for combining base filters, user filters, tenant filters, etc.
|
|
96
|
+
*/
|
|
97
|
+
export declare function buildWhereClause(ctx: QueryContext, ...filters: (FilterObject | null | undefined)[]): SQL | undefined;
|
|
98
|
+
/**
|
|
99
|
+
* Extract all field names from a filter object
|
|
100
|
+
* Useful for permission validation
|
|
101
|
+
*/
|
|
102
|
+
export declare function extractFieldNamesFromFilter(filter: FilterObject): string[];
|
|
103
|
+
/**
|
|
104
|
+
* Apply PostgreSQL full-text search to a query
|
|
105
|
+
* Matches Sequelize implementation for compatibility
|
|
106
|
+
*
|
|
107
|
+
* @param tableName - Name of the table being searched
|
|
108
|
+
* @param tableColumns - Column definitions from the table schema
|
|
109
|
+
* @param searchQuery - The search string
|
|
110
|
+
* @param searchFields - Fields to search in (optional, defaults to string fields)
|
|
111
|
+
* @param sortByRelevance - Whether to sort by relevance score
|
|
112
|
+
* @returns SQL condition for full-text search and optional order clause
|
|
113
|
+
*/
|
|
114
|
+
export declare function applyFullTextSearch(tableName: string, tableColumns: Record<string, any>, searchQuery: string, searchFields?: string[], sortByRelevance?: boolean): {
|
|
115
|
+
searchCondition: SQL;
|
|
116
|
+
orderClause?: SQL;
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=queryBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryBuilder.d.ts","sourceRoot":"","sources":["../../baasix/utils/queryBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAE,GAAG,EAAgB,MAAM,aAAa,CAAC;AAQhD,OAAO,EAGL,cAAc,IAAI,sBAAsB,EACzC,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG3G,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,CAAC;AAElF,YAAY,EAAE,sBAAsB,IAAI,cAAc,EAAE,CAAC;AA+QzD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,EAAE,GAAG,EAAE,YAAY,GAAG,GAAG,GAAG,SAAS,CAOxG;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,CAAC,aAAa,EAAE,GAAG,GAAG,MAAM,EAAE,CAoD/E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,OAAO,EAAE,CAAC,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,GAAG,YAAY,CAS5F;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAsB/F;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,iBAAiB,GACzB,kBAAkB,CAapB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,YAAY,EACjB,GAAG,OAAO,EAAE,CAAC,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,GAC9C,GAAG,GAAG,SAAS,CAGjB;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,CAsB1E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,EAAE,EACvB,eAAe,GAAE,OAAe,GAC/B;IAAE,eAAe,EAAE,GAAG,CAAC;IAAC,WAAW,CAAC,EAAE,GAAG,CAAA;CAAE,CAoD7C"}
|