@blocklet/uploader-server 0.1.49
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/LICENSE +13 -0
- package/README.md +101 -0
- package/es/index.d.ts +1 -0
- package/es/index.js +1 -0
- package/es/middlewares/companion.d.ts +6 -0
- package/es/middlewares/companion.js +92 -0
- package/es/middlewares/local-storage.d.ts +18 -0
- package/es/middlewares/local-storage.js +374 -0
- package/es/middlewares/static-resource.d.ts +11 -0
- package/es/middlewares/static-resource.js +107 -0
- package/es/middlewares.d.ts +3 -0
- package/es/middlewares.js +3 -0
- package/es/types.d.ts +0 -0
- package/es/types.js +0 -0
- package/es/utils.d.ts +0 -0
- package/es/utils.js +0 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +16 -0
- package/lib/middlewares/companion.d.ts +6 -0
- package/lib/middlewares/companion.js +104 -0
- package/lib/middlewares/local-storage.d.ts +18 -0
- package/lib/middlewares/local-storage.js +423 -0
- package/lib/middlewares/static-resource.d.ts +11 -0
- package/lib/middlewares/static-resource.js +133 -0
- package/lib/middlewares.d.ts +3 -0
- package/lib/middlewares.js +38 -0
- package/lib/types.d.ts +0 -0
- package/lib/types.js +1 -0
- package/lib/utils.d.ts +0 -0
- package/lib/utils.js +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const mappingResource: () => Promise<any>;
|
|
2
|
+
type initStaticResourceMiddlewareOptions = {
|
|
3
|
+
options?: any;
|
|
4
|
+
resourceTypes?: string[] | Object[];
|
|
5
|
+
express: any;
|
|
6
|
+
skipRunningCheck?: boolean;
|
|
7
|
+
};
|
|
8
|
+
export declare const initStaticResourceMiddleware: ({ options, resourceTypes: _resourceTypes, express, skipRunningCheck: _skipRunningCheck, }?: initStaticResourceMiddlewareOptions) => (req: any, res: any, next: Function) => void;
|
|
9
|
+
export declare const getCanUseResources: () => any;
|
|
10
|
+
export declare const initProxyToMediaKitUploadsMiddleware: ({ options, express }?: any) => (req: any, res: any, next: Function) => any;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.mappingResource = exports.initStaticResourceMiddleware = exports.initProxyToMediaKitUploadsMiddleware = exports.getCanUseResources = void 0;
|
|
7
|
+
const {
|
|
8
|
+
existsSync
|
|
9
|
+
} = require("fs");
|
|
10
|
+
const {
|
|
11
|
+
join
|
|
12
|
+
} = require("path");
|
|
13
|
+
const config = require("@blocklet/sdk/lib/config");
|
|
14
|
+
const {
|
|
15
|
+
getResources
|
|
16
|
+
} = require("@blocklet/sdk/lib/component");
|
|
17
|
+
const logger = console;
|
|
18
|
+
const ImgResourceType = "imgpack";
|
|
19
|
+
const ImageBinDid = "z8ia1mAXo8ZE7ytGF36L5uBf9kD2kenhqFGp9";
|
|
20
|
+
let skipRunningCheck = false;
|
|
21
|
+
let mediaKitInfo = null;
|
|
22
|
+
let resourceTypes = [{
|
|
23
|
+
type: ImgResourceType,
|
|
24
|
+
did: ImageBinDid,
|
|
25
|
+
folder: ""
|
|
26
|
+
// default is root, can be set to 'public' or 'assets' or any other folder
|
|
27
|
+
}];
|
|
28
|
+
let canUseResources = [];
|
|
29
|
+
const mappingResource = async () => {
|
|
30
|
+
mediaKitInfo = config.components.find(item => item.did === ImageBinDid);
|
|
31
|
+
if (mediaKitInfo) {
|
|
32
|
+
mediaKitInfo.uploadsDir = config.env.dataDir.replace(/\/[^/]*$/, "/image-bin/uploads");
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
const resources = getResources({
|
|
36
|
+
types: resourceTypes,
|
|
37
|
+
skipRunningCheck
|
|
38
|
+
});
|
|
39
|
+
canUseResources = resources.map(resource => {
|
|
40
|
+
const originDir = resource.path;
|
|
41
|
+
const resourceType = resourceTypes.find(({
|
|
42
|
+
type
|
|
43
|
+
}) => originDir.endsWith(type));
|
|
44
|
+
if (!existsSync(originDir) || !resourceType) {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
const {
|
|
48
|
+
folder = ""
|
|
49
|
+
} = resourceType;
|
|
50
|
+
return {
|
|
51
|
+
originDir,
|
|
52
|
+
dir: join(originDir, folder || ""),
|
|
53
|
+
blockletInfo: resource
|
|
54
|
+
};
|
|
55
|
+
}).filter(Boolean);
|
|
56
|
+
logger.info("Mapping can use resources count: ", canUseResources.length
|
|
57
|
+
// canUseResources
|
|
58
|
+
);
|
|
59
|
+
return canUseResources;
|
|
60
|
+
} catch (error) {
|
|
61
|
+
console.error(error);
|
|
62
|
+
}
|
|
63
|
+
return false;
|
|
64
|
+
};
|
|
65
|
+
exports.mappingResource = mappingResource;
|
|
66
|
+
const {
|
|
67
|
+
events,
|
|
68
|
+
Events
|
|
69
|
+
} = config;
|
|
70
|
+
events.on(Events.componentAdded, () => mappingResource());
|
|
71
|
+
events.on(Events.componentRemoved, () => mappingResource());
|
|
72
|
+
events.on(Events.componentStarted, () => mappingResource());
|
|
73
|
+
events.on(Events.componentStopped, () => mappingResource());
|
|
74
|
+
events.on(Events.componentUpdated, () => mappingResource());
|
|
75
|
+
const initStaticResourceMiddleware = ({
|
|
76
|
+
options,
|
|
77
|
+
resourceTypes: _resourceTypes = resourceTypes,
|
|
78
|
+
express,
|
|
79
|
+
skipRunningCheck: _skipRunningCheck
|
|
80
|
+
} = {}) => {
|
|
81
|
+
skipRunningCheck = !!_skipRunningCheck;
|
|
82
|
+
if (_resourceTypes?.length > 0) {
|
|
83
|
+
resourceTypes = _resourceTypes.map(item => {
|
|
84
|
+
if (typeof item === "string") {
|
|
85
|
+
return {
|
|
86
|
+
type: item,
|
|
87
|
+
did: ImageBinDid,
|
|
88
|
+
// not set did, default is ImageBinDid
|
|
89
|
+
folder: ""
|
|
90
|
+
// not set folder, default is root
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
return item;
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
mappingResource();
|
|
97
|
+
return (req, res, next) => {
|
|
98
|
+
const urlPath = new URL(`http://localhost${req.url}`).pathname;
|
|
99
|
+
const matchCanUseResourceItem = canUseResources.find(item => existsSync(join(item.dir, urlPath)));
|
|
100
|
+
if (matchCanUseResourceItem) {
|
|
101
|
+
express.static(matchCanUseResourceItem.dir, {
|
|
102
|
+
maxAge: "365d",
|
|
103
|
+
immutable: true,
|
|
104
|
+
index: false,
|
|
105
|
+
// fallthrough: false,
|
|
106
|
+
...options
|
|
107
|
+
})(req, res, next);
|
|
108
|
+
} else {
|
|
109
|
+
res.status(404).end();
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
exports.initStaticResourceMiddleware = initStaticResourceMiddleware;
|
|
114
|
+
const getCanUseResources = () => canUseResources;
|
|
115
|
+
exports.getCanUseResources = getCanUseResources;
|
|
116
|
+
const initProxyToMediaKitUploadsMiddleware = ({
|
|
117
|
+
options,
|
|
118
|
+
express
|
|
119
|
+
} = {}) => {
|
|
120
|
+
return (req, res, next) => {
|
|
121
|
+
if (!mediaKitInfo?.uploadsDir) {
|
|
122
|
+
return next();
|
|
123
|
+
}
|
|
124
|
+
return express.static(mediaKitInfo.uploadsDir, {
|
|
125
|
+
maxAge: "365d",
|
|
126
|
+
immutable: true,
|
|
127
|
+
index: false,
|
|
128
|
+
// fallthrough: false,
|
|
129
|
+
...options
|
|
130
|
+
})(req, res, next);
|
|
131
|
+
};
|
|
132
|
+
};
|
|
133
|
+
exports.initProxyToMediaKitUploadsMiddleware = initProxyToMediaKitUploadsMiddleware;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _localStorage = require("./middlewares/local-storage");
|
|
7
|
+
Object.keys(_localStorage).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _localStorage[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _localStorage[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
var _companion = require("./middlewares/companion");
|
|
18
|
+
Object.keys(_companion).forEach(function (key) {
|
|
19
|
+
if (key === "default" || key === "__esModule") return;
|
|
20
|
+
if (key in exports && exports[key] === _companion[key]) return;
|
|
21
|
+
Object.defineProperty(exports, key, {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () {
|
|
24
|
+
return _companion[key];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
var _staticResource = require("./middlewares/static-resource");
|
|
29
|
+
Object.keys(_staticResource).forEach(function (key) {
|
|
30
|
+
if (key === "default" || key === "__esModule") return;
|
|
31
|
+
if (key in exports && exports[key] === _staticResource[key]) return;
|
|
32
|
+
Object.defineProperty(exports, key, {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function () {
|
|
35
|
+
return _staticResource[key];
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|
package/lib/types.d.ts
ADDED
|
File without changes
|
package/lib/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
package/lib/utils.d.ts
ADDED
|
File without changes
|
package/lib/utils.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
package/package.json
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@blocklet/uploader-server",
|
|
3
|
+
"version": "0.1.49",
|
|
4
|
+
"description": "blocklet upload server",
|
|
5
|
+
"publishConfig": {
|
|
6
|
+
"access": "public"
|
|
7
|
+
},
|
|
8
|
+
"sideEffects": false,
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"require": "./lib/index.js",
|
|
12
|
+
"import": "./es/index.js",
|
|
13
|
+
"types": "./lib/index.d.ts"
|
|
14
|
+
},
|
|
15
|
+
"./middlewares": {
|
|
16
|
+
"require": "./lib/middlewares.js",
|
|
17
|
+
"import": "./es/middlewares.js",
|
|
18
|
+
"types": "./lib/middlewares.d.ts"
|
|
19
|
+
},
|
|
20
|
+
"./lib/": "./lib/",
|
|
21
|
+
"./es/": "./es/"
|
|
22
|
+
},
|
|
23
|
+
"files": [
|
|
24
|
+
"lib",
|
|
25
|
+
"es",
|
|
26
|
+
"*.d.ts"
|
|
27
|
+
],
|
|
28
|
+
"keywords": [
|
|
29
|
+
"blocklet",
|
|
30
|
+
"uploader",
|
|
31
|
+
"server"
|
|
32
|
+
],
|
|
33
|
+
"author": "arcblock <blocklet@arcblock.io> https://github.com/blocklet",
|
|
34
|
+
"license": "ISC",
|
|
35
|
+
"peerDependencies": {
|
|
36
|
+
"@tus/file-store": "1.0.0",
|
|
37
|
+
"@tus/server": "1.0.0",
|
|
38
|
+
"@uppy/companion": "4.15.1"
|
|
39
|
+
},
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@abtnode/cron": "1.16.33-beta-20241001-015316-119b726d",
|
|
42
|
+
"@blocklet/constant": "1.16.33-beta-20241001-015316-119b726d",
|
|
43
|
+
"@blocklet/logger": "1.16.33-beta-20241001-015316-119b726d",
|
|
44
|
+
"@blocklet/sdk": "1.16.33-beta-20241001-015316-119b726d",
|
|
45
|
+
"@tus/file-store": "1.0.0",
|
|
46
|
+
"@tus/server": "1.0.0",
|
|
47
|
+
"@uppy/companion": "4.15.1",
|
|
48
|
+
"body-parser": "^1.20.2",
|
|
49
|
+
"express-session": "1.17.3",
|
|
50
|
+
"mime-types": "^2.1.35",
|
|
51
|
+
"p-queue": "^6.6.2",
|
|
52
|
+
"ufo": "^1.5.3",
|
|
53
|
+
"url-join": "^4.0.1",
|
|
54
|
+
"crypto": "^1.0.1"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"@arcblock/eslint-config-ts": "^0.2.4",
|
|
58
|
+
"@types/express": "^4.17.21",
|
|
59
|
+
"@types/mime-types": "^2.1.4",
|
|
60
|
+
"@types/node": "^20.12.7",
|
|
61
|
+
"@types/url-join": "^4.0.3",
|
|
62
|
+
"@vitest/coverage-c8": "^0.33.0",
|
|
63
|
+
"typescript": "^5.4.5",
|
|
64
|
+
"unbuild": "^2.0.0",
|
|
65
|
+
"vitest": "^1.5.0",
|
|
66
|
+
"vitest-fetch-mock": "^0.2.2"
|
|
67
|
+
},
|
|
68
|
+
"scripts": {
|
|
69
|
+
"coverage": "pnpm test -- --coverage",
|
|
70
|
+
"test": "vitest tests",
|
|
71
|
+
"build": "unbuild",
|
|
72
|
+
"build:watch": "npx nodemon --ext 'ts,tsx,json,js,jsx' --exec 'pnpm run build' --ignore 'lib/*' --ignore 'es/*' ",
|
|
73
|
+
"dev": "pnpm run build:watch",
|
|
74
|
+
"prepublish": "pnpm run build",
|
|
75
|
+
"prebuild:dep": "pnpm run build"
|
|
76
|
+
}
|
|
77
|
+
}
|