dx-server 0.0.2 → 0.0.4
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/cjs/body.d.ts +1 -3
- package/cjs/express.d.ts +11 -1
- package/cjs/express.js +44 -20
- package/esm/body.d.ts +1 -3
- package/esm/express.d.ts +11 -1
- package/esm/express.js +42 -19
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -69,7 +69,7 @@ const serverChain = chain(
|
|
|
69
69
|
next => {
|
|
70
70
|
// this is the difference between express and dx-server
|
|
71
71
|
// req, res can be accessed from anywhere via context which uses NodeJS's AsyncLocalStorage under the hood
|
|
72
|
-
responseContext.value.setHeader('
|
|
72
|
+
responseContext.value.setHeader('Cache-Control', 'no-cache')
|
|
73
73
|
next()
|
|
74
74
|
},
|
|
75
75
|
async next => {
|
package/cjs/body.d.ts
CHANGED
|
@@ -19,9 +19,7 @@ export declare const textBodyContext: {
|
|
|
19
19
|
chain(): <V>(next: () => V) => Promise<any>;
|
|
20
20
|
};
|
|
21
21
|
export declare const urlencodedBodyContext: {
|
|
22
|
-
readonly value:
|
|
23
|
-
[x: string]: any;
|
|
24
|
-
} | undefined;
|
|
22
|
+
readonly value: import("qs").ParsedQs | undefined;
|
|
25
23
|
chain(params_0?: {
|
|
26
24
|
simplify?: boolean | undefined;
|
|
27
25
|
} | undefined): <V>(next: () => V) => Promise<any>;
|
package/cjs/express.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
+
import { Writable } from 'node:stream';
|
|
2
4
|
export declare const expressContext: {
|
|
3
5
|
readonly value: {
|
|
4
6
|
charset?: BufferEncoding | undefined;
|
|
5
|
-
|
|
7
|
+
jsonBeautify?: boolean | undefined;
|
|
8
|
+
disableEtag?: boolean | undefined;
|
|
6
9
|
} & ({
|
|
7
10
|
type: 'text';
|
|
8
11
|
data: string;
|
|
@@ -18,9 +21,13 @@ export declare const expressContext: {
|
|
|
18
21
|
} | {
|
|
19
22
|
type: 'redirect';
|
|
20
23
|
data: string;
|
|
24
|
+
} | {
|
|
25
|
+
type: 'stream';
|
|
26
|
+
data: Writable;
|
|
21
27
|
});
|
|
22
28
|
chain(params_0?: {
|
|
23
29
|
jsonBeautify?: boolean | undefined;
|
|
30
|
+
disableEtag?: boolean | undefined;
|
|
24
31
|
} | undefined): <V>(next: () => V) => Promise<any>;
|
|
25
32
|
};
|
|
26
33
|
export declare function setText(text: string, { status }?: {
|
|
@@ -32,6 +39,9 @@ export declare function setHtml(html: string, opts?: {
|
|
|
32
39
|
export declare function setBuffer(buffer: Buffer, { status }?: {
|
|
33
40
|
status?: number;
|
|
34
41
|
}): void;
|
|
42
|
+
export declare function setStream(stream: Writable, { status }?: {
|
|
43
|
+
status?: number;
|
|
44
|
+
}): void;
|
|
35
45
|
export declare function setJson(json: any, { status, beautify }?: {
|
|
36
46
|
status?: number;
|
|
37
47
|
beautify?: boolean;
|
package/cjs/express.js
CHANGED
|
@@ -3,16 +3,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.setRedirect = exports.setJson = exports.setBuffer = exports.setHtml = exports.setText = exports.expressContext = void 0;
|
|
6
|
+
exports.setRedirect = exports.setJson = exports.setStream = exports.setBuffer = exports.setHtml = exports.setText = exports.expressContext = void 0;
|
|
7
7
|
const jdefer_1 = __importDefault(require("jdefer"));
|
|
8
8
|
const node_util_1 = require("node:util");
|
|
9
9
|
const etag_js_1 = require("./etag.js");
|
|
10
10
|
const context_js_1 = require("./context.js");
|
|
11
|
-
exports.expressContext = (0, context_js_1.makeContext)(async ({ jsonBeautify } = {}) => {
|
|
11
|
+
exports.expressContext = (0, context_js_1.makeContext)(async ({ jsonBeautify, disableEtag } = {}) => {
|
|
12
12
|
return {
|
|
13
|
-
|
|
13
|
+
jsonBeautify,
|
|
14
|
+
disableEtag,
|
|
14
15
|
};
|
|
15
|
-
}, async (ret, { type, data, charset,
|
|
16
|
+
}, async (ret, { type, data, charset, jsonBeautify, disableEtag }) => {
|
|
16
17
|
const res = context_js_1.responseContext.value;
|
|
17
18
|
const setContentType = (contentType) => {
|
|
18
19
|
if (res.headersSent || res.getHeader('content-type'))
|
|
@@ -32,9 +33,13 @@ exports.expressContext = (0, context_js_1.makeContext)(async ({ jsonBeautify } =
|
|
|
32
33
|
setContentType('application/octet-stream');
|
|
33
34
|
buffer = data;
|
|
34
35
|
break;
|
|
36
|
+
case 'stream':
|
|
37
|
+
setContentType('application/octet-stream');
|
|
38
|
+
buffer = data;
|
|
39
|
+
break;
|
|
35
40
|
case 'json':
|
|
36
41
|
setContentType('application/json');
|
|
37
|
-
buffer = Buffer.from(
|
|
42
|
+
buffer = Buffer.from(jsonBeautify ? JSON.stringify(data, null, 2) : JSON.stringify(data), charset);
|
|
38
43
|
break;
|
|
39
44
|
case 'redirect':
|
|
40
45
|
buffer = Buffer.from(data, charset);
|
|
@@ -78,26 +83,36 @@ exports.expressContext = (0, context_js_1.makeContext)(async ({ jsonBeautify } =
|
|
|
78
83
|
// write nothing
|
|
79
84
|
}
|
|
80
85
|
else {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
86
|
+
if (Buffer.isBuffer(buffer)) {
|
|
87
|
+
// support: 304 (etag), zipping, file etag and last modified
|
|
88
|
+
res.setHeader('content-length', buffer.length);
|
|
89
|
+
if (!disableEtag) {
|
|
90
|
+
const etag = (0, etag_js_1.entityTag)(buffer);
|
|
91
|
+
const lastModified = res.getHeader('last-modified');
|
|
92
|
+
res.setHeader('ETag', etag);
|
|
93
|
+
if ((0, etag_js_1.isFreshETag)(req, etag)) {
|
|
94
|
+
res.removeHeader('content-type');
|
|
95
|
+
res.removeHeader('content-length');
|
|
96
|
+
res.removeHeader('transfer-encoding');
|
|
97
|
+
res.statusCode = 304;
|
|
98
|
+
// write nothing
|
|
99
|
+
}
|
|
100
|
+
else
|
|
101
|
+
res.write(buffer);
|
|
102
|
+
}
|
|
103
|
+
else
|
|
104
|
+
res.write(buffer);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
buffer.pipe(res);
|
|
92
108
|
}
|
|
93
|
-
else
|
|
94
|
-
res.write(buffer);
|
|
95
109
|
// fixme: not support content-encoding (gzip, deflate, br) for now
|
|
96
110
|
}
|
|
97
111
|
await (0, node_util_1.promisify)(res.end.bind(res))(undefined); // some express middleware, such as express-session, requires explicitly passing chunk
|
|
98
112
|
}
|
|
99
113
|
return ret;
|
|
100
114
|
});
|
|
115
|
+
// todo: support setFile (with stream or with buffer)
|
|
101
116
|
function setText(text, { status } = {}) {
|
|
102
117
|
const response = context_js_1.responseContext.value;
|
|
103
118
|
const express = exports.expressContext.value;
|
|
@@ -122,6 +137,15 @@ function setBuffer(buffer, { status } = {}) {
|
|
|
122
137
|
express.type = 'buffer';
|
|
123
138
|
}
|
|
124
139
|
exports.setBuffer = setBuffer;
|
|
140
|
+
function setStream(stream, { status } = {}) {
|
|
141
|
+
const response = context_js_1.responseContext.value;
|
|
142
|
+
const express = exports.expressContext.value;
|
|
143
|
+
if (status)
|
|
144
|
+
response.statusCode = status;
|
|
145
|
+
express.data = stream;
|
|
146
|
+
express.type = 'stream';
|
|
147
|
+
}
|
|
148
|
+
exports.setStream = setStream;
|
|
125
149
|
function setJson(json, { status, beautify } = {}) {
|
|
126
150
|
const response = context_js_1.responseContext.value;
|
|
127
151
|
if (status)
|
|
@@ -130,7 +154,7 @@ function setJson(json, { status, beautify } = {}) {
|
|
|
130
154
|
express.data = json;
|
|
131
155
|
express.type = 'json';
|
|
132
156
|
if (beautify !== undefined)
|
|
133
|
-
express.
|
|
157
|
+
express.jsonBeautify = beautify;
|
|
134
158
|
}
|
|
135
159
|
exports.setJson = setJson;
|
|
136
160
|
function setRedirect(url, status) {
|
|
@@ -141,4 +165,4 @@ function setRedirect(url, status) {
|
|
|
141
165
|
express.type = 'redirect';
|
|
142
166
|
}
|
|
143
167
|
exports.setRedirect = setRedirect;
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9leHByZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUE4QjtBQUM5Qix5Q0FBbUM7QUFDbkMsdUNBQWdEO0FBQ2hELDZDQUF5RTtBQUc1RCxRQUFBLGNBQWMsR0FBRyxJQUFBLHdCQUFXLEVBQUMsS0FBSyxFQUM5QyxFQUFDLFlBQVksRUFBRSxXQUFXLEtBR3RCLEVBQUUsRUFDTCxFQUFFO0lBQ0gsT0FBTztRQUNOLFlBQVk7UUFDWixXQUFXO0tBK0JWLENBQUE7QUFDSCxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUMsRUFBRSxFQUFFO0lBQ2xFLE1BQU0sR0FBRyxHQUFHLDRCQUFlLENBQUMsS0FBSyxDQUFBO0lBQ2pDLE1BQU0sY0FBYyxHQUFHLENBQUMsV0FBbUIsRUFBRSxFQUFFO1FBQzlDLElBQUksR0FBRyxDQUFDLFdBQVcsSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQztZQUFFLE9BQU07UUFDNUQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsR0FBRyxXQUFXLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxhQUFhLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ3hGLENBQUMsQ0FBQTtJQUNELElBQUksTUFBTSxDQUFBO0lBRVYsUUFBUSxJQUFJLEVBQUU7UUFDYixLQUFLLE1BQU07WUFDVixjQUFjLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDN0IsS0FBSyxNQUFNO1lBQ1YsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1lBQzNCLG1CQUFtQjtZQUNuQixNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7WUFDbkMsTUFBSztR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
|
package/esm/body.d.ts
CHANGED
|
@@ -19,9 +19,7 @@ export declare const textBodyContext: {
|
|
|
19
19
|
chain(): <V>(next: () => V) => Promise<any>;
|
|
20
20
|
};
|
|
21
21
|
export declare const urlencodedBodyContext: {
|
|
22
|
-
readonly value:
|
|
23
|
-
[x: string]: any;
|
|
24
|
-
} | undefined;
|
|
22
|
+
readonly value: import("qs").ParsedQs | undefined;
|
|
25
23
|
chain(params_0?: {
|
|
26
24
|
simplify?: boolean | undefined;
|
|
27
25
|
} | undefined): <V>(next: () => V) => Promise<any>;
|
package/esm/express.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
+
import { Writable } from 'node:stream';
|
|
2
4
|
export declare const expressContext: {
|
|
3
5
|
readonly value: {
|
|
4
6
|
charset?: BufferEncoding | undefined;
|
|
5
|
-
|
|
7
|
+
jsonBeautify?: boolean | undefined;
|
|
8
|
+
disableEtag?: boolean | undefined;
|
|
6
9
|
} & ({
|
|
7
10
|
type: 'text';
|
|
8
11
|
data: string;
|
|
@@ -18,9 +21,13 @@ export declare const expressContext: {
|
|
|
18
21
|
} | {
|
|
19
22
|
type: 'redirect';
|
|
20
23
|
data: string;
|
|
24
|
+
} | {
|
|
25
|
+
type: 'stream';
|
|
26
|
+
data: Writable;
|
|
21
27
|
});
|
|
22
28
|
chain(params_0?: {
|
|
23
29
|
jsonBeautify?: boolean | undefined;
|
|
30
|
+
disableEtag?: boolean | undefined;
|
|
24
31
|
} | undefined): <V>(next: () => V) => Promise<any>;
|
|
25
32
|
};
|
|
26
33
|
export declare function setText(text: string, { status }?: {
|
|
@@ -32,6 +39,9 @@ export declare function setHtml(html: string, opts?: {
|
|
|
32
39
|
export declare function setBuffer(buffer: Buffer, { status }?: {
|
|
33
40
|
status?: number;
|
|
34
41
|
}): void;
|
|
42
|
+
export declare function setStream(stream: Writable, { status }?: {
|
|
43
|
+
status?: number;
|
|
44
|
+
}): void;
|
|
35
45
|
export declare function setJson(json: any, { status, beautify }?: {
|
|
36
46
|
status?: number;
|
|
37
47
|
beautify?: boolean;
|
package/esm/express.js
CHANGED
|
@@ -2,11 +2,12 @@ import makeDefer from 'jdefer';
|
|
|
2
2
|
import { promisify } from 'node:util';
|
|
3
3
|
import { entityTag, isFreshETag } from './etag.js';
|
|
4
4
|
import { makeContext, requestContext, responseContext } from './context.js';
|
|
5
|
-
export const expressContext = makeContext(async ({ jsonBeautify } = {}) => {
|
|
5
|
+
export const expressContext = makeContext(async ({ jsonBeautify, disableEtag } = {}) => {
|
|
6
6
|
return {
|
|
7
|
-
|
|
7
|
+
jsonBeautify,
|
|
8
|
+
disableEtag,
|
|
8
9
|
};
|
|
9
|
-
}, async (ret, { type, data, charset,
|
|
10
|
+
}, async (ret, { type, data, charset, jsonBeautify, disableEtag }) => {
|
|
10
11
|
const res = responseContext.value;
|
|
11
12
|
const setContentType = (contentType) => {
|
|
12
13
|
if (res.headersSent || res.getHeader('content-type'))
|
|
@@ -26,9 +27,13 @@ export const expressContext = makeContext(async ({ jsonBeautify } = {}) => {
|
|
|
26
27
|
setContentType('application/octet-stream');
|
|
27
28
|
buffer = data;
|
|
28
29
|
break;
|
|
30
|
+
case 'stream':
|
|
31
|
+
setContentType('application/octet-stream');
|
|
32
|
+
buffer = data;
|
|
33
|
+
break;
|
|
29
34
|
case 'json':
|
|
30
35
|
setContentType('application/json');
|
|
31
|
-
buffer = Buffer.from(
|
|
36
|
+
buffer = Buffer.from(jsonBeautify ? JSON.stringify(data, null, 2) : JSON.stringify(data), charset);
|
|
32
37
|
break;
|
|
33
38
|
case 'redirect':
|
|
34
39
|
buffer = Buffer.from(data, charset);
|
|
@@ -72,26 +77,36 @@ export const expressContext = makeContext(async ({ jsonBeautify } = {}) => {
|
|
|
72
77
|
// write nothing
|
|
73
78
|
}
|
|
74
79
|
else {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
80
|
+
if (Buffer.isBuffer(buffer)) {
|
|
81
|
+
// support: 304 (etag), zipping, file etag and last modified
|
|
82
|
+
res.setHeader('content-length', buffer.length);
|
|
83
|
+
if (!disableEtag) {
|
|
84
|
+
const etag = entityTag(buffer);
|
|
85
|
+
const lastModified = res.getHeader('last-modified');
|
|
86
|
+
res.setHeader('ETag', etag);
|
|
87
|
+
if (isFreshETag(req, etag)) {
|
|
88
|
+
res.removeHeader('content-type');
|
|
89
|
+
res.removeHeader('content-length');
|
|
90
|
+
res.removeHeader('transfer-encoding');
|
|
91
|
+
res.statusCode = 304;
|
|
92
|
+
// write nothing
|
|
93
|
+
}
|
|
94
|
+
else
|
|
95
|
+
res.write(buffer);
|
|
96
|
+
}
|
|
97
|
+
else
|
|
98
|
+
res.write(buffer);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
buffer.pipe(res);
|
|
86
102
|
}
|
|
87
|
-
else
|
|
88
|
-
res.write(buffer);
|
|
89
103
|
// fixme: not support content-encoding (gzip, deflate, br) for now
|
|
90
104
|
}
|
|
91
105
|
await promisify(res.end.bind(res))(undefined); // some express middleware, such as express-session, requires explicitly passing chunk
|
|
92
106
|
}
|
|
93
107
|
return ret;
|
|
94
108
|
});
|
|
109
|
+
// todo: support setFile (with stream or with buffer)
|
|
95
110
|
export function setText(text, { status } = {}) {
|
|
96
111
|
const response = responseContext.value;
|
|
97
112
|
const express = expressContext.value;
|
|
@@ -113,6 +128,14 @@ export function setBuffer(buffer, { status } = {}) {
|
|
|
113
128
|
express.data = buffer;
|
|
114
129
|
express.type = 'buffer';
|
|
115
130
|
}
|
|
131
|
+
export function setStream(stream, { status } = {}) {
|
|
132
|
+
const response = responseContext.value;
|
|
133
|
+
const express = expressContext.value;
|
|
134
|
+
if (status)
|
|
135
|
+
response.statusCode = status;
|
|
136
|
+
express.data = stream;
|
|
137
|
+
express.type = 'stream';
|
|
138
|
+
}
|
|
116
139
|
export function setJson(json, { status, beautify } = {}) {
|
|
117
140
|
const response = responseContext.value;
|
|
118
141
|
if (status)
|
|
@@ -121,7 +144,7 @@ export function setJson(json, { status, beautify } = {}) {
|
|
|
121
144
|
express.data = json;
|
|
122
145
|
express.type = 'json';
|
|
123
146
|
if (beautify !== undefined)
|
|
124
|
-
express.
|
|
147
|
+
express.jsonBeautify = beautify;
|
|
125
148
|
}
|
|
126
149
|
export function setRedirect(url, status) {
|
|
127
150
|
const response = responseContext.value;
|
|
@@ -130,4 +153,4 @@ export function setRedirect(url, status) {
|
|
|
130
153
|
express.data = url;
|
|
131
154
|
express.type = 'redirect';
|
|
132
155
|
}
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9leHByZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sU0FBUyxNQUFNLFFBQVEsQ0FBQTtBQUM5QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sV0FBVyxDQUFBO0FBQ25DLE9BQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFDLE1BQU0sV0FBVyxDQUFBO0FBQ2hELE9BQU8sRUFBQyxXQUFXLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBQyxNQUFNLGNBQWMsQ0FBQTtBQUd6RSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDLEtBQUssRUFDOUMsRUFBQyxZQUFZLEVBQUUsV0FBVyxLQUd0QixFQUFFLEVBQ0wsRUFBRTtJQUNILE9BQU87UUFDTixZQUFZO1FBQ1osV0FBVztLQStCVixDQUFBO0FBQ0gsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFDLEVBQUUsRUFBRTtJQUNsRSxNQUFNLEdBQUcsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFBO0lBQ2pDLE1BQU0sY0FBYyxHQUFHLENBQUMsV0FBbUIsRUFBRSxFQUFFO1FBQzlDLElBQUksR0FBRyxDQUFDLFdBQVcsSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQztZQUFFLE9BQU07UUFDNUQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsR0FBRyxXQUFXLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxhQUFhLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ3hGLENBQUMsQ0FBQTtJQUNELElBQUksTUFBTSxDQUFBO0lBRVYsUUFBUSxJQUFJLEVBQUU7UUFDYixLQUFLLE1BQU07WUFDVixjQUFjLENBQUMsWUFBWSxDQUFDLENBQUE7UUFD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
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dx-server",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.4",
|
|
4
4
|
"main": "./cjs/index.js",
|
|
5
|
-
"repository": "
|
|
5
|
+
"repository": "https://github.com/tranvansang/dx-server",
|
|
6
6
|
"author": "Sang Tran <t@sang.jp>",
|
|
7
7
|
"files": [
|
|
8
8
|
"cjs",
|
|
@@ -28,8 +28,9 @@
|
|
|
28
28
|
"typescript": "^5.1.6"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
+
"jchain": "^0.0.6",
|
|
31
32
|
"jdefer": "^0.0.9",
|
|
32
|
-
"jmisc": "^0.0.
|
|
33
|
+
"jmisc": "^0.0.9",
|
|
33
34
|
"path-to-regexp": "^6.2.1",
|
|
34
35
|
"qs": "^6.11.2"
|
|
35
36
|
}
|