@mountainpass/waycharter 1.0.75 → 2.0.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.
- package/CHANGELOG.md +18 -0
- package/README.md +1 -1
- package/dist/action.d.ts +8 -0
- package/dist/action.js +3 -0
- package/dist/action.js.map +1 -0
- package/dist/collections/build-first-link.d.ts +13 -0
- package/dist/collections/build-first-link.js +30 -19
- package/dist/collections/build-first-link.js.map +1 -1
- package/dist/collections/build-next-link.d.ts +12 -0
- package/dist/collections/build-next-link.js +26 -15
- package/dist/collections/build-next-link.js.map +1 -1
- package/dist/collections/build-previous-link.d.ts +13 -0
- package/dist/collections/build-previous-link.js +52 -27
- package/dist/collections/build-previous-link.js.map +1 -1
- package/dist/collections/built-item-links.d.ts +16 -0
- package/dist/collections/built-item-links.js +84 -118
- package/dist/collections/built-item-links.js.map +1 -1
- package/dist/handler.d.ts +21 -0
- package/dist/handler.js +3 -0
- package/dist/handler.js.map +1 -0
- package/dist/link.d.ts +17 -0
- package/dist/link.js +3 -0
- package/dist/link.js.map +1 -0
- package/dist/method.d.ts +28 -0
- package/dist/method.js +41 -0
- package/dist/method.js.map +1 -0
- package/dist/to-links.d.ts +9 -0
- package/dist/to-links.js +77 -0
- package/dist/to-links.js.map +1 -0
- package/dist/util/array-to-lower-case.d.ts +4 -0
- package/dist/util/array-to-lower-case.js +11 -0
- package/dist/util/array-to-lower-case.js.map +1 -0
- package/dist/util/check-page.d.ts +13 -0
- package/dist/util/check-page.js +62 -0
- package/dist/util/check-page.js.map +1 -0
- package/dist/util/convert-resource-links.d.ts +7 -0
- package/dist/util/convert-resource-links.js +73 -0
- package/dist/util/convert-resource-links.js.map +1 -0
- package/dist/util/extract-path-parameters.d.ts +6 -0
- package/dist/util/extract-path-parameters.js +13 -0
- package/dist/util/extract-path-parameters.js.map +1 -0
- package/dist/util/filter-headers.d.ts +9 -0
- package/dist/util/filter-headers.js +22 -0
- package/dist/util/filter-headers.js.map +1 -0
- package/dist/util/filter-parameters.d.ts +17 -0
- package/dist/util/filter-parameters.js +87 -0
- package/dist/util/filter-parameters.js.map +1 -0
- package/dist/util/method-can-have-body.d.ts +4 -0
- package/dist/util/method-can-have-body.js +11 -0
- package/dist/util/method-can-have-body.js.map +1 -0
- package/dist/util/method-is-cacheable.d.ts +4 -0
- package/dist/util/method-is-cacheable.js +11 -0
- package/dist/util/method-is-cacheable.js.map +1 -0
- package/dist/util/router-to-rfc6570.d.ts +4 -0
- package/dist/util/router-to-rfc6570.js +11 -0
- package/dist/util/router-to-rfc6570.js.map +1 -0
- package/dist/util/unique.d.ts +4 -0
- package/dist/util/unique.js +36 -0
- package/dist/util/unique.js.map +1 -0
- package/dist/waycharter.d.ts +73 -0
- package/dist/waycharter.js +475 -307
- package/dist/waycharter.js.map +1 -1
- package/package.json +18 -39
- package/dist/convert-resource-links.js +0 -44
- package/dist/convert-resource-links.js.map +0 -1
- package/dist/method-can-have-body.js +0 -14
- package/dist/method-can-have-body.js.map +0 -1
- package/dist/method-is-cacheable.js +0 -14
- package/dist/method-is-cacheable.js.map +0 -1
- package/dist/util/logger.js +0 -47
- package/dist/util/logger.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
|
+
## <small>2.0.1 (2022-08-03)</small>
|
|
2
|
+
|
|
3
|
+
* feat(collections): added support for non-numberic paging ([7ecead9](https://github.com/mountain-pass/waycharter/commit/7ecead9))
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
## 2.0.0 (2022-06-23)
|
|
8
|
+
|
|
9
|
+
* build(lint): fixing linting issues ([0053c11](https://github.com/mountain-pass/waycharter/commit/0053c11))
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## <small>1.0.76 (2021-12-16)</small>
|
|
14
|
+
|
|
15
|
+
* fix(collections): fixed first, next, prev links for templated collections ([3ed681a](https://github.com/mountain-pass/waycharter/commit/3ed681a))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
1
19
|
## <small>1.0.75 (2021-12-13)</small>
|
|
2
20
|
|
|
3
21
|
* feat(collections): item endpoints can now be used when registering collections ([15fa46d](https://github.com/mountain-pass/waycharter/commit/15fa46d))
|
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ This library is compatible with Node.js 10.x, 12.x and 14.x
|
|
|
13
13
|
|
|
14
14
|
<!-- [](https://www.codacy.com/gh/mountain-pass/waycharter/dashboard?utm_source=github.com&utm_medium=referral&utm_content=mountain-pass/waycharter&utm_campaign=Badge_Grade) [](https://www.codacy.com/gh/mountain-pass/waycharter/dashboard?utm_source=github.com&utm_medium=referral&utm_content=mountain-pass/waycharter&utm_campaign=Badge_Coverage) -->
|
|
15
15
|
|
|
16
|
-
[](https://snyk.io/test/github/mountain-pass/waycharter) [](https://snyk.io/test/github/mountain-pass/waycharter) [](https://snyk.io/test/npm/@mountainpass/waycharter/2.0.1)
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
[](https://conventionalcommits.org) [](https://github.com/prettier/prettier)
|
package/dist/action.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ActionMap, ItemActionMap } from './method';
|
|
2
|
+
import { BaseLink } from './link';
|
|
3
|
+
import { ActionHandler } from './handler';
|
|
4
|
+
export declare type Action<ActionResponseBody> = Omit<BaseLink, 'uri' | 'method'> & {
|
|
5
|
+
handler: ActionHandler<ActionResponseBody>;
|
|
6
|
+
} & Record<string, any>;
|
|
7
|
+
export declare type Actions<ActionResponseBody> = ActionMap<Array<Action<ActionResponseBody>>>;
|
|
8
|
+
export declare type ItemActions<CanonicalItemActionResponseBody> = ItemActionMap<Array<Action<CanonicalItemActionResponseBody>>>;
|
package/dist/action.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Query } from 'express-serve-static-core';
|
|
2
|
+
/**
|
|
3
|
+
* @param hasMore
|
|
4
|
+
* @param pageInt
|
|
5
|
+
* @param page
|
|
6
|
+
* @param firstPage
|
|
7
|
+
* @param collectionPath
|
|
8
|
+
* @param otherParameters
|
|
9
|
+
*/
|
|
10
|
+
export declare function buildFirstLink(collectionPath: string, otherParameters: Query): {
|
|
11
|
+
rel: string;
|
|
12
|
+
uri: string;
|
|
13
|
+
}[];
|
|
@@ -1,28 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.buildFirstLink = void 0;
|
|
8
15
|
/**
|
|
9
16
|
* @param hasMore
|
|
10
17
|
* @param pageInt
|
|
18
|
+
* @param page
|
|
19
|
+
* @param firstPage
|
|
11
20
|
* @param collectionPath
|
|
12
21
|
* @param otherParameters
|
|
13
22
|
*/
|
|
14
|
-
function buildFirstLink(
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
function buildFirstLink(collectionPath, otherParameters) {
|
|
24
|
+
return Object.keys(otherParameters).length > 0
|
|
25
|
+
? [
|
|
26
|
+
{
|
|
27
|
+
rel: 'first',
|
|
28
|
+
uri: "".concat(collectionPath, "?").concat(new URLSearchParams(__assign({}, otherParameters)).toString())
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
: [
|
|
32
|
+
{
|
|
33
|
+
rel: 'first',
|
|
34
|
+
uri: collectionPath
|
|
35
|
+
}
|
|
36
|
+
];
|
|
27
37
|
}
|
|
38
|
+
exports.buildFirstLink = buildFirstLink;
|
|
28
39
|
//# sourceMappingURL=build-first-link.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"build-first-link.js","sourceRoot":"","sources":["../../src/collections/build-first-link.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAEA;;;;;;;GAOG;AACH,SAAgB,cAAc,CAC5B,cAAsB,EACtB,eAAsB;IAEtB,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,GAAG,CAAC;QAC5C,CAAC,CAAC;YACA;gBACE,GAAG,EAAE,OAAO;gBACZ,GAAG,EAAE,UAAG,cAAc,cAAI,IAAI,eAAe,cACxC,eAAyC,EAC5C,CAAC,QAAQ,EAAE,CAAE;aAChB;SACF;QACD,CAAC,CAAC;YACA;gBACE,GAAG,EAAE,OAAO;gBACZ,GAAG,EAAE,cAAc;aACpB;SACF,CAAA;AACL,CAAC;AAnBD,wCAmBC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Query } from 'express-serve-static-core';
|
|
2
|
+
/**
|
|
3
|
+
* @param hasMore
|
|
4
|
+
* @param page
|
|
5
|
+
* @param nextPage
|
|
6
|
+
* @param collectionPath
|
|
7
|
+
* @param otherParameters
|
|
8
|
+
*/
|
|
9
|
+
export declare function buildNextLink(hasMore: boolean, page: number | string, nextPage: string | undefined, collectionPath: string, otherParameters: Query): {
|
|
10
|
+
rel: string;
|
|
11
|
+
uri: string;
|
|
12
|
+
}[];
|
|
@@ -1,23 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.buildNextLink = void 0;
|
|
8
15
|
/**
|
|
9
16
|
* @param hasMore
|
|
10
|
-
* @param
|
|
17
|
+
* @param page
|
|
18
|
+
* @param nextPage
|
|
11
19
|
* @param collectionPath
|
|
12
20
|
* @param otherParameters
|
|
13
21
|
*/
|
|
14
|
-
function buildNextLink(hasMore,
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
function buildNextLink(hasMore, page, nextPage, collectionPath, otherParameters) {
|
|
23
|
+
var nextPageNumber = (nextPage !== null && nextPage !== void 0 ? nextPage : typeof page === 'number') ? (page + 1).toFixed() : undefined;
|
|
24
|
+
return hasMore
|
|
25
|
+
? [
|
|
26
|
+
{
|
|
27
|
+
rel: 'next',
|
|
28
|
+
uri: "".concat(collectionPath, "?").concat(new URLSearchParams(__assign({ page: nextPageNumber }, otherParameters)).toString())
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
: [];
|
|
22
32
|
}
|
|
33
|
+
exports.buildNextLink = buildNextLink;
|
|
23
34
|
//# sourceMappingURL=build-next-link.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/collections/build-next-link.
|
|
1
|
+
{"version":3,"file":"build-next-link.js","sourceRoot":"","sources":["../../src/collections/build-next-link.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAEA;;;;;;GAMG;AACH,SAAgB,aAAa,CAC3B,OAAgB,EAChB,IAAqB,EACrB,QAA4B,EAC5B,cAAsB,EACtB,eAAsB;IAEtB,IAAM,cAAc,GAAG,CAAA,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,OAAO,IAAI,KAAK,QAAQ,EAAC,CAAC,CAAC,CAAE,IAAe,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IAC1G,OAAO,OAAO;QACZ,CAAC,CAAC;YACA;gBACE,GAAG,EAAE,MAAM;gBACX,GAAG,EAAE,UAAG,cAAc,cAAI,IAAI,eAAe,YAC3C,IAAI,EAAE,cAAc,IACjB,eAAe,EAClB,CAAC,QAAQ,EAAE,CAAE;aAChB;SACF;QACD,CAAC,CAAC,EAAE,CAAA;AACR,CAAC;AAnBD,sCAmBC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Query } from 'express-serve-static-core';
|
|
2
|
+
/**
|
|
3
|
+
* @param pageInt
|
|
4
|
+
* @param page
|
|
5
|
+
* @param prevPage
|
|
6
|
+
* @param previousPage
|
|
7
|
+
* @param collectionPath
|
|
8
|
+
* @param otherParameters
|
|
9
|
+
*/
|
|
10
|
+
export declare function buildPreviousLink(page: number | string, previousPage: string | undefined, collectionPath: string, otherParameters: Query): {
|
|
11
|
+
rel: string;
|
|
12
|
+
uri: string;
|
|
13
|
+
}[];
|
|
@@ -1,35 +1,60 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.buildPreviousLink = void 0;
|
|
8
15
|
/**
|
|
9
16
|
* @param pageInt
|
|
17
|
+
* @param page
|
|
18
|
+
* @param prevPage
|
|
19
|
+
* @param previousPage
|
|
10
20
|
* @param collectionPath
|
|
11
21
|
* @param otherParameters
|
|
12
22
|
*/
|
|
13
|
-
function buildPreviousLink(
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
23
|
+
function buildPreviousLink(page, previousPage, collectionPath, otherParameters) {
|
|
24
|
+
if (page === 1) {
|
|
25
|
+
return Object.keys(otherParameters).length > 0
|
|
26
|
+
? [
|
|
27
|
+
{
|
|
28
|
+
rel: 'prev',
|
|
29
|
+
uri: "".concat(collectionPath, "?").concat(new URLSearchParams(__assign({}, otherParameters)).toString())
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
: [
|
|
33
|
+
{
|
|
34
|
+
rel: 'prev',
|
|
35
|
+
uri: collectionPath
|
|
36
|
+
}
|
|
37
|
+
];
|
|
38
|
+
}
|
|
39
|
+
else if (typeof page === 'number' && page > 1) {
|
|
40
|
+
return [
|
|
41
|
+
{
|
|
42
|
+
rel: 'prev',
|
|
43
|
+
uri: "".concat(collectionPath, "?").concat(new URLSearchParams(__assign({ page: (page - 1).toFixed() }, otherParameters)).toString())
|
|
44
|
+
}
|
|
45
|
+
];
|
|
46
|
+
}
|
|
47
|
+
else if (previousPage !== undefined) {
|
|
48
|
+
return [
|
|
49
|
+
{
|
|
50
|
+
rel: 'prev',
|
|
51
|
+
uri: "".concat(collectionPath, "?").concat(new URLSearchParams(__assign({ page: previousPage }, otherParameters)).toString())
|
|
52
|
+
}
|
|
53
|
+
];
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
return [];
|
|
57
|
+
}
|
|
34
58
|
}
|
|
59
|
+
exports.buildPreviousLink = buildPreviousLink;
|
|
35
60
|
//# sourceMappingURL=build-previous-link.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"build-previous-link.js","sourceRoot":"","sources":["../../src/collections/build-previous-link.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAEA;;;;;;;GAOG;AACH,SAAgB,iBAAiB,CAC/B,IAAqB,EACrB,YAAgC,EAChC,cAAsB,EACtB,eAAsB;IAEtB,IAAI,IAAI,KAAK,CAAC,EAAE;QACd,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,GAAG,CAAC;YAC5C,CAAC,CAAC;gBACA;oBACE,GAAG,EAAE,MAAM;oBACX,GAAG,EAAE,UAAG,cAAc,cAAI,IAAI,eAAe,cACxC,eAAyC,EAC5C,CAAC,QAAQ,EAAE,CAAE;iBAChB;aACF;YACD,CAAC,CAAC;gBACA;oBACE,GAAG,EAAE,MAAM;oBACX,GAAG,EAAE,cAAc;iBACpB;aACF,CAAA;KACJ;SAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,CAAC,EAAE;QAC/C,OAAO;YACL;gBACE,GAAG,EAAE,MAAM;gBACX,GAAG,EAAE,UAAG,cAAc,cAAI,IAAI,eAAe,YAC3C,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,IACvB,eAAe,EAClB,CAAC,QAAQ,EAAE,CAAE;aAChB;SACF,CAAA;KACF;SAAM,IAAI,YAAY,KAAK,SAAS,EAAE;QACrC,OAAO;YACL;gBACE,GAAG,EAAE,MAAM;gBACX,GAAG,EAAE,UAAG,cAAc,cAAI,IAAI,eAAe,YAC3C,IAAI,EAAE,YAAY,IACf,eAAe,EAClB,CAAC,QAAQ,EAAE,CAAE;aAChB;SACF,CAAA;KACF;SAAM;QACL,OAAO,EAAE,CAAA;KACV;AACH,CAAC;AA7CD,8CA6CC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ItemActions } from '../action';
|
|
2
|
+
import { EndPoint } from '../waycharter';
|
|
3
|
+
import { Link } from '../link';
|
|
4
|
+
/**
|
|
5
|
+
* @param array
|
|
6
|
+
* @param arrayPointer
|
|
7
|
+
* @param collectionPointer
|
|
8
|
+
* @param itemEndPoint
|
|
9
|
+
* @param collectionPath
|
|
10
|
+
* @param selfUri
|
|
11
|
+
* @param itemActions
|
|
12
|
+
*/
|
|
13
|
+
export declare function builtItemLinks<ItemResponseBody, CanonicalItemActionResponseBody>(collectionPointer: string, itemEndPoint: EndPoint<ItemResponseBody, CanonicalItemActionResponseBody>, selfUri: string, itemActions: ItemActions<CanonicalItemActionResponseBody>): {
|
|
14
|
+
itemLinks: Link[];
|
|
15
|
+
canonicalLinks: Link[];
|
|
16
|
+
};
|
|
@@ -1,131 +1,97 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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.builtItemLinks = void 0;
|
|
51
|
+
var to_links_1 = require("../to-links");
|
|
12
52
|
/**
|
|
13
53
|
* @param array
|
|
14
54
|
* @param arrayPointer
|
|
15
|
-
* @param
|
|
55
|
+
* @param collectionPointer
|
|
56
|
+
* @param itemEndPoint
|
|
16
57
|
* @param collectionPath
|
|
17
58
|
* @param selfUri
|
|
18
|
-
* @param
|
|
59
|
+
* @param itemActions
|
|
19
60
|
*/
|
|
20
|
-
function builtItemLinks(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (array.length === 1) {
|
|
25
|
-
itemLinks.push({
|
|
26
|
-
rel: 'item',
|
|
27
|
-
uri: `${selfUri}#${arrayPointer || ''}/0`
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
if (itemType) {
|
|
31
|
-
canonicalLinks.push({
|
|
32
|
-
rel: 'canonical',
|
|
33
|
-
uri: itemType.path(array[0]),
|
|
34
|
-
anchor: `#${arrayPointer || ''}/0`
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
if (itemOperations) {
|
|
39
|
-
for (const relationship in itemOperations) {
|
|
40
|
-
const endpoint = itemOperations[relationship];
|
|
41
|
-
itemLinks.push(buildLink({
|
|
42
|
-
rel: relationship,
|
|
43
|
-
uri: endpoint.path(array[0]),
|
|
44
|
-
anchor: `#${arrayPointer || ''}/0`,
|
|
45
|
-
endpoint,
|
|
46
|
-
array,
|
|
47
|
-
arrayPointer
|
|
48
|
-
}));
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
} else if (array.length > 0) {
|
|
61
|
+
function builtItemLinks(collectionPointer, itemEndPoint, selfUri, itemActions) {
|
|
62
|
+
console.log({ collectionPointer: collectionPointer, itemEndPoint: itemEndPoint, selfUri: selfUri, itemActions: itemActions });
|
|
63
|
+
var itemLinks = [];
|
|
64
|
+
var canonicalLinks = [];
|
|
52
65
|
itemLinks.push({
|
|
53
|
-
|
|
54
|
-
|
|
66
|
+
rel: 'item',
|
|
67
|
+
uri: "#".concat(collectionPointer)
|
|
55
68
|
});
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
if (itemOperations) {
|
|
72
|
-
for (const relationship in itemOperations) {
|
|
73
|
-
const endpoint = itemOperations[relationship];
|
|
74
|
-
let pathTemplate = endpoint.pathTemplate + '';
|
|
75
|
-
const template = new _uriTemplateLite.URI.Template(endpoint.pathTemplate);
|
|
76
|
-
const parameters = template.match(endpoint.pathTemplate);
|
|
77
|
-
Object.keys(parameters).forEach(key => {
|
|
78
|
-
pathTemplate = pathTemplate.replace(parameters[key], `{this.${key}}`);
|
|
69
|
+
if (itemEndPoint) {
|
|
70
|
+
console.log({
|
|
71
|
+
linkTo: {
|
|
72
|
+
rel: 'canonical',
|
|
73
|
+
uri: itemEndPoint.pathTemplate,
|
|
74
|
+
anchor: "#".concat(collectionPointer)
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
canonicalLinks.push({
|
|
78
|
+
rel: 'canonical',
|
|
79
|
+
uri: itemEndPoint.pathTemplate,
|
|
80
|
+
anchor: "#".concat(collectionPointer)
|
|
79
81
|
});
|
|
80
|
-
itemLinks.push(buildLink({
|
|
81
|
-
rel: relationship,
|
|
82
|
-
uri: pathTemplate,
|
|
83
|
-
anchor: `#${arrayPointer || ''}/{[0..${array.length - 1}]}`,
|
|
84
|
-
endpoint,
|
|
85
|
-
array,
|
|
86
|
-
arrayPointer
|
|
87
|
-
}));
|
|
88
|
-
}
|
|
89
82
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
* @param root0.endpoint
|
|
103
|
-
* @param root0.array
|
|
104
|
-
* @param root0.arrayPointer
|
|
105
|
-
*/
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
function buildLink({
|
|
109
|
-
rel,
|
|
110
|
-
uri,
|
|
111
|
-
anchor,
|
|
112
|
-
endpoint,
|
|
113
|
-
array,
|
|
114
|
-
arrayPointer
|
|
115
|
-
}) {
|
|
116
|
-
return {
|
|
117
|
-
rel,
|
|
118
|
-
uri,
|
|
119
|
-
anchor,
|
|
120
|
-
...(endpoint.method && {
|
|
121
|
-
method: endpoint.method
|
|
122
|
-
}),
|
|
123
|
-
...((endpoint.parameters || endpoint.bodyParameters) && {
|
|
124
|
-
parameters: endpoint.parameters || endpoint.bodyParameters
|
|
125
|
-
}),
|
|
126
|
-
...((0, _methodCanHaveBody.methodCanHaveBody)(endpoint.method) && {
|
|
127
|
-
accept: ['application/x-www-form-urlencoded', 'application/json', 'multipart/form-data']
|
|
128
|
-
})
|
|
129
|
-
};
|
|
83
|
+
if (itemActions) {
|
|
84
|
+
itemLinks.push.apply(itemLinks, __spreadArray([], __read((0, to_links_1.toLinks)(itemActions, selfUri, function (action) {
|
|
85
|
+
var anchor = action.anchor, accept = action.accept, other = __rest(action, ["anchor", "accept"]);
|
|
86
|
+
return __assign(__assign({}, other), { anchor: "#".concat(collectionPointer), accept: accept || [
|
|
87
|
+
'application/json',
|
|
88
|
+
'application/x-www-form-urlencoded',
|
|
89
|
+
'multipart/form-data'
|
|
90
|
+
] // TODO: allow caller to specify accept
|
|
91
|
+
});
|
|
92
|
+
})), false));
|
|
93
|
+
}
|
|
94
|
+
return { itemLinks: itemLinks, canonicalLinks: canonicalLinks };
|
|
130
95
|
}
|
|
96
|
+
exports.builtItemLinks = builtItemLinks;
|
|
131
97
|
//# sourceMappingURL=built-item-links.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"built-item-links.js","sourceRoot":"","sources":["../../src/collections/built-item-links.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,wCAAqC;AAKrC;;;;;;;;GAQG;AACH,SAAgB,cAAc,CAC5B,iBAAyB,EACzB,YAAyE,EACzE,OAAe,EACf,WAAyD;IAIzD,OAAO,CAAC,GAAG,CAAC,EAAE,iBAAiB,mBAAA,EAAE,YAAY,cAAA,EAAE,OAAO,SAAA,EAAE,WAAW,aAAA,EAAE,CAAC,CAAA;IACtE,IAAM,SAAS,GAAG,EAAE,CAAA;IACpB,IAAM,cAAc,GAAG,EAAE,CAAA;IACzB,SAAS,CAAC,IAAI,CAAC;QACb,GAAG,EAAE,MAAM;QACX,GAAG,EAAE,WAAI,iBAAiB,CAAE;KAC7B,CAAC,CAAA;IACF,IAAI,YAAY,EAAE;QAChB,OAAO,CAAC,GAAG,CAAC;YACV,MAAM,EAAE;gBACN,GAAG,EAAE,WAAW;gBAChB,GAAG,EAAE,YAAY,CAAC,YAAY;gBAC9B,MAAM,EAAE,WAAI,iBAAiB,CAAE;aAChC;SACF,CAAC,CAAA;QACF,cAAc,CAAC,IAAI,CAAC;YAClB,GAAG,EAAE,WAAW;YAChB,GAAG,EAAE,YAAY,CAAC,YAAY;YAC9B,MAAM,EAAE,WAAI,iBAAiB,CAAE;SAChC,CAAC,CAAA;KACH;IACD,IAAI,WAAW,EAAE;QACf,SAAS,CAAC,IAAI,OAAd,SAAS,2BACJ,IAAA,kBAAO,EAAC,WAAW,EAAE,OAAO,EAAE,UAAA,MAAM;YAC7B,IAAA,MAAM,GAAuB,MAAM,OAA7B,EAAE,MAAM,GAAe,MAAM,OAArB,EAAK,KAAK,UAAK,MAAM,EAArC,oBAA4B,CAAF,CAAW;YAC3C,6BACK,KAAK,KACR,MAAM,EAAE,WAAI,iBAAiB,CAAE,EAC/B,MAAM,EAAE,MAAM,IAAI;oBAChB,kBAAkB;oBAClB,mCAAmC;oBACnC,qBAAqB;iBACtB,CAAC,uCAAuC;gBAC1C;QACH,CAAC,CAAC,WACH;KACF;IACD,OAAO,EAAE,SAAS,WAAA,EAAE,cAAc,gBAAA,EAAE,CAAA;AACtC,CAAC;AA9CD,wCA8CC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import express from 'express';
|
|
3
|
+
import { Query, ParamsDictionary } from 'express-serve-static-core';
|
|
4
|
+
import { IncomingHttpHeaders } from 'http';
|
|
5
|
+
export declare type HandlerParameters<ResponseBody> = {
|
|
6
|
+
pathParameters: ParamsDictionary;
|
|
7
|
+
queryParameters: Query;
|
|
8
|
+
requestHeaders: IncomingHttpHeaders;
|
|
9
|
+
request: express.Request;
|
|
10
|
+
response: express.Response<ResponseBody>;
|
|
11
|
+
next: express.NextFunction;
|
|
12
|
+
};
|
|
13
|
+
export declare type Handler<ResponseBody> = (parameters: HandlerParameters<ResponseBody>) => Promise<void> | void;
|
|
14
|
+
export declare type CollectionHandlerParameters<ResponseBody> = HandlerParameters<ResponseBody> & {
|
|
15
|
+
page: number | string;
|
|
16
|
+
};
|
|
17
|
+
export declare type CollectionHandler<ResponseBody> = (parameters: CollectionHandlerParameters<ResponseBody>) => Promise<void> | void;
|
|
18
|
+
export declare type ActionHandlerParameters<ResponseBody> = Omit<HandlerParameters<ResponseBody>, 'requestHeaders'> & {
|
|
19
|
+
bodyParameters: Record<string, unknown>;
|
|
20
|
+
};
|
|
21
|
+
export declare type ActionHandler<ResponseBody> = (parameters: ActionHandlerParameters<ResponseBody>) => Promise<void> | void;
|
package/dist/handler.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":""}
|
package/dist/link.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Method } from './method';
|
|
2
|
+
export declare type BaseLink = {
|
|
3
|
+
rel: string;
|
|
4
|
+
uri: string;
|
|
5
|
+
anchor?: string;
|
|
6
|
+
hreflang?: string;
|
|
7
|
+
media?: string;
|
|
8
|
+
title?: string;
|
|
9
|
+
'title*'?: string;
|
|
10
|
+
type?: string;
|
|
11
|
+
parameters?: Array<string> | {
|
|
12
|
+
[key: string]: {};
|
|
13
|
+
};
|
|
14
|
+
accept?: Array<string>;
|
|
15
|
+
method?: Method;
|
|
16
|
+
};
|
|
17
|
+
export declare type Link = BaseLink & Record<string, any>;
|