minimalistic-server 0.0.50 → 0.0.52
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/index.mjs +29 -8
- package/package.json +1 -1
package/index.mjs
CHANGED
|
@@ -9,6 +9,19 @@ const keepAliveTimeout = 20000;
|
|
|
9
9
|
|
|
10
10
|
let currentFsPromiseModule = fs;
|
|
11
11
|
|
|
12
|
+
function setObjectProperty(object, name, value, enumerable = true, writable = true, configurable = true) {
|
|
13
|
+
Object.defineProperty(
|
|
14
|
+
object,
|
|
15
|
+
name,
|
|
16
|
+
{
|
|
17
|
+
value,
|
|
18
|
+
enumerable,
|
|
19
|
+
writable,
|
|
20
|
+
configurable,
|
|
21
|
+
},
|
|
22
|
+
)
|
|
23
|
+
}
|
|
24
|
+
|
|
12
25
|
function safePrint(data, isError = false) {
|
|
13
26
|
try {
|
|
14
27
|
if (isError) {
|
|
@@ -741,6 +754,14 @@ export function setServerFsPromiseModule(fsPromiseModule) {
|
|
|
741
754
|
clearStaticCache();
|
|
742
755
|
}
|
|
743
756
|
|
|
757
|
+
export function getExtension(fileNameOrPath) {
|
|
758
|
+
return fileNameOrPath?.toLowerCase().split('.').at(-1) ?? '';
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
export function getContentTypeByExtension(fileNameOrPath) {
|
|
762
|
+
return mimeTypes[getExtension(fileNameOrPath)] ?? 'application/octet-stream';
|
|
763
|
+
}
|
|
764
|
+
|
|
744
765
|
export class UploadedFile {
|
|
745
766
|
#content;
|
|
746
767
|
#contentType;
|
|
@@ -761,11 +782,11 @@ export class UploadedFile {
|
|
|
761
782
|
}
|
|
762
783
|
|
|
763
784
|
getExtension() {
|
|
764
|
-
return this.#fileName
|
|
785
|
+
return getExtension(this.#fileName);
|
|
765
786
|
}
|
|
766
787
|
|
|
767
788
|
getContentTypeByExtension() {
|
|
768
|
-
return
|
|
789
|
+
return getContentTypeByExtension(this.#fileName);
|
|
769
790
|
}
|
|
770
791
|
|
|
771
792
|
getFileName() {
|
|
@@ -806,13 +827,13 @@ export class Request {
|
|
|
806
827
|
this.#method = request.method.toUpperCase();
|
|
807
828
|
|
|
808
829
|
for (const k in request.headers) {
|
|
809
|
-
|
|
830
|
+
setObjectProperty(this.#headers, k.toLowerCase(), request.headers[k]);
|
|
810
831
|
}
|
|
811
832
|
|
|
812
833
|
this.#path = url.pathname.split('/').filter(x => x).join('/');
|
|
813
834
|
|
|
814
835
|
url.searchParams.forEach((v, k) => {
|
|
815
|
-
|
|
836
|
+
setObjectProperty(this.#queryParams, k, v);
|
|
816
837
|
});
|
|
817
838
|
}
|
|
818
839
|
|
|
@@ -990,7 +1011,7 @@ export class Request {
|
|
|
990
1011
|
parent[index] = nextParent;
|
|
991
1012
|
}
|
|
992
1013
|
} else if (!(parent instanceof Array) && !curFragment.match(/^-?\d+$/gm)) {
|
|
993
|
-
|
|
1014
|
+
setObjectProperty(parent, curFragment, nextFragment);
|
|
994
1015
|
} else {
|
|
995
1016
|
break;
|
|
996
1017
|
}
|
|
@@ -1092,7 +1113,7 @@ export class Request {
|
|
|
1092
1113
|
}
|
|
1093
1114
|
|
|
1094
1115
|
if (name in data && !Array.isArray(data[name])) {
|
|
1095
|
-
|
|
1116
|
+
setObjectProperty(data, name, [data[name]]);
|
|
1096
1117
|
}
|
|
1097
1118
|
|
|
1098
1119
|
if (Array.isArray(data[name])) {
|
|
@@ -1101,7 +1122,7 @@ export class Request {
|
|
|
1101
1122
|
}
|
|
1102
1123
|
|
|
1103
1124
|
} else {
|
|
1104
|
-
|
|
1125
|
+
setObjectProperty(data, name, value);
|
|
1105
1126
|
}
|
|
1106
1127
|
}
|
|
1107
1128
|
|
|
@@ -2368,7 +2389,7 @@ async function handleRequest(req, routes, staticFileDirectories, handleNotFoundE
|
|
|
2368
2389
|
if (!newRouteHandler) {
|
|
2369
2390
|
for (let k in routeHandler) {
|
|
2370
2391
|
if (k.match(/^{\w+}$/gm)) {
|
|
2371
|
-
|
|
2392
|
+
setObjectProperty(pathParams, k.replace(/[{}]/gm, ''), decodeURIComponent(fragment));
|
|
2372
2393
|
newRouteHandler = routeHandler[k];
|
|
2373
2394
|
break;
|
|
2374
2395
|
}
|