@fernir2/saas-kit-cli 0.1.39 → 0.1.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/base-repo/app-constants/alias-symbols.js +2 -2
  2. package/base-repo/app-constants/aliases.js +3 -1
  3. package/base-repo/app-constants/app-packages-names.js +4 -0
  4. package/base-repo/app-constants/command-names.js +4 -0
  5. package/base-repo/app-constants/internal-system-constants.js +9 -0
  6. package/base-repo/app-constants/project-paths.js +5 -3
  7. package/base-repo/constants/basic-types.js +4 -0
  8. package/base-repo/constants/ci-constants.js +7 -0
  9. package/base-repo/constants/http-constants.js +4 -0
  10. package/base-repo/constants/http-methods.js +6 -0
  11. package/base-repo/constants/internal-common-strings.js +4 -0
  12. package/base-repo/constants/internal-extensions.js +6 -0
  13. package/base-repo/constants/packages.js +1 -1
  14. package/base-repo/constants/push-statuses.js +4 -0
  15. package/base-repo/constants/strings-constants.js +4 -0
  16. package/base-repo/constants/tools-constants.js +6 -0
  17. package/base-repo/constants/type-string-values.js +4 -0
  18. package/base-repo/process.js +4 -0
  19. package/cli/.env.example +8 -61
  20. package/cli/.prettierignore +15 -0
  21. package/cli/.prettierrc.json +8 -0
  22. package/cli/README.md +3 -3
  23. package/cli/bin/create.ts +630 -450
  24. package/cli/configs/drizzle-cli-config.ts +16 -15
  25. package/cli/configs/next-cli-config.ts +44 -78
  26. package/cli/configs/playwright-cli-config.ts +45 -35
  27. package/cli/configs/tsconfig.cli.json +35 -35
  28. package/cli/configs/tsconfig.server.json +13 -13
  29. package/cli/drizzle.config.ts +6 -6
  30. package/cli/next.config.js +5 -3
  31. package/cli/npm-commands/gen-meta.ts +9 -3
  32. package/cli/npm-commands/gen-schema.ts +3 -3
  33. package/cli/npm-commands/migrate-db.ts +17 -15
  34. package/cli/npm-commands/seed-db.ts +17 -15
  35. package/cli/package-template.json +54 -60
  36. package/cli/playwright.config.ts +6 -6
  37. package/cli/postcss.config.mjs +7 -7
  38. package/cli/public/handle.svg +23 -0
  39. package/cli/public/images/login-image-dark.webp +0 -0
  40. package/cli/public/images/login-image.webp +0 -0
  41. package/cli/public/images/logo.webp +0 -0
  42. package/cli/public/images/no-image.webp +0 -0
  43. package/cli/public/images/profile.webp +0 -0
  44. package/cli/public/images/search-not-found-result.webp +0 -0
  45. package/cli/public/logo.svg +1 -0
  46. package/cli/server.ts +48 -40
  47. package/cli/src/app/api/v1/(f)/[resourceName]/[id]/route.ts +18 -11
  48. package/cli/src/app/api/v1/(f)/[resourceName]/route.ts +23 -14
  49. package/cli/src/app/api/v1/(f)/[resourceName]/upsert/route.ts +6 -3
  50. package/cli/src/app/api/v1/(f)/blob/route.ts +14 -7
  51. package/cli/src/app/api/v1/(f)/log/route.ts +14 -7
  52. package/cli/src/app/api/v1/(f)/markdown/route.ts +6 -0
  53. package/cli/src/app/api/v1/(f)/other-user/[id]/route.ts +23 -14
  54. package/cli/src/app/api/v1/(f)/other-user/route.ts +14 -7
  55. package/cli/src/app/api/v1/(f)/password/forgot-password/route.ts +6 -3
  56. package/cli/src/app/api/v1/(f)/password/reset-password/route.ts +6 -3
  57. package/cli/src/app/api/v1/(f)/payment/method/route.ts +9 -4
  58. package/cli/src/app/api/v1/(f)/payment/route.ts +6 -3
  59. package/cli/src/app/api/v1/(f)/payment/verify-fail/route.ts +6 -3
  60. package/cli/src/app/api/v1/(f)/payment/verify-success/route.ts +6 -3
  61. package/cli/src/app/api/v1/(f)/search-result/route.ts +6 -3
  62. package/cli/src/app/api/v1/(f)/searchable-resources/route.ts +6 -3
  63. package/cli/src/app/api/v1/(f)/sign-in/route.ts +6 -3
  64. package/cli/src/app/api/v1/(f)/sign-out/route.ts +6 -3
  65. package/cli/src/app/api/v1/(f)/sign-up/route.ts +6 -3
  66. package/cli/src/app/api/v1/(f)/subscription/cancel/route.ts +6 -3
  67. package/cli/src/app/api/v1/(f)/subscription/create/route.ts +6 -3
  68. package/cli/src/app/api/v1/(f)/subscription/update/route.ts +6 -3
  69. package/cli/src/app/api/v1/(f)/uimeta/route.ts +6 -3
  70. package/cli/src/app/api/v1/(f)/uimetas/route.ts +6 -3
  71. package/cli/src/app/api/v1/(f)/user-feature/isenabled/route.ts +6 -3
  72. package/cli/src/app/api/v1/(f)/user-permission/route.ts +6 -3
  73. package/cli/src/app/api/v1/(f)/visible-workspace/route.ts +10 -5
  74. package/cli/src/app/api/v1/(f)/workspace/change/route.ts +10 -5
  75. package/cli/src/app/f/(not-signed-in)/edit-password/page.tsx +8 -8
  76. package/cli/src/app/f/(not-signed-in)/forgot-password/page.tsx +13 -13
  77. package/cli/src/app/f/(not-signed-in)/reset-password/page.tsx +11 -11
  78. package/cli/src/app/f/(not-signed-in)/sign-in/microsoft/page.tsx +8 -8
  79. package/cli/src/app/f/(not-signed-in)/sign-in/page.tsx +13 -13
  80. package/cli/src/app/f/(not-signed-in)/sign-up/page.tsx +13 -13
  81. package/cli/src/app/f/(signed-in)/dashboard/page.tsx +8 -8
  82. package/cli/src/app/f/(signed-in)/dynamiclayout/page.tsx +8 -8
  83. package/cli/src/app/f/(signed-in)/edituser/[id]/page.tsx +8 -8
  84. package/cli/src/app/f/(signed-in)/edituser/page.tsx +8 -8
  85. package/cli/src/app/f/(signed-in)/layout.tsx +5 -5
  86. package/cli/src/app/f/(signed-in)/payment-plans/page.tsx +8 -8
  87. package/cli/src/app/f/(signed-in)/statusboard/page.tsx +8 -8
  88. package/cli/src/app/f/(signed-in)/userlist/page.tsx +8 -8
  89. package/cli/src/app/f/(signed-in)/view/page.tsx +27 -9
  90. package/cli/src/app/f/api-docs/page.tsx +15 -15
  91. package/cli/src/app/globals.css +1 -1
  92. package/cli/src/app/http-wrappers.ts +19 -0
  93. package/cli/src/app/init-saas-kit.ts +12 -0
  94. package/cli/src/app/layout.tsx +43 -37
  95. package/cli/src/app/page.tsx +9 -9
  96. package/cli/src/app/styles/common.css +75 -71
  97. package/cli/src/app/styles/rich-text-editor.css +130 -130
  98. package/cli/templates/.env-template +8 -0
  99. package/cli/templates/gitignore-template +54 -0
  100. package/cli/test/custom-test.ts +20 -0
  101. package/cli/test/global-setup.ts +7 -3
  102. package/cli/test/global-teardown.ts +7 -0
  103. package/cli/tsconfig.json +16 -15
  104. package/cli/tsconfig.lint.json +5 -0
  105. package/cli/tsconfig.server.json +15 -14
  106. package/fd-toolbox/api/api-client.js +3 -3
  107. package/fd-toolbox/api/api-path-names.js +4 -1
  108. package/fd-toolbox/api/api-paths.js +2 -1
  109. package/fd-toolbox/api/base-api.js +5 -4
  110. package/fd-toolbox/auth/{login-states.js → internal-login-states.js} +3 -3
  111. package/fd-toolbox/auth/session-storage.js +1 -1
  112. package/fd-toolbox/auth/tokens.js +1 -1
  113. package/fd-toolbox/constants/common-user-fields.js +7 -0
  114. package/fd-toolbox/constants/constants.js +2 -2
  115. package/fd-toolbox/constants/environment-constants.js +4 -1
  116. package/fd-toolbox/constants/header-names.js +1 -1
  117. package/fd-toolbox/constants/meta-query-params.js +4 -1
  118. package/fd-toolbox/constants/odata-query-params.js +7 -0
  119. package/fd-toolbox/constants/public-files.js +5 -3
  120. package/fd-toolbox/constants/resource-folders.js +4 -0
  121. package/fd-toolbox/constants/toolbox-error-messages-constants.js +4 -0
  122. package/fd-toolbox/enums/enums.js +5 -2
  123. package/fd-toolbox/errors/error-handler.js +2 -2
  124. package/fd-toolbox/errors/error-statuses.js +4 -1
  125. package/fd-toolbox/errors/errors.js +1 -1
  126. package/fd-toolbox/errors/problem-details.js +4 -2
  127. package/fd-toolbox/functions/value-checking-functions.js +5 -3
  128. package/fd-toolbox/http/url/urls.js +4 -3
  129. package/fd-toolbox/infra/env-config.js +2 -2
  130. package/fd-toolbox/infra/env-functions.js +6 -4
  131. package/fd-toolbox/infra/env-schema.js +2 -4
  132. package/fd-toolbox/infra/toolbox-env-setting-keys.js +1 -1
  133. package/fd-toolbox/lib/environments.js +4 -3
  134. package/fd-toolbox/lib/utils.js +5 -2
  135. package/fd-toolbox/local-storage/local-storage.js +1 -1
  136. package/fd-toolbox/logging/loggers.js +2 -2
  137. package/fd-toolbox/notifications.js +2 -2
  138. package/fd-toolbox/odata/odata-filter-constants.js +4 -0
  139. package/fd-toolbox/odata/odata-formatting/odata-filters.js +9 -0
  140. package/fd-toolbox/odata/odata.js +12 -0
  141. package/fd-toolbox/paths/paths-names.js +1 -1
  142. package/fd-toolbox/redirect/redirect-functions.js +8 -0
  143. package/fd-toolbox/resources/resource-names.js +1 -1
  144. package/fd-toolbox/routing/login-routers.js +2 -1
  145. package/fd-toolbox/routing/paths.js +1 -1
  146. package/fd-toolbox/routing/routers.js +9 -0
  147. package/fd-toolbox/routing/routes.js +3 -2
  148. package/fd-toolbox/server/collections/single-funcs.js +8 -0
  149. package/fd-toolbox/server/constants/api-routes-constants.js +4 -0
  150. package/fd-toolbox/server/errors/error-dtos.js +4 -0
  151. package/fd-toolbox/server/framework/index.js +8 -0
  152. package/fd-toolbox/server/logging/latest-logs-store.js +6 -0
  153. package/fd-toolbox/server/logging/log-dtos.js +6 -0
  154. package/fd-toolbox/server/logging/logger.js +9 -0
  155. package/fd-toolbox/server/web/response-messages.js +4 -0
  156. package/fd-toolbox/strings/strings.js +2 -2
  157. package/fd-toolbox/types/ensure-type.js +6 -2
  158. package/fd-toolbox/url/urls.js +4 -0
  159. package/fd-toolbox-core/constants/meta-constants.js +4 -2
  160. package/fd-toolbox-core/core/name-of.js +1 -1
  161. package/fd-toolbox-core/types/resource-with-id.js +3 -1
  162. package/level2/cli/bin/index.js +2 -1
  163. package/level2/cli/create/bin/create.js +18 -10
  164. package/level2/npm-commands/build-npm/cli-contents.js +1 -1
  165. package/level2/npm-commands/build-npm/paths.js +6 -0
  166. package/package.json +48 -55
  167. package/base-repo/app-constants/alias-symbols.cjs.js +0 -6
  168. package/base-repo/app-constants/aliases.cjs.js +0 -8
  169. package/base-repo/app-constants/project-paths.cjs.js +0 -17
  170. package/base-repo/constants/create-app-constants.cjs.js +0 -9
  171. package/base-repo/constants/packages.cjs.js +0 -6
  172. package/base-repo/constants/packages.cjs2.js +0 -6
  173. package/base-repo/constants/packages2.js +0 -4
  174. package/cli/public/images/00000000-0000-0000-0000-000000000000.webp +0 -0
  175. package/cli/public/images/login-image-dark.jpg +0 -0
  176. package/cli/public/images/login-image.jpg +0 -0
  177. package/cli/public/images/no-image.png +0 -0
  178. package/cli/public/images/profile.png +0 -0
  179. package/cli/public/images/search-not-found-result.png +0 -0
  180. package/cli/public/images/toolbar-logo.png +0 -0
  181. package/cli/public/images/users/00000000-0000-0000-0000-000000000000.webp +0 -0
  182. package/cli/src/app/api/v1/(f)/preload/route.ts +0 -3
  183. package/cli/src/app/f/(signed-in)/lm/page.tsx +0 -8
  184. package/cli/src/app/f/(signed-in)/preload/page.tsx +0 -8
  185. package/cli/src/app/f/test/feed/page.tsx +0 -8
  186. package/cli/src/app/f/test/file-upload/page.tsx +0 -8
  187. package/cli/src/app/f/test/layout.tsx +0 -5
  188. package/cli/src/app/f/test/page.tsx +0 -8
  189. package/fd-toolbox/api/api-client.cjs.js +0 -19
  190. package/fd-toolbox/api/api-path-names.cjs.js +0 -9
  191. package/fd-toolbox/api/api-paths.cjs.js +0 -9
  192. package/fd-toolbox/api/base-api.cjs.js +0 -22
  193. package/fd-toolbox/auth/login-states.cjs.js +0 -18
  194. package/fd-toolbox/auth/session-storage.cjs.js +0 -12
  195. package/fd-toolbox/auth/tokens.cjs.js +0 -11
  196. package/fd-toolbox/constants/api-constants.cjs.js +0 -26
  197. package/fd-toolbox/constants/api-constants.js +0 -4
  198. package/fd-toolbox/constants/constants.cjs.js +0 -13
  199. package/fd-toolbox/constants/environment-constants.cjs.js +0 -7
  200. package/fd-toolbox/constants/extensions.cjs.js +0 -6
  201. package/fd-toolbox/constants/extensions.js +0 -4
  202. package/fd-toolbox/constants/header-names.cjs.js +0 -7
  203. package/fd-toolbox/constants/http-status-codes.cjs.js +0 -6
  204. package/fd-toolbox/constants/meta-query-params.cjs.js +0 -6
  205. package/fd-toolbox/constants/public-files.cjs.js +0 -14
  206. package/fd-toolbox/constants/representations.cjs.js +0 -6
  207. package/fd-toolbox/constants/representations.js +0 -4
  208. package/fd-toolbox/enums/enums.cjs.js +0 -26
  209. package/fd-toolbox/errors/error-handler.cjs.js +0 -10
  210. package/fd-toolbox/errors/error-statuses.cjs.js +0 -6
  211. package/fd-toolbox/errors/errors.cjs.js +0 -6
  212. package/fd-toolbox/errors/problem-details.cjs.js +0 -8
  213. package/fd-toolbox/functions/value-checking-functions.cjs.js +0 -10
  214. package/fd-toolbox/http/http-constants.cjs.js +0 -7
  215. package/fd-toolbox/http/http-constants.js +0 -4
  216. package/fd-toolbox/http/url/urls.cjs.js +0 -9
  217. package/fd-toolbox/infra/env-config.cjs.js +0 -8
  218. package/fd-toolbox/infra/env-functions.cjs.js +0 -16
  219. package/fd-toolbox/infra/env-schema.cjs.js +0 -12
  220. package/fd-toolbox/infra/env-setting-types.cjs.js +0 -6
  221. package/fd-toolbox/infra/env-setting-types.js +0 -4
  222. package/fd-toolbox/infra/env-store.cjs.js +0 -9
  223. package/fd-toolbox/infra/env-store.js +0 -7
  224. package/fd-toolbox/infra/toolbox-env-setting-keys.cjs.js +0 -6
  225. package/fd-toolbox/lib/environments.cjs.js +0 -25
  226. package/fd-toolbox/lib/utils.cjs.js +0 -29
  227. package/fd-toolbox/local-storage/local-storage.cjs.js +0 -12
  228. package/fd-toolbox/logging/loggers.cjs.js +0 -16
  229. package/fd-toolbox/logging/logging-constants.cjs.js +0 -6
  230. package/fd-toolbox/logging/logging-constants.js +0 -4
  231. package/fd-toolbox/notifications.cjs.js +0 -14
  232. package/fd-toolbox/odata/odata-constants.cjs.js +0 -11
  233. package/fd-toolbox/odata/odata-constants.js +0 -4
  234. package/fd-toolbox/odata/odata-enums.cjs.js +0 -8
  235. package/fd-toolbox/odata/odatas.cjs.js +0 -11
  236. package/fd-toolbox/odata/odatas.js +0 -9
  237. package/fd-toolbox/odata/services/odata-filters.cjs.js +0 -11
  238. package/fd-toolbox/odata/services/odata-filters.js +0 -9
  239. package/fd-toolbox/paths/paths-names.cjs.js +0 -9
  240. package/fd-toolbox/resources/resource-names.cjs.js +0 -6
  241. package/fd-toolbox/routing/login-routers.cjs.js +0 -10
  242. package/fd-toolbox/routing/paths.cjs.js +0 -6
  243. package/fd-toolbox/routing/routes.cjs.js +0 -14
  244. package/fd-toolbox/strings/strings-constants.cjs.js +0 -7
  245. package/fd-toolbox/strings/strings-constants.js +0 -4
  246. package/fd-toolbox/strings/strings.cjs.js +0 -10
  247. package/fd-toolbox/types/ensure-type.cjs.js +0 -22
  248. package/fd-toolbox-core/constants/meta-constants.cjs.js +0 -7
  249. package/fd-toolbox-core/constants/promises.cjs.js +0 -6
  250. package/fd-toolbox-core/core/name-of.cjs.js +0 -8
  251. package/fd-toolbox-core/enums/log-severities.cjs.js +0 -6
  252. package/fd-toolbox-core/types/resource-with-id.cjs.js +0 -9
  253. package/level2/cli/bin/index.cjs.js +0 -8
  254. package/level2/cli/create/bin/create.cjs.js +0 -42
  255. package/level2/npm-commands/build-npm/cli-contents.cjs.js +0 -9
  256. package/level2/npm-commands/build-npm/path.cjs.js +0 -13
  257. package/level2/npm-commands/build-npm/path.js +0 -6
  258. /package/cli/public/images/{companies → demo/companies}/00000000-0000-0000-0000-000000000000.webp +0 -0
  259. /package/cli/public/images/{companies → demo/companies}/004a196f-f9a7-49fc-9e05-606fffd0613c.webp +0 -0
  260. /package/cli/public/images/{companies → demo/companies}/497b26a6-3e91-4b27-8c24-f3b145fc6c7f.webp +0 -0
  261. /package/cli/public/images/{companies → demo/companies}/6cead29b-2572-4283-add6-f407b39d7135.webp +0 -0
  262. /package/cli/public/images/{companies → demo/companies}/71efdb77-4ecb-45e6-bc83-0fdff835c2e7.webp +0 -0
  263. /package/cli/public/images/{companies → demo/companies}/773602c8-a417-4afc-adb0-bb6856ac2970.webp +0 -0
  264. /package/cli/public/images/{companies → demo/companies}/9d09881a-cf60-438d-9edf-10f5864d4468.webp +0 -0
  265. /package/cli/public/images/{companies → demo/companies}/a1b2c3d4-e5f6-7890-1234-56789abcdef0.webp +0 -0
  266. /package/cli/public/images/{companies → demo/companies}/b04d7c5e-18de-4f44-b923-5bfb28bb33bb.webp +0 -0
  267. /package/cli/public/images/{companies → demo/companies}/c75c22fc-d295-472e-bdae-dbb8eb09cf18.webp +0 -0
  268. /package/cli/public/images/{companies → demo/companies}/cdf3efb4-33a2-485e-8d95-e0ab5a4cb6a5.webp +0 -0
  269. /package/cli/public/images/{companies → demo/companies}/d6fe4c6a-ecdb-40fc-a8e6-2044ef2b82d4.webp +0 -0
  270. /package/cli/public/images/{contacts → demo/contacts}/159e4c7a-ff5f-4162-8237-acec3ca8a759.webp +0 -0
  271. /package/cli/public/images/{contacts → demo/contacts}/65e07208-6b1f-4a59-b5e3-2f80f5741b18.webp +0 -0
  272. /package/cli/public/images/{contacts → demo/contacts}/6d1c5410-ef5b-4d37-8b8d-4ab8cfc87785.webp +0 -0
  273. /package/cli/public/images/{contacts → demo/contacts}/754c77d8-eefb-4a90-b07b-ed00980c88b4.webp +0 -0
  274. /package/cli/public/images/{contacts → demo/contacts}/9fd23cd9-9b94-4bb8-bb73-d315b93b8a5c.webp +0 -0
  275. /package/cli/public/images/{contacts → demo/contacts}/b2f746d1-6b3c-4c47-8e07-f73927c167cb.webp +0 -0
  276. /package/cli/public/images/{contacts → demo/contacts}/b515cb46-eab4-4862-9e8e-c2f5f217ae79.webp +0 -0
  277. /package/cli/public/images/{contacts → demo/contacts}/cf2eae72-e5ab-4d95-8f08-b6571b44f8eb.webp +0 -0
  278. /package/cli/public/images/{contacts → demo/contacts}/ec0e0285-22d9-48d4-b4b3-96388c37c807.webp +0 -0
  279. /package/cli/public/images/{contacts → demo/contacts}/ecb1a0f4-d244-4136-badf-c2bc72e3b678.webp +0 -0
  280. /package/cli/public/images/{users → demo/users}/02d1230f-5bfe-46b4-8ce1-d10f4aa918a7.webp +0 -0
  281. /package/cli/public/images/{users → demo/users}/166c5e4a-696f-4bf5-ab48-dbbb5e90d526.webp +0 -0
  282. /package/cli/public/images/{users → demo/users}/175a3f0c-692c-4503-87eb-ff95d6535e16.webp +0 -0
  283. /package/cli/public/images/{users → demo/users}/8398ee85-7546-4710-b628-44c98e4ba03a.webp +0 -0
  284. /package/cli/public/images/{users → demo/users}/979f8933-71b1-4df8-b691-566a901d3c76.webp +0 -0
  285. /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
