@striae-org/striae 5.2.1 → 5.3.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 (105) hide show
  1. package/.env.example +2 -10
  2. package/README.md +5 -46
  3. package/app/components/actions/case-export/core-export.ts +2 -174
  4. package/app/components/actions/case-export/download-handlers.ts +83 -750
  5. package/app/components/actions/case-export/index.ts +6 -30
  6. package/app/components/actions/case-export/metadata-helpers.ts +0 -78
  7. package/app/components/actions/case-export/types-constants.ts +0 -43
  8. package/app/components/actions/case-import/confirmation-import.ts +13 -14
  9. package/app/components/actions/case-import/zip-processing.ts +92 -12
  10. package/app/components/actions/generate-pdf.ts +3 -2
  11. package/app/components/audit/user-audit-viewer.tsx +0 -19
  12. package/app/components/audit/viewer/audit-viewer-header.tsx +0 -33
  13. package/app/components/navbar/case-modals/archive-case-modal.tsx +1 -1
  14. package/app/components/navbar/navbar.tsx +1 -1
  15. package/app/components/sidebar/case-import/case-import.module.css +35 -0
  16. package/app/components/sidebar/case-import/components/CasePreviewSection.tsx +59 -3
  17. package/app/components/sidebar/case-import/components/ConfirmationDialog.tsx +2 -4
  18. package/app/components/sidebar/case-import/components/ConfirmationPreviewSection.tsx +1 -1
  19. package/app/components/sidebar/notes/class-details-shared.ts +2 -2
  20. package/app/components/toast/toast.module.css +36 -0
  21. package/app/components/toast/toast.tsx +6 -2
  22. package/app/components/user/manage-profile.tsx +4 -3
  23. package/app/config-example/config.json +1 -2
  24. package/app/root.tsx +0 -7
  25. package/app/routes/_index.tsx +1 -1
  26. package/app/routes/auth/login.example.tsx +22 -103
  27. package/app/routes/auth/route.ts +1 -1
  28. package/app/routes/striae/striae.tsx +53 -59
  29. package/app/services/firebase/index.ts +0 -3
  30. package/app/types/export.ts +1 -2
  31. package/app/utils/auth/index.ts +0 -1
  32. package/app/utils/data/permissions.ts +3 -2
  33. package/package.json +9 -16
  34. package/public/_headers +0 -4
  35. package/public/_routes.json +0 -1
  36. package/worker-configuration.d.ts +20 -17
  37. package/workers/audit-worker/src/audit-worker.example.ts +9 -806
  38. package/workers/audit-worker/src/config.ts +7 -0
  39. package/workers/audit-worker/src/crypto/data-at-rest.ts +410 -0
  40. package/workers/audit-worker/src/handlers/audit-routes.ts +125 -0
  41. package/workers/audit-worker/src/storage/audit-storage.ts +99 -0
  42. package/workers/audit-worker/src/types.ts +56 -0
  43. package/workers/audit-worker/worker-configuration.d.ts +1 -1
  44. package/workers/audit-worker/wrangler.jsonc.example +1 -1
  45. package/workers/data-worker/src/config.ts +11 -0
  46. package/workers/data-worker/src/data-worker.example.ts +21 -942
  47. package/workers/data-worker/src/handlers/decrypt-export.ts +118 -0
  48. package/workers/data-worker/src/handlers/signing.ts +174 -0
  49. package/workers/data-worker/src/handlers/storage-routes.ts +129 -0
  50. package/workers/data-worker/src/registry/key-registry.ts +368 -0
  51. package/workers/data-worker/src/types.ts +46 -0
  52. package/workers/data-worker/worker-configuration.d.ts +1 -1
  53. package/workers/data-worker/wrangler.jsonc.example +1 -1
  54. package/workers/image-worker/worker-configuration.d.ts +1 -1
  55. package/workers/image-worker/wrangler.jsonc.example +1 -1
  56. package/workers/pdf-worker/worker-configuration.d.ts +2 -3
  57. package/workers/pdf-worker/wrangler.jsonc.example +1 -1
  58. package/workers/user-worker/src/auth.ts +30 -0
  59. package/workers/user-worker/src/cleanup/account-deletion.ts +337 -0
  60. package/workers/user-worker/src/config.ts +4 -0
  61. package/workers/user-worker/src/encryption-utils.ts +25 -0
  62. package/workers/user-worker/src/firebase/admin.ts +152 -0
  63. package/workers/user-worker/src/handlers/user-routes.ts +242 -0
  64. package/workers/user-worker/src/registry/user-kv.ts +172 -0
  65. package/workers/user-worker/src/storage/user-records.ts +34 -0
  66. package/workers/user-worker/src/types.ts +106 -0
  67. package/workers/user-worker/src/user-worker.example.ts +18 -964
  68. package/workers/user-worker/worker-configuration.d.ts +4 -2
  69. package/workers/user-worker/wrangler.jsonc.example +12 -1
  70. package/wrangler.toml.example +1 -1
  71. package/app/components/actions/case-export/data-processing.ts +0 -223
  72. package/app/components/sidebar/case-export/case-export.module.css +0 -418
  73. package/app/components/sidebar/case-export/case-export.tsx +0 -310
  74. package/app/types/exceljs-bare.d.ts +0 -9
  75. package/app/utils/auth/auth.ts +0 -11
  76. package/public/.well-known/security.txt +0 -6
  77. package/public/favicon.ico +0 -0
  78. package/public/icon-256.png +0 -0
  79. package/public/icon-512.png +0 -0
  80. package/public/manifest.json +0 -39
  81. package/public/shortcut.png +0 -0
  82. package/public/social-image.png +0 -0
  83. package/public/vendor/exceljs.LICENSE +0 -22
  84. package/public/vendor/exceljs.bare.min.js +0 -45
  85. package/scripts/deploy-all.sh +0 -166
  86. package/scripts/deploy-config/modules/env-utils.sh +0 -322
  87. package/scripts/deploy-config/modules/keys.sh +0 -404
  88. package/scripts/deploy-config/modules/prompt.sh +0 -372
  89. package/scripts/deploy-config/modules/scaffolding.sh +0 -344
  90. package/scripts/deploy-config/modules/validation.sh +0 -365
  91. package/scripts/deploy-config.sh +0 -236
  92. package/scripts/deploy-pages-secrets.sh +0 -231
  93. package/scripts/deploy-pages.sh +0 -34
  94. package/scripts/deploy-primershear-emails.sh +0 -167
  95. package/scripts/deploy-worker-secrets.sh +0 -374
  96. package/scripts/dev.cjs +0 -23
  97. package/scripts/install-workers.sh +0 -88
  98. package/scripts/run-eslint.cjs +0 -43
  99. package/scripts/update-compatibility-dates.cjs +0 -124
  100. package/scripts/update-markdown-versions.cjs +0 -43
  101. package/workers/keys-worker/package.json +0 -18
  102. package/workers/keys-worker/src/keys.example.ts +0 -67
  103. package/workers/keys-worker/src/keys.ts +0 -67
  104. package/workers/keys-worker/worker-configuration.d.ts +0 -7447
  105. package/workers/keys-worker/wrangler.jsonc.example +0 -15
