ag-grid-url-sync 0.3.0 → 0.5.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 +144 -14
- package/dist/core/ag-grid-url-sync.d.ts +13 -0
- package/dist/core/ag-grid-url-sync.js +10 -55
- package/dist/core/ag-grid-url-sync.js.map +1 -1
- package/dist/core/grid-integration.js +5 -67
- package/dist/core/grid-integration.js.map +1 -1
- package/dist/core/index.js +0 -5
- package/dist/core/index.js.map +1 -1
- package/dist/core/individual-params.d.ts +19 -0
- package/dist/core/individual-params.js +260 -0
- package/dist/core/individual-params.js.map +1 -0
- package/dist/core/serialization/formats.d.ts +8 -9
- package/dist/core/serialization/formats.js +63 -65
- package/dist/core/serialization/formats.js.map +1 -1
- package/dist/core/serialization/grouped.d.ts +10 -5
- package/dist/core/serialization/grouped.js +4 -51
- package/dist/core/serialization/grouped.js.map +1 -1
- package/dist/core/serialization/index.js +0 -4
- package/dist/core/serialization/index.js.map +1 -1
- package/dist/core/types.d.ts +42 -9
- package/dist/core/types.js +0 -118
- package/dist/core/types.js.map +1 -1
- package/dist/core/url-generator.d.ts +10 -7
- package/dist/core/url-generator.js +25 -165
- package/dist/core/url-generator.js.map +1 -1
- package/dist/core/url-parser.d.ts +19 -7
- package/dist/core/url-parser.js +28 -294
- package/dist/core/url-parser.js.map +1 -1
- package/dist/core/validation.d.ts +6 -6
- package/dist/core/validation.js +1 -78
- package/dist/core/validation.js.map +1 -1
- package/dist/core/view-storage.d.ts +63 -0
- package/dist/core/view-storage.js +112 -0
- package/dist/core/view-storage.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +0 -6
- package/dist/index.js.map +1 -1
- package/dist/react/index.d.ts +1 -0
- package/dist/react/types.d.ts +103 -1
- package/dist/react/use-ag-grid-url-sync.js +406 -46
- package/dist/react/use-ag-grid-url-sync.js.map +1 -1
- package/package.json +98 -31
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid-integration.js","sourceRoot":"","sources":["../../src/core/grid-integration.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,uBAAuB,EACvB,+BAA+B,EAC/B,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"grid-integration.js","sourceRoot":"","sources":["../../src/core/grid-integration.ts"],"names":[],"mappings":"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"}
|
package/dist/core/index.js
CHANGED
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
export { AGGridUrlSync, createUrlSync } from './ag-grid-url-sync.js';
|
|
2
2
|
export * from './types.js';
|
|
3
|
-
// Validation utilities
|
|
4
3
|
export { validateFilterValue, DEFAULT_CONFIG } from './validation.js';
|
|
5
|
-
// URL parsing utilities
|
|
6
4
|
export { parseUrlFilters, parseFilterParam } from './url-parser.js';
|
|
7
|
-
// URL generation utilities
|
|
8
5
|
export { serializeFilters, generateUrl } from './url-generator.js';
|
|
9
|
-
// AG Grid integration utilities
|
|
10
6
|
export { getFilterModel, applyFilterModel } from './grid-integration.js';
|
|
11
|
-
// Grouped serialization utilities
|
|
12
7
|
export * from './serialization/index.js';
|
|
13
8
|
//# sourceMappingURL=index.js.map
|
package/dist/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAEpE,cAAc,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAEpE,cAAc,YAAY,CAAA;AAG1B,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAGrE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAGnE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGlE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAGxE,cAAc,0BAA0B,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { FilterState, ColumnFilter, ParseConfig } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Converts a filter state object into URL search parameters.
|
|
4
|
+
* This function does not require a GridApi instance: leave `config.gridApi` out
|
|
5
|
+
* (or set it to `null`) when you only need to serialize filters without a grid.
|
|
6
|
+
* A text value over `config.maxValueLength` is reported through
|
|
7
|
+
* `config.onParseError` and skipped. The other filters are kept.
|
|
8
|
+
*/
|
|
9
|
+
export declare function serializeFilters(filterState: FilterState, config: ParseConfig): URLSearchParams;
|
|
10
|
+
/**
|
|
11
|
+
* Parses a URL parameter into a column filter
|
|
12
|
+
*/
|
|
13
|
+
export declare function parseFilterParam(param: string, value: string, expectedPrefix?: string): ColumnFilter;
|
|
14
|
+
/**
|
|
15
|
+
* Parses prefixed filter parameters into a filter state object.
|
|
16
|
+
* Parameters without the configured prefix are skipped. A parameter that fails
|
|
17
|
+
* to parse is reported through `config.onParseError` and skipped.
|
|
18
|
+
*/
|
|
19
|
+
export declare function parseIndividualParams(searchParams: URLSearchParams, config: ParseConfig): FilterState;
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import { InvalidFilterError, OPERATION_MAP, INTERNAL_TO_URL_OPERATION_MAP } from './types.js';
|
|
2
|
+
import { validateFilterValue, validateAndParseNumber, validateNumberRange, validateAndParseDate, validateAndParseDateRange, validateDateFilter, DEFAULT_CONFIG } from './validation.js';
|
|
3
|
+
const FILTER_TYPES = {
|
|
4
|
+
TEXT: 'text',
|
|
5
|
+
NUMBER: 'number',
|
|
6
|
+
DATE: 'date'
|
|
7
|
+
};
|
|
8
|
+
function serializeColumnFilter(columnName, filter, paramPrefix) {
|
|
9
|
+
const urlOperation = INTERNAL_TO_URL_OPERATION_MAP[filter.type];
|
|
10
|
+
if (!urlOperation)
|
|
11
|
+
return null;
|
|
12
|
+
const paramName = `${paramPrefix}${columnName}_${urlOperation}`;
|
|
13
|
+
if (filter.type === 'dateRange' || filter.type === 'inRange') {
|
|
14
|
+
return 'filterTo' in filter && filter.filterTo !== undefined
|
|
15
|
+
? [paramName, `${filter.filter},${filter.filterTo}`]
|
|
16
|
+
: null;
|
|
17
|
+
}
|
|
18
|
+
if (filter.type === 'blank' || filter.type === 'notBlank') {
|
|
19
|
+
return [paramName, 'true'];
|
|
20
|
+
}
|
|
21
|
+
if (filter.filterType === FILTER_TYPES.NUMBER ||
|
|
22
|
+
filter.filterType === FILTER_TYPES.DATE) {
|
|
23
|
+
const value = String(filter.filter);
|
|
24
|
+
return value ? [paramName, value] : null;
|
|
25
|
+
}
|
|
26
|
+
if (filter.filterType === FILTER_TYPES.TEXT && filter.filter) {
|
|
27
|
+
return [paramName, filter.filter];
|
|
28
|
+
}
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
export function serializeFilters(filterState, config) {
|
|
32
|
+
const params = new URLSearchParams();
|
|
33
|
+
for (const [column, filter] of Object.entries(filterState)) {
|
|
34
|
+
if (filter.filterType !== FILTER_TYPES.TEXT &&
|
|
35
|
+
filter.filterType !== FILTER_TYPES.NUMBER &&
|
|
36
|
+
filter.filterType !== FILTER_TYPES.DATE)
|
|
37
|
+
continue;
|
|
38
|
+
let checkedFilter = filter;
|
|
39
|
+
if (filter.filterType === FILTER_TYPES.TEXT) {
|
|
40
|
+
try {
|
|
41
|
+
checkedFilter = {
|
|
42
|
+
...filter,
|
|
43
|
+
filter: validateFilterValue(filter.filter, config, filter.type)
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
config.onParseError?.(error);
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const param = serializeColumnFilter(column, checkedFilter, config.paramPrefix);
|
|
52
|
+
if (param) {
|
|
53
|
+
params.append(...param);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return params;
|
|
57
|
+
}
|
|
58
|
+
function isNumberOperation(operation) {
|
|
59
|
+
return [
|
|
60
|
+
'lessThan',
|
|
61
|
+
'lessThanOrEqual',
|
|
62
|
+
'greaterThan',
|
|
63
|
+
'greaterThanOrEqual',
|
|
64
|
+
'inRange'
|
|
65
|
+
].includes(operation);
|
|
66
|
+
}
|
|
67
|
+
function isDateOperation(operation) {
|
|
68
|
+
return [
|
|
69
|
+
'dateBefore',
|
|
70
|
+
'dateBeforeOrEqual',
|
|
71
|
+
'dateAfter',
|
|
72
|
+
'dateAfterOrEqual',
|
|
73
|
+
'dateRange'
|
|
74
|
+
].includes(operation);
|
|
75
|
+
}
|
|
76
|
+
function isSharedOperation(operation) {
|
|
77
|
+
return ['eq', 'notEqual', 'blank', 'notBlank'].includes(operation);
|
|
78
|
+
}
|
|
79
|
+
function tryParseAsDate(value) {
|
|
80
|
+
try {
|
|
81
|
+
validateAndParseDate(value);
|
|
82
|
+
return 'date';
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function tryParseNumber(value) {
|
|
89
|
+
try {
|
|
90
|
+
return validateAndParseNumber(value);
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function detectFilterTypeForSharedOperation(operation, value) {
|
|
97
|
+
if (operation === 'blank' || operation === 'notBlank') {
|
|
98
|
+
return 'text';
|
|
99
|
+
}
|
|
100
|
+
if (operation === 'eq' || operation === 'notEqual') {
|
|
101
|
+
if (tryParseAsDate(value) === 'date') {
|
|
102
|
+
return 'date';
|
|
103
|
+
}
|
|
104
|
+
if (tryParseNumber(value) !== null) {
|
|
105
|
+
return 'number';
|
|
106
|
+
}
|
|
107
|
+
return 'text';
|
|
108
|
+
}
|
|
109
|
+
return 'text';
|
|
110
|
+
}
|
|
111
|
+
function extractColumnAndOperation(param, expectedPrefix) {
|
|
112
|
+
const ensureTrailingUnderscore = (prefix) => prefix.endsWith('_') ? prefix : prefix + '_';
|
|
113
|
+
const sanitizedPrefix = expectedPrefix
|
|
114
|
+
? ensureTrailingUnderscore(expectedPrefix)
|
|
115
|
+
: ensureTrailingUnderscore(DEFAULT_CONFIG.paramPrefix);
|
|
116
|
+
const prefixToCheck = sanitizedPrefix.slice(0, -1);
|
|
117
|
+
if (!param.startsWith(prefixToCheck + '_')) {
|
|
118
|
+
throw new InvalidFilterError(`Invalid filter prefix in parameter: ${param}`);
|
|
119
|
+
}
|
|
120
|
+
const withoutPrefix = param.substring(prefixToCheck.length + 1);
|
|
121
|
+
const lastUnderscoreIndex = withoutPrefix.lastIndexOf('_');
|
|
122
|
+
if (lastUnderscoreIndex === -1) {
|
|
123
|
+
throw new InvalidFilterError(`Invalid filter parameter format: ${param}`);
|
|
124
|
+
}
|
|
125
|
+
const column = withoutPrefix.substring(0, lastUnderscoreIndex);
|
|
126
|
+
const operation = withoutPrefix.substring(lastUnderscoreIndex + 1);
|
|
127
|
+
if (!column.trim()) {
|
|
128
|
+
throw new InvalidFilterError(`Empty column name in parameter: ${param}`);
|
|
129
|
+
}
|
|
130
|
+
return { column, operation };
|
|
131
|
+
}
|
|
132
|
+
export function parseFilterParam(param, value, expectedPrefix) {
|
|
133
|
+
const { operation } = extractColumnAndOperation(param, expectedPrefix);
|
|
134
|
+
return parseFilterOperation(operation, value);
|
|
135
|
+
}
|
|
136
|
+
function parseFilterOperation(operation, value) {
|
|
137
|
+
const filterOp = OPERATION_MAP[operation];
|
|
138
|
+
if (!filterOp) {
|
|
139
|
+
throw new InvalidFilterError(`Unsupported filter operation: ${operation}`);
|
|
140
|
+
}
|
|
141
|
+
if (filterOp === 'dateRange') {
|
|
142
|
+
try {
|
|
143
|
+
const [startDate, endDate] = validateAndParseDateRange(value);
|
|
144
|
+
return {
|
|
145
|
+
filterType: 'date',
|
|
146
|
+
type: filterOp,
|
|
147
|
+
filter: startDate,
|
|
148
|
+
filterTo: endDate
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
throw new InvalidFilterError(error instanceof Error ? error.message : 'Invalid date range');
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
if (filterOp === 'inRange') {
|
|
156
|
+
const rangeParts = value.split(',');
|
|
157
|
+
if (rangeParts.length !== 2) {
|
|
158
|
+
throw new InvalidFilterError('Range operation requires exactly two values separated by comma');
|
|
159
|
+
}
|
|
160
|
+
const min = validateAndParseNumber(rangeParts[0] || '');
|
|
161
|
+
const max = validateAndParseNumber(rangeParts[1] || '');
|
|
162
|
+
const rangeValidation = validateNumberRange(min, max);
|
|
163
|
+
if (!rangeValidation.valid) {
|
|
164
|
+
throw new InvalidFilterError(rangeValidation.error || 'Invalid range values');
|
|
165
|
+
}
|
|
166
|
+
return {
|
|
167
|
+
filterType: 'number',
|
|
168
|
+
type: filterOp,
|
|
169
|
+
filter: min,
|
|
170
|
+
filterTo: max
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
if (isDateOperation(filterOp)) {
|
|
174
|
+
try {
|
|
175
|
+
const dateValue = validateAndParseDate(value);
|
|
176
|
+
const validation = validateDateFilter(dateValue, filterOp);
|
|
177
|
+
if (!validation.valid) {
|
|
178
|
+
throw new InvalidFilterError(validation.error || 'Invalid date filter');
|
|
179
|
+
}
|
|
180
|
+
return {
|
|
181
|
+
filterType: 'date',
|
|
182
|
+
type: filterOp,
|
|
183
|
+
filter: dateValue
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
throw new InvalidFilterError(error instanceof Error ? error.message : 'Invalid date filter');
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
if (isNumberOperation(filterOp)) {
|
|
191
|
+
const numValue = validateAndParseNumber(value);
|
|
192
|
+
return {
|
|
193
|
+
filterType: 'number',
|
|
194
|
+
type: filterOp,
|
|
195
|
+
filter: numValue
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
if (isSharedOperation(filterOp)) {
|
|
199
|
+
const detectedType = detectFilterTypeForSharedOperation(filterOp, value);
|
|
200
|
+
if (detectedType === 'date') {
|
|
201
|
+
try {
|
|
202
|
+
const dateValue = validateAndParseDate(value);
|
|
203
|
+
return {
|
|
204
|
+
filterType: 'date',
|
|
205
|
+
type: filterOp,
|
|
206
|
+
filter: dateValue
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
catch {
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
if (detectedType === 'number') {
|
|
213
|
+
const numValue = tryParseNumber(value);
|
|
214
|
+
if (numValue !== null) {
|
|
215
|
+
return {
|
|
216
|
+
filterType: 'number',
|
|
217
|
+
type: filterOp,
|
|
218
|
+
filter: numValue
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
return {
|
|
223
|
+
filterType: 'text',
|
|
224
|
+
type: filterOp,
|
|
225
|
+
filter: filterOp === 'blank' || filterOp === 'notBlank' ? '' : value || ''
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
return {
|
|
229
|
+
filterType: 'text',
|
|
230
|
+
type: filterOp,
|
|
231
|
+
filter: value || ''
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
export function parseIndividualParams(searchParams, config) {
|
|
235
|
+
const filterState = {};
|
|
236
|
+
for (const [param, value] of searchParams.entries()) {
|
|
237
|
+
if (!param.startsWith(config.paramPrefix))
|
|
238
|
+
continue;
|
|
239
|
+
try {
|
|
240
|
+
const { column: columnName, operation } = extractColumnAndOperation(param, config.paramPrefix);
|
|
241
|
+
const filterParam = parseFilterOperation(operation, value);
|
|
242
|
+
if (filterParam.filterType === 'text') {
|
|
243
|
+
const validatedValue = validateFilterValue(value, config, filterParam.type);
|
|
244
|
+
filterState[columnName] = {
|
|
245
|
+
...filterParam,
|
|
246
|
+
filter: validatedValue
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
filterState[columnName] = filterParam;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
config.onParseError?.(error);
|
|
255
|
+
continue;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return filterState;
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=individual-params.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"individual-params.js","sourceRoot":"","sources":["../../src/core/individual-params.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,6BAA6B,EAC9B,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,yBAAyB,EACzB,kBAAkB,EAClB,cAAc,EACf,MAAM,iBAAiB,CAAA;AAQxB,MAAM,YAAY,GAAG;IACnB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;CACJ,CAAA;AAQV,SAAS,qBAAqB,CAC5B,UAAkB,EAClB,MAAoB,EACpB,WAAmB;IAEnB,MAAM,YAAY,GAChB,6BAA6B,CAC3B,MAAM,CAAC,IAAkD,CAC1D,CAAA;IACH,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAA;IAE9B,MAAM,SAAS,GAAG,GAAG,WAAW,GAAG,UAAU,IAAI,YAAY,EAAE,CAAA;IAG/D,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7D,OAAO,UAAU,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;YAC1D,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpD,CAAC,CAAC,IAAI,CAAA;IACV,CAAC;IAGD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC1D,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IAC5B,CAAC;IAID,IACE,MAAM,CAAC,UAAU,KAAK,YAAY,CAAC,MAAM;QACzC,MAAM,CAAC,UAAU,KAAK,YAAY,CAAC,IAAI,EACvC,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACnC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC1C,CAAC;IAGD,IAAI,MAAM,CAAC,UAAU,KAAK,YAAY,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAC7D,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;IACnC,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AASD,MAAM,UAAU,gBAAgB,CAC9B,WAAwB,EACxB,MAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;IAEpC,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAE3D,IACE,MAAM,CAAC,UAAU,KAAK,YAAY,CAAC,IAAI;YACvC,MAAM,CAAC,UAAU,KAAK,YAAY,CAAC,MAAM;YACzC,MAAM,CAAC,UAAU,KAAK,YAAY,CAAC,IAAI;YAEvC,SAAQ;QAIV,IAAI,aAAa,GAAiB,MAAM,CAAA;QACxC,IAAI,MAAM,CAAC,UAAU,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACH,aAAa,GAAG;oBACd,GAAG,MAAM;oBACT,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;iBAChE,CAAA;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAEf,MAAM,CAAC,YAAY,EAAE,CAAC,KAAc,CAAC,CAAA;gBACrC,SAAQ;YACV,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,qBAAqB,CACjC,MAAM,EACN,aAAa,EACb,MAAM,CAAC,WAAW,CACnB,CAAA;QACD,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAKD,SAAS,iBAAiB,CAAC,SAAiB;IAC1C,OAAO;QACL,UAAU;QACV,iBAAiB;QACjB,aAAa;QACb,oBAAoB;QACpB,SAAS;KACV,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;AACvB,CAAC;AAKD,SAAS,eAAe,CAAC,SAAiB;IACxC,OAAO;QACL,YAAY;QACZ,mBAAmB;QACnB,WAAW;QACX,kBAAkB;QAClB,WAAW;KACZ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;AACvB,CAAC;AAKD,SAAS,iBAAiB,CAAC,SAAiB;IAC1C,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;AACpE,CAAC;AAMD,SAAS,cAAc,CAAC,KAAa;IACnC,IAAI,CAAC;QACH,oBAAoB,CAAC,KAAK,CAAC,CAAA;QAC3B,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAOD,SAAS,cAAc,CAAC,KAAa;IACnC,IAAI,CAAC;QACH,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAA;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAMD,SAAS,kCAAkC,CACzC,SAAiB,EACjB,KAAa;IAGb,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;QACtD,OAAO,MAAM,CAAA;IACf,CAAC;IAGD,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;QAEnD,IAAI,cAAc,CAAC,KAAK,CAAC,KAAK,MAAM,EAAE,CAAC;YACrC,OAAO,MAAM,CAAA;QACf,CAAC;QAGD,IAAI,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YACnC,OAAO,QAAQ,CAAA;QACjB,CAAC;QAGD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAKD,SAAS,yBAAyB,CAChC,KAAa,EACb,cAAuB;IAEvB,MAAM,wBAAwB,GAAG,CAAC,MAAc,EAAU,EAAE,CAC1D,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,CAAA;IAE9C,MAAM,eAAe,GAAG,cAAc;QACpC,CAAC,CAAC,wBAAwB,CAAC,cAAc,CAAC;QAC1C,CAAC,CAAC,wBAAwB,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;IAExD,MAAM,aAAa,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAClD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,GAAG,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,kBAAkB,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAA;IAC9E,CAAC;IAGD,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC/D,MAAM,mBAAmB,GAAG,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IAE1D,IAAI,mBAAmB,KAAK,CAAC,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,kBAAkB,CAAC,oCAAoC,KAAK,EAAE,CAAC,CAAA;IAC3E,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAA;IAC9D,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAA;IAElE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACnB,MAAM,IAAI,kBAAkB,CAAC,mCAAmC,KAAK,EAAE,CAAC,CAAA;IAC1E,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;AAC9B,CAAC;AAKD,MAAM,UAAU,gBAAgB,CAC9B,KAAa,EACb,KAAa,EACb,cAAuB;IAEvB,MAAM,EAAE,SAAS,EAAE,GAAG,yBAAyB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAA;IACtE,OAAO,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;AAC/C,CAAC;AAMD,SAAS,oBAAoB,CAAC,SAAiB,EAAE,KAAa;IAC5D,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAuC,CAAC,CAAA;IACvE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,kBAAkB,CAAC,iCAAiC,SAAS,EAAE,CAAC,CAAA;IAC5E,CAAC;IAGD,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAA;YAE7D,OAAO;gBACL,UAAU,EAAE,MAAM;gBAClB,IAAI,EAAE,QAAe;gBACrB,MAAM,EAAE,SAAS;gBACjB,QAAQ,EAAE,OAAO;aAClB,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,kBAAkB,CAC1B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAC9D,CAAA;QACH,CAAC;IACH,CAAC;IAGD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,kBAAkB,CAC1B,gEAAgE,CACjE,CAAA;QACH,CAAC;QAED,MAAM,GAAG,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QACvD,MAAM,GAAG,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAEvD,MAAM,eAAe,GAAG,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACrD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC3B,MAAM,IAAI,kBAAkB,CAC1B,eAAe,CAAC,KAAK,IAAI,sBAAsB,CAChD,CAAA;QACH,CAAC;QAED,OAAO;YACL,UAAU,EAAE,QAAQ;YACpB,IAAI,EAAE,QAAe;YACrB,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,GAAG;SACd,CAAA;IACH,CAAC;IAGD,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;YAC7C,MAAM,UAAU,GAAG,kBAAkB,CAAC,SAAS,EAAE,QAAe,CAAC,CAAA;YAEjE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACtB,MAAM,IAAI,kBAAkB,CAAC,UAAU,CAAC,KAAK,IAAI,qBAAqB,CAAC,CAAA;YACzE,CAAC;YAED,OAAO;gBACL,UAAU,EAAE,MAAM;gBAClB,IAAI,EAAE,QAAe;gBACrB,MAAM,EAAE,SAAS;aAClB,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,kBAAkB,CAC1B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAC/D,CAAA;QACH,CAAC;IACH,CAAC;IAGD,IAAI,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAA;QAE9C,OAAO;YACL,UAAU,EAAE,QAAQ;YACpB,IAAI,EAAE,QAAe;YACrB,MAAM,EAAE,QAAQ;SACjB,CAAA;IACH,CAAC;IAGD,IAAI,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,MAAM,YAAY,GAAG,kCAAkC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;QAExE,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;gBAC7C,OAAO;oBACL,UAAU,EAAE,MAAM;oBAClB,IAAI,EAAE,QAAe;oBACrB,MAAM,EAAE,SAAS;iBAClB,CAAA;YACH,CAAC;YAAC,MAAM,CAAC;YAET,CAAC;QACH,CAAC;QAED,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;YACtC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,OAAO;oBACL,UAAU,EAAE,QAAQ;oBACpB,IAAI,EAAE,QAAe;oBACrB,MAAM,EAAE,QAAQ;iBACjB,CAAA;YACH,CAAC;QACH,CAAC;QAGD,OAAO;YACL,UAAU,EAAE,MAAM;YAClB,IAAI,EAAE,QAAe;YACrB,MAAM,EAAE,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;SAC3E,CAAA;IACH,CAAC;IAGD,OAAO;QACL,UAAU,EAAE,MAAM;QAClB,IAAI,EAAE,QAAe;QACrB,MAAM,EAAE,KAAK,IAAI,EAAE;KACpB,CAAA;AACH,CAAC;AAOD,MAAM,UAAU,qBAAqB,CACnC,YAA6B,EAC7B,MAAmB;IAEnB,MAAM,WAAW,GAAgB,EAAE,CAAA;IAEnC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;QACpD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC;YAAE,SAAQ;QAEnD,IAAI,CAAC;YAEH,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,yBAAyB,CACjE,KAAK,EACL,MAAM,CAAC,WAAW,CACnB,CAAA;YACD,MAAM,WAAW,GAAG,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;YAG1D,IAAI,WAAW,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;gBACtC,MAAM,cAAc,GAAG,mBAAmB,CACxC,KAAK,EACL,MAAM,EACN,WAAW,CAAC,IAAI,CACjB,CAAA;gBACD,WAAW,CAAC,UAAU,CAAC,GAAG;oBACxB,GAAG,WAAW;oBACd,MAAM,EAAE,cAAc;iBACvB,CAAA;YACH,CAAC;iBAAM,CAAC;gBAEN,WAAW,CAAC,UAAU,CAAC,GAAG,WAAW,CAAA;YACvC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEf,MAAM,CAAC,YAAY,EAAE,CAAC,KAAc,CAAC,CAAA;YAErC,SAAQ;QACV,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import type { FilterState, SerializationFormat, FormatSerializer } from '../types.js';
|
|
1
|
+
import type { FilterState, SerializationFormat, FormatSerializer, ParseConfig } from '../types.js';
|
|
2
2
|
/**
|
|
3
3
|
* QueryString format serializer
|
|
4
|
-
*
|
|
4
|
+
* Writes the individual filter parameters as one query string value
|
|
5
5
|
*/
|
|
6
6
|
export declare class QueryStringSerializer implements FormatSerializer {
|
|
7
7
|
readonly format: SerializationFormat;
|
|
8
|
-
serialize(filterState: FilterState): string;
|
|
9
|
-
deserialize(value: string): FilterState;
|
|
8
|
+
serialize(filterState: FilterState, config?: ParseConfig): string;
|
|
9
|
+
deserialize(value: string, config?: ParseConfig): FilterState;
|
|
10
10
|
}
|
|
11
11
|
/**
|
|
12
12
|
* JSON format serializer
|
|
@@ -14,8 +14,8 @@ export declare class QueryStringSerializer implements FormatSerializer {
|
|
|
14
14
|
*/
|
|
15
15
|
export declare class JsonSerializer implements FormatSerializer {
|
|
16
16
|
readonly format: SerializationFormat;
|
|
17
|
-
serialize(filterState: FilterState): string;
|
|
18
|
-
deserialize(value: string): FilterState;
|
|
17
|
+
serialize(filterState: FilterState, config?: ParseConfig): string;
|
|
18
|
+
deserialize(value: string, config?: ParseConfig): FilterState;
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
21
|
* Base64 format serializer
|
|
@@ -23,7 +23,6 @@ export declare class JsonSerializer implements FormatSerializer {
|
|
|
23
23
|
*/
|
|
24
24
|
export declare class Base64Serializer implements FormatSerializer {
|
|
25
25
|
readonly format: SerializationFormat;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
deserialize(value: string): FilterState;
|
|
26
|
+
serialize(filterState: FilterState, config?: ParseConfig): string;
|
|
27
|
+
deserialize(value: string, config?: ParseConfig): FilterState;
|
|
29
28
|
}
|
|
@@ -1,87 +1,85 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { InvalidSerializationError } from '../types.js';
|
|
2
|
+
import { parseIndividualParams, serializeFilters } from '../individual-params.js';
|
|
3
|
+
import { DEFAULT_CONFIG, isValidColumnFilter, validateFilterValue } from '../validation.js';
|
|
4
|
+
function dropOverLengthTextValues(filterState, config, format) {
|
|
5
|
+
const cfg = config ?? DEFAULT_CONFIG;
|
|
6
|
+
const result = {};
|
|
7
|
+
for (const [column, filter] of Object.entries(filterState)) {
|
|
8
|
+
if (filter.filterType === 'text') {
|
|
9
|
+
try {
|
|
10
|
+
validateFilterValue(filter.filter, cfg, filter.type);
|
|
11
|
+
}
|
|
12
|
+
catch (error) {
|
|
13
|
+
cfg.onParseError?.(new InvalidSerializationError(format, error));
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
result[column] = filter;
|
|
18
|
+
}
|
|
19
|
+
return result;
|
|
20
|
+
}
|
|
21
|
+
function parseAndValidateJson(value) {
|
|
22
|
+
try {
|
|
23
|
+
const parsed = JSON.parse(value);
|
|
24
|
+
if (typeof parsed !== 'object' || parsed === null) {
|
|
25
|
+
throw new Error('Invalid JSON: must be an object');
|
|
26
|
+
}
|
|
27
|
+
for (const [columnId, filter] of Object.entries(parsed)) {
|
|
28
|
+
if (!isValidColumnFilter(filter)) {
|
|
29
|
+
throw new Error(`Invalid JSON: filter for column ${columnId} is not a valid filter object`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return parsed;
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
throw new Error(`JSON parsing failed: ${error.message}`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
9
38
|
export class QueryStringSerializer {
|
|
10
39
|
format = 'querystring';
|
|
11
|
-
serialize(filterState) {
|
|
12
|
-
|
|
13
|
-
const tempConfig = {
|
|
14
|
-
gridApi: null, // Not used in URL generation
|
|
15
|
-
...DEFAULT_CONFIG
|
|
16
|
-
};
|
|
17
|
-
// Generate URL with individual parameters
|
|
18
|
-
const tempUrl = generateUrl('http://example.com', filterState, tempConfig);
|
|
19
|
-
const urlObj = new URL(tempUrl);
|
|
20
|
-
// Extract just the search params (without the ?)
|
|
21
|
-
return urlObj.search.slice(1);
|
|
40
|
+
serialize(filterState, config) {
|
|
41
|
+
return serializeFilters(filterState, innerConfig(config)).toString();
|
|
22
42
|
}
|
|
23
|
-
deserialize(value) {
|
|
24
|
-
|
|
25
|
-
const tempUrl = `http://example.com?${value}`;
|
|
26
|
-
// Create a temporary config for parsing
|
|
27
|
-
const tempConfig = {
|
|
28
|
-
gridApi: null, // Not used in URL generation
|
|
29
|
-
...DEFAULT_CONFIG
|
|
30
|
-
};
|
|
31
|
-
return parseUrlFilters(tempUrl, tempConfig);
|
|
43
|
+
deserialize(value, config) {
|
|
44
|
+
return parseIndividualParams(new URLSearchParams(value), innerConfig(config));
|
|
32
45
|
}
|
|
33
46
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
47
|
+
function innerConfig(config) {
|
|
48
|
+
if (!config)
|
|
49
|
+
return DEFAULT_CONFIG;
|
|
50
|
+
const onParseError = config.onParseError ?? DEFAULT_CONFIG.onParseError;
|
|
51
|
+
return {
|
|
52
|
+
...DEFAULT_CONFIG,
|
|
53
|
+
maxValueLength: config.maxValueLength ?? DEFAULT_CONFIG.maxValueLength,
|
|
54
|
+
onParseError: error => onParseError(new InvalidSerializationError('querystring', error))
|
|
55
|
+
};
|
|
56
|
+
}
|
|
38
57
|
export class JsonSerializer {
|
|
39
58
|
format = 'json';
|
|
40
|
-
serialize(filterState) {
|
|
41
|
-
return JSON.stringify(filterState);
|
|
59
|
+
serialize(filterState, config) {
|
|
60
|
+
return JSON.stringify(dropOverLengthTextValues(filterState, config, 'json'));
|
|
42
61
|
}
|
|
43
|
-
deserialize(value) {
|
|
44
|
-
|
|
45
|
-
const parsed = JSON.parse(value);
|
|
46
|
-
// Validate that it's a proper FilterState object
|
|
47
|
-
if (typeof parsed !== 'object' || parsed === null) {
|
|
48
|
-
throw new Error('Invalid JSON: must be an object');
|
|
49
|
-
}
|
|
50
|
-
// Basic validation of the structure
|
|
51
|
-
for (const [columnId, filter] of Object.entries(parsed)) {
|
|
52
|
-
if (typeof columnId !== 'string') {
|
|
53
|
-
throw new Error('Invalid JSON: column IDs must be strings');
|
|
54
|
-
}
|
|
55
|
-
if (!isValidColumnFilter(filter)) {
|
|
56
|
-
throw new Error(`Invalid JSON: filter for column ${columnId} is not a valid filter object`);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return parsed;
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
throw new Error(`JSON parsing failed: ${error.message}`);
|
|
63
|
-
}
|
|
62
|
+
deserialize(value, config) {
|
|
63
|
+
return dropOverLengthTextValues(parseAndValidateJson(value), config, 'json');
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
-
/**
|
|
67
|
-
* Base64 format serializer
|
|
68
|
-
* JSON encoded then base64 encoded for maximum compactness
|
|
69
|
-
*/
|
|
70
66
|
export class Base64Serializer {
|
|
71
67
|
format = 'base64';
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
return btoa(jsonString);
|
|
68
|
+
serialize(filterState, config) {
|
|
69
|
+
const filtered = dropOverLengthTextValues(filterState, config, 'base64');
|
|
70
|
+
return btoa(escapeNonAscii(JSON.stringify(filtered)));
|
|
76
71
|
}
|
|
77
|
-
deserialize(value) {
|
|
72
|
+
deserialize(value, config) {
|
|
78
73
|
try {
|
|
79
74
|
const decoded = atob(value);
|
|
80
|
-
return
|
|
75
|
+
return dropOverLengthTextValues(parseAndValidateJson(decoded), config, 'base64');
|
|
81
76
|
}
|
|
82
77
|
catch (error) {
|
|
83
78
|
throw new Error(`Base64 decoding failed: ${error.message}`);
|
|
84
79
|
}
|
|
85
80
|
}
|
|
86
81
|
}
|
|
82
|
+
function escapeNonAscii(json) {
|
|
83
|
+
return json.replace(/[\u0080-\uffff]/g, char => `\\u${char.charCodeAt(0).toString(16).padStart(4, '0')}`);
|
|
84
|
+
}
|
|
87
85
|
//# sourceMappingURL=formats.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formats.js","sourceRoot":"","sources":["../../../src/core/serialization/formats.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"formats.js","sourceRoot":"","sources":["../../../src/core/serialization/formats.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,26 @@
|
|
|
1
|
-
import type { FilterState, SerializationFormat, FormatSerializer, GroupedSerializationResult,
|
|
1
|
+
import type { FilterState, SerializationFormat, FormatSerializer, GroupedSerializationResult, ParseConfig } from '../types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Serialize filter state using grouped serialization
|
|
4
4
|
* @param filterState - The filter state to serialize
|
|
5
|
-
* @param config -
|
|
5
|
+
* @param config - Parse configuration (does not need a grid)
|
|
6
6
|
* @returns Grouped serialization result with parameter name and value
|
|
7
7
|
*/
|
|
8
|
-
export declare function serializeGrouped(filterState: FilterState, config:
|
|
8
|
+
export declare function serializeGrouped(filterState: FilterState, config: ParseConfig): GroupedSerializationResult;
|
|
9
9
|
/**
|
|
10
10
|
* Deserialize grouped filter state from URL parameter value
|
|
11
11
|
* @param value - The serialized value from URL parameter
|
|
12
12
|
* @param format - The serialization format to use
|
|
13
|
-
* @param config -
|
|
13
|
+
* @param config - Parse configuration for error handling (does not need a grid)
|
|
14
14
|
* @returns Deserialized filter state
|
|
15
15
|
*/
|
|
16
|
-
export declare function deserializeGrouped(value: string, format: SerializationFormat, config:
|
|
16
|
+
export declare function deserializeGrouped(value: string, format: SerializationFormat, config: ParseConfig): FilterState;
|
|
17
17
|
/**
|
|
18
18
|
* Detect if a URL contains grouped serialization parameters
|
|
19
|
+
*
|
|
20
|
+
* @deprecated parseUrlFilters no longer uses this. It reads only
|
|
21
|
+
* `config.groupedParam` and decodes it with `config.format`, because a guessed
|
|
22
|
+
* format takes any non-empty value as grouped filters (#210). This function
|
|
23
|
+
* will be removed in v1.0.
|
|
19
24
|
* @param url - URL to analyze
|
|
20
25
|
* @param possibleParams - Array of possible grouped parameter names to check
|
|
21
26
|
* @returns Detection result with format and value if found
|