@team-codeme/crud-forge 0.0.0-stage → 1.0.0

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 (415) hide show
  1. package/.cursor/agents/generator-engineer.md +31 -0
  2. package/.cursor/agents/keycloak-engineer.md +33 -0
  3. package/.cursor/agents/qa-engineer.md +32 -0
  4. package/.cursor/agents/security-reviewer.md +30 -0
  5. package/.cursor/mcp.json +13 -0
  6. package/.cursor/rules/crudforge-precautions.mdc +16 -0
  7. package/.cursor/rules/playwright-browser.mdc +30 -0
  8. package/.cursor/rules/readme-todo-sync.mdc +13 -0
  9. package/.env.qa.example +19 -0
  10. package/.github/workflows/qa-live.yml +32 -0
  11. package/.github/workflows/qa.yml +27 -0
  12. package/.vscode/settings.json +32 -0
  13. package/QA/IAM-PLAN.md +25 -0
  14. package/QA/IAM-RESULTS.md +39 -0
  15. package/QA/IAM-TESTCASES.md +36 -0
  16. package/QA/IAM-TODO.md +7 -0
  17. package/QA/KEYCLOAK-BOOTSTRAP.md +105 -0
  18. package/QA/PLAN.md +43 -0
  19. package/QA/RESULTS.md +59 -0
  20. package/QA/TESTCASES.md +65 -0
  21. package/QA/TODO.md +14 -0
  22. package/QA/pmb-dev/README.md +49 -0
  23. package/QA/pmb-dev/config/config.yml +152 -0
  24. package/QA/pmb-dev/gdl/i.gdl +17 -0
  25. package/README.md +851 -2
  26. package/Todo.md +207 -0
  27. package/assets/branding/crudforge-logo.png +0 -0
  28. package/assets/branding/crudforge-mark.png +0 -0
  29. package/branding/poster-crudforge.jpg +0 -0
  30. package/chat/last-chat/Investigating Mock Data Configuration.md +428 -0
  31. package/cli.js +167 -0
  32. package/config/default-config.yml +245 -0
  33. package/docs/performance/README.md +217 -0
  34. package/docs/performance/after.json +111 -0
  35. package/docs/performance/before.json +111 -0
  36. package/docs/quality/README.md +276 -0
  37. package/e2e/crudforge.e2e.yml +47 -0
  38. package/e2e/crudforge.field-profile.yml +33 -0
  39. package/e2e/crudforge.iam-live.yml +124 -0
  40. package/e2e/crudforge.iam.yml +62 -0
  41. package/e2e/tests/field-profile.spec.js +152 -0
  42. package/e2e/tests/generated-crud.spec.js +251 -0
  43. package/e2e/tests/iam-live.spec.js +149 -0
  44. package/e2e/tests/iam-pack.spec.js +151 -0
  45. package/e2e/tests/list-state.spec.js +73 -0
  46. package/features.csv +27 -0
  47. package/fuse-starter-pack/branding/crudforge-mark-source.jpg +0 -0
  48. package/fuse-starter-pack/branding/crudforge-mark-source.png +0 -0
  49. package/fuse-starter-pack/branding/crudforge-mark.png +0 -0
  50. package/fuse-starter-pack/branding/crudforge-wordmark-source.jpg +0 -0
  51. package/fuse-starter-pack/branding/crudforge-wordmark-source.png +0 -0
  52. package/fuse-starter-pack/branding/crudforge-wordmark.png +0 -0
  53. package/fuse-starter-pack/fuse-v21.1/Dockerfile +14 -0
  54. package/fuse-starter-pack/fuse-v21.1/LICENSE.md +6 -0
  55. package/fuse-starter-pack/fuse-v21.1/README.md +59 -0
  56. package/fuse-starter-pack/fuse-v21.1/angular.json +113 -0
  57. package/fuse-starter-pack/fuse-v21.1/eslint.config.ts +150 -0
  58. package/fuse-starter-pack/fuse-v21.1/nginx.conf +23 -0
  59. package/fuse-starter-pack/fuse-v21.1/nginx.dev.conf +18 -0
  60. package/fuse-starter-pack/fuse-v21.1/package-lock.json +11513 -0
  61. package/fuse-starter-pack/fuse-v21.1/package.json +69 -0
  62. package/fuse-starter-pack/fuse-v21.1/postcss.config.json +5 -0
  63. package/fuse-starter-pack/fuse-v21.1/prettier.config.ts +15 -0
  64. package/fuse-starter-pack/fuse-v21.1/proxy.conf.json +8 -0
  65. package/fuse-starter-pack/fuse-v21.1/proxy.dev.conf.json +8 -0
  66. package/fuse-starter-pack/fuse-v21.1/public/favicon.png +0 -0
  67. package/fuse-starter-pack/fuse-v21.1/public/fonts/geist/Geist-Italic.woff2 +0 -0
  68. package/fuse-starter-pack/fuse-v21.1/public/fonts/geist/Geist.woff2 +0 -0
  69. package/fuse-starter-pack/fuse-v21.1/public/fonts/geist/GeistMono-Italic.woff2 +0 -0
  70. package/fuse-starter-pack/fuse-v21.1/public/fonts/geist/GeistMono.woff2 +0 -0
  71. package/fuse-starter-pack/fuse-v21.1/public/i18n/en.json +8 -0
  72. package/fuse-starter-pack/fuse-v21.1/public/i18n/es.json +8 -0
  73. package/fuse-starter-pack/fuse-v21.1/public/images/flags/ES.svg +79 -0
  74. package/fuse-starter-pack/fuse-v21.1/public/images/flags/US.svg +14 -0
  75. package/fuse-starter-pack/fuse-v21.1/public/images/flags/where-to-find-other-flags.txt +5 -0
  76. package/fuse-starter-pack/fuse-v21.1/public/images/logo/logo-mark.png +0 -0
  77. package/fuse-starter-pack/fuse-v21.1/public/images/logo/logo.png +0 -0
  78. package/fuse-starter-pack/fuse-v21.1/push.sh +27 -0
  79. package/fuse-starter-pack/fuse-v21.1/src/app/app.config.server.ts +10 -0
  80. package/fuse-starter-pack/fuse-v21.1/src/app/app.config.ts +64 -0
  81. package/fuse-starter-pack/fuse-v21.1/src/app/app.routes.server.ts +8 -0
  82. package/fuse-starter-pack/fuse-v21.1/src/app/app.routes.ts +39 -0
  83. package/fuse-starter-pack/fuse-v21.1/src/app/app.ts +22 -0
  84. package/fuse-starter-pack/fuse-v21.1/src/app/core/icons/index.ts +1 -0
  85. package/fuse-starter-pack/fuse-v21.1/src/app/core/icons/lucide.ts +1 -0
  86. package/fuse-starter-pack/fuse-v21.1/src/app/core/icons/provider.ts +23 -0
  87. package/fuse-starter-pack/fuse-v21.1/src/app/core/local-storage/index.ts +2 -0
  88. package/fuse-starter-pack/fuse-v21.1/src/app/core/local-storage/local-storage.ts +109 -0
  89. package/fuse-starter-pack/fuse-v21.1/src/app/core/local-storage/provider.ts +15 -0
  90. package/fuse-starter-pack/fuse-v21.1/src/app/core/media/index.ts +2 -0
  91. package/fuse-starter-pack/fuse-v21.1/src/app/core/media/media.ts +64 -0
  92. package/fuse-starter-pack/fuse-v21.1/src/app/core/media/provider.ts +15 -0
  93. package/fuse-starter-pack/fuse-v21.1/src/app/core/theming/index.ts +3 -0
  94. package/fuse-starter-pack/fuse-v21.1/src/app/core/theming/models/theming.ts +13 -0
  95. package/fuse-starter-pack/fuse-v21.1/src/app/core/theming/palette.ts +209 -0
  96. package/fuse-starter-pack/fuse-v21.1/src/app/core/theming/provider.ts +24 -0
  97. package/fuse-starter-pack/fuse-v21.1/src/app/core/theming/theming.ts +129 -0
  98. package/fuse-starter-pack/fuse-v21.1/src/app/core/transloco/transloco-http-loader.ts +12 -0
  99. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/layout/data/navigation.ts +176 -0
  100. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/layout/layout.ts +77 -0
  101. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/layout/ui/language-switcher.ts +91 -0
  102. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/layout/ui/navigation.ts +238 -0
  103. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/layout/ui/notifications.ts +252 -0
  104. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/layout/ui/scheme-switcher.ts +58 -0
  105. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/layout/ui/sidebar.ts +31 -0
  106. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/layout/ui/user.ts +132 -0
  107. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/academy/data/academy.ts +753 -0
  108. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/academy/data/model.ts +27 -0
  109. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/academy/features/course.ts +318 -0
  110. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/academy/features/courses.ts +228 -0
  111. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/academy/routes.ts +14 -0
  112. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/contacts/data/contacts.ts +4372 -0
  113. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/contacts/data/model.ts +34 -0
  114. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/contacts/features/contact.ts +239 -0
  115. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/contacts/features/contacts.ts +185 -0
  116. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/contacts/routes.ts +16 -0
  117. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/file-manager/data/file-manager.ts +261 -0
  118. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/file-manager/data/model.ts +12 -0
  119. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/file-manager/features/file-manager.ts +131 -0
  120. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/file-manager/routes.ts +15 -0
  121. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/file-manager/ui/list.ts +164 -0
  122. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/help-center/features/faq.ts +288 -0
  123. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/help-center/features/guide.ts +134 -0
  124. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/help-center/features/home.ts +219 -0
  125. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/help-center/features/support.ts +161 -0
  126. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/help-center/routes.ts +33 -0
  127. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/notes/data/model.ts +18 -0
  128. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/notes/data/notes.ts +324 -0
  129. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/notes/features/note.ts +152 -0
  130. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/notes/features/notes.ts +118 -0
  131. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/notes/routes.ts +16 -0
  132. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/tasks/data/model.ts +17 -0
  133. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/tasks/data/tasks.ts +562 -0
  134. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/tasks/features/task.ts +195 -0
  135. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/tasks/features/tasks.ts +271 -0
  136. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/tasks/routes.ts +16 -0
  137. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/dashboards/data/analytics.ts +1620 -0
  138. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/dashboards/data/finance.ts +1065 -0
  139. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/dashboards/data/project.ts +376 -0
  140. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/dashboards/features/analytics/analytics.ts +1096 -0
  141. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/dashboards/features/finance/finance.ts +658 -0
  142. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/dashboards/features/project/budget-table.ts +188 -0
  143. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/dashboards/features/project/project.ts +565 -0
  144. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/dashboards/routes.ts +23 -0
  145. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/documentation/features/changelog/changelog.ts +932 -0
  146. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/documentation/features/getting-started/building.ts +33 -0
  147. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/documentation/features/getting-started/development.ts +42 -0
  148. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/documentation/features/getting-started/installation.ts +47 -0
  149. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/documentation/layout.ts +9 -0
  150. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/documentation/routes.ts +45 -0
  151. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/extras/error/features/error-page.ts +70 -0
  152. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/extras/error/routes.ts +21 -0
  153. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/extras/notifications/features/notifications.ts +262 -0
  154. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/extras/notifications/routes.ts +10 -0
  155. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/extras/settings/features/account.ts +238 -0
  156. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/extras/settings/features/notifications.ts +134 -0
  157. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/extras/settings/features/plan-and-billing.ts +238 -0
  158. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/extras/settings/features/security.ts +211 -0
  159. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/extras/settings/features/team.ts +188 -0
  160. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/extras/settings/layout.ts +109 -0
  161. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/extras/settings/routes.ts +37 -0
  162. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/extras/welcome/welcome.component.ts +22 -0
  163. package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/routes.ts +95 -0
  164. package/fuse-starter-pack/fuse-v21.1/src/app/domains/auth/features/forgot-password/forgot-password.html +54 -0
  165. package/fuse-starter-pack/fuse-v21.1/src/app/domains/auth/features/forgot-password/forgot-password.ts +51 -0
  166. package/fuse-starter-pack/fuse-v21.1/src/app/domains/auth/features/reset-password/reset-password.html +82 -0
  167. package/fuse-starter-pack/fuse-v21.1/src/app/domains/auth/features/reset-password/reset-password.ts +69 -0
  168. package/fuse-starter-pack/fuse-v21.1/src/app/domains/auth/features/sign-in/sign-in.html +132 -0
  169. package/fuse-starter-pack/fuse-v21.1/src/app/domains/auth/features/sign-in/sign-in.ts +54 -0
  170. package/fuse-starter-pack/fuse-v21.1/src/app/domains/auth/features/sign-up/sign-up.html +183 -0
  171. package/fuse-starter-pack/fuse-v21.1/src/app/domains/auth/features/sign-up/sign-up.ts +56 -0
  172. package/fuse-starter-pack/fuse-v21.1/src/app/domains/auth/layout.ts +9 -0
  173. package/fuse-starter-pack/fuse-v21.1/src/app/domains/auth/routes.ts +34 -0
  174. package/fuse-starter-pack/fuse-v21.1/src/app/domains/coming-soon/features/coming-soon.ts +156 -0
  175. package/fuse-starter-pack/fuse-v21.1/src/app/domains/coming-soon/layout.ts +9 -0
  176. package/fuse-starter-pack/fuse-v21.1/src/app/domains/coming-soon/routes.ts +16 -0
  177. package/fuse-starter-pack/fuse-v21.1/src/app/domains/website/layout/layout.ts +9 -0
  178. package/fuse-starter-pack/fuse-v21.1/src/app/domains/website/modules/home/features/home.ts +23 -0
  179. package/fuse-starter-pack/fuse-v21.1/src/app/domains/website/modules/home/routes.ts +10 -0
  180. package/fuse-starter-pack/fuse-v21.1/src/app/domains/website/routes.ts +30 -0
  181. package/fuse-starter-pack/fuse-v21.1/src/environments/environment.mock.ts +5 -0
  182. package/fuse-starter-pack/fuse-v21.1/src/environments/environment.prod.ts +5 -0
  183. package/fuse-starter-pack/fuse-v21.1/src/environments/environment.ts +5 -0
  184. package/fuse-starter-pack/fuse-v21.1/src/index.html +66 -0
  185. package/fuse-starter-pack/fuse-v21.1/src/main.server.ts +11 -0
  186. package/fuse-starter-pack/fuse-v21.1/src/main.ts +5 -0
  187. package/fuse-starter-pack/fuse-v21.1/src/server.ts +70 -0
  188. package/fuse-starter-pack/fuse-v21.1/src/styles/base/base.css +63 -0
  189. package/fuse-starter-pack/fuse-v21.1/src/styles/base/typography.css +54 -0
  190. package/fuse-starter-pack/fuse-v21.1/src/styles/components/a.css +18 -0
  191. package/fuse-starter-pack/fuse-v21.1/src/styles/components/input.css +22 -0
  192. package/fuse-starter-pack/fuse-v21.1/src/styles/components/kbd.css +55 -0
  193. package/fuse-starter-pack/fuse-v21.1/src/styles/components/material.css +1149 -0
  194. package/fuse-starter-pack/fuse-v21.1/src/styles/styles.css +31 -0
  195. package/fuse-starter-pack/fuse-v21.1/src/styles/tailwind/theme.css +147 -0
  196. package/fuse-starter-pack/fuse-v21.1/src/styles/tailwind/utilities.css +563 -0
  197. package/fuse-starter-pack/fuse-v21.1/src/styles/tailwind/variants.css +4 -0
  198. package/fuse-starter-pack/fuse-v21.1/src/styles/third-party/lucide-icons.css +12 -0
  199. package/fuse-starter-pack/fuse-v21.1/tsconfig.app.json +16 -0
  200. package/fuse-starter-pack/fuse-v21.1/tsconfig.json +37 -0
  201. package/fuse-starter-pack/fuse-v21.1/tsconfig.spec.json +10 -0
  202. package/generator/README.md +12 -0
  203. package/generator/issues/.gitkeep +0 -0
  204. package/package.json +56 -4
  205. package/playwright.config.js +29 -0
  206. package/playwright.field-profile.config.js +6 -0
  207. package/playwright.iam-live.config.js +31 -0
  208. package/playwright.iam.config.js +29 -0
  209. package/playwright.list-state.config.js +6 -0
  210. package/playwright.performance.config.js +1 -0
  211. package/run-config-tests.sh +5 -0
  212. package/scripts/e2e-paths.js +89 -0
  213. package/scripts/e2e-prepare-field-profile.js +17 -0
  214. package/scripts/e2e-prepare-iam-live.js +135 -0
  215. package/scripts/e2e-prepare-iam.js +65 -0
  216. package/scripts/e2e-prepare.js +72 -0
  217. package/scripts/e2e-serve-iam-live.js +28 -0
  218. package/scripts/e2e-serve-iam.js +28 -0
  219. package/scripts/e2e-serve.js +28 -0
  220. package/scripts/performance/generate.js +17 -0
  221. package/scripts/performance/measure.js +55 -0
  222. package/scripts/postinstall.js +9 -0
  223. package/scripts/prepare-quality-apps.js +34 -0
  224. package/scripts/run-config-tests.js +63 -0
  225. package/src/assets/logo-with-lable.jpeg +0 -0
  226. package/src/assets/logo.jpeg +0 -0
  227. package/src/commands/bootstrap.js +92 -0
  228. package/src/commands/doctor.js +403 -0
  229. package/src/commands/generate.js +301 -0
  230. package/src/commands/init-config.js +310 -0
  231. package/src/commands/keycloak-options.js +182 -0
  232. package/src/commands/validate.js +52 -0
  233. package/src/config/auth-config.js +183 -0
  234. package/src/config/default-values.js +235 -0
  235. package/src/config/env-refs.js +71 -0
  236. package/src/config/field-preferences.js +99 -0
  237. package/src/config/input-sources.js +104 -0
  238. package/src/config/load-config.js +166 -0
  239. package/src/config/proxy-routes.js +44 -0
  240. package/src/generator/access-control-tools.js +334 -0
  241. package/src/generator/ai-docs.js +691 -0
  242. package/src/generator/application-tests.js +252 -0
  243. package/src/generator/auth-pack.js +965 -0
  244. package/src/generator/embed-config.js +431 -0
  245. package/src/generator/entity-layout.js +30 -0
  246. package/src/generator/fuse-build.js +57 -0
  247. package/src/generator/fuse-runtime.js +344 -0
  248. package/src/generator/generated-banner.js +137 -0
  249. package/src/generator/index.js +874 -0
  250. package/src/generator/project-output.js +126 -0
  251. package/src/generator/team-pack.js +220 -0
  252. package/src/index.js +68 -0
  253. package/src/parser/gdl-parser.js +169 -0
  254. package/src/parser/jdl-parser.js +171 -0
  255. package/src/presets/pmb-test.js +139 -0
  256. package/src/presets/static-source.js +73 -0
  257. package/src/presets/store.js +96 -0
  258. package/src/provision/admin-service.js +148 -0
  259. package/src/provision/bootstrap.js +147 -0
  260. package/src/provision/http.js +123 -0
  261. package/src/provision/keycloak-admin-rest.js +335 -0
  262. package/src/provision/state.js +51 -0
  263. package/src/provision/token.js +52 -0
  264. package/src/templates/angular/auth/access-control.service.ts.ejs +179 -0
  265. package/src/templates/angular/auth/access-ctrl.pipe.ts.ejs +20 -0
  266. package/src/templates/angular/auth/auth.guard.ts.ejs +27 -0
  267. package/src/templates/angular/auth/auth.interceptor.ts.ejs +53 -0
  268. package/src/templates/angular/auth/auth.service.ts.ejs +594 -0
  269. package/src/templates/angular/auth/auth.utils.ts.ejs +28 -0
  270. package/src/templates/angular/auth/current-user.ts.ejs +24 -0
  271. package/src/templates/angular/auth/disabled-account-overlay.component.css.ejs +95 -0
  272. package/src/templates/angular/auth/disabled-account-overlay.component.html.ejs +33 -0
  273. package/src/templates/angular/auth/disabled-account-overlay.component.ts.ejs +23 -0
  274. package/src/templates/angular/auth/fuse-account.ts.ejs +234 -0
  275. package/src/templates/angular/auth/fuse-user.ts.ejs +264 -0
  276. package/src/templates/angular/auth/has-permission.directive.ts.ejs +51 -0
  277. package/src/templates/angular/auth/index.ts.ejs +24 -0
  278. package/src/templates/angular/auth/keycloak-admin.service.ts.ejs +670 -0
  279. package/src/templates/angular/auth/landing.guard.ts.ejs +61 -0
  280. package/src/templates/angular/auth/no-auth.guard.ts.ejs +19 -0
  281. package/src/templates/angular/auth/permission-attribute.util.ts.ejs +182 -0
  282. package/src/templates/angular/auth/sign-in.ts.ejs +60 -0
  283. package/src/templates/angular/entity/_entity_.model.ts.ejs +64 -0
  284. package/src/templates/angular/entity/_entity_.routes.ts.ejs +9 -0
  285. package/src/templates/angular/entity/components/forms/form/_entity_-form.component.html.ejs +168 -0
  286. package/src/templates/angular/entity/components/forms/form/_entity_-form.component.ts.ejs +175 -0
  287. package/src/templates/angular/entity/components/forms/form-page/_entity_-form-page.component.html.ejs +10 -0
  288. package/src/templates/angular/entity/components/forms/form-page/_entity_-form-page.component.ts.ejs +86 -0
  289. package/src/templates/angular/entity/components/forms/update/_entity_-form.service.ts.ejs +136 -0
  290. package/src/templates/angular/entity/components/interaction/actions/_entity_-actions.component.html.ejs +68 -0
  291. package/src/templates/angular/entity/components/interaction/actions/_entity_-actions.component.ts.ejs +69 -0
  292. package/src/templates/angular/entity/components/interaction/filter/_entity_-filter.component.html.ejs +111 -0
  293. package/src/templates/angular/entity/components/interaction/filter/_entity_-filter.component.ts.ejs +102 -0
  294. package/src/templates/angular/entity/components/presentation/card/_entity_-card.component.css.ejs +33 -0
  295. package/src/templates/angular/entity/components/presentation/card/_entity_-card.component.html.ejs +29 -0
  296. package/src/templates/angular/entity/components/presentation/card/_entity_-card.component.ts.ejs +93 -0
  297. package/src/templates/angular/entity/components/presentation/detail/_entity_-detail.component.css.ejs +54 -0
  298. package/src/templates/angular/entity/components/presentation/detail/_entity_-detail.component.html.ejs +58 -0
  299. package/src/templates/angular/entity/components/presentation/detail/_entity_-detail.component.ts.ejs +47 -0
  300. package/src/templates/angular/entity/components/presentation/list/_entity_-list.component.html.ejs +419 -0
  301. package/src/templates/angular/entity/components/presentation/list/_entity_-list.component.scss.ejs +48 -0
  302. package/src/templates/angular/entity/components/presentation/list/_entity_-list.component.ts.ejs +592 -0
  303. package/src/templates/angular/entity/service/_entity_.service.ts.ejs +153 -0
  304. package/src/templates/angular/entity/settings/_entity_.settings.ts.ejs +49 -0
  305. package/src/templates/angular/enums/_enum_.model.ts.ejs +11 -0
  306. package/src/templates/angular/iam/change-password.component.html.ejs +39 -0
  307. package/src/templates/angular/iam/change-password.component.ts.ejs +44 -0
  308. package/src/templates/angular/iam/no-access.component.ts.ejs +17 -0
  309. package/src/templates/angular/iam/role-list.component.html.ejs +331 -0
  310. package/src/templates/angular/iam/role-list.component.scss.ejs +107 -0
  311. package/src/templates/angular/iam/role-list.component.ts.ejs +597 -0
  312. package/src/templates/angular/iam/role-management/role-header.component.html.ejs +51 -0
  313. package/src/templates/angular/iam/role-management/role-header.component.ts.ejs +45 -0
  314. package/src/templates/angular/iam/role-management/role-inheritance.component.html.ejs +15 -0
  315. package/src/templates/angular/iam/role-management/role-inheritance.component.ts.ejs +19 -0
  316. package/src/templates/angular/iam/role-management/role-permissions-panel.component.css.ejs +24 -0
  317. package/src/templates/angular/iam/role-management/role-permissions-panel.component.html.ejs +108 -0
  318. package/src/templates/angular/iam/role-management/role-permissions-panel.component.ts.ejs +122 -0
  319. package/src/templates/angular/iam/role-management/role-users.component.html.ejs +104 -0
  320. package/src/templates/angular/iam/role-management/role-users.component.ts.ejs +53 -0
  321. package/src/templates/angular/iam/role-management/user-select-dialog.component.html.ejs +113 -0
  322. package/src/templates/angular/iam/role-management/user-select-dialog.component.ts.ejs +157 -0
  323. package/src/templates/angular/iam/role-permission-matrix.component.html.ejs +355 -0
  324. package/src/templates/angular/iam/role-permission-matrix.component.scss.ejs +217 -0
  325. package/src/templates/angular/iam/role-permission-matrix.component.ts.ejs +800 -0
  326. package/src/templates/angular/iam/screen-catalog.ts.ejs +147 -0
  327. package/src/templates/angular/iam/shared/confirm-dialog.component.ts.ejs +83 -0
  328. package/src/templates/angular/iam/shared/matrix-hierarchy.util.ts.ejs +196 -0
  329. package/src/templates/angular/iam/shared/permission-matrix-sound.ts.ejs +59 -0
  330. package/src/templates/angular/iam/shared/role-display.util.ts.ejs +43 -0
  331. package/src/templates/angular/iam/shared/role-permission-skeleton.component.ts.ejs +54 -0
  332. package/src/templates/angular/iam/shared/screen-matrix.util.ts.ejs +554 -0
  333. package/src/templates/angular/iam/shared/screen-navigation-map.ts.ejs +187 -0
  334. package/src/templates/angular/iam/shared/screen-navigation.registry.ts.ejs +64 -0
  335. package/src/templates/angular/iam/shared/text-highlight.pipe.ts.ejs +39 -0
  336. package/src/templates/angular/iam/user-access-matrix.component.html.ejs +212 -0
  337. package/src/templates/angular/iam/user-access-matrix.component.scss.ejs +34 -0
  338. package/src/templates/angular/iam/user-access-matrix.component.ts.ejs +239 -0
  339. package/src/templates/angular/iam/user-detail.component.html.ejs +143 -0
  340. package/src/templates/angular/iam/user-detail.component.ts.ejs +108 -0
  341. package/src/templates/angular/iam/user-form.component.html.ejs +63 -0
  342. package/src/templates/angular/iam/user-form.component.ts.ejs +100 -0
  343. package/src/templates/angular/iam/user-list.component.html.ejs +369 -0
  344. package/src/templates/angular/iam/user-list.component.scss.ejs +242 -0
  345. package/src/templates/angular/iam/user-list.component.ts.ejs +446 -0
  346. package/src/templates/angular/iam/user-management.routes.ts.ejs +47 -0
  347. package/src/templates/angular/iam/user-permission-matrix.component.html.ejs +231 -0
  348. package/src/templates/angular/iam/user-permission-matrix.component.scss.ejs +216 -0
  349. package/src/templates/angular/iam/user-permission-matrix.component.ts.ejs +516 -0
  350. package/src/templates/angular/shared/base/audit-user-name.pipe.ts.ejs +69 -0
  351. package/src/templates/angular/shared/base/base-filter.component.ts.ejs +245 -0
  352. package/src/templates/angular/shared/base/base-form.component.ts.ejs +109 -0
  353. package/src/templates/angular/shared/base/base-list.component.ts.ejs +507 -0
  354. package/src/templates/angular/shared/base/filter-types.ts.ejs +55 -0
  355. package/src/templates/angular/shared/base/input-format.directive.ts.ejs +47 -0
  356. package/src/templates/angular/shared/base/input-format.ts.ejs +15 -0
  357. package/src/templates/angular/shared/confirm-with-input-dialog.component.ts.ejs +91 -0
  358. package/src/templates/angular/shared/confirmation-dialog.component.ts.ejs +80 -0
  359. package/src/templates/angular/shared/list-styles.css.ejs +103 -0
  360. package/src/templates/angular/shared/loading-overlay.component.ts.ejs +24 -0
  361. package/src/templates/angular/shared/resizable.directive.ts.ejs +115 -0
  362. package/src/templates/angular/shared/snackbar-styles.css.ejs +11 -0
  363. package/src/templates/fuse-packs/access-control-tools/access-control-sync.js +819 -0
  364. package/src/templates/fuse-packs/access-control-tools/build-rename-map.js +67 -0
  365. package/src/templates/fuse-packs/access-control-tools/inject-qa-ids.js +14 -0
  366. package/src/templates/fuse-packs/access-control-tools/lib/hierarchy-scanner.js +628 -0
  367. package/src/templates/fuse-packs/access-control-tools/lib/hierarchy-scanner.test.js +323 -0
  368. package/src/templates/fuse-packs/access-control-tools/lib/html-scanner.js +362 -0
  369. package/src/templates/fuse-packs/access-control-tools/lib/id-rules.duplicate.test.js +136 -0
  370. package/src/templates/fuse-packs/access-control-tools/lib/id-rules.js +1095 -0
  371. package/src/templates/fuse-packs/access-control-tools/lib/ts-component-index.js +482 -0
  372. package/src/templates/fuse-packs/access-control-tools/output/.gitkeep +0 -0
  373. package/src/templates/fuse-packs/access-control-tools/run.sh +223 -0
  374. package/src/templates/fuse-packs/access-control-tools/scan-access-control.js +14 -0
  375. package/src/templates/fuse-packs/iam-assets/sound/apple-play.mp3 +0 -0
  376. package/src/templates/fuse-packs/iam-assets/sound/remove.mp3 +0 -0
  377. package/src/templates/generator/README.md +12 -0
  378. package/src/templates/testing/ci.cjs +45 -0
  379. package/src/templates/testing/mock.cjs +149 -0
  380. package/src/templates/testing/playwright.config.cjs +25 -0
  381. package/src/templates/testing/serve.cjs +22 -0
  382. package/src/templates/testing/smoke.spec.cjs +180 -0
  383. package/src/utils/branding.js +39 -0
  384. package/src/utils/colors.js +18 -0
  385. package/src/utils/diff.js +109 -0
  386. package/src/utils/merger.js +115 -0
  387. package/src/validator/backend-diagnostics.js +30 -0
  388. package/src/validator/blueprint-validator.js +276 -0
  389. package/src/validator/diagnostics.js +608 -0
  390. package/src/validator/pattern.js +28 -0
  391. package/test/auth-interceptor.js +84 -0
  392. package/test/auth-provision-checks.js +297 -0
  393. package/test/field-preferences.js +145 -0
  394. package/test/fixtures/field-profile.gdl +7 -0
  395. package/test/fixtures/mock.jdl +17 -0
  396. package/test/fixtures/mock.png +0 -0
  397. package/test/fixtures/performance/config.yml +33 -0
  398. package/test/fixtures/performance/large.gdl +199 -0
  399. package/test/fixtures/performance/small.gdl +7 -0
  400. package/test/fixtures/quality/custom.yml +22 -0
  401. package/test/fixtures/quality/go-duck.yml +22 -0
  402. package/test/fixtures/quality/jhipster.yml +30 -0
  403. package/test/fixtures/quality/representative.gdl +14 -0
  404. package/test/list-state.js +138 -0
  405. package/test/micro-functions-layout.js +95 -0
  406. package/test/performance-generation.js +32 -0
  407. package/test/pmb-preset.js +127 -0
  408. package/test/project-workflow.js +111 -0
  409. package/test/quality-features.js +250 -0
  410. package/test/verify-commands.js +83 -0
  411. package/test/verify.js +959 -0
  412. package/test-files/GDL/example.gdl +15 -0
  413. package/test-files/JDL/example.jdl +15 -0
  414. package/test-files/config/crudforge.config.yml +127 -0
  415. package/test-run.sh +272 -0
