@smartlyio/oats-mirage-adapter 4.0.2 → 4.0.3
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/dist/index.d.ts +14 -0
- package/dist/index.js +89 -0
- package/dist/index.js.map +1 -0
- package/dist/render-docs.d.ts +1 -0
- package/dist/render-docs.js +12 -0
- package/dist/render-docs.js.map +1 -0
- package/package.json +3 -3
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as runtime from '@smartlyio/oats-runtime';
|
|
2
|
+
import * as mirageTypes from 'miragejs/-types';
|
|
3
|
+
import Schema from 'miragejs/orm/schema';
|
|
4
|
+
import { Server } from 'miragejs/server';
|
|
5
|
+
import { Registry as MirageRegistry, Registry } from 'miragejs/-types';
|
|
6
|
+
/**
|
|
7
|
+
* Bind provided handlers for the OpenAPI routes
|
|
8
|
+
*/
|
|
9
|
+
export declare function bind<Spec, Models extends mirageTypes.AnyModels = never, Factories extends mirageTypes.AnyFactories = never, RequestContext = void>(opts: {
|
|
10
|
+
server: Server<MirageRegistry<Models, Factories>>;
|
|
11
|
+
handler: runtime.server.HandlerFactory<Spec>;
|
|
12
|
+
spec: Spec;
|
|
13
|
+
requestContextCreator?: (schema: Schema<Registry<Models, Factories>>) => RequestContext;
|
|
14
|
+
}): void;
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.bind = void 0;
|
|
4
|
+
const mirage = require("miragejs");
|
|
5
|
+
function guessContentType(contentTypeHeader, value) {
|
|
6
|
+
if (contentTypeHeader === null || contentTypeHeader === void 0 ? void 0 : contentTypeHeader.includes('application/json')) {
|
|
7
|
+
return 'application/json';
|
|
8
|
+
}
|
|
9
|
+
if (contentTypeHeader) {
|
|
10
|
+
return contentTypeHeader;
|
|
11
|
+
}
|
|
12
|
+
if (value instanceof FormData) {
|
|
13
|
+
return 'multipart/form-data';
|
|
14
|
+
}
|
|
15
|
+
return 'text/html';
|
|
16
|
+
}
|
|
17
|
+
async function guessValue(contentType, value) {
|
|
18
|
+
if (value instanceof FormData) {
|
|
19
|
+
return await handleFormData(value);
|
|
20
|
+
}
|
|
21
|
+
if (contentType.match(/application\/json/) && value) {
|
|
22
|
+
return JSON.parse(value);
|
|
23
|
+
}
|
|
24
|
+
return value;
|
|
25
|
+
}
|
|
26
|
+
async function handleFormData(value) {
|
|
27
|
+
const result = {};
|
|
28
|
+
const keys = [];
|
|
29
|
+
value.forEach((_, key) => keys.push(key));
|
|
30
|
+
for (const key of keys) {
|
|
31
|
+
const keyValue = value.get(key);
|
|
32
|
+
if (keyValue instanceof Blob) {
|
|
33
|
+
result[key] = await keyValue.arrayBuffer();
|
|
34
|
+
}
|
|
35
|
+
else if (typeof keyValue === 'string') {
|
|
36
|
+
result[key] = keyValue;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
function adapter(mirageServer, requestContextCreator) {
|
|
42
|
+
return (path, op, method, handler) => {
|
|
43
|
+
const miragePath = path.replace(/{([^}]+)}/g, (m, param) => ':' + param);
|
|
44
|
+
const mirageHandler = mirageServer[method];
|
|
45
|
+
mirageHandler(miragePath, async (schema, request) => {
|
|
46
|
+
const headers = Object.keys(request.requestHeaders).reduce((lowerCaseHeaders, key) => {
|
|
47
|
+
lowerCaseHeaders[key.toLowerCase()] = request.requestHeaders[key];
|
|
48
|
+
return lowerCaseHeaders;
|
|
49
|
+
}, {});
|
|
50
|
+
const contentType = guessContentType(headers['content-type'], request.requestBody);
|
|
51
|
+
const value = await guessValue(contentType, request.requestBody);
|
|
52
|
+
const body = value != null ? { value, contentType } : undefined;
|
|
53
|
+
const ctx = {
|
|
54
|
+
path,
|
|
55
|
+
method,
|
|
56
|
+
servers: [],
|
|
57
|
+
op,
|
|
58
|
+
headers,
|
|
59
|
+
params: request.params,
|
|
60
|
+
query: request.queryParams,
|
|
61
|
+
body,
|
|
62
|
+
requestContext: requestContextCreator(schema, request)
|
|
63
|
+
};
|
|
64
|
+
// eslint-disable-next-line no-console
|
|
65
|
+
console.log('oats-mirage-adapter request', ctx);
|
|
66
|
+
try {
|
|
67
|
+
const result = await handler(ctx);
|
|
68
|
+
// eslint-disable-next-line no-console
|
|
69
|
+
console.log('oats-mirage-adapter response', { result });
|
|
70
|
+
return new mirage.Response(result.status, Object.assign(Object.assign({}, result.headers), { 'content-type': result.value.contentType }), result.value.contentType.match(/application\/json/)
|
|
71
|
+
? JSON.stringify(result.value.value)
|
|
72
|
+
: result.value.value);
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
// eslint-disable-next-line no-console
|
|
76
|
+
console.log('oats-mirage-adapter handler threw: ' + error.message, { error });
|
|
77
|
+
return new mirage.Response(400, { 'content-type': 'text/plain' }, 'Error from handler: ' + error.message);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Bind provided handlers for the OpenAPI routes
|
|
84
|
+
*/
|
|
85
|
+
function bind(opts) {
|
|
86
|
+
opts.handler(adapter(opts.server, opts.requestContextCreator || (() => ({}))))(opts.spec);
|
|
87
|
+
}
|
|
88
|
+
exports.bind = bind;
|
|
89
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable no-console */
|
|
3
|
+
/* eslint-disable @typescript-eslint/no-floating-promises */
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
const fs = require("fs");
|
|
6
|
+
const md = fs.readFileSync('README.template.md', 'utf8');
|
|
7
|
+
fs.writeFileSync('README.md', md.replace(/^>>(.*)/gm, (match, file) => {
|
|
8
|
+
const m = file.trim();
|
|
9
|
+
const example = fs.readFileSync('./' + m, 'utf8');
|
|
10
|
+
return example;
|
|
11
|
+
}));
|
|
12
|
+
//# sourceMappingURL=render-docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-docs.js","sourceRoot":"","sources":["../render-docs.ts"],"names":[],"mappings":";AAAA,+BAA+B;AAC/B,4DAA4D;;AAE5D,yBAAyB;AAEzB,MAAM,EAAE,GAAW,EAAE,CAAC,YAAY,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;AACjE,EAAE,CAAC,aAAa,CACd,WAAW,EACX,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACtC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,MAAM,OAAO,GAAQ,EAAE,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IACvD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC,CACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@smartlyio/oats-mirage-adapter",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.3",
|
|
4
4
|
"description": "Mirage.js adapter for Oats",
|
|
5
5
|
"licence": "MIT",
|
|
6
6
|
"private": false,
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"server"
|
|
36
36
|
],
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@smartlyio/oats-runtime": "^4.0.
|
|
38
|
+
"@smartlyio/oats-runtime": "^4.0.3",
|
|
39
39
|
"@types/lodash": "4.14.178",
|
|
40
40
|
"@types/node": "16.11.14",
|
|
41
41
|
"miragejs": "0.1.43",
|
|
@@ -43,5 +43,5 @@
|
|
|
43
43
|
"ts-node": "10.4.0",
|
|
44
44
|
"typescript": "4.5.4"
|
|
45
45
|
},
|
|
46
|
-
"gitHead": "
|
|
46
|
+
"gitHead": "5897af3aa6bea0c602978a10816c577a6b051c90"
|
|
47
47
|
}
|