ag-grid-url-sync 0.4.1 → 0.5.1

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 (58) hide show
  1. package/README.md +143 -50
  2. package/dist/core/ag-grid-url-sync.d.ts +19 -5
  3. package/dist/core/ag-grid-url-sync.js +28 -17
  4. package/dist/core/ag-grid-url-sync.js.map +1 -1
  5. package/dist/core/grid-integration.d.ts +27 -1
  6. package/dist/core/grid-integration.js +161 -129
  7. package/dist/core/grid-integration.js.map +1 -1
  8. package/dist/core/index.d.ts +2 -1
  9. package/dist/core/index.js +2 -1
  10. package/dist/core/index.js.map +1 -1
  11. package/dist/core/individual-params.d.ts +26 -0
  12. package/dist/core/individual-params.js +236 -0
  13. package/dist/core/individual-params.js.map +1 -0
  14. package/dist/core/issue-columns.d.ts +2 -0
  15. package/dist/core/issue-columns.js +11 -0
  16. package/dist/core/issue-columns.js.map +1 -0
  17. package/dist/core/issues.d.ts +34 -0
  18. package/dist/core/issues.js +58 -0
  19. package/dist/core/issues.js.map +1 -0
  20. package/dist/core/operators.d.ts +189 -0
  21. package/dist/core/operators.js +60 -0
  22. package/dist/core/operators.js.map +1 -0
  23. package/dist/core/options.d.ts +21 -0
  24. package/dist/core/options.js +21 -0
  25. package/dist/core/options.js.map +1 -0
  26. package/dist/core/schemas.d.ts +51 -0
  27. package/dist/core/schemas.js +59 -0
  28. package/dist/core/schemas.js.map +1 -0
  29. package/dist/core/serialization/formats.d.ts +8 -9
  30. package/dist/core/serialization/formats.js +70 -47
  31. package/dist/core/serialization/formats.js.map +1 -1
  32. package/dist/core/serialization/grouped.d.ts +13 -11
  33. package/dist/core/serialization/grouped.js +24 -17
  34. package/dist/core/serialization/grouped.js.map +1 -1
  35. package/dist/core/to-error.d.ts +5 -0
  36. package/dist/core/to-error.js +4 -0
  37. package/dist/core/to-error.js.map +1 -0
  38. package/dist/core/types.d.ts +172 -33
  39. package/dist/core/types.js +35 -108
  40. package/dist/core/types.js.map +1 -1
  41. package/dist/core/url-generator.d.ts +10 -7
  42. package/dist/core/url-generator.js +29 -121
  43. package/dist/core/url-generator.js.map +1 -1
  44. package/dist/core/url-parser.d.ts +19 -7
  45. package/dist/core/url-parser.js +31 -239
  46. package/dist/core/url-parser.js.map +1 -1
  47. package/dist/core/validation.d.ts +21 -14
  48. package/dist/core/validation.js +58 -54
  49. package/dist/core/validation.js.map +1 -1
  50. package/dist/core/view-storage.js +21 -19
  51. package/dist/core/view-storage.js.map +1 -1
  52. package/dist/index.d.ts +2 -1
  53. package/dist/index.js +2 -1
  54. package/dist/index.js.map +1 -1
  55. package/dist/react/types.d.ts +36 -11
  56. package/dist/react/use-ag-grid-url-sync.js +151 -97
  57. package/dist/react/use-ag-grid-url-sync.js.map +1 -1
  58. package/package.json +35 -16
