vue-context-storage 0.1.8 → 0.1.10

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 (42) hide show
  1. package/dist/index.d.ts +411 -10
  2. package/dist/index.js +193 -22
  3. package/package.json +38 -37
  4. package/dist/collection.d.cts +0 -22
  5. package/dist/collection.d.ts +0 -22
  6. package/dist/constants.d.cts +0 -2
  7. package/dist/constants.d.ts +0 -2
  8. package/dist/handlers/query/helpers.d.cts +0 -45
  9. package/dist/handlers/query/helpers.d.ts +0 -45
  10. package/dist/handlers/query/index.d.cts +0 -31
  11. package/dist/handlers/query/index.d.ts +0 -31
  12. package/dist/handlers/query/transform-helpers.d.cts +0 -123
  13. package/dist/handlers/query/transform-helpers.d.ts +0 -123
  14. package/dist/handlers/query/types.d.cts +0 -103
  15. package/dist/handlers/query/types.d.ts +0 -103
  16. package/dist/handlers.d.cts +0 -15
  17. package/dist/handlers.d.ts +0 -15
  18. package/dist/index.cjs +0 -409
  19. package/dist/index.cjs.map +0 -1
  20. package/dist/index.d.cts +0 -10
  21. package/dist/index.js.map +0 -1
  22. package/dist/injectionSymbols.d.cts +0 -7
  23. package/dist/injectionSymbols.d.ts +0 -7
  24. package/dist/symbols.d.cts +0 -4
  25. package/dist/symbols.d.ts +0 -4
  26. package/src/collection.ts +0 -71
  27. package/src/components/ContextStorage.vue +0 -23
  28. package/src/components/ContextStorageActivator.vue +0 -20
  29. package/src/components/ContextStorageCollection.vue +0 -92
  30. package/src/components/ContextStorageProvider.vue +0 -38
  31. package/src/constants.ts +0 -5
  32. package/src/handlers/query/helpers.ts +0 -134
  33. package/src/handlers/query/index.ts +0 -355
  34. package/src/handlers/query/transform-helpers.ts +0 -309
  35. package/src/handlers/query/types.ts +0 -125
  36. package/src/handlers.ts +0 -18
  37. package/src/index.ts +0 -40
  38. package/src/injectionSymbols.ts +0 -15
  39. package/src/main.ts +0 -12
  40. package/src/plugin.ts +0 -16
  41. package/src/shims-vue.d.ts +0 -5
  42. package/src/symbols.ts +0 -4
