@smartlyio/oats-fetch-adapter 1.0.0 → 6.3.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.
- package/README.md +12 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.js +48 -35
- package/dist/index.js.map +1 -1
- package/dist/src/assert.d.ts +1 -0
- package/dist/src/assert.js +8 -0
- package/dist/src/assert.js.map +1 -0
- package/index.ts +55 -41
- package/package.json +19 -22
- package/src/assert.ts +3 -0
- package/tsconfig.test.json +4 -0
- package/renovate.json +0 -41
package/README.md
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# fetch client adapter for smartlyio/oats
|
|
2
|
+
|
|
3
|
+
See [smartlyio/oats](https://github.com/smartlyio/oats)
|
|
4
|
+
|
|
5
|
+
This adapter provides two ways to bind the generated client definitions
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
import * as adapter from '@smartlyio/oats-fetch-adapter';
|
|
9
|
+
|
|
10
|
+
adapter.create()(definitions);
|
|
11
|
+
```
|
|
12
|
+
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.create = void 0;
|
|
4
4
|
const runtime = require("@smartlyio/oats-runtime");
|
|
5
|
-
const
|
|
5
|
+
const assert_1 = require("./src/assert");
|
|
6
6
|
const FormData = require("form-data");
|
|
7
7
|
function toRequestData(data) {
|
|
8
8
|
if (data == null) {
|
|
9
9
|
return data;
|
|
10
10
|
}
|
|
11
|
+
if (data.contentType === 'text/plain') {
|
|
12
|
+
return data.value;
|
|
13
|
+
}
|
|
11
14
|
if (data.contentType === 'application/json') {
|
|
12
|
-
return
|
|
15
|
+
return JSON.stringify(data.value);
|
|
13
16
|
}
|
|
14
17
|
if (['application/x-www-form-urlencoded', 'multipart/form-data'].indexOf(data.contentType) >= 0) {
|
|
15
18
|
const form = new FormData();
|
|
@@ -24,38 +27,8 @@ function toRequestData(data) {
|
|
|
24
27
|
});
|
|
25
28
|
return form;
|
|
26
29
|
}
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
function axiosToJson(data) {
|
|
30
|
-
if (data instanceof runtime.valueClass.ValueClass) {
|
|
31
|
-
return runtime.valueClass.toJSON(data);
|
|
32
|
-
}
|
|
33
|
-
return data;
|
|
30
|
+
(0, assert_1.fail)('unknown content type for client ' + data.contentType);
|
|
34
31
|
}
|
|
35
|
-
const bind = async (arg) => {
|
|
36
|
-
if (arg.servers.length !== 1) {
|
|
37
|
-
return assert.fail('cannot decide which server to use from ' + arg.servers.join(', '));
|
|
38
|
-
}
|
|
39
|
-
const server = arg.servers[0];
|
|
40
|
-
const params = axiosToJson(arg.query);
|
|
41
|
-
const data = toRequestData(arg.body);
|
|
42
|
-
const url = new URL(server + arg.path);
|
|
43
|
-
Object.entries(params).forEach(([key, value]) => url.searchParams.append(key, `${value}`));
|
|
44
|
-
const response = await fetch(new Request(url.toString(), {
|
|
45
|
-
method: arg.method,
|
|
46
|
-
headers: arg.headers,
|
|
47
|
-
body: data
|
|
48
|
-
}));
|
|
49
|
-
const contentType = getContentType(response);
|
|
50
|
-
return {
|
|
51
|
-
status: response.status,
|
|
52
|
-
value: {
|
|
53
|
-
contentType,
|
|
54
|
-
value: await getResponseData(contentType, response)
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
};
|
|
58
|
-
exports.bind = bind;
|
|
59
32
|
function getContentType(response) {
|
|
60
33
|
const type = response.headers.get('content-type');
|
|
61
34
|
if (!type) {
|
|
@@ -75,6 +48,46 @@ function getResponseData(contentType, response) {
|
|
|
75
48
|
if (response.status === 204) {
|
|
76
49
|
return '';
|
|
77
50
|
}
|
|
78
|
-
|
|
51
|
+
if (contentType.includes('application/json')) {
|
|
52
|
+
return response.json();
|
|
53
|
+
}
|
|
54
|
+
return response.text();
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* @returns oats runtime client adapter.
|
|
58
|
+
*/
|
|
59
|
+
function create() {
|
|
60
|
+
return async (arg) => {
|
|
61
|
+
if (arg.servers.length !== 1) {
|
|
62
|
+
return (0, assert_1.fail)('cannot decide which server to use from ' + arg.servers.join(', '));
|
|
63
|
+
}
|
|
64
|
+
const server = arg.servers[0];
|
|
65
|
+
const data = toRequestData(arg.body);
|
|
66
|
+
const url = new URL(server + arg.path);
|
|
67
|
+
const requestContentType = arg.body?.contentType;
|
|
68
|
+
Object.entries(arg.query ?? {})
|
|
69
|
+
.filter(([, value]) => !!value)
|
|
70
|
+
.forEach(([key, value]) => url.searchParams.append(key, `${value}`));
|
|
71
|
+
const response = await fetch(new Request(url.toString(), {
|
|
72
|
+
method: arg.method,
|
|
73
|
+
headers: {
|
|
74
|
+
...(requestContentType ? { 'content-type': requestContentType } : {}),
|
|
75
|
+
...arg.headers
|
|
76
|
+
},
|
|
77
|
+
body: data
|
|
78
|
+
}));
|
|
79
|
+
const contentType = getContentType(response);
|
|
80
|
+
const headers = {};
|
|
81
|
+
response.headers.forEach((value, key) => (headers[key] = value));
|
|
82
|
+
return {
|
|
83
|
+
status: response.status,
|
|
84
|
+
value: {
|
|
85
|
+
contentType,
|
|
86
|
+
value: await getResponseData(contentType, response)
|
|
87
|
+
},
|
|
88
|
+
headers
|
|
89
|
+
};
|
|
90
|
+
};
|
|
79
91
|
}
|
|
92
|
+
exports.create = create;
|
|
80
93
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,mDAAmD;AACnD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function fail(msg: string): never;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assert.js","sourceRoot":"","sources":["../../src/assert.ts"],"names":[],"mappings":";;;AAAA,SAAgB,IAAI,CAAC,GAAW;IAC9B,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC;AAFD,oBAEC"}
|
package/index.ts
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import * as runtime from '@smartlyio/oats-runtime';
|
|
2
|
-
import
|
|
2
|
+
import { fail } from './src/assert';
|
|
3
3
|
import * as FormData from 'form-data';
|
|
4
4
|
|
|
5
5
|
function toRequestData(data: runtime.server.RequestBody<any> | undefined) {
|
|
6
6
|
if (data == null) {
|
|
7
7
|
return data;
|
|
8
8
|
}
|
|
9
|
+
if (data.contentType === 'text/plain') {
|
|
10
|
+
return data.value;
|
|
11
|
+
}
|
|
9
12
|
if (data.contentType === 'application/json') {
|
|
10
|
-
return
|
|
13
|
+
return JSON.stringify(data.value);
|
|
11
14
|
}
|
|
12
15
|
if (['application/x-www-form-urlencoded', 'multipart/form-data'].indexOf(data.contentType) >= 0) {
|
|
13
16
|
const form = new FormData();
|
|
@@ -21,46 +24,9 @@ function toRequestData(data: runtime.server.RequestBody<any> | undefined) {
|
|
|
21
24
|
});
|
|
22
25
|
return form;
|
|
23
26
|
}
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
function axiosToJson(data: any) {
|
|
28
|
-
if (data instanceof runtime.valueClass.ValueClass) {
|
|
29
|
-
return runtime.valueClass.toJSON(data);
|
|
30
|
-
}
|
|
31
|
-
return data;
|
|
27
|
+
fail('unknown content type for client ' + data.contentType);
|
|
32
28
|
}
|
|
33
29
|
|
|
34
|
-
export const bind: runtime.client.ClientAdapter = async (
|
|
35
|
-
arg: runtime.server.EndpointArg<any, any, any, any>
|
|
36
|
-
): Promise<any> => {
|
|
37
|
-
if (arg.servers.length !== 1) {
|
|
38
|
-
return assert.fail('cannot decide which server to use from ' + arg.servers.join(', '));
|
|
39
|
-
}
|
|
40
|
-
const server = arg.servers[0];
|
|
41
|
-
const params = axiosToJson(arg.query);
|
|
42
|
-
const data = toRequestData(arg.body);
|
|
43
|
-
const url = new URL(server + arg.path);
|
|
44
|
-
|
|
45
|
-
Object.entries(params).forEach(([key, value]) => url.searchParams.append(key, `${value}`));
|
|
46
|
-
|
|
47
|
-
const response = await fetch(
|
|
48
|
-
new Request(url.toString(), {
|
|
49
|
-
method: arg.method,
|
|
50
|
-
headers: arg.headers,
|
|
51
|
-
body: data
|
|
52
|
-
})
|
|
53
|
-
);
|
|
54
|
-
const contentType = getContentType(response);
|
|
55
|
-
return {
|
|
56
|
-
status: response.status,
|
|
57
|
-
value: {
|
|
58
|
-
contentType,
|
|
59
|
-
value: await getResponseData(contentType, response)
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
};
|
|
63
|
-
|
|
64
30
|
function getContentType(response: Response) {
|
|
65
31
|
const type = response.headers.get('content-type');
|
|
66
32
|
if (!type) {
|
|
@@ -81,5 +47,53 @@ function getResponseData(contentType: string, response: Response) {
|
|
|
81
47
|
if (response.status === 204) {
|
|
82
48
|
return '';
|
|
83
49
|
}
|
|
84
|
-
|
|
50
|
+
if (contentType.includes('application/json')) {
|
|
51
|
+
return response.json();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return response.text();
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* @returns oats runtime client adapter.
|
|
59
|
+
*/
|
|
60
|
+
export function create(): runtime.client.ClientAdapter {
|
|
61
|
+
return async arg => {
|
|
62
|
+
if (arg.servers.length !== 1) {
|
|
63
|
+
return fail('cannot decide which server to use from ' + arg.servers.join(', '));
|
|
64
|
+
}
|
|
65
|
+
const server = arg.servers[0];
|
|
66
|
+
const data = toRequestData(arg.body);
|
|
67
|
+
const url = new URL(server + arg.path);
|
|
68
|
+
const requestContentType = arg.body?.contentType;
|
|
69
|
+
|
|
70
|
+
Object.entries(arg.query ?? {})
|
|
71
|
+
.filter(([, value]) => !!value)
|
|
72
|
+
.forEach(([key, value]) => url.searchParams.append(key, `${value}`));
|
|
73
|
+
|
|
74
|
+
const response = await fetch(
|
|
75
|
+
new Request(url.toString(), {
|
|
76
|
+
method: arg.method,
|
|
77
|
+
headers: {
|
|
78
|
+
...(requestContentType ? { 'content-type': requestContentType } : {}),
|
|
79
|
+
...arg.headers
|
|
80
|
+
},
|
|
81
|
+
body: data
|
|
82
|
+
})
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
const contentType = getContentType(response);
|
|
86
|
+
|
|
87
|
+
const headers: Record<string, string> = {};
|
|
88
|
+
response.headers.forEach((value, key) => (headers[key] = value));
|
|
89
|
+
|
|
90
|
+
return {
|
|
91
|
+
status: response.status,
|
|
92
|
+
value: {
|
|
93
|
+
contentType,
|
|
94
|
+
value: await getResponseData(contentType, response)
|
|
95
|
+
},
|
|
96
|
+
headers
|
|
97
|
+
};
|
|
98
|
+
};
|
|
85
99
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@smartlyio/oats-fetch-adapter",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.3.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Fetch adapter for Oats a Openapi3 based generator for typescript aware servers and clients",
|
|
6
6
|
"private": false,
|
|
@@ -8,20 +8,18 @@
|
|
|
8
8
|
"main": "dist/index.js",
|
|
9
9
|
"types": "dist/index.d.ts",
|
|
10
10
|
"scripts": {
|
|
11
|
-
"lint": "eslint . --ext .ts",
|
|
12
|
-
"lint:fix": "eslint . --ext .ts --fix",
|
|
13
11
|
"clean": "rm -rf ./dist && rm -f ./tmp/*.ts",
|
|
14
|
-
"build": "yarn clean && yarn
|
|
15
|
-
"
|
|
12
|
+
"build": "yarn clean && yarn tsc",
|
|
13
|
+
"lint": "eslint --max-warnings=0 --ext .ts .",
|
|
14
|
+
"lint:fix": "eslint --max-warnings=0 --ext .ts . --fix"
|
|
16
15
|
},
|
|
17
16
|
"repository": {
|
|
18
17
|
"type": "git",
|
|
19
18
|
"url": "https://github.com/smartlyio/oats.git"
|
|
20
19
|
},
|
|
21
20
|
"peerDependencies": {
|
|
22
|
-
"@smartlyio/oats-runtime": "^
|
|
23
|
-
"
|
|
24
|
-
"typescript": "^4.2.4"
|
|
21
|
+
"@smartlyio/oats-runtime": "^6.3.0",
|
|
22
|
+
"typescript": "^4.9.5"
|
|
25
23
|
},
|
|
26
24
|
"dependencies": {
|
|
27
25
|
"form-data": "^4.0.0"
|
|
@@ -36,18 +34,17 @@
|
|
|
36
34
|
"client"
|
|
37
35
|
],
|
|
38
36
|
"devDependencies": {
|
|
39
|
-
"@smartlyio/oats-runtime": "^
|
|
40
|
-
"@types/
|
|
41
|
-
"@
|
|
42
|
-
"@typescript-eslint/
|
|
43
|
-
"
|
|
44
|
-
"eslint": "
|
|
45
|
-
"eslint-
|
|
46
|
-
"eslint-plugin-
|
|
47
|
-
"eslint-plugin-
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
37
|
+
"@smartlyio/oats-runtime": "^6.3.0",
|
|
38
|
+
"@types/node": "18.15.11",
|
|
39
|
+
"@typescript-eslint/eslint-plugin": "5.57.1",
|
|
40
|
+
"@typescript-eslint/parser": "5.57.1",
|
|
41
|
+
"eslint": "8.37.0",
|
|
42
|
+
"eslint-config-prettier": "8.8.0",
|
|
43
|
+
"eslint-plugin-import": "2.27.5",
|
|
44
|
+
"eslint-plugin-jest": "27.2.1",
|
|
45
|
+
"eslint-plugin-prettier": "4.2.1",
|
|
46
|
+
"prettier": "2.8.7",
|
|
47
|
+
"typescript": "4.9.5"
|
|
48
|
+
},
|
|
49
|
+
"gitHead": "03cd43a34c863806058e219835173cdb09dd2fac"
|
|
53
50
|
}
|
package/src/assert.ts
ADDED
package/renovate.json
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": [
|
|
3
|
-
"config:js-lib"
|
|
4
|
-
],
|
|
5
|
-
"timezone": "Europe/Helsinki",
|
|
6
|
-
"prHourlyLimit": 5,
|
|
7
|
-
"labels": ["patch"],
|
|
8
|
-
"packageRules": [
|
|
9
|
-
{
|
|
10
|
-
"groupName": "Smartly packages",
|
|
11
|
-
"packagePatterns": [
|
|
12
|
-
"^@smartly\/"
|
|
13
|
-
],
|
|
14
|
-
"excludePackagePatterns": [
|
|
15
|
-
"^@smartly\/asset-"
|
|
16
|
-
],
|
|
17
|
-
"schedule": "at any time"
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
"groupName": "Smartly Asset Library Components",
|
|
21
|
-
"packagePatterns": [
|
|
22
|
-
"^@smartly\/asset-"
|
|
23
|
-
],
|
|
24
|
-
"schedule": "at any time"
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
"groupName": "Smartly Oats",
|
|
28
|
-
"packagePatterns": [
|
|
29
|
-
"^@smartlyio\/oats"
|
|
30
|
-
],
|
|
31
|
-
"schedule": "at any time"
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
"depTypeList": ["devDependencies"],
|
|
35
|
-
"schedule" : "before 8am on monday",
|
|
36
|
-
"groupName": "devDependencies",
|
|
37
|
-
"automerge": true,
|
|
38
|
-
"labels": ["dependencies", "no release"]
|
|
39
|
-
}
|
|
40
|
-
]
|
|
41
|
-
}
|