@live-change/user-frontend 0.9.116 → 0.9.118

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.
@@ -7,19 +7,19 @@ export function routes(config = {}) {
7
7
  component: () => import("./Connected.vue"), meta: { signedIn: true } }),
8
8
 
9
9
  route({ name: 'user:connect-email', path: prefix + 'connect-email',
10
- component: () => import("./ConnectEmail.vue") }),
10
+ component: () => import("./ConnectEmail.vue"), meta: { signedIn: true } }),
11
11
  route({ name: 'user:connect-phone', path: prefix + 'connect-phone',
12
- component: () => import("./ConnectPhone.vue") }),
12
+ component: () => import("./ConnectPhone.vue"), meta: { signedIn: true } }),
13
13
 
14
14
  /// redirect user:connect-google to google auth
15
15
  route({ name: 'user:connect-google', path: prefix + 'connect-google',
16
- redirect: { name: 'user:googleAuth', params: { action: 'connectGoogle' } } }),
16
+ redirect: { name: 'user:googleAuth', params: { action: 'connectGoogle' } }, meta: { signedIn: true } }),
17
17
 
18
18
  route({ name: 'user:connect-linkedin', path: prefix + 'connect-linkedin',
19
- redirect: { name: 'user:linkedinAuth', params: { action: 'connectLinkedin' } } }),
19
+ redirect: { name: 'user:linkedinAuth', params: { action: 'connectLinkedin' } }, meta: { signedIn: true } }),
20
20
 
21
21
  route({ name: 'user:connectFinished', path: prefix + 'connect-finished',
22
- component: () => import("./ConnectFinished.vue") }),
22
+ component: () => import("./ConnectFinished.vue"), meta: { signedIn: true } }),
23
23
 
24
24
  ]
25
25
  }
@@ -53,7 +53,12 @@
53
53
  import { useRoute } from "vue-router"
54
54
  const route = useRoute()
55
55
 
56
- const savedRoute = route.fullPath
56
+ const savedRoute = {
57
+ name: route.name,
58
+ params: route.params,
59
+ query: route.query,
60
+ hash: route.hash
61
+ }
57
62
 
