@formio/js 5.1.0-dev.6002.16f1966 → 5.1.0-dev.6010.98e774d
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/formio.form.js +6 -6
- package/dist/formio.form.min.js +1 -1
- package/dist/formio.full.js +9 -9
- package/dist/formio.full.min.js +1 -1
- package/dist/formio.js +2 -2
- package/dist/formio.min.js +1 -1
- package/dist/formio.utils.js +1 -1
- package/dist/formio.utils.min.js +1 -1
- package/lib/cjs/Webform.d.ts +4 -1
- package/lib/cjs/Webform.js +18 -13
- package/lib/cjs/components/_classes/component/Component.js +10 -1
- package/lib/cjs/components/datetime/DateTime.d.ts +1 -1
- package/lib/cjs/components/datetime/DateTime.js +5 -5
- package/lib/cjs/components/form/editForm/Form.edit.data.js +1 -1
- package/lib/cjs/components/form/editForm/Form.edit.form.js +2 -2
- package/lib/cjs/components/select/editForm/Select.edit.data.js +2 -2
- package/lib/cjs/providers/storage/s3.js +3 -3
- package/lib/cjs/providers/storage/xhr.d.ts +1 -0
- package/lib/cjs/providers/storage/xhr.js +6 -1
- package/lib/cjs/utils/utils.d.ts +2 -1
- package/lib/cjs/utils/utils.js +3 -2
- package/lib/mjs/Webform.d.ts +4 -1
- package/lib/mjs/Webform.js +18 -13
- package/lib/mjs/components/_classes/component/Component.js +10 -1
- package/lib/mjs/components/datetime/DateTime.d.ts +1 -1
- package/lib/mjs/components/datetime/DateTime.js +5 -5
- package/lib/mjs/components/form/editForm/Form.edit.data.js +1 -1
- package/lib/mjs/components/form/editForm/Form.edit.form.js +2 -2
- package/lib/mjs/components/select/editForm/Select.edit.data.js +2 -2
- package/lib/mjs/providers/storage/s3.js +3 -3
- package/lib/mjs/providers/storage/xhr.d.ts +1 -0
- package/lib/mjs/providers/storage/xhr.js +6 -1
- package/lib/mjs/utils/utils.d.ts +2 -1
- package/lib/mjs/utils/utils.js +3 -2
- package/package.json +1 -1
package/dist/formio.js
CHANGED
@@ -3731,7 +3731,7 @@ eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\ncons
|
|
3731
3731
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
3732
3732
|
|
3733
3733
|
"use strict";
|
3734
|
-
eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst xhr_1 = __importDefault(__webpack_require__(/*! ./xhr */ \"./lib/cjs/providers/storage/xhr.js\"));\nconst util_1 = __webpack_require__(/*! ./util */ \"./lib/cjs/providers/storage/util.js\");\nconst loadAbortControllerPolyfill = () => __awaiter(void 0, void 0, void 0, function* () {\n if (typeof AbortController === 'undefined') {\n yield Promise.resolve().then(() => __importStar(__webpack_require__(/*! abortcontroller-polyfill/dist/polyfill-patch-fetch */ \"./node_modules/abortcontroller-polyfill/dist/polyfill-patch-fetch.js\")));\n }\n});\n/**\n * S3 File Services provider for file storage.\n * @param {object} formio formio instance\n * @returns {import('./typedefs').FileProvider} The FileProvider interface defined in index.js.\n */\nfunction s3(formio) {\n return {\n uploadFile(file, fileName, dir, progressCallback, url, options, fileKey, groupPermissions, groupId, abortCallback, multipartOptions) {\n return __awaiter(this, void 0, void 0, function* () {\n const xhrCallback = (xhr, response, abortCallback) => __awaiter(this, void 0, void 0, function* () {\n response.data.fileName = fileName;\n response.data.key = xhr_1.default.path([response.data.key, dir, fileName]);\n if (response.signed) {\n if (multipartOptions && Array.isArray(response.signed)) {\n // patch abort callback\n yield loadAbortControllerPolyfill();\n const abortController = new AbortController();\n const abortSignal = abortController.signal;\n if (typeof abortCallback === 'function') {\n abortCallback(() => abortController.abort());\n }\n try {\n const parts = yield this.uploadParts(file, response.signed, response.data.headers, response.partSizeActual, multipartOptions, abortSignal);\n yield (0, util_1.withRetries)(this.completeMultipartUpload, [response, parts, multipartOptions], 3);\n return;\n }\n catch (err) {\n // abort in-progress fetch requests\n abortController.abort();\n // attempt to cancel the multipart upload\n this.abortMultipartUpload(response);\n throw err;\n }\n }\n else {\n xhr.openAndSetHeaders('PUT', response.signed);\n xhr.setRequestHeader('Content-Type', file.type);\n if (response.data.headers) {\n Object.keys(response.data.headers).forEach((key) => {\n xhr.setRequestHeader(key, response.data.headers[key]);\n });\n }\n return file;\n }\n }\n else {\n const fd = new FormData();\n for (const key in response.data) {\n fd.append(key, response.data[key]);\n }\n fd.append('file', file);\n xhr.openAndSetHeaders('POST', response.url);\n return fd;\n }\n });\n const response = yield xhr_1.default.upload(formio, 's3', xhrCallback, file, fileName, dir, progressCallback, groupPermissions, groupId, abortCallback, multipartOptions);\n return {\n storage: 's3',\n name: fileName,\n bucket: response.bucket,\n key: response.data.key,\n url: xhr_1.default.path([response.url, response.data.key]),\n acl: response.data.acl,\n size: file.size,\n type: file.type\n };\n });\n },\n completeMultipartUpload(serverResponse, parts, multipart) {\n return __awaiter(this, void 0, void 0, function* () {\n const { changeMessage } = multipart;\n changeMessage('Completing AWS S3 multipart upload...');\n const token = formio.getToken();\n const response = yield fetch(`${formio.formUrl}/storage/s3/multipart/complete`, {\n method: 'POST',\n headers: Object.assign({ 'Content-Type': 'application/json' }, (token ? { 'x-jwt-token': token } : {})),\n body: JSON.stringify({ parts, uploadId: serverResponse.uploadId, key: serverResponse.key })\n });\n const message = yield response.text();\n if (!response.ok) {\n throw new Error(message);\n }\n // the AWS S3 SDK CompleteMultipartUpload command can return a HTTP 200 status header but still error;\n // we need to parse, and according to AWS, to retry\n if (message.match(/Error/)) {\n throw new Error(message);\n }\n });\n },\n abortMultipartUpload(serverResponse) {\n const { uploadId, key } = serverResponse;\n const token = formio.getToken();\n fetch(`${formio.formUrl}/storage/s3/multipart/abort`, {\n method: 'POST',\n headers: Object.assign({ 'Content-Type': 'application/json' }, (token ? { 'x-jwt-token': token } : {})),\n body: JSON.stringify({ uploadId, key })\n }).catch((err) => console.error('Error while aborting multipart upload:', err));\n },\n uploadParts(file, urls, headers, partSize, multipart, abortSignal) {\n const { changeMessage, progressCallback } = multipart;\n changeMessage('Chunking and uploading parts to AWS S3...');\n const promises = [];\n for (let i = 0; i < urls.length; i++) {\n const start = i * partSize;\n const end = (i + 1) * partSize;\n const blob = i < urls.length ? file.slice(start, end) : file.slice(start);\n const promise = fetch(urls[i], {\n method: 'PUT',\n headers,\n body: blob,\n signal: abortSignal,\n }).then((res) => {\n if (res.ok) {\n progressCallback(urls.length);\n const eTag = res.headers.get('etag');\n if (!eTag) {\n throw new Error('ETag header not found; it must be exposed in S3 bucket CORS settings');\n }\n return { ETag: eTag, PartNumber: i + 1 };\n }\n else {\n throw new Error(`Part no ${i} failed with status ${res.status}`);\n }\n });\n promises.push(promise);\n }\n return Promise.all(promises);\n },\n downloadFile(file) {\n if (file.acl !== 'public-read') {\n return formio.makeRequest('file', `${formio.formUrl}/storage/s3?bucket=${xhr_1.default.trim(file.bucket)}&key=${xhr_1.default.trim(file.key)}`, 'GET');\n }\n else {\n return Promise.resolve(file);\n }\n },\n deleteFile(fileInfo) {\n const url = `${formio.formUrl}/storage/s3?bucket=${xhr_1.default.trim(fileInfo.bucket)}&key=${xhr_1.default.trim(fileInfo.key)}`;\n return formio.makeRequest('', url, 'delete');\n },\n };\n}\ns3.title = 'S3';\nexports[\"default\"] = s3;\n\n\n//# sourceURL=webpack://Formio/./lib/cjs/providers/storage/s3.js?");
|
3734
|
+
eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst xhr_1 = __importDefault(__webpack_require__(/*! ./xhr */ \"./lib/cjs/providers/storage/xhr.js\"));\nconst util_1 = __webpack_require__(/*! ./util */ \"./lib/cjs/providers/storage/util.js\");\nconst loadAbortControllerPolyfill = () => __awaiter(void 0, void 0, void 0, function* () {\n if (typeof AbortController === 'undefined') {\n yield Promise.resolve().then(() => __importStar(__webpack_require__(/*! abortcontroller-polyfill/dist/polyfill-patch-fetch */ \"./node_modules/abortcontroller-polyfill/dist/polyfill-patch-fetch.js\")));\n }\n});\n/**\n * S3 File Services provider for file storage.\n * @param {object} formio formio instance\n * @returns {import('./typedefs').FileProvider} The FileProvider interface defined in index.js.\n */\nfunction s3(formio) {\n return {\n uploadFile(file, fileName, dir, progressCallback, url, options, fileKey, groupPermissions, groupId, abortCallback, multipartOptions) {\n return __awaiter(this, void 0, void 0, function* () {\n const xhrCallback = (xhr, response, abortCallback) => __awaiter(this, void 0, void 0, function* () {\n response.data.fileName = fileName;\n response.data.key = xhr_1.default.path([response.data.key, dir, fileName]);\n if (response.signed) {\n if (multipartOptions && Array.isArray(response.signed)) {\n // patch abort callback\n yield loadAbortControllerPolyfill();\n const abortController = new AbortController();\n const abortSignal = abortController.signal;\n if (typeof abortCallback === 'function') {\n abortCallback(() => abortController.abort());\n }\n try {\n const parts = yield this.uploadParts(file, response.signed, response.data.headers, response.partSizeActual, multipartOptions, abortSignal);\n yield (0, util_1.withRetries)(this.completeMultipartUpload, [response, parts, multipartOptions], 3);\n return;\n }\n catch (err) {\n // abort in-progress fetch requests\n abortController.abort();\n // attempt to cancel the multipart upload\n this.abortMultipartUpload(response);\n throw err;\n }\n }\n else {\n xhr.openAndSetHeaders('PUT', response.signed);\n xhr.setRequestHeader('Content-Type', file.type);\n if (response.data.headers) {\n Object.keys(response.data.headers).forEach((key) => {\n xhr.setRequestHeader(key, response.data.headers[key]);\n });\n }\n return file;\n }\n }\n else {\n const fd = new FormData();\n for (const key in response.data) {\n fd.append(key, response.data[key]);\n }\n fd.append('file', file);\n xhr.openAndSetHeaders('POST', response.url);\n return fd;\n }\n });\n const response = yield xhr_1.default.upload(formio, 's3', xhrCallback, file, fileName, dir, progressCallback, groupPermissions, groupId, abortCallback, multipartOptions);\n return {\n storage: 's3',\n name: fileName,\n bucket: response.bucket,\n key: response.data.key,\n url: xhr_1.default.path([response.url, response.data.key]),\n acl: response.data.acl,\n size: file.size,\n type: file.type\n };\n });\n },\n completeMultipartUpload(serverResponse, parts, multipart) {\n return __awaiter(this, void 0, void 0, function* () {\n const { changeMessage } = multipart;\n changeMessage('Completing AWS S3 multipart upload...');\n const token = formio.getToken();\n const response = yield xhr_1.default.fetch(`${formio.formUrl}/storage/s3/multipart/complete`, {\n method: 'POST',\n headers: Object.assign({ 'Content-Type': 'application/json' }, (token ? { 'x-jwt-token': token } : {})),\n body: JSON.stringify({ parts, uploadId: serverResponse.uploadId, key: serverResponse.key })\n });\n const message = yield response.text();\n if (!response.ok) {\n throw new Error(message);\n }\n // the AWS S3 SDK CompleteMultipartUpload command can return a HTTP 200 status header but still error;\n // we need to parse, and according to AWS, to retry\n if (message.match(/Error/)) {\n throw new Error(message);\n }\n });\n },\n abortMultipartUpload(serverResponse) {\n const { uploadId, key } = serverResponse;\n const token = formio.getToken();\n xhr_1.default.fetch(`${formio.formUrl}/storage/s3/multipart/abort`, {\n method: 'POST',\n headers: Object.assign({ 'Content-Type': 'application/json' }, (token ? { 'x-jwt-token': token } : {})),\n body: JSON.stringify({ uploadId, key })\n }).catch((err) => console.error('Error while aborting multipart upload:', err));\n },\n uploadParts(file, urls, headers, partSize, multipart, abortSignal) {\n const { changeMessage, progressCallback } = multipart;\n changeMessage('Chunking and uploading parts to AWS S3...');\n const promises = [];\n for (let i = 0; i < urls.length; i++) {\n const start = i * partSize;\n const end = (i + 1) * partSize;\n const blob = i < urls.length ? file.slice(start, end) : file.slice(start);\n const promise = xhr_1.default.fetch(urls[i], {\n method: 'PUT',\n headers,\n body: blob,\n signal: abortSignal,\n }).then((res) => {\n if (res.ok) {\n progressCallback(urls.length);\n const eTag = res.headers.get('etag');\n if (!eTag) {\n throw new Error('ETag header not found; it must be exposed in S3 bucket CORS settings');\n }\n return { ETag: eTag, PartNumber: i + 1 };\n }\n else {\n throw new Error(`Part no ${i} failed with status ${res.status}`);\n }\n });\n promises.push(promise);\n }\n return Promise.all(promises);\n },\n downloadFile(file) {\n if (file.acl !== 'public-read') {\n return formio.makeRequest('file', `${formio.formUrl}/storage/s3?bucket=${xhr_1.default.trim(file.bucket)}&key=${xhr_1.default.trim(file.key)}`, 'GET');\n }\n else {\n return Promise.resolve(file);\n }\n },\n deleteFile(fileInfo) {\n const url = `${formio.formUrl}/storage/s3?bucket=${xhr_1.default.trim(fileInfo.bucket)}&key=${xhr_1.default.trim(fileInfo.key)}`;\n return formio.makeRequest('', url, 'delete');\n },\n };\n}\ns3.title = 'S3';\nexports[\"default\"] = s3;\n\n\n//# sourceURL=webpack://Formio/./lib/cjs/providers/storage/s3.js?");
|
3735
3735
|
|
3736
3736
|
/***/ }),
|
3737
3737
|
|
@@ -3764,7 +3764,7 @@ eval("\n/**\n * @typedef {any[]} Args\n */\nvar __awaiter = (this && this.__awai
|
|
3764
3764
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
3765
3765
|
|
3766
3766
|
"use strict";
|
3767
|
-
eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.setXhrHeaders = void 0;\nconst trim_1 = __importDefault(__webpack_require__(/*! lodash/trim */ \"./node_modules/lodash/trim.js\"));\nconst setXhrHeaders = (formio, xhr) => {\n const { headers } = formio.options;\n if (headers) {\n const ValidHeaders = {\n 'Content-Disposition': true,\n 'Authorization': true,\n };\n for (const header in headers) {\n if (ValidHeaders[header]) {\n xhr.setRequestHeader(header, headers[header]);\n }\n }\n }\n};\nexports.setXhrHeaders = setXhrHeaders;\nconst XHR = {\n trim(text) {\n return (0, trim_1.default)(text, '/');\n },\n path(items) {\n return items.filter(item => !!item).map(XHR.trim).join('/');\n },\n upload(formio, type, xhrCallback, file, fileName, dir, progressCallback, groupPermissions, groupId, abortCallback, multipartOptions) {\n return __awaiter(this, void 0, void 0, function* () {\n // make request to Form.io server\n const token = formio.getToken();\n let response;\n try {\n response = yield fetch(`${formio.formUrl}/storage/${type}`, {\n method: 'POST',\n headers: Object.assign({ 'Accept': 'application/json', 'Content-Type': 'application/json; charset=UTF-8' }, (token ? { 'x-jwt-token': token } : {})),\n body: JSON.stringify({\n name: XHR.path([dir, fileName]),\n size: file.size,\n type: file.type,\n groupPermissions,\n groupId,\n multipart: multipartOptions\n })\n });\n }\n catch (err) {\n // only throws on network errors\n err.networkError = true;\n throw err;\n }\n if (!response.ok) {\n if (response.status === 504) {\n const error = new Error('Network request failed');\n error.networkError = true;\n throw error;\n }\n const message = yield response.text();\n throw new Error(message || 'Unable to sign file.');\n }\n const serverResponse = yield response.json();\n return yield XHR.makeXhrRequest(formio, xhrCallback, serverResponse, progressCallback, abortCallback);\n });\n },\n makeXhrRequest(formio, xhrCallback, serverResponse, progressCallback, abortCallback) {\n return new Promise((resolve, reject) => {\n // Send the file with data.\n const xhr = new XMLHttpRequest();\n xhr.openAndSetHeaders = (...params) => {\n xhr.open(...params);\n (0, exports.setXhrHeaders)(formio, xhr);\n };\n Promise.resolve(xhrCallback(xhr, serverResponse, abortCallback)).then((payload) => {\n // if payload is nullish we can assume the provider took care of the entire upload process\n if (!payload) {\n return resolve(serverResponse);\n }\n // Fire on network error.\n xhr.onerror = (err) => {\n err.networkError = true;\n reject(err);\n };\n // Fire on network abort.\n xhr.onabort = (err) => {\n err.networkError = true;\n reject(err);\n };\n // Set the onabort error callback.\n xhr.onabort = reject;\n if (typeof progressCallback === 'function') {\n xhr.upload.onprogress = progressCallback;\n }\n if (typeof abortCallback === 'function') {\n abortCallback(() => xhr.abort());\n }\n // Fired when the response has made it back from the server.\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n resolve(serverResponse);\n }\n else if (xhr.status === 504) {\n const error = new Error('Network request failed');\n error.networkError = true;\n reject(error);\n }\n else {\n reject(xhr.response || 'Unable to upload file');\n }\n };\n // Get the request and send it to the server.\n xhr.send(payload);\n }).catch(reject);\n });\n }\n};\nexports[\"default\"] = XHR;\n\n\n//# sourceURL=webpack://Formio/./lib/cjs/providers/storage/xhr.js?");
|
3767
|
+
eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.setXhrHeaders = void 0;\nconst trim_1 = __importDefault(__webpack_require__(/*! lodash/trim */ \"./node_modules/lodash/trim.js\"));\nconst Formio_1 = __webpack_require__(/*! ../../Formio */ \"./lib/cjs/Formio.js\");\nconst setXhrHeaders = (formio, xhr) => {\n const { headers } = formio.options;\n if (headers) {\n const ValidHeaders = {\n 'Content-Disposition': true,\n 'Authorization': true,\n };\n for (const header in headers) {\n if (ValidHeaders[header]) {\n xhr.setRequestHeader(header, headers[header]);\n }\n }\n }\n};\nexports.setXhrHeaders = setXhrHeaders;\nconst XHR = {\n trim(text) {\n return (0, trim_1.default)(text, '/');\n },\n path(items) {\n return items.filter(item => !!item).map(XHR.trim).join('/');\n },\n fetch(url, options) {\n options = Formio_1.Formio.pluginAlter('requestOptions', options, url);\n return fetch(url, options);\n },\n upload(formio, type, xhrCallback, file, fileName, dir, progressCallback, groupPermissions, groupId, abortCallback, multipartOptions) {\n return __awaiter(this, void 0, void 0, function* () {\n // make request to Form.io server\n const token = formio.getToken();\n let response;\n try {\n response = yield XHR.fetch(`${formio.formUrl}/storage/${type}`, {\n method: 'POST',\n headers: Object.assign({ 'Accept': 'application/json', 'Content-Type': 'application/json; charset=UTF-8' }, (token ? { 'x-jwt-token': token } : {})),\n body: JSON.stringify({\n name: XHR.path([dir, fileName]),\n size: file.size,\n type: file.type,\n groupPermissions,\n groupId,\n multipart: multipartOptions\n })\n });\n }\n catch (err) {\n // only throws on network errors\n err.networkError = true;\n throw err;\n }\n if (!response.ok) {\n if (response.status === 504) {\n const error = new Error('Network request failed');\n error.networkError = true;\n throw error;\n }\n const message = yield response.text();\n throw new Error(message || 'Unable to sign file.');\n }\n const serverResponse = yield response.json();\n return yield XHR.makeXhrRequest(formio, xhrCallback, serverResponse, progressCallback, abortCallback);\n });\n },\n makeXhrRequest(formio, xhrCallback, serverResponse, progressCallback, abortCallback) {\n return new Promise((resolve, reject) => {\n // Send the file with data.\n const xhr = new XMLHttpRequest();\n xhr.openAndSetHeaders = (...params) => {\n xhr.open(...params);\n (0, exports.setXhrHeaders)(formio, xhr);\n };\n Promise.resolve(xhrCallback(xhr, serverResponse, abortCallback)).then((payload) => {\n // if payload is nullish we can assume the provider took care of the entire upload process\n if (!payload) {\n return resolve(serverResponse);\n }\n // Fire on network error.\n xhr.onerror = (err) => {\n err.networkError = true;\n reject(err);\n };\n // Fire on network abort.\n xhr.onabort = (err) => {\n err.networkError = true;\n reject(err);\n };\n // Set the onabort error callback.\n xhr.onabort = reject;\n if (typeof progressCallback === 'function') {\n xhr.upload.onprogress = progressCallback;\n }\n if (typeof abortCallback === 'function') {\n abortCallback(() => xhr.abort());\n }\n // Fired when the response has made it back from the server.\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n resolve(serverResponse);\n }\n else if (xhr.status === 504) {\n const error = new Error('Network request failed');\n error.networkError = true;\n reject(error);\n }\n else {\n reject(xhr.response || 'Unable to upload file');\n }\n };\n // Get the request and send it to the server.\n xhr.send(payload);\n }).catch(reject);\n });\n }\n};\nexports[\"default\"] = XHR;\n\n\n//# sourceURL=webpack://Formio/./lib/cjs/providers/storage/xhr.js?");
|
3768
3768
|
|
3769
3769
|
/***/ }),
|
3770
3770
|
|