package/package.json CHANGED
@@ -1,72 +1,73 @@
1
1
  {
2
2
  "name": "vue-context-storage",
3
- "version": "0.1.8",
3
+ "type": "module",
4
+ "version": "0.1.10",
4
5
  "description": "Vue 3 context storage system with URL query synchronization support",
6
+ "author": "",
7
+ "license": "MIT",
8
+ "homepage": "https://github.com/lviobio/vue-context-storage#readme",
5
9
  "repository": {
6
10
  "type": "git",
7
- "url": "https://github.com/lviobio/vue-context-storage.git"
11
+ "url": "git+https://github.com/lviobio/vue-context-storage.git"
12
+ },
13
+ "bugs": {
14
+ "url": "https://github.com/lviobio/vue-context-storage/issues"
8
15
  },
9
- "type": "module",
10
- "main": "./dist/index.cjs",
11
- "types": "./src/main.ts",
12
16
  "exports": {
13
- ".": {
14
- "types": "./src/main.ts",
15
- "import": "./src/main.ts",
16
- "require": {
17
- "types": "./dist/index.d.cts",
18
- "default": "./dist/index.cjs"
19
- }
20
- }
17
+ ".": "./dist/index.js",
18
+ "./package.json": "./package.json"
21
19
  },
20
+ "main": "./dist/index.js",
21
+ "module": "./dist/index.js",
22
+ "types": "./dist/index.d.ts",
22
23
  "files": [
23
- "dist",
24
- "src",
25
- "README.md"
24
+ "dist"
26
25
  ],
26
+ "publishConfig": {
27
+ "access": "public"
28
+ },
27
29
  "scripts": {
28
30
  "build": "tsdown",
29
31
  "dev": "tsdown --watch",
30
32
  "check": "npm run ts:check && npm run lint:check && npm run format:check && npm run dependency-cruiser:check",
31
- "ts:check": "tsc --noEmit",
33
+ "ts:check": "vue-tsc --noEmit",
32
34
  "format": "prettier --write src/",
33
35
  "format:check": "prettier --check src/",
34
36
  "lint": "eslint . --fix",
35
37
  "lint:check": "eslint .",
36
38
  "dependency-cruiser:check": "depcruise --config .dependency-cruiser.cjs src",
39
+ "play": "vite",
40
+ "test": "vitest",
41
+ "release": "bumpp && npm publish",
37
42
  "prepublishOnly": "npm run check && npm run build"
38
43
  },
39
- "keywords": [
40
- "vue",
41
- "vue3",
42
- "context",
43
- "storage",
44
- "state-management",
45
- "query-sync"
46
- ],
47
- "author": "",
48
- "license": "MIT",
49
44
  "peerDependencies": {
50
- "vue": "^3.5.0",
45
+ "vue": "^3.0.0",
51
46
  "vue-router": "^4.0.0"
52
47
  },
53
- "dependencies": {
54
- "lodash-es": "^4.17.21"
55
- },
56
48
  "devDependencies": {
57
- "@eslint/js": "^9.39.2",
58
- "@types/lodash-es": "^4.17.12",
59
- "@types/node": "^20.0.0",
49
+ "@types/lodash": "^4.17.21",
50
+ "@types/node": "^25.0.3",
51
+ "@vitejs/plugin-vue": "^6.0.3",
52
+ "@vitest/browser-playwright": "^4.0.16",
60
53
  "@vue/eslint-config-typescript": "^14.6.0",
54
+ "bumpp": "^10.3.2",
61
55
  "dependency-cruiser": "^17.3.6",
62
56
  "eslint": "^9.39.2",
63
57
  "eslint-config-prettier": "^10.1.8",
64
58
  "eslint-plugin-vue": "^10.6.2",
59
+ "playwright": "^1.57.0",
65
60
  "prettier": "^3.7.4",
66
- "tsdown": "^0.3.0",
67
- "typescript": "^5.9.0",
61
+ "tsdown": "^0.18.4",
62
+ "typescript": "^5.9.3",
68
63
  "typescript-eslint": "^8.51.0",
64
+ "vite": "^7.3.0",
65
+ "vitest": "^4.0.16",
66
+ "vitest-browser-vue": "^2.0.1",
69
67
  "vue": "^3.5.26",
70
- "vue-router": "^4.6.4"
68
+ "vue-tsc": "^3.2.1"
69
+ },
70
+ "dependencies": {
71
+ "lodash": "^4.17.21"
71
72
  }
72
73
  }
