@striae-org/striae 5.1.1 → 5.2.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 (30) hide show
  1. package/.env.example +20 -1
  2. package/app/utils/data/permissions.ts +4 -2
  3. package/package.json +4 -4
  4. package/scripts/deploy-config/modules/env-utils.sh +322 -0
  5. package/scripts/deploy-config/modules/keys.sh +404 -0
  6. package/scripts/deploy-config/modules/prompt.sh +372 -0
  7. package/scripts/deploy-config/modules/scaffolding.sh +336 -0
  8. package/scripts/deploy-config/modules/validation.sh +365 -0
  9. package/scripts/deploy-config.sh +47 -1572
  10. package/scripts/deploy-worker-secrets.sh +100 -5
  11. package/worker-configuration.d.ts +6 -3
  12. package/workers/audit-worker/package.json +1 -1
  13. package/workers/audit-worker/src/audit-worker.example.ts +188 -6
  14. package/workers/audit-worker/wrangler.jsonc.example +1 -1
  15. package/workers/data-worker/package.json +1 -1
  16. package/workers/data-worker/src/data-worker.example.ts +344 -32
  17. package/workers/data-worker/wrangler.jsonc.example +1 -1
  18. package/workers/image-worker/package.json +1 -1
  19. package/workers/image-worker/src/image-worker.example.ts +190 -5
  20. package/workers/image-worker/wrangler.jsonc.example +1 -1
  21. package/workers/keys-worker/package.json +1 -1
  22. package/workers/keys-worker/wrangler.jsonc.example +1 -1
  23. package/workers/pdf-worker/package.json +1 -1
  24. package/workers/pdf-worker/src/pdf-worker.example.ts +0 -1
  25. package/workers/pdf-worker/wrangler.jsonc.example +1 -5
  26. package/workers/user-worker/package.json +17 -17
  27. package/workers/user-worker/src/encryption-utils.ts +244 -0
  28. package/workers/user-worker/src/user-worker.example.ts +333 -31
  29. package/workers/user-worker/wrangler.jsonc.example +1 -1
  30. package/wrangler.toml.example +1 -1