@@ -0,0 +1,1620 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { add, format, sub } from 'date-fns';
3
+
4
+ @Injectable({ providedIn: 'root' })
5
+ export class AnalyticsDashboardService {
6
+ // Data
7
+ private now = new Date();
8
+ data = {
9
+ visitors: {
10
+ series: {
11
+ 'this-year': [
12
+ {
13
+ name: 'Visitors',
14
+ data: [
15
+ {
16
+ x: add(sub(this.now, { months: 12 }), { days: 1 }),
17
+ y: 4884,
18
+ },
19
+ {
20
+ x: add(sub(this.now, { months: 12 }), { days: 4 }),
21
+ y: 5351,
22
+ },
23
+ {
24
+ x: add(sub(this.now, { months: 12 }), { days: 7 }),
25
+ y: 5293,
26
+ },
27
+ {
28
+ x: add(sub(this.now, { months: 12 }), { days: 10 }),
29
+ y: 4908,
30
+ },
31
+ {
32
+ x: add(sub(this.now, { months: 12 }), { days: 13 }),
33
+ y: 5027,
34
+ },
35
+ {
36
+ x: add(sub(this.now, { months: 12 }), { days: 16 }),
37
+ y: 4837,
38
+ },
39
+ {
40
+ x: add(sub(this.now, { months: 12 }), { days: 19 }),
41
+ y: 4484,
42
+ },
43
+ {
44
+ x: add(sub(this.now, { months: 12 }), { days: 22 }),
45
+ y: 4071,
46
+ },
47
+ {
48
+ x: add(sub(this.now, { months: 12 }), { days: 25 }),
49
+ y: 4124,
50
+ },
51
+ {
52
+ x: add(sub(this.now, { months: 12 }), { days: 28 }),
53
+ y: 4563,
54
+ },
55
+ {
56
+ x: add(sub(this.now, { months: 11 }), { days: 1 }),
57
+ y: 3820,
58
+ },
59
+ {
60
+ x: add(sub(this.now, { months: 11 }), { days: 4 }),
61
+ y: 3968,
62
+ },
63
+ {
64
+ x: add(sub(this.now, { months: 11 }), { days: 7 }),
65
+ y: 4102,
66
+ },
67
+ {
68
+ x: add(sub(this.now, { months: 11 }), { days: 10 }),
69
+ y: 3941,
70
+ },
71
+ {
72
+ x: add(sub(this.now, { months: 11 }), { days: 13 }),
73
+ y: 3566,
74
+ },
75
+ {
76
+ x: add(sub(this.now, { months: 11 }), { days: 16 }),
77
+ y: 3853,
78
+ },
79
+ {
80
+ x: add(sub(this.now, { months: 11 }), { days: 19 }),
81
+ y: 3853,
82
+ },
83
+ {
84
+ x: add(sub(this.now, { months: 11 }), { days: 22 }),
85
+ y: 4069,
86
+ },
87
+ {
88
+ x: add(sub(this.now, { months: 11 }), { days: 25 }),
89
+ y: 3879,
90
+ },
91
+ {
92
+ x: add(sub(this.now, { months: 11 }), { days: 28 }),
93
+ y: 4298,
94
+ },
95
+ {
96
+ x: add(sub(this.now, { months: 10 }), { days: 1 }),
97
+ y: 4355,
98
+ },
99
+ {
100
+ x: add(sub(this.now, { months: 10 }), { days: 4 }),
101
+ y: 4065,
102
+ },
103
+ {
104
+ x: add(sub(this.now, { months: 10 }), { days: 7 }),
105
+ y: 3650,
106
+ },
107
+ {
108
+ x: add(sub(this.now, { months: 10 }), { days: 10 }),
109
+ y: 3379,
110
+ },
111
+ {
112
+ x: add(sub(this.now, { months: 10 }), { days: 13 }),
113
+ y: 3191,
114
+ },
115
+ {
116
+ x: add(sub(this.now, { months: 10 }), { days: 16 }),
117
+ y: 2968,
118
+ },
119
+ {
120
+ x: add(sub(this.now, { months: 10 }), { days: 19 }),
121
+ y: 2957,
122
+ },
123
+ {
124
+ x: add(sub(this.now, { months: 10 }), { days: 22 }),
125
+ y: 3313,
126
+ },
127
+ {
128
+ x: add(sub(this.now, { months: 10 }), { days: 25 }),
129
+ y: 3708,
130
+ },
131
+ {
132
+ x: add(sub(this.now, { months: 10 }), { days: 28 }),
133
+ y: 3586,
134
+ },
135
+ {
136
+ x: add(sub(this.now, { months: 9 }), { days: 1 }),
137
+ y: 3965,
138
+ },
139
+ {
140
+ x: add(sub(this.now, { months: 9 }), { days: 4 }),
141
+ y: 3901,
142
+ },
143
+ {
144
+ x: add(sub(this.now, { months: 9 }), { days: 7 }),
145
+ y: 3410,
146
+ },
147
+ {
148
+ x: add(sub(this.now, { months: 9 }), { days: 10 }),
149
+ y: 3748,
150
+ },
151
+ {
152
+ x: add(sub(this.now, { months: 9 }), { days: 13 }),
153
+ y: 3929,
154
+ },
155
+ {
156
+ x: add(sub(this.now, { months: 9 }), { days: 16 }),
157
+ y: 3846,
158
+ },
159
+ {
160
+ x: add(sub(this.now, { months: 9 }), { days: 19 }),
161
+ y: 3771,
162
+ },
163
+ {
164
+ x: add(sub(this.now, { months: 9 }), { days: 22 }),
165
+ y: 4015,
166
+ },
167
+ {
168
+ x: add(sub(this.now, { months: 9 }), { days: 25 }),
169
+ y: 3589,
170
+ },
171
+ {
172
+ x: add(sub(this.now, { months: 9 }), { days: 28 }),
173
+ y: 3150,
174
+ },
175
+ {
176
+ x: add(sub(this.now, { months: 8 }), { days: 1 }),
177
+ y: 3050,
178
+ },
179
+ {
180
+ x: add(sub(this.now, { months: 8 }), { days: 4 }),
181
+ y: 2574,
182
+ },
183
+ {
184
+ x: add(sub(this.now, { months: 8 }), { days: 7 }),
185
+ y: 2823,
186
+ },
187
+ {
188
+ x: add(sub(this.now, { months: 8 }), { days: 10 }),
189
+ y: 2848,
190
+ },
191
+ {
192
+ x: add(sub(this.now, { months: 8 }), { days: 13 }),
193
+ y: 3000,
194
+ },
195
+ {
196
+ x: add(sub(this.now, { months: 8 }), { days: 16 }),
197
+ y: 3216,
198
+ },
199
+ {
200
+ x: add(sub(this.now, { months: 8 }), { days: 19 }),
201
+ y: 3299,
202
+ },
203
+ {
204
+ x: add(sub(this.now, { months: 8 }), { days: 22 }),
205
+ y: 3768,
206
+ },
207
+ {
208
+ x: add(sub(this.now, { months: 8 }), { days: 25 }),
209
+ y: 3524,
210
+ },
211
+ {
212
+ x: add(sub(this.now, { months: 8 }), { days: 28 }),
213
+ y: 3918,
214
+ },
215
+ {
216
+ x: add(sub(this.now, { months: 7 }), { days: 1 }),
217
+ y: 4145,
218
+ },
219
+ {
220
+ x: add(sub(this.now, { months: 7 }), { days: 4 }),
221
+ y: 4378,
222
+ },
223
+ {
224
+ x: add(sub(this.now, { months: 7 }), { days: 7 }),
225
+ y: 3941,
226
+ },
227
+ {
228
+ x: add(sub(this.now, { months: 7 }), { days: 10 }),
229
+ y: 3932,
230
+ },
231
+ {
232
+ x: add(sub(this.now, { months: 7 }), { days: 13 }),
233
+ y: 4380,
234
+ },
235
+ {
236
+ x: add(sub(this.now, { months: 7 }), { days: 16 }),
237
+ y: 4243,
238
+ },
239
+ {
240
+ x: add(sub(this.now, { months: 7 }), { days: 19 }),
241
+ y: 4367,
242
+ },
243
+ {
244
+ x: add(sub(this.now, { months: 7 }), { days: 22 }),
245
+ y: 3879,
246
+ },
247
+ {
248
+ x: add(sub(this.now, { months: 7 }), { days: 25 }),
249
+ y: 4357,
250
+ },
251
+ {
252
+ x: add(sub(this.now, { months: 7 }), { days: 28 }),
253
+ y: 4181,
254
+ },
255
+ {
256
+ x: add(sub(this.now, { months: 6 }), { days: 1 }),
257
+ y: 4619,
258
+ },
259
+ {
260
+ x: add(sub(this.now, { months: 6 }), { days: 4 }),
261
+ y: 4769,
262
+ },
263
+ {
264
+ x: add(sub(this.now, { months: 6 }), { days: 7 }),
265
+ y: 4901,
266
+ },
267
+ {
268
+ x: add(sub(this.now, { months: 6 }), { days: 10 }),
269
+ y: 4640,
270
+ },
271
+ {
272
+ x: add(sub(this.now, { months: 6 }), { days: 13 }),
273
+ y: 5128,
274
+ },
275
+ {
276
+ x: add(sub(this.now, { months: 6 }), { days: 16 }),
277
+ y: 5015,
278
+ },
279
+ {
280
+ x: add(sub(this.now, { months: 6 }), { days: 19 }),
281
+ y: 5360,
282
+ },
283
+ {
284
+ x: add(sub(this.now, { months: 6 }), { days: 22 }),
285
+ y: 5608,
286
+ },
287
+ {
288
+ x: add(sub(this.now, { months: 6 }), { days: 25 }),
289
+ y: 5272,
290
+ },
291
+ {
292
+ x: add(sub(this.now, { months: 6 }), { days: 28 }),
293
+ y: 5660,
294
+ },
295
+ {
296
+ x: add(sub(this.now, { months: 5 }), { days: 1 }),
297
+ y: 5836,
298
+ },
299
+ {
300
+ x: add(sub(this.now, { months: 5 }), { days: 4 }),
301
+ y: 5659,
302
+ },
303
+ {
304
+ x: add(sub(this.now, { months: 5 }), { days: 7 }),
305
+ y: 5575,
306
+ },
307
+ {
308
+ x: add(sub(this.now, { months: 5 }), { days: 10 }),
309
+ y: 5474,
310
+ },
311
+ {
312
+ x: add(sub(this.now, { months: 5 }), { days: 13 }),
313
+ y: 5427,
314
+ },
315
+ {
316
+ x: add(sub(this.now, { months: 5 }), { days: 16 }),
317
+ y: 5865,
318
+ },
319
+ {
320
+ x: add(sub(this.now, { months: 5 }), { days: 19 }),
321
+ y: 5700,
322
+ },
323
+ {
324
+ x: add(sub(this.now, { months: 5 }), { days: 22 }),
325
+ y: 6052,
326
+ },
327
+ {
328
+ x: add(sub(this.now, { months: 5 }), { days: 25 }),
329
+ y: 5760,
330
+ },
331
+ {
332
+ x: add(sub(this.now, { months: 5 }), { days: 28 }),
333
+ y: 5648,
334
+ },
335
+ {
336
+ x: add(sub(this.now, { months: 4 }), { days: 1 }),
337
+ y: 5435,
338
+ },
339
+ {
340
+ x: add(sub(this.now, { months: 4 }), { days: 4 }),
341
+ y: 5239,
342
+ },
343
+ {
344
+ x: add(sub(this.now, { months: 4 }), { days: 7 }),
345
+ y: 5452,
346
+ },
347
+ {
348
+ x: add(sub(this.now, { months: 4 }), { days: 10 }),
349
+ y: 5416,
350
+ },
351
+ {
352
+ x: add(sub(this.now, { months: 4 }), { days: 13 }),
353
+ y: 5195,
354
+ },
355
+ {
356
+ x: add(sub(this.now, { months: 4 }), { days: 16 }),
357
+ y: 5119,
358
+ },
359
+ {
360
+ x: add(sub(this.now, { months: 4 }), { days: 19 }),
361
+ y: 4635,
362
+ },
363
+ {
364
+ x: add(sub(this.now, { months: 4 }), { days: 22 }),
365
+ y: 4833,
366
+ },
367
+ {
368
+ x: add(sub(this.now, { months: 4 }), { days: 25 }),
369
+ y: 4584,
370
+ },
371
+ {
372
+ x: add(sub(this.now, { months: 4 }), { days: 28 }),
373
+ y: 4822,
374
+ },
375
+ {
376
+ x: add(sub(this.now, { months: 3 }), { days: 1 }),
377
+ y: 4582,
378
+ },
379
+ {
380
+ x: add(sub(this.now, { months: 3 }), { days: 4 }),
381
+ y: 4348,
382
+ },
383
+ {
384
+ x: add(sub(this.now, { months: 3 }), { days: 7 }),
385
+ y: 4132,
386
+ },
387
+ {
388
+ x: add(sub(this.now, { months: 3 }), { days: 10 }),
389
+ y: 4099,
390
+ },
391
+ {
392
+ x: add(sub(this.now, { months: 3 }), { days: 13 }),
393
+ y: 3849,
394
+ },
395
+ {
396
+ x: add(sub(this.now, { months: 3 }), { days: 16 }),
397
+ y: 4010,
398
+ },
399
+ {
400
+ x: add(sub(this.now, { months: 3 }), { days: 19 }),
401
+ y: 4486,
402
+ },
403
+ {
404
+ x: add(sub(this.now, { months: 3 }), { days: 22 }),
405
+ y: 4403,
406
+ },
407
+ {
408
+ x: add(sub(this.now, { months: 3 }), { days: 25 }),
409
+ y: 4141,
410
+ },
411
+ {
412
+ x: add(sub(this.now, { months: 3 }), { days: 28 }),
413
+ y: 3780,
414
+ },
415
+ {
416
+ x: add(sub(this.now, { months: 2 }), { days: 1 }),
417
+ y: 3524,
418
+ },
419
+ {
420
+ x: add(sub(this.now, { months: 2 }), { days: 4 }),
421
+ y: 3212,
422
+ },
423
+ {
424
+ x: add(sub(this.now, { months: 2 }), { days: 7 }),
425
+ y: 3568,
426
+ },
427
+ {
428
+ x: add(sub(this.now, { months: 2 }), { days: 10 }),
429
+ y: 3800,
430
+ },
431
+ {
432
+ x: add(sub(this.now, { months: 2 }), { days: 13 }),
433
+ y: 3796,
434
+ },
435
+ {
436
+ x: add(sub(this.now, { months: 2 }), { days: 16 }),
437
+ y: 3870,
438
+ },
439
+ {
440
+ x: add(sub(this.now, { months: 2 }), { days: 19 }),
441
+ y: 3745,
442
+ },
443
+ {
444
+ x: add(sub(this.now, { months: 2 }), { days: 22 }),
445
+ y: 3751,
446
+ },
447
+ {
448
+ x: add(sub(this.now, { months: 2 }), { days: 25 }),
449
+ y: 3310,
450
+ },
451
+ {
452
+ x: add(sub(this.now, { months: 2 }), { days: 28 }),
453
+ y: 3509,
454
+ },
455
+ {
456
+ x: add(sub(this.now, { months: 1 }), { days: 1 }),
457
+ y: 3187,
458
+ },
459
+ {
460
+ x: add(sub(this.now, { months: 1 }), { days: 4 }),
461
+ y: 2918,
462
+ },
463
+ {
464
+ x: add(sub(this.now, { months: 1 }), { days: 7 }),
465
+ y: 3191,
466
+ },
467
+ {
468
+ x: add(sub(this.now, { months: 1 }), { days: 10 }),
469
+ y: 3437,
470
+ },
471
+ {
472
+ x: add(sub(this.now, { months: 1 }), { days: 13 }),
473
+ y: 3291,
474
+ },
475
+ {
476
+ x: add(sub(this.now, { months: 1 }), { days: 16 }),
477
+ y: 3317,
478
+ },
479
+ {
480
+ x: add(sub(this.now, { months: 1 }), { days: 19 }),
481
+ y: 3716,
482
+ },
483
+ {
484
+ x: add(sub(this.now, { months: 1 }), { days: 22 }),
485
+ y: 3260,
486
+ },
487
+ {
488
+ x: add(sub(this.now, { months: 1 }), { days: 25 }),
489
+ y: 3694,
490
+ },
491
+ {
492
+ x: add(sub(this.now, { months: 1 }), { days: 28 }),
493
+ y: 3598,
494
+ },
495
+ ],
496
+ },
497
+ ],
498
+ 'last-year': [
499
+ {
500
+ name: 'Visitors',
501
+ data: [
502
+ {
503
+ x: add(sub(this.now, { months: 24 }), { days: 1 }),
504
+ y: 2021,
505
+ },
506
+ {
507
+ x: add(sub(this.now, { months: 24 }), { days: 4 }),
508
+ y: 1749,
509
+ },
510
+ {
511
+ x: add(sub(this.now, { months: 24 }), { days: 7 }),
512
+ y: 1654,
513
+ },
514
+ {
515
+ x: add(sub(this.now, { months: 24 }), { days: 10 }),
516
+ y: 1900,
517
+ },
518
+ {
519
+ x: add(sub(this.now, { months: 24 }), { days: 13 }),
520
+ y: 1647,
521
+ },
522
+ {
523
+ x: add(sub(this.now, { months: 24 }), { days: 16 }),
524
+ y: 1315,
525
+ },
526
+ {
527
+ x: add(sub(this.now, { months: 24 }), { days: 19 }),
528
+ y: 1807,
529
+ },
530
+ {
531
+ x: add(sub(this.now, { months: 24 }), { days: 22 }),
532
+ y: 1793,
533
+ },
534
+ {
535
+ x: add(sub(this.now, { months: 24 }), { days: 25 }),
536
+ y: 1892,
537
+ },
538
+ {
539
+ x: add(sub(this.now, { months: 24 }), { days: 28 }),
540
+ y: 1846,
541
+ },
542
+ {
543
+ x: add(sub(this.now, { months: 23 }), { days: 1 }),
544
+ y: 1804,
545
+ },
546
+ {
547
+ x: add(sub(this.now, { months: 23 }), { days: 4 }),
548
+ y: 1778,
549
+ },
550
+ {
551
+ x: add(sub(this.now, { months: 23 }), { days: 7 }),
552
+ y: 2015,
553
+ },
554
+ {
555
+ x: add(sub(this.now, { months: 23 }), { days: 10 }),
556
+ y: 1892,
557
+ },
558
+ {
559
+ x: add(sub(this.now, { months: 23 }), { days: 13 }),
560
+ y: 1708,
561
+ },
562
+ {
563
+ x: add(sub(this.now, { months: 23 }), { days: 16 }),
564
+ y: 1711,
565
+ },
566
+ {
567
+ x: add(sub(this.now, { months: 23 }), { days: 19 }),
568
+ y: 1570,
569
+ },
570
+ {
571
+ x: add(sub(this.now, { months: 23 }), { days: 22 }),
572
+ y: 1507,
573
+ },
574
+ {
575
+ x: add(sub(this.now, { months: 23 }), { days: 25 }),
576
+ y: 1451,
577
+ },
578
+ {
579
+ x: add(sub(this.now, { months: 23 }), { days: 28 }),
580
+ y: 1522,
581
+ },
582
+ {
583
+ x: add(sub(this.now, { months: 22 }), { days: 1 }),
584
+ y: 1977,
585
+ },
586
+ {
587
+ x: add(sub(this.now, { months: 22 }), { days: 4 }),
588
+ y: 2367,
589
+ },
590
+ {
591
+ x: add(sub(this.now, { months: 22 }), { days: 7 }),
592
+ y: 2798,
593
+ },
594
+ {
595
+ x: add(sub(this.now, { months: 22 }), { days: 10 }),
596
+ y: 3080,
597
+ },
598
+ {
599
+ x: add(sub(this.now, { months: 22 }), { days: 13 }),
600
+ y: 2856,
601
+ },
602
+ {
603
+ x: add(sub(this.now, { months: 22 }), { days: 16 }),
604
+ y: 2745,
605
+ },
606
+ {
607
+ x: add(sub(this.now, { months: 22 }), { days: 19 }),
608
+ y: 2750,
609
+ },
610
+ {
611
+ x: add(sub(this.now, { months: 22 }), { days: 22 }),
612
+ y: 2728,
613
+ },
614
+ {
615
+ x: add(sub(this.now, { months: 22 }), { days: 25 }),
616
+ y: 2436,
617
+ },
618
+ {
619
+ x: add(sub(this.now, { months: 22 }), { days: 28 }),
620
+ y: 2289,
621
+ },
622
+ {
623
+ x: add(sub(this.now, { months: 21 }), { days: 1 }),
624
+ y: 2804,
625
+ },
626
+ {
627
+ x: add(sub(this.now, { months: 21 }), { days: 4 }),
628
+ y: 2777,
629
+ },
630
+ {
631
+ x: add(sub(this.now, { months: 21 }), { days: 7 }),
632
+ y: 3024,
633
+ },
634
+ {
635
+ x: add(sub(this.now, { months: 21 }), { days: 10 }),
636
+ y: 2657,
637
+ },
638
+ {
639
+ x: add(sub(this.now, { months: 21 }), { days: 13 }),
640
+ y: 2218,
641
+ },
642
+ {
643
+ x: add(sub(this.now, { months: 21 }), { days: 16 }),
644
+ y: 1964,
645
+ },
646
+ {
647
+ x: add(sub(this.now, { months: 21 }), { days: 19 }),
648
+ y: 1674,
649
+ },
650
+ {
651
+ x: add(sub(this.now, { months: 21 }), { days: 22 }),
652
+ y: 1721,
653
+ },
654
+ {
655
+ x: add(sub(this.now, { months: 21 }), { days: 25 }),
656
+ y: 2005,
657
+ },
658
+ {
659
+ x: add(sub(this.now, { months: 21 }), { days: 28 }),
660
+ y: 1613,
661
+ },
662
+ {
663
+ x: add(sub(this.now, { months: 20 }), { days: 1 }),
664
+ y: 1071,
665
+ },
666
+ {
667
+ x: add(sub(this.now, { months: 20 }), { days: 4 }),
668
+ y: 1079,
669
+ },
670
+ {
671
+ x: add(sub(this.now, { months: 20 }), { days: 7 }),
672
+ y: 1133,
673
+ },
674
+ {
675
+ x: add(sub(this.now, { months: 20 }), { days: 10 }),
676
+ y: 1536,
677
+ },
678
+ {
679
+ x: add(sub(this.now, { months: 20 }), { days: 13 }),
680
+ y: 2016,
681
+ },
682
+ {
683
+ x: add(sub(this.now, { months: 20 }), { days: 16 }),
684
+ y: 2256,
685
+ },
686
+ {
687
+ x: add(sub(this.now, { months: 20 }), { days: 19 }),
688
+ y: 1934,
689
+ },
690
+ {
691
+ x: add(sub(this.now, { months: 20 }), { days: 22 }),
692
+ y: 1832,
693
+ },
694
+ {
695
+ x: add(sub(this.now, { months: 20 }), { days: 25 }),
696
+ y: 2075,
697
+ },
698
+ {
699
+ x: add(sub(this.now, { months: 20 }), { days: 28 }),
700
+ y: 1709,
701
+ },
702
+ {
703
+ x: add(sub(this.now, { months: 19 }), { days: 1 }),
704
+ y: 1831,
705
+ },
706
+ {
707
+ x: add(sub(this.now, { months: 19 }), { days: 4 }),
708
+ y: 1434,
709
+ },
710
+ {
711
+ x: add(sub(this.now, { months: 19 }), { days: 7 }),
712
+ y: 1293,
713
+ },
714
+ {
715
+ x: add(sub(this.now, { months: 19 }), { days: 10 }),
716
+ y: 1064,
717
+ },
718
+ {
719
+ x: add(sub(this.now, { months: 19 }), { days: 13 }),
720
+ y: 1080,
721
+ },
722
+ {
723
+ x: add(sub(this.now, { months: 19 }), { days: 16 }),
724
+ y: 1032,
725
+ },
726
+ {
727
+ x: add(sub(this.now, { months: 19 }), { days: 19 }),
728
+ y: 1280,
729
+ },
730
+ {
731
+ x: add(sub(this.now, { months: 19 }), { days: 22 }),
732
+ y: 1344,
733
+ },
734
+ {
735
+ x: add(sub(this.now, { months: 19 }), { days: 25 }),
736
+ y: 1835,
737
+ },
738
+ {
739
+ x: add(sub(this.now, { months: 19 }), { days: 28 }),
740
+ y: 2287,
741
+ },
742
+ {
743
+ x: add(sub(this.now, { months: 18 }), { days: 1 }),
744
+ y: 2692,
745
+ },
746
+ {
747
+ x: add(sub(this.now, { months: 18 }), { days: 4 }),
748
+ y: 2250,
749
+ },
750
+ {
751
+ x: add(sub(this.now, { months: 18 }), { days: 7 }),
752
+ y: 1814,
753
+ },
754
+ {
755
+ x: add(sub(this.now, { months: 18 }), { days: 10 }),
756
+ y: 1906,
757
+ },
758
+ {
759
+ x: add(sub(this.now, { months: 18 }), { days: 13 }),
760
+ y: 1973,
761
+ },
762
+ {
763
+ x: add(sub(this.now, { months: 18 }), { days: 16 }),
764
+ y: 1882,
765
+ },
766
+ {
767
+ x: add(sub(this.now, { months: 18 }), { days: 19 }),
768
+ y: 2333,
769
+ },
770
+ {
771
+ x: add(sub(this.now, { months: 18 }), { days: 22 }),
772
+ y: 2048,
773
+ },
774
+ {
775
+ x: add(sub(this.now, { months: 18 }), { days: 25 }),
776
+ y: 2547,
777
+ },
778
+ {
779
+ x: add(sub(this.now, { months: 18 }), { days: 28 }),
780
+ y: 2884,
781
+ },
782
+ {
783
+ x: add(sub(this.now, { months: 17 }), { days: 1 }),
784
+ y: 2771,
785
+ },
786
+ {
787
+ x: add(sub(this.now, { months: 17 }), { days: 4 }),
788
+ y: 2522,
789
+ },
790
+ {
791
+ x: add(sub(this.now, { months: 17 }), { days: 7 }),
792
+ y: 2543,
793
+ },
794
+ {
795
+ x: add(sub(this.now, { months: 17 }), { days: 10 }),
796
+ y: 2413,
797
+ },
798
+ {
799
+ x: add(sub(this.now, { months: 17 }), { days: 13 }),
800
+ y: 2002,
801
+ },
802
+ {
803
+ x: add(sub(this.now, { months: 17 }), { days: 16 }),
804
+ y: 1838,
805
+ },
806
+ {
807
+ x: add(sub(this.now, { months: 17 }), { days: 19 }),
808
+ y: 1830,
809
+ },
810
+ {
811
+ x: add(sub(this.now, { months: 17 }), { days: 22 }),
812
+ y: 1872,
813
+ },
814
+ {
815
+ x: add(sub(this.now, { months: 17 }), { days: 25 }),
816
+ y: 2246,
817
+ },
818
+ {
819
+ x: add(sub(this.now, { months: 17 }), { days: 28 }),
820
+ y: 2171,
821
+ },
822
+ {
823
+ x: add(sub(this.now, { months: 16 }), { days: 1 }),
824
+ y: 2988,
825
+ },
826
+ {
827
+ x: add(sub(this.now, { months: 16 }), { days: 4 }),
828
+ y: 2694,
829
+ },
830
+ {
831
+ x: add(sub(this.now, { months: 16 }), { days: 7 }),
832
+ y: 2806,
833
+ },
834
+ {
835
+ x: add(sub(this.now, { months: 16 }), { days: 10 }),
836
+ y: 3040,
837
+ },
838
+ {
839
+ x: add(sub(this.now, { months: 16 }), { days: 13 }),
840
+ y: 2898,
841
+ },
842
+ {
843
+ x: add(sub(this.now, { months: 16 }), { days: 16 }),
844
+ y: 3013,
845
+ },
846
+ {
847
+ x: add(sub(this.now, { months: 16 }), { days: 19 }),
848
+ y: 2760,
849
+ },
850
+ {
851
+ x: add(sub(this.now, { months: 16 }), { days: 22 }),
852
+ y: 3021,
853
+ },
854
+ {
855
+ x: add(sub(this.now, { months: 16 }), { days: 25 }),
856
+ y: 2688,
857
+ },
858
+ {
859
+ x: add(sub(this.now, { months: 16 }), { days: 28 }),
860
+ y: 2572,
861
+ },
862
+ {
863
+ x: add(sub(this.now, { months: 15 }), { days: 1 }),
864
+ y: 2789,
865
+ },
866
+ {
867
+ x: add(sub(this.now, { months: 15 }), { days: 4 }),
868
+ y: 3069,
869
+ },
870
+ {
871
+ x: add(sub(this.now, { months: 15 }), { days: 7 }),
872
+ y: 3142,
873
+ },
874
+ {
875
+ x: add(sub(this.now, { months: 15 }), { days: 10 }),
876
+ y: 3614,
877
+ },
878
+ {
879
+ x: add(sub(this.now, { months: 15 }), { days: 13 }),
880
+ y: 3202,
881
+ },
882
+ {
883
+ x: add(sub(this.now, { months: 15 }), { days: 16 }),
884
+ y: 2730,
885
+ },
886
+ {
887
+ x: add(sub(this.now, { months: 15 }), { days: 19 }),
888
+ y: 2951,
889
+ },
890
+ {
891
+ x: add(sub(this.now, { months: 15 }), { days: 22 }),
892
+ y: 3267,
893
+ },
894
+ {
895
+ x: add(sub(this.now, { months: 15 }), { days: 25 }),
896
+ y: 2882,
897
+ },
898
+ {
899
+ x: add(sub(this.now, { months: 15 }), { days: 28 }),
900
+ y: 2885,
901
+ },
902
+ {
903
+ x: add(sub(this.now, { months: 14 }), { days: 1 }),
904
+ y: 2915,
905
+ },
906
+ {
907
+ x: add(sub(this.now, { months: 14 }), { days: 4 }),
908
+ y: 2790,
909
+ },
910
+ {
911
+ x: add(sub(this.now, { months: 14 }), { days: 7 }),
912
+ y: 3071,
913
+ },
914
+ {
915
+ x: add(sub(this.now, { months: 14 }), { days: 10 }),
916
+ y: 2802,
917
+ },
918
+ {
919
+ x: add(sub(this.now, { months: 14 }), { days: 13 }),
920
+ y: 2382,
921
+ },
922
+ {
923
+ x: add(sub(this.now, { months: 14 }), { days: 16 }),
924
+ y: 1883,
925
+ },
926
+ {
927
+ x: add(sub(this.now, { months: 14 }), { days: 19 }),
928
+ y: 1448,
929
+ },
930
+ {
931
+ x: add(sub(this.now, { months: 14 }), { days: 22 }),
932
+ y: 1176,
933
+ },
934
+ {
935
+ x: add(sub(this.now, { months: 14 }), { days: 25 }),
936
+ y: 1275,
937
+ },
938
+ {
939
+ x: add(sub(this.now, { months: 14 }), { days: 28 }),
940
+ y: 1136,
941
+ },
942
+ {
943
+ x: add(sub(this.now, { months: 13 }), { days: 1 }),
944
+ y: 1160,
945
+ },
946
+ {
947
+ x: add(sub(this.now, { months: 13 }), { days: 4 }),
948
+ y: 1524,
949
+ },
950
+ {
951
+ x: add(sub(this.now, { months: 13 }), { days: 7 }),
952
+ y: 1305,
953
+ },
954
+ {
955
+ x: add(sub(this.now, { months: 13 }), { days: 10 }),
956
+ y: 1725,
957
+ },
958
+ {
959
+ x: add(sub(this.now, { months: 13 }), { days: 13 }),
960
+ y: 1850,
961
+ },
962
+ {
963
+ x: add(sub(this.now, { months: 13 }), { days: 16 }),
964
+ y: 2304,
965
+ },
966
+ {
967
+ x: add(sub(this.now, { months: 13 }), { days: 19 }),
968
+ y: 2187,
969
+ },
970
+ {
971
+ x: add(sub(this.now, { months: 13 }), { days: 22 }),
972
+ y: 2597,
973
+ },
974
+ {
975
+ x: add(sub(this.now, { months: 13 }), { days: 25 }),
976
+ y: 2246,
977
+ },
978
+ {
979
+ x: add(sub(this.now, { months: 13 }), { days: 28 }),
980
+ y: 1767,
981
+ },
982
+ ],
983
+ },
984
+ ],
985
+ },
986
+ },
987
+ conversions: {
988
+ amount: 4123,
989
+ labels: [
990
+ format(sub(this.now, { days: 47 }), 'dd MMM') +
991
+ ' - ' +
992
+ format(sub(this.now, { days: 40 }), 'dd MMM'),
993
+ format(sub(this.now, { days: 39 }), 'dd MMM') +
994
+ ' - ' +
995
+ format(sub(this.now, { days: 32 }), 'dd MMM'),
996
+ format(sub(this.now, { days: 31 }), 'dd MMM') +
997
+ ' - ' +
998
+ format(sub(this.now, { days: 24 }), 'dd MMM'),
999
+ format(sub(this.now, { days: 23 }), 'dd MMM') +
1000
+ ' - ' +
1001
+ format(sub(this.now, { days: 16 }), 'dd MMM'),
1002
+ format(sub(this.now, { days: 15 }), 'dd MMM') +
1003
+ ' - ' +
1004
+ format(sub(this.now, { days: 8 }), 'dd MMM'),
1005
+ format(sub(this.now, { days: 7 }), 'dd MMM') +
1006
+ ' - ' +
1007
+ format(this.now, 'dd MMM'),
1008
+ ],
1009
+ series: [
1010
+ {
1011
+ name: 'Conversions',
1012
+ data: [4412, 4345, 4541, 4677, 4322, 4123],
1013
+ },
1014
+ ],
1015
+ },
1016
+ impressions: {
1017
+ amount: 46085,
1018
+ labels: [
1019
+ format(sub(this.now, { days: 31 }), 'dd MMM') +
1020
+ ' - ' +
1021
+ format(sub(this.now, { days: 24 }), 'dd MMM'),
1022
+ format(sub(this.now, { days: 23 }), 'dd MMM') +
1023
+ ' - ' +
1024
+ format(sub(this.now, { days: 16 }), 'dd MMM'),
1025
+ format(sub(this.now, { days: 15 }), 'dd MMM') +
1026
+ ' - ' +
1027
+ format(sub(this.now, { days: 8 }), 'dd MMM'),
1028
+ format(sub(this.now, { days: 7 }), 'dd MMM') +
1029
+ ' - ' +
1030
+ format(this.now, 'dd MMM'),
1031
+ ],
1032
+ series: [
1033
+ {
1034
+ name: 'Impressions',
1035
+ data: [11577, 11441, 11544, 11523],
1036
+ },
1037
+ ],
1038
+ },
1039
+ visits: {
1040
+ amount: 62083,
1041
+ labels: [
1042
+ format(sub(this.now, { days: 31 }), 'dd MMM') +
1043
+ ' - ' +
1044
+ format(sub(this.now, { days: 24 }), 'dd MMM'),
1045
+ format(sub(this.now, { days: 23 }), 'dd MMM') +
1046
+ ' - ' +
1047
+ format(sub(this.now, { days: 16 }), 'dd MMM'),
1048
+ format(sub(this.now, { days: 15 }), 'dd MMM') +
1049
+ ' - ' +
1050
+ format(sub(this.now, { days: 8 }), 'dd MMM'),
1051
+ format(sub(this.now, { days: 7 }), 'dd MMM') +
1052
+ ' - ' +
1053
+ format(this.now, 'dd MMM'),
1054
+ ],
1055
+ series: [
1056
+ {
1057
+ name: 'Visits',
1058
+ data: [15521, 15519, 15522, 15521],
1059
+ },
1060
+ ],
1061
+ },
1062
+ visitorsVsPageViews: {
1063
+ overallScore: 472,
1064
+ averageRatio: 45,
1065
+ predictedRatio: 55,
1066
+ series: [
1067
+ {
1068
+ name: 'Page Views',
1069
+ data: [
1070
+ {
1071
+ x: sub(this.now, { days: 65 }),
1072
+ y: 4769,
1073
+ },
1074
+ {
1075
+ x: sub(this.now, { days: 64 }),
1076
+ y: 4901,
1077
+ },
1078
+ {
1079
+ x: sub(this.now, { days: 63 }),
1080
+ y: 4640,
1081
+ },
1082
+ {
1083
+ x: sub(this.now, { days: 62 }),
1084
+ y: 5128,
1085
+ },
1086
+ {
1087
+ x: sub(this.now, { days: 61 }),
1088
+ y: 5015,
1089
+ },
1090
+ {
1091
+ x: sub(this.now, { days: 60 }),
1092
+ y: 5360,
1093
+ },
1094
+ {
1095
+ x: sub(this.now, { days: 59 }),
1096
+ y: 5608,
1097
+ },
1098
+ {
1099
+ x: sub(this.now, { days: 58 }),
1100
+ y: 5272,
1101
+ },
1102
+ {
1103
+ x: sub(this.now, { days: 57 }),
1104
+ y: 5660,
1105
+ },
1106
+ {
1107
+ x: sub(this.now, { days: 56 }),
1108
+ y: 6026,
1109
+ },
1110
+ {
1111
+ x: sub(this.now, { days: 55 }),
1112
+ y: 5836,
1113
+ },
1114
+ {
1115
+ x: sub(this.now, { days: 54 }),
1116
+ y: 5659,
1117
+ },
1118
+ {
1119
+ x: sub(this.now, { days: 53 }),
1120
+ y: 5575,
1121
+ },
1122
+ {
1123
+ x: sub(this.now, { days: 52 }),
1124
+ y: 5474,
1125
+ },
1126
+ {
1127
+ x: sub(this.now, { days: 51 }),
1128
+ y: 5427,
1129
+ },
1130
+ {
1131
+ x: sub(this.now, { days: 50 }),
1132
+ y: 5865,
1133
+ },
1134
+ {
1135
+ x: sub(this.now, { days: 49 }),
1136
+ y: 5700,
1137
+ },
1138
+ {
1139
+ x: sub(this.now, { days: 48 }),
1140
+ y: 6052,
1141
+ },
1142
+ {
1143
+ x: sub(this.now, { days: 47 }),
1144
+ y: 5760,
1145
+ },
1146
+ {
1147
+ x: sub(this.now, { days: 46 }),
1148
+ y: 5648,
1149
+ },
1150
+ {
1151
+ x: sub(this.now, { days: 45 }),
1152
+ y: 5510,
1153
+ },
1154
+ {
1155
+ x: sub(this.now, { days: 44 }),
1156
+ y: 5435,
1157
+ },
1158
+ {
1159
+ x: sub(this.now, { days: 43 }),
1160
+ y: 5239,
1161
+ },
1162
+ {
1163
+ x: sub(this.now, { days: 42 }),
1164
+ y: 5452,
1165
+ },
1166
+ {
1167
+ x: sub(this.now, { days: 41 }),
1168
+ y: 5416,
1169
+ },
1170
+ {
1171
+ x: sub(this.now, { days: 40 }),
1172
+ y: 5195,
1173
+ },
1174
+ {
1175
+ x: sub(this.now, { days: 39 }),
1176
+ y: 5119,
1177
+ },
1178
+ {
1179
+ x: sub(this.now, { days: 38 }),
1180
+ y: 4635,
1181
+ },
1182
+ {
1183
+ x: sub(this.now, { days: 37 }),
1184
+ y: 4833,
1185
+ },
1186
+ {
1187
+ x: sub(this.now, { days: 36 }),
1188
+ y: 4584,
1189
+ },
1190
+ {
1191
+ x: sub(this.now, { days: 35 }),
1192
+ y: 4822,
1193
+ },
1194
+ {
1195
+ x: sub(this.now, { days: 34 }),
1196
+ y: 4330,
1197
+ },
1198
+ {
1199
+ x: sub(this.now, { days: 33 }),
1200
+ y: 4582,
1201
+ },
1202
+ {
1203
+ x: sub(this.now, { days: 32 }),
1204
+ y: 4348,
1205
+ },
1206
+ {
1207
+ x: sub(this.now, { days: 31 }),
1208
+ y: 4132,
1209
+ },
1210
+ {
1211
+ x: sub(this.now, { days: 30 }),
1212
+ y: 4099,
1213
+ },
1214
+ {
1215
+ x: sub(this.now, { days: 29 }),
1216
+ y: 3849,
1217
+ },
1218
+ {
1219
+ x: sub(this.now, { days: 28 }),
1220
+ y: 4010,
1221
+ },
1222
+ {
1223
+ x: sub(this.now, { days: 27 }),
1224
+ y: 4486,
1225
+ },
1226
+ {
1227
+ x: sub(this.now, { days: 26 }),
1228
+ y: 4403,
1229
+ },
1230
+ {
1231
+ x: sub(this.now, { days: 25 }),
1232
+ y: 4141,
1233
+ },
1234
+ {
1235
+ x: sub(this.now, { days: 24 }),
1236
+ y: 3780,
1237
+ },
1238
+ {
1239
+ x: sub(this.now, { days: 23 }),
1240
+ y: 3929,
1241
+ },
1242
+ {
1243
+ x: sub(this.now, { days: 22 }),
1244
+ y: 3524,
1245
+ },
1246
+ {
1247
+ x: sub(this.now, { days: 21 }),
1248
+ y: 3212,
1249
+ },
1250
+ {
1251
+ x: sub(this.now, { days: 20 }),
1252
+ y: 3568,
1253
+ },
1254
+ {
1255
+ x: sub(this.now, { days: 19 }),
1256
+ y: 3800,
1257
+ },
1258
+ {
1259
+ x: sub(this.now, { days: 18 }),
1260
+ y: 3796,
1261
+ },
1262
+ {
1263
+ x: sub(this.now, { days: 17 }),
1264
+ y: 3870,
1265
+ },
1266
+ {
1267
+ x: sub(this.now, { days: 16 }),
1268
+ y: 3745,
1269
+ },
1270
+ {
1271
+ x: sub(this.now, { days: 15 }),
1272
+ y: 3751,
1273
+ },
1274
+ {
1275
+ x: sub(this.now, { days: 14 }),
1276
+ y: 3310,
1277
+ },
1278
+ {
1279
+ x: sub(this.now, { days: 13 }),
1280
+ y: 3509,
1281
+ },
1282
+ {
1283
+ x: sub(this.now, { days: 12 }),
1284
+ y: 3311,
1285
+ },
1286
+ {
1287
+ x: sub(this.now, { days: 11 }),
1288
+ y: 3187,
1289
+ },
1290
+ {
1291
+ x: sub(this.now, { days: 10 }),
1292
+ y: 2918,
1293
+ },
1294
+ {
1295
+ x: sub(this.now, { days: 9 }),
1296
+ y: 3191,
1297
+ },
1298
+ {
1299
+ x: sub(this.now, { days: 8 }),
1300
+ y: 3437,
1301
+ },
1302
+ {
1303
+ x: sub(this.now, { days: 7 }),
1304
+ y: 3291,
1305
+ },
1306
+ {
1307
+ x: sub(this.now, { days: 6 }),
1308
+ y: 3317,
1309
+ },
1310
+ {
1311
+ x: sub(this.now, { days: 5 }),
1312
+ y: 3716,
1313
+ },
1314
+ {
1315
+ x: sub(this.now, { days: 4 }),
1316
+ y: 3260,
1317
+ },
1318
+ {
1319
+ x: sub(this.now, { days: 3 }),
1320
+ y: 3694,
1321
+ },
1322
+ {
1323
+ x: sub(this.now, { days: 2 }),
1324
+ y: 3598,
1325
+ },
1326
+ {
1327
+ x: sub(this.now, { days: 1 }),
1328
+ y: 3812,
1329
+ },
1330
+ ],
1331
+ },
1332
+ {
1333
+ name: 'Visitors',
1334
+ data: [
1335
+ {
1336
+ x: sub(this.now, { days: 65 }),
1337
+ y: 1654,
1338
+ },
1339
+ {
1340
+ x: sub(this.now, { days: 64 }),
1341
+ y: 1900,
1342
+ },
1343
+ {
1344
+ x: sub(this.now, { days: 63 }),
1345
+ y: 1647,
1346
+ },
1347
+ {
1348
+ x: sub(this.now, { days: 62 }),
1349
+ y: 1315,
1350
+ },
1351
+ {
1352
+ x: sub(this.now, { days: 61 }),
1353
+ y: 1807,
1354
+ },
1355
+ {
1356
+ x: sub(this.now, { days: 60 }),
1357
+ y: 1793,
1358
+ },
1359
+ {
1360
+ x: sub(this.now, { days: 59 }),
1361
+ y: 1892,
1362
+ },
1363
+ {
1364
+ x: sub(this.now, { days: 58 }),
1365
+ y: 1846,
1366
+ },
1367
+ {
1368
+ x: sub(this.now, { days: 57 }),
1369
+ y: 1966,
1370
+ },
1371
+ {
1372
+ x: sub(this.now, { days: 56 }),
1373
+ y: 1804,
1374
+ },
1375
+ {
1376
+ x: sub(this.now, { days: 55 }),
1377
+ y: 1778,
1378
+ },
1379
+ {
1380
+ x: sub(this.now, { days: 54 }),
1381
+ y: 2015,
1382
+ },
1383
+ {
1384
+ x: sub(this.now, { days: 53 }),
1385
+ y: 1892,
1386
+ },
1387
+ {
1388
+ x: sub(this.now, { days: 52 }),
1389
+ y: 1708,
1390
+ },
1391
+ {
1392
+ x: sub(this.now, { days: 51 }),
1393
+ y: 1711,
1394
+ },
1395
+ {
1396
+ x: sub(this.now, { days: 50 }),
1397
+ y: 1570,
1398
+ },
1399
+ {
1400
+ x: sub(this.now, { days: 49 }),
1401
+ y: 1507,
1402
+ },
1403
+ {
1404
+ x: sub(this.now, { days: 48 }),
1405
+ y: 1451,
1406
+ },
1407
+ {
1408
+ x: sub(this.now, { days: 47 }),
1409
+ y: 1522,
1410
+ },
1411
+ {
1412
+ x: sub(this.now, { days: 46 }),
1413
+ y: 1801,
1414
+ },
1415
+ {
1416
+ x: sub(this.now, { days: 45 }),
1417
+ y: 1977,
1418
+ },
1419
+ {
1420
+ x: sub(this.now, { days: 44 }),
1421
+ y: 2367,
1422
+ },
1423
+ {
1424
+ x: sub(this.now, { days: 43 }),
1425
+ y: 2798,
1426
+ },
1427
+ {
1428
+ x: sub(this.now, { days: 42 }),
1429
+ y: 3080,
1430
+ },
1431
+ {
1432
+ x: sub(this.now, { days: 41 }),
1433
+ y: 2856,
1434
+ },
1435
+ {
1436
+ x: sub(this.now, { days: 40 }),
1437
+ y: 2745,
1438
+ },
1439
+ {
1440
+ x: sub(this.now, { days: 39 }),
1441
+ y: 2750,
1442
+ },
1443
+ {
1444
+ x: sub(this.now, { days: 38 }),
1445
+ y: 2728,
1446
+ },
1447
+ {
1448
+ x: sub(this.now, { days: 37 }),
1449
+ y: 2436,
1450
+ },
1451
+ {
1452
+ x: sub(this.now, { days: 36 }),
1453
+ y: 2289,
1454
+ },
1455
+ {
1456
+ x: sub(this.now, { days: 35 }),
1457
+ y: 2657,
1458
+ },
1459
+ {
1460
+ x: sub(this.now, { days: 34 }),
1461
+ y: 2804,
1462
+ },
1463
+ {
1464
+ x: sub(this.now, { days: 33 }),
1465
+ y: 2777,
1466
+ },
1467
+ {
1468
+ x: sub(this.now, { days: 32 }),
1469
+ y: 3024,
1470
+ },
1471
+ {
1472
+ x: sub(this.now, { days: 31 }),
1473
+ y: 2657,
1474
+ },
1475
+ {
1476
+ x: sub(this.now, { days: 30 }),
1477
+ y: 2218,
1478
+ },
1479
+ {
1480
+ x: sub(this.now, { days: 29 }),
1481
+ y: 1964,
1482
+ },
1483
+ {
1484
+ x: sub(this.now, { days: 28 }),
1485
+ y: 1674,
1486
+ },
1487
+ {
1488
+ x: sub(this.now, { days: 27 }),
1489
+ y: 1721,
1490
+ },
1491
+ {
1492
+ x: sub(this.now, { days: 26 }),
1493
+ y: 2005,
1494
+ },
1495
+ {
1496
+ x: sub(this.now, { days: 25 }),
1497
+ y: 1613,
1498
+ },
1499
+ {
1500
+ x: sub(this.now, { days: 24 }),
1501
+ y: 1295,
1502
+ },
1503
+ {
1504
+ x: sub(this.now, { days: 23 }),
1505
+ y: 1071,
1506
+ },
1507
+ {
1508
+ x: sub(this.now, { days: 22 }),
1509
+ y: 799,
1510
+ },
1511
+ {
1512
+ x: sub(this.now, { days: 21 }),
1513
+ y: 1133,
1514
+ },
1515
+ {
1516
+ x: sub(this.now, { days: 20 }),
1517
+ y: 1536,
1518
+ },
1519
+ {
1520
+ x: sub(this.now, { days: 19 }),
1521
+ y: 2016,
1522
+ },
1523
+ {
1524
+ x: sub(this.now, { days: 18 }),
1525
+ y: 2256,
1526
+ },
1527
+ {
1528
+ x: sub(this.now, { days: 17 }),
1529
+ y: 1934,
1530
+ },
1531
+ {
1532
+ x: sub(this.now, { days: 16 }),
1533
+ y: 1832,
1534
+ },
1535
+ {
1536
+ x: sub(this.now, { days: 15 }),
1537
+ y: 2075,
1538
+ },
1539
+ {
1540
+ x: sub(this.now, { days: 14 }),
1541
+ y: 1709,
1542
+ },
1543
+ {
1544
+ x: sub(this.now, { days: 13 }),
1545
+ y: 1932,
1546
+ },
1547
+ {
1548
+ x: sub(this.now, { days: 12 }),
1549
+ y: 1831,
1550
+ },
1551
+ {
1552
+ x: sub(this.now, { days: 11 }),
1553
+ y: 1434,
1554
+ },
1555
+ {
1556
+ x: sub(this.now, { days: 10 }),
1557
+ y: 993,
1558
+ },
1559
+ {
1560
+ x: sub(this.now, { days: 9 }),
1561
+ y: 1064,
1562
+ },
1563
+ {
1564
+ x: sub(this.now, { days: 8 }),
1565
+ y: 618,
1566
+ },
1567
+ {
1568
+ x: sub(this.now, { days: 7 }),
1569
+ y: 1032,
1570
+ },
1571
+ {
1572
+ x: sub(this.now, { days: 6 }),
1573
+ y: 1280,
1574
+ },
1575
+ {
1576
+ x: sub(this.now, { days: 5 }),
1577
+ y: 1344,
1578
+ },
1579
+ {
1580
+ x: sub(this.now, { days: 4 }),
1581
+ y: 1835,
1582
+ },
1583
+ {
1584
+ x: sub(this.now, { days: 3 }),
1585
+ y: 2287,
1586
+ },
1587
+ {
1588
+ x: sub(this.now, { days: 2 }),
1589
+ y: 2226,
1590
+ },
1591
+ {
1592
+ x: sub(this.now, { days: 1 }),
1593
+ y: 2692,
1594
+ },
1595
+ ],
1596
+ },
1597
+ ],
1598
+ },
1599
+ newVsReturning: {
1600
+ uniqueVisitors: 46085,
1601
+ series: [80, 20],
1602
+ labels: ['New', 'Returning'],
1603
+ },
1604
+ gender: {
1605
+ uniqueVisitors: 46085,
1606
+ series: [55, 45],
1607
+ labels: ['Male', 'Female'],
1608
+ },
1609
+ age: {
1610
+ uniqueVisitors: 46085,
1611
+ series: [35, 65],
1612
+ labels: ['Under 30', 'Over 30'],
1613
+ },
1614
+ language: {
1615
+ uniqueVisitors: 46085,
1616
+ series: [25, 75],
1617
+ labels: ['English', 'Other'],
1618
+ },
1619
+ };
1620
+ }