@@ -1,22 +0,0 @@
1
- import { ContextStorageHandler, ContextStorageHandlerConstructor } from './handlers';
2
- export type ContextStorageCollectionItem = {
3
- key: string;
4
- handlers: ContextStorageHandler[];
5
- };
6
- interface ItemOptions {
7
- key: string;
8
- }
9
- export declare class ContextStorageCollection {
10
- private handlerConstructors;
11
- active?: ContextStorageCollectionItem;
12
- private collection;
13
- private onActiveChangeCallbacks;
14
- constructor(handlerConstructors: ContextStorageHandlerConstructor[]);
15
- onActiveChange(callback: (item: ContextStorageCollectionItem) => void): void;
16
- first(): ContextStorageCollectionItem | undefined;
17
- findItemByKey(key: string): ContextStorageCollectionItem | undefined;
18
- add(options: ItemOptions): ContextStorageCollectionItem;
19
- remove(removeItem: ContextStorageCollectionItem): void;
20
- setActive(activeItem: ContextStorageCollectionItem): void;
21
- }
22
- export {};
@@ -1,22 +0,0 @@
1
- import { ContextStorageHandler, ContextStorageHandlerConstructor } from './handlers';
2
- export type ContextStorageCollectionItem = {
3
- key: string;
4
- handlers: ContextStorageHandler[];
5
- };
6
- interface ItemOptions {
7
- key: string;
8
- }
9
- export declare class ContextStorageCollection {
10
- private handlerConstructors;
11
- active?: ContextStorageCollectionItem;
12
- private collection;
13
- private onActiveChangeCallbacks;
14
- constructor(handlerConstructors: ContextStorageHandlerConstructor[]);
15
- onActiveChange(callback: (item: ContextStorageCollectionItem) => void): void;
16
- first(): ContextStorageCollectionItem | undefined;
17
- findItemByKey(key: string): ContextStorageCollectionItem | undefined;
18
- add(options: ItemOptions): ContextStorageCollectionItem;
19
- remove(removeItem: ContextStorageCollectionItem): void;
20
- setActive(activeItem: ContextStorageCollectionItem): void;
21
- }
22
- export {};
@@ -1,2 +0,0 @@
1
- import type { ContextStorageHandlerConstructor } from './handlers';
2
- export declare const defaultHandlers: ContextStorageHandlerConstructor[];
@@ -1,2 +0,0 @@
1
- import type { ContextStorageHandlerConstructor } from './handlers';
2
- export declare const defaultHandlers: ContextStorageHandlerConstructor[];
@@ -1,45 +0,0 @@
1
- import { LocationQuery } from 'vue-router';
2
- export interface SerializeOptions {
3
- /**
4
- * Custom prefix for serialized keys.
5
- * @example
6
- * - prefix: 'filters' => 'filters[key]'
7
- * - prefix: 'search' => 'search[key]'
8
- * - prefix: '' => 'key' (no prefix)
9
- */
10
- prefix?: string;
11
- }
12
- /**
13
- * Serializes filter parameters into a URL-friendly format.
14
- *
15
- * @param params - Raw parameters object to serialize
16
- * @param options - Serialization options
17
- * @returns Serialized parameters with prefixed keys
18
- *
19
- * @example
20
- * // With default prefix 'filters'
21
- * serializeFiltersParams({ status: 'active', tags: ['a', 'b'] })
22
- * // => { 'filters[status]': 'active', 'filters[tags]': 'a,b' }
23
- *
24
- * @example
25
- * // With custom prefix
26
- * serializeFiltersParams({ name: 'John', all: true }, { prefix: 'search' })
27
- * // => { 'search[name]': 'John', 'search[all]': '1' }
28
- *
29
- * @example
30
- * // Without prefix
31
- * serializeFiltersParams({ page: 1, all: false }, { prefix: '' })
32
- * // => { 'page': '1', 'all': '0' }
33
- */
34
- export declare function serializeParams(params: Record<string, unknown>, options?: SerializeOptions): LocationQuery;
35
- /**
36
- * Deserializes query parameters from a URL-friendly format back to an object.
37
- *
38
- * @param params - Serialized parameters object
39
- * @returns Deserialized parameters object
40
- *
41
- * @example
42
- * deserializeParams({ 'filters[status]': 'active', search: 'test' })
43
- * // => { filters: {status: 'active'}, search: 'test' }
44
- */
45
- export declare function deserializeParams(params: Record<string, any>): Record<string, any>;
@@ -1,45 +0,0 @@
1
- import { LocationQuery } from 'vue-router';
2
- export interface SerializeOptions {
3
- /**
4
- * Custom prefix for serialized keys.
5
- * @example
6
- * - prefix: 'filters' => 'filters[key]'
7
- * - prefix: 'search' => 'search[key]'
8
- * - prefix: '' => 'key' (no prefix)
9
- */
10
- prefix?: string;
11
- }
12
- /**
13
- * Serializes filter parameters into a URL-friendly format.
14
- *
15
- * @param params - Raw parameters object to serialize
16
- * @param options - Serialization options
17
- * @returns Serialized parameters with prefixed keys
18
- *
19
- * @example
20
- * // With default prefix 'filters'
21
- * serializeFiltersParams({ status: 'active', tags: ['a', 'b'] })
22
- * // => { 'filters[status]': 'active', 'filters[tags]': 'a,b' }
23
- *
24
- * @example
25
- * // With custom prefix
26
- * serializeFiltersParams({ name: 'John', all: true }, { prefix: 'search' })
27
- * // => { 'search[name]': 'John', 'search[all]': '1' }
28
- *
29
- * @example
30
- * // Without prefix
31
- * serializeFiltersParams({ page: 1, all: false }, { prefix: '' })
32
- * // => { 'page': '1', 'all': '0' }
33
- */
34
- export declare function serializeParams(params: Record<string, unknown>, options?: SerializeOptions): LocationQuery;
35
- /**
36
- * Deserializes query parameters from a URL-friendly format back to an object.
37
- *
38
- * @param params - Serialized parameters object
39
- * @returns Deserialized parameters object
40
- *
41
- * @example
42
- * deserializeParams({ 'filters[status]': 'active', search: 'test' })
43
- * // => { filters: {status: 'active'}, search: 'test' }
44
- */
45
- export declare function deserializeParams(params: Record<string, any>): Record<string, any>;
@@ -1,31 +0,0 @@
1
- import { ContextStorageHandlerConstructor } from '../../handlers';
2
- import { contextStorageQueryHandler } from '../../symbols';
3
- import { MaybeRefOrGetter } from 'vue';
4
- import { LocationQuery } from 'vue-router';
5
- import { ContextStorageQueryRegisteredItem, IContextStorageQueryHandler, QueryHandlerBaseOptions, RegisterQueryHandlerBaseOptions, RegisterQueryHandlerOptions } from './types';
6
- export declare function useContextStorageQueryHandler<T extends Record<string, unknown>>(data: MaybeRefOrGetter<T>, options?: RegisterQueryHandlerBaseOptions<T>): void;
7
- export declare class ContextStorageQueryHandler implements IContextStorageQueryHandler {
8
- #private;
9
- private enabled;
10
- private registered;
11
- private currentQuery;
12
- private readonly route;
13
- private router;
14
- private initialState?;
15
- private hasAnyRegistered;
16
- private preventSyncRegisteredToQueryByAfterEachRoute;
17
- private preventAfterEachRouteCallsWhileCallingRouter;
18
- static customQueryHandlerOptions: QueryHandlerBaseOptions;
19
- private readonly options;
20
- static configure(options: QueryHandlerBaseOptions): ContextStorageHandlerConstructor;
21
- constructor();
22
- getInjectionKey(): typeof contextStorageQueryHandler;
23
- setInitialState(state: Record<string, unknown> | undefined): void;
24
- static getInitialStateResolver(): () => LocationQuery;
25
- setEnabled(state: boolean, initial: boolean): void;
26
- syncRegisteredToQuery(): Promise<void>;
27
- afterEachRoute(): void;
28
- syncInitialStateToRegisteredItem<T extends Record<string, unknown>>(item: ContextStorageQueryRegisteredItem<T>): void;
29
- syncInitialStateToRegistered(): void;
30
- register<T extends Record<string, unknown>>(data: MaybeRefOrGetter<T>, options: RegisterQueryHandlerOptions<T>): () => void;
31
- }
@@ -1,31 +0,0 @@
1
- import { ContextStorageHandlerConstructor } from '../../handlers';
2
- import { contextStorageQueryHandler } from '../../symbols';
3
- import { MaybeRefOrGetter } from 'vue';
4
- import { LocationQuery } from 'vue-router';
5
- import { ContextStorageQueryRegisteredItem, IContextStorageQueryHandler, QueryHandlerBaseOptions, RegisterQueryHandlerBaseOptions, RegisterQueryHandlerOptions } from './types';
6
- export declare function useContextStorageQueryHandler<T extends Record<string, unknown>>(data: MaybeRefOrGetter<T>, options?: RegisterQueryHandlerBaseOptions<T>): void;
7
- export declare class ContextStorageQueryHandler implements IContextStorageQueryHandler {
8
- #private;
9
- private enabled;
10
- private registered;
11
- private currentQuery;
12
- private readonly route;
13
- private router;
14
- private initialState?;
15
- private hasAnyRegistered;
16
- private preventSyncRegisteredToQueryByAfterEachRoute;
17
- private preventAfterEachRouteCallsWhileCallingRouter;
18
- static customQueryHandlerOptions: QueryHandlerBaseOptions;
19
- private readonly options;
20
- static configure(options: QueryHandlerBaseOptions): ContextStorageHandlerConstructor;
21
- constructor();
22
- getInjectionKey(): typeof contextStorageQueryHandler;
23
- setInitialState(state: Record<string, unknown> | undefined): void;
24
- static getInitialStateResolver(): () => LocationQuery;
25
- setEnabled(state: boolean, initial: boolean): void;
26
- syncRegisteredToQuery(): Promise<void>;
27
- afterEachRoute(): void;
28
- syncInitialStateToRegisteredItem<T extends Record<string, unknown>>(item: ContextStorageQueryRegisteredItem<T>): void;
29
- syncInitialStateToRegistered(): void;
30
- register<T extends Record<string, unknown>>(data: MaybeRefOrGetter<T>, options: RegisterQueryHandlerOptions<T>): () => void;
31
- }
@@ -1,123 +0,0 @@
1
- import { QueryValue } from './types';
2
- export declare function asNumber(value: QueryValue | number | undefined): number;
3
- export declare function asNumber(value: QueryValue | number | undefined, options: {
4
- nullable: true;
5
- missable: true;
6
- fallbackValue?: number;
7
- }): number | null | undefined;
8
- export declare function asNumber(value: QueryValue | number | undefined, options: {
9
- nullable: true;
10
- missable?: false;
11
- fallbackValue?: number;
12
- }): number | null;
13
- export declare function asNumber(value: QueryValue | number | undefined, options: {
14
- nullable?: false;
15
- missable: true;
16
- fallbackValue?: number;
17
- }): number | undefined;
18
- export declare function asNumber(value: QueryValue | number | undefined, options: {
19
- nullable?: false;
20
- missable?: false;
21
- fallbackValue?: number;
22
- }): number;
23
- export declare function asString(value: QueryValue | undefined): string;
24
- export declare function asString<T extends readonly string[]>(value: QueryValue | undefined, options: {
25
- nullable: true;
26
- missable: true;
27
- fallbackValue?: T[number];
28
- allowedValues: T;
29
- }): T[number] | null | undefined;
30
- export declare function asString<T extends readonly string[]>(value: QueryValue | undefined, options: {
31
- nullable: true;
32
- missable?: false;
33
- fallbackValue?: T[number];
34
- allowedValues: T;
35
- }): T[number] | null;
36
- export declare function asString<T extends readonly string[]>(value: QueryValue | undefined, options: {
37
- nullable?: false;
38
- missable: true;
39
- fallbackValue?: T[number];
40
- allowedValues: T;
41
- }): T[number] | undefined;
42
- export declare function asString<T extends readonly string[]>(value: QueryValue | undefined, options: {
43
- nullable?: false;
44
- missable?: false;
45
- fallbackValue?: T[number];
46
- allowedValues: T;
47
- }): T[number];
48
- export declare function asString(value: QueryValue | undefined, options: {
49
- nullable: true;
50
- missable: true;
51
- fallbackValue?: string;
52
- }): string | null | undefined;
53
- export declare function asString(value: QueryValue | undefined, options: {
54
- nullable: true;
55
- missable?: false;
56
- fallbackValue?: string;
57
- }): string | null;
58
- export declare function asString(value: QueryValue | undefined, options: {
59
- nullable?: false;
60
- missable: true;
61
- fallbackValue?: string;
62
- }): string | undefined;
63
- export declare function asString(value: QueryValue | undefined, options: {
64
- nullable?: false;
65
- missable?: false;
66
- fallbackValue?: string;
67
- }): string;
68
- export declare function asNumberArray(value: QueryValue | undefined): number[];
69
- export declare function asNumberArray(value: QueryValue | undefined, options: {
70
- nullable: true;
71
- }): number[] | null;
72
- export declare function asNumberArray(value: QueryValue | undefined, options: {
73
- nullable?: false;
74
- }): number[];
75
- export declare function asArray<T>(value: QueryValue | undefined): T[];
76
- export declare function asArray<T>(value: QueryValue | undefined, options: {
77
- nullable: true;
78
- missable: true;
79
- transform?: (value: QueryValue) => T;
80
- }): T[] | null | undefined;
81
- export declare function asArray<T>(value: QueryValue | undefined, options: {
82
- nullable: true;
83
- missable?: false;
84
- transform?: (value: QueryValue) => T;
85
- }): T[] | null;
86
- export declare function asArray<T>(value: QueryValue | undefined, options: {
87
- nullable?: false;
88
- missable: true;
89
- transform?: (value: QueryValue) => T;
90
- }): T[] | undefined;
91
- export declare function asArray<T>(value: QueryValue | undefined, options: {
92
- nullable?: false;
93
- missable?: false;
94
- transform?: (value: QueryValue) => T;
95
- }): T[];
96
- export declare function asBoolean(value: QueryValue | undefined): boolean;
97
- export declare function asBoolean(value: QueryValue | undefined, options: {
98
- nullable: true;
99
- missable: true;
100
- fallbackValue?: boolean;
101
- }): boolean | null | undefined;
102
- export declare function asBoolean(value: QueryValue | undefined, options: {
103
- nullable: true;
104
- missable?: false;
105
- fallbackValue?: boolean;
106
- }): boolean | null;
107
- export declare function asBoolean(value: QueryValue | undefined, options: {
108
- nullable?: false;
109
- missable: true;
110
- fallbackValue?: boolean;
111
- }): boolean | undefined;
112
- export declare function asBoolean(value: QueryValue | undefined, options: {
113
- nullable?: false;
114
- missable?: false;
115
- fallbackValue?: boolean;
116
- }): boolean;
117
- export declare const transform: {
118
- asString: typeof asString;
119
- asNumber: typeof asNumber;
120
- asArray: typeof asArray;
121
- asNumberArray: typeof asNumberArray;
122
- asBoolean: typeof asBoolean;
123
- };
@@ -1,123 +0,0 @@
1
- import { QueryValue } from './types';
2
- export declare function asNumber(value: QueryValue | number | undefined): number;
3
- export declare function asNumber(value: QueryValue | number | undefined, options: {
4
- nullable: true;
5
- missable: true;
6
- fallbackValue?: number;
7
- }): number | null | undefined;
8
- export declare function asNumber(value: QueryValue | number | undefined, options: {
9
- nullable: true;
10
- missable?: false;
11
- fallbackValue?: number;
12
- }): number | null;
13
- export declare function asNumber(value: QueryValue | number | undefined, options: {
14
- nullable?: false;
15
- missable: true;
16
- fallbackValue?: number;
17
- }): number | undefined;
18
- export declare function asNumber(value: QueryValue | number | undefined, options: {
19
- nullable?: false;
20
- missable?: false;
21
- fallbackValue?: number;
22
- }): number;
23
- export declare function asString(value: QueryValue | undefined): string;
24
- export declare function asString<T extends readonly string[]>(value: QueryValue | undefined, options: {
25
- nullable: true;
26
- missable: true;
27
- fallbackValue?: T[number];
28
- allowedValues: T;
29
- }): T[number] | null | undefined;
30
- export declare function asString<T extends readonly string[]>(value: QueryValue | undefined, options: {
31
- nullable: true;
32
- missable?: false;
33
- fallbackValue?: T[number];
34
- allowedValues: T;
35
- }): T[number] | null;
36
- export declare function asString<T extends readonly string[]>(value: QueryValue | undefined, options: {
37
- nullable?: false;
38
- missable: true;
39
- fallbackValue?: T[number];
40
- allowedValues: T;
41
- }): T[number] | undefined;
42
- export declare function asString<T extends readonly string[]>(value: QueryValue | undefined, options: {
43
- nullable?: false;
44
- missable?: false;
45
- fallbackValue?: T[number];
46
- allowedValues: T;
47
- }): T[number];
48
- export declare function asString(value: QueryValue | undefined, options: {
49
- nullable: true;
50
- missable: true;
51
- fallbackValue?: string;
52
- }): string | null | undefined;
53
- export declare function asString(value: QueryValue | undefined, options: {
54
- nullable: true;
55
- missable?: false;
56
- fallbackValue?: string;
57
- }): string | null;
58
- export declare function asString(value: QueryValue | undefined, options: {
59
- nullable?: false;
60
- missable: true;
61
- fallbackValue?: string;
62
- }): string | undefined;
63
- export declare function asString(value: QueryValue | undefined, options: {
64
- nullable?: false;
65
- missable?: false;
66
- fallbackValue?: string;
67
- }): string;
68
- export declare function asNumberArray(value: QueryValue | undefined): number[];
69
- export declare function asNumberArray(value: QueryValue | undefined, options: {
70
- nullable: true;
71
- }): number[] | null;
72
- export declare function asNumberArray(value: QueryValue | undefined, options: {
73
- nullable?: false;
74
- }): number[];
75
- export declare function asArray<T>(value: QueryValue | undefined): T[];
76
- export declare function asArray<T>(value: QueryValue | undefined, options: {
77
- nullable: true;
78
- missable: true;
79
- transform?: (value: QueryValue) => T;
80
- }): T[] | null | undefined;
81
- export declare function asArray<T>(value: QueryValue | undefined, options: {
82
- nullable: true;
83
- missable?: false;
84
- transform?: (value: QueryValue) => T;
85
- }): T[] | null;
86
- export declare function asArray<T>(value: QueryValue | undefined, options: {
87
- nullable?: false;
88
- missable: true;
89
- transform?: (value: QueryValue) => T;
90
- }): T[] | undefined;
91
- export declare function asArray<T>(value: QueryValue | undefined, options: {
92
- nullable?: false;
93
- missable?: false;
94
- transform?: (value: QueryValue) => T;
95
- }): T[];
96
- export declare function asBoolean(value: QueryValue | undefined): boolean;
97
- export declare function asBoolean(value: QueryValue | undefined, options: {
98
- nullable: true;
99
- missable: true;
100
- fallbackValue?: boolean;
101
- }): boolean | null | undefined;
102
- export declare function asBoolean(value: QueryValue | undefined, options: {
103
- nullable: true;
104
- missable?: false;
105
- fallbackValue?: boolean;
106
- }): boolean | null;
107
- export declare function asBoolean(value: QueryValue | undefined, options: {
108
- nullable?: false;
109
- missable: true;
110
- fallbackValue?: boolean;
111
- }): boolean | undefined;
112
- export declare function asBoolean(value: QueryValue | undefined, options: {
113
- nullable?: false;
114
- missable?: false;
115
- fallbackValue?: boolean;
116
- }): boolean;
117
- export declare const transform: {
118
- asString: typeof asString;
119
- asNumber: typeof asNumber;
120
- asArray: typeof asArray;
121
- asNumberArray: typeof asNumberArray;
122
- asBoolean: typeof asBoolean;
123
- };
@@ -1,103 +0,0 @@
1
- import { LocationQueryValue } from 'vue-router';
2
- import { MaybeRefOrGetter, UnwrapNestedRefs, WatchHandle } from 'vue';
3
- import { ContextStorageHandler, RegisterBaseOptions } from '../../handlers';
4
- export type QueryValue = LocationQueryValue | LocationQueryValue[];
5
- export type DeepTransformValuesToLocationQueryValue<T> = {
6
- [K in keyof T]?: T[K] extends object ? T[K] extends Array<any> ? QueryValue : DeepTransformValuesToLocationQueryValue<T[K]> : QueryValue;
7
- };
8
- interface QueryHandlerSharedOptions {
9
- /**
10
- * Default: false
11
- *
12
- * If enabled - empty state will be preserved in query.
13
- *
14
- * Useful, when you have default values, and want to preserve empty state in query.
15
- * @example
16
- * ```
17
- * Options: {preserveEmptyState: true, prefix: 'filters'}
18
- *
19
- * When filters are empty we will get this in query string:
20
- *
21
- * /list?filters
22
- *
23
- * After page reload state will be not restored to default
24
- * ```
25
- *
26
- * @example
27
- * ```
28
- * Options: {preserveEmptyState: false, prefix: 'filters'}
29
- *
30
- * When filters are empty we will get this in query string:
31
- *
32
- * /list
33
- *
34
- * After page reload state will be restored to default
35
- * ```
36
- *
37
- * @example
38
- * ```
39
- * Options: {preserveEmptyState: true}
40
- *
41
- * When filters are empty we will get this in query string:
42
- *
43
- * /list?_
44
- *
45
- * After page reload state will be not restored to default.
46
- * Underscore (_) is default value for emptyPlaceholder option
47
- * ```
48
- */
49
- preserveEmptyState?: boolean;
50
- /**
51
- * Default: true
52
- *
53
- * If transform option is not passed, ref will be merged with query only by keys that exists in ref.
54
- */
55
- mergeOnlyExistingKeysWithoutTransform?: boolean;
56
- }
57
- export interface QueryHandlerBaseOptions extends QueryHandlerSharedOptions {
58
- /**
59
- * Default: replace
60
- *
61
- * Vue-router navigate mode.
62
- * Use push if you want to add new query to history.
63
- * Use replace if you want to replace current query without adding to history.
64
- */
65
- mode?: 'replace' | 'push';
66
- /**
67
- * Default: _
68
- *
69
- * Placeholder for empty state, used when preserveEmptyState is true and all ref values are empty.
70
- */
71
- emptyPlaceholder?: string;
72
- /**
73
- * Default: false
74
- *
75
- * If enabled - unused keys will be preserved in query.
76
- * Unused keys are keys, that are not exists in ref.
77
- */
78
- preserveUnusedKeys?: boolean;
79
- }
80
- export interface RegisterQueryHandlerBaseOptions<T> extends QueryHandlerSharedOptions {
81
- /**
82
- * Prefix in query string.
83
- *
84
- * @example
85
- * ```
86
- * filters, table-1[filters], table-2[filters]
87
- * ```
88
- */
89
- prefix?: string;
90
- transform?: (deserialized: DeepTransformValuesToLocationQueryValue<UnwrapNestedRefs<T>>, initialData: T) => UnwrapNestedRefs<T>;
91
- }
92
- export interface RegisterQueryHandlerOptions<T> extends RegisterBaseOptions, RegisterQueryHandlerBaseOptions<T> {
93
- }
94
- export interface IContextStorageQueryHandler extends ContextStorageHandler {
95
- register: <T extends Record<string, unknown>>(data: MaybeRefOrGetter<T>, options: RegisterQueryHandlerOptions<T>) => () => void;
96
- }
97
- export interface ContextStorageQueryRegisteredItem<T extends Record<string, unknown>> {
98
- data: MaybeRefOrGetter<T>;
99
- initialData: T;
100
- options: RegisterQueryHandlerOptions<T>;
101
- watchHandle: WatchHandle;
102
- }
103
- export {};