@blocklet/uploader-server 0.1.67 → 0.1.69
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.
|
@@ -16,7 +16,7 @@ let resourceTypes = [
|
|
|
16
16
|
type: ImgResourceType,
|
|
17
17
|
did: ImageBinDid,
|
|
18
18
|
folder: ""
|
|
19
|
-
//
|
|
19
|
+
// can be string or string[]
|
|
20
20
|
}
|
|
21
21
|
];
|
|
22
22
|
let canUseResources = [];
|
|
@@ -36,9 +36,15 @@ export const mappingResource = async () => {
|
|
|
36
36
|
if (!existsSync(originDir) || !resourceType) {
|
|
37
37
|
return false;
|
|
38
38
|
}
|
|
39
|
-
const
|
|
40
|
-
return
|
|
41
|
-
|
|
39
|
+
const folders = Array.isArray(resourceType.folder) ? resourceType.folder : [resourceType.folder || ""];
|
|
40
|
+
return folders.map((folder) => ({
|
|
41
|
+
originDir,
|
|
42
|
+
dir: join(originDir, folder),
|
|
43
|
+
blockletInfo: resource,
|
|
44
|
+
whitelist: resourceType.whitelist,
|
|
45
|
+
blacklist: resourceType.blacklist
|
|
46
|
+
}));
|
|
47
|
+
}).filter(Boolean).flat();
|
|
42
48
|
logger.info(
|
|
43
49
|
"Mapping can use resources count: ",
|
|
44
50
|
canUseResources.length
|
|
@@ -80,17 +86,28 @@ export const initStaticResourceMiddleware = ({
|
|
|
80
86
|
mappingResource();
|
|
81
87
|
return (req, res, next) => {
|
|
82
88
|
const urlPath = new URL(`http://localhost${req.url}`).pathname;
|
|
83
|
-
const matchCanUseResourceItem = canUseResources.find((item) =>
|
|
89
|
+
const matchCanUseResourceItem = canUseResources.find((item) => {
|
|
90
|
+
if (!existsSync(join(item.dir, urlPath))) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
const { whitelist, blacklist } = item;
|
|
94
|
+
if (whitelist?.length && !whitelist.some((ext) => urlPath.endsWith(ext))) {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
if (blacklist?.length && blacklist.some((ext) => urlPath.endsWith(ext))) {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
return true;
|
|
101
|
+
});
|
|
84
102
|
if (matchCanUseResourceItem) {
|
|
85
103
|
express.static(matchCanUseResourceItem.dir, {
|
|
86
104
|
maxAge: "365d",
|
|
87
105
|
immutable: true,
|
|
88
106
|
index: false,
|
|
89
|
-
// fallthrough: false,
|
|
90
107
|
...options
|
|
91
108
|
})(req, res, next);
|
|
92
109
|
} else {
|
|
93
|
-
|
|
110
|
+
next();
|
|
94
111
|
}
|
|
95
112
|
};
|
|
96
113
|
};
|
|
@@ -111,10 +128,7 @@ export const initProxyToMediaKitUploadsMiddleware = ({ options, express } = {})
|
|
|
111
128
|
changeOrigin: true,
|
|
112
129
|
...options
|
|
113
130
|
},
|
|
114
|
-
|
|
115
|
-
console.error("Proxy error:", err);
|
|
116
|
-
res.status(502).end();
|
|
117
|
-
}
|
|
131
|
+
next
|
|
118
132
|
);
|
|
119
133
|
};
|
|
120
134
|
};
|
|
@@ -30,7 +30,7 @@ let resourceTypes = [{
|
|
|
30
30
|
type: ImgResourceType,
|
|
31
31
|
did: ImageBinDid,
|
|
32
32
|
folder: ""
|
|
33
|
-
//
|
|
33
|
+
// can be string or string[]
|
|
34
34
|
}];
|
|
35
35
|
let canUseResources = [];
|
|
36
36
|
const mappingResource = async () => {
|
|
@@ -51,15 +51,15 @@ const mappingResource = async () => {
|
|
|
51
51
|
if (!existsSync(originDir) || !resourceType) {
|
|
52
52
|
return false;
|
|
53
53
|
}
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
} = resourceType;
|
|
57
|
-
return {
|
|
54
|
+
const folders = Array.isArray(resourceType.folder) ? resourceType.folder : [resourceType.folder || ""];
|
|
55
|
+
return folders.map(folder => ({
|
|
58
56
|
originDir,
|
|
59
|
-
dir: join(originDir, folder
|
|
60
|
-
blockletInfo: resource
|
|
61
|
-
|
|
62
|
-
|
|
57
|
+
dir: join(originDir, folder),
|
|
58
|
+
blockletInfo: resource,
|
|
59
|
+
whitelist: resourceType.whitelist,
|
|
60
|
+
blacklist: resourceType.blacklist
|
|
61
|
+
}));
|
|
62
|
+
}).filter(Boolean).flat();
|
|
63
63
|
logger.info("Mapping can use resources count: ", canUseResources.length
|
|
64
64
|
// canUseResources
|
|
65
65
|
);
|
|
@@ -103,17 +103,31 @@ const initStaticResourceMiddleware = ({
|
|
|
103
103
|
mappingResource();
|
|
104
104
|
return (req, res, next) => {
|
|
105
105
|
const urlPath = new URL(`http://localhost${req.url}`).pathname;
|
|
106
|
-
const matchCanUseResourceItem = canUseResources.find(item =>
|
|
106
|
+
const matchCanUseResourceItem = canUseResources.find(item => {
|
|
107
|
+
if (!existsSync(join(item.dir, urlPath))) {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
const {
|
|
111
|
+
whitelist,
|
|
112
|
+
blacklist
|
|
113
|
+
} = item;
|
|
114
|
+
if (whitelist?.length && !whitelist.some(ext => urlPath.endsWith(ext))) {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
if (blacklist?.length && blacklist.some(ext => urlPath.endsWith(ext))) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
return true;
|
|
121
|
+
});
|
|
107
122
|
if (matchCanUseResourceItem) {
|
|
108
123
|
express.static(matchCanUseResourceItem.dir, {
|
|
109
124
|
maxAge: "365d",
|
|
110
125
|
immutable: true,
|
|
111
126
|
index: false,
|
|
112
|
-
// fallthrough: false,
|
|
113
127
|
...options
|
|
114
128
|
})(req, res, next);
|
|
115
129
|
} else {
|
|
116
|
-
|
|
130
|
+
next();
|
|
117
131
|
}
|
|
118
132
|
};
|
|
119
133
|
};
|
|
@@ -135,10 +149,7 @@ const initProxyToMediaKitUploadsMiddleware = ({
|
|
|
135
149
|
target: mediaKitInfo.webEndpoint,
|
|
136
150
|
changeOrigin: true,
|
|
137
151
|
...options
|
|
138
|
-
},
|
|
139
|
-
console.error("Proxy error:", err);
|
|
140
|
-
res.status(502).end();
|
|
141
|
-
});
|
|
152
|
+
}, next);
|
|
142
153
|
};
|
|
143
154
|
};
|
|
144
155
|
exports.initProxyToMediaKitUploadsMiddleware = initProxyToMediaKitUploadsMiddleware;
|