@fernir2/saas-kit-cli 0.1.40 → 0.1.41-1096
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 +8 -0
- package/base-repo/app-constants/project-paths.js +6 -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-cli-constants.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/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 +635 -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 +23 -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 +23 -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 +15 -15
- package/cli/tsconfig.lint.json +5 -0
- package/cli/tsconfig.server.json +4 -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 -3
- 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/git/constants/git-constants.js +6 -0
- package/level2/cli/bin/index.js +2 -1
- package/level2/cli/create/bin/create.js +19 -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,15 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "@fernir2/saas-kit/cli/configs/tsconfig.cli.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"rootDir": "./",
|
|
5
|
-
"baseUrl": "./",
|
|
6
|
-
"paths": {
|
|
7
|
-
"@/*": ["./src/*"],
|
|
8
|
-
"@
|
|
9
|
-
"@npm-commands/*": ["./npm-commands/*"],
|
|
10
|
-
"@root/*": ["./*"]
|
|
11
|
-
}
|
|
12
|
-
},
|
|
13
|
-
"include": ["next-env.d.ts", "
|
|
14
|
-
"exclude": ["node_modules", "dist", "build", "
|
|
15
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"extends": "@fernir2/saas-kit/cli/configs/tsconfig.cli.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"rootDir": "./",
|
|
5
|
+
"baseUrl": "./",
|
|
6
|
+
"paths": {
|
|
7
|
+
"@/*": ["./src/*"],
|
|
8
|
+
"@generated/*": ["./generated/*"],
|
|
9
|
+
"@npm-commands/*": ["./npm-commands/*"],
|
|
10
|
+
"@root/*": ["./*"]
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"include": ["next-env.d.ts", "./**/*", ".next/types/**/*.ts"],
|
|
14
|
+
"exclude": ["node_modules", "dist", "build", "server.ts"]
|
|
15
|
+
}
|
package/cli/tsconfig.server.json
CHANGED
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "@fernir2/saas-kit/cli/configs/tsconfig.server.json",
|
|
3
|
-
"
|
|
4
|
-
|
|
5
|
-
"baseUrl": "./",
|
|
6
|
-
"paths": {
|
|
7
|
-
"@/*": ["./src/*"],
|
|
8
|
-
"@schemas/*": ["./generated/*"],
|
|
9
|
-
"@npm-commands/*": ["./npm-commands/*"],
|
|
10
|
-
"@root/*": ["./*"]
|
|
11
|
-
}
|
|
12
|
-
},
|
|
13
|
-
"include": ["server.ts"]
|
|
14
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"extends": "@fernir2/saas-kit/cli/configs/tsconfig.server.json",
|
|
3
|
+
"include": ["server.ts"]
|
|
4
|
+
}
|
|
@@ -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=(_0xb5d54b,_0x2040bd)=>__defProp(_0xb5d54b,'name',{'value':_0x2040bd,'configurable':!![]});async function apiGet(_0x1f2bed,_0x8cb282,_0x2b671c,_0x463115){const _0x930898=getApiPath(_0x1f2bed,_0x8cb282,_0x2b671c);return apiBaseGet(_0x930898,getApiHeaders(_0x463115));}__name(apiGet,'apiGet');async function apiGetBlob(_0x274c7e,_0x5c0cce,_0x3e5bc6,_0x24fc01){const _0x483610=getApiPath(_0x274c7e,_0x5c0cce,_0x3e5bc6);return apiBaseGetBlob(_0x483610,getApiHeaders(_0x24fc01,!![]));}__name(apiGetBlob,'apiGetBlob');async function apiGetWithOData(_0x15108b,_0x12524f,_0x15430a){const _0x178f95=getODataParams(_0x12524f);return apiGet(_0x15108b,_0x15430a,_0x178f95);}__name(apiGetWithOData,'apiGetWithOData');async function apiPost(_0x53bae5,_0xf5b2e2,_0x2a922d){const _0x74bec8=getApiPath(_0x53bae5);return postBaseApi(_0x74bec8,_0xf5b2e2,getApiHeaders(_0x2a922d));}__name(apiPost,'apiPost');async function apiPostFile(_0xc2f4b8,_0xe42bdc,_0x25f125){const _0x31ce36=getApiPath(_0xc2f4b8),_0x2fc7ca=await fetch(_0x31ce36,{'method':httpMethods['post'],'body':_0xe42bdc,'headers':getApiHeaders(_0x25f125,!![])});return baseApiHandleResponse(_0x2fc7ca);}__name(apiPostFile,'apiPostFile');async function apiPut(_0x1c6f5a,_0x446653,_0x50d08e){const _0x592bd2=getApiPath(_0x1c6f5a);return putBaseApi(_0x592bd2,_0x446653,getApiHeaders(_0x50d08e));}__name(apiPut,'apiPut');async function apiDelete(_0x25c15d,_0x1d5a62,_0x5c8bf1){const _0xadf66e=getApiPath(_0x25c15d,_0x1d5a62);return deleteBaseApi(_0xadf66e,getApiHeaders(_0x5c8bf1));}__name(apiDelete,'apiDelete');function getApiHeaders(_0x38459b,_0x7e4289=![]){const _0x4b5d0=_0x38459b??new Headers(),_0x74b9f6=getAuthToken();return (!_0x4b5d0['get'](headerNames['authHeaderName'])||_0x4b5d0['get'](headerNames['authHeaderName'])==='')&&_0x74b9f6&&_0x4b5d0['set'](headerNames['authHeaderName'],headerNames['authHeaderValuePrefix']+_0x74b9f6),!_0x7e4289&&!_0x4b5d0['get'](httpContentTypes['contentTypeHeaderName'])&&_0x4b5d0['set'](httpContentTypes['contentTypeHeaderName'],httpContentTypes['contentTypeApplicationJson']),_0x4b5d0;}__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=(_0x1d741e,_0x1fd041)=>__defProp(_0x1d741e,'name',{'value':_0x1fd041,'configurable':!![]});function getApiPath(_0x38372f,_0x16c82b,_0x10ffd8){let _0x30e175=combineEndpointPath(folders['api'],_0x38372f);return _0x16c82b&&(_0x30e175=combineEndpointPath(_0x30e175,_0x16c82b)),_0x30e175=addQueryParamsToPath(_0x30e175,_0x10ffd8),new URL(_0x30e175,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=(_0x45bcfa,_0x31c38b)=>__defProp(_0x45bcfa,'name',{'value':_0x31c38b,'configurable':!![]});async function apiBaseGetResponse(_0x4f0400,_0x53bb6d){const _0x41148d=await fetch(_0x4f0400,_0x53bb6d);return isUnauthorizedError(_0x41148d['status'])&&(removeLoginState(),goToLogin()),_0x41148d;}__name(apiBaseGetResponse,'apiBaseGetResponse');async function apiBaseGet(_0xcf1cac,_0x4a7317){const _0x27db1b=await fetch(_0xcf1cac,{'method':httpMethods['get'],'headers':_0x4a7317});return baseApiHandleResponse(_0x27db1b);}__name(apiBaseGet,'apiBaseGet');async function apiBaseGetBlob(_0x4ad660,_0x785176){const _0x375e4e=await fetch(_0x4ad660,{'method':httpMethods['get'],'headers':_0x785176});return baseApiHandleBlobResponse(_0x375e4e);}__name(apiBaseGetBlob,'apiBaseGetBlob');async function postBaseApi(_0x50f73e,_0x2ab640,_0x24a2b8){const _0x1a0c35=await fetch(_0x50f73e,{'method':httpMethods['post'],'headers':_0x24a2b8,'body':_0x2ab640 instanceof URLSearchParams?_0x2ab640:JSON['stringify'](_0x2ab640)});return baseApiHandleResponse(_0x1a0c35);}__name(postBaseApi,'postBaseApi');async function putBaseApi(_0x1e84fd,_0x123993,_0x56e0ca){const _0x2c4ea2=await fetch(_0x1e84fd,{'method':httpMethods['put'],'headers':_0x56e0ca,'body':JSON['stringify'](_0x123993)});return baseApiHandleResponse(_0x2c4ea2);}__name(putBaseApi,'putBaseApi');async function deleteBaseApi(_0x31f6da,_0x22aad8){const _0x5b1e1d=await fetch(_0x31f6da,{'method':httpMethods['delete'],'headers':_0x22aad8});if(!_0x5b1e1d['ok'])handleErrorResponse(_0x5b1e1d);}__name(deleteBaseApi,'deleteBaseApi');async function baseApiHandleResponse(_0x1b0219){const _0x408b5e=_0x1b0219['headers']['get'](httpContentTypes['contentTypeHeaderName']),_0x20df9b=_0x408b5e?.['includes'](httpContentTypes['contentTypeApplicationJson']);let _0x424dc5;isUnauthorizedError(_0x1b0219['status'])&&(removeLoginState(),goToLogin());if(!_0x1b0219['ok'])_0x424dc5=await handleErrorResponse(_0x1b0219);else _0x1b0219['status']===httpStatusCodes['noContent']||!_0x20df9b?_0x424dc5=void(-0x2622+-0x1d3*0x1+-0x27f5*-0x1):_0x424dc5=await getJsonFromResponse(_0x1b0219);return _0x424dc5;}__name(baseApiHandleResponse,'baseApiHandleResponse');async function baseApiHandleBlobResponse(_0x39548a){let _0x35812f;isUnauthorizedError(_0x39548a['status'])&&goToLogin();if(!_0x39548a['ok'])_0x35812f=await handleErrorResponse(_0x39548a);else _0x39548a['status']===httpStatusCodes['noContent']?_0x35812f=void(-0x110a*-0x1+-0x8a1+0x1*-0x869):_0x35812f=await _0x39548a['blob']();return _0x35812f;}__name(baseApiHandleBlobResponse,'baseApiHandleBlobResponse');async function handleErrorResponse(_0x264c33){const _0x3c3536=_0x264c33['headers']['get'](httpContentTypes['contentTypeHeaderName']),_0x57bd5f=_0x3c3536?.['includes'](httpContentTypes['contentTypeApplicationJson']);let _0x2cd676='',_0x3aea3d='';if(_0x57bd5f){const _0x20d680=await getJsonFromResponse(_0x264c33);_0x2cd676=_0x20d680?.['message'],_0x3aea3d=_0x20d680?.['description']||'';}_0x2cd676=_0x2cd676?_0x2cd676:_0x264c33['statusText'];const _0x4945ec={'status':_0x264c33['status'],'message':_0x2cd676},_0x2ebc69={'originalUrl':_0x264c33['url']};return _0x264c33['status']!==httpStatusCodes['unauthorized']&&logAndNotify(new Error(_0x2cd676)),getProblemDetails(_0x4945ec,_0x2ebc69,_0x3aea3d);}__name(handleErrorResponse,'handleErrorResponse');function isUnauthorizedError(_0x275afe){return _0x275afe===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=(_0x233606,_0x15946c)=>__defProp(_0x233606,'name',{'value':_0x15946c,'configurable':!![]});const loginStateKey='LoginState',afterLoginRedirectUrlKey='AfterLoginRedirectUrl';function isLoggedIn(){return getLoginState()['loggedIn'];}__name(isLoggedIn,'isLoggedIn');function setLoginState(_0x1d43ff){setLocalStorage(loginStateKey,_0x1d43ff);}__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 _0x1fcb37=(window['location']['pathname']+window['location']['search'])['slice'](0x34+0x5*-0x76d+0x24ee);setSessionStorage(afterLoginRedirectUrlKey,_0x1fcb37);}__name(setAfterLoginRedirectUrl,'setAfterLoginRedirectUrl');function removeAfterLoginRedirectUrl(){removeSessionStorage(afterLoginRedirectUrlKey);}__name(removeAfterLoginRedirectUrl,'removeAfterLoginRedirectUrl');function getEmptyLoginState(){const _0x50c900={'email':'','loggedIn':![],'displayName':'','userId':emptyUuid,'imageUrl':'/'+publicImages['user']+'/'+emptyUuid+'.'+fileExtensionsWithoutDot['webp']};return _0x50c900;}__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=(_0x57950c,_0x51c573)=>__defProp(_0x57950c,'name',{'value':_0x51c573,'configurable':!![]});function sessionStorageGetAsString(_0x1c2f3e){if(isBrowser()){const _0x25e153=sessionStorage['getItem'](_0x1c2f3e);return _0x25e153??void(0x3d*0x74+-0x19*-0x6c+-0x4c6*0x8);}return void(0x12fb+-0x191f+0x624);}__name(sessionStorageGetAsString,'sessionStorageGetAsString');function getSessionStorage(_0x53fd1e){const _0x266a63=sessionStorageGetAsString(_0x53fd1e);return _0x266a63?parseJson(_0x266a63):void(-0x21*-0x6f+0x25dd+-0x12*0x2e6);}__name(getSessionStorage,'getSessionStorage');function setSessionStorage(_0x16625d,_0x2d0326){if(_0x2d0326===void(-0xad1+-0x12cb+-0x4*-0x767))return;sessionStorage['setItem'](_0x16625d,JSON['stringify'](_0x2d0326));}__name(setSessionStorage,'setSessionStorage');function removeSessionStorage(_0x424b2b){sessionStorage['removeItem'](_0x424b2b);}__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=(_0x18f99f,_0xafe823)=>__defProp(_0x18f99f,'name',{'value':_0xafe823,'configurable':!![]});const tokenKey='token';function getAuthToken(){return getLocalStorage(tokenKey);}__name(getAuthToken,'getAuthToken');function rememberAuthToken(_0x34e65f){setLocalStorage(tokenKey,_0x34e65f);}__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=-0xbcb*0x3+0x93*0x29+0xbd7;const emptyString='empty';const englishLanguageCode='en-US';const timeZoneNames={'utc':'UTC'};const emptySelectIndex=0x232+-0x10d9+0xea7;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 };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
const headerNames={'authHeaderName':'authorization','authHeaderValuePrefix':'Bearer\x20','shippoAuthPrefix':'ShippoToken\x20','cfAccessTokenHeaderName':'cf-access-token','xStorageBucket':'x-storage-bucket','cacheControl':'Cache-Control','eTag':'ETag'};const httpContentTypes={'contentTypeApplicationForm':'application/x-www-form-urlencoded','contentTypeApplicationJson':'application/json','contentTypeHeaderName':'content-type','
|
|
2
|
+
const headerNames={'authHeaderName':'authorization','authHeaderValuePrefix':'Bearer\x20','shippoAuthPrefix':'ShippoToken\x20','cfAccessTokenHeaderName':'cf-access-token','xStorageBucket':'x-storage-bucket','cacheControl':'Cache-Control','eTag':'ETag','accept':'Accept'};const httpContentTypes={'contentTypeApplicationForm':'application/x-www-form-urlencoded','contentTypeApplicationJson':'application/json','contentTypeHeaderName':'content-type','contentTypeHeaderOctetStream':'application/octet-stream','contentTypeXFileName':'x-file-name','contentTypeDisposition':'Content-Disposition','contentTypeMultipartFormData':'multipart/form-data'};
|
|
3
3
|
|
|
4
4
|
export { headerNames, httpContentTypes };
|