ag-grid-url-sync 0.1.1 → 0.2.2

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 (43) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +435 -52
  3. package/dist/{ag-grid-url-sync.js → core/ag-grid-url-sync.js} +4 -2
  4. package/dist/core/ag-grid-url-sync.js.map +1 -0
  5. package/dist/core/grid-integration.d.ts +14 -0
  6. package/dist/core/grid-integration.js +156 -0
  7. package/dist/core/grid-integration.js.map +1 -0
  8. package/dist/core/index.d.ts +6 -0
  9. package/dist/core/index.js +11 -0
  10. package/dist/core/index.js.map +1 -0
  11. package/dist/core/types.d.ts +107 -0
  12. package/dist/core/types.js +117 -0
  13. package/dist/core/types.js.map +1 -0
  14. package/dist/core/url-generator.d.ts +9 -0
  15. package/dist/core/url-generator.js +88 -0
  16. package/dist/core/url-generator.js.map +1 -0
  17. package/dist/core/url-parser.d.ts +9 -0
  18. package/dist/core/url-parser.js +164 -0
  19. package/dist/core/url-parser.js.map +1 -0
  20. package/dist/core/validation.d.ts +47 -0
  21. package/dist/core/validation.js +87 -0
  22. package/dist/core/validation.js.map +1 -0
  23. package/dist/index.d.ts +6 -3
  24. package/dist/index.js +11 -3
  25. package/dist/index.js.map +1 -1
  26. package/dist/react/index.d.ts +3 -0
  27. package/dist/react/index.js +2 -0
  28. package/dist/react/index.js.map +1 -0
  29. package/dist/react/types.d.ts +64 -0
  30. package/dist/react/types.js +2 -0
  31. package/dist/react/types.js.map +1 -0
  32. package/dist/react/use-ag-grid-url-sync.d.ts +10 -0
  33. package/dist/react/use-ag-grid-url-sync.js +215 -0
  34. package/dist/react/use-ag-grid-url-sync.js.map +1 -0
  35. package/package.json +97 -8
  36. package/dist/ag-grid-url-sync.js.map +0 -1
  37. package/dist/types.d.ts +0 -69
  38. package/dist/types.js +0 -31
  39. package/dist/types.js.map +0 -1
  40. package/dist/utils.d.ts +0 -36
  41. package/dist/utils.js +0 -188
  42. package/dist/utils.js.map +0 -1
  43. /package/dist/{ag-grid-url-sync.d.ts → core/ag-grid-url-sync.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-ag-grid-url-sync.js","sourceRoot":"","sources":["../../src/react/use-ag-grid-url-sync.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,72 @@
1
1
  {
2
2
  "name": "ag-grid-url-sync",
3
- "version": "0.1.1",
3
+ "version": "0.2.2",
4
4
  "description": "AG Grid URL Sync - Synchronize AG Grid text filters with URL parameters",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
7
+ "sideEffects": false,
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js",
12
+ "require": "./dist/index.js"
13
+ },
14
+ "./react": {
15
+ "types": "./dist/react/index.d.ts",
16
+ "import": "./dist/react/index.js",
17
+ "require": "./dist/react/index.js"
18
+ },
19
+ "./validation": {
20
+ "types": "./dist/core/validation.d.ts",
21
+ "import": "./dist/core/validation.js",
22
+ "require": "./dist/core/validation.js"
23
+ },
24
+ "./url-parser": {
25
+ "types": "./dist/core/url-parser.d.ts",
26
+ "import": "./dist/core/url-parser.js",
27
+ "require": "./dist/core/url-parser.js"
28
+ },
29
+ "./url-generator": {
30
+ "types": "./dist/core/url-generator.d.ts",
31
+ "import": "./dist/core/url-generator.js",
32
+ "require": "./dist/core/url-generator.js"
33
+ },
34
+ "./grid-integration": {
35
+ "types": "./dist/core/grid-integration.d.ts",
36
+ "import": "./dist/core/grid-integration.js",
37
+ "require": "./dist/core/grid-integration.js"
38
+ },
39
+ "./types": {
40
+ "types": "./dist/core/types.d.ts",
41
+ "import": "./dist/core/types.js",
42
+ "require": "./dist/core/types.js"
43
+ }
44
+ },
45
+ "typesVersions": {
46
+ "*": {
47
+ ".": [
48
+ "dist/index.d.ts"
49
+ ],
50
+ "react": [
51
+ "dist/react/index.d.ts"
52
+ ],
53
+ "validation": [
54
+ "dist/core/validation.d.ts"
55
+ ],
56
+ "url-parser": [
57
+ "dist/core/url-parser.d.ts"
58
+ ],
59
+ "url-generator": [
60
+ "dist/core/url-generator.d.ts"
61
+ ],
62
+ "grid-integration": [
63
+ "dist/core/grid-integration.d.ts"
64
+ ],
65
+ "types": [
66
+ "dist/core/types.d.ts"
67
+ ]
68
+ }
69
+ },
7
70
  "scripts": {
8
71
  "lint": "eslint .",
9
72
  "lint:fix": "eslint . --fix",
@@ -31,10 +94,11 @@
31
94
  "sync",
32
95
  "filter",
33
96
  "share",
34
- "typescript"
97
+ "typescript",
98
+ "react"
35
99
  ],
