ag-grid-url-sync 0.2.4 → 0.3.0
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/README.md +302 -22
- package/dist/core/ag-grid-url-sync.d.ts +16 -1
- package/dist/core/ag-grid-url-sync.js +33 -3
- package/dist/core/ag-grid-url-sync.js.map +1 -1
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.js +2 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/serialization/formats.d.ts +29 -0
- package/dist/core/serialization/formats.js +87 -0
- package/dist/core/serialization/formats.js.map +1 -0
- package/dist/core/serialization/grouped.d.ts +36 -0
- package/dist/core/serialization/grouped.js +152 -0
- package/dist/core/serialization/grouped.js.map +1 -0
- package/dist/core/serialization/index.d.ts +7 -0
- package/dist/core/serialization/index.js +7 -0
- package/dist/core/serialization/index.js.map +1 -0
- package/dist/core/types.d.ts +71 -1
- package/dist/core/types.js +10 -0
- package/dist/core/types.js.map +1 -1
- package/dist/core/url-generator.js +57 -5
- package/dist/core/url-generator.js.map +1 -1
- package/dist/core/url-parser.js +12 -0
- package/dist/core/url-parser.js.map +1 -1
- package/dist/core/validation.d.ts +12 -1
- package/dist/core/validation.js +41 -2
- package/dist/core/validation.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/react/types.d.ts +12 -1
- package/dist/react/use-ag-grid-url-sync.js +34 -3
- package/dist/react/use-ag-grid-url-sync.js.map +1 -1
- package/package.json +18 -2
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { InvalidSerializationError } from '../types.js';
|
|
2
|
+
import { QueryStringSerializer, JsonSerializer, Base64Serializer } from './formats.js';
|
|
3
|
+
/**
|
|
4
|
+
* Registry of available format serializers
|
|
5
|
+
*/
|
|
6
|
+
const FORMAT_SERIALIZERS = {
|
|
7
|
+
querystring: new QueryStringSerializer(),
|
|
8
|
+
json: new JsonSerializer(),
|
|
9
|
+
base64: new Base64Serializer()
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Serialize filter state using grouped serialization
|
|
13
|
+
* @param filterState - The filter state to serialize
|
|
14
|
+
* @param config - Internal configuration
|
|
15
|
+
* @returns Grouped serialization result with parameter name and value
|
|
16
|
+
*/
|
|
17
|
+
export function serializeGrouped(filterState, config) {
|
|
18
|
+
try {
|
|
19
|
+
const serializer = FORMAT_SERIALIZERS[config.format];
|
|
20
|
+
if (!serializer) {
|
|
21
|
+
throw new Error(`Unknown serialization format: ${config.format}`);
|
|
22
|
+
}
|
|
23
|
+
const value = serializer.serialize(filterState);
|
|
24
|
+
return {
|
|
25
|
+
paramName: config.groupedParam,
|
|
26
|
+
value
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
const serializationError = new InvalidSerializationError(config.format, error);
|
|
31
|
+
config.onParseError(serializationError);
|
|
32
|
+
// Return empty state on error
|
|
33
|
+
return {
|
|
34
|
+
paramName: config.groupedParam,
|
|
35
|
+
value: ''
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Deserialize grouped filter state from URL parameter value
|
|
41
|
+
* @param value - The serialized value from URL parameter
|
|
42
|
+
* @param format - The serialization format to use
|
|
43
|
+
* @param config - Internal configuration for error handling
|
|
44
|
+
* @returns Deserialized filter state
|
|
45
|
+
*/
|
|
46
|
+
export function deserializeGrouped(value, format, config) {
|
|
47
|
+
try {
|
|
48
|
+
const serializer = FORMAT_SERIALIZERS[format];
|
|
49
|
+
if (!serializer) {
|
|
50
|
+
throw new Error(`Unknown serialization format: ${format}`);
|
|
51
|
+
}
|
|
52
|
+
return serializer.deserialize(value);
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
const serializationError = new InvalidSerializationError(format, error);
|
|
56
|
+
config.onParseError(serializationError);
|
|
57
|
+
// Return empty state on error
|
|
58
|
+
return {};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Detect if a URL contains grouped serialization parameters
|
|
63
|
+
* @param url - URL to analyze
|
|
64
|
+
* @param possibleParams - Array of possible grouped parameter names to check
|
|
65
|
+
* @returns Detection result with format and value if found
|
|
66
|
+
*/
|
|
67
|
+
export function detectGroupedSerialization(url, possibleParams) {
|
|
68
|
+
try {
|
|
69
|
+
const urlObj = new URL(url);
|
|
70
|
+
// Check each possible parameter name
|
|
71
|
+
for (const paramName of possibleParams) {
|
|
72
|
+
const value = urlObj.searchParams.get(paramName);
|
|
73
|
+
if (value) {
|
|
74
|
+
// Try to detect format by attempting to parse
|
|
75
|
+
const format = detectFormat(value);
|
|
76
|
+
if (format) {
|
|
77
|
+
return {
|
|
78
|
+
isGrouped: true,
|
|
79
|
+
paramName,
|
|
80
|
+
format,
|
|
81
|
+
value
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return { isGrouped: false };
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
console.error(`Error detecting grouped serialization: ${error}`);
|
|
90
|
+
return { isGrouped: false };
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Detect the serialization format of a value
|
|
95
|
+
* @param value - The serialized value
|
|
96
|
+
* @returns The detected format
|
|
97
|
+
*/
|
|
98
|
+
function detectFormat(value) {
|
|
99
|
+
// Try base64 first (most specific)
|
|
100
|
+
if (isBase64Format(value)) {
|
|
101
|
+
return 'base64';
|
|
102
|
+
}
|
|
103
|
+
// Try JSON format
|
|
104
|
+
if (isJsonFormat(value)) {
|
|
105
|
+
return 'json';
|
|
106
|
+
}
|
|
107
|
+
return 'querystring';
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Check if value appears to be base64 encoded
|
|
111
|
+
*/
|
|
112
|
+
function isBase64Format(value) {
|
|
113
|
+
try {
|
|
114
|
+
// Base64 pattern check
|
|
115
|
+
const base64Pattern = /^[A-Za-z0-9+/]*={0,2}$/;
|
|
116
|
+
if (!base64Pattern.test(value)) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
// Try to decode and parse as JSON
|
|
120
|
+
const decoded = atob(value);
|
|
121
|
+
JSON.parse(decoded);
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Check if value appears to be JSON
|
|
130
|
+
*/
|
|
131
|
+
function isJsonFormat(value) {
|
|
132
|
+
try {
|
|
133
|
+
const parsed = JSON.parse(value);
|
|
134
|
+
return typeof parsed === 'object' && parsed !== null;
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Get all available serialization formats
|
|
142
|
+
*/
|
|
143
|
+
export function getAvailableFormats() {
|
|
144
|
+
return Object.keys(FORMAT_SERIALIZERS);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Get a specific format serializer
|
|
148
|
+
*/
|
|
149
|
+
export function getFormatSerializer(format) {
|
|
150
|
+
return FORMAT_SERIALIZERS[format] || null;
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=grouped.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grouped.js","sourceRoot":"","sources":["../../../src/core/serialization/grouped.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serialization module for ag-grid-url-sync
|
|
3
|
+
* Provides grouped serialization functionality with multiple format support
|
|
4
|
+
*/
|
|
5
|
+
export { serializeGrouped, deserializeGrouped, detectGroupedSerialization, getAvailableFormats, getFormatSerializer } from './grouped.js';
|
|
6
|
+
export { QueryStringSerializer, JsonSerializer, Base64Serializer } from './formats.js';
|
|
7
|
+
export type { FormatSerializer, GroupedSerializationResult, SerializationFormat, SerializationMode } from '../types.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serialization module for ag-grid-url-sync
|
|
3
|
+
* Provides grouped serialization functionality with multiple format support
|
|
4
|
+
*/
|
|
5
|
+
export { serializeGrouped, deserializeGrouped, detectGroupedSerialization, getAvailableFormats, getFormatSerializer } from './grouped.js';
|
|
6
|
+
export { QueryStringSerializer, JsonSerializer, Base64Serializer } from './formats.js';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/serialization/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EACjB,MAAM,cAAc,CAAA"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -1,19 +1,35 @@
|
|
|
1
1
|
import type { GridApi as AGGridApi, TextFilterModel, NumberFilterModel, DateFilterModel } from 'ag-grid-community';
|
|
2
|
+
/**
|
|
3
|
+
* Serialization modes for URL parameters
|
|
4
|
+
*/
|
|
5
|
+
export type SerializationMode = 'individual' | 'grouped';
|
|
6
|
+
/**
|
|
7
|
+
* Serialization formats for grouped mode
|
|
8
|
+
*/
|
|
9
|
+
export type SerializationFormat = 'querystring' | 'json' | 'base64';
|
|
2
10
|
/**
|
|
3
11
|
* Configuration options for AG Grid URL Sync
|
|
4
12
|
*
|
|
5
13
|
* @example
|
|
6
14
|
* ```typescript
|
|
15
|
+
* // Individual mode (default - backward compatible)
|
|
7
16
|
* const config: AGGridUrlSyncConfig = {
|
|
8
17
|
* paramPrefix: 'filter_',
|
|
9
18
|
* maxValueLength: 500,
|
|
10
19
|
* onParseError: (error) => console.warn('Filter parse error:', error)
|
|
11
20
|
* }
|
|
21
|
+
*
|
|
22
|
+
* // Grouped mode with base64 format
|
|
23
|
+
* const groupedConfig: AGGridUrlSyncConfig = {
|
|
24
|
+
* serialization: 'grouped',
|
|
25
|
+
* format: 'base64',
|
|
26
|
+
* groupedParam: 'filters'
|
|
27
|
+
* }
|
|
12
28
|
* ```
|
|
13
29
|
*/
|
|
14
30
|
export interface AGGridUrlSyncConfig {
|
|
15
31
|
/**
|
|
16
|
-
* Prefix for URL parameters
|
|
32
|
+
* Prefix for URL parameters (only used in individual mode)
|
|
17
33
|
* @default 'f_'
|
|
18
34
|
* @example 'filter_' results in URLs like '?filter_name_contains=john'
|
|
19
35
|
*/
|
|
@@ -28,6 +44,21 @@ export interface AGGridUrlSyncConfig {
|
|
|
28
44
|
* Allows graceful error handling without breaking the application.
|
|
29
45
|
*/
|
|
30
46
|
onParseError?: (error: Error) => void;
|
|
47
|
+
/**
|
|
48
|
+
* Serialization mode for URL parameters
|
|
49
|
+
* @default 'individual'
|
|
50
|
+
*/
|
|
51
|
+
serialization?: SerializationMode;
|
|
52
|
+
/**
|
|
53
|
+
* Parameter name for grouped serialization
|
|
54
|
+
* @default 'grid_filters'
|
|
55
|
+
*/
|
|
56
|
+
groupedParam?: string;
|
|
57
|
+
/**
|
|
58
|
+
* Serialization format for grouped mode
|
|
59
|
+
* @default 'querystring'
|
|
60
|
+
*/
|
|
61
|
+
format?: SerializationFormat;
|
|
31
62
|
}
|
|
32
63
|
/**
|
|
33
64
|
* Internal configuration with all required fields and runtime dependencies
|
|
@@ -195,6 +226,12 @@ export declare class InvalidURLError extends URLSyncError {
|
|
|
195
226
|
export declare class InvalidDateError extends InvalidFilterError {
|
|
196
227
|
constructor(message: string, cause?: Error);
|
|
197
228
|
}
|
|
229
|
+
/**
|
|
230
|
+
* Error thrown when serialization/deserialization fails
|
|
231
|
+
*/
|
|
232
|
+
export declare class InvalidSerializationError extends Error {
|
|
233
|
+
constructor(format: string, cause: Error);
|
|
234
|
+
}
|
|
198
235
|
/**
|
|
199
236
|
* Parsed filter parameter information for internal processing
|
|
200
237
|
*/
|
|
@@ -226,6 +263,39 @@ export interface RawAGGridFilter {
|
|
|
226
263
|
dateFrom?: string;
|
|
227
264
|
dateTo?: string;
|
|
228
265
|
}
|
|
266
|
+
/**
|
|
267
|
+
* Grouped serialization result
|
|
268
|
+
*/
|
|
269
|
+
export interface GroupedSerializationResult {
|
|
270
|
+
/** The parameter name for the grouped filters */
|
|
271
|
+
paramName: string;
|
|
272
|
+
/** The serialized filter value */
|
|
273
|
+
value: string;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Format-specific serializer interface
|
|
277
|
+
*/
|
|
278
|
+
export interface FormatSerializer {
|
|
279
|
+
/** Serialize filter state to string */
|
|
280
|
+
serialize(filterState: FilterState): string;
|
|
281
|
+
/** Deserialize string to filter state */
|
|
282
|
+
deserialize(value: string): FilterState;
|
|
283
|
+
/** Format identifier */
|
|
284
|
+
format: SerializationFormat;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Detection result for grouped parameters
|
|
288
|
+
*/
|
|
289
|
+
export interface GroupedDetectionResult {
|
|
290
|
+
/** Whether grouped serialization was detected */
|
|
291
|
+
isGrouped: boolean;
|
|
292
|
+
/** The parameter name if grouped */
|
|
293
|
+
paramName?: string;
|
|
294
|
+
/** The detected format if grouped */
|
|
295
|
+
format?: SerializationFormat;
|
|
296
|
+
/** The raw value if grouped */
|
|
297
|
+
value?: string;
|
|
298
|
+
}
|
|
229
299
|
/**
|
|
230
300
|
* Maps URL operation names to internal operation types
|
|
231
301
|
*/
|
package/dist/core/types.js
CHANGED
|
@@ -152,6 +152,16 @@ export class InvalidDateError extends InvalidFilterError {
|
|
|
152
152
|
this.name = 'InvalidDateError';
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* Error thrown when serialization/deserialization fails
|
|
157
|
+
*/
|
|
158
|
+
export class InvalidSerializationError extends Error {
|
|
159
|
+
constructor(format, cause) {
|
|
160
|
+
super(`Invalid ${format} serialization: ${cause.message}`);
|
|
161
|
+
this.name = 'InvalidSerializationError';
|
|
162
|
+
this.cause = cause;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
155
165
|
// ============================================================================
|
|
156
166
|
// OPERATION MAPPINGS
|
|
157
167
|
// ============================================================================
|
package/dist/core/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { validateFilterValue } from './validation.js';
|
|
2
2
|
import { INTERNAL_TO_URL_OPERATION_MAP } from './types.js';
|
|
3
|
+
import { serializeGrouped } from './serialization/grouped.js';
|
|
3
4
|
const FILTER_TYPES = {
|
|
4
5
|
TEXT: 'text',
|
|
5
6
|
NUMBER: 'number',
|
|
@@ -98,17 +99,35 @@ export function serializeFilters(filterState, config) {
|
|
|
98
99
|
}
|
|
99
100
|
return params;
|
|
100
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Helper to extract and preserve non-filter parameters from a URL
|
|
104
|
+
*/
|
|
105
|
+
function getPreservedParams(url, config, excludeParam) {
|
|
106
|
+
const params = new URLSearchParams();
|
|
107
|
+
for (const [key, value] of url.searchParams.entries()) {
|
|
108
|
+
if ((excludeParam && key === excludeParam) ||
|
|
109
|
+
(config.paramPrefix && key.startsWith(config.paramPrefix))) {
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
params.set(key, value);
|
|
113
|
+
}
|
|
114
|
+
return params;
|
|
115
|
+
}
|
|
101
116
|
/**
|
|
102
117
|
* Generates a URL with the current filter state
|
|
103
118
|
*/
|
|
104
119
|
export function generateUrl(baseUrl, filterState, config) {
|
|
105
120
|
const url = new URL(baseUrl);
|
|
121
|
+
// Handle grouped serialization
|
|
122
|
+
if (config.serialization === 'grouped') {
|
|
123
|
+
return generateGroupedUrl(baseUrl, filterState, config);
|
|
124
|
+
}
|
|
125
|
+
// Handle individual serialization (existing logic)
|
|
106
126
|
const filterParams = serializeFilters(filterState, config);
|
|
107
|
-
//
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}
|
|
127
|
+
// Use shared helper to preserve non-filter parameters
|
|
128
|
+
const preservedParams = getPreservedParams(url, config);
|
|
129
|
+
for (const [key, value] of preservedParams.entries()) {
|
|
130
|
+
filterParams.append(key, value);
|
|
112
131
|
}
|
|
113
132
|
const queryString = filterParams.toString();
|
|
114
133
|
// If no filters, return the base URL without query string or trailing slash
|
|
@@ -123,4 +142,37 @@ export function generateUrl(baseUrl, filterState, config) {
|
|
|
123
142
|
url.search = queryString;
|
|
124
143
|
return url.toString();
|
|
125
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* Generates a URL with grouped serialization
|
|
147
|
+
*/
|
|
148
|
+
function generateGroupedUrl(baseUrl, filterState, config) {
|
|
149
|
+
const url = new URL(baseUrl);
|
|
150
|
+
// Serialize filters using grouped format
|
|
151
|
+
const groupedResult = serializeGrouped(filterState, config);
|
|
152
|
+
// Use shared helper to preserve non-filter parameters (excluding grouped param)
|
|
153
|
+
const preservedParams = getPreservedParams(url, config, config.groupedParam);
|
|
154
|
+
url.search = '';
|
|
155
|
+
for (const [key, value] of preservedParams.entries()) {
|
|
156
|
+
url.searchParams.set(key, value);
|
|
157
|
+
}
|
|
158
|
+
// Add the grouped parameter if there are filters
|
|
159
|
+
if (groupedResult.value) {
|
|
160
|
+
url.searchParams.set(groupedResult.paramName, groupedResult.value);
|
|
161
|
+
}
|
|
162
|
+
// If no filters, ensure the grouped param is removed
|
|
163
|
+
if (!groupedResult.value && url.searchParams.has(config.groupedParam)) {
|
|
164
|
+
url.searchParams.delete(config.groupedParam);
|
|
165
|
+
}
|
|
166
|
+
// Clean up empty query string
|
|
167
|
+
const queryString = url.searchParams.toString();
|
|
168
|
+
if (!queryString) {
|
|
169
|
+
let result = url.toString().replace(/\?$/, '');
|
|
170
|
+
// Remove trailing slash for root paths when no query parameters
|
|
171
|
+
if (result.endsWith('/') && result === url.origin + '/') {
|
|
172
|
+
result = result.slice(0, -1);
|
|
173
|
+
}
|
|
174
|
+
return result;
|
|
175
|
+
}
|
|
176
|
+
return url.toString();
|
|
177
|
+
}
|
|
126
178
|
//# sourceMappingURL=url-generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-generator.js","sourceRoot":"","sources":["../../src/core/url-generator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"url-generator.js","sourceRoot":"","sources":["../../src/core/url-generator.ts"],"names":[],"mappings":"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"}
|
package/dist/core/url-parser.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { InvalidFilterError, InvalidURLError, OPERATION_MAP } from './types.js';
|
|
2
2
|
import { validateFilterValue, validateAndParseNumber, validateNumberRange, validateNumberFilter, validateAndParseDate, validateAndParseDateRange, validateDateFilter, DEFAULT_CONFIG } from './validation.js';
|
|
3
|
+
import { detectGroupedSerialization, deserializeGrouped } from './serialization/grouped.js';
|
|
3
4
|
/**
|
|
4
5
|
* Detects if an operation is number-specific
|
|
5
6
|
*/
|
|
@@ -249,6 +250,17 @@ export function parseUrlFilters(url, config) {
|
|
|
249
250
|
else {
|
|
250
251
|
urlToProcess = url;
|
|
251
252
|
}
|
|
253
|
+
// First, try to detect grouped serialization
|
|
254
|
+
const DEFAULT_GROUPED_PARAMS = ['grid_filters', 'filters'];
|
|
255
|
+
const groupedDetection = detectGroupedSerialization(urlToProcess, [config.groupedParam, ...DEFAULT_GROUPED_PARAMS] // Common parameter names to check
|
|
256
|
+
);
|
|
257
|
+
if (groupedDetection.isGrouped &&
|
|
258
|
+
groupedDetection.value &&
|
|
259
|
+
groupedDetection.format) {
|
|
260
|
+
// Handle grouped serialization
|
|
261
|
+
return deserializeGrouped(groupedDetection.value, groupedDetection.format, config);
|
|
262
|
+
}
|
|
263
|
+
// Handle individual serialization (existing logic)
|
|
252
264
|
const urlObj = new URL(urlToProcess);
|
|
253
265
|
const filterState = {};
|
|
254
266
|
for (const [param, value] of urlObj.searchParams.entries()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-parser.js","sourceRoot":"","sources":["../../src/core/url-parser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC/E,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,yBAAyB,EACzB,kBAAkB,EAClB,cAAc,EACf,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"url-parser.js","sourceRoot":"","sources":["../../src/core/url-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import type { InternalConfig, FilterOperation, DateFilterOperation } from './types.js';
|
|
1
|
+
import type { InternalConfig, FilterOperation, DateFilterOperation, ColumnFilter } from './types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Default configuration values
|
|
4
4
|
*/
|
|
5
5
|
export declare const DEFAULT_CONFIG: {
|
|
6
6
|
readonly paramPrefix: "f_";
|
|
7
7
|
readonly maxValueLength: 200;
|
|
8
|
+
readonly serialization: "individual";
|
|
9
|
+
readonly groupedParam: "grid_filters";
|
|
10
|
+
readonly format: "querystring";
|
|
11
|
+
readonly onParseError: () => void;
|
|
8
12
|
};
|
|
9
13
|
/**
|
|
10
14
|
* Validation result interface
|
|
@@ -78,3 +82,10 @@ export declare function validateDateRange(startDate: string, endDate: string): V
|
|
|
78
82
|
* @returns Tuple of [startDate, endDate] or throws InvalidDateError
|
|
79
83
|
*/
|
|
80
84
|
export declare function validateAndParseDateRange(rangeValue: string): [string, string];
|
|
85
|
+
/**
|
|
86
|
+
* Validates if an object is a valid column filter
|
|
87
|
+
*
|
|
88
|
+
* @param obj - The object to validate
|
|
89
|
+
* @returns Type guard that narrows the type to ColumnFilter
|
|
90
|
+
*/
|
|
91
|
+
export declare function isValidColumnFilter(obj: unknown): obj is ColumnFilter;
|
package/dist/core/validation.js
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import { InvalidFilterError, InvalidDateError } from './types.js';
|
|
1
|
+
import { InvalidFilterError, InvalidDateError, TEXT_FILTER_OPERATIONS, NUMBER_FILTER_OPERATIONS, DATE_FILTER_OPERATIONS } from './types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Default configuration values
|
|
4
4
|
*/
|
|
5
5
|
export const DEFAULT_CONFIG = {
|
|
6
6
|
paramPrefix: 'f_',
|
|
7
|
-
maxValueLength: 200
|
|
7
|
+
maxValueLength: 200,
|
|
8
|
+
serialization: 'individual',
|
|
9
|
+
groupedParam: 'grid_filters',
|
|
10
|
+
format: 'querystring',
|
|
11
|
+
onParseError: () => { }
|
|
8
12
|
};
|
|
9
13
|
/**
|
|
10
14
|
* Validates a text filter value against configuration constraints
|
|
@@ -196,4 +200,39 @@ export function validateAndParseDateRange(rangeValue) {
|
|
|
196
200
|
}
|
|
197
201
|
return [startDate, endDate];
|
|
198
202
|
}
|
|
203
|
+
/**
|
|
204
|
+
* Validates if an object is a valid column filter
|
|
205
|
+
*
|
|
206
|
+
* @param obj - The object to validate
|
|
207
|
+
* @returns Type guard that narrows the type to ColumnFilter
|
|
208
|
+
*/
|
|
209
|
+
export function isValidColumnFilter(obj) {
|
|
210
|
+
if (!obj || typeof obj !== 'object') {
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
const filter = obj;
|
|
214
|
+
// Check for required properties
|
|
215
|
+
if (!filter.filterType ||
|
|
216
|
+
!filter.type ||
|
|
217
|
+
typeof filter.filterType !== 'string' ||
|
|
218
|
+
typeof filter.type !== 'string') {
|
|
219
|
+
return false;
|
|
220
|
+
}
|
|
221
|
+
// Validate based on filter type
|
|
222
|
+
if (filter.filterType === 'text') {
|
|
223
|
+
return (typeof filter.filter === 'string' &&
|
|
224
|
+
TEXT_FILTER_OPERATIONS.includes(filter.type));
|
|
225
|
+
}
|
|
226
|
+
if (filter.filterType === 'number') {
|
|
227
|
+
return (typeof filter.filter === 'number' &&
|
|
228
|
+
NUMBER_FILTER_OPERATIONS.includes(filter.type) &&
|
|
229
|
+
(filter.filterTo === undefined || typeof filter.filterTo === 'number'));
|
|
230
|
+
}
|
|
231
|
+
if (filter.filterType === 'date') {
|
|
232
|
+
return (typeof filter.filter === 'string' &&
|
|
233
|
+
DATE_FILTER_OPERATIONS.includes(filter.type) &&
|
|
234
|
+
(filter.filterTo === undefined || typeof filter.filterTo === 'string'));
|
|
235
|
+
}
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
199
238
|
//# sourceMappingURL=validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/core/validation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/core/validation.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,3 +4,5 @@ export { validateFilterValue, DEFAULT_CONFIG } from './core/validation.js';
|
|
|
4
4
|
export { parseUrlFilters, parseFilterParam } from './core/url-parser.js';
|
|
5
5
|
export { serializeFilters, generateUrl } from './core/url-generator.js';
|
|
6
6
|
export { getFilterModel, applyFilterModel } from './core/grid-integration.js';
|
|
7
|
+
export { serializeGrouped, deserializeGrouped, detectGroupedSerialization, getAvailableFormats, getFormatSerializer } from './core/serialization/grouped.js';
|
|
8
|
+
export { QueryStringSerializer, JsonSerializer, Base64Serializer } from './core/serialization/formats.js';
|
package/dist/index.js
CHANGED
|
@@ -9,4 +9,7 @@ export { parseUrlFilters, parseFilterParam } from './core/url-parser.js';
|
|
|
9
9
|
export { serializeFilters, generateUrl } from './core/url-generator.js';
|
|
10
10
|
// AG Grid integration utilities
|
|
11
11
|
export { getFilterModel, applyFilterModel } from './core/grid-integration.js';
|
|
12
|
+
// Grouped serialization utilities
|
|
13
|
+
export { serializeGrouped, deserializeGrouped, detectGroupedSerialization, getAvailableFormats, getFormatSerializer } from './core/serialization/grouped.js';
|
|
14
|
+
export { QueryStringSerializer, JsonSerializer, Base64Serializer } from './core/serialization/formats.js';
|
|
12
15
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEzE,cAAc,iBAAiB,CAAA;AAE/B,uBAAuB;AACvB,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1E,wBAAwB;AACxB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAExE,2BAA2B;AAC3B,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAEvE,gCAAgC;AAChC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEzE,cAAc,iBAAiB,CAAA;AAE/B,uBAAuB;AACvB,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1E,wBAAwB;AACxB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAExE,2BAA2B;AAC3B,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAEvE,gCAAgC;AAChC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAE7E,kCAAkC;AAClC,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EACjB,MAAM,iCAAiC,CAAA"}
|