@mountainpass/waychaser 5.0.47 → 5.0.49
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 +1 -1
- package/dist/augment-options.js +20 -57
- package/dist/augment-options.js.map +1 -1
- package/dist/expand-operation.js +18 -53
- package/dist/expand-operation.js.map +1 -1
- package/dist/handlers/hal/de-curie.js +6 -25
- package/dist/handlers/hal/de-curie.js.map +1 -1
- package/dist/handlers/hal/hal-handler.js +16 -65
- package/dist/handlers/hal/hal-handler.js.map +1 -1
- package/dist/handlers/hal/map-hal-link-to-operation.js +5 -30
- package/dist/handlers/hal/map-hal-link-to-operation.js.map +1 -1
- package/dist/handlers/link-header/link-header-handler.js +20 -63
- package/dist/handlers/link-header/link-header-handler.js.map +1 -1
- package/dist/handlers/location-header/location-header-handler.js +4 -7
- package/dist/handlers/location-header/location-header-handler.js.map +1 -1
- package/dist/handlers/siren/map-siren-action-to-operation.js +12 -53
- package/dist/handlers/siren/map-siren-action-to-operation.js.map +1 -1
- package/dist/handlers/siren/map-siren-link-to-operation.js +4 -29
- package/dist/handlers/siren/map-siren-link-to-operation.js.map +1 -1
- package/dist/handlers/siren/siren-action-handler.js +7 -32
- package/dist/handlers/siren/siren-action-handler.js.map +1 -1
- package/dist/handlers/siren/siren-handler.js +10 -39
- package/dist/handlers/siren/siren-handler.js.map +1 -1
- package/dist/handlers/siren/siren-link-handler.js +8 -43
- package/dist/handlers/siren/siren-link-handler.js.map +1 -1
- package/dist/operation-array.d.ts +1 -0
- package/dist/operation-array.js +27 -70
- package/dist/operation-array.js.map +1 -1
- package/dist/operation.js +128 -272
- package/dist/operation.js.map +1 -1
- package/dist/src/augment-options.d.ts +30 -0
- package/dist/src/expand-operation.d.ts +5 -0
- package/dist/src/handlers/hal/de-curie.d.ts +9 -0
- package/dist/src/handlers/hal/hal-handler.d.ts +6 -0
- package/dist/src/handlers/hal/map-hal-link-to-operation.d.ts +7 -0
- package/dist/src/handlers/link-header/link-header-handler.d.ts +7 -0
- package/dist/src/handlers/location-header/location-header-handler.d.ts +5 -0
- package/dist/src/handlers/siren/map-siren-action-to-operation.d.ts +6 -0
- package/dist/src/handlers/siren/map-siren-link-to-operation.d.ts +13 -0
- package/dist/src/handlers/siren/siren-action-handler.d.ts +5 -0
- package/dist/src/handlers/siren/siren-handler.d.ts +6 -0
- package/dist/src/handlers/siren/siren-link-handler.d.ts +6 -0
- package/dist/src/operation-array.d.ts +13 -0
- package/dist/src/operation.d.ts +24 -0
- package/dist/src/util/media-types.d.ts +5 -0
- package/dist/src/util/method-can-have-body.d.ts +4 -0
- package/dist/src/util/parse-accept.d.ts +6 -0
- package/dist/src/util/parse-operations.d.ts +14 -0
- package/dist/src/util/preferred-content-type.d.ts +6 -0
- package/dist/src/util/uri-template-lite.d.ts +5 -0
- package/dist/src/waychaser.d.ts +131 -0
- package/dist/util/media-types.js +2 -4
- package/dist/util/media-types.js.map +1 -1
- package/dist/util/method-can-have-body.js +1 -4
- package/dist/util/method-can-have-body.js.map +1 -1
- package/dist/util/parse-accept.js +17 -42
- package/dist/util/parse-accept.js.map +1 -1
- package/dist/util/parse-operations.js +22 -78
- package/dist/util/parse-operations.js.map +1 -1
- package/dist/util/preferred-content-type.js +4 -7
- package/dist/util/preferred-content-type.js.map +1 -1
- package/dist/util/uri-template-lite.js +6 -42
- package/dist/util/uri-template-lite.js.map +1 -1
- package/dist/waychaser.es.js +475 -922
- package/dist/waychaser.es.min.js +1 -1
- package/dist/waychaser.js +212 -480
- package/dist/waychaser.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
package/dist/augment-options.js
CHANGED
|
@@ -1,69 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
14
|
-
var t = {};
|
|
15
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
16
|
-
t[p] = s[p];
|
|
17
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
18
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
19
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
20
|
-
t[p[i]] = s[p[i]];
|
|
21
|
-
}
|
|
22
|
-
return t;
|
|
23
|
-
};
|
|
24
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
25
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
26
|
-
if (!m) return o;
|
|
27
|
-
var i = m.call(o), r, ar = [], e;
|
|
28
|
-
try {
|
|
29
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
30
|
-
}
|
|
31
|
-
catch (error) { e = { error: error }; }
|
|
32
|
-
finally {
|
|
33
|
-
try {
|
|
34
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
35
|
-
}
|
|
36
|
-
finally { if (e) throw e.error; }
|
|
37
|
-
}
|
|
38
|
-
return ar;
|
|
39
|
-
};
|
|
40
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
41
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
42
|
-
if (ar || !(i in from)) {
|
|
43
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
44
|
-
ar[i] = from[i];
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
48
|
-
};
|
|
49
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
-
exports.augmentOptions = augmentOptions;
|
|
51
|
-
var waychaser_1 = require("./waychaser");
|
|
1
|
+
import { sortHandlers } from './waychaser';
|
|
52
2
|
/**
|
|
53
3
|
* @param baseOptions
|
|
54
4
|
* @param additionalOptions
|
|
55
5
|
*/
|
|
56
|
-
function augmentOptions(baseOptions, additionalOptions) {
|
|
57
|
-
|
|
58
|
-
|
|
6
|
+
export function augmentOptions(baseOptions, additionalOptions) {
|
|
7
|
+
const { handlers: baseHandlers, defaultHandlers: baseDefaultHandlers, headers: baseHeaders, contentParser: baseContentParser, ...baseOther } = baseOptions;
|
|
8
|
+
const { handlers: additionalHandlers, defaultHandlers: additionalDefaultHandlers, headers: additionalHeaders, contentParser: additionalContentParser, ...additionalOther } = additionalOptions || {};
|
|
59
9
|
// if additional has default, don't use base default
|
|
60
10
|
// if additional has handlers, don;'t use base handlers
|
|
61
11
|
// augment({ dh: [XXX] }, { h: [YYY] }) => { h: [], dh: [YYY, XXX] }
|
|
62
12
|
// augment({ dh: [XXX] }, { h: [YYY], dh: [] }) => { h: [], dh: [YYY] }
|
|
63
13
|
// augment({ dh: [YYY, XXX] }, { h: [ZZZ] }) => { h: [], dh: [ZZZ, YYY, XXX] }
|
|
64
14
|
// augment({ dh: [YYY, XXX] }, { h: [ZZZ], dh: [] }) => { h: [], dh: [ZZZ] }
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
15
|
+
const mergedHandlers = sortHandlers([
|
|
16
|
+
...(additionalHandlers || baseHandlers || []),
|
|
17
|
+
...(additionalDefaultHandlers || baseDefaultHandlers || [])
|
|
18
|
+
]);
|
|
19
|
+
const mergedContentParser = additionalContentParser ? (response) => additionalContentParser(response, baseContentParser) : baseContentParser;
|
|
20
|
+
return {
|
|
21
|
+
...baseOther,
|
|
22
|
+
...additionalOther,
|
|
23
|
+
defaultHandlers: mergedHandlers,
|
|
24
|
+
handlers: [],
|
|
25
|
+
headers: {
|
|
26
|
+
...baseHeaders,
|
|
27
|
+
...additionalHeaders
|
|
28
|
+
},
|
|
29
|
+
contentParser: mergedContentParser
|
|
30
|
+
};
|
|
68
31
|
}
|
|
69
32
|
//# sourceMappingURL=augment-options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"augment-options.js","sourceRoot":"","sources":["../src/augment-options.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"augment-options.js","sourceRoot":"","sources":["../src/augment-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,MAAM,aAAa,CAAA;AAE5D;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,WAA0C,EAC1C,iBAAgE;IAEhE,MAAM,EACJ,QAAQ,EAAE,YAAY,EACtB,eAAe,EAAE,mBAAmB,EACpC,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,iBAAiB,EAChC,GAAG,SAAS,EACb,GAAG,WAAW,CAAA;IACf,MAAM,EACJ,QAAQ,EAAE,kBAAkB,EAC5B,eAAe,EAAE,yBAAyB,EAC1C,OAAO,EAAE,iBAAiB,EAC1B,aAAa,EAAE,uBAAuB,EACtC,GAAG,eAAe,EACnB,GAAG,iBAAiB,IAAI,EAAE,CAAA;IAE3B,oDAAoD;IACpD,uDAAuD;IACvD,oEAAoE;IACpE,uEAAuE;IACvE,8EAA8E;IAC9E,4EAA4E;IAC5E,MAAM,cAAc,GAAG,YAAY,CAAC;QAClC,GAAG,CAAC,kBAAkB,IAAI,YAAY,IAAI,EAAE,CAAC;QAC7C,GAAG,CAAC,yBAAyB,IAAI,mBAAmB,IAAI,EAAE,CAAC;KAC5D,CAAC,CAAA;IAEF,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC,QAAkB,EAAE,EAAE,CAAC,uBAAuB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAA;IAEtJ,OAAO;QACL,GAAG,SAAS;QACZ,GAAG,eAAe;QAClB,eAAe,EAAE,cAAc;QAC/B,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE;YACP,GAAG,WAAW;YACd,GAAG,iBAAiB;SACrB;QACD,aAAa,EAAE,mBAAmB;KACnC,CAAA;AACH,CAAC"}
|
package/dist/expand-operation.js
CHANGED
|
@@ -1,70 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
var __values = (this && this.__values) || function(o) {
|
|
3
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
4
|
-
if (m) return m.call(o);
|
|
5
|
-
if (o && typeof o.length === "number") return {
|
|
6
|
-
next: function () {
|
|
7
|
-
if (o && i >= o.length) o = void 0;
|
|
8
|
-
return { value: o && o[i++], done: !o };
|
|
9
|
-
}
|
|
10
|
-
};
|
|
11
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
12
|
-
};
|
|
13
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.expandOperation = expandOperation;
|
|
15
|
-
var operation_1 = require("./operation");
|
|
1
|
+
import { Operation } from './operation';
|
|
16
2
|
/**
|
|
17
3
|
* @param operation
|
|
18
4
|
*/
|
|
19
|
-
function expandOperation(operation) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
var matches = originalUrl.match(rangeRegex);
|
|
5
|
+
export function expandOperation(operation) {
|
|
6
|
+
const expandedOperations = [];
|
|
7
|
+
const rangeRegex = /{\[(\d+)..(\d+)]}/;
|
|
8
|
+
const originalUrl = operation.uri.toString();
|
|
9
|
+
const matches = originalUrl.match(rangeRegex);
|
|
25
10
|
if (matches) {
|
|
26
|
-
for (
|
|
27
|
-
|
|
11
|
+
for (let index = Number.parseInt(matches[1]); index <= Number.parseInt(matches[2]); ++index) {
|
|
12
|
+
const newOp = new Operation(Object.assign(operation, {
|
|
28
13
|
uri: originalUrl.replace(rangeRegex, index.toFixed(0))
|
|
29
14
|
}));
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
var operation_2 = thisExpandedOperations_1_1.value;
|
|
34
|
-
expandedOperations.push(operation_2);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
38
|
-
finally {
|
|
39
|
-
try {
|
|
40
|
-
if (thisExpandedOperations_1_1 && !thisExpandedOperations_1_1.done && (_a = thisExpandedOperations_1.return)) _a.call(thisExpandedOperations_1);
|
|
41
|
-
}
|
|
42
|
-
finally { if (e_1) throw e_1.error; }
|
|
15
|
+
const thisExpandedOperations = expandOperation(newOp);
|
|
16
|
+
for (const operation of thisExpandedOperations) {
|
|
17
|
+
expandedOperations.push(operation);
|
|
43
18
|
}
|
|
44
19
|
}
|
|
45
20
|
}
|
|
46
21
|
else {
|
|
47
|
-
|
|
48
|
-
|
|
22
|
+
const originalAnchor = operation.anchor;
|
|
23
|
+
const anchorMatches = originalAnchor?.match(rangeRegex);
|
|
49
24
|
if (originalAnchor &&
|
|
50
25
|
anchorMatches) {
|
|
51
|
-
for (
|
|
52
|
-
|
|
26
|
+
for (let index = Number.parseInt(anchorMatches[1]); index <= Number.parseInt(anchorMatches[2]); ++index) {
|
|
27
|
+
const newOp = new Operation(Object.assign(operation, {
|
|
53
28
|
anchor: originalAnchor.replace(rangeRegex, index.toFixed(0))
|
|
54
29
|
}));
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
var operation_3 = thisExpandedOperations_2_1.value;
|
|
59
|
-
expandedOperations.push(operation_3);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
63
|
-
finally {
|
|
64
|
-
try {
|
|
65
|
-
if (thisExpandedOperations_2_1 && !thisExpandedOperations_2_1.done && (_b = thisExpandedOperations_2.return)) _b.call(thisExpandedOperations_2);
|
|
66
|
-
}
|
|
67
|
-
finally { if (e_2) throw e_2.error; }
|
|
30
|
+
const thisExpandedOperations = expandOperation(newOp);
|
|
31
|
+
for (const operation of thisExpandedOperations) {
|
|
32
|
+
expandedOperations.push(operation);
|
|
68
33
|
}
|
|
69
34
|
}
|
|
70
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expand-operation.js","sourceRoot":"","sources":["../src/expand-operation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"expand-operation.js","sourceRoot":"","sources":["../src/expand-operation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC;;GAEG;AACH,MAAM,UAAU,eAAe,CAAE,SAAoB;IACnD,MAAM,kBAAkB,GAAgB,EAAE,CAAA;IAC1C,MAAM,UAAU,GAAG,mBAAmB,CAAA;IACtC,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;IAC5C,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IAC7C,IAAI,OAAO,EAAE,CAAC;QACZ,KACE,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EACvC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EACpC,EAAE,KAAK,EACP,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,SAAS,CACzB,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;gBACvB,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aACvD,CAAC,CACH,CAAA;YACD,MAAM,sBAAsB,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;YACrD,KAAK,MAAM,SAAS,IAAI,sBAAsB,EAAE,CAAC;gBAC/C,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACpC,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAA;QACvC,MAAM,aAAa,GAAG,cAAc,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;QACvD,IAAI,cAAc;YAChB,aAAa,EAAE,CAAC;YAChB,KACE,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAC7C,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAC1C,EAAE,KAAK,EACP,CAAC;gBACD,MAAM,KAAK,GAAG,IAAI,SAAS,CACzB,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;oBACvB,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;iBAC7D,CAAC,CACH,CAAA;gBACD,MAAM,sBAAsB,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;gBACrD,KAAK,MAAM,SAAS,IAAI,sBAAsB,EAAE,CAAC;oBAC/C,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBACpC,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACpC,CAAC;IACH,CAAC;IACD,OAAO,kBAAkB,CAAA;AAC3B,CAAC"}
|
|
@@ -1,23 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
-
if (!m) return o;
|
|
5
|
-
var i = m.call(o), r, ar = [], e;
|
|
6
|
-
try {
|
|
7
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
-
}
|
|
9
|
-
catch (error) { e = { error: error }; }
|
|
10
|
-
finally {
|
|
11
|
-
try {
|
|
12
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
-
}
|
|
14
|
-
finally { if (e) throw e.error; }
|
|
15
|
-
}
|
|
16
|
-
return ar;
|
|
17
|
-
};
|
|
18
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.deCurie = deCurie;
|
|
20
|
-
var uri_template_lite_1 = require("../../util/uri-template-lite");
|
|
1
|
+
import { URI } from '../../util/uri-template-lite';
|
|
21
2
|
/**
|
|
22
3
|
* @param relationship
|
|
23
4
|
* @param curies
|
|
@@ -26,7 +7,7 @@ var uri_template_lite_1 = require("../../util/uri-template-lite");
|
|
|
26
7
|
* @param relationship
|
|
27
8
|
* @param curies
|
|
28
9
|
*/
|
|
29
|
-
function deCurie(relationship, curies) {
|
|
10
|
+
export function deCurie(relationship, curies) {
|
|
30
11
|
// we can either look in the rel for ':' and try to convert if it exists, but then we'll be trying to covert almost
|
|
31
12
|
// everything because none standard rels typically start with 'http:' or 'https:'.
|
|
32
13
|
// otherwise we can iterate over all the curies and try to replace. Seems inefficient.
|
|
@@ -34,11 +15,11 @@ function deCurie(relationship, curies) {
|
|
|
34
15
|
// ⚠️ NOTE TO SELF: never use 'http' or 'https' as a curie name or hilarity will not ensue 😬
|
|
35
16
|
// ⚠️ ALSO NOTE TO SELF: never use ':' in a curie name or hilarity will not ensue 😬
|
|
36
17
|
// I'm going to assume that if there are multiple ':' characters, then we ignore all but the first
|
|
37
|
-
|
|
18
|
+
const splitRelationship = relationship.split(/:(.+)/);
|
|
38
19
|
if (splitRelationship.length > 1) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
?
|
|
20
|
+
const [curieName, curieRemainder] = splitRelationship;
|
|
21
|
+
const rval = curies[curieName]
|
|
22
|
+
? URI.expand(curies[curieName], { rel: curieRemainder })
|
|
42
23
|
: relationship;
|
|
43
24
|
return rval;
|
|
44
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"de-curie.js","sourceRoot":"","sources":["../../../src/handlers/hal/de-curie.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"de-curie.js","sourceRoot":"","sources":["../../../src/handlers/hal/de-curie.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAA;AAElD;;;GAGG;AAEH;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAE,YAAY,EAAE,MAAM;IAC3C,mHAAmH;IACnH,kFAAkF;IAClF,sFAAsF;IACtF,+BAA+B;IAC/B,6FAA6F;IAC7F,oFAAoF;IACpF,kGAAkG;IAClG,MAAM,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACrD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,GAAG,iBAAiB,CAAA;QACrD,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;YAC5B,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC;YACxD,CAAC,CAAC,YAAY,CAAA;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;SAAM,CAAC;QACN,OAAO,YAAY,CAAA;IACrB,CAAC;AACH,CAAC"}
|
|
@@ -1,88 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
4
|
-
if (m) return m.call(o);
|
|
5
|
-
if (o && typeof o.length === "number") return {
|
|
6
|
-
next: function () {
|
|
7
|
-
if (o && i >= o.length) o = void 0;
|
|
8
|
-
return { value: o && o[i++], done: !o };
|
|
9
|
-
}
|
|
10
|
-
};
|
|
11
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
12
|
-
};
|
|
13
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.halHandler = halHandler;
|
|
18
|
-
var media_types_1 = __importDefault(require("../../util/media-types"));
|
|
19
|
-
var map_hal_link_to_operation_1 = require("./map-hal-link-to-operation");
|
|
1
|
+
import MediaTypes from '../../util/media-types';
|
|
2
|
+
import { mapHalLinkToOperation } from './map-hal-link-to-operation';
|
|
20
3
|
/**
|
|
21
4
|
* @param response
|
|
22
5
|
* @param content
|
|
23
6
|
*/
|
|
24
|
-
function halHandler(response, content) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
var contentType = (_d = response.headers.get('content-type')) === null || _d === void 0 ? void 0 : _d.split(';');
|
|
29
|
-
if ((contentType === null || contentType === void 0 ? void 0 : contentType[0]) === media_types_1.default.HAL &&
|
|
7
|
+
export function halHandler(response, content) {
|
|
8
|
+
const operations = [];
|
|
9
|
+
const contentType = response.headers.get('content-type')?.split(';');
|
|
10
|
+
if (contentType?.[0] === MediaTypes.HAL &&
|
|
30
11
|
content &&
|
|
31
12
|
typeof content === 'object' &&
|
|
32
13
|
'_links' in content) {
|
|
33
|
-
|
|
14
|
+
const body = content;
|
|
34
15
|
// if there are curies in the Hal Links, we need to load them first, so we can expand them wherever they are used
|
|
35
16
|
// we also want to convert them to a map, for easy lookup
|
|
36
|
-
|
|
17
|
+
const curies = {};
|
|
37
18
|
if (body._links.curies) {
|
|
38
19
|
if (Array.isArray(body._links.curies)) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
var curie = _f.value;
|
|
42
|
-
curies[curie.name] = curie.href;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
46
|
-
finally {
|
|
47
|
-
try {
|
|
48
|
-
if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
|
|
49
|
-
}
|
|
50
|
-
finally { if (e_1) throw e_1.error; }
|
|
20
|
+
for (const curie of body._links.curies) {
|
|
21
|
+
curies[curie.name] = curie.href;
|
|
51
22
|
}
|
|
52
23
|
}
|
|
53
24
|
else {
|
|
54
25
|
curies[body._links.curies.name] = body._links.curies.href;
|
|
55
26
|
}
|
|
56
27
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
try {
|
|
62
|
-
for (var _j = (e_3 = void 0, __values(body._links[key])), _k = _j.next(); !_k.done; _k = _j.next()) {
|
|
63
|
-
var link = _k.value;
|
|
64
|
-
operations.push((0, map_hal_link_to_operation_1.mapHalLinkToOperation)(key, link, curies));
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
68
|
-
finally {
|
|
69
|
-
try {
|
|
70
|
-
if (_k && !_k.done && (_c = _j.return)) _c.call(_j);
|
|
71
|
-
}
|
|
72
|
-
finally { if (e_3) throw e_3.error; }
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
operations.push((0, map_hal_link_to_operation_1.mapHalLinkToOperation)(key, body._links[key], curies));
|
|
28
|
+
for (const key of Object.keys(body._links).filter(relationship => relationship !== 'curies')) {
|
|
29
|
+
if (Array.isArray(body._links[key])) {
|
|
30
|
+
for (const link of body._links[key]) {
|
|
31
|
+
operations.push(mapHalLinkToOperation(key, link, curies));
|
|
77
32
|
}
|
|
78
33
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
finally {
|
|
82
|
-
try {
|
|
83
|
-
if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
|
|
34
|
+
else {
|
|
35
|
+
operations.push(mapHalLinkToOperation(key, body._links[key], curies));
|
|
84
36
|
}
|
|
85
|
-
finally { if (e_2) throw e_2.error; }
|
|
86
37
|
}
|
|
87
38
|
}
|
|
88
39
|
return operations;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hal-handler.js","sourceRoot":"","sources":["../../../src/handlers/hal/hal-handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hal-handler.js","sourceRoot":"","sources":["../../../src/handlers/hal/hal-handler.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAUnE;;;GAGG;AACH,MAAM,UAAU,UAAU,CACxB,QAAkB,EAClB,OAAiB;IAEjB,MAAM,UAAU,GAAqB,EAAE,CAAA;IACvC,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;IACpE,IACE,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,GAAG;QACnC,OAAO;QACP,OAAO,OAAO,KAAK,QAAQ;QAC3B,QAAQ,IAAI,OAAO,EACnB,CAAC;QACD,MAAM,IAAI,GAAG,OAOZ,CAAA;QAED,iHAAiH;QACjH,yDAAyD;QACzD,MAAM,MAAM,GAAG,EAAE,CAAA;QACjB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;oBACvC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA;gBACjC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAA;YAC3D,CAAC;QACH,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,KAAK,QAAQ,CAAC,EAAE,CAAC;YAC7F,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAmB,EAAE,CAAC;oBACtD,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;gBAC3D,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;YACvE,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC"}
|
|
@@ -1,39 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
14
|
-
var t = {};
|
|
15
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
16
|
-
t[p] = s[p];
|
|
17
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
18
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
19
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
20
|
-
t[p[i]] = s[p[i]];
|
|
21
|
-
}
|
|
22
|
-
return t;
|
|
23
|
-
};
|
|
24
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
-
exports.mapHalLinkToOperation = mapHalLinkToOperation;
|
|
26
|
-
var operation_1 = require("../../operation");
|
|
27
|
-
var de_curie_1 = require("./de-curie");
|
|
1
|
+
import { Operation } from '../../operation';
|
|
2
|
+
import { deCurie } from './de-curie';
|
|
28
3
|
/**
|
|
29
4
|
* @param relationship
|
|
30
5
|
* @param link
|
|
31
6
|
* @param curies
|
|
32
7
|
*/
|
|
33
|
-
function mapHalLinkToOperation(relationship, link, curies) {
|
|
8
|
+
export function mapHalLinkToOperation(relationship, link, curies) {
|
|
34
9
|
// we don't need to copy `templated` across, because when we invoke an operation, we always
|
|
35
10
|
// assume it's a template and expand it with the passed parameters
|
|
36
|
-
|
|
37
|
-
return new
|
|
11
|
+
const { href, templated: _templated, ...otherProperties } = link;
|
|
12
|
+
return new Operation({ rel: deCurie(relationship, curies), uri: href, ...otherProperties });
|
|
38
13
|
}
|
|
39
14
|
//# sourceMappingURL=map-hal-link-to-operation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-hal-link-to-operation.js","sourceRoot":"","sources":["../../../src/handlers/hal/map-hal-link-to-operation.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"map-hal-link-to-operation.js","sourceRoot":"","sources":["../../../src/handlers/hal/map-hal-link-to-operation.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,YAAY,EAAE,IAAI,EAAE,MAAM;IAC9D,2FAA2F;IAC3F,kEAAkE;IAClE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,GAAG,IAAI,CAAA;IAChE,OAAO,IAAI,SAAS,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,CAAA;AAC7F,CAAC"}
|
|
@@ -1,78 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
14
|
-
var t = {};
|
|
15
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
16
|
-
t[p] = s[p];
|
|
17
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
18
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
19
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
20
|
-
t[p[i]] = s[p[i]];
|
|
21
|
-
}
|
|
22
|
-
return t;
|
|
23
|
-
};
|
|
24
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
25
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
26
|
-
if (!m) return o;
|
|
27
|
-
var i = m.call(o), r, ar = [], e;
|
|
28
|
-
try {
|
|
29
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
30
|
-
}
|
|
31
|
-
catch (error) { e = { error: error }; }
|
|
32
|
-
finally {
|
|
33
|
-
try {
|
|
34
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
35
|
-
}
|
|
36
|
-
finally { if (e) throw e.error; }
|
|
37
|
-
}
|
|
38
|
-
return ar;
|
|
39
|
-
};
|
|
40
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
41
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
42
|
-
if (ar || !(i in from)) {
|
|
43
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
44
|
-
ar[i] = from[i];
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
48
|
-
};
|
|
49
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
50
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
51
|
-
};
|
|
52
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
|
-
exports.linkHeaderHandler = linkHeaderHandler;
|
|
54
|
-
var http_link_header_1 = __importDefault(require("http-link-header"));
|
|
55
|
-
var operation_1 = require("../../operation");
|
|
1
|
+
import LinkHeader from 'http-link-header';
|
|
2
|
+
import { Operation } from '../../operation';
|
|
56
3
|
/**
|
|
57
4
|
* @param response
|
|
58
5
|
* @param content
|
|
59
6
|
* @param stopper
|
|
60
7
|
*/
|
|
61
|
-
function linkHeaderHandler(response, _content, _stopper) {
|
|
62
|
-
return
|
|
8
|
+
export function linkHeaderHandler(response, _content, _stopper) {
|
|
9
|
+
return [
|
|
10
|
+
...parseHeader(response.headers.get('link')),
|
|
11
|
+
...parseHeader(response.headers.get('link-template'))
|
|
12
|
+
];
|
|
63
13
|
}
|
|
64
14
|
/**
|
|
65
15
|
* @param linkHeader
|
|
66
16
|
*/
|
|
67
17
|
function parseHeader(linkHeader) {
|
|
68
18
|
if (linkHeader) {
|
|
69
|
-
|
|
70
|
-
return links.refs.map(
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
? JSON.parse(parameters
|
|
19
|
+
const links = LinkHeader.parse(linkHeader);
|
|
20
|
+
return links.refs.map(reference => {
|
|
21
|
+
const { rel, uri, method, 'accept*': accept, 'params*': parameters, ...otherProperties } = reference;
|
|
22
|
+
const parsedParameters = parameters?.value
|
|
23
|
+
? JSON.parse(parameters?.value)
|
|
74
24
|
: undefined;
|
|
75
|
-
return new
|
|
25
|
+
return new Operation({
|
|
26
|
+
rel,
|
|
27
|
+
uri,
|
|
28
|
+
method,
|
|
29
|
+
parameters: parsedParameters,
|
|
30
|
+
accept: accept?.value,
|
|
31
|
+
...otherProperties
|
|
32
|
+
});
|
|
76
33
|
});
|
|
77
34
|
}
|
|
78
35
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link-header-handler.js","sourceRoot":"","sources":["../../../src/handlers/link-header/link-header-handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"link-header-handler.js","sourceRoot":"","sources":["../../../src/handlers/link-header/link-header-handler.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAkB,EAClB,QAAkB,EAClB,QAAqB;IAErB,OAAO;QACL,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5C,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;KACtD,CAAA;AACH,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,UAAyB;IAC5C,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QAC1C,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YAChC,MAAM,EACJ,GAAG,EACH,GAAG,EACH,MAAM,EACN,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,UAAU,EACrB,GAAG,eAAe,EACnB,GAAG,SAAS,CAAA;YACb,MAAM,gBAAgB,GAAG,UAAU,EAAE,KAAK;gBACxC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC;gBAC/B,CAAC,CAAC,SAAS,CAAA;YACb,OAAO,IAAI,SAAS,CAAC;gBACnB,GAAG;gBACH,GAAG;gBACH,MAAM;gBACN,UAAU,EAAE,gBAAgB;gBAC5B,MAAM,EAAE,MAAM,EAAE,KAAK;gBACrB,GAAG,eAAe;aACnB,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC"}
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.locationHeaderHandler = locationHeaderHandler;
|
|
4
|
-
var operation_1 = require("../../operation");
|
|
1
|
+
import { Operation } from '../../operation';
|
|
5
2
|
/**
|
|
6
3
|
* @param response
|
|
7
4
|
*/
|
|
8
|
-
function locationHeaderHandler(response) {
|
|
9
|
-
|
|
5
|
+
export function locationHeaderHandler(response) {
|
|
6
|
+
const locationHeader = response?.headers.get('location');
|
|
10
7
|
if (locationHeader) {
|
|
11
|
-
return [new
|
|
8
|
+
return [new Operation({ rel: 'related', uri: locationHeader })];
|
|
12
9
|
}
|
|
13
10
|
return [];
|
|
14
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"location-header-handler.js","sourceRoot":"","sources":["../../../src/handlers/location-header/location-header-handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"location-header-handler.js","sourceRoot":"","sources":["../../../src/handlers/location-header/location-header-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAkB;IAElB,MAAM,cAAc,GAAG,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACxD,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,CAAC,IAAI,SAAS,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC,CAAA;IACjE,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC"}
|