@nocobase/plugin-file-manager 0.7.0-alpha.2 → 0.7.0-alpha.20
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/esm/storages/local.d.ts
CHANGED
package/esm/storages/local.js
CHANGED
|
@@ -121,6 +121,9 @@ export default {
|
|
|
121
121
|
type: STORAGE_TYPE_LOCAL,
|
|
122
122
|
name: `local`,
|
|
123
123
|
baseUrl: process.env.LOCAL_STORAGE_BASE_URL || `http://localhost:${process.env.SERVER_PORT || '13002'}/uploads`,
|
|
124
|
+
options: {
|
|
125
|
+
documentRoot: process.env.LOCAL_STORAGE_DEST || 'uploads',
|
|
126
|
+
},
|
|
124
127
|
};
|
|
125
128
|
},
|
|
126
129
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/storages/local.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/storages/local.ts"],"names":[],"mappings":"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","sourcesContent":["import Application from '@nocobase/server';\nimport serve from 'koa-static';\nimport mkdirp from 'mkdirp';\nimport multer from 'multer';\nimport path from 'path';\nimport { URL } from 'url';\nimport { STORAGE_TYPE_LOCAL } from '../constants';\nimport { getFilename } from '../utils';\n\n// use koa-mount match logic\nfunction match(basePath: string, pathname: string): boolean {\n if (!pathname.startsWith(basePath)) {\n return false;\n }\n\n const newPath = pathname.replace(basePath, '') || '/';\n if (basePath.slice(-1) === '/') {\n return true;\n }\n\n return newPath[0] === '/';\n}\n\nasync function update(app: Application, storages) {\n const Storage = app.db.getCollection('storages');\n\n const items = await Storage.repository.find({\n filter: {\n type: STORAGE_TYPE_LOCAL,\n },\n });\n\n const primaryKey = Storage.model.primaryKeyAttribute;\n\n storages.clear();\n for (const storage of items) {\n storages.set(storage[primaryKey], storage);\n }\n}\n\nfunction createLocalServerUpdateHook(app, storages) {\n return async function (row) {\n if (row.get('type') === STORAGE_TYPE_LOCAL) {\n await update(app, storages);\n }\n };\n}\n\nfunction getDocumentRoot(storage): string {\n const { documentRoot = 'uploads' } = storage.options || {};\n // TODO(feature): 后面考虑以字符串模板的方式使用,可注入 req/action 相关变量,以便于区分文件夹\n return path.resolve(path.isAbsolute(documentRoot) ? documentRoot : path.join(process.cwd(), documentRoot));\n}\n\nasync function middleware(app: Application, options?) {\n const LOCALHOST = `http://localhost:${process.env.SERVER_PORT || '13002'}`;\n\n const Storage = app.db.getCollection('storages');\n const storages = new Map<string, any>();\n\n const localServerUpdateHook = createLocalServerUpdateHook(app, storages);\n Storage.model.addHook('afterCreate', localServerUpdateHook);\n Storage.model.addHook('afterUpdate', localServerUpdateHook);\n Storage.model.addHook('afterDestroy', localServerUpdateHook);\n\n app.on('beforeStart', async () => {\n await update(app, storages);\n });\n\n app.use(async function (ctx, next) {\n for (const storage of storages.values()) {\n const baseUrl = storage.get('baseUrl');\n\n let url;\n try {\n url = new URL(baseUrl);\n } catch (e) {\n url = {\n pathname: baseUrl,\n };\n }\n\n // 以下情况才认为当前进程所应该提供静态服务\n // 否则都忽略,交给其他 server 来提供(如 nginx/cdn 等)\n if (url.origin && storage?.options?.serve === false) {\n continue;\n }\n\n const basePath = url.pathname.startsWith('/') ? url.pathname : `/${url.pathname}`;\n\n if (!match(basePath, ctx.path)) {\n continue;\n }\n\n return serve(getDocumentRoot(storage), {\n // for handle files after any api handlers\n defer: true,\n })(ctx, async () => {\n if (ctx.path.startsWith(basePath)) {\n ctx.path = ctx.path.replace(basePath, '');\n }\n await next();\n });\n }\n\n await next();\n });\n}\n\nexport default {\n middleware,\n make(storage) {\n return multer.diskStorage({\n destination: function (req, file, cb) {\n const destPath = path.join(getDocumentRoot(storage), storage.path);\n mkdirp(destPath, (err: Error | null) => cb(err, destPath));\n },\n filename: getFilename,\n });\n },\n defaults() {\n return {\n title: '本地存储',\n type: STORAGE_TYPE_LOCAL,\n name: `local`,\n baseUrl: process.env.LOCAL_STORAGE_BASE_URL || `http://localhost:${process.env.SERVER_PORT || '13002'}/uploads`,\n options: {\n documentRoot: process.env.LOCAL_STORAGE_DEST || 'uploads',\n },\n };\n },\n};\n"]}
|
package/lib/storages/local.d.ts
CHANGED
package/lib/storages/local.js
CHANGED
|
@@ -126,6 +126,9 @@ exports.default = {
|
|
|
126
126
|
type: constants_1.STORAGE_TYPE_LOCAL,
|
|
127
127
|
name: `local`,
|
|
128
128
|
baseUrl: process.env.LOCAL_STORAGE_BASE_URL || `http://localhost:${process.env.SERVER_PORT || '13002'}/uploads`,
|
|
129
|
+
options: {
|
|
130
|
+
documentRoot: process.env.LOCAL_STORAGE_DEST || 'uploads',
|
|
131
|
+
},
|
|
129
132
|
};
|
|
130
133
|
},
|
|
131
134
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/storages/local.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/storages/local.ts"],"names":[],"mappings":"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","sourcesContent":["import Application from '@nocobase/server';\nimport serve from 'koa-static';\nimport mkdirp from 'mkdirp';\nimport multer from 'multer';\nimport path from 'path';\nimport { URL } from 'url';\nimport { STORAGE_TYPE_LOCAL } from '../constants';\nimport { getFilename } from '../utils';\n\n// use koa-mount match logic\nfunction match(basePath: string, pathname: string): boolean {\n if (!pathname.startsWith(basePath)) {\n return false;\n }\n\n const newPath = pathname.replace(basePath, '') || '/';\n if (basePath.slice(-1) === '/') {\n return true;\n }\n\n return newPath[0] === '/';\n}\n\nasync function update(app: Application, storages) {\n const Storage = app.db.getCollection('storages');\n\n const items = await Storage.repository.find({\n filter: {\n type: STORAGE_TYPE_LOCAL,\n },\n });\n\n const primaryKey = Storage.model.primaryKeyAttribute;\n\n storages.clear();\n for (const storage of items) {\n storages.set(storage[primaryKey], storage);\n }\n}\n\nfunction createLocalServerUpdateHook(app, storages) {\n return async function (row) {\n if (row.get('type') === STORAGE_TYPE_LOCAL) {\n await update(app, storages);\n }\n };\n}\n\nfunction getDocumentRoot(storage): string {\n const { documentRoot = 'uploads' } = storage.options || {};\n // TODO(feature): 后面考虑以字符串模板的方式使用,可注入 req/action 相关变量,以便于区分文件夹\n return path.resolve(path.isAbsolute(documentRoot) ? documentRoot : path.join(process.cwd(), documentRoot));\n}\n\nasync function middleware(app: Application, options?) {\n const LOCALHOST = `http://localhost:${process.env.SERVER_PORT || '13002'}`;\n\n const Storage = app.db.getCollection('storages');\n const storages = new Map<string, any>();\n\n const localServerUpdateHook = createLocalServerUpdateHook(app, storages);\n Storage.model.addHook('afterCreate', localServerUpdateHook);\n Storage.model.addHook('afterUpdate', localServerUpdateHook);\n Storage.model.addHook('afterDestroy', localServerUpdateHook);\n\n app.on('beforeStart', async () => {\n await update(app, storages);\n });\n\n app.use(async function (ctx, next) {\n for (const storage of storages.values()) {\n const baseUrl = storage.get('baseUrl');\n\n let url;\n try {\n url = new URL(baseUrl);\n } catch (e) {\n url = {\n pathname: baseUrl,\n };\n }\n\n // 以下情况才认为当前进程所应该提供静态服务\n // 否则都忽略,交给其他 server 来提供(如 nginx/cdn 等)\n if (url.origin && storage?.options?.serve === false) {\n continue;\n }\n\n const basePath = url.pathname.startsWith('/') ? url.pathname : `/${url.pathname}`;\n\n if (!match(basePath, ctx.path)) {\n continue;\n }\n\n return serve(getDocumentRoot(storage), {\n // for handle files after any api handlers\n defer: true,\n })(ctx, async () => {\n if (ctx.path.startsWith(basePath)) {\n ctx.path = ctx.path.replace(basePath, '');\n }\n await next();\n });\n }\n\n await next();\n });\n}\n\nexport default {\n middleware,\n make(storage) {\n return multer.diskStorage({\n destination: function (req, file, cb) {\n const destPath = path.join(getDocumentRoot(storage), storage.path);\n mkdirp(destPath, (err: Error | null) => cb(err, destPath));\n },\n filename: getFilename,\n });\n },\n defaults() {\n return {\n title: '本地存储',\n type: STORAGE_TYPE_LOCAL,\n name: `local`,\n baseUrl: process.env.LOCAL_STORAGE_BASE_URL || `http://localhost:${process.env.SERVER_PORT || '13002'}/uploads`,\n options: {\n documentRoot: process.env.LOCAL_STORAGE_DEST || 'uploads',\n },\n };\n },\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nocobase/plugin-file-manager",
|
|
3
|
-
"version": "0.7.0-alpha.
|
|
3
|
+
"version": "0.7.0-alpha.20",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"licenses": [
|
|
@@ -16,18 +16,19 @@
|
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
18
|
"@koa/multer": "^3.0.0",
|
|
19
|
-
"@nocobase/server": "0.7.0-alpha.
|
|
19
|
+
"@nocobase/server": "0.7.0-alpha.20",
|
|
20
20
|
"aws-sdk": "^2.2.32",
|
|
21
21
|
"koa-static": "^5.0.0",
|
|
22
22
|
"mime-match": "^1.0.2",
|
|
23
|
+
"mkdirp": "~0.5.4",
|
|
23
24
|
"multer": "^1.4.2",
|
|
24
25
|
"multer-aliyun-oss": "1.1.1",
|
|
25
26
|
"multer-s3": "^2.10.0"
|
|
26
27
|
},
|
|
27
28
|
"devDependencies": {
|
|
28
|
-
"@nocobase/test": "0.7.0-alpha.
|
|
29
|
+
"@nocobase/test": "0.7.0-alpha.20",
|
|
29
30
|
"@types/koa-multer": "^1.0.1",
|
|
30
31
|
"@types/multer": "^1.4.5"
|
|
31
32
|
},
|
|
32
|
-
"gitHead": "
|
|
33
|
+
"gitHead": "d2e0cbdb5d26ba66e87a9d7660b10f3ec30a3c4b"
|
|
33
34
|
}
|