@fernir2/saas-kit-cli 0.1.34 → 0.1.35
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/aliases.cjs.js +1 -1
- package/base-repo/app-constants/aliases.js +1 -1
- package/base-repo/app-constants/project-paths.cjs.js +1 -1
- package/base-repo/app-constants/project-paths.js +1 -1
- package/base-repo/constants/create-app-constants.cjs.js +1 -1
- package/base-repo/constants/create-app-constants.js +1 -1
- package/base-repo/constants/packages.cjs.js +1 -1
- package/base-repo/constants/packages.cjs2.js +1 -1
- package/base-repo/constants/packages.js +1 -1
- package/base-repo/constants/packages2.js +1 -1
- package/cli/.env.example +61 -55
- package/cli/README.md +3 -101
- package/cli/bin/{index.ts → create.ts} +444 -383
- package/cli/configs/drizzle-cli-config.ts +14 -0
- package/cli/configs/playwright-cli-config.ts +34 -0
- package/cli/configs/tsconfig.cli.json +37 -0
- package/cli/configs/tsconfig.server.json +13 -0
- package/cli/drizzle.config.ts +6 -12
- package/cli/next.config.js +73 -80
- package/cli/npm-commands/{gen-meta/index.ts → gen-meta.ts} +3 -3
- package/cli/npm-commands/gen-schema.ts +3 -0
- package/cli/npm-commands/{migrate-db/migrate-db.ts → migrate-db.ts} +15 -15
- package/cli/npm-commands/{seed-db/seed-db.ts → seed-db.ts} +15 -15
- package/cli/package-template.json +61 -64
- package/cli/playwright.config.ts +6 -34
- package/cli/postcss.config.mjs +7 -9
- package/cli/server.ts +41 -41
- package/cli/src/app/api/v1/[resourceName]/[id]/route.ts +11 -11
- package/cli/src/app/api/v1/[resourceName]/route.ts +14 -14
- package/cli/src/app/api/v1/[resourceName]/upsert/route.ts +3 -3
- package/cli/src/app/api/v1/log/route.ts +7 -7
- package/cli/src/app/api/v1/otheruser/[id]/route.ts +14 -14
- package/cli/src/app/api/v1/otheruser/route.ts +7 -7
- package/cli/src/app/api/v1/password/forgotpassword/route.ts +3 -3
- package/cli/src/app/api/v1/password/resetpassword/route.ts +3 -3
- package/cli/src/app/api/v1/payment/method/route.ts +4 -4
- package/cli/src/app/api/v1/payment/route.ts +3 -3
- package/cli/src/app/api/v1/payment/verify-fail/route.ts +3 -3
- package/cli/src/app/api/v1/payment/verify-success/route.ts +3 -3
- package/cli/src/app/api/v1/preload/route.ts +3 -3
- package/cli/src/app/api/v1/searchable-resources/route.ts +11 -11
- package/cli/src/app/api/v1/searchresult/route.ts +35 -35
- package/cli/src/app/api/v1/sign-in/route.ts +3 -3
- package/cli/src/app/api/v1/sign-out/route.ts +3 -3
- package/cli/src/app/api/v1/sign-up/route.ts +3 -3
- package/cli/src/app/api/v1/subscription/cancel/route.ts +3 -3
- package/cli/src/app/api/v1/subscription/create/route.ts +3 -3
- package/cli/src/app/api/v1/subscription/update/route.ts +3 -3
- package/cli/src/app/api/v1/uimeta/route.ts +3 -3
- package/cli/src/app/api/v1/uimetas/route.ts +3 -3
- package/cli/src/app/api/v1/userpermission/route.ts +3 -3
- package/cli/src/app/api/v1/visible-workspace/route.ts +5 -5
- package/cli/src/app/api/v1/workspace/change/route.ts +5 -5
- package/cli/src/app/f/(private)/dashboard/page.tsx +8 -8
- package/cli/src/app/f/(private)/dynamiclayout/page.tsx +8 -8
- package/cli/src/app/f/(private)/edituser/[id]/page.tsx +8 -8
- package/cli/src/app/f/(private)/edituser/page.tsx +8 -8
- package/cli/src/app/f/(private)/layout.tsx +5 -5
- package/cli/src/app/f/(private)/lm/page.tsx +8 -8
- package/cli/src/app/f/(private)/payment-plans/page.tsx +8 -8
- package/cli/src/app/f/(private)/preload/page.tsx +8 -8
- package/cli/src/app/f/(private)/statusboard/page.tsx +8 -8
- package/cli/src/app/f/(private)/userlist/page.tsx +8 -8
- package/cli/src/app/f/(private)/view/page.tsx +9 -8
- package/cli/src/app/f/defaultRedirect/page.tsx +9 -9
- package/cli/src/app/f/editpassword/page.tsx +8 -8
- package/cli/src/app/f/forgotpassword/page.tsx +13 -13
- package/cli/src/app/f/resetpassword/page.tsx +11 -16
- package/cli/src/app/f/sign-in/microsoft/page.tsx +8 -8
- package/cli/src/app/f/sign-in/page.tsx +13 -13
- package/cli/src/app/f/sign-up/page.tsx +13 -13
- package/cli/src/app/f/test/feed/page.tsx +8 -8
- package/cli/src/app/f/test/file-upload/page.tsx +8 -8
- package/cli/src/app/f/test/layout.tsx +5 -5
- package/cli/src/app/f/test/page.tsx +8 -8
- package/cli/src/app/globals.css +1 -1
- package/cli/src/app/layout.tsx +46 -44
- package/cli/src/app/page.tsx +9 -9
- package/cli/src/app/styles/common.css +71 -74
- package/cli/src/app/styles/rich-text-editor.css +130 -130
- package/cli/{global-setup.ts → test/global-setup.ts} +25 -25
- package/cli/tsconfig.json +28 -65
- package/cli/tsconfig.server.json +17 -14
- package/fd-toolbox/api/api-client.cjs.js +19 -0
- package/fd-toolbox/api/api-client.js +11 -0
- package/{level2/fd-toolbox → fd-toolbox}/api/api-path-names.cjs.js +2 -2
- package/fd-toolbox/api/api-paths.cjs.js +9 -0
- package/fd-toolbox/api/api-paths.js +7 -0
- package/fd-toolbox/api/base-api.cjs.js +22 -0
- package/fd-toolbox/api/base-api.js +13 -0
- package/{level2/fd-toolbox → fd-toolbox}/auth/login-states.cjs.js +1 -1
- package/{level2/fd-toolbox → fd-toolbox}/auth/login-states.js +1 -1
- package/fd-toolbox/auth/session-storage.cjs.js +12 -0
- package/fd-toolbox/auth/session-storage.js +7 -0
- package/{level2/fd-toolbox → fd-toolbox}/auth/tokens.cjs.js +1 -1
- package/{level2/fd-toolbox → fd-toolbox}/auth/tokens.js +1 -1
- package/{level2/fd-toolbox → fd-toolbox}/constants/constants.cjs.js +1 -1
- package/fd-toolbox/constants/constants.js +4 -0
- package/{level2/fd-toolbox → fd-toolbox}/constants/header-names.cjs.js +1 -1
- package/{level2/fd-toolbox → fd-toolbox}/constants/header-names.js +1 -1
- package/{level2/fd-toolbox → fd-toolbox}/constants/public-files.cjs.js +2 -1
- package/{level2/fd-toolbox → fd-toolbox}/constants/public-files.js +2 -2
- package/fd-toolbox/enums/enums.cjs.js +26 -0
- package/fd-toolbox/enums/enums.js +4 -0
- package/{level2/fd-toolbox → fd-toolbox}/errors/error-handler.cjs.js +1 -1
- package/fd-toolbox/errors/error-handler.js +8 -0
- package/fd-toolbox/errors/errors.cjs.js +6 -0
- package/fd-toolbox/errors/errors.js +4 -0
- package/fd-toolbox/errors/problem-details.cjs.js +8 -0
- package/fd-toolbox/errors/problem-details.js +6 -0
- package/fd-toolbox/functions/value-checking-functions.cjs.js +10 -0
- package/fd-toolbox/functions/value-checking-functions.js +6 -0
- package/{level2/fd-toolbox → fd-toolbox}/http/url/urls.cjs.js +1 -1
- package/fd-toolbox/http/url/urls.js +6 -0
- package/fd-toolbox/infra/env-config.cjs.js +8 -0
- package/fd-toolbox/infra/env-config.js +6 -0
- package/fd-toolbox/infra/env-functions.cjs.js +16 -0
- package/fd-toolbox/infra/env-functions.js +11 -0
- package/fd-toolbox/infra/env-schema.cjs.js +12 -0
- package/fd-toolbox/infra/env-schema.js +8 -0
- package/{level2/fd-toolbox → fd-toolbox}/infra/env-store.cjs.js +1 -1
- package/{level2/fd-toolbox → fd-toolbox}/infra/env-store.js +1 -1
- package/{level2/fd-toolbox → fd-toolbox}/lib/environments.cjs.js +2 -2
- package/{level2/fd-toolbox → fd-toolbox}/lib/environments.js +2 -2
- package/fd-toolbox/lib/utils.cjs.js +29 -0
- package/fd-toolbox/lib/utils.js +13 -0
- package/fd-toolbox/local-storage/local-storage.cjs.js +12 -0
- package/fd-toolbox/local-storage/local-storage.js +7 -0
- package/fd-toolbox/logging/loggers.cjs.js +16 -0
- package/fd-toolbox/logging/loggers.js +10 -0
- package/fd-toolbox/notifications.cjs.js +14 -0
- package/fd-toolbox/notifications.js +7 -0
- package/{level2/fd-toolbox → fd-toolbox}/odata/odata-constants.cjs.js +1 -1
- package/fd-toolbox/odata/odata-constants.js +4 -0
- package/fd-toolbox/odata/odatas.cjs.js +11 -0
- package/fd-toolbox/odata/odatas.js +9 -0
- package/fd-toolbox/odata/services/odata-filters.cjs.js +11 -0
- package/fd-toolbox/odata/services/odata-filters.js +9 -0
- package/fd-toolbox/paths/paths-names.cjs.js +9 -0
- package/fd-toolbox/paths/paths-names.js +6 -0
- package/{level2/fd-toolbox → fd-toolbox}/routing/login-routers.cjs.js +1 -1
- package/{level2/fd-toolbox → fd-toolbox}/routing/login-routers.js +1 -1
- package/fd-toolbox/routing/paths.cjs.js +8 -0
- package/fd-toolbox/routing/paths.js +6 -0
- package/{level2/fd-toolbox → fd-toolbox}/strings/strings-constants.cjs.js +1 -1
- package/fd-toolbox/strings/strings-constants.js +4 -0
- package/fd-toolbox/strings/strings.cjs.js +10 -0
- package/fd-toolbox/strings/strings.js +7 -0
- package/fd-toolbox/types/ensure-type.cjs.js +21 -0
- package/fd-toolbox/types/ensure-type.js +4 -0
- package/fd-toolbox-core/core/name-of.cjs.js +8 -0
- package/fd-toolbox-core/core/name-of.js +4 -0
- package/fd-toolbox-core/types/resource-with-id.cjs.js +9 -0
- package/fd-toolbox-core/types/resource-with-id.js +6 -0
- package/level2/cli/bin/index.cjs.js +8 -0
- package/level2/cli/bin/index.js +6 -0
- package/level2/cli/create/bin/create.cjs.js +42 -0
- package/level2/cli/create/bin/create.js +20 -0
- package/level2/npm-commands/build-npm/cli-contents.cjs.js +9 -0
- package/level2/npm-commands/build-npm/cli-contents.js +6 -0
- package/level2/npm-commands/build-npm/path.cjs.js +1 -1
- package/level2/npm-commands/build-npm/path.js +2 -2
- package/package.json +31 -30
- package/cli/.env +0 -55
- package/cli/.gitlab-ci.yml +0 -16
- package/cli/.husky/commit-msg +0 -1
- package/cli/.husky/pre-commit +0 -1
- package/cli/eslint.config.js +0 -10
- package/cli/npm-commands/gen-schema/index.ts +0 -5
- package/cli/npm-commands/migrate-db/index.ts +0 -5
- package/cli/npm-commands/seed-db/index.ts +0 -5
- package/cli/tailwind.config.ts +0 -13
- package/cli/tsconfig.declaration.json +0 -48
- package/level2/cli/create-saas-kit-app/bin/index.cjs.js +0 -40
- package/level2/cli/create-saas-kit-app/bin/index.js +0 -18
- package/level2/fd-toolbox/api/api-client.cjs.js +0 -19
- package/level2/fd-toolbox/api/api-client.js +0 -11
- package/level2/fd-toolbox/api/api-paths.cjs.js +0 -9
- package/level2/fd-toolbox/api/api-paths.js +0 -7
- package/level2/fd-toolbox/api/base-api.cjs.js +0 -22
- package/level2/fd-toolbox/api/base-api.js +0 -13
- package/level2/fd-toolbox/auth/session-storage.cjs.js +0 -12
- package/level2/fd-toolbox/auth/session-storage.js +0 -7
- package/level2/fd-toolbox/constants/constants.js +0 -4
- package/level2/fd-toolbox/enums/enums.cjs.js +0 -26
- package/level2/fd-toolbox/enums/enums.js +0 -4
- package/level2/fd-toolbox/errors/error-handler.js +0 -8
- package/level2/fd-toolbox/errors/errors.cjs.js +0 -6
- package/level2/fd-toolbox/errors/errors.js +0 -4
- package/level2/fd-toolbox/errors/problem-details.cjs.js +0 -8
- package/level2/fd-toolbox/errors/problem-details.js +0 -6
- package/level2/fd-toolbox/functions/value-checking-functions.cjs.js +0 -10
- package/level2/fd-toolbox/functions/value-checking-functions.js +0 -6
- package/level2/fd-toolbox/http/url/urls.js +0 -6
- package/level2/fd-toolbox/infra/env-config.cjs.js +0 -8
- package/level2/fd-toolbox/infra/env-config.js +0 -6
- package/level2/fd-toolbox/infra/env-functions.cjs.js +0 -16
- package/level2/fd-toolbox/infra/env-functions.js +0 -11
- package/level2/fd-toolbox/infra/env-schema.cjs.js +0 -12
- package/level2/fd-toolbox/infra/env-schema.js +0 -8
- package/level2/fd-toolbox/lib/utils.cjs.js +0 -29
- package/level2/fd-toolbox/lib/utils.js +0 -13
- package/level2/fd-toolbox/local-storage/local-storage.cjs.js +0 -12
- package/level2/fd-toolbox/local-storage/local-storage.js +0 -7
- package/level2/fd-toolbox/logging/loggers.cjs.js +0 -16
- package/level2/fd-toolbox/logging/loggers.js +0 -10
- package/level2/fd-toolbox/notifications.cjs.js +0 -14
- package/level2/fd-toolbox/notifications.js +0 -7
- package/level2/fd-toolbox/odata/odata-constants.js +0 -4
- package/level2/fd-toolbox/odata/odatas.cjs.js +0 -11
- package/level2/fd-toolbox/odata/odatas.js +0 -9
- package/level2/fd-toolbox/odata/services/odata-filters.cjs.js +0 -11
- package/level2/fd-toolbox/odata/services/odata-filters.js +0 -9
- package/level2/fd-toolbox/paths/paths-names.cjs.js +0 -9
- package/level2/fd-toolbox/paths/paths-names.js +0 -6
- package/level2/fd-toolbox/routing/paths.cjs.js +0 -8
- package/level2/fd-toolbox/routing/paths.js +0 -6
- package/level2/fd-toolbox/strings/strings-constants.js +0 -4
- package/level2/fd-toolbox/strings/strings.cjs.js +0 -10
- package/level2/fd-toolbox/strings/strings.js +0 -7
- package/level2/fd-toolbox/types/ensure-type.cjs.js +0 -18
- package/level2/fd-toolbox/types/ensure-type.js +0 -4
- package/level2/fd-toolbox-core/core/name-of.cjs.js +0 -8
- package/level2/fd-toolbox-core/core/name-of.js +0 -4
- package/level2/fd-toolbox-core/types/resource-with-id.cjs.js +0 -9
- package/level2/fd-toolbox-core/types/resource-with-id.js +0 -6
- /package/{level2/fd-toolbox → fd-toolbox}/api/api-path-names.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/constants/api-constants.cjs.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/constants/api-constants.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/constants/environment-constants.cjs.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/constants/environment-constants.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/constants/extensions.cjs.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/constants/extensions.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/constants/http-status-codes.cjs.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/constants/http-status-codes.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/constants/meta-query-params.cjs.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/constants/meta-query-params.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/constants/representations.cjs.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/constants/representations.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/errors/error-statuses.cjs.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/errors/error-statuses.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/http/http-constants.cjs.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/http/http-constants.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/infra/env-setting-types.cjs.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/infra/env-setting-types.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/infra/toolbox-env-setting-keys.cjs.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/infra/toolbox-env-setting-keys.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/logging/logging-constants.cjs.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/logging/logging-constants.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/odata/odata-enums.cjs.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/odata/odata-enums.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/resources/resource-names.cjs.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/resources/resource-names.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/routing/routes.cjs.js +0 -0
- /package/{level2/fd-toolbox → fd-toolbox}/routing/routes.js +0 -0
- /package/{level2/fd-toolbox-core → fd-toolbox-core}/constants/meta-constants.cjs.js +0 -0
- /package/{level2/fd-toolbox-core → fd-toolbox-core}/constants/meta-constants.js +0 -0
- /package/{level2/fd-toolbox-core → fd-toolbox-core}/constants/promises.cjs.js +0 -0
- /package/{level2/fd-toolbox-core → fd-toolbox-core}/constants/promises.js +0 -0
- /package/{level2/fd-toolbox-core → fd-toolbox-core}/enums/log-severities.cjs.js +0 -0
- /package/{level2/fd-toolbox-core → fd-toolbox-core}/enums/log-severities.js +0 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { defineConfig } from "drizzle-kit";
|
|
2
|
+
import { getRequiredStringEnvSetting } from "@fd-toolbox/infra/env-functions";
|
|
3
|
+
import { generatedPaths } from "@base-repo/app-constants/project-paths";
|
|
4
|
+
import { metaEnvSettingKeys } from "@meta/infra/meta-env-setting-keys";
|
|
5
|
+
|
|
6
|
+
const connectionString = getRequiredStringEnvSetting(metaEnvSettingKeys.databaseConnection);
|
|
7
|
+
|
|
8
|
+
export const drizzleConfig = defineConfig({
|
|
9
|
+
dialect: "postgresql",
|
|
10
|
+
schema: generatedPaths.schema,
|
|
11
|
+
dbCredentials: {
|
|
12
|
+
url: connectionString,
|
|
13
|
+
},
|
|
14
|
+
});
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { defineConfig, devices } from "playwright/test";
|
|
2
|
+
import { getDotenvConfig } from "@fd-toolbox/infra/env-config";
|
|
3
|
+
|
|
4
|
+
getDotenvConfig();
|
|
5
|
+
|
|
6
|
+
const baseUrl = "http://localhost:8080/";
|
|
7
|
+
|
|
8
|
+
export const playwrightConfig = defineConfig({
|
|
9
|
+
timeout: 120000,
|
|
10
|
+
testDir: "test/",
|
|
11
|
+
fullyParallel: true,
|
|
12
|
+
globalSetup: "./test/global-setup.ts",
|
|
13
|
+
workers: undefined,
|
|
14
|
+
reporter: "html",
|
|
15
|
+
use: {
|
|
16
|
+
baseURL: baseUrl,
|
|
17
|
+
trace: "on-first-retry",
|
|
18
|
+
},
|
|
19
|
+
projects: [
|
|
20
|
+
{
|
|
21
|
+
name: "chromium",
|
|
22
|
+
use: { ...devices["Desktop Chrome"] },
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
webServer: {
|
|
26
|
+
command: "npm run prod",
|
|
27
|
+
url: baseUrl,
|
|
28
|
+
reuseExistingServer: true,
|
|
29
|
+
timeout: 120000,
|
|
30
|
+
env: {
|
|
31
|
+
NODE_ENV: "test",
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
});
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2022",
|
|
4
|
+
"experimentalDecorators": true,
|
|
5
|
+
"emitDecoratorMetadata": true,
|
|
6
|
+
"lib": ["dom", "dom.iterable", "esnext"],
|
|
7
|
+
"allowJs": true,
|
|
8
|
+
"skipLibCheck": true,
|
|
9
|
+
"strict": true,
|
|
10
|
+
"esModuleInterop": true,
|
|
11
|
+
"module": "esnext",
|
|
12
|
+
"moduleResolution": "bundler",
|
|
13
|
+
"resolveJsonModule": true,
|
|
14
|
+
"isolatedModules": true,
|
|
15
|
+
"jsx": "preserve",
|
|
16
|
+
"incremental": true,
|
|
17
|
+
"plugins": [{ "name": "next" }],
|
|
18
|
+
"preserveSymlinks": false,
|
|
19
|
+
"forceConsistentCasingInFileNames": true,
|
|
20
|
+
"noFallthroughCasesInSwitch": true,
|
|
21
|
+
"sourceMap": true,
|
|
22
|
+
"importHelpers": true,
|
|
23
|
+
"noEmitHelpers": true,
|
|
24
|
+
"downlevelIteration": true,
|
|
25
|
+
"pretty": true,
|
|
26
|
+
"noUnusedLocals": true,
|
|
27
|
+
"noUnusedParameters": true,
|
|
28
|
+
"noPropertyAccessFromIndexSignature": true,
|
|
29
|
+
"noImplicitOverride": true,
|
|
30
|
+
"useUnknownInCatchVariables": true,
|
|
31
|
+
"noEmit": false,
|
|
32
|
+
"declaration": true,
|
|
33
|
+
"declarationDir": "./build/package/types",
|
|
34
|
+
"outDir": "./build/package/types-output",
|
|
35
|
+
"noEmitOnError": true
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "./tsconfig.cli.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"module": "es2022",
|
|
5
|
+
"moduleResolution": "bundler",
|
|
6
|
+
"outDir": "dist",
|
|
7
|
+
"lib": ["ES2022", "dom"],
|
|
8
|
+
"target": "ES2022",
|
|
9
|
+
"isolatedModules": false,
|
|
10
|
+
"noEmit": false,
|
|
11
|
+
"strict": true
|
|
12
|
+
}
|
|
13
|
+
}
|
package/cli/drizzle.config.ts
CHANGED
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
dialect: "postgresql",
|
|
8
|
-
schema: generatedPaths.schema,
|
|
9
|
-
dbCredentials: {
|
|
10
|
-
url: connectionString,
|
|
11
|
-
},
|
|
12
|
-
});
|
|
1
|
+
import { drizzleConfig } from "@fernir2/saas-kit";
|
|
2
|
+
import { defineConfig } from "drizzle-kit";
|
|
3
|
+
|
|
4
|
+
export default defineConfig({
|
|
5
|
+
...drizzleConfig,
|
|
6
|
+
});
|
package/cli/next.config.js
CHANGED
|
@@ -1,80 +1,73 @@
|
|
|
1
|
-
import { execSync } from "child_process";
|
|
2
|
-
import { folders } from "@fernir2/saas-kit";
|
|
3
|
-
|
|
4
|
-
const externalModules = {
|
|
5
|
-
"@node-rs/argon2": "commonjs @node-rs/argon2",
|
|
6
|
-
"cloudflare:sockets": "commonjs cloudflare:sockets",
|
|
7
|
-
"node:crypto": "commonjs node:crypto",
|
|
8
|
-
"node:fs": "commonjs node:fs",
|
|
9
|
-
"node:path": "commonjs node:path",
|
|
10
|
-
"node:stream": "commonjs node:stream",
|
|
11
|
-
child_process: "commonjs2 child_process",
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
const serverRules = {
|
|
15
|
-
test: /\.html$/,
|
|
16
|
-
use: "raw-loader",
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
const mdRules = {
|
|
20
|
-
test: /\.md$/,
|
|
21
|
-
use: "ignore-loader",
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
const nextConfig = async () => {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
},
|
|
75
|
-
];
|
|
76
|
-
},
|
|
77
|
-
serverExternalPackages: ["oslo", "pg"],
|
|
78
|
-
};
|
|
79
|
-
};
|
|
80
|
-
export default nextConfig;
|
|
1
|
+
import { execSync } from "child_process";
|
|
2
|
+
import { folders } from "@fernir2/saas-kit";
|
|
3
|
+
|
|
4
|
+
const externalModules = {
|
|
5
|
+
"@node-rs/argon2": "commonjs @node-rs/argon2",
|
|
6
|
+
"cloudflare:sockets": "commonjs cloudflare:sockets",
|
|
7
|
+
"node:crypto": "commonjs node:crypto",
|
|
8
|
+
"node:fs": "commonjs node:fs",
|
|
9
|
+
"node:path": "commonjs node:path",
|
|
10
|
+
"node:stream": "commonjs node:stream",
|
|
11
|
+
child_process: "commonjs2 child_process",
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const serverRules = {
|
|
15
|
+
test: /\.html$/,
|
|
16
|
+
use: "raw-loader",
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const mdRules = {
|
|
20
|
+
test: /\.md$/,
|
|
21
|
+
use: "ignore-loader",
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const nextConfig = async () => {
|
|
25
|
+
return {
|
|
26
|
+
reactCompiler: true,
|
|
27
|
+
images: {
|
|
28
|
+
remotePatterns: [
|
|
29
|
+
{
|
|
30
|
+
protocol: "https",
|
|
31
|
+
hostname: "pub-7a5f8c3ab46946ae96d8d2e497a36f7b.r2.dev",
|
|
32
|
+
port: "",
|
|
33
|
+
pathname: "/**",
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
},
|
|
37
|
+
webpack: (config, { isServer }) => {
|
|
38
|
+
if (isServer) {
|
|
39
|
+
config.watchOptions = {
|
|
40
|
+
ignored: [
|
|
41
|
+
`**/${folders.nodeModules}/**`,
|
|
42
|
+
`**/${folders.next}/**`,
|
|
43
|
+
`**/${folders.npmCommands}/**`,
|
|
44
|
+
`**/${folders.docs}/**`,
|
|
45
|
+
`**/${folders.flint}/**`,
|
|
46
|
+
],
|
|
47
|
+
};
|
|
48
|
+
config.externals.push(externalModules);
|
|
49
|
+
config.module.rules.push(serverRules);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
config.module.rules.push(mdRules);
|
|
53
|
+
|
|
54
|
+
config.resolve.alias["./packages/flint/*"] = false;
|
|
55
|
+
|
|
56
|
+
return config;
|
|
57
|
+
},
|
|
58
|
+
async rewrites() {
|
|
59
|
+
return [
|
|
60
|
+
{
|
|
61
|
+
source: "/api/:path*",
|
|
62
|
+
destination: "/api/v1/:path*",
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
source: "/:path((?!api).*)",
|
|
66
|
+
destination: "/f/:path*",
|
|
67
|
+
},
|
|
68
|
+
];
|
|
69
|
+
},
|
|
70
|
+
serverExternalPackages: ["oslo", "pg"],
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
export default nextConfig;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { combineMeta } from "@fernir2/saas-kit";
|
|
2
|
-
|
|
3
|
-
combineMeta();
|
|
1
|
+
import { combineMeta } from "@fernir2/saas-kit";
|
|
2
|
+
|
|
3
|
+
combineMeta();
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { migrateDatabase, logInfo } from "@fernir2/saas-kit/server";
|
|
2
|
-
|
|
3
|
-
async function migrate() {
|
|
4
|
-
try {
|
|
5
|
-
await migrateDatabase();
|
|
6
|
-
logInfo("Database migrations executed successfully");
|
|
7
|
-
process.exit(0);
|
|
8
|
-
} catch (err) {
|
|
9
|
-
if (err instanceof Error) console.error("Error running migrations", err);
|
|
10
|
-
|
|
11
|
-
process.exit(1);
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
migrate();
|
|
1
|
+
import { migrateDatabase, logInfo } from "@fernir2/saas-kit/server";
|
|
2
|
+
|
|
3
|
+
async function migrate() {
|
|
4
|
+
try {
|
|
5
|
+
await migrateDatabase();
|
|
6
|
+
logInfo("Database migrations executed successfully");
|
|
7
|
+
process.exit(0);
|
|
8
|
+
} catch (err) {
|
|
9
|
+
if (err instanceof Error) console.error("Error running migrations", err);
|
|
10
|
+
|
|
11
|
+
process.exit(1);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
migrate();
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { seedDatabase, logInfo } from "@fernir2/saas-kit/server";
|
|
2
|
-
|
|
3
|
-
async function seed() {
|
|
4
|
-
try {
|
|
5
|
-
await seedDatabase();
|
|
6
|
-
logInfo("Database seeded successfully");
|
|
7
|
-
process.exit(0);
|
|
8
|
-
} catch (err) {
|
|
9
|
-
if (err instanceof Error) console.error("Error seeding database", err);
|
|
10
|
-
|
|
11
|
-
process.exit(1);
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
seed();
|
|
1
|
+
import { seedDatabase, logInfo } from "@fernir2/saas-kit/server";
|
|
2
|
+
|
|
3
|
+
async function seed() {
|
|
4
|
+
try {
|
|
5
|
+
await seedDatabase();
|
|
6
|
+
logInfo("Database seeded successfully");
|
|
7
|
+
process.exit(0);
|
|
8
|
+
} catch (err) {
|
|
9
|
+
if (err instanceof Error) console.error("Error seeding database", err);
|
|
10
|
+
|
|
11
|
+
process.exit(1);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
seed();
|
|
@@ -1,64 +1,61 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": "0.1.0",
|
|
3
|
-
"private": true,
|
|
4
|
-
"type": "module",
|
|
5
|
-
"scripts": {
|
|
6
|
-
"dev": "next dev --turbo",
|
|
7
|
-
"build": "next build --turbo",
|
|
8
|
-
"start": "next start",
|
|
9
|
-
"lint": "eslint -c eslint.config.js",
|
|
10
|
-
"gen-schema": "npx tsx npm-commands/gen-schema
|
|
11
|
-
"gen-meta": "npx tsx npm-commands/gen-meta
|
|
12
|
-
"init-db": "npm run migrate-db && npm run seed-db",
|
|
13
|
-
"setup": "npm run gen-meta && npm run gen-schema && npm run init-db",
|
|
14
|
-
"prod": "npm run setup && npm run build && npx tsx server.ts",
|
|
15
|
-
"migrate-db": "npx tsx npm-commands/migrate-db
|
|
16
|
-
"seed-db": "npx tsx npm-commands/seed-db
|
|
17
|
-
},
|
|
18
|
-
"dependencies": {
|
|
19
|
-
"@fernir2/saas-kit": "0.0.
|
|
20
|
-
"@node-rs/argon2": "
|
|
21
|
-
"drizzle-orm": "0.
|
|
22
|
-
"eslint-plugin-github": "6.0.0",
|
|
23
|
-
"eslint-plugin-import": "2.32.0",
|
|
24
|
-
"eslint-plugin-sonarjs": "3.0.5",
|
|
25
|
-
"geist": "1.
|
|
26
|
-
"next": "
|
|
27
|
-
"quill": "2.0.3",
|
|
28
|
-
"react": "19.
|
|
29
|
-
"react-dom": "19.
|
|
30
|
-
"socket.io-client": "4.8.1",
|
|
31
|
-
"tailwindcss-animate": "1.0.7"
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
"
|
|
36
|
-
"@eslint/
|
|
37
|
-
"@
|
|
38
|
-
"@types/
|
|
39
|
-
"@types/react": "19.
|
|
40
|
-
"@
|
|
41
|
-
"@typescript-eslint/
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"eslint": "
|
|
46
|
-
"eslint-
|
|
47
|
-
"eslint-
|
|
48
|
-
"eslint-plugin-react": "
|
|
49
|
-
"eslint-plugin-react-
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
"babel-plugin-react-compiler": "1.0.0"
|
|
63
|
-
}
|
|
64
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"version": "0.1.0",
|
|
3
|
+
"private": true,
|
|
4
|
+
"type": "module",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"dev": "next dev --turbo",
|
|
7
|
+
"build": "next build --turbo",
|
|
8
|
+
"start": "next start",
|
|
9
|
+
"lint": "eslint -c eslint.config.js",
|
|
10
|
+
"gen-schema": "npx tsx npm-commands/gen-schema.ts",
|
|
11
|
+
"gen-meta": "npx tsx npm-commands/gen-meta.ts",
|
|
12
|
+
"init-db": "npm run migrate-db && npm run seed-db",
|
|
13
|
+
"setup": "npm run gen-meta && npm run gen-schema && npm run init-db",
|
|
14
|
+
"prod": "npm run setup && npm run build && npx tsx server.ts",
|
|
15
|
+
"migrate-db": "npx tsx npm-commands/migrate-db.ts",
|
|
16
|
+
"seed-db": "npx tsx npm-commands/seed-db.ts"
|
|
17
|
+
},
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@fernir2/saas-kit": "0.0.162",
|
|
20
|
+
"@node-rs/argon2": "2.0.2",
|
|
21
|
+
"drizzle-orm": "0.36.4",
|
|
22
|
+
"eslint-plugin-github": "6.0.0",
|
|
23
|
+
"eslint-plugin-import": "2.32.0",
|
|
24
|
+
"eslint-plugin-sonarjs": "3.0.5",
|
|
25
|
+
"geist": "1.4.2",
|
|
26
|
+
"next": "16.0.10",
|
|
27
|
+
"quill": "2.0.3",
|
|
28
|
+
"react": "19.2.3",
|
|
29
|
+
"react-dom": "19.2.3",
|
|
30
|
+
"socket.io-client": "4.8.1",
|
|
31
|
+
"tailwindcss-animate": "1.0.7"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"playwright": "1.52.0",
|
|
35
|
+
"@eslint/eslintrc": "3.3.1",
|
|
36
|
+
"@eslint/js": "9.35.0",
|
|
37
|
+
"@types/node": "24.5.2",
|
|
38
|
+
"@types/react": "19.2.7",
|
|
39
|
+
"@types/react-dom": "19.2.3",
|
|
40
|
+
"@typescript-eslint/eslint-plugin": "8.43.0",
|
|
41
|
+
"@typescript-eslint/parser": "8.43.0",
|
|
42
|
+
"drizzle-kit": "0.28.1",
|
|
43
|
+
"eslint": "9.35.0",
|
|
44
|
+
"eslint-config-next": "16.0.10",
|
|
45
|
+
"eslint-config-prettier": "10.1.8",
|
|
46
|
+
"eslint-plugin-react": "7.37.5",
|
|
47
|
+
"eslint-plugin-react-compiler": "19.1.0-rc.2",
|
|
48
|
+
"eslint-plugin-react-hooks": "5.2.0",
|
|
49
|
+
"eslint-plugin-react-refresh": "0.4.20",
|
|
50
|
+
"husky": "9.1.7",
|
|
51
|
+
"postcss": "8.5.6",
|
|
52
|
+
"prettier": "3.6.2",
|
|
53
|
+
"prettier-plugin-tailwindcss": "0.7.1",
|
|
54
|
+
"tailwindcss": "4.1.17",
|
|
55
|
+
"@tailwindcss/postcss": "4.1.16",
|
|
56
|
+
"tsx": "4.20.5",
|
|
57
|
+
"typescript": "5.9.2",
|
|
58
|
+
"esbuild": "0.25.9",
|
|
59
|
+
"babel-plugin-react-compiler": "1.0.0"
|
|
60
|
+
}
|
|
61
|
+
}
|
package/cli/playwright.config.ts
CHANGED
|
@@ -1,34 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export default defineConfig({
|
|
9
|
-
timeout: 120000,
|
|
10
|
-
testDir: "test/",
|
|
11
|
-
fullyParallel: true,
|
|
12
|
-
globalSetup: "./global-setup.ts",
|
|
13
|
-
workers: undefined,
|
|
14
|
-
reporter: "html",
|
|
15
|
-
use: {
|
|
16
|
-
baseURL: baseUrl,
|
|
17
|
-
trace: "on-first-retry",
|
|
18
|
-
},
|
|
19
|
-
projects: [
|
|
20
|
-
{
|
|
21
|
-
name: "chromium",
|
|
22
|
-
use: { ...devices["Desktop Chrome"] },
|
|
23
|
-
},
|
|
24
|
-
],
|
|
25
|
-
webServer: {
|
|
26
|
-
command: "npm run prod",
|
|
27
|
-
url: baseUrl,
|
|
28
|
-
reuseExistingServer: true,
|
|
29
|
-
timeout: 120000,
|
|
30
|
-
env: {
|
|
31
|
-
NODE_ENV: "test",
|
|
32
|
-
},
|
|
33
|
-
},
|
|
34
|
-
});
|
|
1
|
+
import { playwrightConfig } from "@fernir2/saas-kit";
|
|
2
|
+
import { defineConfig } from "playwright/test";
|
|
3
|
+
|
|
4
|
+
export default defineConfig({
|
|
5
|
+
...playwrightConfig,
|
|
6
|
+
});
|
package/cli/postcss.config.mjs
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export default config;
|
|
1
|
+
const config = {
|
|
2
|
+
plugins: {
|
|
3
|
+
"@tailwindcss/postcss": {},
|
|
4
|
+
},
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
export default config;
|
package/cli/server.ts
CHANGED
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
import { createServer } from "node:http";
|
|
2
|
-
import { parse } from "url";
|
|
3
|
-
import next from "next";
|
|
4
|
-
import {
|
|
5
|
-
checkAndHandleWebSocketRequest,
|
|
6
|
-
initSocket,
|
|
7
|
-
initializeInternalMetaCache,
|
|
8
|
-
} from "@fernir2/saas-kit/server";
|
|
9
|
-
import { envSettingKeys, getNumberEnvSetting, isDev } from "@fernir2/saas-kit";
|
|
10
|
-
|
|
11
|
-
const dev = isDev();
|
|
12
|
-
const port = getNumberEnvSetting(envSettingKeys.fdPort) ?? 3000;
|
|
13
|
-
|
|
14
|
-
const app = next({ dev, port });
|
|
15
|
-
const nextRequestHandler = app.getRequestHandler();
|
|
16
|
-
|
|
17
|
-
async function run() {
|
|
18
|
-
await app.prepare();
|
|
19
|
-
|
|
20
|
-
const httpServer = createServer((req, res) => {
|
|
21
|
-
checkAndHandleWebSocketRequest(req, res);
|
|
22
|
-
|
|
23
|
-
const parsedUrl = parse(req.url!, true);
|
|
24
|
-
nextRequestHandler(req, res, parsedUrl);
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
initSocket(httpServer);
|
|
28
|
-
|
|
29
|
-
httpServer
|
|
30
|
-
.once("error", (err) => {
|
|
31
|
-
console.error(err);
|
|
32
|
-
process.exit(1);
|
|
33
|
-
})
|
|
34
|
-
.listen(port, () => {
|
|
35
|
-
console.log(`> Ready on http://localhost:${port}`);
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
await initializeInternalMetaCache();
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
run();
|
|
1
|
+
import { createServer } from "node:http";
|
|
2
|
+
import { parse } from "url";
|
|
3
|
+
import next from "next";
|
|
4
|
+
import {
|
|
5
|
+
checkAndHandleWebSocketRequest,
|
|
6
|
+
initSocket,
|
|
7
|
+
initializeInternalMetaCache,
|
|
8
|
+
} from "@fernir2/saas-kit/server";
|
|
9
|
+
import { envSettingKeys, getNumberEnvSetting, isDev } from "@fernir2/saas-kit";
|
|
10
|
+
|
|
11
|
+
const dev = isDev();
|
|
12
|
+
const port = getNumberEnvSetting(envSettingKeys.fdPort) ?? 3000;
|
|
13
|
+
|
|
14
|
+
const app = next({ dev, port });
|
|
15
|
+
const nextRequestHandler = app.getRequestHandler();
|
|
16
|
+
|
|
17
|
+
async function run() {
|
|
18
|
+
await app.prepare();
|
|
19
|
+
|
|
20
|
+
const httpServer = createServer((req, res) => {
|
|
21
|
+
checkAndHandleWebSocketRequest(req, res);
|
|
22
|
+
|
|
23
|
+
const parsedUrl = parse(req.url!, true);
|
|
24
|
+
nextRequestHandler(req, res, parsedUrl);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
initSocket(httpServer);
|
|
28
|
+
|
|
29
|
+
httpServer
|
|
30
|
+
.once("error", (err) => {
|
|
31
|
+
console.error(err);
|
|
32
|
+
process.exit(1);
|
|
33
|
+
})
|
|
34
|
+
.listen(port, () => {
|
|
35
|
+
console.log(`> Ready on http://localhost:${port}`);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
await initializeInternalMetaCache();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
run();
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
deleteResourceByIdRoute,
|
|
3
|
-
getResourceByIdRoute,
|
|
4
|
-
putResourceByIdRoute,
|
|
5
|
-
} from "@meta/server/basic-crud/crud-api";
|
|
6
|
-
|
|
7
|
-
export const GET = getResourceByIdRoute;
|
|
8
|
-
|
|
9
|
-
export const PUT = putResourceByIdRoute;
|
|
10
|
-
|
|
11
|
-
export const DELETE = deleteResourceByIdRoute;
|
|
1
|
+
import {
|
|
2
|
+
deleteResourceByIdRoute,
|
|
3
|
+
getResourceByIdRoute,
|
|
4
|
+
putResourceByIdRoute,
|
|
5
|
+
} from "@meta/server/basic-crud/crud-api";
|
|
6
|
+
|
|
7
|
+
export const GET = getResourceByIdRoute;
|
|
8
|
+
|
|
9
|
+
export const PUT = putResourceByIdRoute;
|
|
10
|
+
|
|
11
|
+
export const DELETE = deleteResourceByIdRoute;
|