@fernir2/saas-kit-cli 0.1.39 → 0.1.41
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/base-repo/app-constants/alias-symbols.js +2 -2
- package/base-repo/app-constants/aliases.js +3 -1
- package/base-repo/app-constants/app-packages-names.js +4 -0
- package/base-repo/app-constants/command-names.js +4 -0
- package/base-repo/app-constants/internal-system-constants.js +9 -0
- package/base-repo/app-constants/project-paths.js +5 -3
- package/base-repo/constants/basic-types.js +4 -0
- package/base-repo/constants/ci-constants.js +7 -0
- package/base-repo/constants/http-constants.js +4 -0
- package/base-repo/constants/http-methods.js +6 -0
- package/base-repo/constants/internal-common-strings.js +4 -0
- package/base-repo/constants/internal-extensions.js +6 -0
- package/base-repo/constants/packages.js +1 -1
- package/base-repo/constants/push-statuses.js +4 -0
- package/base-repo/constants/strings-constants.js +4 -0
- package/base-repo/constants/tools-constants.js +6 -0
- package/base-repo/constants/type-string-values.js +4 -0
- package/base-repo/process.js +4 -0
- package/cli/.env.example +8 -61
- package/cli/.prettierignore +15 -0
- package/cli/.prettierrc.json +8 -0
- package/cli/README.md +3 -3
- package/cli/bin/create.ts +630 -450
- package/cli/configs/drizzle-cli-config.ts +16 -15
- package/cli/configs/next-cli-config.ts +44 -78
- package/cli/configs/playwright-cli-config.ts +45 -35
- package/cli/configs/tsconfig.cli.json +35 -35
- package/cli/configs/tsconfig.server.json +13 -13
- package/cli/drizzle.config.ts +6 -6
- package/cli/next.config.js +5 -3
- package/cli/npm-commands/gen-meta.ts +9 -3
- package/cli/npm-commands/gen-schema.ts +3 -3
- package/cli/npm-commands/migrate-db.ts +17 -15
- package/cli/npm-commands/seed-db.ts +17 -15
- package/cli/package-template.json +54 -60
- package/cli/playwright.config.ts +6 -6
- package/cli/postcss.config.mjs +7 -7
- package/cli/public/handle.svg +23 -0
- package/cli/public/images/login-image-dark.webp +0 -0
- package/cli/public/images/login-image.webp +0 -0
- package/cli/public/images/logo.webp +0 -0
- package/cli/public/images/no-image.webp +0 -0
- package/cli/public/images/profile.webp +0 -0
- package/cli/public/images/search-not-found-result.webp +0 -0
- package/cli/public/logo.svg +1 -0
- package/cli/server.ts +48 -40
- package/cli/src/app/api/v1/(f)/[resourceName]/[id]/route.ts +18 -11
- package/cli/src/app/api/v1/(f)/[resourceName]/route.ts +23 -14
- package/cli/src/app/api/v1/(f)/[resourceName]/upsert/route.ts +6 -3
- package/cli/src/app/api/v1/(f)/blob/route.ts +14 -7
- package/cli/src/app/api/v1/(f)/log/route.ts +14 -7
- package/cli/src/app/api/v1/(f)/markdown/route.ts +6 -0
- package/cli/src/app/api/v1/(f)/other-user/[id]/route.ts +23 -14
- package/cli/src/app/api/v1/(f)/other-user/route.ts +14 -7
- package/cli/src/app/api/v1/(f)/password/forgot-password/route.ts +6 -3
- package/cli/src/app/api/v1/(f)/password/reset-password/route.ts +6 -3
- package/cli/src/app/api/v1/(f)/payment/method/route.ts +9 -4
- package/cli/src/app/api/v1/(f)/payment/route.ts +6 -3
- package/cli/src/app/api/v1/(f)/payment/verify-fail/route.ts +6 -3
- package/cli/src/app/api/v1/(f)/payment/verify-success/route.ts +6 -3
- package/cli/src/app/api/v1/(f)/search-result/route.ts +6 -3
- package/cli/src/app/api/v1/(f)/searchable-resources/route.ts +6 -3
- package/cli/src/app/api/v1/(f)/sign-in/route.ts +6 -3
- package/cli/src/app/api/v1/(f)/sign-out/route.ts +6 -3
- package/cli/src/app/api/v1/(f)/sign-up/route.ts +6 -3
- package/cli/src/app/api/v1/(f)/subscription/cancel/route.ts +6 -3
- package/cli/src/app/api/v1/(f)/subscription/create/route.ts +6 -3
- package/cli/src/app/api/v1/(f)/subscription/update/route.ts +6 -3
- package/cli/src/app/api/v1/(f)/uimeta/route.ts +6 -3
- package/cli/src/app/api/v1/(f)/uimetas/route.ts +6 -3
- package/cli/src/app/api/v1/(f)/user-feature/isenabled/route.ts +6 -3
- package/cli/src/app/api/v1/(f)/user-permission/route.ts +6 -3
- package/cli/src/app/api/v1/(f)/visible-workspace/route.ts +10 -5
- package/cli/src/app/api/v1/(f)/workspace/change/route.ts +10 -5
- package/cli/src/app/f/(not-signed-in)/edit-password/page.tsx +8 -8
- package/cli/src/app/f/(not-signed-in)/forgot-password/page.tsx +13 -13
- package/cli/src/app/f/(not-signed-in)/reset-password/page.tsx +11 -11
- package/cli/src/app/f/(not-signed-in)/sign-in/microsoft/page.tsx +8 -8
- package/cli/src/app/f/(not-signed-in)/sign-in/page.tsx +13 -13
- package/cli/src/app/f/(not-signed-in)/sign-up/page.tsx +13 -13
- package/cli/src/app/f/(signed-in)/dashboard/page.tsx +8 -8
- package/cli/src/app/f/(signed-in)/dynamiclayout/page.tsx +8 -8
- package/cli/src/app/f/(signed-in)/edituser/[id]/page.tsx +8 -8
- package/cli/src/app/f/(signed-in)/edituser/page.tsx +8 -8
- package/cli/src/app/f/(signed-in)/layout.tsx +5 -5
- package/cli/src/app/f/(signed-in)/payment-plans/page.tsx +8 -8
- package/cli/src/app/f/(signed-in)/statusboard/page.tsx +8 -8
- package/cli/src/app/f/(signed-in)/userlist/page.tsx +8 -8
- package/cli/src/app/f/(signed-in)/view/page.tsx +27 -9
- package/cli/src/app/f/api-docs/page.tsx +15 -15
- package/cli/src/app/globals.css +1 -1
- package/cli/src/app/http-wrappers.ts +19 -0
- package/cli/src/app/init-saas-kit.ts +12 -0
- package/cli/src/app/layout.tsx +43 -37
- package/cli/src/app/page.tsx +9 -9
- package/cli/src/app/styles/common.css +75 -71
- package/cli/src/app/styles/rich-text-editor.css +130 -130
- package/cli/templates/.env-template +8 -0
- package/cli/templates/gitignore-template +54 -0
- package/cli/test/custom-test.ts +20 -0
- package/cli/test/global-setup.ts +7 -3
- package/cli/test/global-teardown.ts +7 -0
- package/cli/tsconfig.json +16 -15
- package/cli/tsconfig.lint.json +5 -0
- package/cli/tsconfig.server.json +15 -14
- package/fd-toolbox/api/api-client.js +3 -3
- package/fd-toolbox/api/api-path-names.js +4 -1
- package/fd-toolbox/api/api-paths.js +2 -1
- package/fd-toolbox/api/base-api.js +5 -4
- package/fd-toolbox/auth/{login-states.js → internal-login-states.js} +3 -3
- package/fd-toolbox/auth/session-storage.js +1 -1
- package/fd-toolbox/auth/tokens.js +1 -1
- package/fd-toolbox/constants/common-user-fields.js +7 -0
- package/fd-toolbox/constants/constants.js +2 -2
- package/fd-toolbox/constants/environment-constants.js +4 -1
- package/fd-toolbox/constants/header-names.js +1 -1
- package/fd-toolbox/constants/meta-query-params.js +4 -1
- package/fd-toolbox/constants/odata-query-params.js +7 -0
- package/fd-toolbox/constants/public-files.js +5 -3
- package/fd-toolbox/constants/resource-folders.js +4 -0
- package/fd-toolbox/constants/toolbox-error-messages-constants.js +4 -0
- package/fd-toolbox/enums/enums.js +5 -2
- package/fd-toolbox/errors/error-handler.js +2 -2
- package/fd-toolbox/errors/error-statuses.js +4 -1
- package/fd-toolbox/errors/errors.js +1 -1
- package/fd-toolbox/errors/problem-details.js +4 -2
- package/fd-toolbox/functions/value-checking-functions.js +5 -3
- package/fd-toolbox/http/url/urls.js +4 -3
- package/fd-toolbox/infra/env-config.js +2 -2
- package/fd-toolbox/infra/env-functions.js +6 -4
- package/fd-toolbox/infra/env-schema.js +2 -4
- package/fd-toolbox/infra/toolbox-env-setting-keys.js +1 -1
- package/fd-toolbox/lib/environments.js +4 -3
- package/fd-toolbox/lib/utils.js +5 -2
- package/fd-toolbox/local-storage/local-storage.js +1 -1
- package/fd-toolbox/logging/loggers.js +2 -2
- package/fd-toolbox/notifications.js +2 -2
- package/fd-toolbox/odata/odata-filter-constants.js +4 -0
- package/fd-toolbox/odata/odata-formatting/odata-filters.js +9 -0
- package/fd-toolbox/odata/odata.js +12 -0
- package/fd-toolbox/paths/paths-names.js +1 -1
- package/fd-toolbox/redirect/redirect-functions.js +8 -0
- package/fd-toolbox/resources/resource-names.js +1 -1
- package/fd-toolbox/routing/login-routers.js +2 -1
- package/fd-toolbox/routing/paths.js +1 -1
- package/fd-toolbox/routing/routers.js +9 -0
- package/fd-toolbox/routing/routes.js +3 -2
- package/fd-toolbox/server/collections/single-funcs.js +8 -0
- package/fd-toolbox/server/constants/api-routes-constants.js +4 -0
- package/fd-toolbox/server/errors/error-dtos.js +4 -0
- package/fd-toolbox/server/framework/index.js +8 -0
- package/fd-toolbox/server/logging/latest-logs-store.js +6 -0
- package/fd-toolbox/server/logging/log-dtos.js +6 -0
- package/fd-toolbox/server/logging/logger.js +9 -0
- package/fd-toolbox/server/web/response-messages.js +4 -0
- package/fd-toolbox/strings/strings.js +2 -2
- package/fd-toolbox/types/ensure-type.js +6 -2
- package/fd-toolbox/url/urls.js +4 -0
- package/fd-toolbox-core/constants/meta-constants.js +4 -2
- package/fd-toolbox-core/core/name-of.js +1 -1
- package/fd-toolbox-core/types/resource-with-id.js +3 -1
- package/level2/cli/bin/index.js +2 -1
- package/level2/cli/create/bin/create.js +18 -10
- package/level2/npm-commands/build-npm/cli-contents.js +1 -1
- package/level2/npm-commands/build-npm/paths.js +6 -0
- package/package.json +48 -55
- package/base-repo/app-constants/alias-symbols.cjs.js +0 -6
- package/base-repo/app-constants/aliases.cjs.js +0 -8
- package/base-repo/app-constants/project-paths.cjs.js +0 -17
- package/base-repo/constants/create-app-constants.cjs.js +0 -9
- package/base-repo/constants/packages.cjs.js +0 -6
- package/base-repo/constants/packages.cjs2.js +0 -6
- package/base-repo/constants/packages2.js +0 -4
- package/cli/public/images/00000000-0000-0000-0000-000000000000.webp +0 -0
- package/cli/public/images/login-image-dark.jpg +0 -0
- package/cli/public/images/login-image.jpg +0 -0
- package/cli/public/images/no-image.png +0 -0
- package/cli/public/images/profile.png +0 -0
- package/cli/public/images/search-not-found-result.png +0 -0
- package/cli/public/images/toolbar-logo.png +0 -0
- package/cli/public/images/users/00000000-0000-0000-0000-000000000000.webp +0 -0
- package/cli/src/app/api/v1/(f)/preload/route.ts +0 -3
- package/cli/src/app/f/(signed-in)/lm/page.tsx +0 -8
- package/cli/src/app/f/(signed-in)/preload/page.tsx +0 -8
- package/cli/src/app/f/test/feed/page.tsx +0 -8
- package/cli/src/app/f/test/file-upload/page.tsx +0 -8
- package/cli/src/app/f/test/layout.tsx +0 -5
- package/cli/src/app/f/test/page.tsx +0 -8
- package/fd-toolbox/api/api-client.cjs.js +0 -19
- package/fd-toolbox/api/api-path-names.cjs.js +0 -9
- package/fd-toolbox/api/api-paths.cjs.js +0 -9
- package/fd-toolbox/api/base-api.cjs.js +0 -22
- package/fd-toolbox/auth/login-states.cjs.js +0 -18
- package/fd-toolbox/auth/session-storage.cjs.js +0 -12
- package/fd-toolbox/auth/tokens.cjs.js +0 -11
- package/fd-toolbox/constants/api-constants.cjs.js +0 -26
- package/fd-toolbox/constants/api-constants.js +0 -4
- package/fd-toolbox/constants/constants.cjs.js +0 -13
- package/fd-toolbox/constants/environment-constants.cjs.js +0 -7
- package/fd-toolbox/constants/extensions.cjs.js +0 -6
- package/fd-toolbox/constants/extensions.js +0 -4
- package/fd-toolbox/constants/header-names.cjs.js +0 -7
- package/fd-toolbox/constants/http-status-codes.cjs.js +0 -6
- package/fd-toolbox/constants/meta-query-params.cjs.js +0 -6
- package/fd-toolbox/constants/public-files.cjs.js +0 -14
- package/fd-toolbox/constants/representations.cjs.js +0 -6
- package/fd-toolbox/constants/representations.js +0 -4
- package/fd-toolbox/enums/enums.cjs.js +0 -26
- package/fd-toolbox/errors/error-handler.cjs.js +0 -10
- package/fd-toolbox/errors/error-statuses.cjs.js +0 -6
- package/fd-toolbox/errors/errors.cjs.js +0 -6
- package/fd-toolbox/errors/problem-details.cjs.js +0 -8
- package/fd-toolbox/functions/value-checking-functions.cjs.js +0 -10
- package/fd-toolbox/http/http-constants.cjs.js +0 -7
- package/fd-toolbox/http/http-constants.js +0 -4
- package/fd-toolbox/http/url/urls.cjs.js +0 -9
- package/fd-toolbox/infra/env-config.cjs.js +0 -8
- package/fd-toolbox/infra/env-functions.cjs.js +0 -16
- package/fd-toolbox/infra/env-schema.cjs.js +0 -12
- package/fd-toolbox/infra/env-setting-types.cjs.js +0 -6
- package/fd-toolbox/infra/env-setting-types.js +0 -4
- package/fd-toolbox/infra/env-store.cjs.js +0 -9
- package/fd-toolbox/infra/env-store.js +0 -7
- package/fd-toolbox/infra/toolbox-env-setting-keys.cjs.js +0 -6
- package/fd-toolbox/lib/environments.cjs.js +0 -25
- package/fd-toolbox/lib/utils.cjs.js +0 -29
- package/fd-toolbox/local-storage/local-storage.cjs.js +0 -12
- package/fd-toolbox/logging/loggers.cjs.js +0 -16
- package/fd-toolbox/logging/logging-constants.cjs.js +0 -6
- package/fd-toolbox/logging/logging-constants.js +0 -4
- package/fd-toolbox/notifications.cjs.js +0 -14
- package/fd-toolbox/odata/odata-constants.cjs.js +0 -11
- package/fd-toolbox/odata/odata-constants.js +0 -4
- package/fd-toolbox/odata/odata-enums.cjs.js +0 -8
- package/fd-toolbox/odata/odatas.cjs.js +0 -11
- package/fd-toolbox/odata/odatas.js +0 -9
- package/fd-toolbox/odata/services/odata-filters.cjs.js +0 -11
- package/fd-toolbox/odata/services/odata-filters.js +0 -9
- package/fd-toolbox/paths/paths-names.cjs.js +0 -9
- package/fd-toolbox/resources/resource-names.cjs.js +0 -6
- package/fd-toolbox/routing/login-routers.cjs.js +0 -10
- package/fd-toolbox/routing/paths.cjs.js +0 -6
- package/fd-toolbox/routing/routes.cjs.js +0 -14
- package/fd-toolbox/strings/strings-constants.cjs.js +0 -7
- package/fd-toolbox/strings/strings-constants.js +0 -4
- package/fd-toolbox/strings/strings.cjs.js +0 -10
- package/fd-toolbox/types/ensure-type.cjs.js +0 -22
- package/fd-toolbox-core/constants/meta-constants.cjs.js +0 -7
- package/fd-toolbox-core/constants/promises.cjs.js +0 -6
- package/fd-toolbox-core/core/name-of.cjs.js +0 -8
- package/fd-toolbox-core/enums/log-severities.cjs.js +0 -6
- package/fd-toolbox-core/types/resource-with-id.cjs.js +0 -9
- package/level2/cli/bin/index.cjs.js +0 -8
- package/level2/cli/create/bin/create.cjs.js +0 -42
- package/level2/npm-commands/build-npm/cli-contents.cjs.js +0 -9
- package/level2/npm-commands/build-npm/path.cjs.js +0 -13
- package/level2/npm-commands/build-npm/path.js +0 -6
- /package/cli/public/images/{companies → demo/companies}/00000000-0000-0000-0000-000000000000.webp +0 -0
- /package/cli/public/images/{companies → demo/companies}/004a196f-f9a7-49fc-9e05-606fffd0613c.webp +0 -0
- /package/cli/public/images/{companies → demo/companies}/497b26a6-3e91-4b27-8c24-f3b145fc6c7f.webp +0 -0
- /package/cli/public/images/{companies → demo/companies}/6cead29b-2572-4283-add6-f407b39d7135.webp +0 -0
- /package/cli/public/images/{companies → demo/companies}/71efdb77-4ecb-45e6-bc83-0fdff835c2e7.webp +0 -0
- /package/cli/public/images/{companies → demo/companies}/773602c8-a417-4afc-adb0-bb6856ac2970.webp +0 -0
- /package/cli/public/images/{companies → demo/companies}/9d09881a-cf60-438d-9edf-10f5864d4468.webp +0 -0
- /package/cli/public/images/{companies → demo/companies}/a1b2c3d4-e5f6-7890-1234-56789abcdef0.webp +0 -0
- /package/cli/public/images/{companies → demo/companies}/b04d7c5e-18de-4f44-b923-5bfb28bb33bb.webp +0 -0
- /package/cli/public/images/{companies → demo/companies}/c75c22fc-d295-472e-bdae-dbb8eb09cf18.webp +0 -0
- /package/cli/public/images/{companies → demo/companies}/cdf3efb4-33a2-485e-8d95-e0ab5a4cb6a5.webp +0 -0
- /package/cli/public/images/{companies → demo/companies}/d6fe4c6a-ecdb-40fc-a8e6-2044ef2b82d4.webp +0 -0
- /package/cli/public/images/{contacts → demo/contacts}/159e4c7a-ff5f-4162-8237-acec3ca8a759.webp +0 -0
- /package/cli/public/images/{contacts → demo/contacts}/65e07208-6b1f-4a59-b5e3-2f80f5741b18.webp +0 -0
- /package/cli/public/images/{contacts → demo/contacts}/6d1c5410-ef5b-4d37-8b8d-4ab8cfc87785.webp +0 -0
- /package/cli/public/images/{contacts → demo/contacts}/754c77d8-eefb-4a90-b07b-ed00980c88b4.webp +0 -0
- /package/cli/public/images/{contacts → demo/contacts}/9fd23cd9-9b94-4bb8-bb73-d315b93b8a5c.webp +0 -0
- /package/cli/public/images/{contacts → demo/contacts}/b2f746d1-6b3c-4c47-8e07-f73927c167cb.webp +0 -0
- /package/cli/public/images/{contacts → demo/contacts}/b515cb46-eab4-4862-9e8e-c2f5f217ae79.webp +0 -0
- /package/cli/public/images/{contacts → demo/contacts}/cf2eae72-e5ab-4d95-8f08-b6571b44f8eb.webp +0 -0
- /package/cli/public/images/{contacts → demo/contacts}/ec0e0285-22d9-48d4-b4b3-96388c37c807.webp +0 -0
- /package/cli/public/images/{contacts → demo/contacts}/ecb1a0f4-d244-4136-badf-c2bc72e3b678.webp +0 -0
- /package/cli/public/images/{users → demo/users}/02d1230f-5bfe-46b4-8ce1-d10f4aa918a7.webp +0 -0
- /package/cli/public/images/{users → demo/users}/166c5e4a-696f-4bf5-ab48-dbbb5e90d526.webp +0 -0
- /package/cli/public/images/{users → demo/users}/175a3f0c-692c-4503-87eb-ff95d6535e16.webp +0 -0
- /package/cli/public/images/{users → demo/users}/8398ee85-7546-4710-b628-44c98e4ba03a.webp +0 -0
- /package/cli/public/images/{users → demo/users}/979f8933-71b1-4df8-b691-566a901d3c76.webp +0 -0
- /package/cli/public/images/{users → demo/users}/fbe37132-31bc-4fc9-9bfb-aac7a1b61a7f.webp +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { httpWrapper } from "
|
|
2
|
-
import SignInPage from "@client/pages/sign-in-page/SignInPage";
|
|
3
|
-
|
|
4
|
-
export const dynamic = "force-dynamic";
|
|
5
|
-
|
|
6
|
-
const Page = httpWrapper(
|
|
7
|
-
async () => {
|
|
8
|
-
return <SignInPage />;
|
|
9
|
-
},
|
|
10
|
-
{
|
|
11
|
-
);
|
|
12
|
-
|
|
13
|
-
export default Page;
|
|
1
|
+
import { httpWrapper } from "@/app/http-wrappers";
|
|
2
|
+
import SignInPage from "@client/pages/sign-in-page/SignInPage";
|
|
3
|
+
|
|
4
|
+
export const dynamic = "force-dynamic";
|
|
5
|
+
|
|
6
|
+
const Page = httpWrapper(
|
|
7
|
+
async () => {
|
|
8
|
+
return <SignInPage />;
|
|
9
|
+
},
|
|
10
|
+
{ anonymous: true },
|
|
11
|
+
);
|
|
12
|
+
|
|
13
|
+
export default Page;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { httpWrapper } from "
|
|
2
|
-
import SignUpPage from "@client/pages/sign-up-page/SignUpPage";
|
|
3
|
-
|
|
4
|
-
export const dynamic = "force-dynamic";
|
|
5
|
-
|
|
6
|
-
const Page = httpWrapper(
|
|
7
|
-
async ({ searchParams }) => {
|
|
8
|
-
return <SignUpPage searchParams={searchParams} />;
|
|
9
|
-
},
|
|
10
|
-
{
|
|
11
|
-
);
|
|
12
|
-
|
|
13
|
-
export default Page;
|
|
1
|
+
import { httpWrapper } from "@/app/http-wrappers";
|
|
2
|
+
import SignUpPage from "@client/pages/sign-up-page/SignUpPage";
|
|
3
|
+
|
|
4
|
+
export const dynamic = "force-dynamic";
|
|
5
|
+
|
|
6
|
+
const Page = httpWrapper(
|
|
7
|
+
async ({ searchParams }) => {
|
|
8
|
+
return <SignUpPage searchParams={searchParams} />;
|
|
9
|
+
},
|
|
10
|
+
{ anonymous: true },
|
|
11
|
+
);
|
|
12
|
+
|
|
13
|
+
export default Page;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { httpWrapper } from "
|
|
2
|
-
import DashboardPage from "@client/pages/dashboard-page/DashboardPage";
|
|
3
|
-
|
|
4
|
-
const Page = httpWrapper(async () => {
|
|
5
|
-
return <DashboardPage />;
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
export default Page;
|
|
1
|
+
import { httpWrapper } from "@/app/http-wrappers";
|
|
2
|
+
import DashboardPage from "@client/pages/dashboard-page/DashboardPage";
|
|
3
|
+
|
|
4
|
+
const Page = httpWrapper(async () => {
|
|
5
|
+
return <DashboardPage />;
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
export default Page;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { httpWrapper } from "
|
|
2
|
-
import DynamicLayoutPage from "@client/pages/dynamic-layout-page/DynamicLayoutPage";
|
|
3
|
-
|
|
4
|
-
const Page = httpWrapper(async () => {
|
|
5
|
-
return <DynamicLayoutPage />;
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
export default Page;
|
|
1
|
+
import { httpWrapper } from "@/app/http-wrappers";
|
|
2
|
+
import DynamicLayoutPage from "@client/pages/dynamic-layout-page/DynamicLayoutPage";
|
|
3
|
+
|
|
4
|
+
const Page = httpWrapper(async () => {
|
|
5
|
+
return <DynamicLayoutPage />;
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
export default Page;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { httpWrapper } from "
|
|
2
|
-
import EditUserByIdPage from "@client/pages/edit-user-by-id-page/EditUserByIdPage";
|
|
3
|
-
|
|
4
|
-
const Page = httpWrapper(async ({ params }) => {
|
|
5
|
-
return <EditUserByIdPage params={params} />;
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
export default Page;
|
|
1
|
+
import { httpWrapper } from "@/app/http-wrappers";
|
|
2
|
+
import EditUserByIdPage from "@client/pages/edit-user-by-id-page/EditUserByIdPage";
|
|
3
|
+
|
|
4
|
+
const Page = httpWrapper(async ({ params }) => {
|
|
5
|
+
return <EditUserByIdPage params={params} />;
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
export default Page;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { httpWrapper } from "
|
|
2
|
-
import EditUserPage from "@client/pages/edit-user-page/EditUserPage";
|
|
3
|
-
|
|
4
|
-
const Page = httpWrapper(async () => {
|
|
5
|
-
return <EditUserPage />;
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
export default Page;
|
|
1
|
+
import { httpWrapper } from "@/app/http-wrappers";
|
|
2
|
+
import EditUserPage from "@client/pages/edit-user-page/EditUserPage";
|
|
3
|
+
|
|
4
|
+
const Page = httpWrapper(async () => {
|
|
5
|
+
return <EditUserPage />;
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
export default Page;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { SignedInLayout } from "@fd-app-toolbox/server/layout/signed-in-layout/SignedInLayout";
|
|
2
|
-
|
|
3
|
-
export default async function Layout({ children }: { children: React.ReactNode }) {
|
|
4
|
-
return <SignedInLayout>{children}</SignedInLayout>;
|
|
5
|
-
}
|
|
1
|
+
import { SignedInLayout } from "@fd-app-toolbox/server/layout/signed-in-layout/SignedInLayout";
|
|
2
|
+
|
|
3
|
+
export default async function Layout({ children }: { children: React.ReactNode }) {
|
|
4
|
+
return <SignedInLayout>{children}</SignedInLayout>;
|
|
5
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import PaymentPlanPage from "@client/pages/payment-plan-page/PaymentPlanPage";
|
|
2
|
-
import { httpWrapper } from "
|
|
3
|
-
|
|
4
|
-
const Page = httpWrapper(async () => {
|
|
5
|
-
return <PaymentPlanPage />;
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
export default Page;
|
|
1
|
+
import PaymentPlanPage from "@client/pages/payment-plan-page/PaymentPlanPage";
|
|
2
|
+
import { httpWrapper } from "@/app/http-wrappers";
|
|
3
|
+
|
|
4
|
+
const Page = httpWrapper(async () => {
|
|
5
|
+
return <PaymentPlanPage />;
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
export default Page;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import StatusBoardPage from "@client/pages/status-board-page/StatusBoardPage";
|
|
2
|
-
import { httpWrapper } from "
|
|
3
|
-
|
|
4
|
-
const Page = httpWrapper(async () => {
|
|
5
|
-
return <StatusBoardPage />;
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
export default Page;
|
|
1
|
+
import StatusBoardPage from "@client/pages/status-board-page/StatusBoardPage";
|
|
2
|
+
import { httpWrapper } from "@/app/http-wrappers";
|
|
3
|
+
|
|
4
|
+
const Page = httpWrapper(async () => {
|
|
5
|
+
return <StatusBoardPage />;
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
export default Page;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import UserListPage from "@client/pages/user-list-page/UserListPage";
|
|
2
|
-
import { httpWrapper } from "
|
|
3
|
-
|
|
4
|
-
const Page = httpWrapper(async () => {
|
|
5
|
-
return <UserListPage />;
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
export default Page;
|
|
1
|
+
import UserListPage from "@client/pages/user-list-page/UserListPage";
|
|
2
|
+
import { httpWrapper } from "@/app/http-wrappers";
|
|
3
|
+
|
|
4
|
+
const Page = httpWrapper(async () => {
|
|
5
|
+
return <UserListPage />;
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
export default Page;
|
|
@@ -1,9 +1,27 @@
|
|
|
1
|
-
import ViewPage from "@client/pages/view-page/ViewPage";
|
|
2
|
-
import { httpWrapper } from "
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import ViewPage from "@client/pages/view-page/ViewPage";
|
|
2
|
+
import { httpWrapper } from "@/app/http-wrappers";
|
|
3
|
+
|
|
4
|
+
interface ViewPageSearchParams {
|
|
5
|
+
id?: string;
|
|
6
|
+
name?: string;
|
|
7
|
+
resource?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
interface PageProps {
|
|
11
|
+
params: Promise<Record<string, string>>;
|
|
12
|
+
searchParams: Promise<ViewPageSearchParams>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const Page = httpWrapper(async ({ searchParams }: PageProps) => {
|
|
16
|
+
const resolvedSearchParams = await searchParams;
|
|
17
|
+
|
|
18
|
+
return (
|
|
19
|
+
<ViewPage
|
|
20
|
+
id={resolvedSearchParams.id}
|
|
21
|
+
name={resolvedSearchParams.name}
|
|
22
|
+
resource={resolvedSearchParams.resource}
|
|
23
|
+
/>
|
|
24
|
+
);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
export default Page;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { httpWrapper } from "
|
|
3
|
-
import ApiDocsPage from "@client/pages/api-docs-page/ApiDocsPage";
|
|
4
|
-
import { isProd } from "@fd-toolbox/lib/environments";
|
|
5
|
-
import "swagger-ui-react/swagger-ui.css";
|
|
6
|
-
|
|
7
|
-
const Page = httpWrapper(async () => {
|
|
8
|
-
if (isProd()) {
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
return <ApiDocsPage />;
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
export default Page;
|
|
1
|
+
import { fdNotFound } from "@meta/client/framework/index";
|
|
2
|
+
import { httpWrapper } from "@/app/http-wrappers";
|
|
3
|
+
import ApiDocsPage from "@client/pages/api-docs-page/ApiDocsPage";
|
|
4
|
+
import { isProd } from "@fd-toolbox/lib/environments";
|
|
5
|
+
import "swagger-ui-react/swagger-ui.css";
|
|
6
|
+
|
|
7
|
+
const Page = httpWrapper(async () => {
|
|
8
|
+
if (isProd()) {
|
|
9
|
+
fdNotFound();
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
return <ApiDocsPage />;
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
export default Page;
|
package/cli/src/app/globals.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@import "@fernir2/saas-kit/styles";
|
|
1
|
+
@import "@fernir2/saas-kit/styles";
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createHttpWrapper } from "@server/web/http-wrapper";
|
|
2
|
+
import {
|
|
3
|
+
HttpApiWrapperConfig,
|
|
4
|
+
RequestHandler,
|
|
5
|
+
createHttpApiWrapper,
|
|
6
|
+
} from "@meta/server/web/http-api-wrapper";
|
|
7
|
+
import { PageProps, HttpWrapperConfig } from "@common/web/page-props";
|
|
8
|
+
import type { ElementNode } from "@fd-toolbox/types/react-types";
|
|
9
|
+
import { initSaasKit } from "@/app/init-saas-kit";
|
|
10
|
+
|
|
11
|
+
export function httpWrapper(handler: (props: PageProps) => Promise<ElementNode>, config?: HttpWrapperConfig) {
|
|
12
|
+
initSaasKit();
|
|
13
|
+
return createHttpWrapper()(handler, config);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function httpApiWrapper(handler: RequestHandler, config?: HttpApiWrapperConfig) {
|
|
17
|
+
initSaasKit();
|
|
18
|
+
return createHttpApiWrapper()(handler, config);
|
|
19
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { initSaasKitWithConfig, InitSaasKitConfig } from "@meta/server/web/init-saas-kit-config";
|
|
2
|
+
import * as schema from "@schemas/schema";
|
|
3
|
+
import { resourceHandlerDynamicImportMap } from "@schemas/crud-handler-map";
|
|
4
|
+
|
|
5
|
+
const config: InitSaasKitConfig = {
|
|
6
|
+
schema,
|
|
7
|
+
handlerMap: resourceHandlerDynamicImportMap,
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export function initSaasKit() {
|
|
11
|
+
initSaasKitWithConfig(config);
|
|
12
|
+
}
|
package/cli/src/app/layout.tsx
CHANGED
|
@@ -1,37 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
1
|
+
// Geist must be imported directly in the root layout because next/font
|
|
2
|
+
// requires being used at the App Router entry point and cannot be wrapped.
|
|
3
|
+
// Approved
|
|
4
|
+
// eslint-disable-next-line no-restricted-imports
|
|
5
|
+
import { Geist as createFontGeist } from "next/font/google";
|
|
6
|
+
import { HtmlMetadata } from "@meta/client/framework";
|
|
7
|
+
import "@/app/globals.css";
|
|
8
|
+
import { cn } from "@fd-toolbox/lib/utils";
|
|
9
|
+
import Favicon from "src/app/favicon.ico";
|
|
10
|
+
import { Toaster } from "@fd-component-toolbox/toaster/Toaster";
|
|
11
|
+
import { ReactNode } from "react";
|
|
12
|
+
import { ClientRootLayout } from "@client/components/providers/ClientRootLayout";
|
|
13
|
+
import { themes } from "@fd-app-toolbox/menu/themes";
|
|
14
|
+
import { rootLayoutMetadata } from "@base-repo/app-constants/internal-system-constants";
|
|
15
|
+
import { projectName } from "@base-repo/app-constants/project-paths";
|
|
16
|
+
|
|
17
|
+
export const metadata: HtmlMetadata = {
|
|
18
|
+
title: projectName,
|
|
19
|
+
icons: [{ rel: rootLayoutMetadata.icon, url: Favicon.src }],
|
|
20
|
+
} as const;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Root layout component that wraps the entire application with providers
|
|
24
|
+
*
|
|
25
|
+
* @param children - React nodes to render within the layout
|
|
26
|
+
*/
|
|
27
|
+
export default async function RootLayout({ children }: { children: ReactNode }) {
|
|
28
|
+
return (
|
|
29
|
+
<html lang="en" className={themes.light} style={{ colorScheme: themes.light }}>
|
|
30
|
+
<body className={cn(geistFont.className, "h-screen text-sm")}>
|
|
31
|
+
<div className="flex h-full flex-col">
|
|
32
|
+
<ClientRootLayout>{children}</ClientRootLayout>
|
|
33
|
+
</div>
|
|
34
|
+
<Toaster />
|
|
35
|
+
</body>
|
|
36
|
+
</html>
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const geistFont = createFontGeist({
|
|
41
|
+
/* string-duplication-disable-next-line */
|
|
42
|
+
subsets: ["latin"],
|
|
43
|
+
});
|
package/cli/src/app/page.tsx
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { fdRedirect } from "@fd-toolbox/server/framework";
|
|
2
|
-
import { getResourceListUrl } from "@meta/services/meta-navigations";
|
|
3
|
-
import { resourceNames } from "@fd-toolbox/resources/resource-names";
|
|
4
|
-
|
|
5
|
-
export default function Home() {
|
|
6
|
-
const afterLoginUrl = getResourceListUrl(resourceNames.contact);
|
|
7
|
-
|
|
8
|
-
fdRedirect(afterLoginUrl);
|
|
9
|
-
}
|
|
1
|
+
import { fdRedirect } from "@fd-toolbox/server/framework";
|
|
2
|
+
import { getResourceListUrl } from "@meta/services/meta-navigations";
|
|
3
|
+
import { resourceNames } from "@fd-toolbox/resources/resource-names";
|
|
4
|
+
|
|
5
|
+
export default function Home() {
|
|
6
|
+
const afterLoginUrl = getResourceListUrl(resourceNames.contact);
|
|
7
|
+
|
|
8
|
+
fdRedirect(afterLoginUrl);
|
|
9
|
+
}
|
|
@@ -1,71 +1,75 @@
|
|
|
1
|
-
@layer base {
|
|
2
|
-
* {
|
|
3
|
-
border-color: var(--color-border);
|
|
4
|
-
}
|
|
5
|
-
body {
|
|
6
|
-
background-color: var(--color-background);
|
|
7
|
-
color: var(--color-foreground);
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
@supports not (-webkit-appearance: none) {
|
|
12
|
-
* {
|
|
13
|
-
scrollbar-width: thin;
|
|
14
|
-
scrollbar-color: hsl(var(--fd-toolbar)) hsl(var(--background));
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
@supports (-webkit-appearance: none) {
|
|
19
|
-
*::-webkit-scrollbar {
|
|
20
|
-
width: 15px;
|
|
21
|
-
height: 15px;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
*::-webkit-scrollbar-track {
|
|
25
|
-
background: hsl(var(--background));
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
*::-webkit-scrollbar-thumb {
|
|
29
|
-
width: 9px;
|
|
30
|
-
height: 9px;
|
|
31
|
-
background: hsl(var(--fd-toolbar));
|
|
32
|
-
border-radius: var(--radius);
|
|
33
|
-
border: 3px solid hsl(var(--background));
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
*::-webkit-scrollbar-thumb:hover {
|
|
37
|
-
background: hsl(var(--fd-toolbar-hover));
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
*::-webkit-scrollbar-button {
|
|
41
|
-
display: none;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
.scrollbar-hidden {
|
|
46
|
-
-ms-overflow-style: none;
|
|
47
|
-
scrollbar-width: none;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
1
|
+
@layer base {
|
|
2
|
+
* {
|
|
3
|
+
border-color: var(--color-border);
|
|
4
|
+
}
|
|
5
|
+
body {
|
|
6
|
+
background-color: var(--color-background);
|
|
7
|
+
color: var(--color-foreground);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
@supports not (-webkit-appearance: none) {
|
|
12
|
+
* {
|
|
13
|
+
scrollbar-width: thin;
|
|
14
|
+
scrollbar-color: hsl(var(--fd-toolbar)) hsl(var(--background));
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
@supports (-webkit-appearance: none) {
|
|
19
|
+
*::-webkit-scrollbar {
|
|
20
|
+
width: 15px;
|
|
21
|
+
height: 15px;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
*::-webkit-scrollbar-track {
|
|
25
|
+
background: hsl(var(--background));
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
*::-webkit-scrollbar-thumb {
|
|
29
|
+
width: 9px;
|
|
30
|
+
height: 9px;
|
|
31
|
+
background: hsl(var(--fd-toolbar));
|
|
32
|
+
border-radius: var(--radius);
|
|
33
|
+
border: 3px solid hsl(var(--background));
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
*::-webkit-scrollbar-thumb:hover {
|
|
37
|
+
background: hsl(var(--fd-toolbar-hover));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
*::-webkit-scrollbar-button {
|
|
41
|
+
display: none;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.scrollbar-hidden {
|
|
46
|
+
-ms-overflow-style: none;
|
|
47
|
+
scrollbar-width: none;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.bg-gradient-accent {
|
|
51
|
+
background: linear-gradient(135deg, #3b82f6, #8b5cf6);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
@media (max-width: 426px) {
|
|
55
|
+
html,
|
|
56
|
+
body {
|
|
57
|
+
overflow: auto;
|
|
58
|
+
-ms-overflow-style: none;
|
|
59
|
+
scrollbar-width: none;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
body::-webkit-scrollbar,
|
|
63
|
+
body *::-webkit-scrollbar {
|
|
64
|
+
display: none;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
@layer base {
|
|
69
|
+
input:-webkit-autofill,
|
|
70
|
+
input:-webkit-autofill:hover,
|
|
71
|
+
input:-webkit-autofill:focus {
|
|
72
|
+
-webkit-box-shadow: 0 0 0px 1000px hsl(var(--background)) inset;
|
|
73
|
+
-webkit-text-fill-color: hsl(var(--foreground));
|
|
74
|
+
}
|
|
75
|
+
}
|