@wangeditor-next/core 1.9.0 → 1.9.1

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/dist/upload.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(r,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("@uppy/core"),require("@uppy/xhr-upload"),require("lodash.foreach"),require("nanoid")):"function"==typeof define&&define.amd?define(["exports","@uppy/core","@uppy/xhr-upload","lodash.foreach","nanoid"],o):o((r="undefined"!=typeof globalThis?globalThis:r||self).WangEditorCoreUpload={},r.Uppy,r.XHRUpload,r.forEach)}(this,function(r,o,e,n){"use strict";var t=function(){return t=Object.assign||function(r){for(var o,e=1,n=arguments.length;e<n;e++)for(var t in o=arguments[e])Object.prototype.hasOwnProperty.call(o,t)&&(r[t]=o[t]);return r},t.apply(this,arguments)};function i(r,o){var e=function(r,o){var e="function"==typeof Symbol&&r[Symbol.iterator];if(!e)return r;var n,t,i=e.call(r),a=[];try{for(;(void 0===o||o-- >0)&&!(n=i.next()).done;)a.push(n.value)}catch(r){t={error:r}}finally{try{n&&!n.done&&(e=i.return)&&e.call(i)}finally{if(t)throw t.error}}return a}(r.split("#"),2),t=e[0],i=e[1],a=[];n(o,function(r,o){a.push("".concat(o,"=").concat(r))});var u=a.join("&");return t=t.indexOf("?")>0?"".concat(t,"&").concat(u):"".concat(t,"?").concat(u),i?"".concat(t,"#").concat(i):t}function a(r){return r||{name:""}}function u(r){return Object.keys(r).reduce(function(o,e){return o[e]=String(r[e]),o},{})}function c(){if("undefined"!=typeof AbortSignal){var r=AbortSignal;"function"!=typeof r.any&&(r.any=function(r){var o,e,n=new AbortController,t=function(o){r.forEach(function(r){return r.removeEventListener("abort",t)});var e=o.target.reason;n.abort(e)};try{for(var i=function(r){var o="function"==typeof Symbol&&Symbol.iterator,e=o&&r[o],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")}(r),a=i.next();!a.done;a=i.next()){var u=a.value;if(u.aborted){var c=u.reason;return n.abort(c),n.signal}u.addEventListener("abort",t,{once:!0})}}catch(r){o={error:r}}finally{try{a&&!a.done&&(e=i.return)&&e.call(i)}finally{if(o)throw o.error}}return n.signal})}}function f(r){var n=r.server,f=void 0===n?"":n,l=r.fieldName,d=void 0===l?"":l,p=r.maxFileSize,s=void 0===p?10485760:p,v=r.maxNumberOfFiles,y=void 0===v?100:v,h=r.meta,m=void 0===h?{}:h,b=r.metaWithUrl,g=void 0!==b&&b,w=r.headers,E=void 0===w?{}:w,x=r.withCredentials,S=void 0!==x&&x,U=r.timeout,C=void 0===U?1e4:U,O=r.onBeforeUpload,j=void 0===O?function(r){return r}:O,N=r.onSuccess,A=void 0===N?function(r,o){}:N,q=r.onError,F=void 0===q?function(r,o,e){console.error("".concat(r.name," upload error"),o,e)}:q,T=r.onProgress,z=void 0===T?function(r){}:T;if(!f)throw new Error("Cannot get upload server address\n没有配置上传地址");if(!d)throw new Error("Cannot get fieldName\n没有配置 fieldName");var B=f;g&&(B=i(B,m)),c();var L=function(r){if(r)return"function"==typeof r?function(o){return u(r(o))}:u(r)}(E),P=new o(t({onBeforeUpload:function(r){return j(r)},restrictions:{maxFileSize:s,maxNumberOfFiles:y},meta:m},r.uppyConfig)).use(e,t({endpoint:B,headers:L,formData:!0,fieldName:d,bundle:!1,withCredentials:S,timeout:C},r.xhrConfig));return P.on("upload-success",function(r,o){var e=(null!=o?o:{}).body,n=void 0===e?{}:e,t=a(r);try{A(t,n)}catch(r){console.error("wangEditor upload file - onSuccess error",r)}}),P.on("progress",function(r){r<1||z(r)}),P.on("upload-error",function(r,o,e){var n=a(r);try{F(n,o,e)}catch(r){console.error("wangEditor upload file - onError error",r)}}),P.on("restriction-failed",function(r,o){var e=a(r);try{F(e,o,void 0)}catch(r){console.error("wangEditor upload file - onError error",r)}}),P}"function"==typeof SuppressedError&&SuppressedError,r.createUploader=function(r,o){return r.uploadAdapter?r.uploadAdapter({config:r,editor:o}):f(r)},r.createUppyUploader=f});
1
+ !function(r,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("@uppy/core"),require("@uppy/xhr-upload"),require("lodash.foreach"),require("nanoid")):"function"==typeof define&&define.amd?define(["exports","@uppy/core","@uppy/xhr-upload","lodash.foreach","nanoid"],o):o((r="undefined"!=typeof globalThis?globalThis:r||self).WangEditorCoreUpload={},r.Uppy,r.XHRUpload,r.forEach)}(this,function(r,o,e,n){"use strict";var t=function(){return t=Object.assign||function(r){for(var o,e=1,n=arguments.length;e<n;e++)for(var t in o=arguments[e])Object.prototype.hasOwnProperty.call(o,t)&&(r[t]=o[t]);return r},t.apply(this,arguments)};function i(r,o){var e=function(r,o){var e="function"==typeof Symbol&&r[Symbol.iterator];if(!e)return r;var n,t,i=e.call(r),a=[];try{for(;(void 0===o||o-- >0)&&!(n=i.next()).done;)a.push(n.value)}catch(r){t={error:r}}finally{try{n&&!n.done&&(e=i.return)&&e.call(i)}finally{if(t)throw t.error}}return a}(r.split("#"),2),t=e[0],i=e[1],a=t,u=[];n(o,function(r,o){u.push("".concat(o,"=").concat(r))});var c=u.join("&");return a=a.indexOf("?")>0?"".concat(a,"&").concat(c):"".concat(a,"?").concat(c),i?"".concat(a,"#").concat(i):a}function a(r){return r||{name:""}}function u(r){return Object.keys(r).reduce(function(o,e){return o[e]=String(r[e]),o},{})}function c(){if("undefined"!=typeof AbortSignal){var r=AbortSignal;"function"!=typeof r.any&&(r.any=function(r){var o,e,n=new AbortController,t=function(o){r.forEach(function(r){return r.removeEventListener("abort",t)});var e=o.target.reason;n.abort(e)};try{for(var i=function(r){var o="function"==typeof Symbol&&Symbol.iterator,e=o&&r[o],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")}(r),a=i.next();!a.done;a=i.next()){var u=a.value;if(u.aborted){var c=u.reason;return n.abort(c),n.signal}u.addEventListener("abort",t,{once:!0})}}catch(r){o={error:r}}finally{try{a&&!a.done&&(e=i.return)&&e.call(i)}finally{if(o)throw o.error}}return n.signal})}}function f(r){var n=r.server,f=void 0===n?"":n,l=r.fieldName,d=void 0===l?"":l,p=r.maxFileSize,s=void 0===p?10485760:p,v=r.maxNumberOfFiles,y=void 0===v?100:v,h=r.meta,m=void 0===h?{}:h,b=r.metaWithUrl,g=void 0!==b&&b,w=r.headers,E=void 0===w?{}:w,x=r.withCredentials,S=void 0!==x&&x,U=r.timeout,C=void 0===U?1e4:U,O=r.onBeforeUpload,j=void 0===O?function(r){return r}:O,N=r.onSuccess,A=void 0===N?function(r,o){}:N,q=r.onError,F=void 0===q?function(r,o,e){console.error("".concat(r.name," upload error"),o,e)}:q,T=r.onProgress,z=void 0===T?function(r){}:T;if(!f)throw new Error("Cannot get upload server address\n没有配置上传地址");if(!d)throw new Error("Cannot get fieldName\n没有配置 fieldName");var B=f;g&&(B=i(B,m)),c();var L=function(r){if(r)return"function"==typeof r?function(o){return u(r(o))}:u(r)}(E),P=new o(t({onBeforeUpload:function(r){return j(r)},restrictions:{maxFileSize:s,maxNumberOfFiles:y},meta:m},r.uppyConfig)).use(e,t({endpoint:B,headers:L,formData:!0,fieldName:d,bundle:!1,withCredentials:S,timeout:C},r.xhrConfig));return P.on("upload-success",function(r,o){var e=(null!=o?o:{}).body,n=void 0===e?{}:e,t=a(r);try{A(t,n)}catch(r){console.error("wangEditor upload file - onSuccess error",r)}}),P.on("progress",function(r){r<1||z(r)}),P.on("upload-error",function(r,o,e){var n=a(r);try{F(n,o,e)}catch(r){console.error("wangEditor upload file - onError error",r)}}),P.on("restriction-failed",function(r,o){var e=a(r);try{F(e,o,void 0)}catch(r){console.error("wangEditor upload file - onError error",r)}}),P}"function"==typeof SuppressedError&&SuppressedError,r.createUploader=function(r,o){return r.uploadAdapter?r.uploadAdapter({config:r,editor:o}):f(r)},r.createUppyUploader=f});
2
2
  //# sourceMappingURL=upload.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"upload.js","sources":["../src/utils/util.ts","../src/upload/createUppyUploader.ts","../src/upload/createUploader.ts"],"sourcesContent":["/**\n * @description 工具函数\n * @author wangfupeng\n */\n\nimport forEach from 'lodash.foreach'\nimport { nanoid } from 'nanoid'\n\ntype PromiseCallback = (value: void) => void | PromiseLike<void>\n\n/**\n * 获取随机数字符串\n * @param prefix 前缀\n * @returns 随机数字符串\n */\nexport function genRandomStr(prefix: string = 'r'): string {\n return `${prefix}-${nanoid()}`\n}\n\nexport function promiseResolveThen(fn: Function) {\n Promise.resolve().then(fn as PromiseCallback)\n}\n\n/**\n * 追加 url query 参数\n * @param url url\n * @param data data\n */\nexport function addQueryToUrl(url: string, data: object): string {\n let [urlWithoutHash, hash] = url.split('#')\n\n // 拼接 query string\n const queryArr: string[] = []\n forEach(data, (val, key) => {\n queryArr.push(`${key}=${val}`)\n })\n const queryStr = queryArr.join('&')\n\n // 拼接到 url\n if (urlWithoutHash.indexOf('?') > 0) {\n // 已有 query\n urlWithoutHash = `${urlWithoutHash}&${queryStr}`\n } else {\n // 没有 query\n urlWithoutHash = `${urlWithoutHash}?${queryStr}`\n }\n\n // 返回拼接好的 url\n if (hash) {\n return `${urlWithoutHash}#${hash}`\n } else {\n return urlWithoutHash\n }\n}\n\n/**\n * 替换 html 特殊字符,如 > 替换为 &gt;\n * @param str html str\n */\nexport function replaceHtmlSpecialSymbols(str: string) {\n return (\n str\n /**\n * 遇到两个空格时才替换,一个空格不替换\n * 两个英文单词之间有一个空格,就不用替换,否则无法默认换行 issue #4403\n */\n .replace(/ {2}/g, ' &nbsp;')\n\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/®/g, '&reg;')\n .replace(/©/g, '&copy;')\n .replace(/™/g, '&trade;')\n )\n}\n\n/**\n *【反转】替换 html 特殊字符,如 &gt; 替换为 >\n * @param str html str\n */\nexport function deReplaceHtmlSpecialSymbols(str: string) {\n return str\n .replace(/&nbsp;/g, ' ')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&reg;/g, '®')\n .replace(/&copy;/g, '©')\n .replace(/&trade;/g, '™')\n .replace(/&quot;/g, '\"')\n}\n\nexport const toString = (val: unknown): string => Object.prototype.toString.call(val)\n","/**\n * @description create default uppy uploader\n * @author wangfupeng\n */\n\n// @ts-ignore Uppy v5 types are not resolvable under current TS moduleResolution=node\nimport Uppy from '@uppy/core'\n// @ts-ignore Uppy v5 types are not resolvable under current TS moduleResolution=node\nimport XHRUpload from '@uppy/xhr-upload'\n\nimport { addQueryToUrl } from '../utils/util'\nimport type {\n IUploadConfig, IUploader, IUploadHeaders, IUploadResultFile,\n} from './interface'\n\nfunction getUploadResultFile(file?: IUploadResultFile | null): IUploadResultFile {\n if (file) { return file }\n\n return { name: '' }\n}\n\nfunction normalizeHeaderValues(headers: IUploadHeaders): Record<string, string> {\n return Object.keys(headers).reduce<Record<string, string>>((res, key) => {\n res[key] = String(headers[key])\n return res\n }, {})\n}\n\nfunction normalizeHeaders(\n headers: IUploadConfig['headers'],\n): Record<string, string> | ((file: unknown) => Record<string, string>) | undefined {\n if (!headers) { return undefined }\n\n if (typeof headers === 'function') {\n return file => normalizeHeaderValues(headers(file as IUploadResultFile))\n }\n\n return normalizeHeaderValues(headers)\n}\n\nfunction ensureAbortSignalAny() {\n if (typeof AbortSignal === 'undefined') { return }\n\n const abortSignal = AbortSignal as typeof AbortSignal & {\n any?: (signals: AbortSignal[]) => AbortSignal\n }\n\n if (typeof abortSignal.any === 'function') { return }\n\n abortSignal.any = (signals: AbortSignal[]) => {\n const controller = new AbortController()\n\n const onAbort = (event: Event) => {\n signals.forEach(signal => signal.removeEventListener('abort', onAbort))\n const target = event.target as AbortSignal\n const reason = (target as AbortSignal & { reason?: unknown }).reason\n\n controller.abort(reason)\n }\n\n for (const signal of signals) {\n if (signal.aborted) {\n const reason = (signal as AbortSignal & { reason?: unknown }).reason\n\n controller.abort(reason)\n return controller.signal\n }\n signal.addEventListener('abort', onAbort, { once: true })\n }\n\n return controller.signal\n }\n}\n\nfunction createUppyUploader(config: IUploadConfig): IUploader {\n const {\n server = '',\n fieldName = '',\n maxFileSize = 10 * 1024 * 1024, // 10M\n maxNumberOfFiles = 100, // 最多多少个文件\n meta = {},\n metaWithUrl = false,\n headers = {},\n withCredentials = false,\n timeout = 10 * 1000, // 10s\n onBeforeUpload = files => files,\n onSuccess = (_file, _res) => {\n /* on success */\n },\n onError = (file, err, res?) => {\n console.error(`${file.name} upload error`, err, res)\n },\n onProgress = _progress => {\n /* on progress */\n },\n } = config\n\n if (!server) {\n throw new Error('Cannot get upload server address\\n没有配置上传地址')\n }\n if (!fieldName) {\n throw new Error('Cannot get fieldName\\n没有配置 fieldName')\n }\n\n let url = server\n\n if (metaWithUrl) {\n url = addQueryToUrl(url, meta)\n }\n\n ensureAbortSignalAny()\n const normalizedHeaders = normalizeHeaders(headers)\n\n const uppy = new Uppy({\n onBeforeUpload: files => onBeforeUpload(files) as any,\n restrictions: {\n maxFileSize,\n maxNumberOfFiles,\n },\n meta,\n ...config.uppyConfig,\n }).use(XHRUpload, {\n endpoint: url,\n headers: normalizedHeaders,\n formData: true,\n fieldName,\n bundle: false,\n withCredentials,\n timeout,\n ...config.xhrConfig,\n })\n\n uppy.on('upload-success', (file, response) => {\n const { body = {} } = response ?? {}\n const uploadFile = getUploadResultFile(file as IUploadResultFile | undefined)\n\n try {\n onSuccess(uploadFile, body)\n } catch (err) {\n console.error('wangEditor upload file - onSuccess error', err)\n }\n })\n\n uppy.on('progress', progress => {\n if (progress < 1) { return }\n onProgress(progress)\n })\n\n uppy.on('upload-error', (file, error, response) => {\n const uploadFile = getUploadResultFile(file as IUploadResultFile | undefined)\n\n try {\n onError(uploadFile, error, response)\n } catch (err) {\n console.error('wangEditor upload file - onError error', err)\n }\n })\n\n uppy.on('restriction-failed', (file, error) => {\n const uploadFile = getUploadResultFile(file as IUploadResultFile | undefined)\n\n try {\n onError(uploadFile, error, undefined)\n } catch (err) {\n console.error('wangEditor upload file - onError error', err)\n }\n })\n\n return uppy\n}\n\nexport default createUppyUploader\n","/**\n * @description gen uploader\n * @author wangfupeng\n */\n\nimport type { IDomEditor } from '../editor/interface'\nimport createUppyUploader from './createUppyUploader'\nimport type { IUploadAdapter, IUploadConfig, IUploader } from './interface'\n\ntype IUploadConfigWithAdapter = IUploadConfig & {\n uploadAdapter: IUploadAdapter\n}\ntype IDefaultUploader = IUploader & {\n [key: string]: any\n}\n\nfunction createUploader<T extends IUploadConfig>(\n config: T,\n editor?: IDomEditor,\n): T extends IUploadConfigWithAdapter ? IUploader : IDefaultUploader {\n if (config.uploadAdapter) {\n return config.uploadAdapter({ config, editor }) as T extends IUploadConfigWithAdapter\n ? IUploader\n : IDefaultUploader\n }\n\n return createUppyUploader(config) as T extends IUploadConfigWithAdapter\n ? IUploader\n : IDefaultUploader\n}\n\nexport default createUploader\n"],"names":["addQueryToUrl","url","data","_a","__read","split","urlWithoutHash","hash","queryArr","forEach","val","key","push","concat","queryStr","join","indexOf","getUploadResultFile","file","name","normalizeHeaderValues","headers","Object","keys","reduce","res","String","ensureAbortSignalAny","AbortSignal","abortSignal","any","signals","controller","AbortController","onAbort","event","signal","removeEventListener","reason","target","abort","signals_1","__values","signals_1_1","next","value","aborted","addEventListener","once","createUppyUploader","config","server","_b","fieldName","_c","maxFileSize","_d","maxNumberOfFiles","_e","meta","_f","metaWithUrl","_g","_h","withCredentials","_j","timeout","_k","onBeforeUpload","files","_l","onSuccess","_file","_res","_m","onError","err","console","error","_o","onProgress","_progress","Error","normalizedHeaders","normalizeHeaders","uppy","Uppy","__assign","restrictions","uppyConfig","use","XHRUpload","endpoint","formData","bundle","xhrConfig","on","response","body","uploadFile","progress","undefined","editor","uploadAdapter"],"mappings":"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"}
1
+ {"version":3,"file":"upload.js","sources":["../src/utils/util.ts","../src/upload/createUppyUploader.ts","../src/upload/createUploader.ts"],"sourcesContent":["/**\n * @description 工具函数\n * @author wangfupeng\n */\n\nimport forEach from 'lodash.foreach'\nimport { nanoid } from 'nanoid'\n\ntype PromiseCallback = (value: void) => void | PromiseLike<void>\n\n/**\n * 获取随机数字符串\n * @param prefix 前缀\n * @returns 随机数字符串\n */\nexport function genRandomStr(prefix: string = 'r'): string {\n return `${prefix}-${nanoid()}`\n}\n\nexport function promiseResolveThen(fn: Function) {\n Promise.resolve().then(fn as PromiseCallback)\n}\n\n/**\n * 追加 url query 参数\n * @param url url\n * @param data data\n */\nexport function addQueryToUrl(url: string, data: object): string {\n const [initialUrlWithoutHash, hash] = url.split('#')\n let urlWithoutHash = initialUrlWithoutHash\n\n // 拼接 query string\n const queryArr: string[] = []\n\n forEach(data, (val, key) => {\n queryArr.push(`${key}=${val}`)\n })\n const queryStr = queryArr.join('&')\n\n // 拼接到 url\n if (urlWithoutHash.indexOf('?') > 0) {\n // 已有 query\n urlWithoutHash = `${urlWithoutHash}&${queryStr}`\n } else {\n // 没有 query\n urlWithoutHash = `${urlWithoutHash}?${queryStr}`\n }\n\n // 返回拼接好的 url\n if (hash) {\n return `${urlWithoutHash}#${hash}`\n }\n return urlWithoutHash\n\n}\n\n/**\n * 替换 html 特殊字符,如 > 替换为 &gt;\n * @param str html str\n */\nexport function replaceHtmlSpecialSymbols(str: string) {\n return (\n str\n /**\n * 遇到两个空格时才替换,一个空格不替换\n * 两个英文单词之间有一个空格,就不用替换,否则无法默认换行 issue #4403\n */\n .replace(/ {2}/g, ' &nbsp;')\n\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/®/g, '&reg;')\n .replace(/©/g, '&copy;')\n .replace(/™/g, '&trade;')\n )\n}\n\n/**\n *【反转】替换 html 特殊字符,如 &gt; 替换为 >\n * @param str html str\n */\nexport function deReplaceHtmlSpecialSymbols(str: string) {\n return str\n .replace(/&nbsp;/g, ' ')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&reg;/g, '®')\n .replace(/&copy;/g, '©')\n .replace(/&trade;/g, '™')\n .replace(/&quot;/g, '\"')\n}\n\nexport const toString = (val: unknown): string => Object.prototype.toString.call(val)\n","/**\n * @description create default uppy uploader\n * @author wangfupeng\n */\n\n// @ts-ignore Uppy v5 types are not resolvable under current TS moduleResolution=node\nimport Uppy from '@uppy/core'\n// @ts-ignore Uppy v5 types are not resolvable under current TS moduleResolution=node\nimport XHRUpload from '@uppy/xhr-upload'\n\nimport { addQueryToUrl } from '../utils/util'\nimport type {\n IUploadConfig, IUploader, IUploadHeaders, IUploadResultFile,\n} from './interface'\n\nfunction getUploadResultFile(file?: IUploadResultFile | null): IUploadResultFile {\n if (file) { return file }\n\n return { name: '' }\n}\n\nfunction normalizeHeaderValues(headers: IUploadHeaders): Record<string, string> {\n return Object.keys(headers).reduce<Record<string, string>>((res, key) => {\n res[key] = String(headers[key])\n return res\n }, {})\n}\n\nfunction normalizeHeaders(\n headers: IUploadConfig['headers'],\n): Record<string, string> | ((file: unknown) => Record<string, string>) | undefined {\n if (!headers) { return undefined }\n\n if (typeof headers === 'function') {\n return file => normalizeHeaderValues(headers(file as IUploadResultFile))\n }\n\n return normalizeHeaderValues(headers)\n}\n\nfunction ensureAbortSignalAny() {\n if (typeof AbortSignal === 'undefined') { return }\n\n const abortSignal = AbortSignal as typeof AbortSignal & {\n any?: (signals: AbortSignal[]) => AbortSignal\n }\n\n if (typeof abortSignal.any === 'function') { return }\n\n abortSignal.any = (signals: AbortSignal[]) => {\n const controller = new AbortController()\n\n const onAbort = (event: Event) => {\n signals.forEach(signal => signal.removeEventListener('abort', onAbort))\n const target = event.target as AbortSignal\n const reason = (target as AbortSignal & { reason?: unknown }).reason\n\n controller.abort(reason)\n }\n\n for (const signal of signals) {\n if (signal.aborted) {\n const reason = (signal as AbortSignal & { reason?: unknown }).reason\n\n controller.abort(reason)\n return controller.signal\n }\n signal.addEventListener('abort', onAbort, { once: true })\n }\n\n return controller.signal\n }\n}\n\nfunction createUppyUploader(config: IUploadConfig): IUploader {\n const {\n server = '',\n fieldName = '',\n maxFileSize = 10 * 1024 * 1024, // 10M\n maxNumberOfFiles = 100, // 最多多少个文件\n meta = {},\n metaWithUrl = false,\n headers = {},\n withCredentials = false,\n timeout = 10 * 1000, // 10s\n onBeforeUpload = files => files,\n onSuccess = (_file, _res) => {\n /* on success */\n },\n onError = (file, err, res?) => {\n console.error(`${file.name} upload error`, err, res)\n },\n onProgress = _progress => {\n /* on progress */\n },\n } = config\n\n if (!server) {\n throw new Error('Cannot get upload server address\\n没有配置上传地址')\n }\n if (!fieldName) {\n throw new Error('Cannot get fieldName\\n没有配置 fieldName')\n }\n\n let url = server\n\n if (metaWithUrl) {\n url = addQueryToUrl(url, meta)\n }\n\n ensureAbortSignalAny()\n const normalizedHeaders = normalizeHeaders(headers)\n\n const uppy = new Uppy({\n onBeforeUpload: files => onBeforeUpload(files) as any,\n restrictions: {\n maxFileSize,\n maxNumberOfFiles,\n },\n meta,\n ...config.uppyConfig,\n }).use(XHRUpload, {\n endpoint: url,\n headers: normalizedHeaders,\n formData: true,\n fieldName,\n bundle: false,\n withCredentials,\n timeout,\n ...config.xhrConfig,\n })\n\n uppy.on('upload-success', (file, response) => {\n const { body = {} } = response ?? {}\n const uploadFile = getUploadResultFile(file as IUploadResultFile | undefined)\n\n try {\n onSuccess(uploadFile, body)\n } catch (err) {\n console.error('wangEditor upload file - onSuccess error', err)\n }\n })\n\n uppy.on('progress', progress => {\n if (progress < 1) { return }\n onProgress(progress)\n })\n\n uppy.on('upload-error', (file, error, response) => {\n const uploadFile = getUploadResultFile(file as IUploadResultFile | undefined)\n\n try {\n onError(uploadFile, error, response)\n } catch (err) {\n console.error('wangEditor upload file - onError error', err)\n }\n })\n\n uppy.on('restriction-failed', (file, error) => {\n const uploadFile = getUploadResultFile(file as IUploadResultFile | undefined)\n\n try {\n onError(uploadFile, error, undefined)\n } catch (err) {\n console.error('wangEditor upload file - onError error', err)\n }\n })\n\n return uppy\n}\n\nexport default createUppyUploader\n","/**\n * @description gen uploader\n * @author wangfupeng\n */\n\nimport type { IDomEditor } from '../editor/interface'\nimport createUppyUploader from './createUppyUploader'\nimport type { IUploadAdapter, IUploadConfig, IUploader } from './interface'\n\ntype IUploadConfigWithAdapter = IUploadConfig & {\n uploadAdapter: IUploadAdapter\n}\ntype IDefaultUploader = IUploader & {\n [key: string]: any\n}\n\nfunction createUploader<T extends IUploadConfig>(\n config: T,\n editor?: IDomEditor,\n): T extends IUploadConfigWithAdapter ? IUploader : IDefaultUploader {\n if (config.uploadAdapter) {\n return config.uploadAdapter({ config, editor }) as T extends IUploadConfigWithAdapter\n ? IUploader\n : IDefaultUploader\n }\n\n return createUppyUploader(config) as T extends IUploadConfigWithAdapter\n ? IUploader\n : IDefaultUploader\n}\n\nexport default createUploader\n"],"names":["addQueryToUrl","url","data","_a","__read","split","initialUrlWithoutHash","hash","urlWithoutHash","queryArr","forEach","val","key","push","concat","queryStr","join","indexOf","getUploadResultFile","file","name","normalizeHeaderValues","headers","Object","keys","reduce","res","String","ensureAbortSignalAny","AbortSignal","abortSignal","any","signals","controller","AbortController","onAbort","event","signal","removeEventListener","reason","target","abort","signals_1","__values","signals_1_1","next","value","aborted","addEventListener","once","createUppyUploader","config","server","_b","fieldName","_c","maxFileSize","_d","maxNumberOfFiles","_e","meta","_f","metaWithUrl","_g","_h","withCredentials","_j","timeout","_k","onBeforeUpload","files","_l","onSuccess","_file","_res","_m","onError","err","console","error","_o","onProgress","_progress","Error","normalizedHeaders","normalizeHeaders","uppy","Uppy","__assign","restrictions","uppyConfig","use","XHRUpload","endpoint","formData","bundle","xhrConfig","on","response","body","uploadFile","progress","undefined","editor","uploadAdapter"],"mappings":"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"}
package/dist/upload.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import r from"@uppy/core";import o from"@uppy/xhr-upload";import n from"lodash.foreach";import"nanoid";var e=function(){return e=Object.assign||function(r){for(var o,n=1,e=arguments.length;n<e;n++)for(var t in o=arguments[n])Object.prototype.hasOwnProperty.call(o,t)&&(r[t]=o[t]);return r},e.apply(this,arguments)};function t(r,o){var e=function(r,o){var n="function"==typeof Symbol&&r[Symbol.iterator];if(!n)return r;var e,t,i=n.call(r),a=[];try{for(;(void 0===o||o-- >0)&&!(e=i.next()).done;)a.push(e.value)}catch(r){t={error:r}}finally{try{e&&!e.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}return a}(r.split("#"),2),t=e[0],i=e[1],a=[];n(o,function(r,o){a.push("".concat(o,"=").concat(r))});var c=a.join("&");return t=t.indexOf("?")>0?"".concat(t,"&").concat(c):"".concat(t,"?").concat(c),i?"".concat(t,"#").concat(i):t}function i(r){return r||{name:""}}function a(r){return Object.keys(r).reduce(function(o,n){return o[n]=String(r[n]),o},{})}function c(){if("undefined"!=typeof AbortSignal){var r=AbortSignal;"function"!=typeof r.any&&(r.any=function(r){var o,n,e=new AbortController,t=function(o){r.forEach(function(r){return r.removeEventListener("abort",t)});var n=o.target.reason;e.abort(n)};try{for(var i=function(r){var o="function"==typeof Symbol&&Symbol.iterator,n=o&&r[o],e=0;if(n)return n.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&e>=r.length&&(r=void 0),{value:r&&r[e++],done:!r}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")}(r),a=i.next();!a.done;a=i.next()){var c=a.value;if(c.aborted){var u=c.reason;return e.abort(u),e.signal}c.addEventListener("abort",t,{once:!0})}}catch(r){o={error:r}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return e.signal})}}function u(n){var u=n.server,f=void 0===u?"":u,l=n.fieldName,d=void 0===l?"":l,s=n.maxFileSize,p=void 0===s?10485760:s,v=n.maxNumberOfFiles,y=void 0===v?100:v,m=n.meta,h=void 0===m?{}:m,b=n.metaWithUrl,g=void 0!==b&&b,w=n.headers,E=void 0===w?{}:w,S=n.withCredentials,x=void 0!==S&&S,O=n.timeout,C=void 0===O?1e4:O,N=n.onBeforeUpload,j=void 0===N?function(r){return r}:N,A=n.onSuccess,F=void 0===A?function(r,o){}:A,U=n.onError,z=void 0===U?function(r,o,n){console.error("".concat(r.name," upload error"),o,n)}:U,B=n.onProgress,L=void 0===B?function(r){}:B;if(!f)throw new Error("Cannot get upload server address\n没有配置上传地址");if(!d)throw new Error("Cannot get fieldName\n没有配置 fieldName");var P=f;g&&(P=t(P,h)),c();var k=function(r){if(r)return"function"==typeof r?function(o){return a(r(o))}:a(r)}(E),D=new r(e({onBeforeUpload:function(r){return j(r)},restrictions:{maxFileSize:p,maxNumberOfFiles:y},meta:h},n.uppyConfig)).use(o,e({endpoint:P,headers:k,formData:!0,fieldName:d,bundle:!1,withCredentials:x,timeout:C},n.xhrConfig));return D.on("upload-success",function(r,o){var n=(null!=o?o:{}).body,e=void 0===n?{}:n,t=i(r);try{F(t,e)}catch(r){console.error("wangEditor upload file - onSuccess error",r)}}),D.on("progress",function(r){r<1||L(r)}),D.on("upload-error",function(r,o,n){var e=i(r);try{z(e,o,n)}catch(r){console.error("wangEditor upload file - onError error",r)}}),D.on("restriction-failed",function(r,o){var n=i(r);try{z(n,o,void 0)}catch(r){console.error("wangEditor upload file - onError error",r)}}),D}function f(r,o){return r.uploadAdapter?r.uploadAdapter({config:r,editor:o}):u(r)}"function"==typeof SuppressedError&&SuppressedError;export{f as createUploader,u as createUppyUploader};
1
+ import r from"@uppy/core";import o from"@uppy/xhr-upload";import n from"lodash.foreach";import"nanoid";var e=function(){return e=Object.assign||function(r){for(var o,n=1,e=arguments.length;n<e;n++)for(var t in o=arguments[n])Object.prototype.hasOwnProperty.call(o,t)&&(r[t]=o[t]);return r},e.apply(this,arguments)};function t(r,o){var e=function(r,o){var n="function"==typeof Symbol&&r[Symbol.iterator];if(!n)return r;var e,t,i=n.call(r),a=[];try{for(;(void 0===o||o-- >0)&&!(e=i.next()).done;)a.push(e.value)}catch(r){t={error:r}}finally{try{e&&!e.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}return a}(r.split("#"),2),t=e[0],i=e[1],a=t,c=[];n(o,function(r,o){c.push("".concat(o,"=").concat(r))});var u=c.join("&");return a=a.indexOf("?")>0?"".concat(a,"&").concat(u):"".concat(a,"?").concat(u),i?"".concat(a,"#").concat(i):a}function i(r){return r||{name:""}}function a(r){return Object.keys(r).reduce(function(o,n){return o[n]=String(r[n]),o},{})}function c(){if("undefined"!=typeof AbortSignal){var r=AbortSignal;"function"!=typeof r.any&&(r.any=function(r){var o,n,e=new AbortController,t=function(o){r.forEach(function(r){return r.removeEventListener("abort",t)});var n=o.target.reason;e.abort(n)};try{for(var i=function(r){var o="function"==typeof Symbol&&Symbol.iterator,n=o&&r[o],e=0;if(n)return n.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&e>=r.length&&(r=void 0),{value:r&&r[e++],done:!r}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")}(r),a=i.next();!a.done;a=i.next()){var c=a.value;if(c.aborted){var u=c.reason;return e.abort(u),e.signal}c.addEventListener("abort",t,{once:!0})}}catch(r){o={error:r}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return e.signal})}}function u(n){var u=n.server,f=void 0===u?"":u,l=n.fieldName,d=void 0===l?"":l,s=n.maxFileSize,p=void 0===s?10485760:s,v=n.maxNumberOfFiles,y=void 0===v?100:v,m=n.meta,h=void 0===m?{}:m,b=n.metaWithUrl,g=void 0!==b&&b,w=n.headers,E=void 0===w?{}:w,S=n.withCredentials,x=void 0!==S&&S,O=n.timeout,C=void 0===O?1e4:O,N=n.onBeforeUpload,j=void 0===N?function(r){return r}:N,A=n.onSuccess,F=void 0===A?function(r,o){}:A,U=n.onError,z=void 0===U?function(r,o,n){console.error("".concat(r.name," upload error"),o,n)}:U,B=n.onProgress,L=void 0===B?function(r){}:B;if(!f)throw new Error("Cannot get upload server address\n没有配置上传地址");if(!d)throw new Error("Cannot get fieldName\n没有配置 fieldName");var P=f;g&&(P=t(P,h)),c();var k=function(r){if(r)return"function"==typeof r?function(o){return a(r(o))}:a(r)}(E),D=new r(e({onBeforeUpload:function(r){return j(r)},restrictions:{maxFileSize:p,maxNumberOfFiles:y},meta:h},n.uppyConfig)).use(o,e({endpoint:P,headers:k,formData:!0,fieldName:d,bundle:!1,withCredentials:x,timeout:C},n.xhrConfig));return D.on("upload-success",function(r,o){var n=(null!=o?o:{}).body,e=void 0===n?{}:n,t=i(r);try{F(t,e)}catch(r){console.error("wangEditor upload file - onSuccess error",r)}}),D.on("progress",function(r){r<1||L(r)}),D.on("upload-error",function(r,o,n){var e=i(r);try{z(e,o,n)}catch(r){console.error("wangEditor upload file - onError error",r)}}),D.on("restriction-failed",function(r,o){var n=i(r);try{z(n,o,void 0)}catch(r){console.error("wangEditor upload file - onError error",r)}}),D}function f(r,o){return r.uploadAdapter?r.uploadAdapter({config:r,editor:o}):u(r)}"function"==typeof SuppressedError&&SuppressedError;export{f as createUploader,u as createUppyUploader};
2
2
  //# sourceMappingURL=upload.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"upload.mjs","sources":["../src/utils/util.ts","../src/upload/createUppyUploader.ts","../src/upload/createUploader.ts"],"sourcesContent":["/**\n * @description 工具函数\n * @author wangfupeng\n */\n\nimport forEach from 'lodash.foreach'\nimport { nanoid } from 'nanoid'\n\ntype PromiseCallback = (value: void) => void | PromiseLike<void>\n\n/**\n * 获取随机数字符串\n * @param prefix 前缀\n * @returns 随机数字符串\n */\nexport function genRandomStr(prefix: string = 'r'): string {\n return `${prefix}-${nanoid()}`\n}\n\nexport function promiseResolveThen(fn: Function) {\n Promise.resolve().then(fn as PromiseCallback)\n}\n\n/**\n * 追加 url query 参数\n * @param url url\n * @param data data\n */\nexport function addQueryToUrl(url: string, data: object): string {\n let [urlWithoutHash, hash] = url.split('#')\n\n // 拼接 query string\n const queryArr: string[] = []\n forEach(data, (val, key) => {\n queryArr.push(`${key}=${val}`)\n })\n const queryStr = queryArr.join('&')\n\n // 拼接到 url\n if (urlWithoutHash.indexOf('?') > 0) {\n // 已有 query\n urlWithoutHash = `${urlWithoutHash}&${queryStr}`\n } else {\n // 没有 query\n urlWithoutHash = `${urlWithoutHash}?${queryStr}`\n }\n\n // 返回拼接好的 url\n if (hash) {\n return `${urlWithoutHash}#${hash}`\n } else {\n return urlWithoutHash\n }\n}\n\n/**\n * 替换 html 特殊字符,如 > 替换为 &gt;\n * @param str html str\n */\nexport function replaceHtmlSpecialSymbols(str: string) {\n return (\n str\n /**\n * 遇到两个空格时才替换,一个空格不替换\n * 两个英文单词之间有一个空格,就不用替换,否则无法默认换行 issue #4403\n */\n .replace(/ {2}/g, ' &nbsp;')\n\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/®/g, '&reg;')\n .replace(/©/g, '&copy;')\n .replace(/™/g, '&trade;')\n )\n}\n\n/**\n *【反转】替换 html 特殊字符,如 &gt; 替换为 >\n * @param str html str\n */\nexport function deReplaceHtmlSpecialSymbols(str: string) {\n return str\n .replace(/&nbsp;/g, ' ')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&reg;/g, '®')\n .replace(/&copy;/g, '©')\n .replace(/&trade;/g, '™')\n .replace(/&quot;/g, '\"')\n}\n\nexport const toString = (val: unknown): string => Object.prototype.toString.call(val)\n","/**\n * @description create default uppy uploader\n * @author wangfupeng\n */\n\n// @ts-ignore Uppy v5 types are not resolvable under current TS moduleResolution=node\nimport Uppy from '@uppy/core'\n// @ts-ignore Uppy v5 types are not resolvable under current TS moduleResolution=node\nimport XHRUpload from '@uppy/xhr-upload'\n\nimport { addQueryToUrl } from '../utils/util'\nimport type {\n IUploadConfig, IUploader, IUploadHeaders, IUploadResultFile,\n} from './interface'\n\nfunction getUploadResultFile(file?: IUploadResultFile | null): IUploadResultFile {\n if (file) { return file }\n\n return { name: '' }\n}\n\nfunction normalizeHeaderValues(headers: IUploadHeaders): Record<string, string> {\n return Object.keys(headers).reduce<Record<string, string>>((res, key) => {\n res[key] = String(headers[key])\n return res\n }, {})\n}\n\nfunction normalizeHeaders(\n headers: IUploadConfig['headers'],\n): Record<string, string> | ((file: unknown) => Record<string, string>) | undefined {\n if (!headers) { return undefined }\n\n if (typeof headers === 'function') {\n return file => normalizeHeaderValues(headers(file as IUploadResultFile))\n }\n\n return normalizeHeaderValues(headers)\n}\n\nfunction ensureAbortSignalAny() {\n if (typeof AbortSignal === 'undefined') { return }\n\n const abortSignal = AbortSignal as typeof AbortSignal & {\n any?: (signals: AbortSignal[]) => AbortSignal\n }\n\n if (typeof abortSignal.any === 'function') { return }\n\n abortSignal.any = (signals: AbortSignal[]) => {\n const controller = new AbortController()\n\n const onAbort = (event: Event) => {\n signals.forEach(signal => signal.removeEventListener('abort', onAbort))\n const target = event.target as AbortSignal\n const reason = (target as AbortSignal & { reason?: unknown }).reason\n\n controller.abort(reason)\n }\n\n for (const signal of signals) {\n if (signal.aborted) {\n const reason = (signal as AbortSignal & { reason?: unknown }).reason\n\n controller.abort(reason)\n return controller.signal\n }\n signal.addEventListener('abort', onAbort, { once: true })\n }\n\n return controller.signal\n }\n}\n\nfunction createUppyUploader(config: IUploadConfig): IUploader {\n const {\n server = '',\n fieldName = '',\n maxFileSize = 10 * 1024 * 1024, // 10M\n maxNumberOfFiles = 100, // 最多多少个文件\n meta = {},\n metaWithUrl = false,\n headers = {},\n withCredentials = false,\n timeout = 10 * 1000, // 10s\n onBeforeUpload = files => files,\n onSuccess = (_file, _res) => {\n /* on success */\n },\n onError = (file, err, res?) => {\n console.error(`${file.name} upload error`, err, res)\n },\n onProgress = _progress => {\n /* on progress */\n },\n } = config\n\n if (!server) {\n throw new Error('Cannot get upload server address\\n没有配置上传地址')\n }\n if (!fieldName) {\n throw new Error('Cannot get fieldName\\n没有配置 fieldName')\n }\n\n let url = server\n\n if (metaWithUrl) {\n url = addQueryToUrl(url, meta)\n }\n\n ensureAbortSignalAny()\n const normalizedHeaders = normalizeHeaders(headers)\n\n const uppy = new Uppy({\n onBeforeUpload: files => onBeforeUpload(files) as any,\n restrictions: {\n maxFileSize,\n maxNumberOfFiles,\n },\n meta,\n ...config.uppyConfig,\n }).use(XHRUpload, {\n endpoint: url,\n headers: normalizedHeaders,\n formData: true,\n fieldName,\n bundle: false,\n withCredentials,\n timeout,\n ...config.xhrConfig,\n })\n\n uppy.on('upload-success', (file, response) => {\n const { body = {} } = response ?? {}\n const uploadFile = getUploadResultFile(file as IUploadResultFile | undefined)\n\n try {\n onSuccess(uploadFile, body)\n } catch (err) {\n console.error('wangEditor upload file - onSuccess error', err)\n }\n })\n\n uppy.on('progress', progress => {\n if (progress < 1) { return }\n onProgress(progress)\n })\n\n uppy.on('upload-error', (file, error, response) => {\n const uploadFile = getUploadResultFile(file as IUploadResultFile | undefined)\n\n try {\n onError(uploadFile, error, response)\n } catch (err) {\n console.error('wangEditor upload file - onError error', err)\n }\n })\n\n uppy.on('restriction-failed', (file, error) => {\n const uploadFile = getUploadResultFile(file as IUploadResultFile | undefined)\n\n try {\n onError(uploadFile, error, undefined)\n } catch (err) {\n console.error('wangEditor upload file - onError error', err)\n }\n })\n\n return uppy\n}\n\nexport default createUppyUploader\n","/**\n * @description gen uploader\n * @author wangfupeng\n */\n\nimport type { IDomEditor } from '../editor/interface'\nimport createUppyUploader from './createUppyUploader'\nimport type { IUploadAdapter, IUploadConfig, IUploader } from './interface'\n\ntype IUploadConfigWithAdapter = IUploadConfig & {\n uploadAdapter: IUploadAdapter\n}\ntype IDefaultUploader = IUploader & {\n [key: string]: any\n}\n\nfunction createUploader<T extends IUploadConfig>(\n config: T,\n editor?: IDomEditor,\n): T extends IUploadConfigWithAdapter ? IUploader : IDefaultUploader {\n if (config.uploadAdapter) {\n return config.uploadAdapter({ config, editor }) as T extends IUploadConfigWithAdapter\n ? IUploader\n : IDefaultUploader\n }\n\n return createUppyUploader(config) as T extends IUploadConfigWithAdapter\n ? IUploader\n : IDefaultUploader\n}\n\nexport default createUploader\n"],"names":["addQueryToUrl","url","data","_a","__read","split","urlWithoutHash","hash","queryArr","forEach","val","key","push","concat","queryStr","join","indexOf","getUploadResultFile","file","name","normalizeHeaderValues","headers","Object","keys","reduce","res","String","ensureAbortSignalAny","AbortSignal","abortSignal","any","signals","controller","AbortController","onAbort","event","signal","removeEventListener","reason","target","abort","signals_1","__values","signals_1_1","next","value","aborted","addEventListener","once","createUppyUploader","config","server","_b","fieldName","_c","maxFileSize","_d","maxNumberOfFiles","_e","meta","_f","metaWithUrl","_g","_h","withCredentials","_j","timeout","_k","onBeforeUpload","files","_l","onSuccess","_file","_res","_m","onError","err","console","error","_o","onProgress","_progress","Error","normalizedHeaders","normalizeHeaders","uppy","Uppy","__assign","restrictions","uppyConfig","use","XHRUpload","endpoint","formData","bundle","xhrConfig","on","response","body","uploadFile","progress","undefined","createUploader","editor","uploadAdapter"],"mappings":"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"}
1
+ {"version":3,"file":"upload.mjs","sources":["../src/utils/util.ts","../src/upload/createUppyUploader.ts","../src/upload/createUploader.ts"],"sourcesContent":["/**\n * @description 工具函数\n * @author wangfupeng\n */\n\nimport forEach from 'lodash.foreach'\nimport { nanoid } from 'nanoid'\n\ntype PromiseCallback = (value: void) => void | PromiseLike<void>\n\n/**\n * 获取随机数字符串\n * @param prefix 前缀\n * @returns 随机数字符串\n */\nexport function genRandomStr(prefix: string = 'r'): string {\n return `${prefix}-${nanoid()}`\n}\n\nexport function promiseResolveThen(fn: Function) {\n Promise.resolve().then(fn as PromiseCallback)\n}\n\n/**\n * 追加 url query 参数\n * @param url url\n * @param data data\n */\nexport function addQueryToUrl(url: string, data: object): string {\n const [initialUrlWithoutHash, hash] = url.split('#')\n let urlWithoutHash = initialUrlWithoutHash\n\n // 拼接 query string\n const queryArr: string[] = []\n\n forEach(data, (val, key) => {\n queryArr.push(`${key}=${val}`)\n })\n const queryStr = queryArr.join('&')\n\n // 拼接到 url\n if (urlWithoutHash.indexOf('?') > 0) {\n // 已有 query\n urlWithoutHash = `${urlWithoutHash}&${queryStr}`\n } else {\n // 没有 query\n urlWithoutHash = `${urlWithoutHash}?${queryStr}`\n }\n\n // 返回拼接好的 url\n if (hash) {\n return `${urlWithoutHash}#${hash}`\n }\n return urlWithoutHash\n\n}\n\n/**\n * 替换 html 特殊字符,如 > 替换为 &gt;\n * @param str html str\n */\nexport function replaceHtmlSpecialSymbols(str: string) {\n return (\n str\n /**\n * 遇到两个空格时才替换,一个空格不替换\n * 两个英文单词之间有一个空格,就不用替换,否则无法默认换行 issue #4403\n */\n .replace(/ {2}/g, ' &nbsp;')\n\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/®/g, '&reg;')\n .replace(/©/g, '&copy;')\n .replace(/™/g, '&trade;')\n )\n}\n\n/**\n *【反转】替换 html 特殊字符,如 &gt; 替换为 >\n * @param str html str\n */\nexport function deReplaceHtmlSpecialSymbols(str: string) {\n return str\n .replace(/&nbsp;/g, ' ')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&reg;/g, '®')\n .replace(/&copy;/g, '©')\n .replace(/&trade;/g, '™')\n .replace(/&quot;/g, '\"')\n}\n\nexport const toString = (val: unknown): string => Object.prototype.toString.call(val)\n","/**\n * @description create default uppy uploader\n * @author wangfupeng\n */\n\n// @ts-ignore Uppy v5 types are not resolvable under current TS moduleResolution=node\nimport Uppy from '@uppy/core'\n// @ts-ignore Uppy v5 types are not resolvable under current TS moduleResolution=node\nimport XHRUpload from '@uppy/xhr-upload'\n\nimport { addQueryToUrl } from '../utils/util'\nimport type {\n IUploadConfig, IUploader, IUploadHeaders, IUploadResultFile,\n} from './interface'\n\nfunction getUploadResultFile(file?: IUploadResultFile | null): IUploadResultFile {\n if (file) { return file }\n\n return { name: '' }\n}\n\nfunction normalizeHeaderValues(headers: IUploadHeaders): Record<string, string> {\n return Object.keys(headers).reduce<Record<string, string>>((res, key) => {\n res[key] = String(headers[key])\n return res\n }, {})\n}\n\nfunction normalizeHeaders(\n headers: IUploadConfig['headers'],\n): Record<string, string> | ((file: unknown) => Record<string, string>) | undefined {\n if (!headers) { return undefined }\n\n if (typeof headers === 'function') {\n return file => normalizeHeaderValues(headers(file as IUploadResultFile))\n }\n\n return normalizeHeaderValues(headers)\n}\n\nfunction ensureAbortSignalAny() {\n if (typeof AbortSignal === 'undefined') { return }\n\n const abortSignal = AbortSignal as typeof AbortSignal & {\n any?: (signals: AbortSignal[]) => AbortSignal\n }\n\n if (typeof abortSignal.any === 'function') { return }\n\n abortSignal.any = (signals: AbortSignal[]) => {\n const controller = new AbortController()\n\n const onAbort = (event: Event) => {\n signals.forEach(signal => signal.removeEventListener('abort', onAbort))\n const target = event.target as AbortSignal\n const reason = (target as AbortSignal & { reason?: unknown }).reason\n\n controller.abort(reason)\n }\n\n for (const signal of signals) {\n if (signal.aborted) {\n const reason = (signal as AbortSignal & { reason?: unknown }).reason\n\n controller.abort(reason)\n return controller.signal\n }\n signal.addEventListener('abort', onAbort, { once: true })\n }\n\n return controller.signal\n }\n}\n\nfunction createUppyUploader(config: IUploadConfig): IUploader {\n const {\n server = '',\n fieldName = '',\n maxFileSize = 10 * 1024 * 1024, // 10M\n maxNumberOfFiles = 100, // 最多多少个文件\n meta = {},\n metaWithUrl = false,\n headers = {},\n withCredentials = false,\n timeout = 10 * 1000, // 10s\n onBeforeUpload = files => files,\n onSuccess = (_file, _res) => {\n /* on success */\n },\n onError = (file, err, res?) => {\n console.error(`${file.name} upload error`, err, res)\n },\n onProgress = _progress => {\n /* on progress */\n },\n } = config\n\n if (!server) {\n throw new Error('Cannot get upload server address\\n没有配置上传地址')\n }\n if (!fieldName) {\n throw new Error('Cannot get fieldName\\n没有配置 fieldName')\n }\n\n let url = server\n\n if (metaWithUrl) {\n url = addQueryToUrl(url, meta)\n }\n\n ensureAbortSignalAny()\n const normalizedHeaders = normalizeHeaders(headers)\n\n const uppy = new Uppy({\n onBeforeUpload: files => onBeforeUpload(files) as any,\n restrictions: {\n maxFileSize,\n maxNumberOfFiles,\n },\n meta,\n ...config.uppyConfig,\n }).use(XHRUpload, {\n endpoint: url,\n headers: normalizedHeaders,\n formData: true,\n fieldName,\n bundle: false,\n withCredentials,\n timeout,\n ...config.xhrConfig,\n })\n\n uppy.on('upload-success', (file, response) => {\n const { body = {} } = response ?? {}\n const uploadFile = getUploadResultFile(file as IUploadResultFile | undefined)\n\n try {\n onSuccess(uploadFile, body)\n } catch (err) {\n console.error('wangEditor upload file - onSuccess error', err)\n }\n })\n\n uppy.on('progress', progress => {\n if (progress < 1) { return }\n onProgress(progress)\n })\n\n uppy.on('upload-error', (file, error, response) => {\n const uploadFile = getUploadResultFile(file as IUploadResultFile | undefined)\n\n try {\n onError(uploadFile, error, response)\n } catch (err) {\n console.error('wangEditor upload file - onError error', err)\n }\n })\n\n uppy.on('restriction-failed', (file, error) => {\n const uploadFile = getUploadResultFile(file as IUploadResultFile | undefined)\n\n try {\n onError(uploadFile, error, undefined)\n } catch (err) {\n console.error('wangEditor upload file - onError error', err)\n }\n })\n\n return uppy\n}\n\nexport default createUppyUploader\n","/**\n * @description gen uploader\n * @author wangfupeng\n */\n\nimport type { IDomEditor } from '../editor/interface'\nimport createUppyUploader from './createUppyUploader'\nimport type { IUploadAdapter, IUploadConfig, IUploader } from './interface'\n\ntype IUploadConfigWithAdapter = IUploadConfig & {\n uploadAdapter: IUploadAdapter\n}\ntype IDefaultUploader = IUploader & {\n [key: string]: any\n}\n\nfunction createUploader<T extends IUploadConfig>(\n config: T,\n editor?: IDomEditor,\n): T extends IUploadConfigWithAdapter ? IUploader : IDefaultUploader {\n if (config.uploadAdapter) {\n return config.uploadAdapter({ config, editor }) as T extends IUploadConfigWithAdapter\n ? IUploader\n : IDefaultUploader\n }\n\n return createUppyUploader(config) as T extends IUploadConfigWithAdapter\n ? IUploader\n : IDefaultUploader\n}\n\nexport default createUploader\n"],"names":["addQueryToUrl","url","data","_a","__read","split","initialUrlWithoutHash","hash","urlWithoutHash","queryArr","forEach","val","key","push","concat","queryStr","join","indexOf","getUploadResultFile","file","name","normalizeHeaderValues","headers","Object","keys","reduce","res","String","ensureAbortSignalAny","AbortSignal","abortSignal","any","signals","controller","AbortController","onAbort","event","signal","removeEventListener","reason","target","abort","signals_1","__values","signals_1_1","next","value","aborted","addEventListener","once","createUppyUploader","config","server","_b","fieldName","_c","maxFileSize","_d","maxNumberOfFiles","_e","meta","_f","metaWithUrl","_g","_h","withCredentials","_j","timeout","_k","onBeforeUpload","files","_l","onSuccess","_file","_res","_m","onError","err","console","error","_o","onProgress","_progress","Error","normalizedHeaders","normalizeHeaders","uppy","Uppy","__assign","restrictions","uppyConfig","use","XHRUpload","endpoint","formData","bundle","xhrConfig","on","response","body","uploadFile","progress","undefined","createUploader","editor","uploadAdapter"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wangeditor-next/core",
3
- "version": "1.9.0",
3
+ "version": "1.9.1",
4
4
  "description": "wangEditor core",
5
5
  "author": "cycleccc <2991205548@qq.com>",
6
6
  "type": "module",