@searchspring/snap-url-manager 0.20.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.
Files changed (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +228 -0
  3. package/dist/cjs/Translators/Noop/NoopTranslator.d.ts +10 -0
  4. package/dist/cjs/Translators/Noop/NoopTranslator.d.ts.map +1 -0
  5. package/dist/cjs/Translators/Noop/NoopTranslator.js +25 -0
  6. package/dist/cjs/Translators/QueryString/QueryStringTranslator.d.ts +35 -0
  7. package/dist/cjs/Translators/QueryString/QueryStringTranslator.d.ts.map +1 -0
  8. package/dist/cjs/Translators/QueryString/QueryStringTranslator.js +267 -0
  9. package/dist/cjs/Translators/Url/UrlTranslator.d.ts +67 -0
  10. package/dist/cjs/Translators/Url/UrlTranslator.d.ts.map +1 -0
  11. package/dist/cjs/Translators/Url/UrlTranslator.js +466 -0
  12. package/dist/cjs/Translators/index.d.ts +4 -0
  13. package/dist/cjs/Translators/index.d.ts.map +1 -0
  14. package/dist/cjs/Translators/index.js +15 -0
  15. package/dist/cjs/UrlManager/UrlManager.d.ts +50 -0
  16. package/dist/cjs/UrlManager/UrlManager.d.ts.map +1 -0
  17. package/dist/cjs/UrlManager/UrlManager.js +301 -0
  18. package/dist/cjs/UrlManager/typecheck.d.ts +5 -0
  19. package/dist/cjs/UrlManager/typecheck.d.ts.map +1 -0
  20. package/dist/cjs/UrlManager/typecheck.js +75 -0
  21. package/dist/cjs/index.d.ts +5 -0
  22. package/dist/cjs/index.d.ts.map +1 -0
  23. package/dist/cjs/index.js +15 -0
  24. package/dist/cjs/linkers/index.d.ts +2 -0
  25. package/dist/cjs/linkers/index.d.ts.map +1 -0
  26. package/dist/cjs/linkers/index.js +13 -0
  27. package/dist/cjs/linkers/react/react.d.ts +8 -0
  28. package/dist/cjs/linkers/react/react.d.ts.map +1 -0
  29. package/dist/cjs/linkers/react/react.js +15 -0
  30. package/dist/cjs/types.d.ts +47 -0
  31. package/dist/cjs/types.d.ts.map +1 -0
  32. package/dist/cjs/types.js +13 -0
  33. package/dist/esm/Translators/Noop/NoopTranslator.d.ts +10 -0
  34. package/dist/esm/Translators/Noop/NoopTranslator.d.ts.map +1 -0
  35. package/dist/esm/Translators/Noop/NoopTranslator.js +20 -0
  36. package/dist/esm/Translators/QueryString/QueryStringTranslator.d.ts +35 -0
  37. package/dist/esm/Translators/QueryString/QueryStringTranslator.d.ts.map +1 -0
  38. package/dist/esm/Translators/QueryString/QueryStringTranslator.js +260 -0
  39. package/dist/esm/Translators/Url/UrlTranslator.d.ts +67 -0
  40. package/dist/esm/Translators/Url/UrlTranslator.d.ts.map +1 -0
  41. package/dist/esm/Translators/Url/UrlTranslator.js +448 -0
  42. package/dist/esm/Translators/index.d.ts +4 -0
  43. package/dist/esm/Translators/index.d.ts.map +1 -0
  44. package/dist/esm/Translators/index.js +3 -0
  45. package/dist/esm/UrlManager/UrlManager.d.ts +50 -0
  46. package/dist/esm/UrlManager/UrlManager.d.ts.map +1 -0
  47. package/dist/esm/UrlManager/UrlManager.js +256 -0
  48. package/dist/esm/UrlManager/typecheck.d.ts +5 -0
  49. package/dist/esm/UrlManager/typecheck.d.ts.map +1 -0
  50. package/dist/esm/UrlManager/typecheck.js +66 -0
  51. package/dist/esm/index.d.ts +5 -0
  52. package/dist/esm/index.d.ts.map +1 -0
  53. package/dist/esm/index.js +3 -0
  54. package/dist/esm/linkers/index.d.ts +2 -0
  55. package/dist/esm/linkers/index.d.ts.map +1 -0
  56. package/dist/esm/linkers/index.js +1 -0
  57. package/dist/esm/linkers/react/react.d.ts +8 -0
  58. package/dist/esm/linkers/react/react.d.ts.map +1 -0
  59. package/dist/esm/linkers/react/react.js +11 -0
  60. package/dist/esm/types.d.ts +47 -0
  61. package/dist/esm/types.d.ts.map +1 -0
  62. package/dist/esm/types.js +10 -0
  63. package/package.json +31 -0
@@ -0,0 +1,301 @@
1
+ "use strict";
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.UrlManager = void 0;
16
+ var seamless_immutable_1 = __importDefault(require("seamless-immutable"));
17
+ var WatcherPool = /** @class */ (function () {
18
+ function WatcherPool() {
19
+ this.callbacks = [];
20
+ // nothing to do here
21
+ }
22
+ WatcherPool.prototype.subscribe = function (cb) {
23
+ var _this = this;
24
+ this.callbacks.push(cb);
25
+ return function () { return (_this.callbacks = _this.callbacks.filter(function (_cb) { return _cb != cb; })); };
26
+ };
27
+ WatcherPool.prototype.notify = function () {
28
+ this.callbacks.forEach(function (cb) { return cb(); });
29
+ };
30
+ return WatcherPool;
31
+ }());
32
+ var UrlManager = /** @class */ (function () {
33
+ function UrlManager(translator, linker, globalState, localState, watcherPool, omissions, detached) {
34
+ var _this = this;
35
+ if (omissions === void 0) { omissions = []; }
36
+ this.linker = linker;
37
+ this.omissions = omissions;
38
+ this.detached = detached;
39
+ this.urlState = (0, seamless_immutable_1.default)({});
40
+ this.globalState = (0, seamless_immutable_1.default)({});
41
+ this.localState = (0, seamless_immutable_1.default)({});
42
+ this.mergedState = (0, seamless_immutable_1.default)({});
43
+ this.localState = (0, seamless_immutable_1.default)(localState || {});
44
+ this.globalState = (0, seamless_immutable_1.default)(globalState || {});
45
+ this.translator = translator;
46
+ if (watcherPool) {
47
+ this.watcherPool = watcherPool;
48
+ }
49
+ else {
50
+ this.watcherPool = new WatcherPool();
51
+ if (this.translator.bindExternalEvents instanceof Function) {
52
+ this.translator.bindExternalEvents(function () { return _this.watcherPool.notify(); });
53
+ }
54
+ }
55
+ this.subscribe(function () {
56
+ _this.refresh();
57
+ });
58
+ this.refresh();
59
+ }
60
+ UrlManager.prototype.without = function (obj, fullPath, values) {
61
+ // TODO: refactor - find way to remove updateNode function
62
+ var path = fullPath.slice(0, -1);
63
+ var lastKey = fullPath[fullPath.length - 1];
64
+ if (!path.length) {
65
+ if (!(values === null || values === void 0 ? void 0 : values.length)) {
66
+ return obj.without(lastKey);
67
+ }
68
+ return updateNode(lastKey, obj);
69
+ }
70
+ if (!obj.getIn(path)) {
71
+ return obj;
72
+ }
73
+ return obj.updateIn(path, function (node) {
74
+ return updateNode(lastKey, node);
75
+ });
76
+ function updateNode(key, node) {
77
+ if (node[lastKey] === undefined) {
78
+ return node;
79
+ }
80
+ if (node[lastKey] instanceof Array) {
81
+ if (!values || !values.length) {
82
+ return node.without(lastKey);
83
+ }
84
+ return node.set(lastKey, node[lastKey].filter(function (value) {
85
+ return !values.some(function (removeValue) {
86
+ return compareObjects(value, removeValue);
87
+ });
88
+ }));
89
+ }
90
+ if (typeof node == 'object') {
91
+ return node.without(lastKey);
92
+ }
93
+ return node;
94
+ }
95
+ };
96
+ UrlManager.prototype.getTranslatorUrl = function () {
97
+ if (this.detached) {
98
+ return this.detached.url;
99
+ }
100
+ return this.translator.getCurrentUrl();
101
+ };
102
+ UrlManager.prototype.refresh = function () {
103
+ var _this = this;
104
+ this.prevState = this.mergedState;
105
+ this.urlState = this.omissions.reduce(function (state, om) {
106
+ return _this.without(state, om.path, om.values);
107
+ }, (0, seamless_immutable_1.default)(this.translator.deserialize(this.getTranslatorUrl())));
108
+ this.mergedState = this.globalState.merge(this.urlState, {
109
+ deep: true,
110
+ merger: arrayConcatMerger,
111
+ });
112
+ this.mergedState = this.mergedState.merge(this.localState, {
113
+ deep: true,
114
+ merger: arrayConcatMerger,
115
+ });
116
+ };
117
+ Object.defineProperty(UrlManager.prototype, "state", {
118
+ get: function () {
119
+ return this.mergedState;
120
+ },
121
+ enumerable: false,
122
+ configurable: true
123
+ });
124
+ UrlManager.prototype.unpackPathAndState = function (stateOrPath, _state) {
125
+ var path = stateOrPath instanceof Array ? stateOrPath : typeof stateOrPath == 'string' ? stateOrPath.split('.') : [];
126
+ var state = !(stateOrPath instanceof Array) && typeof stateOrPath == 'object' ? stateOrPath : _state === undefined ? {} : _state;
127
+ return { path: path, state: state };
128
+ };
129
+ UrlManager.prototype.set = function () {
130
+ var args = [];
131
+ for (var _i = 0; _i < arguments.length; _i++) {
132
+ args[_i] = arguments[_i];
133
+ }
134
+ var _a = this.unpackPathAndState(args[0], args[1]), path = _a.path, state = _a.state;
135
+ var newState = path.length ? this.localState.setIn(path, removeArrayDuplicates(state)) : removeArrayDuplicates(state);
136
+ var omissions = removeArrayDuplicates(this.omissions.concat(path.length ? { path: path } : Object.keys(this.urlState).map(function (key) { return ({ path: [key] }); })));
137
+ return new UrlManager(this.translator, this.linker, this.globalState, newState, this.watcherPool, omissions, this.detached);
138
+ };
139
+ UrlManager.prototype.merge = function () {
140
+ var _this = this;
141
+ var args = [];
142
+ for (var _i = 0; _i < arguments.length; _i++) {
143
+ args[_i] = arguments[_i];
144
+ }
145
+ var _a = this.unpackPathAndState(args[0], args[1]), path = _a.path, state = _a.state;
146
+ var newState = path.length
147
+ ? this.localState.updateIn(path, function (oldState) {
148
+ if (oldState instanceof Array) {
149
+ var newValues = Array.isArray(state) ? state : [state];
150
+ return removeArrayDuplicates(oldState.concat(newValues));
151
+ }
152
+ else if (typeof oldState == 'object') {
153
+ if (Array.isArray(state)) {
154
+ return state.length ? removeArrayDuplicates([oldState].concat(state)) : oldState;
155
+ }
156
+ else {
157
+ return oldState.merge(state, { deep: true, merger: arrayConcatMerger });
158
+ }
159
+ }
160
+ else if (typeof oldState != 'undefined') {
161
+ // not an object or array
162
+ var newValues = (Array.isArray(state) ? state : [state]).filter(function (value) { return !compareObjects(value, oldState); });
163
+ return newValues.length ? removeArrayDuplicates([oldState].concat(newValues)) : oldState;
164
+ }
165
+ else if (typeof oldState == 'undefined') {
166
+ var urlState = _this.urlState.getIn(path);
167
+ if (urlState instanceof Array && !Array.isArray(state)) {
168
+ return [state];
169
+ }
170
+ }
171
+ return state;
172
+ })
173
+ : this.localState.merge(state, { deep: true, merger: arrayConcatMerger });
174
+ return new UrlManager(this.translator, this.linker, this.globalState, newState, this.watcherPool, this.omissions, this.detached);
175
+ };
176
+ UrlManager.prototype.remove = function (_path, values) {
177
+ var path = this.unpackPathAndState(_path, {}).path;
178
+ values = typeof values != 'undefined' ? (values instanceof Array ? values : [values]) : [];
179
+ var without = this.without(this.localState, path, values);
180
+ var omissions = removeArrayDuplicates(this.omissions.concat({ path: path, values: values }));
181
+ return new UrlManager(this.translator, this.linker, this.globalState, without, this.watcherPool, omissions, this.detached);
182
+ };
183
+ UrlManager.prototype.reset = function () {
184
+ return new UrlManager(this.translator, this.linker, this.globalState, {}, this.watcherPool, Object.keys(this.urlState).map(function (k) { return ({ path: [k] }); }), this.detached);
185
+ };
186
+ UrlManager.prototype.withConfig = function (config) {
187
+ if (config instanceof Function) {
188
+ config = config(this.translator.getConfig());
189
+ }
190
+ return new UrlManager(new (Object.getPrototypeOf(this.translator).constructor)(config), this.linker, this.globalState, this.localState, this.watcherPool, this.omissions, this.detached);
191
+ };
192
+ UrlManager.prototype.withGlobals = function (globals) {
193
+ return new UrlManager(this.translator, this.linker, globals, this.localState, this.watcherPool, this.omissions, this.detached);
194
+ };
195
+ UrlManager.prototype.getTranslatorConfig = function () {
196
+ return this.translator.getConfig();
197
+ };
198
+ Object.defineProperty(UrlManager.prototype, "href", {
199
+ get: function () {
200
+ return this.translator.serialize(this.state);
201
+ },
202
+ enumerable: false,
203
+ configurable: true
204
+ });
205
+ UrlManager.prototype.go = function (config) {
206
+ if (this.detached) {
207
+ this.detached.url = this.href;
208
+ }
209
+ else {
210
+ this.translator.go(this.href, config);
211
+ }
212
+ this.watcherPool.notify();
213
+ };
214
+ UrlManager.prototype.detach = function (reset) {
215
+ if (reset === void 0) { reset = false; }
216
+ return new UrlManager(this.translator, this.linker, this.globalState, this.localState, new WatcherPool(), this.omissions, {
217
+ url: reset ? '' : this.getTranslatorUrl(),
218
+ });
219
+ };
220
+ Object.defineProperty(UrlManager.prototype, "link", {
221
+ get: function () {
222
+ if (!this.linker) {
223
+ return {};
224
+ }
225
+ return this.linker(this);
226
+ },
227
+ enumerable: false,
228
+ configurable: true
229
+ });
230
+ UrlManager.prototype.subscribe = function (cb) {
231
+ var _this = this;
232
+ return this.watcherPool.subscribe(function () {
233
+ var prevState = _this.prevState;
234
+ var state = _this.mergedState;
235
+ cb(prevState, state);
236
+ });
237
+ };
238
+ return UrlManager;
239
+ }());
240
+ exports.UrlManager = UrlManager;
241
+ function removeArrayDuplicates(array) {
242
+ if (Array.isArray(array) && array.length) {
243
+ return array.reduce(function (accu, item) {
244
+ if (!accu.some(function (keep) { return compareObjects(keep, item); })) {
245
+ accu.push(item);
246
+ }
247
+ return accu;
248
+ }, [array[0]]);
249
+ }
250
+ return array;
251
+ }
252
+ function arrayConcatMerger(current, other) {
253
+ if (current instanceof Array && other instanceof Array) {
254
+ return removeArrayDuplicates(__spreadArray(__spreadArray([], current, true), other, true));
255
+ }
256
+ }
257
+ function compareObjects(obj1, obj2) {
258
+ if (!obj1 && !obj2) {
259
+ return true;
260
+ }
261
+ else if ((!obj1 && obj2) || (obj1 && !obj2)) {
262
+ return false;
263
+ }
264
+ var primitives = ['string', 'number', 'boolean', 'undefined'];
265
+ var typeA = typeof obj1;
266
+ var typeB = typeof obj2;
267
+ if (typeA !== typeB)
268
+ return false;
269
+ if (primitives.includes(typeA))
270
+ return obj1 === obj2;
271
+ var isArrayA = Array.isArray(obj1);
272
+ var isArrayB = Array.isArray(obj2);
273
+ if (isArrayA !== isArrayB) {
274
+ return false;
275
+ }
276
+ if (isArrayA) {
277
+ // compare arrays
278
+ if (obj1.length != obj2.length)
279
+ return false;
280
+ for (var i = 0; i < obj1.length; i++) {
281
+ if (!compareObjects(obj1[i], obj2[i])) {
282
+ return false;
283
+ }
284
+ }
285
+ }
286
+ else {
287
+ // compare object keys
288
+ if (!compareObjects(Object.keys(obj1).sort(), Object.keys(obj2).sort())) {
289
+ return false;
290
+ }
291
+ // compare object values
292
+ var result_1 = true;
293
+ Object.keys(obj1).forEach(function (key) {
294
+ if (!compareObjects(obj1[key], obj2[key])) {
295
+ result_1 = false;
296
+ }
297
+ });
298
+ return result_1;
299
+ }
300
+ return true;
301
+ }
@@ -0,0 +1,5 @@
1
+ export declare function checkStateRangeValue(value: Record<string, unknown>): boolean;
2
+ export declare function checkStateFilter(filters: Record<string, Array<unknown>>): boolean;
3
+ export declare function checkStateSort(sort: unknown): boolean;
4
+ export declare function checkState(state: Record<string, unknown>): boolean;
5
+ //# sourceMappingURL=typecheck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typecheck.d.ts","sourceRoot":"","sources":["../../../src/UrlManager/typecheck.ts"],"names":[],"mappings":"AAAA,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAmB5E;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,CA4BjF;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAcrD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAkBlE"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkState = exports.checkStateSort = exports.checkStateFilter = exports.checkStateRangeValue = void 0;
4
+ function checkStateRangeValue(value) {
5
+ if (typeof value != 'object') {
6
+ return false;
7
+ }
8
+ if (typeof value.low != 'number' && value.low !== undefined) {
9
+ return false;
10
+ }
11
+ if (typeof value.high != 'number' && value.high !== undefined) {
12
+ return false;
13
+ }
14
+ if (typeof value.low != 'number' && typeof value.high != 'number') {
15
+ // at least one must be defined
16
+ return true;
17
+ }
18
+ return true;
19
+ }
20
+ exports.checkStateRangeValue = checkStateRangeValue;
21
+ function checkStateFilter(filters) {
22
+ for (var _i = 0, _a = Object.keys(filters); _i < _a.length; _i++) {
23
+ var key = _a[_i];
24
+ if (typeof key !== 'string') {
25
+ return false;
26
+ }
27
+ var fieldFilter = filters[key];
28
+ var invalidFilter = fieldFilter.find(function (filter) {
29
+ if (typeof filter == 'string') {
30
+ return false;
31
+ }
32
+ if (typeof filter == 'number') {
33
+ return false;
34
+ }
35
+ if (typeof filter == 'object' && filter !== null) {
36
+ return !checkStateRangeValue(filter);
37
+ }
38
+ });
39
+ if (invalidFilter) {
40
+ return false;
41
+ }
42
+ }
43
+ return true;
44
+ }
45
+ exports.checkStateFilter = checkStateFilter;
46
+ function checkStateSort(sort) {
47
+ var sortsAsArray = sort instanceof Array ? sort : [sort];
48
+ for (var _i = 0, sortsAsArray_1 = sortsAsArray; _i < sortsAsArray_1.length; _i++) {
49
+ var sort_1 = sortsAsArray_1[_i];
50
+ if (typeof sort_1.field != 'string') {
51
+ return false;
52
+ }
53
+ if (typeof sort_1.direction != 'string') {
54
+ return false;
55
+ }
56
+ }
57
+ return true;
58
+ }
59
+ exports.checkStateSort = checkStateSort;
60
+ function checkState(state) {
61
+ if (typeof state.filter == 'object' && !checkStateFilter(state.filter)) {
62
+ return false;
63
+ }
64
+ if (typeof state.sort == 'object' && !checkStateSort(state.sort)) {
65
+ return false;
66
+ }
67
+ if (state.page !== undefined && typeof state.page != 'number') {
68
+ return false;
69
+ }
70
+ if (state.query !== undefined && typeof state.query != 'string') {
71
+ return false;
72
+ }
73
+ return true;
74
+ }
75
+ exports.checkState = checkState;
@@ -0,0 +1,5 @@
1
+ export * from './UrlManager/UrlManager';
2
+ export * from './Translators';
3
+ export * from './linkers';
4
+ export { UrlState, Translator } from './types';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./UrlManager/UrlManager"), exports);
14
+ __exportStar(require("./Translators"), exports);
15
+ __exportStar(require("./linkers"), exports);
@@ -0,0 +1,2 @@
1
+ export * from './react/react';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/linkers/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./react/react"), exports);
@@ -0,0 +1,8 @@
1
+ import { UrlManager } from '../../UrlManager/UrlManager';
2
+ export declare function reactLinker(urlManager: UrlManager): linkObject;
3
+ declare type linkObject = {
4
+ href: string;
5
+ onClick: (e: Event) => void;
6
+ };
7
+ export {};
8
+ //# sourceMappingURL=react.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../../../src/linkers/react/react.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD,wBAAgB,WAAW,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAU9D;AAED,aAAK,UAAU,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;CAC5B,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.reactLinker = void 0;
4
+ function reactLinker(urlManager) {
5
+ return {
6
+ href: urlManager.href,
7
+ onClick: function (ev) {
8
+ if (!(urlManager === null || urlManager === void 0 ? void 0 : urlManager.detached)) {
9
+ ev.preventDefault();
10
+ }
11
+ urlManager.go();
12
+ },
13
+ };
14
+ }
15
+ exports.reactLinker = reactLinker;
@@ -0,0 +1,47 @@
1
+ import type { ImmutableObject } from 'seamless-immutable';
2
+ export declare enum RangeValueProperties {
3
+ LOW = "low",
4
+ HIGH = "high"
5
+ }
6
+ export declare type UrlStateRangeValue = {
7
+ [RangeValueProperties.LOW]: number | null;
8
+ [RangeValueProperties.HIGH]: number | null;
9
+ };
10
+ export declare type UrlStateFilterType = string | number | boolean | UrlStateRangeValue;
11
+ export declare type UrlStateFilter = {
12
+ [fieldName: string]: UrlStateFilterType | Array<UrlStateFilterType>;
13
+ };
14
+ export declare type UrlStateSort = {
15
+ field: string;
16
+ direction: string;
17
+ };
18
+ export declare type UrlState = {
19
+ page?: number;
20
+ pageSize?: number;
21
+ query?: string;
22
+ rq?: string;
23
+ oq?: string;
24
+ filter?: UrlStateFilter;
25
+ sort?: UrlStateSort | Array<UrlStateSort>;
26
+ tag?: string;
27
+ [any: string]: unknown;
28
+ };
29
+ export interface Translator {
30
+ getCurrentUrl(): string;
31
+ getConfig(): Record<string, unknown>;
32
+ serialize(state: UrlState | ImmutableObject<UrlState>): string;
33
+ deserialize(url: string): UrlState;
34
+ bindExternalEvents?(update: () => void): void;
35
+ go(url: string, config?: {
36
+ [any: string]: unknown;
37
+ }): void;
38
+ }
39
+ export interface TranslatorConfig {
40
+ queryParameter?: string;
41
+ urlRoot?: string;
42
+ }
43
+ export declare enum ParamLocationType {
44
+ HASH = "hash",
45
+ QUERY = "query"
46
+ }
47
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,oBAAY,oBAAoB;IAC/B,GAAG,QAAQ;IACX,IAAI,SAAS;CACb;AAED,oBAAY,kBAAkB,GAAG;IAChC,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3C,CAAC;AAEF,oBAAY,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,kBAAkB,CAAC;AAEhF,oBAAY,cAAc,GAAG;IAC5B,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC;CACpE,CAAC;AAEF,oBAAY,YAAY,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,oBAAY,QAAQ,GAAG;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,IAAI,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,WAAW,UAAU;IAC1B,aAAa,IAAI,MAAM,CAAC;IACxB,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAErC,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;IAC/D,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC;IAEnC,kBAAkB,CAAC,CAAC,MAAM,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAE9C,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;CAC3D;AAED,MAAM,WAAW,gBAAgB;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,oBAAY,iBAAiB;IAC5B,IAAI,SAAS;IACb,KAAK,UAAU;CACf"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ParamLocationType = exports.RangeValueProperties = void 0;
4
+ var RangeValueProperties;
5
+ (function (RangeValueProperties) {
6
+ RangeValueProperties["LOW"] = "low";
7
+ RangeValueProperties["HIGH"] = "high";
8
+ })(RangeValueProperties = exports.RangeValueProperties || (exports.RangeValueProperties = {}));
9
+ var ParamLocationType;
10
+ (function (ParamLocationType) {
11
+ ParamLocationType["HASH"] = "hash";
12
+ ParamLocationType["QUERY"] = "query";
13
+ })(ParamLocationType = exports.ParamLocationType || (exports.ParamLocationType = {}));
@@ -0,0 +1,10 @@
1
+ import { UrlState, Translator } from '../../types';
2
+ export declare class NoopTranslator implements Translator {
3
+ private url;
4
+ getCurrentUrl(): string;
5
+ getConfig(): Record<string, unknown>;
6
+ serialize(state: UrlState): string;
7
+ deserialize(url: string): UrlState;
8
+ go(url: string): void;
9
+ }
10
+ //# sourceMappingURL=NoopTranslator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NoopTranslator.d.ts","sourceRoot":"","sources":["../../../../src/Translators/Noop/NoopTranslator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEnD,qBAAa,cAAe,YAAW,UAAU;IAChD,OAAO,CAAC,GAAG,CAAQ;IAEnB,aAAa,IAAI,MAAM;IAIvB,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIpC,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;IAIlC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;IAIlC,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAGrB"}
@@ -0,0 +1,20 @@
1
+ export class NoopTranslator {
2
+ constructor() {
3
+ this.url = '{}';
4
+ }
5
+ getCurrentUrl() {
6
+ return this.url;
7
+ }
8
+ getConfig() {
9
+ return {};
10
+ }
11
+ serialize(state) {
12
+ return JSON.stringify(state);
13
+ }
14
+ deserialize(url) {
15
+ return JSON.parse(url);
16
+ }
17
+ go(url) {
18
+ this.url = url;
19
+ }
20
+ }
@@ -0,0 +1,35 @@
1
+ import { UrlState, Translator, TranslatorConfig } from '../../types';
2
+ declare type QueryParameter = {
3
+ key: Array<string>;
4
+ value: string;
5
+ };
6
+ declare type Config = {
7
+ queryParameter: string;
8
+ urlRoot: string;
9
+ };
10
+ export declare class QueryStringTranslator implements Translator {
11
+ private config;
12
+ constructor(config?: TranslatorConfig);
13
+ bindExternalEvents(update: () => void): void;
14
+ getCurrentUrl(): string;
15
+ getConfig(): Config;
16
+ protected parseQueryString(queryString: string): Array<QueryParameter>;
17
+ protected generateQueryString(params: Array<QueryParameter>): string;
18
+ protected parsePage(queryParams: Array<QueryParameter>): UrlState;
19
+ protected parseSort(queryParams: Array<QueryParameter>): UrlState;
20
+ protected parseOther(queryParams: Array<QueryParameter>, except?: Array<string>): UrlState;
21
+ protected parseQuery(queryParams: Array<QueryParameter>): UrlState;
22
+ protected parseFilter(queryParams: Array<QueryParameter>): UrlState;
23
+ protected encodePage(state: UrlState): Array<QueryParameter>;
24
+ protected encodeOther(state: UrlState, except?: Array<string>): Array<QueryParameter>;
25
+ protected encodeQuery(state: UrlState): Array<QueryParameter>;
26
+ protected encodeSort(state: UrlState): Array<QueryParameter>;
27
+ protected encodeFilter(state: UrlState): Array<QueryParameter>;
28
+ protected queryParamsToState(queryParams: Array<QueryParameter>): UrlState;
29
+ protected stateToQueryParams(state?: UrlState): Array<QueryParameter>;
30
+ serialize(state: UrlState): string;
31
+ deserialize(url: string): UrlState;
32
+ go(url: string): void;
33
+ }
34
+ export {};
35
+ //# sourceMappingURL=QueryStringTranslator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryStringTranslator.d.ts","sourceRoot":"","sources":["../../../../src/Translators/QueryString/QueryStringTranslator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAA4C,MAAM,aAAa,CAAC;AAK/G,aAAK,cAAc,GAAG;IACrB,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,aAAK,MAAM,GAAG;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,qBAAa,qBAAsB,YAAW,UAAU;IACvD,OAAO,CAAC,MAAM,CAA0B;gBAE5B,MAAM,GAAE,gBAAqB;IAQzC,kBAAkB,CAAC,MAAM,EAAE,MAAM,IAAI,GAAG,IAAI;IAI5C,aAAa,IAAI,MAAM;IAIvB,SAAS,IAAI,MAAM;IAInB,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC;IAYtE,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,MAAM;IAepE,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,QAAQ;IAYjE,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,QAAQ;IAejE,SAAS,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC,EAAE,MAAM,GAAE,KAAK,CAAC,MAAM,CAAM,GAAG,QAAQ;IA4B9F,SAAS,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,QAAQ;IAQlE,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,QAAQ;IA2DnE,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC;IAQ5D,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAE,KAAK,CAAC,MAAM,CAAM,GAAG,KAAK,CAAC,cAAc,CAAC;IA6BzF,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC;IAa7D,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC;IAa5D,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC;IA0C9D,SAAS,CAAC,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,QAAQ;IAW1E,SAAS,CAAC,kBAAkB,CAAC,KAAK,GAAE,QAAa,GAAG,KAAK,CAAC,cAAc,CAAC;IAUzE,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;IAMlC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;IAQlC,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAGrB"}