@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,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Error class for standardized error handling
|
|
3
|
+
*/
|
|
4
|
+
export class APIError extends Error {
|
|
5
|
+
statusCode;
|
|
6
|
+
isOperational;
|
|
7
|
+
details;
|
|
8
|
+
constructor(message, statusCode = 500, details = null) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.name = 'APIError';
|
|
11
|
+
this.statusCode = statusCode;
|
|
12
|
+
this.details = details;
|
|
13
|
+
this.isOperational = true;
|
|
14
|
+
// Capture stack trace
|
|
15
|
+
Error.captureStackTrace(this, this.constructor);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Error handler middleware
|
|
20
|
+
*/
|
|
21
|
+
export function errorHandler(error, req, res, next) {
|
|
22
|
+
// Check for APIError by instanceof OR by properties (handles npm link scenarios)
|
|
23
|
+
const isAPIError = error instanceof APIError ||
|
|
24
|
+
error.name === 'APIError' ||
|
|
25
|
+
(typeof error.statusCode === 'number' && error.isOperational);
|
|
26
|
+
if (isAPIError) {
|
|
27
|
+
const apiError = error;
|
|
28
|
+
res.status(apiError.statusCode).json({
|
|
29
|
+
error: {
|
|
30
|
+
message: apiError.message,
|
|
31
|
+
details: apiError.details,
|
|
32
|
+
statusCode: apiError.statusCode
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
// Handle PostgreSQL/database errors
|
|
38
|
+
const pgError = error;
|
|
39
|
+
// Unique constraint violation (PostgreSQL error code 23505)
|
|
40
|
+
if (pgError.code === '23505' || pgError.message?.includes('unique constraint') || pgError.message?.includes('duplicate key')) {
|
|
41
|
+
return res.status(409).json({
|
|
42
|
+
error: {
|
|
43
|
+
message: 'Unique constraint violation',
|
|
44
|
+
details: pgError.detail || pgError.message || 'A record with this value already exists',
|
|
45
|
+
statusCode: 409
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
// Foreign key constraint violation (PostgreSQL error code 23503)
|
|
50
|
+
if (pgError.code === '23503' || pgError.message?.includes('foreign key constraint')) {
|
|
51
|
+
return res.status(409).json({
|
|
52
|
+
error: {
|
|
53
|
+
message: 'Foreign key constraint violation',
|
|
54
|
+
details: pgError.detail || pgError.message || 'Referenced record does not exist',
|
|
55
|
+
statusCode: 409
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
// Not null constraint violation (PostgreSQL error code 23502)
|
|
60
|
+
if (pgError.code === '23502' || pgError.message?.includes('not null constraint')) {
|
|
61
|
+
return res.status(400).json({
|
|
62
|
+
error: {
|
|
63
|
+
message: 'Required field missing',
|
|
64
|
+
details: pgError.column || pgError.message || 'A required field was not provided',
|
|
65
|
+
statusCode: 400
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
console.error('Unexpected error:', error);
|
|
70
|
+
res.status(500).json({
|
|
71
|
+
error: {
|
|
72
|
+
message: 'Internal server error',
|
|
73
|
+
details: pgError.message || error.message || 'An unexpected error occurred',
|
|
74
|
+
statusCode: 500
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=errorHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorHandler.js","sourceRoot":"","sources":["../../baasix/utils/errorHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Field Expansion Utility
|
|
3
|
+
*
|
|
4
|
+
* Matches Sequelize implementation 1:1
|
|
5
|
+
*/
|
|
6
|
+
export declare class FieldExpansionUtil {
|
|
7
|
+
/**
|
|
8
|
+
* Get column names for a collection
|
|
9
|
+
* Uses schemaDefinitions to get field names since $inferSelect doesn't work for dynamic schemas
|
|
10
|
+
*/
|
|
11
|
+
private static getColumnNames;
|
|
12
|
+
/**
|
|
13
|
+
* Expand field selectors like ["*", "author.*", "-password"]
|
|
14
|
+
*/
|
|
15
|
+
static expandFields(fields: string[], collectionName: string): string[];
|
|
16
|
+
/**
|
|
17
|
+
* Expand wildcard field patterns
|
|
18
|
+
*/
|
|
19
|
+
private static expandWildcardField;
|
|
20
|
+
/**
|
|
21
|
+
* Remove redundant fields (e.g., if we have "author" and "author.name", keep only "author")
|
|
22
|
+
*/
|
|
23
|
+
private static removeRedundantFields;
|
|
24
|
+
/**
|
|
25
|
+
* Check if a field should be included based on selectors
|
|
26
|
+
*/
|
|
27
|
+
static shouldIncludeField(field: string, selectors: string[]): boolean;
|
|
28
|
+
}
|
|
29
|
+
export default FieldExpansionUtil;
|
|
30
|
+
//# sourceMappingURL=fieldExpansion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fieldExpansion.d.ts","sourceRoot":"","sources":["../../baasix/utils/fieldExpansion.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AAEH,qBAAa,kBAAkB;IAC7B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAmB7B;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE;IA8BvE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IA2ElC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAOpC;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO;CAWvE;AAED,eAAe,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { schemaManager } from './schemaManager.js';
|
|
2
|
+
import { relationBuilder } from './relationUtils.js';
|
|
3
|
+
/**
|
|
4
|
+
* Field Expansion Utility
|
|
5
|
+
*
|
|
6
|
+
* Matches Sequelize implementation 1:1
|
|
7
|
+
*/
|
|
8
|
+
export class FieldExpansionUtil {
|
|
9
|
+
/**
|
|
10
|
+
* Get column names for a collection
|
|
11
|
+
* Uses schemaDefinitions to get field names since $inferSelect doesn't work for dynamic schemas
|
|
12
|
+
*/
|
|
13
|
+
static getColumnNames(collectionName) {
|
|
14
|
+
// First try to get from schema definition (JSON schema)
|
|
15
|
+
const schemaDef = schemaManager.schemaDefinitions?.get(collectionName);
|
|
16
|
+
if (schemaDef && schemaDef.schema && schemaDef.schema.fields) {
|
|
17
|
+
// Filter out pure relation fields (those with relType but no type)
|
|
18
|
+
return Object.entries(schemaDef.schema.fields)
|
|
19
|
+
.filter(([_, fieldSchema]) => !fieldSchema.relType || fieldSchema.type)
|
|
20
|
+
.map(([fieldName]) => fieldName);
|
|
21
|
+
}
|
|
22
|
+
// Fallback to $inferSelect (works for pre-defined schemas)
|
|
23
|
+
const table = schemaManager.getTable(collectionName);
|
|
24
|
+
if (table.$inferSelect) {
|
|
25
|
+
return Object.keys(table.$inferSelect);
|
|
26
|
+
}
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Expand field selectors like ["*", "author.*", "-password"]
|
|
31
|
+
*/
|
|
32
|
+
static expandFields(fields, collectionName) {
|
|
33
|
+
let expandedFields = [];
|
|
34
|
+
try {
|
|
35
|
+
const tableColumns = this.getColumnNames(collectionName);
|
|
36
|
+
for (const field of fields) {
|
|
37
|
+
if (field === '*') {
|
|
38
|
+
// Wildcard - add all direct fields
|
|
39
|
+
expandedFields.push(...tableColumns);
|
|
40
|
+
}
|
|
41
|
+
else if (field.includes('*')) {
|
|
42
|
+
// Wildcard field like "author.*"
|
|
43
|
+
this.expandWildcardField(field, collectionName, expandedFields);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
// Direct field
|
|
47
|
+
expandedFields.push(field);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// Remove duplicates
|
|
51
|
+
expandedFields = [...new Set(expandedFields)];
|
|
52
|
+
// Remove redundant fields
|
|
53
|
+
return this.removeRedundantFields(expandedFields);
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
console.error(`Error expanding fields for ${collectionName}:`, error);
|
|
57
|
+
return fields;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Expand wildcard field patterns
|
|
62
|
+
*/
|
|
63
|
+
static expandWildcardField(field, collectionName, expandedFields, prefix = '') {
|
|
64
|
+
const parts = field.split('.');
|
|
65
|
+
try {
|
|
66
|
+
let currentCollection = collectionName;
|
|
67
|
+
let currentPrefix = prefix;
|
|
68
|
+
for (let i = 0; i < parts.length; i++) {
|
|
69
|
+
const part = parts[i];
|
|
70
|
+
if (part === '*') {
|
|
71
|
+
// Get all fields at this level using our helper
|
|
72
|
+
const tableColumns = this.getColumnNames(currentCollection);
|
|
73
|
+
if (i === parts.length - 1) {
|
|
74
|
+
// Last part is wildcard - expand all fields at this level
|
|
75
|
+
expandedFields.push(...tableColumns.map((attr) => `${currentPrefix}${attr}`));
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
// Intermediate wildcard - expand fields and recurse for associations
|
|
79
|
+
expandedFields.push(...tableColumns.map((attr) => `${currentPrefix}${attr}`));
|
|
80
|
+
// Expand associations
|
|
81
|
+
const associations = relationBuilder.getAssociations(currentCollection);
|
|
82
|
+
if (associations) {
|
|
83
|
+
for (const [associationName, association] of Object.entries(associations)) {
|
|
84
|
+
this.expandWildcardField(parts.slice(i + 1).join('.'), association.model, expandedFields, `${currentPrefix}${associationName}.`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
// Check if it's a field or association
|
|
92
|
+
const tableColumns = this.getColumnNames(currentCollection);
|
|
93
|
+
if (tableColumns.includes(part)) {
|
|
94
|
+
// It's a field
|
|
95
|
+
expandedFields.push(currentPrefix + part);
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
// Check if it's an association
|
|
100
|
+
const associations = relationBuilder.getAssociations(currentCollection);
|
|
101
|
+
const association = associations?.[part];
|
|
102
|
+
if (association) {
|
|
103
|
+
currentPrefix += part + '.';
|
|
104
|
+
currentCollection = association.model;
|
|
105
|
+
if (i === parts.length - 1) {
|
|
106
|
+
// Last part is an association - include all its fields
|
|
107
|
+
const assocColumns = this.getColumnNames(currentCollection);
|
|
108
|
+
expandedFields.push(...assocColumns.map((attr) => `${currentPrefix}${attr}`));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
// Not a field or association - add as-is (might be computed field)
|
|
113
|
+
expandedFields.push(currentPrefix + part);
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
console.error(`Error expanding wildcard field ${field}:`, error);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Remove redundant fields (e.g., if we have "author" and "author.name", keep only "author")
|
|
126
|
+
*/
|
|
127
|
+
static removeRedundantFields(fields) {
|
|
128
|
+
return fields.filter((field, index, self) => index === self.findIndex((t) => t === field || t.startsWith(`${field}.`)));
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Check if a field should be included based on selectors
|
|
132
|
+
*/
|
|
133
|
+
static shouldIncludeField(field, selectors) {
|
|
134
|
+
// If wildcard is present, include all fields unless explicitly excluded
|
|
135
|
+
if (selectors.includes('*')) {
|
|
136
|
+
// Check for exclusions (fields starting with -)
|
|
137
|
+
const exclusions = selectors.filter((s) => s.startsWith('-')).map((s) => s.substring(1));
|
|
138
|
+
return !exclusions.includes(field);
|
|
139
|
+
}
|
|
140
|
+
// Check if field is in selectors
|
|
141
|
+
return selectors.includes(field);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
export default FieldExpansionUtil;
|
|
145
|
+
//# sourceMappingURL=fieldExpansion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fieldExpansion.js","sourceRoot":"","sources":["../../baasix/utils/fieldExpansion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Field Utilities
|
|
3
|
+
*
|
|
4
|
+
* Consolidated utilities for field validation, processing, and manipulation.
|
|
5
|
+
* Brings together scattered field-related functions into a single module.
|
|
6
|
+
*/
|
|
7
|
+
import type { FieldInfo, FlattenedField } from '../types/index.js';
|
|
8
|
+
export type { FieldInfo, FlattenedField };
|
|
9
|
+
/**
|
|
10
|
+
* Field utilities object
|
|
11
|
+
*/
|
|
12
|
+
declare const fieldUtils: {
|
|
13
|
+
/**
|
|
14
|
+
* Get flattened list of all fields in a collection, including nested relations
|
|
15
|
+
* @param collectionName - Name of the collection
|
|
16
|
+
* @param prefix - Prefix for nested fields (used in recursion)
|
|
17
|
+
* @param visited - Set of visited collections to prevent circular references
|
|
18
|
+
* @returns Array of flattened field objects
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const fields = fieldUtils.getFlattenedFields('users');
|
|
23
|
+
* // Returns: [
|
|
24
|
+
* // { name: 'id', fullPath: 'id', type: 'integer', isRelation: false },
|
|
25
|
+
* // { name: 'email', fullPath: 'email', type: 'string', isRelation: false },
|
|
26
|
+
* // { name: 'posts', fullPath: 'posts', type: 'o2m', isRelation: true, relationCollection: 'posts' },
|
|
27
|
+
* // { name: 'title', fullPath: 'posts.title', type: 'string', isRelation: false }
|
|
28
|
+
* // ]
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
getFlattenedFields(collectionName: string, prefix?: string, visited?: Set<string>): FlattenedField[];
|
|
32
|
+
/**
|
|
33
|
+
* Validate if a field exists in a collection
|
|
34
|
+
* @param collectionName - Name of the collection
|
|
35
|
+
* @param fieldPath - Field path (can include dots for nested fields)
|
|
36
|
+
* @returns True if field exists
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* fieldUtils.fieldExists('users', 'email'); // true
|
|
41
|
+
* fieldUtils.fieldExists('users', 'posts.title'); // true (if relation exists)
|
|
42
|
+
* fieldUtils.fieldExists('users', 'nonexistent'); // false
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
fieldExists(collectionName: string, fieldPath: string): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Get field type
|
|
48
|
+
* @param collectionName - Name of the collection
|
|
49
|
+
* @param fieldPath - Field path
|
|
50
|
+
* @returns Field type or null if not found
|
|
51
|
+
*/
|
|
52
|
+
getFieldType(collectionName: string, fieldPath: string): string | null;
|
|
53
|
+
/**
|
|
54
|
+
* Validate field permissions for a user
|
|
55
|
+
* @param collectionName - Name of the collection
|
|
56
|
+
* @param fieldNames - Array of field names to check
|
|
57
|
+
* @param userPermissions - User's permissions object
|
|
58
|
+
* @returns Object with allowed and denied fields
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* const result = fieldUtils.validateFieldPermissions('users', ['email', 'password'], userPerms);
|
|
63
|
+
* // { allowed: ['email'], denied: ['password'] }
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
validateFieldPermissions(collectionName: string, fieldNames: string[], userPermissions: Record<string, any>): {
|
|
67
|
+
allowed: string[];
|
|
68
|
+
denied: string[];
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Get required fields for a collection
|
|
72
|
+
* @param collectionName - Name of the collection
|
|
73
|
+
* @returns Array of required field names
|
|
74
|
+
*/
|
|
75
|
+
getRequiredFields(collectionName: string): string[];
|
|
76
|
+
/**
|
|
77
|
+
* Get unique fields for a collection
|
|
78
|
+
* @param collectionName - Name of the collection
|
|
79
|
+
* @returns Array of unique field names
|
|
80
|
+
*/
|
|
81
|
+
getUniqueFields(collectionName: string): string[];
|
|
82
|
+
/**
|
|
83
|
+
* Filter object to only include specified fields
|
|
84
|
+
* @param data - Data object
|
|
85
|
+
* @param allowedFields - Array of allowed field names
|
|
86
|
+
* @returns Filtered object
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* const data = { id: 1, email: 'test@test.com', password: 'secret' };
|
|
91
|
+
* const safe = fieldUtils.filterFields(data, ['id', 'email']);
|
|
92
|
+
* // { id: 1, email: 'test@test.com' }
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
filterFields<T extends Record<string, any>>(data: T, allowedFields: string[]): Partial<T>;
|
|
96
|
+
/**
|
|
97
|
+
* Remove specified fields from object
|
|
98
|
+
* @param data - Data object
|
|
99
|
+
* @param excludeFields - Array of field names to exclude
|
|
100
|
+
* @returns Object without excluded fields
|
|
101
|
+
*/
|
|
102
|
+
excludeFields<T extends Record<string, any>>(data: T, excludeFields: string[]): Partial<T>;
|
|
103
|
+
/**
|
|
104
|
+
* Validate required fields are present in data
|
|
105
|
+
* @param collectionName - Name of the collection
|
|
106
|
+
* @param data - Data object to validate
|
|
107
|
+
* @returns Object with isValid flag and missing fields
|
|
108
|
+
*/
|
|
109
|
+
validateRequiredFields(collectionName: string, data: Record<string, any>): {
|
|
110
|
+
isValid: boolean;
|
|
111
|
+
missing: string[];
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Get default values for fields that have them
|
|
115
|
+
* @param collectionName - Name of the collection
|
|
116
|
+
* @returns Object with field names and default values
|
|
117
|
+
*/
|
|
118
|
+
getDefaultValues(collectionName: string): Record<string, any>;
|
|
119
|
+
/**
|
|
120
|
+
* Apply default values to data object
|
|
121
|
+
* @param collectionName - Name of the collection
|
|
122
|
+
* @param data - Data object
|
|
123
|
+
* @returns Data object with defaults applied
|
|
124
|
+
*/
|
|
125
|
+
applyDefaults(collectionName: string, data: Record<string, any>): Record<string, any>;
|
|
126
|
+
/**
|
|
127
|
+
* Get system fields (created_at, updated_at, deleted_at, etc.)
|
|
128
|
+
* @param collectionName - Name of the collection
|
|
129
|
+
* @returns Array of system field names
|
|
130
|
+
*/
|
|
131
|
+
getSystemFields(collectionName: string): string[];
|
|
132
|
+
/**
|
|
133
|
+
* Get user-defined fields (excludes system fields)
|
|
134
|
+
* @param collectionName - Name of the collection
|
|
135
|
+
* @returns Array of user-defined field names
|
|
136
|
+
*/
|
|
137
|
+
getUserFields(collectionName: string): string[];
|
|
138
|
+
/**
|
|
139
|
+
* Sanitize field name for safe use in queries
|
|
140
|
+
* @param fieldName - Field name to sanitize
|
|
141
|
+
* @returns Sanitized field name
|
|
142
|
+
*/
|
|
143
|
+
sanitizeFieldName(fieldName: string): string;
|
|
144
|
+
/**
|
|
145
|
+
* Parse field path into parts
|
|
146
|
+
* @param fieldPath - Field path (e.g., "user.posts.title")
|
|
147
|
+
* @returns Array of path parts
|
|
148
|
+
*/
|
|
149
|
+
parseFieldPath(fieldPath: string): string[];
|
|
150
|
+
/**
|
|
151
|
+
* Build field path from parts
|
|
152
|
+
* @param parts - Array of path parts
|
|
153
|
+
* @returns Field path string
|
|
154
|
+
*/
|
|
155
|
+
buildFieldPath(parts: string[]): string;
|
|
156
|
+
/**
|
|
157
|
+
* Get list of hidden fields in a collection
|
|
158
|
+
* Hidden fields should never be returned in API responses
|
|
159
|
+
* @param collectionName - Name of the collection
|
|
160
|
+
* @returns Array of hidden field names
|
|
161
|
+
*/
|
|
162
|
+
getHiddenFields(collectionName: string): string[];
|
|
163
|
+
/**
|
|
164
|
+
* Strip hidden fields from a record
|
|
165
|
+
* @param collectionName - Name of the collection
|
|
166
|
+
* @param record - Record to strip hidden fields from
|
|
167
|
+
* @returns Record without hidden fields
|
|
168
|
+
*/
|
|
169
|
+
stripHiddenFields<T extends Record<string, any>>(collectionName: string, record: T): T;
|
|
170
|
+
/**
|
|
171
|
+
* Strip hidden fields from an array of records
|
|
172
|
+
* @param collectionName - Name of the collection
|
|
173
|
+
* @param records - Array of records to strip hidden fields from
|
|
174
|
+
* @returns Array of records without hidden fields
|
|
175
|
+
*/
|
|
176
|
+
stripHiddenFieldsFromRecords<T extends Record<string, any>>(collectionName: string, records: T[]): T[];
|
|
177
|
+
};
|
|
178
|
+
export default fieldUtils;
|
|
179
|
+
//# sourceMappingURL=fieldUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fieldUtils.d.ts","sourceRoot":"","sources":["../../baasix/utils/fieldUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;AAE1C;;GAEG;AACH,QAAA,MAAM,UAAU;IACd;;;;;;;;;;;;;;;;;OAiBG;uCAEe,MAAM,WACd,MAAM,YACL,GAAG,CAAC,MAAM,CAAC,GACnB,cAAc,EAAE;IAgEnB;;;;;;;;;;;;OAYG;gCACyB,MAAM,aAAa,MAAM,GAAG,OAAO;IAyB/D;;;;;OAKG;iCAC0B,MAAM,aAAa,MAAM,GAAG,MAAM,GAAG,IAAI;IAqCtE;;;;;;;;;;;;OAYG;6CAEe,MAAM,cACV,MAAM,EAAE,mBACH,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACnC;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IA8B1C;;;;OAIG;sCAC+B,MAAM,GAAG,MAAM,EAAE;IAiBnD;;;;OAIG;oCAC6B,MAAM,GAAG,MAAM,EAAE;IAiBjD;;;;;;;;;;;;OAYG;iBACU,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAClC,CAAC,iBACQ,MAAM,EAAE,GACtB,OAAO,CAAC,CAAC,CAAC;IAYb;;;;;OAKG;kBACW,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QACnC,CAAC,iBACQ,MAAM,EAAE,GACtB,OAAO,CAAC,CAAC,CAAC;IAUb;;;;;OAKG;2CAEe,MAAM,QAChB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE;IAgB1C;;;;OAIG;qCAC8B,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAiB7D;;;;;OAKG;kCAC2B,MAAM,QAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAarF;;;;OAIG;oCAC6B,MAAM,GAAG,MAAM,EAAE;IAWjD;;;;OAIG;kCAC2B,MAAM,GAAG,MAAM,EAAE;IAU/C;;;;OAIG;iCAC0B,MAAM,GAAG,MAAM;IAK5C;;;;OAIG;8BACuB,MAAM,GAAG,MAAM,EAAE;IAI3C;;;;OAIG;0BACmB,MAAM,EAAE,GAAG,MAAM;IAIvC;;;;;OAKG;oCAC6B,MAAM,GAAG,MAAM,EAAE;IAejD;;;;;OAKG;sBACe,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,kBAC7B,MAAM,UACd,CAAC,GACR,CAAC;IAaJ;;;;;OAKG;iCAC0B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,kBACxC,MAAM,WACb,CAAC,EAAE,GACX,CAAC,EAAE;CAcP,CAAC;AAEF,eAAe,UAAU,CAAC"}
|