@@ -0,0 +1,21 @@
1
+ export const DEFAULT_CONFIG = {
2
+ paramPrefix: 'f_',
3
+ maxValueLength: 200,
4
+ serialization: 'individual',
5
+ groupedParam: 'grid_filters',
6
+ format: 'querystring',
7
+ onParseError: () => { },
8
+ throwOnError: false
9
+ };
10
+ export function resolveOptions(options = {}) {
11
+ return {
12
+ paramPrefix: options.paramPrefix ?? DEFAULT_CONFIG.paramPrefix,
13
+ maxValueLength: options.maxValueLength ?? DEFAULT_CONFIG.maxValueLength,
14
+ onParseError: options.onParseError ?? DEFAULT_CONFIG.onParseError,
15
+ serialization: options.serialization ?? DEFAULT_CONFIG.serialization,
16
+ groupedParam: options.groupedParam ?? DEFAULT_CONFIG.groupedParam,
17
+ format: options.format ?? DEFAULT_CONFIG.format,
18
+ throwOnError: options.throwOnError ?? DEFAULT_CONFIG.throwOnError
19
+ };
20
+ }
21
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/core/options.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,WAAW,EAAE,IAAI;IACjB,cAAc,EAAE,GAAG;IACnB,aAAa,EAAE,YAAqB;IACpC,YAAY,EAAE,cAAc;IAC5B,MAAM,EAAE,aAAsB;IAC9B,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC;IACtB,YAAY,EAAE,KAAK;CACe,CAAA;AASpC,MAAM,UAAU,cAAc,CAC5B,OAAO,GAAwB,EAAE;IAEjC,OAAO;QACL,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,cAAc,CAAC,WAAW;QAC9D,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,cAAc,CAAC,cAAc;QACvE,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,cAAc,CAAC,YAAY;QACjE,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,cAAc,CAAC,aAAa;QACpE,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,cAAc,CAAC,YAAY;QACjE,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM;QAC/C,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,cAAc,CAAC,YAAY;KAClE,CAAA;AACH,CAAC"}
@@ -0,0 +1,51 @@
1
+ import * as v from 'valibot';
2
+ /** Any JSON object (arrays included, the same as `typeof x === 'object'`) */
3
+ export declare const JsonObjectSchema: v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>;
4
+ /** One column filter in the library's own format */
5
+ export declare const ColumnFilterSchema: v.VariantSchema<"filterType", [v.ObjectSchema<{
6
+ readonly filterType: v.LiteralSchema<"text", undefined>;
7
+ readonly type: v.PicklistSchema<readonly ["contains", "notContains", "startsWith", "endsWith", "eq", "notEqual", "blank", "notBlank"], undefined>;
8
+ readonly filter: v.StringSchema<undefined>;
9
+ }, undefined>, v.ObjectSchema<{
10
+ readonly filterType: v.LiteralSchema<"number", undefined>;
11
+ readonly type: v.PicklistSchema<readonly ["lessThan", "lessThanOrEqual", "greaterThan", "greaterThanOrEqual", "inRange", "eq", "notEqual", "blank", "notBlank"], undefined>;
12
+ readonly filter: v.NumberSchema<undefined>;
13
+ readonly filterTo: v.ExactOptionalSchema<v.NumberSchema<undefined>, undefined>;
14
+ }, undefined>, v.ObjectSchema<{
15
+ readonly filterType: v.LiteralSchema<"date", undefined>;
16
+ readonly type: v.PicklistSchema<readonly ["dateBefore", "dateBeforeOrEqual", "dateAfter", "dateAfterOrEqual", "dateRange", "eq", "notEqual", "blank", "notBlank"], undefined>;
17
+ readonly filter: v.StringSchema<undefined>;
18
+ readonly filterTo: v.ExactOptionalSchema<v.StringSchema<undefined>, undefined>;
19
+ }, undefined>], undefined>;
20
+ /** One saved view. A view that does not match is dropped, not repaired. */
21
+ export declare const GridViewSchema: v.ObjectSchema<{
22
+ readonly id: v.StringSchema<undefined>;
23
+ readonly name: v.StringSchema<undefined>;
24
+ readonly updatedAt: v.NumberSchema<undefined>;
25
+ readonly filterModel: v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>;
26
+ }, undefined>;
27
+ /**
28
+ * The stored blob. Reads must never fail: a `views` value that is not a list
29
+ * reads as no views, and an `activeId` that is not a string reads as none.
30
+ */
31
+ export declare const StoredViewsSchema: v.LooseObjectSchema<{
32
+ readonly views: v.SchemaWithFallback<v.ArraySchema<v.UnknownSchema, undefined>, readonly []>;
33
+ readonly activeId: v.SchemaWithFallback<v.NullableSchema<v.StringSchema<undefined>, undefined>, null>;
34
+ }, undefined>;
35
+ /** One column of the AG Grid filter model that the library can read */
36
+ export declare const AgGridFilterSchema: v.VariantSchema<"filterType", [v.LooseObjectSchema<{
37
+ readonly filterType: v.LiteralSchema<"text", undefined>;
38
+ readonly type: v.SchemaWithFallback<v.OptionalSchema<v.StringSchema<undefined>, undefined>, undefined>;
39
+ readonly filter: v.SchemaWithFallback<v.OptionalSchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>, v.NullSchema<undefined>], undefined>, undefined>, undefined>;
40
+ }, undefined>, v.LooseObjectSchema<{
41
+ readonly filterType: v.LiteralSchema<"number", undefined>;
42
+ readonly type: v.SchemaWithFallback<v.OptionalSchema<v.StringSchema<undefined>, undefined>, undefined>;
43
+ readonly filter: v.SchemaWithFallback<v.OptionalSchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>, v.NullSchema<undefined>], undefined>, undefined>, undefined>;
44
+ readonly filterTo: v.SchemaWithFallback<v.OptionalSchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>, v.NullSchema<undefined>], undefined>, undefined>, undefined>;
45
+ }, undefined>, v.LooseObjectSchema<{
46
+ readonly filterType: v.LiteralSchema<"date", undefined>;
47
+ readonly type: v.SchemaWithFallback<v.OptionalSchema<v.StringSchema<undefined>, undefined>, undefined>;
48
+ readonly filter: v.SchemaWithFallback<v.OptionalSchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>, v.NullSchema<undefined>], undefined>, undefined>, undefined>;
49
+ readonly dateFrom: v.SchemaWithFallback<v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>, undefined>;
50
+ readonly dateTo: v.SchemaWithFallback<v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>, undefined>;
51
+ }, undefined>], undefined>;
@@ -0,0 +1,59 @@
1
+ import * as v from 'valibot';
2
+ import { TEXT_FILTER_OPERATIONS, NUMBER_FILTER_OPERATIONS, DATE_FILTER_OPERATIONS } from './types.js';
3
+ export const JsonObjectSchema = v.record(v.string(), v.unknown());
4
+ const TextFilterSchema = v.object({
5
+ filterType: v.literal('text'),
6
+ type: v.picklist(TEXT_FILTER_OPERATIONS),
7
+ filter: v.string()
8
+ });
9
+ const NumberFilterSchema = v.object({
10
+ filterType: v.literal('number'),
11
+ type: v.picklist(NUMBER_FILTER_OPERATIONS),
12
+ filter: v.number(),
13
+ filterTo: v.exactOptional(v.number())
14
+ });
15
+ const DateFilterSchema = v.object({
16
+ filterType: v.literal('date'),
17
+ type: v.picklist(DATE_FILTER_OPERATIONS),
18
+ filter: v.string(),
19
+ filterTo: v.exactOptional(v.string())
20
+ });
21
+ export const ColumnFilterSchema = v.variant('filterType', [
22
+ TextFilterSchema,
23
+ NumberFilterSchema,
24
+ DateFilterSchema
25
+ ]);
26
+ export const GridViewSchema = v.object({
27
+ id: v.string(),
28
+ name: v.string(),
29
+ updatedAt: v.number(),
30
+ filterModel: JsonObjectSchema
31
+ });
32
+ export const StoredViewsSchema = v.looseObject({
33
+ views: v.fallback(v.array(v.unknown()), []),
34
+ activeId: v.fallback(v.nullable(v.string()), null)
35
+ });
36
+ const agGridOperation = v.fallback(v.optional(v.string()), undefined);
37
+ const agGridValue = v.fallback(v.optional(v.union([v.string(), v.number(), v.null()])), undefined);
38
+ const agGridDate = v.fallback(v.optional(v.nullable(v.string())), undefined);
39
+ export const AgGridFilterSchema = v.variant('filterType', [
40
+ v.looseObject({
41
+ filterType: v.literal('text'),
42
+ type: agGridOperation,
43
+ filter: agGridValue
44
+ }),
45
+ v.looseObject({
46
+ filterType: v.literal('number'),
47
+ type: agGridOperation,
48
+ filter: agGridValue,
49
+ filterTo: agGridValue
50
+ }),
51
+ v.looseObject({
52
+ filterType: v.literal('date'),
53
+ type: agGridOperation,
54
+ filter: agGridValue,
55
+ dateFrom: agGridDate,
56
+ dateTo: agGridDate
57
+ })
58
+ ]);
59
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/core/schemas.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import type { FilterState, SerializationFormat, FormatSerializer } from '../types.js';
1
+ import type { FilterState, SerializationFormat, FormatSerializer, AGGridUrlSyncConfig } from '../types.js';
2
2
  /**
3
3
  * QueryString format serializer
4
- * Reuses existing URL generation logic but groups into single parameter
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?: AGGridUrlSyncConfig): string;
9
+ deserialize(value: string, config?: AGGridUrlSyncConfig): 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?: AGGridUrlSyncConfig): string;
18
+ deserialize(value: string, config?: AGGridUrlSyncConfig): 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
- private jsonSerializer;
27
- serialize(filterState: FilterState): string;
28
- deserialize(value: string): FilterState;
26
+ serialize(filterState: FilterState, config?: AGGridUrlSyncConfig): string;
27
+ deserialize(value: string, config?: AGGridUrlSyncConfig): FilterState;
29
28
  }
@@ -1,68 +1,91 @@
1
- import { DEFAULT_CONFIG } from '../index.js';
2
- import { generateUrl } from '../url-generator.js';
3
- import { parseUrlFilters } from '../url-parser.js';
4
- import { isValidColumnFilter } from '../validation.js';
1
+ import * as v from 'valibot';
2
+ import { InvalidSerializationError } from '../types.js';
3
+ import { parseIndividualParams, serializeFilters } from '../individual-params.js';
4
+ import { validateFilterValue } from '../validation.js';
5
+ import { DEFAULT_CONFIG, resolveOptions } from '../options.js';
6
+ import { reportIssue, rethrowIfThrown, toIssue } from '../issues.js';
7
+ import { ColumnFilterSchema, JsonObjectSchema } from '../schemas.js';
8
+ import { toError } from '../to-error.js';
9
+ function dropOverLengthTextValues(filterState, config, format) {
10
+ const cfg = resolveOptions(config);
11
+ const kept = Object.entries(filterState).filter(([column, filter]) => {
12
+ if (filter.filterType !== 'text')
13
+ return true;
14
+ try {
15
+ validateFilterValue(filter.filter, cfg, filter.type);
16
+ return true;
17
+ }
18
+ catch (error) {
19
+ const issue = toIssue(error, 'VALUE_TOO_LONG', column);
20
+ reportIssue(cfg, new InvalidSerializationError(format, issue));
21
+ return false;
22
+ }
23
+ });
24
+ return Object.fromEntries(kept);
25
+ }
26
+ function parseAndValidateJson(value) {
27
+ try {
28
+ const json = JSON.parse(value);
29
+ if (!v.is(JsonObjectSchema, json)) {
30
+ throw new Error('Invalid JSON: must be an object');
31
+ }
32
+ const entries = Object.entries(json).map(([columnId, filter]) => {
33
+ const column = v.safeParse(ColumnFilterSchema, filter);
34
+ if (!column.success) {
35
+ throw new Error(`Invalid JSON: filter for column ${columnId} is not a valid filter object`);
36
+ }
37
+ return [columnId, column.output];
38
+ });
39
+ return Object.fromEntries(entries);
40
+ }
41
+ catch (error) {
42
+ throw new Error(`JSON parsing failed: ${toError(error).message}`);
43
+ }
44
+ }
5
45
  export class QueryStringSerializer {
6
46
  format = 'querystring';
7
- serialize(filterState) {
8
- const tempConfig = {
9
- gridApi: null,
10
- ...DEFAULT_CONFIG
11
- };
12
- const tempUrl = generateUrl('http://example.com', filterState, tempConfig);
13
- const urlObj = new URL(tempUrl);
14
- return urlObj.search.slice(1);
47
+ serialize(filterState, config) {
48
+ return serializeFilters(filterState, innerConfig(config)).toString();
15
49
  }
16
- deserialize(value) {
17
- const tempUrl = `http://example.com?${value}`;
18
- const tempConfig = {
19
- gridApi: null,
20
- ...DEFAULT_CONFIG
21
- };
22
- return parseUrlFilters(tempUrl, tempConfig);
50
+ deserialize(value, config) {
51
+ return parseIndividualParams(new URLSearchParams(value), innerConfig(config));
23
52
  }
24
53
  }
54
+ function innerConfig(config) {
55
+ const outer = resolveOptions(config);
56
+ return {
57
+ ...DEFAULT_CONFIG,
58
+ maxValueLength: outer.maxValueLength,
59
+ onParseError: error => reportIssue(outer, new InvalidSerializationError('querystring', error))
60
+ };
61
+ }
25
62
  export class JsonSerializer {
26
63
  format = 'json';
27
- serialize(filterState) {
28
- return JSON.stringify(filterState);
64
+ serialize(filterState, config) {
65
+ return JSON.stringify(dropOverLengthTextValues(filterState, config, 'json'));
29
66
  }
30
- deserialize(value) {
31
- try {
32
- const parsed = JSON.parse(value);
33
- if (typeof parsed !== 'object' || parsed === null) {
34
- throw new Error('Invalid JSON: must be an object');
35
- }
36
- for (const [columnId, filter] of Object.entries(parsed)) {
37
- if (typeof columnId !== 'string') {
38
- throw new Error('Invalid JSON: column IDs must be strings');
39
- }
40
- if (!isValidColumnFilter(filter)) {
41
- throw new Error(`Invalid JSON: filter for column ${columnId} is not a valid filter object`);
42
- }
43
- }
44
- return parsed;
45
- }
46
- catch (error) {
47
- throw new Error(`JSON parsing failed: ${error.message}`);
48
- }
67
+ deserialize(value, config) {
68
+ return dropOverLengthTextValues(parseAndValidateJson(value), config, 'json');
49
69
  }
50
70
  }
51
71
  export class Base64Serializer {
52
72
  format = 'base64';
53
- jsonSerializer = new JsonSerializer();
54
- serialize(filterState) {
55
- const jsonString = this.jsonSerializer.serialize(filterState);
56
- return btoa(jsonString);
73
+ serialize(filterState, config) {
74
+ const filtered = dropOverLengthTextValues(filterState, config, 'base64');
75
+ return btoa(escapeNonAscii(JSON.stringify(filtered)));
57
76
  }
58
- deserialize(value) {
77
+ deserialize(value, config) {
59
78
  try {
60
79
  const decoded = atob(value);
61
- return this.jsonSerializer.deserialize(decoded);
80
+ return dropOverLengthTextValues(parseAndValidateJson(decoded), config, 'base64');
62
81
  }
63
82
  catch (error) {
64
- throw new Error(`Base64 decoding failed: ${error.message}`);
83
+ rethrowIfThrown(error);
84
+ throw new Error(`Base64 decoding failed: ${toError(error).message}`);
65
85
  }
66
86
  }
67
87
  }
88
+ function escapeNonAscii(json) {
89
+ return json.replace(/[\u0080-\uffff]/g, char => `\\u${char.charCodeAt(0).toString(16).padStart(4, '0')}`);
90
+ }
68
91
  //# sourceMappingURL=formats.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"formats.js","sourceRoot":"","sources":["../../../src/core/serialization/formats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAO5C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAMtD,MAAM,OAAO,qBAAqB;IACvB,MAAM,GAAwB,aAAa,CAAA;IAEpD,SAAS,CAAC,WAAwB;QAEhC,MAAM,UAAU,GAAmB;YACjC,OAAO,EAAE,IAAW;YACpB,GAAG,cAAc;SAClB,CAAA;QAGD,MAAM,OAAO,GAAG,WAAW,CAAC,oBAAoB,EAAE,WAAW,EAAE,UAAU,CAAC,CAAA;QAC1E,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;QAG/B,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC/B,CAAC;IAED,WAAW,CAAC,KAAa;QAEvB,MAAM,OAAO,GAAG,sBAAsB,KAAK,EAAE,CAAA;QAG7C,MAAM,UAAU,GAAmB;YACjC,OAAO,EAAE,IAAW;YACpB,GAAG,cAAc;SAClB,CAAA;QAED,OAAO,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;IAC7C,CAAC;CACF;AAMD,MAAM,OAAO,cAAc;IAChB,MAAM,GAAwB,MAAM,CAAA;IAE7C,SAAS,CAAC,WAAwB;QAChC,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACpC,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YAGhC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBAClD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;YACpD,CAAC;YAGD,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBACjC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;gBAC7D,CAAC;gBAED,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;oBACjC,MAAM,IAAI,KAAK,CACb,mCAAmC,QAAQ,+BAA+B,CAC3E,CAAA;gBACH,CAAC;YACH,CAAC;YAED,OAAO,MAAqB,CAAA;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,wBAAyB,KAAe,CAAC,OAAO,EAAE,CAAC,CAAA;QACrE,CAAC;IACH,CAAC;CACF;AAMD,MAAM,OAAO,gBAAgB;IAClB,MAAM,GAAwB,QAAQ,CAAA;IACvC,cAAc,GAAG,IAAI,cAAc,EAAE,CAAA;IAE7C,SAAS,CAAC,WAAwB;QAChC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QAC7D,OAAO,IAAI,CAAC,UAAU,CAAC,CAAA;IACzB,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;YAC3B,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,2BAA4B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAA;QACxE,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"formats.js","sourceRoot":"","sources":["../../../src/core/serialization/formats.ts"],"names":[],"mappings":"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"}
@@ -1,31 +1,33 @@
1
- import type { FilterState, SerializationFormat, FormatSerializer, GroupedSerializationResult, InternalConfig } from '../types.js';
1
+ import type { FilterState, SerializationFormat, FormatSerializer, GroupedSerializationResult, GroupedDetectionResult, AGGridUrlSyncConfig } 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 - Internal configuration
5
+ * @param config - Options (no grid needed). An option that is left out gets
6
+ * its default.
6
7
  * @returns Grouped serialization result with parameter name and value
7
8
  */
