@nocobase/plugin-file-manager 0.5.0-alpha.20 → 0.5.0-alpha.24

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["storages/local.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAM5B,wBAAgB,eAAe,CAAC,OAAO,KAAA,GAAG,MAAM,CAM/C;AAGD,wBAAgB,UAAU,CAAC,GAAG,KAAA,OA8C7B;;AAED,wBAQG","file":"local.d.ts","sourcesContent":["import path from 'path';\nimport { URL } from 'url';\nimport mkdirp from 'mkdirp';\nimport multer from 'multer';\nimport serve from 'koa-static';\nimport mount from 'koa-mount';\nimport { STORAGE_TYPE_LOCAL } from '../constants';\nimport { getFilename } from '../utils';\n\nexport function getDocumentRoot(storage): string {\n const { documentRoot = 'uploads' } = storage.options || {};\n // TODO(feature): 后面考虑以字符串模板的方式使用,可注入 req/action 相关变量,以便于区分文件夹\n return path.resolve(path.isAbsolute(documentRoot)\n ? documentRoot\n : path.join(process.env.PWD, documentRoot), storage.path);\n}\n\n// TODO(optimize): 初始化的时机不应该放在中间件里\nexport function middleware(app) {\n const storages = new Map<string, any>();\n const StorageModel = app.db.getModel('storages');\n\n return app.use(async function (ctx, next) {\n const items = await StorageModel.findAll({\n where: {\n type: STORAGE_TYPE_LOCAL,\n }\n });\n\n const primaryKey = StorageModel.primaryKeyAttribute;\n\n for (const storage of items) {\n\n // TODO:未解决 storage 更新问题\n if (storages.has(storage[primaryKey])) {\n continue;\n }\n\n const baseUrl = storage.get('baseUrl');\n\n let url;\n try {\n url = new URL(baseUrl);\n } catch (e) {\n url = {\n protocol: 'http:',\n hostname: 'localhost',\n port: process.env.API_PORT,\n pathname: baseUrl\n };\n }\n\n // 以下情况才认为当前进程所应该提供静态服务\n // 否则都忽略,交给其他 server 来提供(如 nginx/cdn 等)\n // TODO(bug): https、端口 80 默认值和其他本地 ip/hostname 的情况未考虑\n // TODO 实际应该用 NOCOBASE_ENV 来判断,或者抛给 env 处理\n if (process.env.LOCAL_STORAGE_USE_STATIC_SERVER) {\n const basePath = url.pathname.startsWith('/') ? url.pathname : `/${url.pathname}`;\n app.use(mount(basePath, serve(getDocumentRoot(storage))));\n }\n storages.set(storage.primaryKey, storage);\n }\n await next();\n });\n}\n\nexport default (storage) => multer.diskStorage({\n destination: function (req, file, cb) {\n const destPath = getDocumentRoot(storage);\n mkdirp(destPath).then(() => {\n cb(null, destPath);\n }).catch(cb);\n },\n filename: getFilename\n});\n"]}
1
+ {"version":3,"sources":["storages/local.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAM5B,wBAAgB,eAAe,CAAC,OAAO,KAAA,GAAG,MAAM,CAM/C;AAGD,wBAAgB,UAAU,CAAC,GAAG,KAAA,OA8C7B;;AAED,wBAQG","file":"local.d.ts","sourcesContent":["import path from 'path';\nimport { URL } from 'url';\nimport mkdirp from 'mkdirp';\nimport multer from 'multer';\nimport serve from 'koa-static';\nimport mount from 'koa-mount';\nimport { STORAGE_TYPE_LOCAL } from '../constants';\nimport { getFilename } from '../utils';\n\nexport function getDocumentRoot(storage): string {\n const { documentRoot = 'uploads' } = storage.options || {};\n // TODO(feature): 后面考虑以字符串模板的方式使用,可注入 req/action 相关变量,以便于区分文件夹\n return path.resolve(path.isAbsolute(documentRoot)\n ? documentRoot\n : path.join(process.cwd(), documentRoot), storage.path);\n}\n\n// TODO(optimize): 初始化的时机不应该放在中间件里\nexport function middleware(app) {\n const storages = new Map<string, any>();\n const StorageModel = app.db.getModel('storages');\n\n return app.use(async function (ctx, next) {\n const items = await StorageModel.findAll({\n where: {\n type: STORAGE_TYPE_LOCAL,\n }\n });\n\n const primaryKey = StorageModel.primaryKeyAttribute;\n\n for (const storage of items) {\n\n // TODO:未解决 storage 更新问题\n if (storages.has(storage[primaryKey])) {\n continue;\n }\n\n const baseUrl = storage.get('baseUrl');\n\n let url;\n try {\n url = new URL(baseUrl);\n } catch (e) {\n url = {\n protocol: 'http:',\n hostname: 'localhost',\n port: process.env.API_PORT,\n pathname: baseUrl\n };\n }\n\n // 以下情况才认为当前进程所应该提供静态服务\n // 否则都忽略,交给其他 server 来提供(如 nginx/cdn 等)\n // TODO(bug): https、端口 80 默认值和其他本地 ip/hostname 的情况未考虑\n // TODO 实际应该用 NOCOBASE_ENV 来判断,或者抛给 env 处理\n if (process.env.LOCAL_STORAGE_USE_STATIC_SERVER) {\n const basePath = url.pathname.startsWith('/') ? url.pathname : `/${url.pathname}`;\n app.use(mount(basePath, serve(getDocumentRoot(storage))));\n }\n storages.set(storage.primaryKey, storage);\n }\n await next();\n });\n}\n\nexport default (storage) => multer.diskStorage({\n destination: function (req, file, cb) {\n const destPath = getDocumentRoot(storage);\n mkdirp(destPath).then(() => {\n cb(null, destPath);\n }).catch(cb);\n },\n filename: getFilename\n});\n"]}
@@ -82,7 +82,7 @@ function getDocumentRoot(storage) {
82
82
  _ref$documentRoot = _ref.documentRoot,
83
83
  documentRoot = _ref$documentRoot === void 0 ? 'uploads' : _ref$documentRoot;
84
84
 
85
- return path_1.default.resolve(path_1.default.isAbsolute(documentRoot) ? documentRoot : path_1.default.join(process.env.PWD, documentRoot), storage.path);
85
+ return path_1.default.resolve(path_1.default.isAbsolute(documentRoot) ? documentRoot : path_1.default.join(process.cwd(), documentRoot), storage.path);
86
86
  }
87
87
 
88
88
  exports.getDocumentRoot = getDocumentRoot;
@@ -1 +1 @@
1
- {"version":3,"sources":["storages/local.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gDAAwB;AACxB,6BAA0B;AAC1B,oDAA4B;AAC5B,oDAA4B;AAC5B,4DAA+B;AAC/B,0DAA8B;AAC9B,4CAAkD;AAClD,oCAAuC;AAEvC,SAAgB,eAAe,CAAC,OAAO;IACrC,MAAM,EAAE,YAAY,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IAE3D,OAAO,cAAI,CAAC,OAAO,CAAC,cAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAC/C,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC;AAND,0CAMC;AAGD,SAAgB,UAAU,CAAC,GAAG;IAC5B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAe,CAAC;IACxC,MAAM,YAAY,GAAG,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAEjD,OAAO,GAAG,CAAC,GAAG,CAAC,UAAgB,GAAG,EAAE,IAAI;;YACtC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC;gBACvC,KAAK,EAAE;oBACL,IAAI,EAAE,8BAAkB;iBACzB;aACF,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,YAAY,CAAC,mBAAmB,CAAC;YAEpD,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE;gBAG3B,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE;oBACrC,SAAS;iBACV;gBAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAEvC,IAAI,GAAG,CAAC;gBACR,IAAI;oBACF,GAAG,GAAG,IAAI,SAAG,CAAC,OAAO,CAAC,CAAC;iBACxB;gBAAC,OAAO,CAAC,EAAE;oBACV,GAAG,GAAG;wBACJ,QAAQ,EAAE,OAAO;wBACjB,QAAQ,EAAE,WAAW;wBACrB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ;wBAC1B,QAAQ,EAAE,OAAO;qBAClB,CAAC;iBACH;gBAMD,IAAI,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE;oBAC/C,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;oBAClF,GAAG,CAAC,GAAG,CAAC,mBAAK,CAAC,QAAQ,EAAE,oBAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC3D;gBACD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;aAC3C;YACD,MAAM,IAAI,EAAE,CAAC;QACf,CAAC;KAAA,CAAC,CAAC;AACL,CAAC;AA9CD,gCA8CC;AAED,kBAAe,CAAC,OAAO,EAAE,EAAE,CAAC,gBAAM,CAAC,WAAW,CAAC;IAC7C,WAAW,EAAE,UAAU,GAAG,EAAE,IAAI,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAC1C,gBAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACzB,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACf,CAAC;IACD,QAAQ,EAAE,mBAAW;CACtB,CAAC,CAAC","file":"local.js","sourcesContent":["import path from 'path';\nimport { URL } from 'url';\nimport mkdirp from 'mkdirp';\nimport multer from 'multer';\nimport serve from 'koa-static';\nimport mount from 'koa-mount';\nimport { STORAGE_TYPE_LOCAL } from '../constants';\nimport { getFilename } from '../utils';\n\nexport function getDocumentRoot(storage): string {\n const { documentRoot = 'uploads' } = storage.options || {};\n // TODO(feature): 后面考虑以字符串模板的方式使用,可注入 req/action 相关变量,以便于区分文件夹\n return path.resolve(path.isAbsolute(documentRoot)\n ? documentRoot\n : path.join(process.env.PWD, documentRoot), storage.path);\n}\n\n// TODO(optimize): 初始化的时机不应该放在中间件里\nexport function middleware(app) {\n const storages = new Map<string, any>();\n const StorageModel = app.db.getModel('storages');\n\n return app.use(async function (ctx, next) {\n const items = await StorageModel.findAll({\n where: {\n type: STORAGE_TYPE_LOCAL,\n }\n });\n\n const primaryKey = StorageModel.primaryKeyAttribute;\n\n for (const storage of items) {\n\n // TODO:未解决 storage 更新问题\n if (storages.has(storage[primaryKey])) {\n continue;\n }\n\n const baseUrl = storage.get('baseUrl');\n\n let url;\n try {\n url = new URL(baseUrl);\n } catch (e) {\n url = {\n protocol: 'http:',\n hostname: 'localhost',\n port: process.env.API_PORT,\n pathname: baseUrl\n };\n }\n\n // 以下情况才认为当前进程所应该提供静态服务\n // 否则都忽略,交给其他 server 来提供(如 nginx/cdn 等)\n // TODO(bug): https、端口 80 默认值和其他本地 ip/hostname 的情况未考虑\n // TODO 实际应该用 NOCOBASE_ENV 来判断,或者抛给 env 处理\n if (process.env.LOCAL_STORAGE_USE_STATIC_SERVER) {\n const basePath = url.pathname.startsWith('/') ? url.pathname : `/${url.pathname}`;\n app.use(mount(basePath, serve(getDocumentRoot(storage))));\n }\n storages.set(storage.primaryKey, storage);\n }\n await next();\n });\n}\n\nexport default (storage) => multer.diskStorage({\n destination: function (req, file, cb) {\n const destPath = getDocumentRoot(storage);\n mkdirp(destPath).then(() => {\n cb(null, destPath);\n }).catch(cb);\n },\n filename: getFilename\n});\n"]}
1
+ {"version":3,"sources":["storages/local.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gDAAwB;AACxB,6BAA0B;AAC1B,oDAA4B;AAC5B,oDAA4B;AAC5B,4DAA+B;AAC/B,0DAA8B;AAC9B,4CAAkD;AAClD,oCAAuC;AAEvC,SAAgB,eAAe,CAAC,OAAO;IACrC,MAAM,EAAE,YAAY,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IAE3D,OAAO,cAAI,CAAC,OAAO,CAAC,cAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAC/C,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5D,CAAC;AAND,0CAMC;AAGD,SAAgB,UAAU,CAAC,GAAG;IAC5B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAe,CAAC;IACxC,MAAM,YAAY,GAAG,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAEjD,OAAO,GAAG,CAAC,GAAG,CAAC,UAAgB,GAAG,EAAE,IAAI;;YACtC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC;gBACvC,KAAK,EAAE;oBACL,IAAI,EAAE,8BAAkB;iBACzB;aACF,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,YAAY,CAAC,mBAAmB,CAAC;YAEpD,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE;gBAG3B,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE;oBACrC,SAAS;iBACV;gBAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAEvC,IAAI,GAAG,CAAC;gBACR,IAAI;oBACF,GAAG,GAAG,IAAI,SAAG,CAAC,OAAO,CAAC,CAAC;iBACxB;gBAAC,OAAO,CAAC,EAAE;oBACV,GAAG,GAAG;wBACJ,QAAQ,EAAE,OAAO;wBACjB,QAAQ,EAAE,WAAW;wBACrB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ;wBAC1B,QAAQ,EAAE,OAAO;qBAClB,CAAC;iBACH;gBAMD,IAAI,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE;oBAC/C,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;oBAClF,GAAG,CAAC,GAAG,CAAC,mBAAK,CAAC,QAAQ,EAAE,oBAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC3D;gBACD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;aAC3C;YACD,MAAM,IAAI,EAAE,CAAC;QACf,CAAC;KAAA,CAAC,CAAC;AACL,CAAC;AA9CD,gCA8CC;AAED,kBAAe,CAAC,OAAO,EAAE,EAAE,CAAC,gBAAM,CAAC,WAAW,CAAC;IAC7C,WAAW,EAAE,UAAU,GAAG,EAAE,IAAI,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAC1C,gBAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACzB,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACf,CAAC;IACD,QAAQ,EAAE,mBAAW;CACtB,CAAC,CAAC","file":"local.js","sourcesContent":["import path from 'path';\nimport { URL } from 'url';\nimport mkdirp from 'mkdirp';\nimport multer from 'multer';\nimport serve from 'koa-static';\nimport mount from 'koa-mount';\nimport { STORAGE_TYPE_LOCAL } from '../constants';\nimport { getFilename } from '../utils';\n\nexport function getDocumentRoot(storage): string {\n const { documentRoot = 'uploads' } = storage.options || {};\n // TODO(feature): 后面考虑以字符串模板的方式使用,可注入 req/action 相关变量,以便于区分文件夹\n return path.resolve(path.isAbsolute(documentRoot)\n ? documentRoot\n : path.join(process.cwd(), documentRoot), storage.path);\n}\n\n// TODO(optimize): 初始化的时机不应该放在中间件里\nexport function middleware(app) {\n const storages = new Map<string, any>();\n const StorageModel = app.db.getModel('storages');\n\n return app.use(async function (ctx, next) {\n const items = await StorageModel.findAll({\n where: {\n type: STORAGE_TYPE_LOCAL,\n }\n });\n\n const primaryKey = StorageModel.primaryKeyAttribute;\n\n for (const storage of items) {\n\n // TODO:未解决 storage 更新问题\n if (storages.has(storage[primaryKey])) {\n continue;\n }\n\n const baseUrl = storage.get('baseUrl');\n\n let url;\n try {\n url = new URL(baseUrl);\n } catch (e) {\n url = {\n protocol: 'http:',\n hostname: 'localhost',\n port: process.env.API_PORT,\n pathname: baseUrl\n };\n }\n\n // 以下情况才认为当前进程所应该提供静态服务\n // 否则都忽略,交给其他 server 来提供(如 nginx/cdn 等)\n // TODO(bug): https、端口 80 默认值和其他本地 ip/hostname 的情况未考虑\n // TODO 实际应该用 NOCOBASE_ENV 来判断,或者抛给 env 处理\n if (process.env.LOCAL_STORAGE_USE_STATIC_SERVER) {\n const basePath = url.pathname.startsWith('/') ? url.pathname : `/${url.pathname}`;\n app.use(mount(basePath, serve(getDocumentRoot(storage))));\n }\n storages.set(storage.primaryKey, storage);\n }\n await next();\n });\n}\n\nexport default (storage) => multer.diskStorage({\n destination: function (req, file, cb) {\n const destPath = getDocumentRoot(storage);\n mkdirp(destPath).then(() => {\n cb(null, destPath);\n }).catch(cb);\n },\n filename: getFilename\n});\n"]}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@nocobase/plugin-file-manager",
3
- "version": "0.5.0-alpha.20",
3
+ "version": "0.5.0-alpha.24",
4
4
  "main": "lib/index.js",
5
5
  "license": "MIT",
6
6
  "dependencies": {
7
7
  "@koa/multer": "^3.0.0",
8
- "@nocobase/server": "^0.5.0-alpha.20",
8
+ "@nocobase/server": "^0.5.0-alpha.24",
9
9
  "ali-oss": "^6.12.0",
10
10
  "koa-mount": "^4.0.0",
11
11
  "koa-static": "^5.0.0",
@@ -13,8 +13,8 @@
13
13
  "multer": "^1.4.2"
14
14
  },
15
15
  "devDependencies": {
16
- "@nocobase/test": "^0.5.0-alpha.20",
16
+ "@nocobase/test": "^0.5.0-alpha.24",
17
17
  "@types/multer": "^1.4.5"
18
18
  },
19
- "gitHead": "d80c875d5e3acacf2f682c954f3b6e63c0386340"
19
+ "gitHead": "b5c587fc94ee321e6cbb1c5627d7779c7ba1cb11"
20
20
  }