@striae-org/striae 4.1.0 → 4.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +8 -0
- package/LICENSE +1 -1
- package/app/components/actions/case-export/core-export.ts +14 -8
- package/app/components/actions/case-export/data-processing.ts +1 -0
- package/app/components/actions/case-export/download-handlers.ts +7 -0
- package/app/components/actions/case-export/metadata-helpers.ts +2 -1
- package/app/components/actions/case-import/confirmation-import.ts +12 -2
- package/app/components/actions/case-import/orchestrator.ts +78 -32
- package/app/components/actions/case-import/storage-operations.ts +97 -8
- package/app/components/actions/case-import/zip-processing.ts +159 -86
- package/app/components/actions/case-manage.ts +463 -8
- package/app/components/actions/confirm-export.ts +9 -2
- package/app/components/actions/image-manage.ts +77 -44
- package/app/components/audit/user-audit-viewer.tsx +19 -8
- package/app/components/audit/user-audit.module.css +21 -0
- package/app/components/audit/viewer/audit-entries-list.tsx +12 -2
- package/app/components/audit/viewer/audit-filters-panel.tsx +1 -0
- package/app/components/audit/viewer/audit-viewer-utils.ts +2 -0
- package/app/components/audit/viewer/use-audit-viewer-data.ts +24 -1
- package/app/components/audit/viewer/use-audit-viewer-export.ts +1 -1
- package/app/components/canvas/box-annotations/box-annotations.module.css +22 -18
- package/app/components/canvas/box-annotations/box-annotations.tsx +15 -0
- package/app/components/canvas/canvas.module.css +64 -54
- package/app/components/canvas/canvas.tsx +14 -16
- package/app/components/canvas/confirmation/confirmation.module.css +1 -0
- package/app/components/canvas/confirmation/confirmation.tsx +12 -14
- package/app/components/colors/colors.module.css +4 -3
- package/app/components/navbar/case-modals/archive-case-modal.module.css +110 -0
- package/app/components/navbar/case-modals/archive-case-modal.tsx +129 -0
- package/app/components/navbar/case-modals/open-case-modal.module.css +81 -0
- package/app/components/navbar/case-modals/open-case-modal.tsx +120 -0
- package/app/components/navbar/case-modals/rename-case-modal.module.css +81 -0
- package/app/components/navbar/case-modals/rename-case-modal.tsx +107 -0
- package/app/components/navbar/navbar.module.css +447 -0
- package/app/components/navbar/navbar.tsx +402 -0
- package/app/components/public-signing-key-modal/public-signing-key-modal.module.css +1 -0
- package/app/components/public-signing-key-modal/public-signing-key-modal.tsx +15 -16
- package/app/components/sidebar/case-export/case-export.module.css +1 -0
- package/app/components/sidebar/case-export/case-export.tsx +8 -46
- package/app/components/sidebar/case-import/case-import.module.css +23 -0
- package/app/components/sidebar/case-import/case-import.tsx +64 -16
- package/app/components/sidebar/case-import/components/CasePreviewSection.tsx +20 -1
- package/app/components/sidebar/case-import/components/ConfirmationDialog.tsx +15 -0
- package/app/components/sidebar/cases/case-sidebar.tsx +68 -588
- package/app/components/sidebar/cases/cases-modal.module.css +1 -0
- package/app/components/sidebar/cases/cases-modal.tsx +82 -43
- package/app/components/sidebar/cases/cases.module.css +82 -21
- package/app/components/sidebar/files/files-modal.module.css +1 -0
- package/app/components/sidebar/files/files-modal.tsx +49 -52
- package/app/components/sidebar/notes/addl-notes-modal.tsx +82 -0
- package/app/components/sidebar/notes/{notes-sidebar.tsx → notes-editor-form.tsx} +187 -138
- package/app/components/sidebar/notes/notes-editor-modal.module.css +49 -0
- package/app/components/sidebar/notes/notes-editor-modal.tsx +64 -0
- package/app/components/sidebar/notes/notes.module.css +170 -1
- package/app/components/sidebar/sidebar-container.tsx +16 -28
- package/app/components/sidebar/sidebar.module.css +5 -69
- package/app/components/sidebar/sidebar.tsx +27 -125
- package/app/components/sidebar/upload/image-upload-zone.module.css +13 -13
- package/app/components/user/inactivity-warning.module.css +1 -0
- package/app/components/user/inactivity-warning.tsx +15 -2
- package/app/components/user/manage-profile.tsx +23 -10
- package/app/{tailwind.css → global.css} +1 -3
- package/app/hooks/useOverlayDismiss.ts +54 -4
- package/app/root.tsx +1 -1
- package/app/routes/auth/login.tsx +785 -774
- package/app/routes/striae/striae.module.css +10 -3
- package/app/routes/striae/striae.tsx +475 -30
- package/app/services/audit/audit.service.ts +173 -27
- package/app/services/audit/builders/audit-event-builders-case-file.ts +43 -0
- package/app/services/audit/builders/audit-event-builders-workflow.ts +2 -0
- package/app/services/audit/builders/index.ts +1 -0
- package/app/types/audit.ts +4 -1
- package/app/types/case.ts +29 -0
- package/app/types/import.ts +3 -0
- package/app/utils/data/confirmation-summary/summary-core.ts +279 -0
- package/app/utils/data/data-operations.ts +17 -861
- package/app/utils/data/index.ts +11 -1
- package/app/utils/data/operations/batch-operations.ts +113 -0
- package/app/utils/data/operations/case-operations.ts +168 -0
- package/app/utils/data/operations/confirmation-summary-operations.ts +301 -0
- package/app/utils/data/operations/file-annotation-operations.ts +196 -0
- package/app/utils/data/operations/index.ts +7 -0
- package/app/utils/data/operations/signing-operations.ts +225 -0
- package/app/utils/data/operations/types.ts +42 -0
- package/app/utils/data/operations/validation-operations.ts +48 -0
- package/app/utils/data/permissions.ts +16 -1
- package/app/utils/forensics/audit-export-signature.ts +5 -1
- package/app/utils/forensics/confirmation-signature.ts +3 -0
- package/app/utils/forensics/export-verification.ts +426 -22
- package/functions/api/_shared/firebase-auth.ts +2 -7
- package/functions/api/image/[[path]].ts +20 -23
- package/functions/api/pdf/[[path]].ts +27 -8
- package/package.json +7 -12
- package/scripts/deploy-primershear-emails.sh +2 -1
- package/worker-configuration.d.ts +3 -3
- package/workers/audit-worker/package.json +1 -1
- package/workers/audit-worker/worker-configuration.d.ts +7448 -11323
- package/workers/audit-worker/wrangler.jsonc.example +1 -1
- package/workers/data-worker/package.json +1 -1
- package/workers/data-worker/worker-configuration.d.ts +7448 -11323
- package/workers/data-worker/wrangler.jsonc.example +1 -1
- package/workers/image-worker/package.json +1 -1
- package/workers/image-worker/src/image-worker.example.ts +16 -5
- package/workers/image-worker/worker-configuration.d.ts +7447 -11322
- package/workers/image-worker/wrangler.jsonc.example +1 -1
- package/workers/keys-worker/package.json +1 -1
- package/workers/keys-worker/worker-configuration.d.ts +7447 -11322
- package/workers/keys-worker/wrangler.jsonc.example +1 -1
- package/workers/pdf-worker/package.json +1 -1
- package/workers/pdf-worker/src/formats/format-striae.ts +9 -14
- package/workers/pdf-worker/src/pdf-worker.example.ts +37 -58
- package/workers/pdf-worker/src/report-types.ts +3 -3
- package/workers/pdf-worker/worker-configuration.d.ts +7448 -11323
- package/workers/pdf-worker/wrangler.jsonc.example +1 -1
- package/workers/user-worker/package.json +1 -1
- package/workers/user-worker/src/user-worker.example.ts +17 -0
- package/workers/user-worker/worker-configuration.d.ts +7448 -11323
- package/workers/user-worker/wrangler.jsonc.example +1 -1
- package/wrangler.toml.example +1 -1
- package/NOTICE +0 -13
- package/app/components/sidebar/notes/notes-modal.tsx +0 -53
- package/postcss.config.js +0 -6
- package/public/.well-known/keybase.txt +0 -56
- package/tailwind.config.ts +0 -22
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@striae-org/striae",
|
|
3
|
-
"version": "4.1
|
|
3
|
+
"version": "4.2.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Striae is a specialized, cloud-native platform designed to streamline forensic firearms identification by providing an intuitive environment for digital comparison image annotation, authenticated confirmations, and automated report generation.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"app/entry.server.tsx",
|
|
45
45
|
"app/root.tsx",
|
|
46
46
|
"app/routes.ts",
|
|
47
|
-
"app/
|
|
47
|
+
"app/global.css",
|
|
48
48
|
"react-router.config.ts",
|
|
49
49
|
"load-context.ts",
|
|
50
50
|
"functions/",
|
|
@@ -64,14 +64,11 @@
|
|
|
64
64
|
".env.example",
|
|
65
65
|
"primershear.emails.example",
|
|
66
66
|
"firebase.json",
|
|
67
|
-
"postcss.config.js",
|
|
68
|
-
"tailwind.config.ts",
|
|
69
67
|
"tsconfig.json",
|
|
70
68
|
"vite.config.ts",
|
|
71
69
|
"worker-configuration.d.ts",
|
|
72
70
|
"wrangler.toml.example",
|
|
73
|
-
"LICENSE"
|
|
74
|
-
"NOTICE"
|
|
71
|
+
"LICENSE"
|
|
75
72
|
],
|
|
76
73
|
"sideEffects": false,
|
|
77
74
|
"type": "module",
|
|
@@ -102,9 +99,9 @@
|
|
|
102
99
|
"install-workers": "bash ./scripts/install-workers.sh",
|
|
103
100
|
"deploy-workers": "npm run deploy-workers:audit && npm run deploy-workers:data && npm run deploy-workers:image && npm run deploy-workers:keys && npm run deploy-workers:pdf && npm run deploy-workers:user",
|
|
104
101
|
"deploy-workers:secrets": "bash ./scripts/deploy-worker-secrets.sh",
|
|
105
|
-
"deploy-pages:secrets": "bash ./scripts/deploy-pages-secrets.sh",
|
|
102
|
+
"deploy-pages:secrets": "bash ./scripts/deploy-pages-secrets.sh --production-only",
|
|
106
103
|
"deploy-pages": "bash ./scripts/deploy-pages.sh",
|
|
107
|
-
"deploy-primershear": "bash ./scripts/deploy-primershear-emails.sh",
|
|
104
|
+
"deploy-primershear": "bash ./scripts/deploy-primershear-emails.sh --production-only",
|
|
108
105
|
"deploy-workers:audit": "cd workers/audit-worker && npm run deploy",
|
|
109
106
|
"deploy-workers:data": "cd workers/data-worker && npm run deploy",
|
|
110
107
|
"deploy-workers:image": "cd workers/image-worker && npm run deploy",
|
|
@@ -129,15 +126,13 @@
|
|
|
129
126
|
"@types/react-dom": "^19.2.3",
|
|
130
127
|
"@typescript-eslint/eslint-plugin": "^8.57.1",
|
|
131
128
|
"@typescript-eslint/parser": "^8.57.1",
|
|
132
|
-
"autoprefixer": "^10.4.27",
|
|
133
129
|
"eslint": "^9.39.4",
|
|
134
130
|
"eslint-import-resolver-typescript": "^4.4.4",
|
|
135
131
|
"eslint-plugin-import": "^2.32.0",
|
|
136
132
|
"eslint-plugin-jsx-a11y": "^6.10.2",
|
|
137
133
|
"eslint-plugin-react": "^7.37.5",
|
|
138
134
|
"eslint-plugin-react-hooks": "^7.0.1",
|
|
139
|
-
"
|
|
140
|
-
"tailwindcss": "^3.4.19",
|
|
135
|
+
"modern-normalize": "^3.0.1",
|
|
141
136
|
"typescript": "^5.9.3",
|
|
142
137
|
"vite": "^6.4.1",
|
|
143
138
|
"vite-tsconfig-paths": "^6.1.1",
|
|
@@ -157,4 +152,4 @@
|
|
|
157
152
|
"node": ">=20.0.0"
|
|
158
153
|
},
|
|
159
154
|
"packageManager": "npm@11.11.0"
|
|
160
|
-
}
|
|
155
|
+
}
|
|
@@ -81,7 +81,8 @@ if [ ! -f "$EMAILS_FILE" ]; then
|
|
|
81
81
|
fi
|
|
82
82
|
|
|
83
83
|
# Strip comment lines and blank lines, then join with commas
|
|
84
|
-
|
|
84
|
+
# Use || true to avoid failure if paste gets no input (handles empty file gracefully)
|
|
85
|
+
PRIMERSHEAR_EMAILS=$(grep -v '^[[:space:]]*#' "$EMAILS_FILE" | grep -v '^[[:space:]]*$' | paste -sd ',' - || true)
|
|
85
86
|
|
|
86
87
|
if [ -z "$PRIMERSHEAR_EMAILS" ]; then
|
|
87
88
|
echo -e "${YELLOW}⚠️ primershear.emails contains no active email addresses.${NC}"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable */
|
|
2
2
|
// Generated by Wrangler by running `wrangler types` (hash: 3509cf2c6fcfb4a2a6e6bd16efbe22b3)
|
|
3
|
-
// Runtime types generated with workerd@1.20250823.0 2026-03-
|
|
3
|
+
// Runtime types generated with workerd@1.20250823.0 2026-03-20 nodejs_compat
|
|
4
4
|
declare namespace Cloudflare {
|
|
5
5
|
interface Env {
|
|
6
6
|
ACCOUNT_ID: string;
|
|
@@ -5485,7 +5485,7 @@ type AIGatewayHeaders = {
|
|
|
5485
5485
|
[key: string]: string | number | boolean | object;
|
|
5486
5486
|
};
|
|
5487
5487
|
type AIGatewayUniversalRequest = {
|
|
5488
|
-
provider: AIGatewayProviders | string;
|
|
5488
|
+
provider: AIGatewayProviders | string;
|
|
5489
5489
|
endpoint: string;
|
|
5490
5490
|
headers: Partial<AIGatewayHeaders>;
|
|
5491
5491
|
query: unknown;
|
|
@@ -5501,7 +5501,7 @@ declare abstract class AiGateway {
|
|
|
5501
5501
|
gateway?: UniversalGatewayOptions;
|
|
5502
5502
|
extraHeaders?: object;
|
|
5503
5503
|
}): Promise<Response>;
|
|
5504
|
-
getUrl(provider?: AIGatewayProviders | string): Promise<string>;
|
|
5504
|
+
getUrl(provider?: AIGatewayProviders | string): Promise<string>;
|
|
5505
5505
|
}
|
|
5506
5506
|
interface AutoRAGInternalError extends Error {
|
|
5507
5507
|
}
|