8
- export declare function serializeGrouped(filterState: FilterState, config: InternalConfig): GroupedSerializationResult;
9
+ export declare function serializeGrouped(filterState: FilterState, config?: AGGridUrlSyncConfig): GroupedSerializationResult;
9
10
  /**
10
11
  * Deserialize grouped filter state from URL parameter value
11
12
  * @param value - The serialized value from URL parameter
12
13
  * @param format - The serialization format to use
13
- * @param config - Internal configuration for error handling
14
+ * @param config - Options for validation and error handling (no grid
15
+ * needed). An option that is left out gets its default.
14
16
  * @returns Deserialized filter state
15
17
  */
16
- export declare function deserializeGrouped(value: string, format: SerializationFormat, config: InternalConfig): FilterState;
18
+ export declare function deserializeGrouped(value: string, format: SerializationFormat, config?: AGGridUrlSyncConfig): FilterState;
17
19
  /**
18
20
  * Detect if a URL contains grouped serialization parameters
21
+ *
22
+ * @deprecated parseUrlFilters no longer uses this. It reads only
23
+ * `config.groupedParam` and decodes it with `config.format`, because a guessed
24
+ * format takes any non-empty value as grouped filters (#210). This function
25
+ * will be removed in 0.6.0.
19
26
  * @param url - URL to analyze
20
27
  * @param possibleParams - Array of possible grouped parameter names to check
21
28
  * @returns Detection result with format and value if found
22
29
  */