@@ -1,18 +0,0 @@
1
- {
2
- "name": "keys-worker",
3
- "version": "0.0.0",
4
- "private": true,
5
- "scripts": {
6
- "deploy": "wrangler deploy",
7
- "dev": "wrangler dev",
8
- "start": "wrangler dev"
9
- },
10
- "devDependencies": {
11
- "@cloudflare/puppeteer": "^1.0.6",
12
- "wrangler": "^4.77.0"
13
- },
14
- "overrides": {
15
- "undici": "7.24.1",
16
- "yauzl": "3.2.1"
17
- }
18
- }
@@ -1,67 +0,0 @@
1
- interface Env {
2
- R2_KEY_SECRET: string;
3
- ACCOUNT_HASH: string;
4
- IMAGES_API_TOKEN: string;
5
- USER_DB_AUTH: string;
6
- PDF_WORKER_AUTH: string;
7
- KEYS_AUTH: string;
8
- }
9
-
10
- const corsHeaders: Record<string, string> = {
11
- 'Access-Control-Allow-Origin': 'PAGES_CUSTOM_DOMAIN',
12
- 'Access-Control-Allow-Methods': 'GET,POST,OPTIONS',
13
- 'Access-Control-Allow-Headers': 'Content-Type, X-Custom-Auth-Key',
14
- 'Content-Type': 'text/plain'
15
- };
16
-
17
- const hasValidHeader = (request: Request, env: Env): boolean =>
18
- request.headers.get("X-Custom-Auth-Key") === env.KEYS_AUTH;
19
-
20
- export default {
21
- async fetch(request: Request, env: Env): Promise<Response> {
22
- if (request.method === 'OPTIONS') {
23
- return new Response(null, { headers: corsHeaders });
24
- }
25
-
26
- if (!hasValidHeader(request, env)) {
27
- return new Response('Forbidden', {
28
- status: 403,
29
- headers: corsHeaders
30
- });
31
- }
32
-
33
- const url = new URL(request.url);
34
- const path = url.pathname.replace('/', '');
35
-
36
- // Handle regular key retrieval
37
- if (request.method === 'GET') {
38
- const keyName = path;
39
-
40
- if (!keyName) {
41
- return new Response('Key name required', {
42
- status: 400,
43
- headers: corsHeaders
44
- });
45
- }
46
-
47
- if (!(keyName in env)) {
48
- return new Response('Key not found', {
49
- status: 404,
50
- headers: corsHeaders
51
- });
52
- }
53
-
54
- // Type assertion needed here since TypeScript doesn't know that keyName exists in env
55
- const keyValue = env[keyName as keyof Env];
56
-
57
- return new Response(keyValue, {
58
- headers: corsHeaders
59
- });
60
- }
61
-
62
- return new Response('Method not allowed', {
63
- status: 405,
64
- headers: corsHeaders
65
- });
66
- }
67
- };
@@ -1,67 +0,0 @@
1
- interface Env {
2
- R2_KEY_SECRET: string;
3
- ACCOUNT_HASH: string;
4
- IMAGES_API_TOKEN: string;
5
- USER_DB_AUTH: string;
6
- PDF_WORKER_AUTH: string;
7
- KEYS_AUTH: string;
8
- }
9
-
10
- const corsHeaders: Record<string, string> = {
11
- 'Access-Control-Allow-Origin': 'https://striae.app',
12
- 'Access-Control-Allow-Methods': 'GET,POST,OPTIONS',
13
- 'Access-Control-Allow-Headers': 'Content-Type, X-Custom-Auth-Key',
14
- 'Content-Type': 'text/plain'
15
- };
16
-
17
- const hasValidHeader = (request: Request, env: Env): boolean =>
18
- request.headers.get("X-Custom-Auth-Key") === env.KEYS_AUTH;
19
-
20
- export default {
21
- async fetch(request: Request, env: Env): Promise<Response> {
22
- if (request.method === 'OPTIONS') {
23
- return new Response(null, { headers: corsHeaders });
24
- }
25
-
26
- if (!hasValidHeader(request, env)) {
27
- return new Response('Forbidden', {
28
- status: 403,
29
- headers: corsHeaders
30
- });
31
- }
32
-
33
- const url = new URL(request.url);
34
- const path = url.pathname.replace('/', '');
35
-
36
- // Handle regular key retrieval
37
- if (request.method === 'GET') {
38
- const keyName = path;
39
-
40
- if (!keyName) {
41
- return new Response('Key name required', {
42
- status: 400,
43
- headers: corsHeaders
44
- });
45
- }
46
-
47
- if (!(keyName in env)) {
48
- return new Response('Key not found', {
49
- status: 404,
50
- headers: corsHeaders
51
- });
52
- }
53
-
54
- // Type assertion needed here since TypeScript doesn't know that keyName exists in env
55
- const keyValue = env[keyName as keyof Env];
56
-
57
- return new Response(keyValue, {
58
- headers: corsHeaders
59
- });
60
- }
61
-
62
- return new Response('Method not allowed', {
63
- status: 405,
64
- headers: corsHeaders
65
- });
66
- }
67
- };