36
100
  "author": "NearForm",
37
- "license": "ISC",
101
+ "license": "MIT",
38
102
  "bugs": {
39
103
  "url": "https://github.com/nearform/ag-grid-url-state-sync/issues"
40
104
  },
@@ -47,9 +111,11 @@
47
111
  "@commitlint/cli": "^19.8.1",
48
112
  "@commitlint/config-conventional": "^19.8.1",
49
113
  "@eslint/js": "^9.29.0",
114
+ "@testing-library/react": "^16.3.0",
50
115
  "@types/jsdom": "^21.1.7",
116
+ "@types/react": "^18.0.0",
51
117
  "@vitest/coverage-v8": "^3.2.4",
52
- "ag-grid-community": "^33.3.2",
118
+ "ag-grid-community": "^34.0.0",
53
119
  "bundlesize": "^0.18.2",
54
120
  "eslint": "^9.29.0",
55
121
  "eslint-config-prettier": "^10.1.5",
@@ -59,12 +125,19 @@
59
125
  "jsdom": "^26.1.0",
60
126
  "lint-staged": "^16.1.2",
61
127
  "prettier": "^3.6.0",
128
+ "react": "^18.0.0",
62
129
  "rimraf": "^6.0.1",
63
130
  "typescript": "^5.8.3",
64
131
  "vitest": "^3.2.4"
65
132
  },
66
133
  "peerDependencies": {
67
- "ag-grid-community": ">=28.0.0"
134
+ "ag-grid-community": ">=28.0.0",
135
+ "react": ">=16.8.0"
136
+ },
137
+ "peerDependenciesMeta": {
138
+ "react": {
139
+ "optional": true
140
+ }
68
141
  },
69
142
  "lint-staged": {
70
143
  "*.{js,jsx,ts,tsx}": "eslint --cache --fix"
@@ -75,12 +148,28 @@
75
148
  "maxSize": "5KB"
76
149
  },
77
150
  {
78
- "path": "./dist/ag-grid-url-sync.js",
151
+ "path": "./dist/core/ag-grid-url-sync.js",
79
152
  "maxSize": "4KB"
80
153
  },
81
154
  {
82
- "path": "./dist/utils.js",
83
- "maxSize": "4KB"
155
+ "path": "./dist/core/validation.js",
156
+ "maxSize": "2KB"
157
+ },
158
+ {
159
+ "path": "./dist/core/url-parser.js",
160
+ "maxSize": "3KB"
161
+ },
162
+ {
163
+ "path": "./dist/core/url-generator.js",
164
+ "maxSize": "2KB"
165
+ },
166
+ {
167
+ "path": "./dist/core/grid-integration.js",
168
+ "maxSize": "2KB"
169
+ },
170
+ {
171
+ "path": "./dist/react/index.js",
172
+ "maxSize": "7KB"
84
173
  }
85
174
  ]
