@fy-/fws-vue 0.3.73 → 0.3.75

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.
@@ -1,5 +1,5 @@
1
1
  import { RestMethod, RestParams, getMode, rest, stringHash } from "@fy-/fws-js";
2
- import { useRestStore } from "../stores/rest";
2
+ import { useServerRouter } from "../stores/serverRouter";
3
3
  import { isServerRendered } from "./ssr";
4
4
  import { useEventBus } from "./event-bus";
5
5
 
@@ -31,7 +31,7 @@ export function useRest(): <ResultType extends APIResult>(
31
31
  method: RestMethod,
32
32
  params?: RestParams,
33
33
  ) => Promise<ResultType> {
34
- const restStore = useRestStore();
34
+ const serverRouter = useServerRouter();
35
35
  const eventBus = useEventBus();
36
36
 
37
37
  return async <ResultType extends APIResult>(
@@ -39,15 +39,22 @@ export function useRest(): <ResultType extends APIResult>(
39
39
  method: RestMethod,
40
40
  params?: RestParams,
41
41
  ): Promise<ResultType> => {
42
- const urlParse = new URL(url);
43
- const pathOnly = urlParse.pathname + urlParse.search;
42
+ let urlForHash: string = url;
43
+ try {
44
+ const urlParse = new URL(url);
45
+ urlForHash = urlParse.pathname + urlParse.search;
46
+ } catch (error) {
47
+ urlForHash = url;
48
+ }
44
49
 
45
- const requestHash = stringHash(pathOnly + method + JSON.stringify(params));
50
+ const requestHash = stringHash(
51
+ urlForHash + method + JSON.stringify(params),
52
+ );
46
53
  if (isServerRendered()) {
47
- const hasResult = restStore.getResult(requestHash);
54
+ const hasResult = serverRouter.getResult(requestHash);
48
55
  if (hasResult !== undefined) {
49
56
  const result = hasResult as ResultType;
50
- restStore.removeResult(requestHash);
57
+ serverRouter.removeResult(requestHash);
51
58
  if (result.result === "error") {
52
59
  eventBus.emit("main-loading", false);
53
60
  eventBus.emit("rest-error", result);
@@ -60,7 +67,7 @@ export function useRest(): <ResultType extends APIResult>(
60
67
  try {
61
68
  const restResult: ResultType = await rest(url, method, params);
62
69
  if (getMode() === "ssr") {
63
- restStore.addResult(
70
+ serverRouter.addResult(
64
71
  requestHash,
65
72
  JSON.parse(JSON.stringify(restResult)),
66
73
  );
@@ -74,7 +81,7 @@ export function useRest(): <ResultType extends APIResult>(
74
81
  } catch (error) {
75
82
  const restError: ResultType = error as ResultType;
76
83
  if (getMode() === "ssr") {
77
- restStore.addResult(requestHash, restError);
84
+ serverRouter.addResult(requestHash, restError);
78
85
  }
79
86
  eventBus.emit("main-loading", false);
80
87
  eventBus.emit("rest-error", restError);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fy-/fws-vue",
3
- "version": "0.3.73",
3
+ "version": "0.3.75",
4
4
  "author": "Florian 'Fy' Gasquez <m@fy.to>",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -5,6 +5,7 @@ export interface ServerRouterState {
5
5
  _router: any | null;
6
6
  status: number;
7
7
  redirect?: string;
8
+ results: Record<number, any | undefined>;
8
9
  }
9
10
 
10
11
  export const useServerRouter = defineStore({
@@ -14,6 +15,7 @@ export const useServerRouter = defineStore({
14
15
  _router: null,
15
16
  status: 200,
16
17
  redirect: undefined,
18
+ results: {},
17
19
  }) as ServerRouterState,
18
20
  getters: {
19
21
  currentRoute: (state) => state._router!.currentRoute,
@@ -45,5 +47,17 @@ export const useServerRouter = defineStore({
45
47
  forward() {
46
48
  this._router?.go(1);
47
49
  },
50
+ addResult(id: number, result: any) {
51
+ this.results[id] = result;
52
+ },
53
+ hasResult(id: number) {
54
+ return this.results[id] !== undefined;
55
+ },
56
+ getResult(id: number) {
57
+ return this.results[id];
58
+ },
59
+ removeResult(id: number) {
60
+ delete this.results[id];
61
+ },
48
62
  },
49
63
  });
package/stores/rest.ts DELETED
@@ -1,27 +0,0 @@
1
- import { defineStore } from "pinia";
2
- import { APIResult } from "../composables/rest";
3
-
4
- type SharedState = {
5
- results: Record<number, any | undefined>;
6
- };
7
-
8
- export const useRestStore = defineStore({
9
- id: "restStore",
10
- state: (): SharedState => ({
11
- results: {},
12
- }),
13
- actions: {
14
- addResult(id: number, result: any) {
15
- this.results[id] = result;
16
- },
17
- hasResult(id: number) {
18
- return this.results[id] !== undefined;
19
- },
20
- getResult(id: number) {
21
- return this.results[id];
22
- },
23
- removeResult(id: number) {
24
- delete this.results[id];
25
- },
26
- },
27
- });