58
63
  const props = defineProps({
59
64
  scopes: {
@@ -40,20 +40,46 @@
40
40
  import { useRouter } from 'vue-router'
41
41
  const router = useRouter()
42
42
 
43
- import { usePath, live } from "@live-change/vue3-ssr"
43
+ import { usePath, live, useApi } from "@live-change/vue3-ssr"
44
+ const api = useApi()
45
+
46
+ const userClientConfig = api.getServiceDefinition('user')?.clientConfig
44
47
 
45
48
  import pluralize from 'pluralize'
46
49
 
47
- const afterGoogleAccessGained = computed( () => isMounted.value && localStorage.afterGoogleAccessGained )
48
- let redirectTime
49
- onMounted(() => {
50
- redirectTime = new Date(Date.now() + 10 * 1000)
51
- setTimeout(() => {
52
- if (afterGoogleAccessGained.value) {
53
- localStorage.removeItem('afterGoogleAccessGained')
54
- router.push(JSON.parse(afterGoogleAccessGained.value))
50
+ const afterGoogleAccessGained = ref()
51
+ const redirectTime = ref()
52
+ let redirectTimeout
53
+ function doRedirect() {
54
+ if(localStorage.afterGoogleAccessGained) {
55
+ const route = JSON.parse(localStorage.afterGoogleAccessGained)
56
+ localStorage.removeItem('afterGoogleAccessGained')
57
+ const delay = route?.meta?.afterGoogleAccessGainedRedirectDelay
58
+ ?? userClientConfig?.afterGoogleAccessGainedRedirectDelay
59
+ ?? 10
60
+ delete route.meta
61
+ afterGoogleAccessGained.value = route
62
+ if(delay) {
63
+ redirectTime.value = new Date(Date.now() + delay * 1000).getTime()
64
+ redirectTimeout = setTimeout(() => {
65
+ if(!finished) router.push(route)
66
+ }, redirectTime.value - currentTime.value)
67
+ } else {
68
+ setTimeout(() => { // it could be next tick
69
+ toast.add({
70
+ severity: 'info', life: 6000,
71
+ summary: 'Signed in',
72
+ detail: 'Congratulations! You have successfully logged in to your account.'
73
+ })
74
+ router.push(route)
75
+ }, 100)
55
76
  }
56
- }, redirectTime - Date.now())
77
+ }
78
+ }
79
+ let finished = false
80
+
81
+ onMounted(() => {
82
+ if(!finished) doRedirect()
57
83
  })
58
84
 
59
85
  const path = usePath()
@@ -1,11 +1,47 @@
1
1
  import { defineConfig } from 'vite'
2
+ import Pages from 'vite-plugin-pages'
2
3
 
4
+ import { fileURLToPath } from 'url'
5
+ import { dirname, join } from 'path'
6
+ import { accessSync, readFileSync } from 'fs'
7
+
8
+ const packageJsonPath = dirname(fileURLToPath(import.meta.url))
9
+ .split('/').map((part, i, arr) =>
10
+ join(arr.slice(0, arr.length - i).join('/'), 'package.json')
11
+ ).find(p => { try { accessSync(p); return true } catch(e) { return false }})
12
+ const packageJson = packageJsonPath ? JSON.parse(readFileSync(packageJsonPath, 'utf-8')) : {}
13
+ const version = process.env.VERSION ?? packageJson.version ?? 'unknown'
14
+
15
+ // @ts-ignore
3
16
  import baseViteConfig from '@live-change/frontend-base/vite-config.js'
4
17
 
5
18
  export default defineConfig(async ({ command, mode }) => {
19
+ const baseConfig = (await baseViteConfig({ command, mode, version }))
6
20
  return {
7
- ...(await baseViteConfig({ command, mode })),
21
+ ...baseConfig,
22
+
23
+ define: {
24
+ ...baseConfig.define,
25
+ },
8
26
 
27
+ plugins: [
28
+ ...baseConfig.plugins,
29
+ Pages({
30
+ dirs: [
31
+ // basic
32
+ { dir: 'src/pages', baseRoute: '' },
33
+ // blog
34
+ // { dir: 'src/blog', baseRoute: 'blog' },
35
+ ],
36
+ extensions: ['vue', 'md'],
37
+ }),
38
+ ],
9
39
 
40
+ resolve: {
41
+ ...baseConfig.resolve,
42
+ alias: [
43
+ ...baseConfig.resolve.alias,
44
+ ]
45
+ }
10
46
  }
11
47
  })
package/package.json CHANGED
@@ -1,50 +1,64 @@
1
1
  {
2
2
  "name": "@live-change/user-frontend",
3
- "version": "0.9.116",
3
+ "version": "0.9.118",
4
4
  "scripts": {
5
- "memDev": "node --inspect --expose-gc server/start.js memDev --enableSessions --initScript ./init.js --dbAccess",
6
- "localDevInit": "rm tmp.db; node server/start.js localDev --enableSessions --initScript ./init.js",
7
- "localDev": "node --inspect --expose-gc server/start.js localDev --enableSessions --dbAccess",
8
- "dev": "node --inspect --expose-gc server/start.js dev --enableSessions",
9
- "ssrDev": "node server/start.js ssrDev --enableSessions",
10
- "serveAllMem": "cross-env NODE_ENV=production lcli ssrServer --withApi --withServices --updateServices --enableSessions --withDb --dbBackend mem --createDb",
11
- "serveAll": "cross-env NODE_ENV=production lcli ssrServer --withApi --withServices --updateServices --enableSessions",
12
- "serve": "cross-env NODE_ENV=production lcli ssrServer --enableSessions",
13
- "apiServer": "node server/start.js apiServer --enableSessions",
14
- "devApiServer": "node server/start.js devApiServer --enableSessions",
15
- "memApiServer": "node server/start.js memApiServer --enableSessions",
16
- "build": "cd front; yarn build:client && yarn build:server",
17
- "build:client": "cd front; vite build --ssrManifest --outDir dist/client",
18
- "build:server": "cd front; vite build --ssr src/entry-server.js --outDir dist/server",
19
- "generate": "vite build --ssrManifest --outDir dist/static && yarn build:server && node prerender",
20
- "debug": "node --inspect-brk server",
21
- "describe": "node server/start.js describe"
5
+ "memDev": "tsx --inspect --expose-gc server/start.js memDev --enableSessions --initScript ./init.js --dbAccess",
6
+ "localDevInit": "tsx server/start.js localDev --enableSessions --initScript ./init.js --dbAccess",
7
+ "localDev": "tsx server/start.js localDev --enableSessions --dbAccess",
8
+ "dev": "tsx --inspect --expose-gc server/start.js dev --enableSessions",
9
+ "ssrDev": "tsx server/start.js ssrDev --enableSessions",
10
+ "serveAllMem": "cross-env NODE_ENV=production node dist/server/start.js ssrServer --withApi --withServices --updateServices --enableSessions --withDb --dbBackend mem --createDb",
11
+ "serveAll": "cross-env NODE_ENV=production node dist/server/start.js ssrServer --withApi --withServices --updateServices --enableSessions",
12
+ "serveAllLocal": "cross-env NODE_ENV=production node dist/server/start.js ssrServer --withApi --withServices --updateServices --enableSessions --withDb --createDb",
13
+ "serve": "cross-env NODE_ENV=production node dist/server/start.js ssrServer --enableSessions",
14
+ "memDev:spa": "tsx server/start.js memDev --enableSessions --initScript ./init.js --dbAccess --spa",
15
+ "localDevInit:spa": "rm tmp.db; tsx server/start.js localDev --enableSessions --initScript ./init.js --spa",
16
+ "localDev:spa": "tsx server/start.js localDev --enableSessions --spa",
17
+ "dev:spa": "tsx server/start.js dev --enableSessions --spa",
18
+ "ssrDev:spa": "tsx server/start.js ssrDev --enableSessions --spa",
19
+ "serveAllMem:spa": "cross-env NODE_ENV=production node dist/server/start.js server --withApi --withServices --updateServices --enableSessions --withDb --dbBackend mem --createDb --spa",
20
+ "serveAll:spa": "cross-env NODE_ENV=production node dist/server/start.js server --withApi --withServices --updateServices --enableSessions --spa",
21
+ "serve:spa": "cross-env NODE_ENV=production node dist/server/start.js server --enableSessions --spa",
22
+ "apiServer": "node dist/server/start.js apiServer --enableSessions",
23
+ "devApiServer": "tsx server/start.js devApiServer --enableSessions",
24
+ "memApiServer": "tsx server/start.js memApiServer --enableSessions",
25
+ "localApiServer": "tsx server/start.js localApiServer --enableSessions",
26
+ "localApiServerInit": "tsx server/start.js localApiServer --enableSessions --initScript ./init.js",
27
+ "build": "yarn build:client && yarn build:ssr && yarn build:server",
28
+ "build:client": "cd front; dotenvx run -f ../.env -- vite build --ssrManifest --outDir dist/client",
29
+ "build:ssr": "cd front; dotenvx run -f ../.env -- vite build --ssr src/entry-server.js --outDir dist/server",
30
+ "build:server": "tsc --allowJs && copyfiles node_modules/@live-change/*-service/package.json dist && copyfiles node_modules/@live-change/framework/package.json dist && copyfiles node_modules/@live-change/cli/package.json dist && copyfiles node_modules/@live-change/relations-plugin/package.json dist && copyfiles node_modules/@live-change/server/package.json dist",
31
+ "build:spa": "cd front; dotenvx run -f ../.env -- vite build --outDir dist/spa",
32
+ "generate": "vite build --ssrManifest --outDir dist/static && yarn build:server && tsx prerender",
33
+ "debug": "tsx --inspect-brk server",
34
+ "describe": "tsx server/start.js describe",
35
+ "changes": "tsx server/start.js changes"
22
36
  },
23
37
  "type": "module",
24
38
  "dependencies": {
25
- "@live-change/cli": "^0.9.116",
26
- "@live-change/dao": "^0.9.116",
27
- "@live-change/dao-vue3": "^0.9.116",
28
- "@live-change/dao-websocket": "^0.9.116",
29
- "@live-change/email-service": "^0.9.116",
30
- "@live-change/framework": "^0.9.116",
31
- "@live-change/identicon-service": "^0.9.116",
32
- "@live-change/image-frontend": "^0.9.116",
33
- "@live-change/message-authentication-service": "^0.9.116",
34
- "@live-change/notification-service": "^0.9.116",
35
- "@live-change/password-authentication-service": "^0.9.116",
36
- "@live-change/pattern": "^0.9.116",
37
- "@live-change/secret-code-service": "^0.9.116",
38
- "@live-change/secret-link-service": "^0.9.116",
39
- "@live-change/security-frontend": "^0.9.116",
40
- "@live-change/security-service": "^0.9.116",
41
- "@live-change/session-service": "^0.9.116",
42
- "@live-change/timer-service": "^0.9.116",
43
- "@live-change/upload-service": "^0.9.116",
44
- "@live-change/user-identification-service": "^0.9.116",
45
- "@live-change/user-service": "^0.9.116",
46
- "@live-change/vue3-components": "^0.9.116",
47
- "@live-change/vue3-ssr": "^0.9.116",
39
+ "@live-change/cli": "^0.9.118",
40
+ "@live-change/dao": "^0.9.118",
41
+ "@live-change/dao-vue3": "^0.9.118",
42
+ "@live-change/dao-websocket": "^0.9.118",
43
+ "@live-change/email-service": "^0.9.118",
44
+ "@live-change/framework": "^0.9.118",
45
+ "@live-change/identicon-service": "^0.9.118",
46
+ "@live-change/image-frontend": "^0.9.118",
47
+ "@live-change/message-authentication-service": "^0.9.118",
48
+ "@live-change/notification-service": "^0.9.118",
49
+ "@live-change/password-authentication-service": "^0.9.118",
50
+ "@live-change/pattern": "^0.9.118",
51
+ "@live-change/secret-code-service": "^0.9.118",
52
+ "@live-change/secret-link-service": "^0.9.118",
53
+ "@live-change/security-frontend": "^0.9.118",
54
+ "@live-change/security-service": "^0.9.118",
55
+ "@live-change/session-service": "^0.9.118",
56
+ "@live-change/timer-service": "^0.9.118",
57
+ "@live-change/upload-service": "^0.9.118",
58
+ "@live-change/user-identification-service": "^0.9.118",
59
+ "@live-change/user-service": "^0.9.118",
60
+ "@live-change/vue3-components": "^0.9.118",
61
+ "@live-change/vue3-ssr": "^0.9.118",
48
62
  "@vueuse/core": "^12.3.0",
49
63
  "codeceptjs-assert": "^0.0.5",
50
64
  "codeceptjs-video-helper": "0.1.3",
@@ -65,7 +79,7 @@
65
79
  "wtfnode": "^0.9.1"
66
80
  },
67
81
  "devDependencies": {
68
- "@live-change/codeceptjs-helper": "^0.9.116",
82
+ "@live-change/codeceptjs-helper": "^0.9.118",
69
83
  "codeceptjs": "^3.6.10",
70
84
  "generate-password": "1.7.1",
71
85
  "playwright": "1.49.1",
@@ -76,5 +90,5 @@
76
90
  "author": "Michał Łaszczewski <michal@laszczewski.pl>",
77
91
  "license": "BSD-3-Clause",
78
92
  "description": "",
79
- "gitHead": "88622801d3ba2cfd1742059b7839d7b751ac25f2"
93
+ "gitHead": "bacf9b3b71c1bc883d650f3fa4baba0257099629"
80
94
  }