@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.
@@ -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,3 @@
1
+ export * from './middlewares/local-storage';
2
+ export * from './middlewares/companion';
3
+ export * from './middlewares/static-resource';
@@ -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
+ }