diff --git a/package.json b/package.json index cb6c019..5150b36 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "koajax", - "version": "0.9.5", + "version": "0.9.6", "license": "LGPL-3.0", "author": "shiy2008@gmail.com", "description": "HTTP Client based on Koa-like middlewares", @@ -37,9 +37,9 @@ "@parcel/packager-ts": "~2.10.3", "@parcel/transformer-typescript-types": "~2.10.3", "@types/core-js": "^2.5.8", - "@types/jest": "^29.5.9", + "@types/jest": "^29.5.10", "@types/jsdom": "^21.1.6", - "@types/node": "^18.18.11", + "@types/node": "^18.18.13", "core-js": "^3.33.3", "cross-env": "^7.0.3", "husky": "^8.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 644ef32..36dafbc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,14 +29,14 @@ devDependencies: specifier: ^2.5.8 version: 2.5.8 '@types/jest': - specifier: ^29.5.9 - version: 29.5.9 + specifier: ^29.5.10 + version: 29.5.10 '@types/jsdom': specifier: ^21.1.6 version: 21.1.6 '@types/node': - specifier: ^18.18.11 - version: 18.18.11 + specifier: ^18.18.13 + version: 18.18.13 core-js: specifier: ^3.33.3 version: 3.33.3 @@ -48,7 +48,7 @@ devDependencies: version: 8.0.3 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@18.18.11) + version: 29.7.0(@types/node@18.18.13) jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0 @@ -440,7 +440,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 18.18.11 + '@types/node': 18.18.13 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -461,14 +461,14 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.18.11 + '@types/node': 18.18.13 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.8.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@18.18.11) + jest-config: 29.7.0(@types/node@18.18.13) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -496,7 +496,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.18.11 + '@types/node': 18.18.13 jest-mock: 29.7.0 dev: true @@ -523,7 +523,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 18.18.11 + '@types/node': 18.18.13 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -556,7 +556,7 @@ packages: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.19 - '@types/node': 18.18.11 + '@types/node': 18.18.13 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -644,7 +644,7 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.18.11 + '@types/node': 18.18.13 '@types/yargs': 17.0.24 chalk: 4.1.2 dev: true @@ -1778,7 +1778,7 @@ packages: /@types/graceful-fs@4.1.6: resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: - '@types/node': 18.18.11 + '@types/node': 18.18.13 dev: true /@types/istanbul-lib-coverage@2.0.4: @@ -1797,8 +1797,8 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest@29.5.9: - resolution: {integrity: sha512-zJeWhqBwVoPm83sP8h1/SVntwWTu5lZbKQGCvBjxQOyEWnKnsaomt2y7SlV4KfwlrHAHHAn00Sh4IAWaIsGOgQ==} + /@types/jest@29.5.10: + resolution: {integrity: sha512-tE4yxKEphEyxj9s4inideLHktW/x6DwesIwWZ9NN1FKf9zbJYsnhBoA9vrHA/IuIOKwPa5PcFBNV4lpMIOEzyQ==} dependencies: expect: 29.7.0 pretty-format: 29.7.0 @@ -1807,7 +1807,7 @@ packages: /@types/jsdom@20.0.1: resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: - '@types/node': 18.18.11 + '@types/node': 18.18.13 '@types/tough-cookie': 4.0.2 parse5: 7.1.2 dev: true @@ -1815,7 +1815,7 @@ packages: /@types/jsdom@21.1.6: resolution: {integrity: sha512-/7kkMsC+/kMs7gAYmmBR9P0vGTnOoLhQhyhQJSlXGI5bzTHp6xdo0TtKWQAsz6pmSAeVqKSbqeyP6hytqr9FDw==} dependencies: - '@types/node': 18.18.11 + '@types/node': 18.18.13 '@types/tough-cookie': 4.0.2 parse5: 7.1.2 dev: true @@ -1824,8 +1824,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node@18.18.11: - resolution: {integrity: sha512-c1vku6qnTeujJneYH94/4aq73XrVcsJe35UPyAsSok1ijiKrkRzK+AxQPSpNMUnC03roWBBwJx/9I8V7lQoxmA==} + /@types/node@18.18.13: + resolution: {integrity: sha512-vXYZGRrSCreZmq1rEjMRLXJhiy8MrIeVasx+PCVlP414N7CJLHnMf+juVvjdprHyH+XRy3zKZLHeNueOpJCn0g==} dependencies: undici-types: 5.26.5 dev: true @@ -2301,7 +2301,7 @@ packages: path-type: 4.0.0 dev: true - /create-jest@29.7.0(@types/node@18.18.11): + /create-jest@29.7.0(@types/node@18.18.13): resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -2310,7 +2310,7 @@ packages: chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@18.18.11) + jest-config: 29.7.0(@types/node@18.18.13) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -3196,7 +3196,7 @@ packages: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.18.11 + '@types/node': 18.18.13 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.1 @@ -3217,7 +3217,7 @@ packages: - supports-color dev: true - /jest-cli@29.7.0(@types/node@18.18.11): + /jest-cli@29.7.0(@types/node@18.18.13): resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -3231,10 +3231,10 @@ packages: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@18.18.11) + create-jest: 29.7.0(@types/node@18.18.13) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@18.18.11) + jest-config: 29.7.0(@types/node@18.18.13) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -3245,7 +3245,7 @@ packages: - ts-node dev: true - /jest-config@29.7.0(@types/node@18.18.11): + /jest-config@29.7.0(@types/node@18.18.13): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -3260,7 +3260,7 @@ packages: '@babel/core': 7.22.11 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.18.11 + '@types/node': 18.18.13 babel-jest: 29.7.0(@babel/core@7.22.11) chalk: 4.1.2 ci-info: 3.8.0 @@ -3326,7 +3326,7 @@ packages: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/jsdom': 20.0.1 - '@types/node': 18.18.11 + '@types/node': 18.18.13 jest-mock: 29.7.0 jest-util: 29.7.0 jsdom: 20.0.3 @@ -3343,7 +3343,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.18.11 + '@types/node': 18.18.13 jest-mock: 29.7.0 jest-util: 29.7.0 dev: true @@ -3359,7 +3359,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.6 - '@types/node': 18.18.11 + '@types/node': 18.18.13 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -3410,7 +3410,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 18.18.11 + '@types/node': 18.18.13 jest-util: 29.7.0 dev: true @@ -3465,7 +3465,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.18.11 + '@types/node': 18.18.13 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -3496,7 +3496,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.18.11 + '@types/node': 18.18.13 chalk: 4.1.2 cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.2 @@ -3548,7 +3548,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 18.18.11 + '@types/node': 18.18.13 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 @@ -3560,7 +3560,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 18.18.11 + '@types/node': 18.18.13 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 @@ -3585,7 +3585,7 @@ packages: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.18.11 + '@types/node': 18.18.13 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -3597,13 +3597,13 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.18.11 + '@types/node': 18.18.13 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest@29.7.0(@types/node@18.18.11): + /jest@29.7.0(@types/node@18.18.13): resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -3616,7 +3616,7 @@ packages: '@jest/core': 29.7.0 '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@18.18.11) + jest-cli: 29.7.0(@types/node@18.18.13) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -4981,7 +4981,7 @@ packages: dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@18.18.11) + jest: 29.7.0(@types/node@18.18.13) jest-util: 29.6.3 json5: 2.2.3 lodash.memoize: 4.1.2 diff --git a/source/utility.ts b/source/utility.ts index 4bdf187..796c503 100644 --- a/source/utility.ts +++ b/source/utility.ts @@ -18,9 +18,12 @@ export function makeFormData(data: Record) { typeof value !== 'string' && likeArray(value) ? value : [value] ) as ArrayLike; - Array.from(list, item => item != null && formData.append(key, item)); + for (const item of Array.from(list)) + if (item != null) + if (typeof item === 'object') + formData.append(key, item, (item as File).name); + else formData.append(key, item); } - return formData; } @@ -33,9 +36,9 @@ export function serializeNode(root: Node) { root instanceof SVGElement ? 'image/svg' : root instanceof HTMLDocument || - root instanceof HTMLElement - ? 'text/html' - : 'application/xml', + root instanceof HTMLElement + ? 'text/html' + : 'application/xml', data: stringifyDOM(root) };