@@ -0,0 +1,336 @@
1
+ #!/bin/bash
2
+
3
+ copy_example_configs() {
4
+ echo -e "\n${BLUE}📋 Copying example configuration files...${NC}"
5
+
6
+ # Copy app configuration files
7
+ echo -e "${YELLOW} Copying app configuration files...${NC}"
8
+
9
+ # Copy app config-example directory to config (always sync non-admin files)
10
+ if [ -d "app/config-example" ]; then
11
+ local admin_service_backup=""
12
+ local copied_config_files=0
13
+ local skipped_existing_files=0
14
+
15
+ if [ -f "app/config/admin-service.json" ]; then
16
+ admin_service_backup=$(mktemp)
17
+ cp "app/config/admin-service.json" "$admin_service_backup"
18
+ fi
19
+
20
+ if [ "$update_env" = "true" ]; then
21
+ rm -rf app/config
22
+ fi
23
+
24
+ mkdir -p app/config
25
+
26
+ while IFS= read -r source_file; do
27
+ local relative_path
28
+ local destination_file
29
+ relative_path="${source_file#app/config-example/}"
30
+ destination_file="app/config/$relative_path"
31
+
32
+ mkdir -p "$(dirname "$destination_file")"
33
+
34
+ if [ "$update_env" = "true" ] || [ ! -f "$destination_file" ]; then
35
+ cp "$source_file" "$destination_file"
36
+ copied_config_files=$((copied_config_files + 1))
37
+ else
38
+ skipped_existing_files=$((skipped_existing_files + 1))
39
+ fi
40
+ done < <(find app/config-example -type f ! -name "admin-service.json")
41
+
42
+ # Ensure example credentials are never copied from config-example.
43
+ rm -f app/config/admin-service.json
44
+
45
+ if [ -n "$admin_service_backup" ] && [ -f "$admin_service_backup" ]; then
46
+ cp "$admin_service_backup" "app/config/admin-service.json"
47
+ rm -f "$admin_service_backup"
48
+ echo -e "${GREEN} ✅ app: preserved existing admin-service.json${NC}"
49
+ else
50
+ echo -e "${YELLOW} âš ī¸ app: skipped copying admin-service.json (provide your own credentials file)${NC}"
51
+ fi
52
+
53
+ if [ "$update_env" = "true" ]; then
54
+ echo -e "${GREEN} ✅ app: config directory reset from config-example (excluding admin-service.json)${NC}"
55
+ else
56
+ echo -e "${GREEN} ✅ app: synced missing files from config-example (excluding admin-service.json)${NC}"
57
+ fi
58
+
59
+ if [ "$skipped_existing_files" -gt 0 ]; then
60
+ echo -e "${YELLOW} â„šī¸ app: kept $skipped_existing_files existing config file(s)${NC}"
61
+ fi
62
+
63
+ echo -e "${GREEN} ✅ app: copied $copied_config_files config file(s) from config-example${NC}"
64
+ fi
65
+
66
+ # Copy auth route template files
67
+ echo -e "${YELLOW} Copying auth route template files...${NC}"
68
+
69
+ if [ -f "app/routes/auth/login.example.tsx" ] && { [ "$update_env" = "true" ] || [ ! -f "app/routes/auth/login.tsx" ]; }; then
70
+ cp app/routes/auth/login.example.tsx app/routes/auth/login.tsx
71
+ echo -e "${GREEN} ✅ auth: login.tsx created from example${NC}"
72
+ elif [ -f "app/routes/auth/login.tsx" ]; then
73
+ echo -e "${YELLOW} âš ī¸ auth: login.tsx already exists, skipping copy${NC}"
74
+ fi
75
+
76
+ if [ -f "app/routes/auth/login.module.example.css" ] && { [ "$update_env" = "true" ] || [ ! -f "app/routes/auth/login.module.css" ]; }; then
77
+ cp app/routes/auth/login.module.example.css app/routes/auth/login.module.css
78
+ echo -e "${GREEN} ✅ auth: login.module.css created from example${NC}"
79
+ elif [ -f "app/routes/auth/login.module.css" ]; then
80
+ echo -e "${YELLOW} âš ī¸ auth: login.module.css already exists, skipping copy${NC}"
81
+ fi
82
+
83
+ # Navigate to each worker directory and copy the example file
84
+ echo -e "${YELLOW} Copying worker configuration files...${NC}"
85
+
86
+ cd workers/keys-worker
87
+ if [ -f "wrangler.jsonc.example" ] && { [ "$update_env" = "true" ] || [ ! -f "wrangler.jsonc" ]; }; then
88
+ cp wrangler.jsonc.example wrangler.jsonc
89
+ echo -e "${GREEN} ✅ keys-worker: wrangler.jsonc created from example${NC}"
90
+ elif [ -f "wrangler.jsonc" ]; then
91
+ echo -e "${YELLOW} âš ī¸ keys-worker: wrangler.jsonc already exists, skipping copy${NC}"
92
+ fi
93
+
94
+ cd ../user-worker
95
+ if [ -f "wrangler.jsonc.example" ] && { [ "$update_env" = "true" ] || [ ! -f "wrangler.jsonc" ]; }; then
96
+ cp wrangler.jsonc.example wrangler.jsonc
97
+ echo -e "${GREEN} ✅ user-worker: wrangler.jsonc created from example${NC}"
98
+ elif [ -f "wrangler.jsonc" ]; then
99
+ echo -e "${YELLOW} âš ī¸ user-worker: wrangler.jsonc already exists, skipping copy${NC}"
100
+ fi
101
+
102
+ cd ../data-worker
103
+ if [ -f "wrangler.jsonc.example" ] && { [ "$update_env" = "true" ] || [ ! -f "wrangler.jsonc" ]; }; then
104
+ cp wrangler.jsonc.example wrangler.jsonc
105
+ echo -e "${GREEN} ✅ data-worker: wrangler.jsonc created from example${NC}"
106
+ elif [ -f "wrangler.jsonc" ]; then
107
+ echo -e "${YELLOW} âš ī¸ data-worker: wrangler.jsonc already exists, skipping copy${NC}"
108
+ fi
109
+
110
+ cd ../audit-worker
111
+ if [ -f "wrangler.jsonc.example" ] && { [ "$update_env" = "true" ] || [ ! -f "wrangler.jsonc" ]; }; then
112
+ cp wrangler.jsonc.example wrangler.jsonc
113
+ echo -e "${GREEN} ✅ audit-worker: wrangler.jsonc created from example${NC}"
114
+ elif [ -f "wrangler.jsonc" ]; then
115
+ echo -e "${YELLOW} âš ī¸ audit-worker: wrangler.jsonc already exists, skipping copy${NC}"
116
+ fi
117
+
118
+ cd ../image-worker
119
+ if [ -f "wrangler.jsonc.example" ] && { [ "$update_env" = "true" ] || [ ! -f "wrangler.jsonc" ]; }; then
120
+ cp wrangler.jsonc.example wrangler.jsonc
121
+ echo -e "${GREEN} ✅ image-worker: wrangler.jsonc created from example${NC}"
122
+ elif [ -f "wrangler.jsonc" ]; then
123
+ echo -e "${YELLOW} âš ī¸ image-worker: wrangler.jsonc already exists, skipping copy${NC}"
124
+ fi
125
+
126
+ cd ../pdf-worker
127
+ if [ -f "wrangler.jsonc.example" ] && { [ "$update_env" = "true" ] || [ ! -f "wrangler.jsonc" ]; }; then
128
+ cp wrangler.jsonc.example wrangler.jsonc
129
+ echo -e "${GREEN} ✅ pdf-worker: wrangler.jsonc created from example${NC}"
130
+ elif [ -f "wrangler.jsonc" ]; then
131
+ echo -e "${YELLOW} âš ī¸ pdf-worker: wrangler.jsonc already exists, skipping copy${NC}"
132
+ fi
133
+
134
+ # Return to project root
135
+ cd ../..
136
+
137
+ # Copy worker source template files
138
+ echo -e "${YELLOW} Copying worker source template files...${NC}"
139
+
140
+ if [ -f "workers/keys-worker/src/keys.example.ts" ] && { [ "$update_env" = "true" ] || [ ! -f "workers/keys-worker/src/keys.ts" ]; }; then
141
+ cp workers/keys-worker/src/keys.example.ts workers/keys-worker/src/keys.ts
142
+ echo -e "${GREEN} ✅ keys-worker: keys.ts created from example${NC}"
143
+ elif [ -f "workers/keys-worker/src/keys.ts" ]; then
144
+ echo -e "${YELLOW} âš ī¸ keys-worker: keys.ts already exists, skipping copy${NC}"
145
+ fi
146
+
147
+ if [ -f "workers/user-worker/src/user-worker.example.ts" ] && { [ "$update_env" = "true" ] || [ ! -f "workers/user-worker/src/user-worker.ts" ]; }; then
148
+ cp workers/user-worker/src/user-worker.example.ts workers/user-worker/src/user-worker.ts
149
+ echo -e "${GREEN} ✅ user-worker: user-worker.ts created from example${NC}"
150
+ elif [ -f "workers/user-worker/src/user-worker.ts" ]; then
151
+ echo -e "${YELLOW} âš ī¸ user-worker: user-worker.ts already exists, skipping copy${NC}"
152
+ fi
153
+
154
+ if [ -f "workers/data-worker/src/data-worker.example.ts" ] && { [ "$update_env" = "true" ] || [ ! -f "workers/data-worker/src/data-worker.ts" ]; }; then
155
+ cp workers/data-worker/src/data-worker.example.ts workers/data-worker/src/data-worker.ts
156
+ echo -e "${GREEN} ✅ data-worker: data-worker.ts created from example${NC}"
157
+ elif [ -f "workers/data-worker/src/data-worker.ts" ]; then
158
+ echo -e "${YELLOW} âš ī¸ data-worker: data-worker.ts already exists, skipping copy${NC}"
159
+ fi
160
+
161
+ if [ -f "workers/audit-worker/src/audit-worker.example.ts" ] && { [ "$update_env" = "true" ] || [ ! -f "workers/audit-worker/src/audit-worker.ts" ]; }; then
162
+ cp workers/audit-worker/src/audit-worker.example.ts workers/audit-worker/src/audit-worker.ts
163
+ echo -e "${GREEN} ✅ audit-worker: audit-worker.ts created from example${NC}"
164
+ elif [ -f "workers/audit-worker/src/audit-worker.ts" ]; then
165
+ echo -e "${YELLOW} âš ī¸ audit-worker: audit-worker.ts already exists, skipping copy${NC}"
166
+ fi
167
+
168
+ if [ -f "workers/image-worker/src/image-worker.example.ts" ] && { [ "$update_env" = "true" ] || [ ! -f "workers/image-worker/src/image-worker.ts" ]; }; then
169
+ cp workers/image-worker/src/image-worker.example.ts workers/image-worker/src/image-worker.ts
170
+ echo -e "${GREEN} ✅ image-worker: image-worker.ts created from example${NC}"
171
+ elif [ -f "workers/image-worker/src/image-worker.ts" ]; then
172
+ echo -e "${YELLOW} âš ī¸ image-worker: image-worker.ts already exists, skipping copy${NC}"
173
+ fi
174
+
175
+ if [ -f "workers/pdf-worker/src/pdf-worker.example.ts" ] && { [ "$update_env" = "true" ] || [ ! -f "workers/pdf-worker/src/pdf-worker.ts" ]; }; then
176
+ cp workers/pdf-worker/src/pdf-worker.example.ts workers/pdf-worker/src/pdf-worker.ts
177
+ echo -e "${GREEN} ✅ pdf-worker: pdf-worker.ts created from example${NC}"
178
+ elif [ -f "workers/pdf-worker/src/pdf-worker.ts" ]; then
179
+ echo -e "${YELLOW} âš ī¸ pdf-worker: pdf-worker.ts already exists, skipping copy${NC}"
180
+ fi
181
+
182
+ # Copy main wrangler.toml from example
183
+ if [ -f "wrangler.toml.example" ] && { [ "$update_env" = "true" ] || [ ! -f "wrangler.toml" ]; }; then
184
+ cp wrangler.toml.example wrangler.toml
185
+ echo -e "${GREEN} ✅ root: wrangler.toml created from example${NC}"
186
+ elif [ -f "wrangler.toml" ]; then
187
+ echo -e "${YELLOW} âš ī¸ root: wrangler.toml already exists, skipping copy${NC}"
188
+ fi
189
+
190
+ echo -e "${GREEN}✅ Configuration file copying completed${NC}"
191
+ }
192
+
193
+ update_wrangler_configs() {
194
+ echo -e "\n${BLUE}🔧 Updating wrangler configuration files...${NC}"
195
+
196
+ local normalized_pages_custom_domain
197
+ local escaped_pages_custom_domain
198
+
199
+ normalized_pages_custom_domain=$(normalize_domain_value "$PAGES_CUSTOM_DOMAIN")
200
+ PAGES_CUSTOM_DOMAIN="$normalized_pages_custom_domain"
201
+ export PAGES_CUSTOM_DOMAIN
202
+ write_env_var "PAGES_CUSTOM_DOMAIN" "$PAGES_CUSTOM_DOMAIN"
203
+ escaped_pages_custom_domain=$(escape_for_sed_replacement "$PAGES_CUSTOM_DOMAIN")
204
+
205
+ # Audit Worker
206
+ if [ -f "workers/audit-worker/wrangler.jsonc" ]; then
207
+ echo -e "${YELLOW} Updating audit-worker/wrangler.jsonc...${NC}"
208
+ sed -i "s/\"AUDIT_WORKER_NAME\"/\"$AUDIT_WORKER_NAME\"/g" workers/audit-worker/wrangler.jsonc
209
+ sed -i "s/\"ACCOUNT_ID\"/\"$ACCOUNT_ID\"/g" workers/audit-worker/wrangler.jsonc
210
+ sed -i "s/\"AUDIT_BUCKET_NAME\"/\"$AUDIT_BUCKET_NAME\"/g" workers/audit-worker/wrangler.jsonc
211
+ echo -e "${GREEN} ✅ audit-worker configuration updated${NC}"
212
+ fi
213
+
214
+ if [ -f "workers/audit-worker/src/audit-worker.ts" ]; then
215
+ echo -e "${YELLOW} Updating audit-worker source placeholders...${NC}"
216
+ sed -i "s|'Access-Control-Allow-Origin': '[^']*'|'Access-Control-Allow-Origin': 'https://$escaped_pages_custom_domain'|g" workers/audit-worker/src/audit-worker.ts
217
+ echo -e "${GREEN} ✅ audit-worker source placeholders updated${NC}"
218
+ fi
219
+
220
+ if [ -f "workers/data-worker/wrangler.jsonc" ]; then
221
+ echo -e "${YELLOW} Updating data-worker/wrangler.jsonc...${NC}"
222
+ sed -i "s/\"DATA_WORKER_NAME\"/\"$DATA_WORKER_NAME\"/g" workers/data-worker/wrangler.jsonc
223
+ sed -i "s/\"ACCOUNT_ID\"/\"$ACCOUNT_ID\"/g" workers/data-worker/wrangler.jsonc
224
+ sed -i "s/\"DATA_BUCKET_NAME\"/\"$DATA_BUCKET_NAME\"/g" workers/data-worker/wrangler.jsonc
225
+ echo -e "${GREEN} ✅ data-worker configuration updated${NC}"
226
+ fi
227
+
228
+ if [ -f "workers/data-worker/src/data-worker.ts" ]; then
229
+ echo -e "${YELLOW} Updating data-worker source placeholders...${NC}"
230
+ sed -i "s|'Access-Control-Allow-Origin': '[^']*'|'Access-Control-Allow-Origin': 'https://$escaped_pages_custom_domain'|g" workers/data-worker/src/data-worker.ts
231
+ echo -e "${GREEN} ✅ data-worker source placeholders updated${NC}"
232
+ fi
233
+
234
+ if [ -f "workers/image-worker/wrangler.jsonc" ]; then
235
+ echo -e "${YELLOW} Updating image-worker/wrangler.jsonc...${NC}"
236
+ sed -i "s/\"IMAGES_WORKER_NAME\"/\"$IMAGES_WORKER_NAME\"/g" workers/image-worker/wrangler.jsonc
237
+ sed -i "s/\"ACCOUNT_ID\"/\"$ACCOUNT_ID\"/g" workers/image-worker/wrangler.jsonc
238
+ sed -i "s/\"FILES_BUCKET_NAME\"/\"$FILES_BUCKET_NAME\"/g" workers/image-worker/wrangler.jsonc
239
+ echo -e "${GREEN} ✅ image-worker configuration updated${NC}"
240
+ fi
241
+
242
+ if [ -f "workers/image-worker/src/image-worker.ts" ]; then
243
+ echo -e "${YELLOW} Updating image-worker source placeholders...${NC}"
244
+ sed -i "s|'Access-Control-Allow-Origin': '[^']*'|'Access-Control-Allow-Origin': 'https://$escaped_pages_custom_domain'|g" workers/image-worker/src/image-worker.ts
245
+ echo -e "${GREEN} ✅ image-worker source placeholders updated${NC}"
246
+ fi
247
+
248
+ if [ -f "workers/keys-worker/wrangler.jsonc" ]; then
249
+ echo -e "${YELLOW} Updating keys-worker/wrangler.jsonc...${NC}"
250
+ sed -i "s/\"KEYS_WORKER_NAME\"/\"$KEYS_WORKER_NAME\"/g" workers/keys-worker/wrangler.jsonc
251
+ sed -i "s/\"ACCOUNT_ID\"/\"$ACCOUNT_ID\"/g" workers/keys-worker/wrangler.jsonc
252
+ echo -e "${GREEN} ✅ keys-worker configuration updated${NC}"
253
+ fi
254
+
255
+ if [ -f "workers/keys-worker/src/keys.ts" ]; then
256
+ echo -e "${YELLOW} Updating keys-worker source placeholders...${NC}"
257
+ sed -i "s|'Access-Control-Allow-Origin': '[^']*'|'Access-Control-Allow-Origin': 'https://$escaped_pages_custom_domain'|g" workers/keys-worker/src/keys.ts
258
+ echo -e "${GREEN} ✅ keys-worker source placeholders updated${NC}"
259
+ fi
260
+
261
+ if [ -f "workers/pdf-worker/wrangler.jsonc" ]; then
262
+ echo -e "${YELLOW} Updating pdf-worker/wrangler.jsonc...${NC}"
263
+ sed -i "s/\"PDF_WORKER_NAME\"/\"$PDF_WORKER_NAME\"/g" workers/pdf-worker/wrangler.jsonc
264
+ sed -i "s/\"ACCOUNT_ID\"/\"$ACCOUNT_ID\"/g" workers/pdf-worker/wrangler.jsonc
265
+ echo -e "${GREEN} ✅ pdf-worker configuration updated${NC}"
266
+ fi
267
+
268
+ if [ -f "workers/pdf-worker/src/pdf-worker.ts" ]; then
269
+ echo -e "${YELLOW} Updating pdf-worker source placeholders...${NC}"
270
+ sed -i "s|'Access-Control-Allow-Origin': '[^']*'|'Access-Control-Allow-Origin': 'https://$escaped_pages_custom_domain'|g" workers/pdf-worker/src/pdf-worker.ts
271
+ echo -e "${GREEN} ✅ pdf-worker source placeholders updated${NC}"
272
+ fi
273
+
274
+ if [ -f "workers/user-worker/wrangler.jsonc" ]; then
275
+ echo -e "${YELLOW} Updating user-worker/wrangler.jsonc...${NC}"
276
+ sed -i "s/\"USER_WORKER_NAME\"/\"$USER_WORKER_NAME\"/g" workers/user-worker/wrangler.jsonc
277
+ sed -i "s/\"ACCOUNT_ID\"/\"$ACCOUNT_ID\"/g" workers/user-worker/wrangler.jsonc
278
+ sed -i "s/\"KV_STORE_ID\"/\"$KV_STORE_ID\"/g" workers/user-worker/wrangler.jsonc
279
+ echo -e "${GREEN} ✅ user-worker configuration updated${NC}"
280
+ fi
281
+
282
+ if [ -f "workers/user-worker/src/user-worker.ts" ]; then
283
+ echo -e "${YELLOW} Updating user-worker source placeholders...${NC}"
284
+ sed -i "s|'Access-Control-Allow-Origin': '[^']*'|'Access-Control-Allow-Origin': 'https://$escaped_pages_custom_domain'|g" workers/user-worker/src/user-worker.ts
285
+ sed -i "s|'DATA_WORKER_DOMAIN'|'https://$DATA_WORKER_DOMAIN'|g" workers/user-worker/src/user-worker.ts
286
+ sed -i "s|'IMAGES_WORKER_DOMAIN'|'https://$IMAGES_WORKER_DOMAIN'|g" workers/user-worker/src/user-worker.ts
287
+ echo -e "${GREEN} ✅ user-worker source placeholders updated${NC}"
288
+ fi
289
+
290
+ if [ -f "wrangler.toml" ]; then
291
+ echo -e "${YELLOW} Updating wrangler.toml...${NC}"
292
+ sed -i "s/\"PAGES_PROJECT_NAME\"/\"$PAGES_PROJECT_NAME\"/g" wrangler.toml
293
+ echo -e "${GREEN} ✅ main wrangler.toml configuration updated${NC}"
294
+ fi
295
+
296
+ echo -e "${YELLOW} Updating app configuration files...${NC}"
297
+
298
+ if [ -f "app/config/config.json" ]; then
299
+ echo -e "${YELLOW} Updating app/config/config.json...${NC}"
300
+ local escaped_manifest_signing_key_id
301
+ local escaped_manifest_signing_public_key
302
+ local escaped_export_encryption_key_id
303
+ local escaped_export_encryption_public_key
304
+ escaped_manifest_signing_key_id=$(escape_for_sed_replacement "$MANIFEST_SIGNING_KEY_ID")
305
+ escaped_manifest_signing_public_key=$(escape_for_sed_replacement "$MANIFEST_SIGNING_PUBLIC_KEY")
306
+ escaped_export_encryption_key_id=$(escape_for_sed_replacement "$EXPORT_ENCRYPTION_KEY_ID")
307
+ escaped_export_encryption_public_key=$(escape_for_sed_replacement "$EXPORT_ENCRYPTION_PUBLIC_KEY")
308
+
309
+ sed -i "s|\"url\": \"[^\"]*\"|\"url\": \"https://$escaped_pages_custom_domain\"|g" app/config/config.json
310
+ sed -i "s|\"MANIFEST_SIGNING_KEY_ID\"|\"$escaped_manifest_signing_key_id\"|g" app/config/config.json
311
+ sed -i "s|\"MANIFEST_SIGNING_PUBLIC_KEY\"|\"$escaped_manifest_signing_public_key\"|g" app/config/config.json
312
+ sed -i "s|\"EXPORT_ENCRYPTION_KEY_ID\"|\"$escaped_export_encryption_key_id\"|g" app/config/config.json
313
+ sed -i "s|\"EXPORT_ENCRYPTION_PUBLIC_KEY\"|\"$escaped_export_encryption_public_key\"|g" app/config/config.json
314
+ echo -e "${GREEN} ✅ app config.json updated${NC}"
315
+ fi
316
+
317
+ if [ -f "app/config/firebase.ts" ]; then
318
+ echo -e "${YELLOW} Updating app/config/firebase.ts...${NC}"
319
+ sed -i "s|\"YOUR_FIREBASE_API_KEY\"|\"$API_KEY\"|g" app/config/firebase.ts
320
+ sed -i "s|\"YOUR_FIREBASE_AUTH_DOMAIN\"|\"$AUTH_DOMAIN\"|g" app/config/firebase.ts
321
+ sed -i "s|\"YOUR_FIREBASE_PROJECT_ID\"|\"$PROJECT_ID\"|g" app/config/firebase.ts
322
+ sed -i "s|\"YOUR_FIREBASE_STORAGE_BUCKET\"|\"$STORAGE_BUCKET\"|g" app/config/firebase.ts
323
+ sed -i "s|\"YOUR_FIREBASE_MESSAGING_SENDER_ID\"|\"$MESSAGING_SENDER_ID\"|g" app/config/firebase.ts
324
+ sed -i "s|\"YOUR_FIREBASE_APP_ID\"|\"$APP_ID\"|g" app/config/firebase.ts
325
+ sed -i "s|\"YOUR_FIREBASE_MEASUREMENT_ID\"|\"$MEASUREMENT_ID\"|g" app/config/firebase.ts
326
+ echo -e "${GREEN} ✅ app firebase.ts updated${NC}"
327
+ fi
328
+
329
+ if [ -f "app/routes/auth/login.tsx" ]; then
330
+ echo -e "${YELLOW} Updating app/routes/auth/login.tsx...${NC}"
331
+ sed -i "s|^const APP_CANONICAL_ORIGIN = .*;|const APP_CANONICAL_ORIGIN = 'https://$escaped_pages_custom_domain';|g" app/routes/auth/login.tsx
332
+ echo -e "${GREEN} ✅ app login.tsx canonical origin updated${NC}"
333
+ fi
334
+
335
+ echo -e "${GREEN}✅ All configuration files updated${NC}"
336
+ }