@blocklet/uploader-server 0.1.67 → 0.1.68
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,13 +86,24 @@ 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 {
|
|
@@ -113,7 +130,7 @@ export const initProxyToMediaKitUploadsMiddleware = ({ options, express } = {})
|
|
|
113
130
|
},
|
|
114
131
|
(err) => {
|
|
115
132
|
console.error("Proxy error:", err);
|
|
116
|
-
|
|
133
|
+
next();
|
|
117
134
|
}
|
|
118
135
|
);
|
|
119
136
|
};
|
|
@@ -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,13 +103,27 @@ 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 {
|
|
@@ -137,7 +151,7 @@ const initProxyToMediaKitUploadsMiddleware = ({
|
|
|
137
151
|
...options
|
|
138
152
|
}, err => {
|
|
139
153
|
console.error("Proxy error:", err);
|
|
140
|
-
|
|
154
|
+
next();
|
|
141
155
|
});
|
|
142
156
|
};
|
|
143
157
|
};
|