PinHint must not require vue-i18n either, and a gate so the next one is caught
The shepherd reported a P0 I caused:db36397bmade library FilterDropdown call useI18n() unconditionally, which throws "Need to install with `app.use`" on any host that never installed vue-i18n. people-groups-grid deliberately has none, so the grid rendered blank standalone, in the studio and in every composite nesting it -- one of the seven production plugins going to DX. Studio fixed that instance in6603dc17. That fix was NOT on my branch.6603dc17was not an ancestor of my HEAD and my tree still carried the unguarded call, so my next push would have reverted it. Merged before doing anything else. PinHint carried the same unguarded call, added by me in9ba6ad7a. Guarded the same way: host translations when present, the English literal otherwise, with te() answering false so callers fall through to their own defaults. The gate the shepherd asked for is _chk-library-i18n-optional.mjs. It scans library/components for useI18n() calls that are not behind a guard, and it separates LIVE from LATENT, because a wall of identical failures gets ignored while a list of one gets fixed: it computes which bundles install no i18n and which of those actually import each offender. Measured: 17 library components still call useI18n() unguarded, 7 bundles install no i18n (big-picture, doxa-maps-spa, doxa-vision-card, golden-path-check, people-groups-grid, plugin-studio, stack-demo), and LIVE is currently none -- no bare host renders an unguarded component today. The 17 are debt, not safety. They are left for their owners rather than rewritten from here, since library/ reaches every bundle. Two of my own errors on the way, both caught before they reached anyone. I first reported 14 bare bundles, because I grepped for createI18n when the install is usually createAppI18n from @map/i18n -- country-posters does install it. And the gate first reported PeopleGroupDetail as LIVE in people-groups-grid on the strength of a COMMENT mentioning it: a substring match cannot tell an import from prose, which is precisely the defect I reported in check:shared-reached a day earlier and then rebuilt myself. It now strips comments and requires a real import statement or an element tag.
This commit is contained in:
parent
0b2e07c830
commit
90ceac36ba
11 changed files with 171 additions and 159 deletions
|
|
@ -41,7 +41,19 @@ import { ref, inject, computed, onMounted, onBeforeUnmount, getCurrentInstance,
|
|||
import { useI18n } from 'vue-i18n'
|
||||
import { useShadowStyles } from '../../composables/useShadowStyles.js'
|
||||
|
||||
const { t, te } = useI18n()
|
||||
// ★ i18n IS OPTIONAL HERE, NOT REQUIRED. useI18n() THROWS ("Need to install with `app.use`
|
||||
// function") on any host that never installed vue-i18n, and seven bundles in this repo do not --
|
||||
// big-picture, doxa-maps-spa, doxa-vision-card, golden-path-check, people-groups-grid,
|
||||
// plugin-studio, stack-demo. An unguarded call in a LIBRARY component is therefore a blank page
|
||||
// waiting for the first bare host that renders it: that is exactly how library FilterDropdown
|
||||
// blanked people-groups-grid everywhere (a production plugin), fixed by studio in 6603dc17.
|
||||
// This call was mine, added in 9ba6ad7a. Same shape of fix: use the host's translations when it
|
||||
// has them, the English literal otherwise. `te` becomes a "no, I don't have it" so every caller
|
||||
// falls through to its own default.
|
||||
const PINHINT_FALLBACK = { 'messages.pinHint.tapDot': 'Tap a dot to see who still needs prayer' }
|
||||
let t = (key) => PINHINT_FALLBACK[key] || key
|
||||
let te = () => false
|
||||
try { const i18n = useI18n(); t = i18n.t; te = i18n.te } catch (_) { /* no i18n on this host */ }
|
||||
const uiStore = inject('uiStore', null)
|
||||
const profileConfig = inject('profileConfig', null)
|
||||
const isDark = computed(() => uiStore?.theme === 'dark')
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <country-posters-map> custom element. -->
|
||||
<script src="../country-posters.js" integrity="sha384-6BMY4s31pHynQ7rtUkG2xWcZeluGOVbQtYJWwn7VJ+byd8sK/o4gj5/DOMwROgUI" crossorigin="anonymous"></script>
|
||||
<script src="../country-posters.js" integrity="sha384-ravBExKROrutu+/bYRm5G3kIoOytPz3YdQToKRUpUPpKE2n6i/vAZjpxK4jTY4y6" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <country-posters-map> custom element. -->
|
||||
<script src="../country-posters.js" integrity="sha384-6BMY4s31pHynQ7rtUkG2xWcZeluGOVbQtYJWwn7VJ+byd8sK/o4gj5/DOMwROgUI" crossorigin="anonymous"></script>
|
||||
<script src="../country-posters.js" integrity="sha384-ravBExKROrutu+/bYRm5G3kIoOytPz3YdQToKRUpUPpKE2n6i/vAZjpxK4jTY4y6" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <country-posters-map> custom element. -->
|
||||
<script src="../country-posters.js" integrity="sha384-6BMY4s31pHynQ7rtUkG2xWcZeluGOVbQtYJWwn7VJ+byd8sK/o4gj5/DOMwROgUI" crossorigin="anonymous"></script>
|
||||
<script src="../country-posters.js" integrity="sha384-ravBExKROrutu+/bYRm5G3kIoOytPz3YdQToKRUpUPpKE2n6i/vAZjpxK4jTY4y6" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
150
public/doxa-maps/country-posters/country-posters.js
generated
150
public/doxa-maps/country-posters/country-posters.js
generated
File diff suppressed because one or more lines are too long
2
public/doxa-maps/index.html
generated
2
public/doxa-maps/index.html
generated
File diff suppressed because one or more lines are too long
16
public/doxa-maps/manifest.json
generated
16
public/doxa-maps/manifest.json
generated
|
|
@ -158,7 +158,7 @@
|
|||
"bundle": "country-posters",
|
||||
"scriptUrl": "./country-posters/country-posters.js",
|
||||
"output": "doxa-maps/country-posters/country-posters.js",
|
||||
"integrity": "sha384-6BMY4s31pHynQ7rtUkG2xWcZeluGOVbQtYJWwn7VJ+byd8sK/o4gj5/DOMwROgUI",
|
||||
"integrity": "sha384-ravBExKROrutu+/bYRm5G3kIoOytPz3YdQToKRUpUPpKE2n6i/vAZjpxK4jTY4y6",
|
||||
"elements": [
|
||||
"country-posters-map"
|
||||
],
|
||||
|
|
@ -178,7 +178,7 @@
|
|||
"scriptUrl": "./country-posters/country-posters.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./country-posters/countries-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./country-posters/country-posters.js\" integrity=\"sha384-6BMY4s31pHynQ7rtUkG2xWcZeluGOVbQtYJWwn7VJ+byd8sK/o4gj5/DOMwROgUI\" crossorigin=\"anonymous\"></script>\n<country-posters-map profile-config='{\"profile\":\"countries-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./country-posters/country-posters.js\" integrity=\"sha384-ravBExKROrutu+/bYRm5G3kIoOytPz3YdQToKRUpUPpKE2n6i/vAZjpxK4jTY4y6\" crossorigin=\"anonymous\"></script>\n<country-posters-map profile-config='{\"profile\":\"countries-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -192,7 +192,7 @@
|
|||
"scriptUrl": "./country-posters/country-posters.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./country-posters/country-poster-wall/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./country-posters/country-posters.js\" integrity=\"sha384-6BMY4s31pHynQ7rtUkG2xWcZeluGOVbQtYJWwn7VJ+byd8sK/o4gj5/DOMwROgUI\" crossorigin=\"anonymous\"></script>\n<country-posters-map profile-config='{\"profile\":\"country-poster-wall\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./country-posters/country-posters.js\" integrity=\"sha384-ravBExKROrutu+/bYRm5G3kIoOytPz3YdQToKRUpUPpKE2n6i/vAZjpxK4jTY4y6\" crossorigin=\"anonymous\"></script>\n<country-posters-map profile-config='{\"profile\":\"country-poster-wall\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -206,7 +206,7 @@
|
|||
"scriptUrl": "./country-posters/country-posters.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./country-posters/country-posters-mfe/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./country-posters/country-posters.js\" integrity=\"sha384-6BMY4s31pHynQ7rtUkG2xWcZeluGOVbQtYJWwn7VJ+byd8sK/o4gj5/DOMwROgUI\" crossorigin=\"anonymous\"></script>\n<country-posters-map profile-config='{\"profile\":\"country-posters-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./country-posters/country-posters.js\" integrity=\"sha384-ravBExKROrutu+/bYRm5G3kIoOytPz3YdQToKRUpUPpKE2n6i/vAZjpxK4jTY4y6\" crossorigin=\"anonymous\"></script>\n<country-posters-map profile-config='{\"profile\":\"country-posters-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -879,7 +879,7 @@
|
|||
"bundle": "regions-dashboard",
|
||||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"output": "doxa-maps/regions-dashboard/regions-dashboard.js",
|
||||
"integrity": "sha384-qqudnDvCA5SQ/E4UsBNOSagQJfm32AOGfNqWKNQrHm4FgTq3S3OlEE5PIqRJZvhO",
|
||||
"integrity": "sha384-1bDMEUBlEnX3snypPE6DcJnVvxUo3LDCrqnuXyGqAr9iUm7hjNurlCuD63fEbsN3",
|
||||
"elements": [
|
||||
"regions-dashboard"
|
||||
],
|
||||
|
|
@ -899,7 +899,7 @@
|
|||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./regions-dashboard/region-dashboards/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-qqudnDvCA5SQ/E4UsBNOSagQJfm32AOGfNqWKNQrHm4FgTq3S3OlEE5PIqRJZvhO\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-1bDMEUBlEnX3snypPE6DcJnVvxUo3LDCrqnuXyGqAr9iUm7hjNurlCuD63fEbsN3\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -913,7 +913,7 @@
|
|||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./regions-dashboard/regions-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-qqudnDvCA5SQ/E4UsBNOSagQJfm32AOGfNqWKNQrHm4FgTq3S3OlEE5PIqRJZvhO\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-1bDMEUBlEnX3snypPE6DcJnVvxUo3LDCrqnuXyGqAr9iUm7hjNurlCuD63fEbsN3\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -927,7 +927,7 @@
|
|||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./regions-dashboard/regions-mfe/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-qqudnDvCA5SQ/E4UsBNOSagQJfm32AOGfNqWKNQrHm4FgTq3S3OlEE5PIqRJZvhO\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-1bDMEUBlEnX3snypPE6DcJnVvxUo3LDCrqnuXyGqAr9iUm7hjNurlCuD63fEbsN3\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <regions-dashboard> custom element. -->
|
||||
<script src="../regions-dashboard.js" integrity="sha384-qqudnDvCA5SQ/E4UsBNOSagQJfm32AOGfNqWKNQrHm4FgTq3S3OlEE5PIqRJZvhO" crossorigin="anonymous"></script>
|
||||
<script src="../regions-dashboard.js" integrity="sha384-1bDMEUBlEnX3snypPE6DcJnVvxUo3LDCrqnuXyGqAr9iUm7hjNurlCuD63fEbsN3" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
136
public/doxa-maps/regions-dashboard/regions-dashboard.js
generated
136
public/doxa-maps/regions-dashboard/regions-dashboard.js
generated
File diff suppressed because one or more lines are too long
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <regions-dashboard> custom element. -->
|
||||
<script src="../regions-dashboard.js" integrity="sha384-qqudnDvCA5SQ/E4UsBNOSagQJfm32AOGfNqWKNQrHm4FgTq3S3OlEE5PIqRJZvhO" crossorigin="anonymous"></script>
|
||||
<script src="../regions-dashboard.js" integrity="sha384-1bDMEUBlEnX3snypPE6DcJnVvxUo3LDCrqnuXyGqAr9iUm7hjNurlCuD63fEbsN3" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <regions-dashboard> custom element. -->
|
||||
<script src="../regions-dashboard.js" integrity="sha384-qqudnDvCA5SQ/E4UsBNOSagQJfm32AOGfNqWKNQrHm4FgTq3S3OlEE5PIqRJZvhO" crossorigin="anonymous"></script>
|
||||
<script src="../regions-dashboard.js" integrity="sha384-1bDMEUBlEnX3snypPE6DcJnVvxUo3LDCrqnuXyGqAr9iUm7hjNurlCuD63fEbsN3" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
Loading…
Reference in a new issue