@fernir2/saas-kit-cli 0.1.40 → 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 -453
- 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 -57
- 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 -35
- 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 -12
- 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 +49 -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 -23
- 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,130 +1,130 @@
|
|
|
1
|
-
div.ql-toolbar.ql-snow {
|
|
2
|
-
padding: 0.5rem 0.75rem;
|
|
3
|
-
border-top-right-radius: var(--radius);
|
|
4
|
-
border-top-left-radius: var(--radius);
|
|
5
|
-
border: 1px solid hsl(var(--border));
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
.ql-toolbar.ql-snow .ql-picker-label {
|
|
9
|
-
padding-left: 0;
|
|
10
|
-
border: none;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
.ql-toolbar.ql-snow .ql-picker-label::before {
|
|
14
|
-
font-family: "__GeistSans_3a0388", serif;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
.ql-editor {
|
|
18
|
-
font-size: 14px;
|
|
19
|
-
padding: 10px 12px;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
div.ql-container.ql-snow {
|
|
23
|
-
height: max-content;
|
|
24
|
-
border: 1px solid hsl(var(--border));
|
|
25
|
-
border-bottom-right-radius: var(--radius);
|
|
26
|
-
border-bottom-left-radius: var(--radius);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.ql-tooltip {
|
|
30
|
-
display: none;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {
|
|
34
|
-
z-index: 11;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
.ql-picker-label,
|
|
38
|
-
.ql-picker-label .ql-stroke {
|
|
39
|
-
color: hsl(var(--popover-foreground));
|
|
40
|
-
stroke: hsl(var(--popover-foreground));
|
|
41
|
-
fill: hsl(var(--popover-foreground));
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
.ql-toolbar .ql-formats button {
|
|
45
|
-
color: hsl(var(--popover-foreground));
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
.ql-toolbar .ql-formats button .ql-stroke {
|
|
49
|
-
stroke: hsl(var(--popover-foreground));
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
.ql-toolbar .ql-formats button .ql-fill {
|
|
53
|
-
fill: hsl(var(--popover-foreground));
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
.ql-toolbar .ql-active,
|
|
57
|
-
.ql-toolbar .ql-active .ql-stroke,
|
|
58
|
-
.ql-toolbar .ql-active .ql-fill {
|
|
59
|
-
color: hsl(var(--popover-foreground));
|
|
60
|
-
fill: none;
|
|
61
|
-
stroke: none;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
.ql-snow .ql-picker {
|
|
65
|
-
font-weight: 400;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
.ql-editor.ql-blank::before {
|
|
69
|
-
left: 12px;
|
|
70
|
-
right: 12px;
|
|
71
|
-
color: hsl(var(--muted-foreground));
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
.ql-toolbar .ql-formats button:hover .ql-stroke,
|
|
75
|
-
.ql-toolbar .ql-picker .ql-picker-label:hover .ql-stroke,
|
|
76
|
-
.ql-toolbar .ql-picker .ql-picker-label.ql-active .ql-stroke,
|
|
77
|
-
.ql-toolbar .ql-formats button.ql-active .ql-stroke {
|
|
78
|
-
stroke: hsl(var(--foreground));
|
|
79
|
-
stroke-width: 2;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
.ql-toolbar .ql-formats button:hover .ql-fill,
|
|
83
|
-
.ql-toolbar .ql-formats button.ql-active .ql-fill {
|
|
84
|
-
fill: hsl(var(--foreground));
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
.ql-toolbar .ql-picker .ql-picker-label:hover::before,
|
|
88
|
-
.ql-toolbar .ql-picker .ql-picker-label.ql-active::before,
|
|
89
|
-
.ql-picker .ql-picker-options .ql-picker-item.ql-selected::before {
|
|
90
|
-
color: hsl(var(--foreground));
|
|
91
|
-
font-weight: 600;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
.ql-snow .ql-picker-options .ql-picker-item:hover {
|
|
95
|
-
border-radius: 0.375rem;
|
|
96
|
-
background: hsl(var(--muted) / 0.5);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
.ql-toolbar .ql-formats button .ql-stroke,
|
|
100
|
-
.ql-toolbar .ql-picker .ql-picker-label .ql-stroke {
|
|
101
|
-
stroke: hsl(var(--foreground));
|
|
102
|
-
stroke-width: 1.2;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
.ql-toolbar .ql-formats button .ql-fill {
|
|
106
|
-
fill: hsl(var(--foreground));
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
.ql-toolbar .ql-picker .ql-picker-label::before,
|
|
110
|
-
.ql-picker .ql-picker-options .ql-picker-item::before {
|
|
111
|
-
color: hsl(var(--foreground));
|
|
112
|
-
font-weight: 400;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {
|
|
116
|
-
min-width: 12rem;
|
|
117
|
-
z-index: 50;
|
|
118
|
-
margin-right: 1rem;
|
|
119
|
-
border-radius: 0.375rem;
|
|
120
|
-
background-color: hsl(var(--background));
|
|
121
|
-
border: 1px solid hsl(var(--border));
|
|
122
|
-
box-shadow: 0rem 0rem 0.1rem 0.01rem hsl(var(--fd-toolbar-shadow));
|
|
123
|
-
outline: none;
|
|
124
|
-
pointer-events: auto;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
.ql-snow .ql-picker-options .ql-picker-item {
|
|
128
|
-
width: 100%;
|
|
129
|
-
padding: 0.5rem 0.75rem;
|
|
130
|
-
}
|
|
1
|
+
div.ql-toolbar.ql-snow {
|
|
2
|
+
padding: 0.5rem 0.75rem;
|
|
3
|
+
border-top-right-radius: var(--radius);
|
|
4
|
+
border-top-left-radius: var(--radius);
|
|
5
|
+
border: 1px solid hsl(var(--border));
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.ql-toolbar.ql-snow .ql-picker-label {
|
|
9
|
+
padding-left: 0;
|
|
10
|
+
border: none;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.ql-toolbar.ql-snow .ql-picker-label::before {
|
|
14
|
+
font-family: "__GeistSans_3a0388", serif;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.ql-editor {
|
|
18
|
+
font-size: 14px;
|
|
19
|
+
padding: 10px 12px;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
div.ql-container.ql-snow {
|
|
23
|
+
height: max-content;
|
|
24
|
+
border: 1px solid hsl(var(--border));
|
|
25
|
+
border-bottom-right-radius: var(--radius);
|
|
26
|
+
border-bottom-left-radius: var(--radius);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.ql-tooltip {
|
|
30
|
+
display: none;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {
|
|
34
|
+
z-index: 11;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.ql-picker-label,
|
|
38
|
+
.ql-picker-label .ql-stroke {
|
|
39
|
+
color: hsl(var(--popover-foreground));
|
|
40
|
+
stroke: hsl(var(--popover-foreground));
|
|
41
|
+
fill: hsl(var(--popover-foreground));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.ql-toolbar .ql-formats button {
|
|
45
|
+
color: hsl(var(--popover-foreground));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.ql-toolbar .ql-formats button .ql-stroke {
|
|
49
|
+
stroke: hsl(var(--popover-foreground));
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.ql-toolbar .ql-formats button .ql-fill {
|
|
53
|
+
fill: hsl(var(--popover-foreground));
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.ql-toolbar .ql-active,
|
|
57
|
+
.ql-toolbar .ql-active .ql-stroke,
|
|
58
|
+
.ql-toolbar .ql-active .ql-fill {
|
|
59
|
+
color: hsl(var(--popover-foreground));
|
|
60
|
+
fill: none;
|
|
61
|
+
stroke: none;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.ql-snow .ql-picker {
|
|
65
|
+
font-weight: 400;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.ql-editor.ql-blank::before {
|
|
69
|
+
left: 12px;
|
|
70
|
+
right: 12px;
|
|
71
|
+
color: hsl(var(--muted-foreground));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.ql-toolbar .ql-formats button:hover .ql-stroke,
|
|
75
|
+
.ql-toolbar .ql-picker .ql-picker-label:hover .ql-stroke,
|
|
76
|
+
.ql-toolbar .ql-picker .ql-picker-label.ql-active .ql-stroke,
|
|
77
|
+
.ql-toolbar .ql-formats button.ql-active .ql-stroke {
|
|
78
|
+
stroke: hsl(var(--foreground));
|
|
79
|
+
stroke-width: 2;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.ql-toolbar .ql-formats button:hover .ql-fill,
|
|
83
|
+
.ql-toolbar .ql-formats button.ql-active .ql-fill {
|
|
84
|
+
fill: hsl(var(--foreground));
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.ql-toolbar .ql-picker .ql-picker-label:hover::before,
|
|
88
|
+
.ql-toolbar .ql-picker .ql-picker-label.ql-active::before,
|
|
89
|
+
.ql-picker .ql-picker-options .ql-picker-item.ql-selected::before {
|
|
90
|
+
color: hsl(var(--foreground));
|
|
91
|
+
font-weight: 600;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.ql-snow .ql-picker-options .ql-picker-item:hover {
|
|
95
|
+
border-radius: 0.375rem;
|
|
96
|
+
background: hsl(var(--muted) / 0.5);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.ql-toolbar .ql-formats button .ql-stroke,
|
|
100
|
+
.ql-toolbar .ql-picker .ql-picker-label .ql-stroke {
|
|
101
|
+
stroke: hsl(var(--foreground));
|
|
102
|
+
stroke-width: 1.2;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.ql-toolbar .ql-formats button .ql-fill {
|
|
106
|
+
fill: hsl(var(--foreground));
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.ql-toolbar .ql-picker .ql-picker-label::before,
|
|
110
|
+
.ql-picker .ql-picker-options .ql-picker-item::before {
|
|
111
|
+
color: hsl(var(--foreground));
|
|
112
|
+
font-weight: 400;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {
|
|
116
|
+
min-width: 12rem;
|
|
117
|
+
z-index: 50;
|
|
118
|
+
margin-right: 1rem;
|
|
119
|
+
border-radius: 0.375rem;
|
|
120
|
+
background-color: hsl(var(--background));
|
|
121
|
+
border: 1px solid hsl(var(--border));
|
|
122
|
+
box-shadow: 0rem 0rem 0.1rem 0.01rem hsl(var(--fd-toolbar-shadow));
|
|
123
|
+
outline: none;
|
|
124
|
+
pointer-events: auto;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.ql-snow .ql-picker-options .ql-picker-item {
|
|
128
|
+
width: 100%;
|
|
129
|
+
padding: 0.5rem 0.75rem;
|
|
130
|
+
}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
FD_EMAIL_SERVICE_URL=
|
|
10
|
-
FD_EMAIL_SERVICE_KEY=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
|
|
11
|
-
|
|
12
|
-
NODE_OPTIONS="--import=tsx"
|
|
1
|
+
FD_DATABASE_CONNECTION_STRING="postgresql://postgres:root@localhost:5432/saas-kit"
|
|
2
|
+
|
|
3
|
+
NEXT_PUBLIC_FD_SEED_DEMO_RESOURCES=true
|
|
4
|
+
FD_SEED_DEV_RESOURCES=true
|
|
5
|
+
|
|
6
|
+
FD_SENDER_EMAIL=
|
|
7
|
+
FD_EMAIL_SERVICE_URL=
|
|
8
|
+
FD_EMAIL_SERVICE_KEY=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
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
|
2
|
+
|
|
3
|
+
# dependencies
|
|
4
|
+
node_modules/
|
|
5
|
+
|
|
6
|
+
# testing
|
|
7
|
+
test-results/
|
|
8
|
+
playwright-report/
|
|
9
|
+
blob-report/
|
|
10
|
+
playwright/.cache/
|
|
11
|
+
|
|
12
|
+
# next.js
|
|
13
|
+
.next/
|
|
14
|
+
|
|
15
|
+
# production
|
|
16
|
+
build/
|
|
17
|
+
dist/
|
|
18
|
+
|
|
19
|
+
# node.js compile cache
|
|
20
|
+
.node_cache/
|
|
21
|
+
|
|
22
|
+
# misc
|
|
23
|
+
.DS_Store
|
|
24
|
+
*.pem
|
|
25
|
+
|
|
26
|
+
# debug
|
|
27
|
+
npm-debug.log*
|
|
28
|
+
pnpm-debug.log*
|
|
29
|
+
|
|
30
|
+
# env files
|
|
31
|
+
.env
|
|
32
|
+
.env*.local
|
|
33
|
+
|
|
34
|
+
# vercel
|
|
35
|
+
.vercel/
|
|
36
|
+
|
|
37
|
+
# typescript
|
|
38
|
+
*.tsbuildinfo
|
|
39
|
+
next-env.d.ts
|
|
40
|
+
|
|
41
|
+
# generated
|
|
42
|
+
generated/
|
|
43
|
+
tsconfig.resources.json
|
|
44
|
+
server/content/
|
|
45
|
+
|
|
46
|
+
# editor directories and files
|
|
47
|
+
.idea
|
|
48
|
+
.suo
|
|
49
|
+
.ntvs*
|
|
50
|
+
.njsproj
|
|
51
|
+
.sln
|
|
52
|
+
.sw?
|
|
53
|
+
.vs
|
|
54
|
+
.vscode/
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { test as base, PlaywrightTestArgs, PlaywrightWorkerArgs, TestType } from "playwright/test";
|
|
2
|
+
import { testScope } from "@fernir2/saas-kit/test";
|
|
3
|
+
import { initSaasKit } from "@/app/init-saas-kit";
|
|
4
|
+
|
|
5
|
+
export type WorkerArgs = PlaywrightWorkerArgs & { metaInitialized: void };
|
|
6
|
+
export type TestArgs = PlaywrightTestArgs;
|
|
7
|
+
|
|
8
|
+
export const test: TestType<TestArgs, WorkerArgs> = base.extend({
|
|
9
|
+
metaInitialized: [
|
|
10
|
+
// Approved
|
|
11
|
+
// eslint-disable-next-line no-empty-pattern
|
|
12
|
+
async ({}, use: () => Promise<void>) => {
|
|
13
|
+
initSaasKit();
|
|
14
|
+
await use();
|
|
15
|
+
},
|
|
16
|
+
{ scope: testScope.workerScope, auto: true },
|
|
17
|
+
],
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
export const expect = test.expect;
|
package/cli/test/global-setup.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
-
import { playwrightGlobalSetup } from "@fernir2/saas-kit";
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { playwrightGlobalSetup } from "@fernir2/saas-kit/test";
|
|
2
|
+
import { initSaasKit } from "@/app/init-saas-kit";
|
|
3
|
+
|
|
4
|
+
export default async function globalSetup() {
|
|
5
|
+
initSaasKit();
|
|
6
|
+
await playwrightGlobalSetup();
|
|
7
|
+
}
|
package/cli/tsconfig.json
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "@fernir2/saas-kit/cli/configs/tsconfig.cli.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"rootDir": "./",
|
|
5
|
-
"baseUrl": "./",
|
|
6
|
-
"paths": {
|
|
7
|
-
"@/*": ["./src/*"],
|
|
8
|
-
"@schemas
|
|
9
|
-
"@
|
|
10
|
-
"@
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
"
|
|
15
|
-
|
|
1
|
+
{
|
|
2
|
+
"extends": "@fernir2/saas-kit/cli/configs/tsconfig.cli.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"rootDir": "./",
|
|
5
|
+
"baseUrl": "./",
|
|
6
|
+
"paths": {
|
|
7
|
+
"@/*": ["./src/*"],
|
|
8
|
+
"@schemas/crud-handler-map": ["./generated/meta/crud-handler-map.ts"],
|
|
9
|
+
"@schemas/*": ["./generated/*"],
|
|
10
|
+
"@npm-commands/*": ["./npm-commands/*"],
|
|
11
|
+
"@root/*": ["./*"]
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"include": ["next-env.d.ts", "global.d.ts", "./**/*", ".next/types/**/*.ts"],
|
|
15
|
+
"exclude": ["node_modules", "dist", "build", ".next", "server.ts"]
|
|
16
|
+
}
|
package/cli/tsconfig.server.json
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "@fernir2/saas-kit/cli/configs/tsconfig.server.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"rootDir": "./",
|
|
5
|
-
"baseUrl": "./",
|
|
6
|
-
"paths": {
|
|
7
|
-
"@/*": ["./src/*"],
|
|
8
|
-
"@schemas
|
|
9
|
-
"@
|
|
10
|
-
"@
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
{
|
|
2
|
+
"extends": "@fernir2/saas-kit/cli/configs/tsconfig.server.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"rootDir": "./",
|
|
5
|
+
"baseUrl": "./",
|
|
6
|
+
"paths": {
|
|
7
|
+
"@/*": ["./src/*"],
|
|
8
|
+
"@schemas/crud-handler-map": ["./generated/meta/crud-handler-map.ts"],
|
|
9
|
+
"@schemas/*": ["./generated/*"],
|
|
10
|
+
"@npm-commands/*": ["./npm-commands/*"],
|
|
11
|
+
"@root/*": ["./*"]
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"include": ["server.ts"]
|
|
15
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
import { apiBaseGet, apiBaseGetBlob, postBaseApi, baseApiHandleResponse, putBaseApi, deleteBaseApi } from './base-api.js';
|
|
3
3
|
import { getApiPath } from './api-paths.js';
|
|
4
|
-
import { getODataParams } from '../odata/
|
|
4
|
+
import { getODataParams } from '../odata/odata.js';
|
|
5
5
|
import { getAuthToken } from '../auth/tokens.js';
|
|
6
6
|
import { headerNames, httpContentTypes } from '../constants/header-names.js';
|
|
7
|
-
import { httpMethods } from '
|
|
7
|
+
import { httpMethods } from '../../base-repo/constants/http-methods.js';
|
|
8
8
|
|
|
9
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
9
|
+
var __defProp=Object['defineProperty'],__name=(_0xa1032b,_0xe1c4e)=>__defProp(_0xa1032b,'name',{'value':_0xe1c4e,'configurable':!![]});async function apiGet(_0x78d6f6,_0x2b95d2,_0x10a42e,_0x21876f){const _0x2c339d=getApiPath(_0x78d6f6,_0x2b95d2,_0x10a42e);return apiBaseGet(_0x2c339d,getApiHeaders(_0x21876f));}__name(apiGet,'apiGet');async function apiGetBlob(_0x10a87d,_0x5be66f,_0x3bd33c,_0x2fc244){const _0x1c42b7=getApiPath(_0x10a87d,_0x5be66f,_0x3bd33c);return apiBaseGetBlob(_0x1c42b7,getApiHeaders(_0x2fc244,!![]));}__name(apiGetBlob,'apiGetBlob');async function apiGetWithOData(_0x2def35,_0x4a622d,_0x3179c2){const _0x41c1b5=getODataParams(_0x4a622d);return apiGet(_0x2def35,_0x3179c2,_0x41c1b5);}__name(apiGetWithOData,'apiGetWithOData');async function apiPost(_0x40a583,_0xe83ac,_0x357bc8){const _0x20d0c0=getApiPath(_0x40a583);return postBaseApi(_0x20d0c0,_0xe83ac,getApiHeaders(_0x357bc8));}__name(apiPost,'apiPost');async function apiPostFile(_0x33592a,_0x5b10c9,_0x587bd0){const _0x20b905=getApiPath(_0x33592a),_0x5c154d=await fetch(_0x20b905,{'method':httpMethods['post'],'body':_0x5b10c9,'headers':getApiHeaders(_0x587bd0,!![])});return baseApiHandleResponse(_0x5c154d);}__name(apiPostFile,'apiPostFile');async function apiPut(_0x232535,_0x30d5ec,_0xc74e19){const _0x308da6=getApiPath(_0x232535);return putBaseApi(_0x308da6,_0x30d5ec,getApiHeaders(_0xc74e19));}__name(apiPut,'apiPut');async function apiDelete(_0x47a1ab,_0x30f2db,_0x19a6ce){const _0x431c71=getApiPath(_0x47a1ab,_0x30f2db);return deleteBaseApi(_0x431c71,getApiHeaders(_0x19a6ce));}__name(apiDelete,'apiDelete');function getApiHeaders(_0x16fcbe,_0x1b6098=![]){const _0x15ef52=_0x16fcbe??new Headers(),_0x214295=getAuthToken();return (!_0x15ef52['get'](headerNames['authHeaderName'])||_0x15ef52['get'](headerNames['authHeaderName'])==='')&&_0x214295&&_0x15ef52['set'](headerNames['authHeaderName'],headerNames['authHeaderValuePrefix']+_0x214295),!_0x1b6098&&!_0x15ef52['get'](httpContentTypes['contentTypeHeaderName'])&&_0x15ef52['set'](httpContentTypes['contentTypeHeaderName'],httpContentTypes['contentTypeApplicationJson']),_0x15ef52;}__name(getApiHeaders,'getApiHeaders');
|
|
10
10
|
|
|
11
11
|
export { apiDelete, apiGet, apiGetBlob, apiGetWithOData, apiPost, apiPostFile, apiPut };
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
import { resourceNames } from '../resources/resource-names.js';
|
|
3
3
|
import { join } from 'path';
|
|
4
|
+
import { apiRoutes } from '../server/constants/api-routes-constants.js';
|
|
5
|
+
import { folders } from '../../base-repo/app-constants/project-paths.js';
|
|
6
|
+
import { contentFormatNames, commonLowerCaseWords, mutationActionNames } from '../../base-repo/constants/internal-common-strings.js';
|
|
4
7
|
|
|
5
|
-
const hint=resourceNames['hint']['toLowerCase'](),subscription=resourceNames['subscription']['toLowerCase'](),payment=resourceNames['payment']['toLowerCase']();const apiPathNames={'hint':hint,'
|
|
8
|
+
const hint=resourceNames['hint']['toLowerCase'](),subscription=resourceNames['subscription']['toLowerCase'](),payment=resourceNames['payment']['toLowerCase']();const apiPathNames={'hint':hint,'uiMetas':'uimetas','uiMeta':'uimeta','login':apiRoutes['accountLogin'],'token':apiRoutes['connectToken'],'logout':apiRoutes['accountLogout'],'getOne':join(hint,'getone'),'user':commonLowerCaseWords['user'],'preLoad':'preload','userPermission':'user-permission','otherUser':'other-user','person':'person','friend':'friend','relation':'relation','log':commonLowerCaseWords['log'],'markdownRender':'markdown/render','forgotPassword':'password/forgot-password','resetPassword':'password/reset-password','editPassword':'password/edit-password','payment':payment,'paymentVerifyFail':join(payment,'verify-fail'),'paymentVerifySuccess':join(payment,'verify-success'),'paymentMethod':join(payment,commonLowerCaseWords['method']),'subscription':subscription,'cancelSubscription':join(subscription,'cancel'),'updateSubscription':join(subscription,mutationActionNames['update']),'createSubscription':join(subscription,folders['createSaasKitApp']),'paymentPlan':'paymentplan','feature':'feature','paymentPlanFeature':'paymentplanfeature','markdown':contentFormatNames['markdown'],'searchResult':'search-result','searchableResource':'searchable-resources','search':commonLowerCaseWords['search'],'blob':contentFormatNames['blob'],'statusBoard':'statusboard','changeWorkspace':'workspace/change','visibleWorkspace':'visible-workspace','testData':'test/data'};
|
|
6
9
|
|
|
7
10
|
export { apiPathNames };
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
import { combineEndpointPath } from '../http/url/urls.js';
|
|
3
3
|
import { addQueryParamsToPath } from '../routing/paths.js';
|
|
4
|
+
import { folders } from '../../base-repo/app-constants/project-paths.js';
|
|
4
5
|
|
|
5
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
6
|
+
var __defProp=Object['defineProperty'],__name=(_0x33280b,_0x33c950)=>__defProp(_0x33280b,'name',{'value':_0x33c950,'configurable':!![]});function getApiPath(_0x193ff2,_0x415c78,_0x3a8abb){let _0x39d8d7=combineEndpointPath(folders['api'],_0x193ff2);return _0x415c78&&(_0x39d8d7=combineEndpointPath(_0x39d8d7,_0x415c78)),_0x39d8d7=addQueryParamsToPath(_0x39d8d7,_0x3a8abb),new URL(_0x39d8d7,getBaseUrl())['href'];}__name(getApiPath,'getApiPath');function getBaseUrl(){return location['protocol']+'//'+location['hostname']+':'+location['port']+'/';}__name(getBaseUrl,'getBaseUrl');
|
|
6
7
|
|
|
7
8
|
export { getApiPath };
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
import { logAndNotify } from '../errors/error-handler.js';
|
|
3
|
-
import { httpMethods } from '
|
|
3
|
+
import { httpMethods } from '../../base-repo/constants/http-methods.js';
|
|
4
4
|
import { getProblemDetails } from '../errors/problem-details.js';
|
|
5
5
|
import { httpStatusCodes } from '../constants/http-status-codes.js';
|
|
6
6
|
import { goToLogin, getRelativeLoginUrl } from '../routing/login-routers.js';
|
|
7
|
-
import { removeLoginState } from '../auth/login-states.js';
|
|
7
|
+
import { removeLoginState } from '../auth/internal-login-states.js';
|
|
8
8
|
import { isBrowser } from '../lib/environments.js';
|
|
9
9
|
import { getJsonFromResponse } from '../lib/utils.js';
|
|
10
|
+
import { httpContentTypes } from '../constants/header-names.js';
|
|
10
11
|
|
|
11
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
12
|
+
var __defProp=Object['defineProperty'],__name=(_0x441ee0,_0x4f5614)=>__defProp(_0x441ee0,'name',{'value':_0x4f5614,'configurable':!![]});async function apiBaseGetResponse(_0x19e943,_0x3d20bb){const _0x5366d1=await fetch(_0x19e943,_0x3d20bb);return isUnauthorizedError(_0x5366d1['status'])&&(removeLoginState(),goToLogin()),_0x5366d1;}__name(apiBaseGetResponse,'apiBaseGetResponse');async function apiBaseGet(_0x24797e,_0xda333e){const _0x103e58=await fetch(_0x24797e,{'method':httpMethods['get'],'headers':_0xda333e});return baseApiHandleResponse(_0x103e58);}__name(apiBaseGet,'apiBaseGet');async function apiBaseGetBlob(_0x1b031b,_0x235513){const _0x4eba2a=await fetch(_0x1b031b,{'method':httpMethods['get'],'headers':_0x235513});return baseApiHandleBlobResponse(_0x4eba2a);}__name(apiBaseGetBlob,'apiBaseGetBlob');async function postBaseApi(_0x3992d9,_0x527f6b,_0xe0d628){const _0xf907e=await fetch(_0x3992d9,{'method':httpMethods['post'],'headers':_0xe0d628,'body':_0x527f6b instanceof URLSearchParams?_0x527f6b:JSON['stringify'](_0x527f6b)});return baseApiHandleResponse(_0xf907e);}__name(postBaseApi,'postBaseApi');async function putBaseApi(_0x185eb7,_0x3d49ec,_0x48d998){const _0x5186cc=await fetch(_0x185eb7,{'method':httpMethods['put'],'headers':_0x48d998,'body':JSON['stringify'](_0x3d49ec)});return baseApiHandleResponse(_0x5186cc);}__name(putBaseApi,'putBaseApi');async function deleteBaseApi(_0x2a9d7e,_0x7fd8b0){const _0x53a029=await fetch(_0x2a9d7e,{'method':httpMethods['delete'],'headers':_0x7fd8b0});if(!_0x53a029['ok'])handleErrorResponse(_0x53a029);}__name(deleteBaseApi,'deleteBaseApi');async function baseApiHandleResponse(_0x4755aa){const _0x17df8b=_0x4755aa['headers']['get'](httpContentTypes['contentTypeHeaderName']),_0x43792d=_0x17df8b?.['includes'](httpContentTypes['contentTypeApplicationJson']);let _0x1ed43d;isUnauthorizedError(_0x4755aa['status'])&&(removeLoginState(),goToLogin());if(!_0x4755aa['ok'])_0x1ed43d=await handleErrorResponse(_0x4755aa);else _0x4755aa['status']===httpStatusCodes['noContent']||!_0x43792d?_0x1ed43d=void(0x2*0x2ad+-0x1d4b+0x17f1):_0x1ed43d=await getJsonFromResponse(_0x4755aa);return _0x1ed43d;}__name(baseApiHandleResponse,'baseApiHandleResponse');async function baseApiHandleBlobResponse(_0x42c3aa){let _0x1b1c78;isUnauthorizedError(_0x42c3aa['status'])&&goToLogin();if(!_0x42c3aa['ok'])_0x1b1c78=await handleErrorResponse(_0x42c3aa);else _0x42c3aa['status']===httpStatusCodes['noContent']?_0x1b1c78=void(-0x1*-0x14b1+-0x1*0x1a49+-0xb3*-0x8):_0x1b1c78=await _0x42c3aa['blob']();return _0x1b1c78;}__name(baseApiHandleBlobResponse,'baseApiHandleBlobResponse');async function handleErrorResponse(_0x342986){const _0x5f3c1a=_0x342986['headers']['get'](httpContentTypes['contentTypeHeaderName']),_0x5a9f42=_0x5f3c1a?.['includes'](httpContentTypes['contentTypeApplicationJson']);let _0x119316='',_0xb317b='';if(_0x5a9f42){const _0x4b6111=await getJsonFromResponse(_0x342986);_0x119316=_0x4b6111?.['message'],_0xb317b=_0x4b6111?.['description']||'';}_0x119316=_0x119316?_0x119316:_0x342986['statusText'];const _0x300c4e={'status':_0x342986['status'],'message':_0x119316},_0x22b5d1={'originalUrl':_0x342986['url']};return _0x342986['status']!==httpStatusCodes['unauthorized']&&logAndNotify(new Error(_0x119316)),getProblemDetails(_0x300c4e,_0x22b5d1,_0xb317b);}__name(handleErrorResponse,'handleErrorResponse');function isUnauthorizedError(_0x32dbb4){return _0x32dbb4===httpStatusCodes['unauthorized']&&isBrowser()&&window['location']['pathname']!==getRelativeLoginUrl();}__name(isUnauthorizedError,'isUnauthorizedError');
|
|
12
13
|
|
|
13
|
-
export { apiBaseGet, apiBaseGetBlob, baseApiHandleBlobResponse, baseApiHandleResponse, deleteBaseApi, handleErrorResponse, postBaseApi, putBaseApi };
|
|
14
|
+
export { apiBaseGet, apiBaseGetBlob, apiBaseGetResponse, baseApiHandleBlobResponse, baseApiHandleResponse, deleteBaseApi, handleErrorResponse, postBaseApi, putBaseApi };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
import {
|
|
2
|
+
import { emptyUuid } from '../constants/constants.js';
|
|
3
3
|
import { setLocalStorage, getLocalStorage, removeLocalStorage } from '../local-storage/local-storage.js';
|
|
4
4
|
import { publicImages } from '../constants/public-files.js';
|
|
5
|
-
import {
|
|
5
|
+
import { fileExtensionsWithoutDot } from '../../base-repo/app-constants/internal-system-constants.js';
|
|
6
6
|
import { getSessionStorage, setSessionStorage, removeSessionStorage } from './session-storage.js';
|
|
7
7
|
|
|
8
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
8
|
+
var __defProp=Object['defineProperty'],__name=(_0x369654,_0x5708ac)=>__defProp(_0x369654,'name',{'value':_0x5708ac,'configurable':!![]});const loginStateKey='LoginState',afterLoginRedirectUrlKey='AfterLoginRedirectUrl';function isLoggedIn(){return getLoginState()['loggedIn'];}__name(isLoggedIn,'isLoggedIn');function setLoginState(_0x28215b){setLocalStorage(loginStateKey,_0x28215b);}__name(setLoginState,'setLoginState');function getLoginState(){return getLocalStorage(loginStateKey)??getEmptyLoginState();}__name(getLoginState,'getLoginState');function removeLoginState(){removeLocalStorage(loginStateKey);}__name(removeLoginState,'removeLoginState');function getAfterLoginRedirectUrl(){return getSessionStorage(afterLoginRedirectUrlKey);}__name(getAfterLoginRedirectUrl,'getAfterLoginRedirectUrl');function setAfterLoginRedirectUrl(){const _0x230e61=(window['location']['pathname']+window['location']['search'])['slice'](-0xf71*-0x1+-0x1b74+0xc04);setSessionStorage(afterLoginRedirectUrlKey,_0x230e61);}__name(setAfterLoginRedirectUrl,'setAfterLoginRedirectUrl');function removeAfterLoginRedirectUrl(){removeSessionStorage(afterLoginRedirectUrlKey);}__name(removeAfterLoginRedirectUrl,'removeAfterLoginRedirectUrl');function getEmptyLoginState(){const _0x1a9fed={'email':'','loggedIn':![],'displayName':'','userId':emptyUuid,'imageUrl':'/'+publicImages['user']+'/'+emptyUuid+'.'+fileExtensionsWithoutDot['webp']};return _0x1a9fed;}__name(getEmptyLoginState,'getEmptyLoginState');
|
|
9
9
|
|
|
10
10
|
export { getAfterLoginRedirectUrl, getLoginState, isLoggedIn, removeAfterLoginRedirectUrl, removeLoginState, setAfterLoginRedirectUrl, setLoginState };
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
import { isBrowser } from '../lib/environments.js';
|
|
3
3
|
import { parseJson } from '../lib/utils.js';
|
|
4
4
|
|
|
5
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
5
|
+
var __defProp=Object['defineProperty'],__name=(_0x1672a3,_0x48642e)=>__defProp(_0x1672a3,'name',{'value':_0x48642e,'configurable':!![]});function sessionStorageGetAsString(_0x19dc73){if(isBrowser()){const _0x1cba86=sessionStorage['getItem'](_0x19dc73);return _0x1cba86??void(0x5e9+-0x210b+0x1b22);}return void(-0xe59*-0x1+-0x67*-0x49+0x577*-0x8);}__name(sessionStorageGetAsString,'sessionStorageGetAsString');function getSessionStorage(_0x47672c){const _0x46f5ed=sessionStorageGetAsString(_0x47672c);return _0x46f5ed?parseJson(_0x46f5ed):void(-0x146f*0x1+-0x2d1+0x1740);}__name(getSessionStorage,'getSessionStorage');function setSessionStorage(_0x3d7e3b,_0x530be3){if(_0x530be3===void(-0x25*-0xb1+0x11*-0x144+-0x3*0x15b))return;sessionStorage['setItem'](_0x3d7e3b,JSON['stringify'](_0x530be3));}__name(setSessionStorage,'setSessionStorage');function removeSessionStorage(_0x2ef022){sessionStorage['removeItem'](_0x2ef022);}__name(removeSessionStorage,'removeSessionStorage');
|
|
6
6
|
|
|
7
7
|
export { getSessionStorage, removeSessionStorage, sessionStorageGetAsString, setSessionStorage };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
import { getLocalStorage, setLocalStorage, removeLocalStorage } from '../local-storage/local-storage.js';
|
|
3
3
|
|
|
4
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
4
|
+
var __defProp=Object['defineProperty'],__name=(_0x2a91f4,_0x115eec)=>__defProp(_0x2a91f4,'name',{'value':_0x115eec,'configurable':!![]});const tokenKey='token';function getAuthToken(){return getLocalStorage(tokenKey);}__name(getAuthToken,'getAuthToken');function rememberAuthToken(_0x182533){setLocalStorage(tokenKey,_0x182533);}__name(rememberAuthToken,'rememberAuthToken');function forgetAuthToken(){removeLocalStorage(tokenKey);}__name(forgetAuthToken,'forgetAuthToken');
|
|
5
5
|
|
|
6
6
|
export { forgetAuthToken, getAuthToken, rememberAuthToken, tokenKey };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
import { fileExtensionsWithoutDot } from '../../base-repo/app-constants/internal-system-constants.js';
|
|
3
|
+
import { commonLowerCaseWords } from '../../base-repo/constants/internal-common-strings.js';
|
|
4
|
+
|
|
5
|
+
const wellKnownUserProps={'name':commonLowerCaseWords['name'],'firstName':'firstName','lastName':'lastName','country':'country','email':'email','phoneNumber':'phoneNumber','password':'password','confirmPassword':'confirmPassword','repeatPassword':'repeatPassword','currentPassword':'currentPassword','newPassword':'newPassword','zip':fileExtensionsWithoutDot['zip'],'isDisabled':'isDisabled','openid':'openid','profile':commonLowerCaseWords['profile'],'picture':commonLowerCaseWords['picture']};
|
|
6
|
+
|
|
7
|
+
export { wellKnownUserProps };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
const
|
|
2
|
+
const emptyUuid='00000000-0000-0000-0000-000000000000';const minHintPriorityValue=0x526+0x101*0x1d+0x1121*-0x2;const emptyString='empty';const englishLanguageCode='en-US';const timeZoneNames={'utc':'UTC'};const emptySelectIndex=-0xc05*-0x3+0x14*0x1a3+0x1*-0x44cb;const fieldValuesSeparator=',\x20';const noName='No\x20name';const commonStrings={'deleteString':'Delete','editString':'Edit'};
|
|
3
3
|
|
|
4
|
-
export {
|
|
4
|
+
export { commonStrings, emptySelectIndex, emptyString, emptyUuid, englishLanguageCode, fieldValuesSeparator, minHintPriorityValue, noName, timeZoneNames };
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
|
|
2
|
+
import { folders } from '../../base-repo/app-constants/project-paths.js';
|
|
3
|
+
import { resourceFolders } from './resource-folders.js';
|
|
4
|
+
|
|
5
|
+
const appEnvironments={'development':'development','production':'production','test':folders['test'],'staging':'staging','demo':resourceFolders['demo']};const launchMode={'direct':'direct','proxy':'proxy'};
|
|
3
6
|
|
|
4
7
|
export { appEnvironments, launchMode };
|