86
175
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"ag-grid-url-sync.js","sourceRoot":"","sources":["../src/ag-grid-url-sync.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EACL,eAAe,EACf,WAAW,EACX,cAAc,EACd,gBAAgB,EACjB,MAAM,YAAY,CAAA;AAEnB;;GAEG;AACH,MAAM,OAAO,aAAa;IAChB,MAAM,CAAgB;IAE9B;;;;OAIG;IACH,YAAY,OAAgB,EAAE,SAA8B,EAAE;QAC5D,IAAI,CAAC,MAAM,GAAG;YACZ,OAAO;YACP,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,cAAc,CAAC,WAAW;YAC7D,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,cAAc,CAAC,cAAc;YACtE,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;SAChD,CAAA;IACH,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,OAAgB;QAC1B,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC/C,MAAM,GAAG,GAAG,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAA;QAC3C,OAAO,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACnD,CAAC;IAED;;;OAGG;IACH,cAAc;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAC9B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;QAC3B,OAAO,MAAM,CAAC,MAAM,CAAA;IACtB,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,GAAY;QACvB,MAAM,UAAU,GAAG,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAA;QAC9C,MAAM,WAAW,GAAG,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAC5D,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;IAChC,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,WAAwB;QACnC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IAC5C,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;IACvB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,2DAA2D;IAC7D,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAgB,EAChB,MAA4B;IAE5B,OAAO,IAAI,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;AAC3C,CAAC"}
package/dist/types.d.ts DELETED
@@ -1,69 +0,0 @@
1
- import type { GridApi as AGGridApi } from 'ag-grid-community';
2
- /**
3
- * Configuration options for AG Grid URL Sync
4
- */
5
- export interface AGGridUrlSyncConfig {
6
- /**
7
- * Prefix for URL parameters. Default: 'f_'
8
- */
9
- paramPrefix?: string;
10
- /**
11
- * Maximum length for filter values. Default: 200
12
- */
13
- maxValueLength?: number;
14
- /**
15
- * Optional error handler for parsing errors
16
- */
17
- onParseError?: (error: Error) => void;
18
- }
19
- /**
20
- * Supported filter operations
21
- */
22
- export type FilterOperation = 'contains' | 'eq';
23
- /**
24
- * Filter state for a single column
25
- */
26
- export interface ColumnFilter {
27
- filterType: 'text';
28
- type: FilterOperation;
29
- filter: string;
30
- }
31
- /**
32
- * Complete filter state mapping
33
- */
34
- export interface FilterState {
35
- [columnId: string]: ColumnFilter;
36
- }
37
- /**
38
- * Internal configuration with defaults
39
- */
40
- export interface InternalConfig extends Required<AGGridUrlSyncConfig> {
41
- gridApi: AGGridApi;
42
- }
43
- /**
44
- * Error types for URL sync operations
45
- */
46
- export declare class URLSyncError extends Error {
47
- constructor(message: string);
48
- }
49
- export declare class InvalidFilterError extends URLSyncError {
50
- constructor(message: string);
51
- }
52
- export declare class InvalidURLError extends URLSyncError {
53
- constructor(message: string);
54
- }
55
- export type ParsedFilterParam = {
56
- columnName: string;
57
- operation: 'contains' | 'equals';
58
- value: string;
59
- action: 'apply' | 'remove';
60
- };
61
- export type GridApi = AGGridApi;
62
- export declare const OPERATION_MAP: {
63
- readonly contains: "contains";
64
- readonly eq: "equals";
65
- };
66
- export declare const REVERSE_OPERATION_MAP: {
67
- readonly contains: "contains";
68
- readonly equals: "eq";
69
- };
package/dist/types.js DELETED
@@ -1,31 +0,0 @@
1
- /**
2
- * Error types for URL sync operations
3
- */
4
- export class URLSyncError extends Error {
5
- constructor(message) {
6
- super(message);
7
- this.name = 'URLSyncError';
8
- }
9
- }
10
- export class InvalidFilterError extends URLSyncError {
11
- constructor(message) {
12
- super(message);
13
- this.name = 'InvalidFilterError';
14
- }
15
- }
16
- export class InvalidURLError extends URLSyncError {
17
- constructor(message) {
18
- super(message);
19
- this.name = 'InvalidURLError';
20
- }
21
- }
22
- // Internal operation mapping
23
- export const OPERATION_MAP = {
24
- contains: 'contains',
25
- eq: 'equals'
26
- };
27
- export const REVERSE_OPERATION_MAP = {
28
- contains: 'contains',
29
- equals: 'eq'
30
- };
31
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAkDA;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,cAAc,CAAA;IAC5B,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAClD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;IAClC,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAC/C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;IAC/B,CAAC;CACF;AAYD,6BAA6B;AAC7B,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,QAAQ,EAAE,UAAU;IACpB,EAAE,EAAE,QAAQ;CACJ,CAAA;AAEV,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,IAAI;CACJ,CAAA"}
package/dist/utils.d.ts DELETED
@@ -1,36 +0,0 @@
1
- import type { FilterState, ColumnFilter, InternalConfig } from './types.js';
2
- /**
3
- * Default configuration values
4
- */
5
- export declare const DEFAULT_CONFIG: {
6
- readonly paramPrefix: "f_";
7
- readonly maxValueLength: 200;
8
- };
9
- /**
10
- * Validates a filter value against configuration constraints
11
- */
12
- export declare function validateFilterValue(value: string, config: InternalConfig): string;
13
- /**
14
- * Parses a URL parameter into a column filter
15
- */
16
- export declare function parseFilterParam(param: string, value: string, expectedPrefix?: string): ColumnFilter;
17
- /**
18
- * Converts URL search params into a filter state object
19
- */
20
- export declare function parseUrlFilters(url: string, config: InternalConfig): FilterState;
21
- /**
22
- * Converts a filter state object into URL search parameters
23
- */
24
- export declare function serializeFilters(filterState: FilterState, config: InternalConfig): URLSearchParams;
25
- /**
26
- * Generates a URL with the current filter state
27
- */
28
- export declare function generateUrl(baseUrl: string, filterState: FilterState, config: InternalConfig): string;
29
- /**
30
- * Gets the current filter model from AG Grid
31
- */
32
- export declare function getFilterModel(config: InternalConfig): FilterState;
33
- /**
34
- * Applies a filter state to AG Grid
35
- */
36
- export declare function applyFilterModel(filterState: FilterState, config: InternalConfig): void;
package/dist/utils.js DELETED
@@ -1,188 +0,0 @@
1
- import { InvalidFilterError, InvalidURLError } from './types.js';
2
- /**
3
- * Default configuration values
4
- */
5
- export const DEFAULT_CONFIG = {
6
- paramPrefix: 'f_',
7
- maxValueLength: 200
8
- };
9
- /**
10
- * Operation mapping between URL parameters and AG Grid filter types
11
- */
12
- const OPERATION_MAP = {
13
- contains: 'contains',
14
- eq: 'eq'
15
- };
16
- /**
17
- * Validates a filter value against configuration constraints
18
- */
19
- export function validateFilterValue(value, config) {
20
- if (value.length > config.maxValueLength) {
21
- throw new InvalidFilterError(`Filter value exceeds maximum length of ${config.maxValueLength} characters`);
22
- }
23
- return value;
24
- }
25
- /**
26
- * Extracts column name and operation from a filter parameter
27
- */
28
- function extractColumnAndOperation(param, expectedPrefix) {
29
- const ensureTrailingUnderscore = (prefix) => prefix.endsWith('_') ? prefix : prefix + '_';
30
- const sanitizedPrefix = expectedPrefix
31
- ? ensureTrailingUnderscore(expectedPrefix)
32
- : ensureTrailingUnderscore(DEFAULT_CONFIG.paramPrefix);
33
- const prefixToCheck = sanitizedPrefix.slice(0, -1);
34
- if (!param.startsWith(prefixToCheck + '_')) {
35
- throw new InvalidFilterError(`Invalid filter prefix in parameter: ${param}`);
36
- }
37
- // Remove prefix and find the last underscore to separate column from operation
38
- const withoutPrefix = param.substring(prefixToCheck.length + 1);
39
- const lastUnderscoreIndex = withoutPrefix.lastIndexOf('_');
40
- if (lastUnderscoreIndex === -1) {
41
- throw new InvalidFilterError(`Invalid filter parameter format: ${param}`);
42
- }
43
- const column = withoutPrefix.substring(0, lastUnderscoreIndex);
44
- const operation = withoutPrefix.substring(lastUnderscoreIndex + 1);
45
- if (!column.trim()) {
46
- throw new InvalidFilterError(`Empty column name in parameter: ${param}`);
47
- }
48
- return { column, operation };
49
- }
50
- /**
51
- * Parses a URL parameter into a column filter
52
- */
53
- export function parseFilterParam(param, value, expectedPrefix) {
54
- const { operation } = extractColumnAndOperation(param, expectedPrefix);
55
- const filterOp = OPERATION_MAP[operation];
56
- if (!filterOp) {
57
- throw new InvalidFilterError(`Unsupported filter operation: ${operation}`);
58
- }
59
- return {
60
- filterType: 'text',
61
- type: filterOp,
62
- filter: value || ''
63
- };
64
- }
65
- /**
66
- * Converts URL search params into a filter state object
67
- */
68
- export function parseUrlFilters(url, config) {
69
- try {
70
- const urlObj = new URL(url);
71
- const filterState = {};
72
- for (const [param, value] of urlObj.searchParams.entries()) {
73
- if (!param.startsWith(config.paramPrefix))
74
- continue;
75
- try {
76
- // Extract column name and parse the filter parameter
77
- const { column: columnName } = extractColumnAndOperation(param, config.paramPrefix);
78
- const filterParam = parseFilterParam(param, value, config.paramPrefix);
79
- const validatedValue = validateFilterValue(value, config);
80
- filterState[columnName] = {
81
- ...filterParam,
82
- filter: validatedValue
83
- };
84
- }
85
- catch (err) {
86
- if (config.onParseError) {
87
- config.onParseError(err);
88
- }
89
- // Skip invalid filters but continue processing
90
- continue;
91
- }
92
- }
93
- return filterState;
94
- }
95
- catch (err) {
96
- throw new InvalidURLError(`Failed to parse URL: ${err.message}`);
97
- }
98
- }
99
- /**
100
- * Converts a filter state object into URL search parameters
101
- */
102
- export function serializeFilters(filterState, config) {
103
- const params = new URLSearchParams();
104
- for (const [column, filter] of Object.entries(filterState)) {
105
- if (filter.filterType !== 'text')
106
- continue;
107
- const operation = filter.type === 'contains' ? 'contains' : 'eq';
108
- const paramName = `${config.paramPrefix}${column}_${operation}`;
109
- const value = validateFilterValue(filter.filter, config);
110
- // URLSearchParams already handles encoding, so don't double-encode
111
- params.append(paramName, value);
112
- }
113
- return params;
114
- }
115
- /**
116
- * Generates a URL with the current filter state
117
- */
118
- export function generateUrl(baseUrl, filterState, config) {
119
- const url = new URL(baseUrl);
120
- const filterParams = serializeFilters(filterState, config);
121
- // Preserve existing non-filter parameters
122
- for (const [key, value] of url.searchParams.entries()) {
123
- if (!key.startsWith(config.paramPrefix)) {
124
- filterParams.append(key, value);
125
- }
126
- }
127
- url.search = filterParams.toString();
128
- return url.toString();
129
- }
130
- /**
131
- * Gets the current filter model from AG Grid
132
- */
133
- export function getFilterModel(config) {
134
- try {
135
- const model = config.gridApi.getFilterModel();
136
- const filterState = {};
137
- if (!model || typeof model !== 'object') {
138
- return filterState;
139
- }
140
- for (const [column, filter] of Object.entries(model)) {
141
- if (!filter || typeof filter !== 'object')
142
- continue;
143
- const { filterType, type, filter: value } = filter;
144
- if (filterType !== 'text' || !value)
145
- continue;
146
- if (type === 'contains' || type === 'equals') {
147
- filterState[column] = {
148
- filterType: 'text',
149
- type: type === 'equals' ? 'eq' : 'contains',
150
- filter: value
151
- };
152
- }
153
- }
154
- return filterState;
155
- }
156
- catch (error) {
157
- if (config.onParseError) {
158
- config.onParseError(error);
159
- }
160
- return {};
161
- }
162
- }
163
- /**
164
- * Applies a filter state to AG Grid
165
- */
166
- export function applyFilterModel(filterState, config) {
167
- try {
168
- const model = {};
169
- for (const [column, filter] of Object.entries(filterState)) {
170
- if (filter &&
171
- typeof filter === 'object' &&
172
- filter.filterType === 'text') {
173
- model[column] = {
174
- filterType: filter.filterType,
175
- type: filter.type === 'eq' ? 'equals' : filter.type,
176
- filter: filter.filter
177
- };
178
- }
179
- }
180
- config.gridApi.setFilterModel(model);
181
- }
182
- catch (error) {
183
- if (config.onParseError) {
184
- config.onParseError(error);
185
- }
186
- }
187
- }
188
- //# sourceMappingURL=utils.js.map
package/dist/utils.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}