+ }
@@ -0,0 +1,8 @@
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;
@@ -1,3 +1,7 @@
1
- import { playwrightGlobalSetup } from "@fernir2/saas-kit";
2
-
3
- export default playwrightGlobalSetup;
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
+ }
@@ -0,0 +1,7 @@
1
+ import { playwrightGlobalTeardown } from "@fernir2/saas-kit/test";
2
+ import { initSaasKit } from "@/app/init-saas-kit";
3
+
4
+ export default async function globalTeardown() {
5
+ initSaasKit();
6
+ await playwrightGlobalTeardown();
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/*": ["./generated/*"],
9
- "@npm-commands/*": ["./npm-commands/*"],
10
- "@root/*": ["./*"]
11
- }
12
- },
13
- "include": ["next-env.d.ts", "global.d.ts", "./**/*", ".next/types/**/*.ts"],
14
- "exclude": ["node_modules", "dist", "build", ".next", "server.ts"]
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
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "include": ["**/*.ts", "**/*.tsx", "./**/*", "package.json"],
4
+ "exclude": ["node_modules", "dist"]
5
+ }
@@ -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/*": ["./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
+ "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/odatas.js';
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 '../http/http-constants.js';
7
+ import { httpMethods } from '../../base-repo/constants/http-methods.js';
8
8
 
9
- var __defProp=Object['defineProperty'],__name=(_0x1d0518,_0x3cd0f8)=>__defProp(_0x1d0518,'name',{'value':_0x3cd0f8,'configurable':!![]});async function apiGet(_0x2f4dc0,_0x1f5c17,_0x36aa51,_0x2b0793){const _0x5db665=getApiPath(_0x2f4dc0,_0x1f5c17,_0x36aa51);return apiBaseGet(_0x5db665,getApiHeaders(_0x2b0793));}__name(apiGet,'apiGet');async function apiGetBlob(_0x561241,_0x2ba15c,_0x314dc5,_0x32cfe9){const _0x4f8992=getApiPath(_0x561241,_0x2ba15c,_0x314dc5);return apiBaseGetBlob(_0x4f8992,getApiHeaders(_0x32cfe9,!![]));}__name(apiGetBlob,'apiGetBlob');async function apiGetWithOData(_0x4bd23f,_0x92e305,_0x3ff489){const _0x23f049=getODataParams(_0x92e305);return apiGet(_0x4bd23f,_0x3ff489,_0x23f049);}__name(apiGetWithOData,'apiGetWithOData');async function apiPost(_0x29f849,_0x3a5198,_0x4332c9){const _0x24e8a9=getApiPath(_0x29f849);return postBaseApi(_0x24e8a9,_0x3a5198,getApiHeaders(_0x4332c9));}__name(apiPost,'apiPost');async function apiPostFile(_0x294705,_0x5ab271,_0x3be005){const _0x591b60=getApiPath(_0x294705),_0x43656c=await fetch(_0x591b60,{'method':httpMethods['post'],'body':_0x5ab271,'headers':getApiHeaders(_0x3be005,!![])});return baseApiHandleResponse(_0x43656c);}__name(apiPostFile,'apiPostFile');async function apiPut(_0x4412ce,_0x170973,_0x36148f){const _0x2ac373=getApiPath(_0x4412ce);return putBaseApi(_0x2ac373,_0x170973,getApiHeaders(_0x36148f));}__name(apiPut,'apiPut');async function apiDelete(_0x2dc3ea,_0x33f0dd,_0x3b32d2){const _0x499040=getApiPath(_0x2dc3ea,_0x33f0dd);return deleteBaseApi(_0x499040,getApiHeaders(_0x3b32d2));}__name(apiDelete,'apiDelete');function getApiHeaders(_0x3bb7f7,_0x719ac0=![]){const _0x564c89=_0x3bb7f7??new Headers(),_0x598b5e=getAuthToken();return (!_0x564c89['get'](headerNames['authHeaderName'])||_0x564c89['get'](headerNames['authHeaderName'])==='')&&_0x598b5e&&_0x564c89['set'](headerNames['authHeaderName'],headerNames['authHeaderValuePrefix']+_0x598b5e),!_0x719ac0&&!_0x564c89['get'](httpContentTypes['contentTypeHeaderName'])&&_0x564c89['set'](httpContentTypes['contentTypeHeaderName'],httpContentTypes['contentTypeHeaderValue']),_0x564c89;}__name(getApiHeaders,'getApiHeaders');
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,'meta':'meta','uiMetas':'uimetas','uiMeta':'uimeta','login':'account/login','token':'connect/token','logout':'account/logout','getOne':join(hint,'getone'),'user':'user','preLoad':'preload','userPermission':'user-permission','otherUser':'other-user','person':'person','friend':'friend','relation':'relation','log':'log','version':'version','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,'method'),'subscription':subscription,'cancelSubscription':join(subscription,'cancel'),'updateSubscription':join(subscription,'update'),'createSubscription':join(subscription,'create'),'paymentPlan':'paymentplan','feature':'feature','paymentPlanFeature':'paymentplanfeature','markdown':'markdown','searchResult':'search-result','searchableResource':'searchable-resources','search':'search','blob':'blob','statusBoard':'statusboard','aiScan':'lm/ai-scan','changeWorkspace':'workspace/change','visibleWorkspace':'visible-workspace','test':'test','testData':'test/data'};
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=(_0x3cb972,_0x3e85a3)=>__defProp(_0x3cb972,'name',{'value':_0x3e85a3,'configurable':!![]});const apiPrefix='api';function getApiPath(_0x153cd0,_0x51e9b0,_0x46d737){let _0xee255=combineEndpointPath(apiPrefix,_0x153cd0);return _0x51e9b0&&(_0xee255=combineEndpointPath(_0xee255,_0x51e9b0)),_0xee255=addQueryParamsToPath(_0xee255,_0x46d737),new URL(_0xee255,getBaseUrl())['href'];}__name(getApiPath,'getApiPath');function getBaseUrl(){return location['protocol']+'//'+location['hostname']+':'+location['port']+'/';}__name(getBaseUrl,'getBaseUrl');
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 '../http/http-constants.js';
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=(_0x356956,_0x2bf144)=>__defProp(_0x356956,'name',{'value':_0x2bf144,'configurable':!![]});async function apiBaseGet(_0x14b7b1,_0x2d4bcb){const _0x4b771f=await fetch(_0x14b7b1,{'method':httpMethods['get'],'headers':_0x2d4bcb});return baseApiHandleResponse(_0x4b771f);}__name(apiBaseGet,'apiBaseGet');async function apiBaseGetBlob(_0x160fcf,_0x50191c){const _0x53c375=await fetch(_0x160fcf,{'method':httpMethods['get'],'headers':_0x50191c});return baseApiHandleBlobResponse(_0x53c375);}__name(apiBaseGetBlob,'apiBaseGetBlob');async function postBaseApi(_0x8fd2ac,_0x1beac9,_0x107499){const _0x348d11=await fetch(_0x8fd2ac,{'method':httpMethods['post'],'headers':_0x107499,'body':_0x1beac9 instanceof URLSearchParams?_0x1beac9:JSON['stringify'](_0x1beac9)});return baseApiHandleResponse(_0x348d11);}__name(postBaseApi,'postBaseApi');async function putBaseApi(_0x586e57,_0x2da404,_0x541b07){const _0x2038b5=await fetch(_0x586e57,{'method':httpMethods['put'],'headers':_0x541b07,'body':JSON['stringify'](_0x2da404)});return baseApiHandleResponse(_0x2038b5);}__name(putBaseApi,'putBaseApi');async function deleteBaseApi(_0x212592,_0x436698){const _0xd1a504=await fetch(_0x212592,{'method':httpMethods['delete'],'headers':_0x436698});if(!_0xd1a504['ok'])handleErrorResponse(_0xd1a504);}__name(deleteBaseApi,'deleteBaseApi');async function baseApiHandleResponse(_0x195b43){const _0x3f1531=_0x195b43['headers']['get']('content-type'),_0x4cc3c8=_0x3f1531?.['includes']('application/json');isUnauthorizedError(_0x195b43['status'])&&(removeLoginState(),goToLogin());if(!_0x195b43['ok'])return handleErrorResponse(_0x195b43);if(_0x195b43['status']===httpStatusCodes['noContent']||!_0x4cc3c8)return null;return getJsonFromResponse(_0x195b43);}__name(baseApiHandleResponse,'baseApiHandleResponse');async function baseApiHandleBlobResponse(_0x3c8952){isUnauthorizedError(_0x3c8952['status'])&&goToLogin();if(!_0x3c8952['ok']){const _0xa2e437=await handleErrorResponse(_0x3c8952);return _0xa2e437;}if(_0x3c8952['status']===httpStatusCodes['noContent'])return null;const _0x4e83ba=await _0x3c8952['blob']();return _0x4e83ba;}__name(baseApiHandleBlobResponse,'baseApiHandleBlobResponse');async function handleErrorResponse(_0x1e2bb1){const _0x384ed7=_0x1e2bb1['headers']['get']('content-type'),_0x3b696f=_0x384ed7?.['includes']('application/json');let _0x260606='',_0x1b10ee='';if(_0x3b696f){const _0x1b0aa2=await getJsonFromResponse(_0x1e2bb1);_0x260606=_0x1b0aa2?.['message'],_0x1b10ee=_0x1b0aa2?.['description']||'';}_0x260606=_0x260606?_0x260606:_0x1e2bb1['statusText'];const _0x3cc3fb={'status':_0x1e2bb1['status'],'message':_0x260606},_0x3d283a={'originalUrl':_0x1e2bb1['url']};return _0x1e2bb1['status']!==httpStatusCodes['unauthorized']&&logAndNotify(new Error(_0x260606)),getProblemDetails(_0x3cc3fb,_0x3d283a,_0x1b10ee);}__name(handleErrorResponse,'handleErrorResponse');function isUnauthorizedError(_0x23ea4a){return _0x23ea4a===httpStatusCodes['unauthorized']&&isBrowser()&&window['location']['pathname']!==getRelativeLoginUrl();}__name(isUnauthorizedError,'isUnauthorizedError');
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 { emptyGuid } from '../constants/constants.js';
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 { extensions } from '../constants/extensions.js';
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=(_0x27ddc6,_0x54ddfb)=>__defProp(_0x27ddc6,'name',{'value':_0x54ddfb,'configurable':!![]});const loginStateKey='LoginState',afterLoginRedirectUrlKey='AfterLoginRedirectUrl';function isLoggedIn(){return getLoginState()['loggedIn'];}__name(isLoggedIn,'isLoggedIn');function setLoginState(_0x2f44f2){setLocalStorage(loginStateKey,_0x2f44f2);}__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 _0xc3a1bd=(window['location']['pathname']+window['location']['search'])['slice'](0x13e0+-0x4*-0x7d+0x15d3*-0x1);setSessionStorage(afterLoginRedirectUrlKey,_0xc3a1bd);}__name(setAfterLoginRedirectUrl,'setAfterLoginRedirectUrl');function removeAfterLoginRedirectUrl(){removeSessionStorage(afterLoginRedirectUrlKey);}__name(removeAfterLoginRedirectUrl,'removeAfterLoginRedirectUrl');function getEmptyLoginState(){const _0x3f8144={'email':'','loggedIn':![],'displayName':'','userId':emptyGuid,'imageUrl':'/'+publicImages['user']+'/'+emptyGuid+'.'+extensions['webp']};return _0x3f8144;}__name(getEmptyLoginState,'getEmptyLoginState');
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=(_0x5efcf5,_0x127e84)=>__defProp(_0x5efcf5,'name',{'value':_0x127e84,'configurable':!![]});function sessionStorageGetAsString(_0x2a01d4){if(isBrowser()){const _0x1a54c3=sessionStorage['getItem'](_0x2a01d4);return _0x1a54c3??void(-0x497+-0x1*-0x659+0x9*-0x32);}return void(0x1cf9+-0x89c+0x145d*-0x1);}__name(sessionStorageGetAsString,'sessionStorageGetAsString');function getSessionStorage(_0xa4f1a2){const _0x4b308f=sessionStorageGetAsString(_0xa4f1a2);return _0x4b308f?parseJson(_0x4b308f):void(0x1903*-0x1+0x3*-0x7f6+0x30e5);}__name(getSessionStorage,'getSessionStorage');function setSessionStorage(_0x32601a,_0x15b19f){if(_0x15b19f===void(0x1*-0x8f1+-0x14ae+0x1d9f))return;sessionStorage['setItem'](_0x32601a,JSON['stringify'](_0x15b19f));}__name(setSessionStorage,'setSessionStorage');function removeSessionStorage(_0x584300){sessionStorage['removeItem'](_0x584300);}__name(removeSessionStorage,'removeSessionStorage');
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=(_0x127c01,_0x5834ac)=>__defProp(_0x127c01,'name',{'value':_0x5834ac,'configurable':!![]});const tokenKey='token';function getAuthToken(){return getLocalStorage(tokenKey);}__name(getAuthToken,'getAuthToken');function rememberAuthToken(_0x48a0d4){setLocalStorage(tokenKey,_0x48a0d4);}__name(rememberAuthToken,'rememberAuthToken');function forgetAuthToken(){removeLocalStorage(tokenKey);}__name(forgetAuthToken,'forgetAuthToken');
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 emptyGuid='00000000-0000-0000-0000-000000000000';const minHintPriorityValue=0x6f0+0x1*0x1+-0x1*0x6f0;const englishLanguageCode='en-US';const emptySelectValue='empty';const emptySelectIndex=-0x53*0x2b+0x2*0xa65+0x1*-0x6d9;const fieldValuesSeparator=',\x20';const noName='No\x20name';const projectName='SaaS\x20Kit';
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 { emptyGuid, emptySelectIndex, emptySelectValue, englishLanguageCode, fieldValuesSeparator, minHintPriorityValue, noName, projectName };
4
+ export { commonStrings, emptySelectIndex, emptyString, emptyUuid, englishLanguageCode, fieldValuesSeparator, minHintPriorityValue, noName, timeZoneNames };
@@ -1,4 +1,7 @@
1
1
  'use strict';
2
- const appEnvironments={'development':'development','production':'production','test':'test','staging':'staging','demo':'demo'};const launchMode={'direct':'direct'};
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','contentTypeHeaderValue':'application/json','contentTypeHeaderOctetStream':'application/octet-stream','contentTypeXFileName':'x-file-name','contentTypeDisposition':'Content-Disposition','contentTypeMultipartFormData':'multipart/form-data'};
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 };