@striae-org/striae 6.0.0 → 6.0.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/README.md +3 -1
- package/app/components/sidebar/sidebar-container.tsx +7 -0
- package/{members.emails.example → app/config-example/members.emails} +1 -1
- package/{primershear.emails.example → app/config-example/primershear.emails} +1 -1
- package/package.json +2 -4
- package/scripts/deploy-config.sh +33 -0
- package/scripts/deploy-members-emails.sh +4 -4
- package/scripts/deploy-primershear-emails.sh +3 -3
- package/workers/audit-worker/package.json +1 -1
- package/workers/audit-worker/wrangler.jsonc.example +1 -1
- package/workers/data-worker/package.json +1 -1
- package/workers/data-worker/wrangler.jsonc.example +1 -1
- package/workers/image-worker/package.json +1 -1
- package/workers/image-worker/wrangler.jsonc.example +1 -1
- package/workers/pdf-worker/package.json +1 -1
- package/workers/pdf-worker/wrangler.jsonc.example +1 -1
- package/workers/user-worker/package.json +1 -1
- package/workers/user-worker/wrangler.jsonc.example +1 -1
- package/wrangler.toml.example +1 -1
package/README.md
CHANGED
|
@@ -8,6 +8,7 @@ This npm package publishes the Striae application source for teams that run/deve
|
|
|
8
8
|
|
|
9
9
|
- Application: [https://striae.app](https://striae.app)
|
|
10
10
|
- Source repository: [https://github.com/striae-org/striae](https://github.com/striae-org/striae)
|
|
11
|
+
- Installation guide: [https://github.com/striae-org/striae/wiki/Installation-Guide](https://github.com/striae-org/striae/wiki/Installation-Guide)
|
|
11
12
|
- Releases: [https://github.com/striae-org/striae/releases](https://github.com/striae-org/striae/releases)
|
|
12
13
|
- Security policy: [https://github.com/striae-org/striae/security/policy](https://github.com/striae-org/striae/security/policy)
|
|
13
14
|
|
|
@@ -55,9 +56,10 @@ Excluded (by design):
|
|
|
55
56
|
|
|
56
57
|
## License
|
|
57
58
|
|
|
58
|
-
See `LICENSE
|
|
59
|
+
See `LICENSE`.
|
|
59
60
|
|
|
60
61
|
## Support
|
|
61
62
|
|
|
63
|
+
- Striae Community: [https://community.striae.org](https://community.striae.org)
|
|
62
64
|
- Support page: [https://www.striae.org/support](https://www.striae.org/support)
|
|
63
65
|
- Contact: [info@striae.org](mailto:info@striae.org)
|
|
@@ -109,6 +109,13 @@ export const SidebarContainer: React.FC<SidebarContainerProps> = (props) => {
|
|
|
109
109
|
rel="noopener noreferrer"
|
|
110
110
|
className={styles.footerModalLink}>
|
|
111
111
|
Security Policy
|
|
112
|
+
</Link>
|
|
113
|
+
<Link
|
|
114
|
+
to="https://community.striae.org"
|
|
115
|
+
target="_blank"
|
|
116
|
+
rel="noopener noreferrer"
|
|
117
|
+
className={styles.footerModalLink}>
|
|
118
|
+
Striae Community
|
|
112
119
|
</Link>
|
|
113
120
|
</div>
|
|
114
121
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@striae-org/striae",
|
|
3
|
-
"version": "6.0.
|
|
3
|
+
"version": "6.0.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",
|
|
@@ -50,9 +50,7 @@
|
|
|
50
50
|
"workers/pdf-worker/src/assets/generated-assets.example.ts",
|
|
51
51
|
"!workers/pdf-worker/src/formats/**/*",
|
|
52
52
|
"workers/pdf-worker/src/formats/format-striae.ts",
|
|
53
|
-
".env.example",
|
|
54
|
-
"primershear.emails.example",
|
|
55
|
-
"members.emails.example",
|
|
53
|
+
".env.example",
|
|
56
54
|
"firebase.json",
|
|
57
55
|
"tsconfig.json",
|
|
58
56
|
"vite.config.ts",
|
package/scripts/deploy-config.sh
CHANGED
|
@@ -200,6 +200,36 @@ source "$DEPLOY_CONFIG_VALIDATION_MODULE"
|
|
|
200
200
|
source "$DEPLOY_CONFIG_SCAFFOLDING_MODULE"
|
|
201
201
|
source "$DEPLOY_CONFIG_PROMPT_MODULE"
|
|
202
202
|
|
|
203
|
+
EMAIL_LIST_CONFIG_DIR="app/config"
|
|
204
|
+
MEMBERS_EMAILS_FILE="$EMAIL_LIST_CONFIG_DIR/members.emails"
|
|
205
|
+
PRIMERSHEAR_EMAILS_FILE="$EMAIL_LIST_CONFIG_DIR/primershear.emails"
|
|
206
|
+
|
|
207
|
+
sync_env_var_from_email_list_file() {
|
|
208
|
+
local env_var_name=$1
|
|
209
|
+
local file_path=$2
|
|
210
|
+
local loaded_values=""
|
|
211
|
+
|
|
212
|
+
if [ ! -f "$file_path" ]; then
|
|
213
|
+
echo -e "${YELLOW}⚠️ $file_path not found; keeping existing $env_var_name value in .env${NC}"
|
|
214
|
+
return 0
|
|
215
|
+
fi
|
|
216
|
+
|
|
217
|
+
loaded_values=$(grep -v '^[[:space:]]*#' "$file_path" | grep -v '^[[:space:]]*$' | sed -e 's/\r$//' -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' | paste -sd ',' - || true)
|
|
218
|
+
|
|
219
|
+
write_env_var "$env_var_name" "$loaded_values"
|
|
220
|
+
export "$env_var_name=$loaded_values"
|
|
221
|
+
|
|
222
|
+
local loaded_count
|
|
223
|
+
loaded_count=$(echo "$loaded_values" | tr ',' '\n' | grep -c '[^[:space:]]' || true)
|
|
224
|
+
echo -e "${GREEN}✅ Synced $env_var_name from $file_path ($loaded_count entry/entries)${NC}"
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
sync_email_list_env_vars_from_config() {
|
|
228
|
+
echo -e "${YELLOW}📧 Syncing optional email list env vars from app/config...${NC}"
|
|
229
|
+
sync_env_var_from_email_list_file "REGISTRATION_EMAILS" "$MEMBERS_EMAILS_FILE"
|
|
230
|
+
sync_env_var_from_email_list_file "PRIMERSHEAR_EMAILS" "$PRIMERSHEAR_EMAILS_FILE"
|
|
231
|
+
}
|
|
232
|
+
|
|
203
233
|
if [ "$validate_only" = "true" ]; then
|
|
204
234
|
echo -e "\n${BLUE}🧪 Validate-only mode enabled${NC}"
|
|
205
235
|
run_validation_checkpoint
|
|
@@ -217,6 +247,9 @@ load_admin_service_credentials
|
|
|
217
247
|
# Always prompt for secrets to ensure configuration
|
|
218
248
|
prompt_for_secrets
|
|
219
249
|
|
|
250
|
+
# Keep optional email list env vars aligned with app/config source files.
|
|
251
|
+
sync_email_list_env_vars_from_config
|
|
252
|
+
|
|
220
253
|
# Validate after secrets have been configured
|
|
221
254
|
validate_required_vars
|
|
222
255
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# ============================================
|
|
4
4
|
# MEMBERS EMAIL LIST DEPLOYMENT SCRIPT
|
|
5
5
|
# ============================================
|
|
6
|
-
# Reads members.emails, updates REGISTRATION_EMAILS in .env,
|
|
6
|
+
# Reads app/config/members.emails, updates REGISTRATION_EMAILS in .env,
|
|
7
7
|
# then deploys that secret directly to Cloudflare Pages (production).
|
|
8
8
|
|
|
9
9
|
set -e
|
|
@@ -26,12 +26,12 @@ trap 'echo -e "\n${RED}❌ deploy-members-emails.sh failed near line ${LINENO}${
|
|
|
26
26
|
|
|
27
27
|
# ── Read emails file ──────────────────────────────────────────────────────────
|
|
28
28
|
|
|
29
|
-
EMAILS_FILE="$PROJECT_ROOT/members.emails"
|
|
29
|
+
EMAILS_FILE="$PROJECT_ROOT/app/config/members.emails"
|
|
30
30
|
|
|
31
31
|
if [ ! -f "$EMAILS_FILE" ]; then
|
|
32
32
|
echo -e "${RED}❌ members.emails not found at: $EMAILS_FILE${NC}"
|
|
33
33
|
echo -e "${YELLOW} Create it with one email address or @domain.com wildcard per line.${NC}"
|
|
34
|
-
echo -e "${YELLOW} See members.emails
|
|
34
|
+
echo -e "${YELLOW} See app/config-example/members.emails for the format.${NC}"
|
|
35
35
|
exit 1
|
|
36
36
|
fi
|
|
37
37
|
|
|
@@ -45,7 +45,7 @@ if [ -z "$REGISTRATION_EMAILS" ]; then
|
|
|
45
45
|
fi
|
|
46
46
|
|
|
47
47
|
ENTRY_COUNT=$(echo "$REGISTRATION_EMAILS" | tr ',' '\n' | grep -c '[^[:space:]]' || true)
|
|
48
|
-
echo -e "${GREEN}✅ Loaded $ENTRY_COUNT entry(ies) from members.emails${NC}"
|
|
48
|
+
echo -e "${GREEN}✅ Loaded $ENTRY_COUNT entry(ies) from app/config/members.emails${NC}"
|
|
49
49
|
|
|
50
50
|
# ── Update .env ───────────────────────────────────────────────────────────────
|
|
51
51
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# ============================================
|
|
4
4
|
# PRIMERSHEAR EMAIL LIST DEPLOYMENT SCRIPT
|
|
5
5
|
# ============================================
|
|
6
|
-
# Reads primershear.emails, updates PRIMERSHEAR_EMAILS in .env,
|
|
6
|
+
# Reads app/config/primershear.emails, updates PRIMERSHEAR_EMAILS in .env,
|
|
7
7
|
# then deploys that secret directly to Cloudflare Pages (production).
|
|
8
8
|
|
|
9
9
|
set -e
|
|
@@ -26,7 +26,7 @@ trap 'echo -e "\n${RED}❌ deploy-primershear-emails.sh failed near line ${LINEN
|
|
|
26
26
|
|
|
27
27
|
# ── Read emails file ──────────────────────────────────────────────────────────
|
|
28
28
|
|
|
29
|
-
EMAILS_FILE="$PROJECT_ROOT/primershear.emails"
|
|
29
|
+
EMAILS_FILE="$PROJECT_ROOT/app/config/primershear.emails"
|
|
30
30
|
|
|
31
31
|
if [ ! -f "$EMAILS_FILE" ]; then
|
|
32
32
|
echo -e "${RED}❌ primershear.emails not found at: $EMAILS_FILE${NC}"
|
|
@@ -44,7 +44,7 @@ if [ -z "$PRIMERSHEAR_EMAILS" ]; then
|
|
|
44
44
|
fi
|
|
45
45
|
|
|
46
46
|
EMAIL_COUNT=$(echo "$PRIMERSHEAR_EMAILS" | tr ',' '\n' | grep -c '[^[:space:]]' || true)
|
|
47
|
-
echo -e "${GREEN}✅ Loaded $EMAIL_COUNT email address(es) from primershear.emails${NC}"
|
|
47
|
+
echo -e "${GREEN}✅ Loaded $EMAIL_COUNT email address(es) from app/config/primershear.emails${NC}"
|
|
48
48
|
|
|
49
49
|
# ── Update .env ───────────────────────────────────────────────────────────────
|
|
50
50
|
|
package/wrangler.toml.example
CHANGED