@live-change/frontend-base 0.2.8 → 0.2.9

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/client-entry.js CHANGED
@@ -7,7 +7,7 @@ import {
7
7
 
8
8
  import { createApp } from "./main.js"
9
9
 
10
- export function clientEntry(App, createRouter) {
10
+ export async function clientEntry(App, createRouter, config = {}) {
11
11
 
12
12
  const windowId = window.__WINDOW_ID__
13
13
  console.error("CLIENT WINDOW ID", windowId)
@@ -18,8 +18,10 @@ export function clientEntry(App, createRouter) {
18
18
  })
19
19
 
20
20
  const host = document.location.host
21
-
22
- const { app, router } = createApp(api, App, createRouter, host, false)
21
+ const url = document.location.pathname + document.location.search
22
+ const { app, router } = await createApp(
23
+ config, api, App, createRouter, host, null, null, url
24
+ )
23
25
 
24
26
  app.use(createSharedElementDirective())
25
27
  router.beforeEach(SharedElementRouteGuard)
package/main.js CHANGED
@@ -15,11 +15,12 @@ import StyleClass from 'primevue/styleclass'
15
15
  import Ripple from 'primevue/ripple'
16
16
  import BadgeDirective from 'primevue/badgedirective'
17
17
  import VueLazyLoad from 'vue3-lazyload'
18
+ import { createI18n } from 'vue-i18n'
18
19
 
19
20
  // SSR requires a fresh app instance per request, therefore we export a function
20
21
  // that creates a fresh app instance. If using Vuex, we'd also be creating a
21
22
  // fresh store here.
22
- export function createApp(api, App, createRouter, host, response) {
23
+ export async function createApp(config, api, App, createRouter, host, headers, response, url) {
23
24
  const isSSR = response !== undefined
24
25
  const app = createSSRApp(App)
25
26
  app.config.devtools = true
@@ -74,5 +75,17 @@ export function createApp(api, App, createRouter, host, response) {
74
75
  })
75
76
  app.use(meta)
76
77
 
78
+ const defaultLocale = config.defaultLocale || 'en'
79
+ const i18n = createI18n({
80
+ legacy: false,
81
+ locale: config.localeSelector // TODO: read stored language
82
+ ? await config.localeSelector({ api, host, url, headers })
83
+ : defaultLocale,
84
+ fallbackLocale: config.fallbackLocale || defaultLocale,
85
+ messages: config.i18nMessages || {}
86
+ })
87
+ console.log("I18N MESSAGES", config.i18nMessages)
88
+ app.use(i18n)
89
+
77
90
  return { app, router }
78
91
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@live-change/frontend-base",
3
- "version": "0.2.8",
3
+ "version": "0.2.9",
4
4
  "scripts": {
5
5
  "memDev": "lcli memDev --enableSessions --initScript ./init.js --templatePath ../../base-frontend/index.html",
6
6
  "localDevInit": "rm tmp.db; lcli localDev --enableSessions --initScript ./init.js",
@@ -28,7 +28,7 @@
28
28
  "@live-change/password-authentication-service": "0.3.2",
29
29
  "@live-change/secret-code-service": "0.3.2",
30
30
  "@live-change/secret-link-service": "0.3.2",
31
- "@live-change/security-frontend": "^0.2.8",
31
+ "@live-change/security-frontend": "^0.2.9",
32
32
  "@live-change/session-service": "0.3.2",
33
33
  "@live-change/user-service": "0.3.2",
34
34
  "@live-change/vue3-components": "0.2.16",
@@ -51,6 +51,7 @@
51
51
  "v-shared-element": "3.1.0",
52
52
  "vite-plugin-compression": "0.5.1",
53
53
  "vite-plugin-vue-images": "^0.6.1",
54
+ "vue-i18n": "^9.2.2",
54
55
  "vue-meta": "^3.0.0-alpha.9",
55
56
  "vue-router": "^4.1.3",
56
57
  "vue3-lazyload": "0.2.5-beta",
@@ -69,5 +70,5 @@
69
70
  "author": "",
70
71
  "license": "BSD-3-Clause",
71
72
  "description": "",
72
- "gitHead": "72bd46680370e7804b168fec5dde28de205487e0"
73
+ "gitHead": "703c9723562ade7b2420e1b25b28ced51a96db09"
73
74
  }
package/server-entry.js CHANGED
@@ -6,7 +6,7 @@ import { serverApi } from '@live-change/vue3-ssr/serverApi.js'
6
6
  import { createApp } from "./main.js"
7
7
 
8
8
  function escapeHtml(unsafe) {
9
- return unsafe
9
+ return (''+unsafe)
10
10
  .replace(/&/g, "&")
11
11
  .replace(/</g, "&lt;")
12
12
  .replace(/>/g, "&gt;")
@@ -14,8 +14,9 @@ function escapeHtml(unsafe) {
14
14
  .replace(/'/g, "&#039;");
15
15
  }
16
16
 
17
- export function serverEntry(App, createRouter) {
18
- return async function({ url, host, dao, windowId }) {
17
+ export function serverEntry(App, createRouter, config = {}) {
18
+ return async function({ url, headers, dao, windowId }) {
19
+ const host = headers['host']
19
20
  console.error('URL', host, url)
20
21
  const api = await serverApi(dao, {
21
22
  use: [],
@@ -29,7 +30,9 @@ export function serverEntry(App, createRouter) {
29
30
  }
30
31
  }
31
32
 
32
- const { app, router } = createApp(api, App, createRouter, host, response)
33
+ const { app, router } = await createApp(
34
+ config, api, App, createRouter, host, headers, response, url
35
+ )
33
36
 
34
37
  app.directive('shared-element', {})
35
38
 
@@ -56,6 +59,7 @@ export function serverEntry(App, createRouter) {
56
59
 
57
60
  const metaManager = app.config.globalProperties.$metaManager
58
61
  const activeMeta = metaManager.target.context.active
62
+ console.log("ACTIVE META", activeMeta)
59
63
  ctx.teleports.head = [
60
64
  ...(activeMeta.title ? [`<title data-vm-ssr="true">${escapeHtml(activeMeta.title)}</title>`] : []),
61
65
  ...((activeMeta.meta || []).map(meta => `<meta ${Object.keys(meta).map(