23
- export declare function detectGroupedSerialization(url: string, possibleParams: string[]): {
24
- isGrouped: boolean;
25
- paramName?: string;
26
- format?: SerializationFormat;
27
- value?: string;
28
- };
30
+ export declare function detectGroupedSerialization(url: string, possibleParams: string[]): GroupedDetectionResult;
29
31
  /**
30
32
  * Get all available serialization formats
31
33
  */
@@ -1,42 +1,51 @@
1
+ import * as v from 'valibot';
1
2
  import { InvalidSerializationError } from '../types.js';
2
3
  import { QueryStringSerializer, JsonSerializer, Base64Serializer } from './formats.js';
4
+ import { JsonObjectSchema } from '../schemas.js';
5
+ import { toError } from '../to-error.js';
6
+ import { resolveOptions } from '../options.js';
7
+ import { reportIssue, rethrowIfThrown } from '../issues.js';
3
8
  const FORMAT_SERIALIZERS = {
4
9
  querystring: new QueryStringSerializer(),
5
10
  json: new JsonSerializer(),
6
11
  base64: new Base64Serializer()
7
12
  };
8
- export function serializeGrouped(filterState, config) {
13
+ export function serializeGrouped(filterState, config = {}) {
14
+ const options = resolveOptions(config);
9
15
  try {
10
- const serializer = FORMAT_SERIALIZERS[config.format];
16
+ const serializer = FORMAT_SERIALIZERS[options.format];
11
17
  if (!serializer) {
12
- throw new Error(`Unknown serialization format: ${config.format}`);
18
+ throw new Error(`Unknown serialization format: ${options.format}`);
13
19
  }
14
- const value = serializer.serialize(filterState);
20
+ const value = serializer.serialize(filterState, options);
15
21
  return {
16
- paramName: config.groupedParam,
22
+ paramName: options.groupedParam,
17
23
  value
18
24
  };
19
25
  }
20
26
  catch (error) {
21
- const serializationError = new InvalidSerializationError(config.format, error);
22
- config.onParseError(serializationError);
27
+ rethrowIfThrown(error);
28
+ const serializationError = new InvalidSerializationError(options.format, toError(error));
29
+ reportIssue(options, serializationError);
23
30
  return {
24
- paramName: config.groupedParam,
31
+ paramName: options.groupedParam,
25
32
  value: ''
26
33
  };
27
34
  }
28
35
  }
29
- export function deserializeGrouped(value, format, config) {
36
+ export function deserializeGrouped(value, format, config = {}) {
37
+ const options = resolveOptions(config);
30
38
  try {
31
39
  const serializer = FORMAT_SERIALIZERS[format];
32
40
  if (!serializer) {
33
41
  throw new Error(`Unknown serialization format: ${format}`);
34
42
  }
35
- return serializer.deserialize(value);
43
+ return serializer.deserialize(value, options);
36
44
  }
37
45
  catch (error) {
38
- const serializationError = new InvalidSerializationError(format, error);
39
- config.onParseError(serializationError);
46
+ rethrowIfThrown(error);
47
+ const serializationError = new InvalidSerializationError(format, toError(error));
48
+ reportIssue(options, serializationError);
40
49
  return {};
41
50
  }
42
51
  }
@@ -59,8 +68,7 @@ export function detectGroupedSerialization(url, possibleParams) {
59
68
  }
60
69
  return { isGrouped: false };
61
70
  }
62
- catch (error) {
63
- console.error(`Error detecting grouped serialization: ${error}`);
71
+ catch {
64
72
  return { isGrouped: false };
65
73
  }
66
74
  }
@@ -89,15 +97,14 @@ function isBase64Format(value) {
89
97
  }
90
98
  function isJsonFormat(value) {
91
99
  try {
92
- const parsed = JSON.parse(value);
93
- return typeof parsed === 'object' && parsed !== null;
100
+ return v.is(JsonObjectSchema, JSON.parse(value));
94
101
  }
95
102
  catch {
96
103
  return false;
97
104
  }
98
105
  }
99
106
  export function getAvailableFormats() {
100
- return Object.keys(FORMAT_SERIALIZERS);
107
+ return Object.values(FORMAT_SERIALIZERS).map(serializer => serializer.format);
101
108
  }
102
109
  export function getFormatSerializer(format) {
103
110
  return FORMAT_SERIALIZERS[format] || null;
@@ -1 +1 @@
1
- {"version":3,"file":"grouped.js","sourceRoot":"","sources":["../../../src/core/serialization/grouped.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grouped.js","sourceRoot":"","sources":["../../../src/core/serialization/grouped.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * The caught value as an Error. A callee can throw any value, so a value that
3
+ * is not an Error is wrapped in one with its text as the message.
4
+ */
5
+ export declare function toError(cause: unknown): Error;
@@ -0,0 +1,4 @@
1
+ export function toError(cause) {
2
+ return cause instanceof Error ? cause : new Error(String(cause));
3
+ }
4
+ //# sourceMappingURL=to-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-error.js","sourceRoot":"","sources":["../../src/core/to-error.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;AAClE,CAAC"}