@odinlin/utils 0.0.2 → 1.0.0
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/README.md +16 -20
- package/dist/browser/_virtual/rolldown_runtime.cjs +29 -0
- package/dist/browser/array/arrayCast.cjs +29 -0
- package/dist/browser/array/arrayCast.d.ts +27 -0
- package/dist/browser/array/arrayCast.d.ts.map +1 -0
- package/dist/browser/array/arrayCast.js +30 -0
- package/dist/browser/array/arrayCast.js.map +1 -0
- package/dist/browser/array/index.cjs +3 -0
- package/dist/browser/array/index.d.ts +2 -0
- package/dist/browser/array/index.js +3 -0
- package/dist/browser/browser.cjs +196 -0
- package/dist/browser/browser.d.ts +37 -0
- package/dist/browser/browser.js +30 -0
- package/dist/browser/constants/index.cjs +19 -0
- package/dist/browser/constants/index.d.ts +16 -0
- package/dist/browser/constants/index.d.ts.map +1 -0
- package/dist/browser/constants/index.js +17 -0
- package/dist/browser/constants/index.js.map +1 -0
- package/dist/browser/date/index.cjs +8 -0
- package/dist/browser/date/index.d.ts +3 -0
- package/dist/browser/date/index.js +4 -0
- package/dist/browser/date/prettyMs.cjs +9 -0
- package/dist/browser/date/prettyMs.d.ts +8 -0
- package/dist/browser/date/prettyMs.d.ts.map +1 -0
- package/dist/browser/date/prettyMs.js +8 -0
- package/dist/browser/date/prettyMs.js.map +1 -0
- package/dist/browser/date/timeAgo.cjs +14 -0
- package/dist/browser/date/timeAgo.d.ts +15 -0
- package/dist/browser/date/timeAgo.d.ts.map +1 -0
- package/dist/browser/date/timeAgo.js +11 -0
- package/dist/browser/date/timeAgo.js.map +1 -0
- package/dist/browser/file/browser.cjs +25 -0
- package/dist/browser/file/browser.d.ts +7 -0
- package/dist/browser/file/browser.js +7 -0
- package/dist/browser/file/fileBuffer.browser.cjs +115 -0
- package/dist/browser/file/fileBuffer.browser.d.ts +88 -0
- package/dist/browser/file/fileBuffer.browser.d.ts.map +1 -0
- package/dist/browser/file/fileBuffer.browser.js +115 -0
- package/dist/browser/file/fileBuffer.browser.js.map +1 -0
- package/dist/browser/file/fileBytes.cjs +9 -0
- package/dist/browser/file/fileBytes.d.ts +8 -0
- package/dist/browser/file/fileBytes.d.ts.map +1 -0
- package/dist/browser/file/fileBytes.js +8 -0
- package/dist/browser/file/fileBytes.js.map +1 -0
- package/dist/browser/file/fileType.browser.cjs +22 -0
- package/dist/browser/file/fileType.browser.d.ts +19 -0
- package/dist/browser/file/fileType.browser.d.ts.map +1 -0
- package/dist/browser/file/fileType.browser.js +15 -0
- package/dist/browser/file/fileType.browser.js.map +1 -0
- package/dist/browser/file/fileXml.browser.cjs +8 -0
- package/dist/browser/file/fileXml.browser.d.ts +12 -0
- package/dist/browser/file/fileXml.browser.d.ts.map +1 -0
- package/dist/browser/file/fileXml.browser.js +7 -0
- package/dist/browser/file/fileXml.browser.js.map +1 -0
- package/dist/browser/file/interface.d.ts +26 -0
- package/dist/browser/file/interface.d.ts.map +1 -0
- package/dist/browser/function/index.cjs +10 -0
- package/dist/browser/function/index.d.ts +8 -0
- package/dist/browser/function/index.d.ts.map +1 -0
- package/dist/browser/function/index.js +9 -0
- package/dist/browser/function/index.js.map +1 -0
- package/dist/browser/is/index.cjs +42 -0
- package/dist/browser/is/index.d.ts +7 -0
- package/dist/browser/is/index.js +8 -0
- package/dist/browser/is/isJSON.cjs +44 -0
- package/dist/browser/is/isJSON.d.ts +30 -0
- package/dist/browser/is/isJSON.d.ts.map +1 -0
- package/dist/browser/is/isJSON.js +41 -0
- package/dist/browser/is/isJSON.js.map +1 -0
- package/dist/browser/is/isPlatform.cjs +20 -0
- package/dist/browser/is/isPlatform.d.ts +16 -0
- package/dist/browser/is/isPlatform.d.ts.map +1 -0
- package/dist/browser/is/isPlatform.js +19 -0
- package/dist/browser/is/isPlatform.js.map +1 -0
- package/dist/browser/is/isPrimitive.cjs +91 -0
- package/dist/browser/is/isPrimitive.d.ts +79 -0
- package/dist/browser/is/isPrimitive.d.ts.map +1 -0
- package/dist/browser/is/isPrimitive.js +79 -0
- package/dist/browser/is/isPrimitive.js.map +1 -0
- package/dist/browser/is/isPrimitiveWithout.cjs +86 -0
- package/dist/browser/is/isPrimitiveWithout.d.ts +72 -0
- package/dist/browser/is/isPrimitiveWithout.d.ts.map +1 -0
- package/dist/browser/is/isPrimitiveWithout.js +74 -0
- package/dist/browser/is/isPrimitiveWithout.js.map +1 -0
- package/dist/browser/is/isTagOf.cjs +21 -0
- package/dist/browser/is/isTagOf.d.ts +12 -0
- package/dist/browser/is/isTagOf.d.ts.map +1 -0
- package/dist/browser/is/isTagOf.js +21 -0
- package/dist/browser/is/isTagOf.js.map +1 -0
- package/dist/browser/is/isTypeOf.cjs +29 -0
- package/dist/browser/is/isTypeOf.d.ts +16 -0
- package/dist/browser/is/isTypeOf.d.ts.map +1 -0
- package/dist/browser/is/isTypeOf.js +28 -0
- package/dist/browser/is/isTypeOf.js.map +1 -0
- package/dist/browser/object/index.cjs +3 -0
- package/dist/browser/object/index.d.ts +2 -0
- package/dist/browser/object/index.js +3 -0
- package/dist/browser/object/objectClone.cjs +22 -0
- package/dist/browser/object/objectClone.d.ts +8 -0
- package/dist/browser/object/objectClone.d.ts.map +1 -0
- package/dist/browser/object/objectClone.js +22 -0
- package/dist/browser/object/objectClone.js.map +1 -0
- package/dist/browser/promise/awaitTo.cjs +8 -0
- package/dist/browser/promise/awaitTo.d.ts +7 -0
- package/dist/browser/promise/awaitTo.d.ts.map +1 -0
- package/dist/browser/promise/awaitTo.js +8 -0
- package/dist/browser/promise/awaitTo.js.map +1 -0
- package/dist/browser/promise/index.cjs +6 -0
- package/dist/browser/promise/index.d.ts +3 -0
- package/dist/browser/promise/index.js +4 -0
- package/dist/browser/promise/pLimit.cjs +11 -0
- package/dist/browser/promise/pLimit.d.ts +10 -0
- package/dist/browser/promise/pLimit.d.ts.map +1 -0
- package/dist/browser/promise/pLimit.js +9 -0
- package/dist/browser/promise/pLimit.js.map +1 -0
- package/dist/browser/regexp/OTHERS.cjs +16 -0
- package/dist/browser/regexp/OTHERS.d.ts +14 -0
- package/dist/browser/regexp/OTHERS.d.ts.map +1 -0
- package/dist/browser/regexp/OTHERS.js +15 -0
- package/dist/browser/regexp/OTHERS.js.map +1 -0
- package/dist/browser/regexp/RULES.cjs +698 -0
- package/dist/browser/regexp/RULES.d.ts +434 -0
- package/dist/browser/regexp/RULES.d.ts.map +1 -0
- package/dist/browser/regexp/RULES.js +615 -0
- package/dist/browser/regexp/RULES.js.map +1 -0
- package/dist/browser/regexp/index.cjs +89 -0
- package/dist/browser/regexp/index.d.ts +13 -0
- package/dist/browser/regexp/index.d.ts.map +1 -0
- package/dist/browser/regexp/index.js +4 -0
- package/dist/browser/request/browser.cjs +8 -0
- package/dist/browser/request/browser.d.ts +4 -0
- package/dist/browser/request/browser.js +4 -0
- package/dist/browser/request/instance.cjs +135 -0
- package/dist/browser/request/instance.d.ts +45 -0
- package/dist/browser/request/instance.d.ts.map +1 -0
- package/dist/browser/request/instance.js +134 -0
- package/dist/browser/request/instance.js.map +1 -0
- package/dist/browser/request/interceptors.browser.cjs +66 -0
- package/dist/browser/request/interceptors.browser.d.ts +25 -0
- package/dist/browser/request/interceptors.browser.d.ts.map +1 -0
- package/dist/browser/request/interceptors.browser.js +63 -0
- package/dist/browser/request/interceptors.browser.js.map +1 -0
- package/dist/browser/request/interface.d.ts +54 -0
- package/dist/browser/request/interface.d.ts.map +1 -0
- package/dist/browser/string/className.cjs +13 -0
- package/dist/browser/string/className.d.ts +11 -0
- package/dist/browser/string/className.d.ts.map +1 -0
- package/dist/browser/string/className.js +10 -0
- package/dist/browser/string/className.js.map +1 -0
- package/dist/browser/string/index.cjs +7 -0
- package/dist/browser/string/index.d.ts +3 -0
- package/dist/browser/string/index.js +4 -0
- package/dist/browser/string/proto.cjs +37 -0
- package/dist/browser/string/proto.d.ts +19 -0
- package/dist/browser/string/proto.d.ts.map +1 -0
- package/dist/browser/string/proto.js +36 -0
- package/dist/browser/string/proto.js.map +1 -0
- package/dist/browser/tree/index.cjs +7 -0
- package/dist/browser/tree/index.d.ts +5 -0
- package/dist/browser/tree/index.js +5 -0
- package/dist/browser/tree/interface.d.ts +40 -0
- package/dist/browser/tree/interface.d.ts.map +1 -0
- package/dist/browser/tree/treeFilter.cjs +58 -0
- package/dist/browser/tree/treeFilter.d.ts +14 -0
- package/dist/browser/tree/treeFilter.d.ts.map +1 -0
- package/dist/browser/tree/treeFilter.js +59 -0
- package/dist/browser/tree/treeFilter.js.map +1 -0
- package/dist/browser/tree/treeFlatten.cjs +23 -0
- package/dist/browser/tree/treeFlatten.d.ts +15 -0
- package/dist/browser/tree/treeFlatten.d.ts.map +1 -0
- package/dist/browser/tree/treeFlatten.js +24 -0
- package/dist/browser/tree/treeFlatten.js.map +1 -0
- package/dist/browser/tree/treeGenerate.cjs +37 -0
- package/dist/browser/tree/treeGenerate.d.ts +16 -0
- package/dist/browser/tree/treeGenerate.d.ts.map +1 -0
- package/dist/browser/tree/treeGenerate.js +37 -0
- package/dist/browser/tree/treeGenerate.js.map +1 -0
- package/dist/noExternal/browser.esm.html +94 -0
- package/dist/noExternal/browser.esm.js +10734 -0
- package/dist/noExternal/browser.esm.min.js +16 -0
- package/dist/noExternal/browser.esm.min.js.map +1 -0
- package/dist/noExternal/browser.umd.html +28 -0
- package/dist/noExternal/browser.umd.js +10905 -0
- package/dist/noExternal/browser.umd.min.js +16 -0
- package/dist/noExternal/browser.umd.min.js.map +1 -0
- package/dist/noExternal/node.cjs.js +18282 -0
- package/dist/noExternal/node.cjs.min.js +0 -0
- package/dist/noExternal/node.cjs.min.js.map +1 -0
- package/dist/noExternal/node.esm.js +21727 -0
- package/dist/noExternal/node.esm.min.js +36 -0
- package/dist/noExternal/node.esm.min.js.map +1 -0
- package/dist/node/_virtual/rolldown_runtime.cjs +29 -0
- package/dist/node/array/arrayCast.cjs +29 -0
- package/dist/node/array/arrayCast.d.ts +27 -0
- package/dist/node/array/arrayCast.d.ts.map +1 -0
- package/dist/node/array/arrayCast.js +30 -0
- package/dist/node/array/arrayCast.js.map +1 -0
- package/dist/node/array/index.cjs +3 -0
- package/dist/node/array/index.d.ts +2 -0
- package/dist/node/array/index.js +3 -0
- package/dist/node/constants/index.cjs +19 -0
- package/dist/node/constants/index.d.ts +16 -0
- package/dist/node/constants/index.d.ts.map +1 -0
- package/dist/node/constants/index.js +17 -0
- package/dist/node/constants/index.js.map +1 -0
- package/dist/node/date/index.cjs +8 -0
- package/dist/node/date/index.d.ts +3 -0
- package/dist/node/date/index.js +4 -0
- package/dist/node/date/prettyMs.cjs +9 -0
- package/dist/node/date/prettyMs.d.ts +8 -0
- package/dist/node/date/prettyMs.d.ts.map +1 -0
- package/dist/node/date/prettyMs.js +8 -0
- package/dist/node/date/prettyMs.js.map +1 -0
- package/dist/node/date/timeAgo.cjs +14 -0
- package/dist/node/date/timeAgo.d.ts +15 -0
- package/dist/node/date/timeAgo.d.ts.map +1 -0
- package/dist/node/date/timeAgo.js +11 -0
- package/dist/node/date/timeAgo.js.map +1 -0
- package/dist/node/file/fileBuffer.node.cjs +115 -0
- package/dist/node/file/fileBuffer.node.d.ts +88 -0
- package/dist/node/file/fileBuffer.node.d.ts.map +1 -0
- package/dist/node/file/fileBuffer.node.js +115 -0
- package/dist/node/file/fileBuffer.node.js.map +1 -0
- package/dist/node/file/fileBytes.cjs +9 -0
- package/dist/node/file/fileBytes.d.ts +8 -0
- package/dist/node/file/fileBytes.d.ts.map +1 -0
- package/dist/node/file/fileBytes.js +8 -0
- package/dist/node/file/fileBytes.js.map +1 -0
- package/dist/node/file/fileType.node.cjs +22 -0
- package/dist/node/file/fileType.node.d.ts +19 -0
- package/dist/node/file/fileType.node.d.ts.map +1 -0
- package/dist/node/file/fileType.node.js +15 -0
- package/dist/node/file/fileType.node.js.map +1 -0
- package/dist/node/file/fileXml.node.cjs +10 -0
- package/dist/node/file/fileXml.node.d.ts +8 -0
- package/dist/node/file/fileXml.node.d.ts.map +1 -0
- package/dist/node/file/fileXml.node.js +9 -0
- package/dist/node/file/fileXml.node.js.map +1 -0
- package/dist/node/file/interface.d.ts +26 -0
- package/dist/node/file/interface.d.ts.map +1 -0
- package/dist/node/file/node.cjs +25 -0
- package/dist/node/file/node.d.ts +7 -0
- package/dist/node/file/node.js +7 -0
- package/dist/node/function/index.cjs +10 -0
- package/dist/node/function/index.d.ts +8 -0
- package/dist/node/function/index.d.ts.map +1 -0
- package/dist/node/function/index.js +9 -0
- package/dist/node/function/index.js.map +1 -0
- package/dist/node/is/index.cjs +42 -0
- package/dist/node/is/index.d.ts +7 -0
- package/dist/node/is/index.js +8 -0
- package/dist/node/is/isJSON.cjs +44 -0
- package/dist/node/is/isJSON.d.ts +30 -0
- package/dist/node/is/isJSON.d.ts.map +1 -0
- package/dist/node/is/isJSON.js +41 -0
- package/dist/node/is/isJSON.js.map +1 -0
- package/dist/node/is/isPlatform.cjs +20 -0
- package/dist/node/is/isPlatform.d.ts +16 -0
- package/dist/node/is/isPlatform.d.ts.map +1 -0
- package/dist/node/is/isPlatform.js +19 -0
- package/dist/node/is/isPlatform.js.map +1 -0
- package/dist/node/is/isPrimitive.cjs +91 -0
- package/dist/node/is/isPrimitive.d.ts +79 -0
- package/dist/node/is/isPrimitive.d.ts.map +1 -0
- package/dist/node/is/isPrimitive.js +79 -0
- package/dist/node/is/isPrimitive.js.map +1 -0
- package/dist/node/is/isPrimitiveWithout.cjs +86 -0
- package/dist/node/is/isPrimitiveWithout.d.ts +72 -0
- package/dist/node/is/isPrimitiveWithout.d.ts.map +1 -0
- package/dist/node/is/isPrimitiveWithout.js +74 -0
- package/dist/node/is/isPrimitiveWithout.js.map +1 -0
- package/dist/node/is/isTagOf.cjs +21 -0
- package/dist/node/is/isTagOf.d.ts +12 -0
- package/dist/node/is/isTagOf.d.ts.map +1 -0
- package/dist/node/is/isTagOf.js +21 -0
- package/dist/node/is/isTagOf.js.map +1 -0
- package/dist/node/is/isTypeOf.cjs +29 -0
- package/dist/node/is/isTypeOf.d.ts +16 -0
- package/dist/node/is/isTypeOf.d.ts.map +1 -0
- package/dist/node/is/isTypeOf.js +28 -0
- package/dist/node/is/isTypeOf.js.map +1 -0
- package/dist/node/node.cjs +196 -0
- package/dist/node/node.d.ts +37 -0
- package/dist/node/node.js +30 -0
- package/dist/node/object/index.cjs +3 -0
- package/dist/node/object/index.d.ts +2 -0
- package/dist/node/object/index.js +3 -0
- package/dist/node/object/objectClone.cjs +22 -0
- package/dist/node/object/objectClone.d.ts +8 -0
- package/dist/node/object/objectClone.d.ts.map +1 -0
- package/dist/node/object/objectClone.js +22 -0
- package/dist/node/object/objectClone.js.map +1 -0
- package/dist/node/promise/awaitTo.cjs +8 -0
- package/dist/node/promise/awaitTo.d.ts +7 -0
- package/dist/node/promise/awaitTo.d.ts.map +1 -0
- package/dist/node/promise/awaitTo.js +8 -0
- package/dist/node/promise/awaitTo.js.map +1 -0
- package/dist/node/promise/index.cjs +6 -0
- package/dist/node/promise/index.d.ts +3 -0
- package/dist/node/promise/index.js +4 -0
- package/dist/node/promise/pLimit.cjs +11 -0
- package/dist/node/promise/pLimit.d.ts +10 -0
- package/dist/node/promise/pLimit.d.ts.map +1 -0
- package/dist/node/promise/pLimit.js +9 -0
- package/dist/node/promise/pLimit.js.map +1 -0
- package/dist/node/regexp/OTHERS.cjs +16 -0
- package/dist/node/regexp/OTHERS.d.ts +14 -0
- package/dist/node/regexp/OTHERS.d.ts.map +1 -0
- package/dist/node/regexp/OTHERS.js +15 -0
- package/dist/node/regexp/OTHERS.js.map +1 -0
- package/dist/node/regexp/RULES.cjs +698 -0
- package/dist/node/regexp/RULES.d.ts +434 -0
- package/dist/node/regexp/RULES.d.ts.map +1 -0
- package/dist/node/regexp/RULES.js +615 -0
- package/dist/node/regexp/RULES.js.map +1 -0
- package/dist/node/regexp/index.cjs +89 -0
- package/dist/node/regexp/index.d.ts +13 -0
- package/dist/node/regexp/index.d.ts.map +1 -0
- package/dist/node/regexp/index.js +4 -0
- package/dist/node/request/instance.cjs +135 -0
- package/dist/node/request/instance.d.ts +45 -0
- package/dist/node/request/instance.d.ts.map +1 -0
- package/dist/node/request/instance.js +134 -0
- package/dist/node/request/instance.js.map +1 -0
- package/dist/node/request/interceptors.node.cjs +66 -0
- package/dist/node/request/interceptors.node.d.ts +25 -0
- package/dist/node/request/interceptors.node.d.ts.map +1 -0
- package/dist/node/request/interceptors.node.js +63 -0
- package/dist/node/request/interceptors.node.js.map +1 -0
- package/dist/node/request/interface.d.ts +54 -0
- package/dist/node/request/interface.d.ts.map +1 -0
- package/dist/node/request/node.cjs +8 -0
- package/dist/node/request/node.d.ts +4 -0
- package/dist/node/request/node.js +4 -0
- package/dist/node/string/className.cjs +13 -0
- package/dist/node/string/className.d.ts +11 -0
- package/dist/node/string/className.d.ts.map +1 -0
- package/dist/node/string/className.js +10 -0
- package/dist/node/string/className.js.map +1 -0
- package/dist/node/string/index.cjs +7 -0
- package/dist/node/string/index.d.ts +3 -0
- package/dist/node/string/index.js +4 -0
- package/dist/node/string/proto.cjs +37 -0
- package/dist/node/string/proto.d.ts +19 -0
- package/dist/node/string/proto.d.ts.map +1 -0
- package/dist/node/string/proto.js +36 -0
- package/dist/node/string/proto.js.map +1 -0
- package/dist/node/tree/index.cjs +7 -0
- package/dist/node/tree/index.d.ts +5 -0
- package/dist/node/tree/index.js +5 -0
- package/dist/node/tree/interface.d.ts +40 -0
- package/dist/node/tree/interface.d.ts.map +1 -0
- package/dist/node/tree/treeFilter.cjs +58 -0
- package/dist/node/tree/treeFilter.d.ts +14 -0
- package/dist/node/tree/treeFilter.d.ts.map +1 -0
- package/dist/node/tree/treeFilter.js +59 -0
- package/dist/node/tree/treeFilter.js.map +1 -0
- package/dist/node/tree/treeFlatten.cjs +23 -0
- package/dist/node/tree/treeFlatten.d.ts +15 -0
- package/dist/node/tree/treeFlatten.d.ts.map +1 -0
- package/dist/node/tree/treeFlatten.js +24 -0
- package/dist/node/tree/treeFlatten.js.map +1 -0
- package/dist/node/tree/treeGenerate.cjs +37 -0
- package/dist/node/tree/treeGenerate.d.ts +16 -0
- package/dist/node/tree/treeGenerate.d.ts.map +1 -0
- package/dist/node/tree/treeGenerate.js +37 -0
- package/dist/node/tree/treeGenerate.js.map +1 -0
- package/dist/version.d.ts +5 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +10 -0
- package/dist/version.js.map +1 -0
- package/package.json +95 -53
- package/LICENSE +0 -21
- package/dist/index.cjs +0 -403
- package/dist/index.d.ts +0 -496
- package/dist/index.mjs +0 -307
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RULES.js","names":[],"sources":["../../../src/regexp/RULES.ts"],"sourcesContent":["/* eslint-disable eslint-comments/no-unlimited-disable */\n/* eslint-disable */\n/* Generated by any-rule@0.3.18 */\nexport const anyRule1 = {\n title: '火车车次',\n rule: /^[GCDZTSPKXLY1-9]\\d{1,4}$/,\n examples: ['G1868', 'D102', 'D9', 'Z5', 'Z24', 'Z17']\n}\nexport const anyRule2 = {\n title: '手机机身码(IMEI)',\n rule: /^\\d{15,17}$/,\n examples: ['123456789012345', '1234567890123456', '12345678901234567']\n}\nexport const anyRule3 = {\n title: '必须带端口号的网址(或ip)',\n rule: /^((ht|f)tps?:\\/\\/)?[\\w-]+(\\.[\\w-]+)+:\\d{1,5}\\/?$/,\n examples: ['https://www.qq.com:8080', '127.0.0.1:5050', 'baidu.com:8001', 'http://192.168.1.1:9090'],\n counterExamples: ['192.168.1.1', 'https://www.jd.com']\n}\nexport const anyRule4 = {\n // 参考: \n // https://baike.baidu.com/item/%E9%A1%B6%E7%BA%A7%E5%9F%9F%E5%90%8D#4_1\n // https://baike.baidu.com/item/%E9%A1%B6%E7%BA%A7%E5%9F%9F%E5%90%8D#7\n // 也参考谷歌浏览器的地址栏, 如果输入非字母不会被识别为域名\n title: '网址(URL)',\n rule: /^(((ht|f)tps?):\\/\\/)?([^!@#$%^&*?.\\s-]([^!@#$%^&*?.\\s]{0,63}[^!@#$%^&*?.\\s])?\\.)+[a-z]{2,6}\\/?/,\n examples: ['www.qq.com', 'https://vuejs.org/v2/api/#v-model', 'www.qq.99', '//www.qq.com', 'www.腾讯.cs', 'ftp://baidu.qq', 'http://baidu.com', 'https://www.amap.com/search?id=BV10060895&city=420111&geoobj=113.207951%7C29.992557%7C115.785782%7C31.204369&query_type=IDQ&query=%E5%85%89%E8%B0%B7%E5%B9%BF%E5%9C%BA(%E5%9C%B0%E9%93%81%E7%AB%99)&zoom=10.15', '360.com:8080/vue/#/a=1&b=2'],\n counterExamples: ['....']\n}\nexport const anyRule5 = {\n title: '统一社会信用代码',\n rule: /^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/,\n examples: ['91230184MA1BUFLT44', '92371000MA3MXH0E3W'],\n}\nexport const anyRule6 = {\n title: '统一社会信用代码(宽松匹配)(15位/18位/20位数字/字母)',\n rule: /^(([0-9A-Za-z]{15})|([0-9A-Za-z]{18})|([0-9A-Za-z]{20}))$/,\n examples: ['91110108772551611J', '911101085923662400']\n}\nexport const anyRule7 = {\n title: '迅雷链接',\n rule: /^thunderx?:\\/\\/[a-zA-Z\\d]+=$/,\n examples: ['thunder://QUEsICdtYWduZXQ6P3h0PXVybjpidGloOjBCQTE0RTUxRkUwNjU1RjE0Qzc4NjE4RjY4NDY0QjZFNTEyNjcyOUMnWlo='],\n}\nexport const anyRule8 = {\n title: 'ed2k链接(宽松匹配)',\n rule: /^ed2k:\\/\\/\\|file\\|.+\\|\\/$/,\n examples: ['ed2k://|file|%E5%AF%84%E7%94%9F%E8%99%AB.PARASITE.2019.HD-1080p.X264.AAC-UUMp4(ED2000.COM).mp4|2501554832|C0B93E0879C6071CBED732C20CE577A3|h=5HTKZPQFYRKORN52I3M7GQ4QQCIHFIBV|/'],\n}\nexport const anyRule9 = {\n title: '磁力链接(宽松匹配)',\n rule: /^magnet:\\?xt=urn:btih:[0-9a-fA-F]{40,}.*$/,\n examples: ['magnet:?xt=urn:btih:40A89A6F4FB1498A98087109D012A9A851FBE0FC'],\n}\nexport const anyRule10 = {\n title: '子网掩码(不包含 0.0.0.0)',\n rule: /^(254|252|248|240|224|192|128)\\.0\\.0\\.0|255\\.(254|252|248|240|224|192|128|0)\\.0\\.0|255\\.255\\.(254|252|248|240|224|192|128|0)\\.0|255\\.255\\.255\\.(255|254|252|248|240|224|192|128|0)$/,\n examples: ['255.255.255.0', '255.255.255.255', '255.240.0.0']\n}\nexport const anyRule11 = {\n title: 'linux\"隐藏文件\"路径',\n rule: /^\\/(?:[^/]+\\/)*\\.[^/]*/,\n examples: ['/usr/ad/.dd', '/root/.gitignore', '/.gitignore']\n}\nexport const anyRule12 = {\n title: 'linux文件夹路径',\n rule: /^\\/(?:[^/]+\\/)*$/,\n examples: ['/usr/ad/dd/', '/', '/root/', '/ a a / a / a a /']\n}\nexport const anyRule13 = {\n title: 'linux文件路径',\n rule: /^\\/(?:[^/]+\\/)*[^/]+$/,\n examples: ['/root/b.ts', '/root/abc']\n}\nexport const anyRule14 = {\n title: 'window\"文件夹\"路径',\n rule: /^[a-zA-Z]:\\\\(?:\\w+\\\\?)*$/,\n examples: ['C:\\\\Users\\\\Administrator\\\\Desktop', 'e:\\\\m\\\\']\n}\nexport const anyRule15 = {\n title: 'window下\"文件\"路径',\n rule: /^[a-zA-Z]:\\\\(?:\\w+\\\\)*\\w+\\.\\w+$/,\n examples: ['C:\\\\Users\\\\Administrator\\\\Desktop\\\\qq.link', 'e:\\\\m\\\\vscode.exe']\n}\nexport const anyRule16 = {\n title: '股票代码(A股)',\n rule: /^(s[hz]|S[HZ])(000[\\d]{3}|002[\\d]{3}|300[\\d]{3}|600[\\d]{3}|60[\\d]{4})$/,\n examples: ['sz000858', 'SZ002136', 'sz300675', 'SH600600', 'sh601155']\n}\nexport const anyRule17 = {\n title: '大于等于0, 小于等于150, 支持小数位出现5, 如145.5, 用于判断考卷分数',\n rule: /^150$|^(?:\\d|[1-9]\\d|1[0-4]\\d)(?:\\.5)?$/,\n examples: [150, 100.5]\n}\nexport const anyRule18 = {\n title: 'html注释',\n rule: /<!--[\\s\\S]*?-->/g,\n examples: ['<!--<div class=\"_bubble\"></div>--><div>chenguzhen87</div><div class=\"_bubble\"></div>-->']\n}\nexport const anyRule19 = {\n title: 'md5格式(32位)',\n rule: /^[a-fA-F0-9]{32}$/,\n examples: ['21fe181c5bfc16306a6828c1f7b762e8'],\n}\nexport const anyRule20 = {\n title: 'GUID/UUID',\n rule: /^[a-f\\d]{4}(?:[a-f\\d]{4}-){4}[a-f\\d]{12}$/i,\n examples: ['e155518c-ca1b-443c-9be9-fe90fdab7345', '41E3DAF5-6E37-4BCC-9F8E-0D9521E2AA8D', '00000000-0000-0000-0000-000000000000'],\n}\nexport const anyRule21 = {\n title: '版本号(version)格式必须为X.Y.Z',\n rule: /^\\d+(?:\\.\\d+){2}$/,\n examples: ['16.3.10']\n}\nexport const anyRule22 = {\n title: '视频(video)链接地址(视频格式可按需增删)',\n rule: /^https?:\\/\\/(.+\\/)+.+(\\.(swf|avi|flv|mpg|rm|mov|wav|asf|3gp|mkv|rmvb|mp4))$/i,\n examples: ['http://www.abc.com/video/wc.avi']\n}\nexport const anyRule23 = {\n title: '图片(image)链接地址(图片格式可按需增删)',\n rule: /^https?:\\/\\/(.+\\/)+.+(\\.(gif|png|jpg|jpeg|webp|svg|psd|bmp|tif))$/i,\n examples: ['https://www.abc.com/logo.png', 'http://www.abc.com/logo.png']\n}\nexport const anyRule24 = {\n title: '24小时制时间(HH:mm:ss)',\n rule: /^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$/,\n examples: ['23:34:55']\n}\nexport const anyRule25 = {\n title: '12小时制时间(hh:mm:ss)',\n rule: /^(?:1[0-2]|0?[1-9]):[0-5]\\d:[0-5]\\d$/,\n examples: ['11:34:55'],\n counterExamples: ['23:34:55']\n}\nexport const anyRule26 = {\n title: 'base64格式',\n rule: /^\\s*data:(?:[a-z]+\\/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!$&',()*+;=\\-._~:@/?%\\s]*?)\\s*$/i,\n examples: ['data:image/gif;base64,xxxx==']\n}\nexport const anyRule27 = {\n title: '数字/货币金额(支持负数、千分位分隔符)',\n rule: /^-?\\d{1,3}(,\\d{3})*(\\.\\d{1,2})?$/ ,\n examples: [100, -0.99, 3, 234.32, -1, 900, 235.09, '12,345,678.90']\n}\nexport const anyRule28 = {\n title: '银行卡号(10到30位, 覆盖对公/私账户, 参考[微信支付](https://pay.weixin.qq.com/wiki/doc/api/xiaowei.php?chapter=22_1))',\n rule: /^[1-9]\\d{9,29}$/,\n examples: [6234567890, 6222026006705354217]\n}\nexport const anyRule29 = {\n title: '中文姓名',\n rule: /^(?:[\\u4e00-\\u9fa5·]{2,16})$/,\n examples: ['葛二蛋', '凯文·杜兰特', '德克·维尔纳·诺维茨基']\n}\nexport const anyRule30 = {\n title: '英文姓名',\n rule: /(^[a-zA-Z][a-zA-Z\\s]{0,20}[a-zA-Z]$)/,\n examples: ['James', 'Kevin Wayne Durant', 'Dirk Nowitzki']\n}\nexport const anyRule31 = {\n title: '车牌号(新能源)',\n rule: /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z](([DF]((?![IO])[a-zA-Z0-9](?![IO]))[0-9]{4})|([0-9]{5}[DF]))$/,\n examples: ['京AD92035', '甘G23459F', '京A19203D'],\n}\nexport const anyRule32 = {\n title: '车牌号(非新能源)',\n rule: /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]$/,\n examples: ['京A00599', '黑D23908']\n}\nexport const anyRule33 = {\n title: '车牌号(新能源+非新能源)',\n rule: /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$/,\n examples: ['京A12345D', '京A00599', '京AD92035', '甘G23459F', '京AA92035'],\n counterExamples: ['宁AD1234555555', '浙苏H6F681']\n}\nexport const anyRule34 = {\n title: '手机号(mobile phone)中国(严谨), 根据工信部最新公布的手机号段',\n rule: /^(?:(?:\\+|00)86)?1(?:(?:3[\\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\\d])|(?:9[01256789]))\\d{8}$/,\n examples: ['008618311006933', '+8617888829981', '19119255642', '19519255642']\n}\nexport const anyRule35 = {\n title: '手机号(mobile phone)中国(宽松), 只要是13,14,15,16,17,18,19开头即可',\n rule: /^(?:(?:\\+|00)86)?1[3-9]\\d{9}$/,\n examples: ['008618311006933', '+8617888829981', '19119255642']\n}\nexport const anyRule36 = {\n title: '手机号(mobile phone)中国(最宽松), 只要是1开头即可, 如果你的手机号是用来接收短信, 优先建议选择这一条',\n rule: /^(?:(?:\\+|00)86)?1\\d{10}$/,\n examples: ['008618311006933', '+8617888829981', '19119255642']\n}\nexport const anyRule37 = {\n title: '日期(宽松)',\n rule: /^\\d{1,4}(-)(1[0-2]|0?[1-9])\\1(0?[1-9]|[1-2]\\d|30|31)$/,\n examples: ['1990-12-12', '1-1-1', '0000-1-1'],\n counterExamples: ['2020-00-01']\n}\nexport const anyRule38 = {\n title: '日期(严谨, 支持闰年判断)',\n rule: /^(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)$/,\n examples: ['1990-12-12', '2000-02-29'],\n counterExamples: ['2021-02-29']\n}\nexport const anyRule39 = {\n title: '中国省',\n rule: /^浙江|上海|北京|天津|重庆|黑龙江|吉林|辽宁|内蒙古|河北|新疆|甘肃|青海|陕西|宁夏|河南|山东|山西|安徽|湖北|湖南|江苏|四川|贵州|云南|广西|西藏|江西|广东|福建|台湾|海南|香港|澳门$/,\n examples: ['浙江', '台湾'],\n counterExamples: ['哈尔滨']\n}\nexport const anyRule40 = {\n title: '可以被moment转化成功的时间 YYYYMMDD HH:mm:ss',\n rule: /^\\d{4}([/:-\\S])(1[0-2]|0?[1-9])\\1(0?[1-9]|[1-2]\\d|30|31) (?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$/,\n examples: ['2020/01/01 23:59:59', '2020-01-01 00:00:00', '20200101 11:11:11'],\n counterExamples: ['2020/00/01 23:59:59', '2020-01/01 23:59:59', '2020-01-01 23:59:61', '2020-01-0100:00:00',]\n}\nexport const anyRule41 = {\n title: 'email(邮箱)',\n rule: /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n examples: ['90203918@qq.com', 'nbilly@126.com', '汉字@qq.com']\n}\nexport const anyRule42 = {\n title: '座机(tel phone)电话(国内),如: 0341-86091234',\n rule: /^(?:(?:\\d{3}-)?\\d{8}|^(?:\\d{4}-)?\\d{7,8})(?:-\\d+)?$/,\n examples: ['0936-4211235', '89076543', '010-12345678-1234']\n}\nexport const anyRule43 = {\n title: '身份证号(1代,15位数字)',\n rule: /^[1-9]\\d{7}(?:0\\d|10|11|12)(?:0[1-9]|[1-2][\\d]|30|31)\\d{3}$/,\n examples: ['123456991010193']\n}\nexport const anyRule44 = {\n title: '身份证号(2代,18位数字),最后一位是校验位,可能为数字或字符X',\n rule: /^[1-9]\\d{5}(?:18|19|20)\\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\\d|30|31)\\d{3}[\\dXx]$/,\n examples: ['12345619991205131x']\n}\nexport const anyRule45 = {\n title: '身份证号, 支持1/2代(15位/18位数字)',\n rule: /^\\d{6}((((((19|20)\\d{2})(0[13-9]|1[012])(0[1-9]|[12]\\d|30))|(((19|20)\\d{2})(0[13578]|1[02])31)|((19|20)\\d{2})02(0[1-9]|1\\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\\d{3})|((((\\d{2})(0[13-9]|1[012])(0[1-9]|[12]\\d|30))|((\\d{2})(0[13578]|1[02])31)|((\\d{2})02(0[1-9]|1\\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\\d{2}))(\\d|X|x)$/,\n examples: ['622223199912051311', '12345619991205131x', '123456991010193']\n}\nexport const anyRule46 = {\n title: '护照(包含香港、澳门)',\n rule: /(^[EeKkGgDdSsPpHh]\\d{8}$)|(^(([Ee][a-fA-F])|([DdSsPp][Ee])|([Kk][Jj])|([Mm][Aa])|(1[45]))\\d{7}$)/,\n examples: ['s28233515', '141234567', '159203084', 'MA1234567', 'K25345719']\n}\nexport const anyRule47 = {\n title: '帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线组合',\n rule: /^[a-zA-Z]\\w{4,15}$/,\n examples: ['justin', 'justin1989', 'justin_666']\n}\nexport const anyRule48 = {\n title: '中文/汉字',\n // rule: /^[\\u4E00-\\u9FA5]+$/,\n rule: /^(?:[\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uFA0E\\uFA0F\\uFA11\\uFA13\\uFA14\\uFA1F\\uFA21\\uFA23\\uFA24\\uFA27-\\uFA29]|[\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0])+$/,\n examples: ['正则', '前端']\n}\nexport const anyRule49 = {\n title: '小数(支持科学计数)',\n rule: /^[+-]?(\\d+([.]\\d*)?([eE][+-]?\\d+)?|[.]\\d+([eE][+-]?\\d+)?)$/,\n examples: ['0.0', '0.09','4E+4']\n}\nexport const anyRule50 = {\n title: '只包含数字',\n rule: /^\\d+$/,\n examples: [12345678]\n}\nexport const anyRule51 = {\n title: 'html标签(宽松匹配)',\n rule: /<(\\w+)[^>]*>(.*?<\\/\\1>)?/,\n examples: ['<div id=\"app\"> 2333 </div>', '<input type=\"text\">', '<br>']\n}\nexport const anyRule52 = {\n title: '匹配中文汉字和中文标点',\n rule: /[\\u4e00-\\u9fa5|\\u3002|\\uff1f|\\uff01|\\uff0c|\\u3001|\\uff1b|\\uff1a|\\u201c|\\u201d|\\u2018|\\u2019|\\uff08|\\uff09|\\u300a|\\u300b|\\u3008|\\u3009|\\u3010|\\u3011|\\u300e|\\u300f|\\u300c|\\u300d|\\ufe43|\\ufe44|\\u3014|\\u3015|\\u2026|\\u2014|\\uff5e|\\ufe4f|\\uffe5]/,\n examples: [\"匹配中文汉字以及中文标点符号 。 ? ! , 、 ; : “ ” ‘ ' ( ) 《 》 〈 〉 【 】 『 』 「 」 ﹃ ﹄ 〔 〕 … — ~ ﹏ ¥\"]\n}\nexport const anyRule53 = {\n title: 'qq号格式正确',\n rule: /^[1-9][0-9]{4,10}$/,\n examples: [903013545, 9020304]\n}\nexport const anyRule54 = {\n title: '数字和字母组成',\n rule: /^[A-Za-z0-9]+$/,\n examples: ['james666', 'haha233hi']\n}\nexport const anyRule55 = {\n title: '英文字母',\n rule: /^[a-zA-Z]+$/,\n examples: ['Russel']\n}\nexport const anyRule56 = {\n title: '小写英文字母组成',\n rule: /^[a-z]+$/,\n examples: ['russel']\n}\nexport const anyRule57 = {\n title: '大写英文字母',\n rule: /^[A-Z]+$/,\n examples: ['ABC', 'KD']\n}\nexport const anyRule58 = {\n title: '密码强度校验,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符',\n rule: /^\\S*(?=\\S{6,})(?=\\S*\\d)(?=\\S*[A-Z])(?=\\S*[a-z])(?=\\S*[!@#$%^&*? ])\\S*$/,\n examples: ['Kd@curry666']\n}\nexport const anyRule59 = {\n title: '用户名校验,4到16位(字母,数字,下划线,减号)',\n rule: /^[\\w-]{4,16}$/,\n examples: ['xiaohua_qq']\n}\nexport const anyRule60 = {\n title: 'ip-v4[:端口]',\n rule: /^((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])(?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$/,\n examples: ['172.16.0.0', '172.16.0.0:8080', '127.0.0.0', '127.0.0.0:998']\n}\nexport const anyRule61 = {\n title: 'ip-v6[:端口]',\n rule: /(^(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$)|(^\\[(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))\\](?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$)/i,\n examples: ['2031:0000:130f:0000:0000:09c0:876a:130b', '[2031:0000:130f:0000:0000:09c0:876a:130b]:8080']\n}\nexport const anyRule62 = {\n title: '16进制颜色',\n rule: /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3}|[a-fA-F0-9]{8}|[a-fA-F0-9]{4})$/,\n examples: ['#f00', '#F90', '#000', '#fe9de8', '#f8f8f8ff', '#f003']\n}\nexport const anyRule63 = {\n title: '微信号(wx),6至20位,以字母开头,字母,数字,减号,下划线',\n rule: /^[a-zA-Z][-_a-zA-Z0-9]{5,19}$/,\n examples: ['github666', 'kd_-666']\n}\nexport const anyRule64 = {\n title: '邮政编码(中国)',\n rule: /^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6])\\d{4}$/,\n examples: ['734500', '100101']\n}\nexport const anyRule65 = {\n title: '中文和数字',\n rule: /^((?:[\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uFA0E\\uFA0F\\uFA11\\uFA13\\uFA14\\uFA1F\\uFA21\\uFA23\\uFA24\\uFA27-\\uFA29]|[\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0])|(\\d))+$/,\n examples: ['哈哈哈', '你好6啊']\n}\nexport const anyRule66 = {\n title: '不能包含字母',\n rule: /^[^A-Za-z]*$/,\n examples: ['你好6啊', '@¥()!']\n}\nexport const anyRule67 = {\n title: 'java包名',\n rule: /^([a-zA-Z_]\\w*)+([.][a-zA-Z_]\\w*)+$/,\n examples: ['com.bbb.name']\n}\nexport const anyRule68 = {\n title: 'mac地址',\n rule: /^(([a-f0-9][0,2,4,6,8,a,c,e]:([a-f0-9]{2}:){4})|([a-f0-9][0,2,4,6,8,a,c,e]-([a-f0-9]{2}-){4}))[a-f0-9]{2}$/i,\n examples: ['38:f9:d3:4b:f5:51', '00-0C-29-CA-E4-66']\n}\nexport const anyRule69 = {\n title: '匹配连续重复的字符',\n rule: /(.)\\1+/,\n examples: ['我我我', '112233', '11234']\n}\nexport const anyRule70 = {\n title: '数字和英文字母组成,并且同时含有数字和英文字母',\n rule: /^(?=.*[a-zA-Z])(?=.*\\d).+$/,\n examples: ['我a我1我', 'a对1']\n}\nexport const anyRule71 = {\n title: '香港身份证 ',\n rule: /^[a-zA-Z]\\d{6}\\([\\dA]\\)$/,\n examples: ['K034169(1)']\n}\nexport const anyRule72 = {\n // 参考: \n // https://baike.baidu.com/item/%E6%BE%B3%E9%97%A8%E5%B1%85%E6%B0%91%E8%BA%AB%E4%BB%BD%E8%AF%81/12509098?fr=aladdin#5\n title: '澳门身份证 ',\n rule: /^[1|5|7]\\d{6}\\(\\d\\)$/,\n examples: ['5686611(1)']\n}\nexport const anyRule73 = {\n title: '台湾身份证 ',\n rule: /^[a-zA-Z][0-9]{9}$/,\n examples: ['U193683453']\n}\nexport const anyRule74 = {\n title: '大写字母,小写字母,数字,特殊符号 `@#$%^&*`~()-+=` 中任意3项密码',\n rule: /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\W_!@#$%^&*`~()-+=]+$)(?![a-z0-9]+$)(?![a-z\\W_!@#$%^&*`~()-+=]+$)(?![0-9\\W_!@#$%^&*`~()-+=]+$)[a-zA-Z0-9\\W_!@#$%^&*`~()-+=]/,\n examples: ['a1@', 'A1@', 'Aa@']\n}\nexport const anyRule75 = {\n title: 'ASCII码表中的全部的特殊字符',\n rule: /[\\x21-\\x2F\\x3A-\\x40\\x5B-\\x60\\x7B-\\x7E]+/,\n examples: [\"[\", \".\", \"^\", \"&3%\"]\n}\nexport const anyRule76 = {\n title: '正整数,不包含0',\n rule: /^\\+?[1-9]\\d*$/,\n examples: [1231]\n}\nexport const anyRule77 = {\n title: '负整数,不包含0',\n rule: /^-[1-9]\\d*$/,\n examples: [-1231]\n}\nexport const anyRule78 = {\n title: '整数',\n rule: /^(?:0|(?:-?[1-9]\\d*))$/,\n examples: [-1231, 123, 0],\n counterExamples: ['01']\n}\nexport const anyRule79 = {\n title: '浮点数',\n rule: /^(-?[1-9]\\d*\\.\\d+|-?0\\.\\d*[1-9]\\d*|0\\.0+)$/,\n examples: [\"1.23\", \"-1.01\", \"0.00\"]\n // allow \"1.23\", allow \"-0.1\", allow \"0.00\", ban \"-0.00\", ban \"2.\", allow \"2.0\"\n}\nexport const anyRule80 = {\n title: '浮点数(严格)',\n rule: /^(-?[1-9]\\d*\\.\\d+|-?0\\.\\d*[1-9])$/,\n examples: [\"1.23\", \"-1.01\"]\n // allow \"1.23\", allow \"-0.1\", ban \"2.\", ban \"2.0\"\n}\nexport const anyRule81 = {\n title: 'email(支持中文邮箱)',\n rule: /^[A-Za-z0-9\\u4e00-\\u9fa5]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$/,\n examples: ['90203918@qq.com', 'nbilly@126.com', '啦啦啦@126.com']\n}\nexport const anyRule82 = {\n title: '域名(非网址, 不包含协议)',\n rule: /^([0-9a-zA-Z-]{1,}\\.)+([a-zA-Z]{2,})$/,\n examples: ['www.baidu.com',\n 'baidu.com',\n 'baidu.com.cn',\n 'api.baidu.com',\n 'nodejs.org',\n 'nodejs.cn'],\n counterExamples: ['http://baidu.com', 'https://baidu.com', 'www.百度.com']\n}\nexport const anyRule83 = {\n title: '军官/士兵证',\n rule: /^[\\u4E00-\\u9FA5](字第)([0-9a-zA-Z]{4,8})(号?)$/,\n examples: ['军字第2001988号', '士字第P011816X号'],\n}\nexport const anyRule84 = {\n title: '户口薄',\n rule: /(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)/,\n examples: ['441421999707223115'],\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
const require_OTHERS = require('./OTHERS.cjs');
|
|
2
|
+
const require_RULES = require('./RULES.cjs');
|
|
3
|
+
|
|
4
|
+
exports.anyRule1 = require_RULES.anyRule1;
|
|
5
|
+
exports.anyRule10 = require_RULES.anyRule10;
|
|
6
|
+
exports.anyRule11 = require_RULES.anyRule11;
|
|
7
|
+
exports.anyRule12 = require_RULES.anyRule12;
|
|
8
|
+
exports.anyRule13 = require_RULES.anyRule13;
|
|
9
|
+
exports.anyRule14 = require_RULES.anyRule14;
|
|
10
|
+
exports.anyRule15 = require_RULES.anyRule15;
|
|
11
|
+
exports.anyRule16 = require_RULES.anyRule16;
|
|
12
|
+
exports.anyRule17 = require_RULES.anyRule17;
|
|
13
|
+
exports.anyRule18 = require_RULES.anyRule18;
|
|
14
|
+
exports.anyRule19 = require_RULES.anyRule19;
|
|
15
|
+
exports.anyRule2 = require_RULES.anyRule2;
|
|
16
|
+
exports.anyRule20 = require_RULES.anyRule20;
|
|
17
|
+
exports.anyRule21 = require_RULES.anyRule21;
|
|
18
|
+
exports.anyRule22 = require_RULES.anyRule22;
|
|
19
|
+
exports.anyRule23 = require_RULES.anyRule23;
|
|
20
|
+
exports.anyRule24 = require_RULES.anyRule24;
|
|
21
|
+
exports.anyRule25 = require_RULES.anyRule25;
|
|
22
|
+
exports.anyRule26 = require_RULES.anyRule26;
|
|
23
|
+
exports.anyRule27 = require_RULES.anyRule27;
|
|
24
|
+
exports.anyRule28 = require_RULES.anyRule28;
|
|
25
|
+
exports.anyRule29 = require_RULES.anyRule29;
|
|
26
|
+
exports.anyRule3 = require_RULES.anyRule3;
|
|
27
|
+
exports.anyRule30 = require_RULES.anyRule30;
|
|
28
|
+
exports.anyRule31 = require_RULES.anyRule31;
|
|
29
|
+
exports.anyRule32 = require_RULES.anyRule32;
|
|
30
|
+
exports.anyRule33 = require_RULES.anyRule33;
|
|
31
|
+
exports.anyRule34 = require_RULES.anyRule34;
|
|
32
|
+
exports.anyRule35 = require_RULES.anyRule35;
|
|
33
|
+
exports.anyRule36 = require_RULES.anyRule36;
|
|
34
|
+
exports.anyRule37 = require_RULES.anyRule37;
|
|
35
|
+
exports.anyRule38 = require_RULES.anyRule38;
|
|
36
|
+
exports.anyRule39 = require_RULES.anyRule39;
|
|
37
|
+
exports.anyRule4 = require_RULES.anyRule4;
|
|
38
|
+
exports.anyRule40 = require_RULES.anyRule40;
|
|
39
|
+
exports.anyRule41 = require_RULES.anyRule41;
|
|
40
|
+
exports.anyRule42 = require_RULES.anyRule42;
|
|
41
|
+
exports.anyRule43 = require_RULES.anyRule43;
|
|
42
|
+
exports.anyRule44 = require_RULES.anyRule44;
|
|
43
|
+
exports.anyRule45 = require_RULES.anyRule45;
|
|
44
|
+
exports.anyRule46 = require_RULES.anyRule46;
|
|
45
|
+
exports.anyRule47 = require_RULES.anyRule47;
|
|
46
|
+
exports.anyRule48 = require_RULES.anyRule48;
|
|
47
|
+
exports.anyRule49 = require_RULES.anyRule49;
|
|
48
|
+
exports.anyRule5 = require_RULES.anyRule5;
|
|
49
|
+
exports.anyRule50 = require_RULES.anyRule50;
|
|
50
|
+
exports.anyRule51 = require_RULES.anyRule51;
|
|
51
|
+
exports.anyRule52 = require_RULES.anyRule52;
|
|
52
|
+
exports.anyRule53 = require_RULES.anyRule53;
|
|
53
|
+
exports.anyRule54 = require_RULES.anyRule54;
|
|
54
|
+
exports.anyRule55 = require_RULES.anyRule55;
|
|
55
|
+
exports.anyRule56 = require_RULES.anyRule56;
|
|
56
|
+
exports.anyRule57 = require_RULES.anyRule57;
|
|
57
|
+
exports.anyRule58 = require_RULES.anyRule58;
|
|
58
|
+
exports.anyRule59 = require_RULES.anyRule59;
|
|
59
|
+
exports.anyRule6 = require_RULES.anyRule6;
|
|
60
|
+
exports.anyRule60 = require_RULES.anyRule60;
|
|
61
|
+
exports.anyRule61 = require_RULES.anyRule61;
|
|
62
|
+
exports.anyRule62 = require_RULES.anyRule62;
|
|
63
|
+
exports.anyRule63 = require_RULES.anyRule63;
|
|
64
|
+
exports.anyRule64 = require_RULES.anyRule64;
|
|
65
|
+
exports.anyRule65 = require_RULES.anyRule65;
|
|
66
|
+
exports.anyRule66 = require_RULES.anyRule66;
|
|
67
|
+
exports.anyRule67 = require_RULES.anyRule67;
|
|
68
|
+
exports.anyRule68 = require_RULES.anyRule68;
|
|
69
|
+
exports.anyRule69 = require_RULES.anyRule69;
|
|
70
|
+
exports.anyRule7 = require_RULES.anyRule7;
|
|
71
|
+
exports.anyRule70 = require_RULES.anyRule70;
|
|
72
|
+
exports.anyRule71 = require_RULES.anyRule71;
|
|
73
|
+
exports.anyRule72 = require_RULES.anyRule72;
|
|
74
|
+
exports.anyRule73 = require_RULES.anyRule73;
|
|
75
|
+
exports.anyRule74 = require_RULES.anyRule74;
|
|
76
|
+
exports.anyRule75 = require_RULES.anyRule75;
|
|
77
|
+
exports.anyRule76 = require_RULES.anyRule76;
|
|
78
|
+
exports.anyRule77 = require_RULES.anyRule77;
|
|
79
|
+
exports.anyRule78 = require_RULES.anyRule78;
|
|
80
|
+
exports.anyRule79 = require_RULES.anyRule79;
|
|
81
|
+
exports.anyRule8 = require_RULES.anyRule8;
|
|
82
|
+
exports.anyRule80 = require_RULES.anyRule80;
|
|
83
|
+
exports.anyRule81 = require_RULES.anyRule81;
|
|
84
|
+
exports.anyRule82 = require_RULES.anyRule82;
|
|
85
|
+
exports.anyRule83 = require_RULES.anyRule83;
|
|
86
|
+
exports.anyRule84 = require_RULES.anyRule84;
|
|
87
|
+
exports.anyRule9 = require_RULES.anyRule9;
|
|
88
|
+
exports.anyRuleWithBrace = require_OTHERS.anyRuleWithBrace;
|
|
89
|
+
exports.anyRuleWithBracket = require_OTHERS.anyRuleWithBracket;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { anyRuleWithBrace, anyRuleWithBracket } from "./OTHERS.js";
|
|
2
|
+
import { anyRule1, anyRule10, anyRule11, anyRule12, anyRule13, anyRule14, anyRule15, anyRule16, anyRule17, anyRule18, anyRule19, anyRule2, anyRule20, anyRule21, anyRule22, anyRule23, anyRule24, anyRule25, anyRule26, anyRule27, anyRule28, anyRule29, anyRule3, anyRule30, anyRule31, anyRule32, anyRule33, anyRule34, anyRule35, anyRule36, anyRule37, anyRule38, anyRule39, anyRule4, anyRule40, anyRule41, anyRule42, anyRule43, anyRule44, anyRule45, anyRule46, anyRule47, anyRule48, anyRule49, anyRule5, anyRule50, anyRule51, anyRule52, anyRule53, anyRule54, anyRule55, anyRule56, anyRule57, anyRule58, anyRule59, anyRule6, anyRule60, anyRule61, anyRule62, anyRule63, anyRule64, anyRule65, anyRule66, anyRule67, anyRule68, anyRule69, anyRule7, anyRule70, anyRule71, anyRule72, anyRule73, anyRule74, anyRule75, anyRule76, anyRule77, anyRule78, anyRule79, anyRule8, anyRule80, anyRule81, anyRule82, anyRule83, anyRule84, anyRule9 } from "./RULES.js";
|
|
3
|
+
|
|
4
|
+
//#region src/regexp/index.d.ts
|
|
5
|
+
interface RegExpRule {
|
|
6
|
+
title: string;
|
|
7
|
+
rule: RegExp;
|
|
8
|
+
examples: any[];
|
|
9
|
+
counterExamples: any[];
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { RegExpRule, anyRule1, anyRule10, anyRule11, anyRule12, anyRule13, anyRule14, anyRule15, anyRule16, anyRule17, anyRule18, anyRule19, anyRule2, anyRule20, anyRule21, anyRule22, anyRule23, anyRule24, anyRule25, anyRule26, anyRule27, anyRule28, anyRule29, anyRule3, anyRule30, anyRule31, anyRule32, anyRule33, anyRule34, anyRule35, anyRule36, anyRule37, anyRule38, anyRule39, anyRule4, anyRule40, anyRule41, anyRule42, anyRule43, anyRule44, anyRule45, anyRule46, anyRule47, anyRule48, anyRule49, anyRule5, anyRule50, anyRule51, anyRule52, anyRule53, anyRule54, anyRule55, anyRule56, anyRule57, anyRule58, anyRule59, anyRule6, anyRule60, anyRule61, anyRule62, anyRule63, anyRule64, anyRule65, anyRule66, anyRule67, anyRule68, anyRule69, anyRule7, anyRule70, anyRule71, anyRule72, anyRule73, anyRule74, anyRule75, anyRule76, anyRule77, anyRule78, anyRule79, anyRule8, anyRule80, anyRule81, anyRule82, anyRule83, anyRule84, anyRule9, anyRuleWithBrace, anyRuleWithBracket };
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/regexp/index.ts"],"sourcesContent":[],"mappings":";;;;UACiB,UAAA;;QAET;;EAFS,eAAU,EAAA,GAAA,EAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { anyRuleWithBrace, anyRuleWithBracket } from "./OTHERS.js";
|
|
2
|
+
import { anyRule1, anyRule10, anyRule11, anyRule12, anyRule13, anyRule14, anyRule15, anyRule16, anyRule17, anyRule18, anyRule19, anyRule2, anyRule20, anyRule21, anyRule22, anyRule23, anyRule24, anyRule25, anyRule26, anyRule27, anyRule28, anyRule29, anyRule3, anyRule30, anyRule31, anyRule32, anyRule33, anyRule34, anyRule35, anyRule36, anyRule37, anyRule38, anyRule39, anyRule4, anyRule40, anyRule41, anyRule42, anyRule43, anyRule44, anyRule45, anyRule46, anyRule47, anyRule48, anyRule49, anyRule5, anyRule50, anyRule51, anyRule52, anyRule53, anyRule54, anyRule55, anyRule56, anyRule57, anyRule58, anyRule59, anyRule6, anyRule60, anyRule61, anyRule62, anyRule63, anyRule64, anyRule65, anyRule66, anyRule67, anyRule68, anyRule69, anyRule7, anyRule70, anyRule71, anyRule72, anyRule73, anyRule74, anyRule75, anyRule76, anyRule77, anyRule78, anyRule79, anyRule8, anyRule80, anyRule81, anyRule82, anyRule83, anyRule84, anyRule9 } from "./RULES.js";
|
|
3
|
+
|
|
4
|
+
export { anyRule1, anyRule10, anyRule11, anyRule12, anyRule13, anyRule14, anyRule15, anyRule16, anyRule17, anyRule18, anyRule19, anyRule2, anyRule20, anyRule21, anyRule22, anyRule23, anyRule24, anyRule25, anyRule26, anyRule27, anyRule28, anyRule29, anyRule3, anyRule30, anyRule31, anyRule32, anyRule33, anyRule34, anyRule35, anyRule36, anyRule37, anyRule38, anyRule39, anyRule4, anyRule40, anyRule41, anyRule42, anyRule43, anyRule44, anyRule45, anyRule46, anyRule47, anyRule48, anyRule49, anyRule5, anyRule50, anyRule51, anyRule52, anyRule53, anyRule54, anyRule55, anyRule56, anyRule57, anyRule58, anyRule59, anyRule6, anyRule60, anyRule61, anyRule62, anyRule63, anyRule64, anyRule65, anyRule66, anyRule67, anyRule68, anyRule69, anyRule7, anyRule70, anyRule71, anyRule72, anyRule73, anyRule74, anyRule75, anyRule76, anyRule77, anyRule78, anyRule79, anyRule8, anyRule80, anyRule81, anyRule82, anyRule83, anyRule84, anyRule9, anyRuleWithBrace, anyRuleWithBracket };
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_isPrimitive = require('../is/isPrimitive.cjs');
|
|
3
|
+
const require_isPrimitiveWithout = require('../is/isPrimitiveWithout.cjs');
|
|
4
|
+
const require_constants_index = require('../constants/index.cjs');
|
|
5
|
+
const require_OTHERS = require('../regexp/OTHERS.cjs');
|
|
6
|
+
const require_proto = require('../string/proto.cjs');
|
|
7
|
+
let axios = require("axios");
|
|
8
|
+
axios = require_rolldown_runtime.__toESM(axios);
|
|
9
|
+
|
|
10
|
+
//#region src/request/instance.ts
|
|
11
|
+
/**
|
|
12
|
+
* 自定义 axios 请求
|
|
13
|
+
* @function 1. 请求体: 支持 argsRegexp、args 实现动态路径
|
|
14
|
+
* @function 2. 拦截器: 在不改变 axios 原始行为的前提下,实现对应拦截器的特性开关 (不推荐: runWhen 仅支持请求拦截器,不支持响应拦截器)
|
|
15
|
+
* @function 3. 响应体: 在 safeRequest 实现错误优先
|
|
16
|
+
* @reference https://axios-http.com/zh/docs/req_config
|
|
17
|
+
*/
|
|
18
|
+
var Request = class {
|
|
19
|
+
/**
|
|
20
|
+
* axios 实例
|
|
21
|
+
*/
|
|
22
|
+
#instance;
|
|
23
|
+
/**
|
|
24
|
+
* 在拦截器内获取指定名称的配置选项
|
|
25
|
+
* @param {InternalAxiosRequestConfig} config 当前请求的配置
|
|
26
|
+
* @param {string} optionName 配置选项名称
|
|
27
|
+
* @returns {any} 配置选项的值
|
|
28
|
+
*/
|
|
29
|
+
static getOptionValue(config, optionName) {
|
|
30
|
+
return config?.fetchOptions?.[optionName];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 将额外的自定义 options 合并到 fetchOptions 并往下传递
|
|
34
|
+
* @function 自定义功能: 贯穿整个请求流程,实现对应拦截器的特性开关
|
|
35
|
+
* @param {AxiosRequestConfigWrapper} config 请求配置对象
|
|
36
|
+
* @returns {Record<string, any>} 最终的 config.fetchOptions 对象
|
|
37
|
+
*/
|
|
38
|
+
#getInternalOptions(config) {
|
|
39
|
+
const { fetchOptions, options } = config;
|
|
40
|
+
return Object.assign({}, fetchOptions, options);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 全局注册拦截器,且不会被移除,通过特性开关外部控制
|
|
44
|
+
* @description 拦截器是洋葱模型 - 拦截器 request 先注册后执行,拦截器 response 先注册先执行
|
|
45
|
+
* @description 内置属性 transformRequest 和 transformResponse 是洋葱结构的最内层,可以当作特殊的拦截器
|
|
46
|
+
* @param {Record<string, AxiosInterceptorParameters>} interceptors 待注册的拦截器
|
|
47
|
+
* @returns {void} 无返回值
|
|
48
|
+
*/
|
|
49
|
+
#registerInterceptors(interceptors = []) {
|
|
50
|
+
for (const interceptor of interceptors) {
|
|
51
|
+
const { request, response } = interceptor;
|
|
52
|
+
request && this.#instance.interceptors.request.use(request.onFulfilled, request.onRejected, request.options);
|
|
53
|
+
response && this.#instance.interceptors.response.use(response.onFulfilled, response.onRejected);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* 可复用的请求体处理逻辑,返回处理后的请求配置对象
|
|
58
|
+
* @param {AxiosRequestConfigWrapper} config 请求配置对象
|
|
59
|
+
* @returns {AxiosRequestConfig} 处理后的请求配置对象
|
|
60
|
+
*/
|
|
61
|
+
#beforeRequest(config) {
|
|
62
|
+
const { url, argsRegexp, args, fetchOptions, options, ...restConfig } = config;
|
|
63
|
+
const mergedUrl = this.getUri({
|
|
64
|
+
url,
|
|
65
|
+
argsRegexp,
|
|
66
|
+
args
|
|
67
|
+
});
|
|
68
|
+
const mergedFetchOptions = this.#getInternalOptions({
|
|
69
|
+
fetchOptions,
|
|
70
|
+
options
|
|
71
|
+
});
|
|
72
|
+
return {
|
|
73
|
+
...restConfig,
|
|
74
|
+
url: mergedUrl,
|
|
75
|
+
fetchOptions: mergedFetchOptions
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
constructor(createAxiosDefaults) {
|
|
79
|
+
const { fetchOptions, options, interceptors, ...restCreateAxiosDefaults } = createAxiosDefaults;
|
|
80
|
+
const mergedFetchOptions = this.#getInternalOptions({
|
|
81
|
+
fetchOptions,
|
|
82
|
+
options
|
|
83
|
+
});
|
|
84
|
+
const mergedConfig = {
|
|
85
|
+
...restCreateAxiosDefaults,
|
|
86
|
+
fetchOptions: mergedFetchOptions
|
|
87
|
+
};
|
|
88
|
+
this.#instance = axios.default.create(mergedConfig);
|
|
89
|
+
this.#registerInterceptors(interceptors);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* 获取最终的请求路径
|
|
93
|
+
* @function 自定义功能: 若只包含 `{ url?; argsRegexp?; args?; }`,则仅执行动态路径参数替换
|
|
94
|
+
* @param {AxiosRequestConfigWrapper} config 请求配置对象
|
|
95
|
+
* @returns {string} 最终的请求路径
|
|
96
|
+
*/
|
|
97
|
+
getUri(config) {
|
|
98
|
+
const { url = "", argsRegexp, args, ...restConfig } = config;
|
|
99
|
+
const mergedArgsRegexp = argsRegexp ?? require_OTHERS.anyRuleWithBracket.rule;
|
|
100
|
+
const mergedArgs = args ?? require_constants_index.CONSTANT_EMPTY_OBJECT;
|
|
101
|
+
const mergedUrl = url.replace(mergedArgsRegexp, require_proto.stringReplaceParametersWithObj(mergedArgs));
|
|
102
|
+
if (require_isPrimitiveWithout.isEmpty(restConfig)) return mergedUrl;
|
|
103
|
+
return this.#instance.getUri({
|
|
104
|
+
...restConfig,
|
|
105
|
+
url: mergedUrl
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* 包装请求方法
|
|
110
|
+
* @param {AxiosRequestConfigWrapper} config 请求体
|
|
111
|
+
* @returns {SafeRequestReturnValue} 响应体
|
|
112
|
+
*/
|
|
113
|
+
async request(config) {
|
|
114
|
+
const mergedConfig = this.#beforeRequest(config);
|
|
115
|
+
return this.#instance.request(mergedConfig);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* 包装错误优先的请求方法
|
|
119
|
+
* @param {AxiosRequestConfigWrapper} config 请求体
|
|
120
|
+
* @returns {SafeRequestReturnValue} 响应体
|
|
121
|
+
*/
|
|
122
|
+
async safeRequest(config) {
|
|
123
|
+
const mergedConfig = this.#beforeRequest(config);
|
|
124
|
+
return this.#instance.request(mergedConfig).then((response) => {
|
|
125
|
+
if (require_isPrimitive.isNil(response)) return [new axios.AxiosError("The error occurred because no return value was set in AxiosRequestInterceptor or AxiosResponseInterceptor", "ERR_INTERCEPTOR"), void 0];
|
|
126
|
+
if (require_isPrimitiveWithout.isError(response) && response.isAxiosError) return [response, void 0];
|
|
127
|
+
return [null, response];
|
|
128
|
+
}).catch((err) => {
|
|
129
|
+
return [err, void 0];
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
//#endregion
|
|
135
|
+
exports.Request = Request;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { AxiosCreateDefaultsWrapper, AxiosRequestConfigWrapper, AxiosResponseWrapper } from "./interface.js";
|
|
2
|
+
import { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from "axios";
|
|
3
|
+
|
|
4
|
+
//#region src/request/instance.d.ts
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* 自定义 axios 请求
|
|
8
|
+
* @function 1. 请求体: 支持 argsRegexp、args 实现动态路径
|
|
9
|
+
* @function 2. 拦截器: 在不改变 axios 原始行为的前提下,实现对应拦截器的特性开关 (不推荐: runWhen 仅支持请求拦截器,不支持响应拦截器)
|
|
10
|
+
* @function 3. 响应体: 在 safeRequest 实现错误优先
|
|
11
|
+
* @reference https://axios-http.com/zh/docs/req_config
|
|
12
|
+
*/
|
|
13
|
+
declare class Request<CustomOptions extends Record<string, any> = Record<string, any>> {
|
|
14
|
+
#private;
|
|
15
|
+
/**
|
|
16
|
+
* 在拦截器内获取指定名称的配置选项
|
|
17
|
+
* @param {InternalAxiosRequestConfig} config 当前请求的配置
|
|
18
|
+
* @param {string} optionName 配置选项名称
|
|
19
|
+
* @returns {any} 配置选项的值
|
|
20
|
+
*/
|
|
21
|
+
static getOptionValue<Value = any, ReqData = any>(config: InternalAxiosRequestConfig<ReqData>, optionName: string): Value;
|
|
22
|
+
constructor(createAxiosDefaults: AxiosCreateDefaultsWrapper<CustomOptions>);
|
|
23
|
+
/**
|
|
24
|
+
* 获取最终的请求路径
|
|
25
|
+
* @function 自定义功能: 若只包含 `{ url?; argsRegexp?; args?; }`,则仅执行动态路径参数替换
|
|
26
|
+
* @param {AxiosRequestConfigWrapper} config 请求配置对象
|
|
27
|
+
* @returns {string} 最终的请求路径
|
|
28
|
+
*/
|
|
29
|
+
getUri<CustomReqData = any, CustomReqParams = any, CustomReqArgs extends Record<string, any> = Record<string, any>>(config: AxiosRequestConfigWrapper<CustomOptions, CustomReqData, CustomReqParams, CustomReqArgs>): string;
|
|
30
|
+
/**
|
|
31
|
+
* 包装请求方法
|
|
32
|
+
* @param {AxiosRequestConfigWrapper} config 请求体
|
|
33
|
+
* @returns {SafeRequestReturnValue} 响应体
|
|
34
|
+
*/
|
|
35
|
+
request<CustomRes = AxiosResponse<any>, CustomReqData = any, CustomReqParams = any, CustomReqArgs extends Record<string, any> = Record<string, any>>(config: AxiosRequestConfigWrapper<CustomOptions, CustomReqData, CustomReqParams, CustomReqArgs>): Promise<CustomRes>;
|
|
36
|
+
/**
|
|
37
|
+
* 包装错误优先的请求方法
|
|
38
|
+
* @param {AxiosRequestConfigWrapper} config 请求体
|
|
39
|
+
* @returns {SafeRequestReturnValue} 响应体
|
|
40
|
+
*/
|
|
41
|
+
safeRequest<CustomRes = AxiosResponse<any>, CustomReqData = any, CustomReqParams = any, CustomReqArgs extends Record<string, any> = Record<string, any>>(config: AxiosRequestConfigWrapper<CustomOptions, CustomReqData, CustomReqParams, CustomReqArgs>): Promise<AxiosResponseWrapper<AxiosError<any, CustomReqData>, CustomRes>>;
|
|
42
|
+
}
|
|
43
|
+
//#endregion
|
|
44
|
+
export { Request };
|
|
45
|
+
//# sourceMappingURL=instance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instance.d.ts","names":[],"sources":["../../../src/request/instance.ts"],"sourcesContent":[],"mappings":";;;;;;AAgBA;;;;;;AA2E8D,cA3EjD,OA2EiD,CAAA,sBA3EnB,MA2EmB,CAAA,MAAA,EAAA,GAAA,CAAA,GA3EG,MA2EH,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA;EAA3B,CAAA,OAAA;EAmBT;;;;;;EAEd,OAAA,cAAA,CAAA,QAAA,GAAA,EAAA,UAAA,GAAA,CAAA,CAAA,MAAA,EApFgD,0BAoFhD,CApF2E,OAoF3E,CAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EApF0G,KAoF1G;EAkBI,WAAA,CAAA,mBAAA,EAvCmB,0BAuCnB,CAvC8C,aAuC9C,CAAA;EAGU;;;;;;EAEd,MAAA,CAAA,gBAAA,GAAA,EAAA,kBAAA,GAAA,EAAA,sBAzBc,MAyBd,CAAA,MAAA,EAAA,GAAA,CAAA,GAzBoC,MAyBpC,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,MAAA,EAvBA,yBAuBA,CAvB0B,aAuB1B,EAvByC,aAuBzC,EAvBwD,eAuBxD,EAvByE,aAuBzE,CAAA,CAAA,EAAA,MAAA;EACC;;;;;EAiByB,OAAA,CAAA,YAvBtB,aAuBsB,CAAA,GAAA,CAAA,EAAA,gBAAA,GAAA,EAAA,kBAAA,GAAA,EAAA,sBApBZ,MAoBY,CAAA,MAAA,EAAA,GAAA,CAAA,GApBU,MAoBV,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,MAAA,EAlB1B,yBAkB0B,CAlBA,aAkBA,EAlBe,aAkBf,EAlB8B,eAkB9B,EAlB+C,aAkB/C,CAAA,CAAA,EAjBjC,OAiBiC,CAjBzB,SAiByB,CAAA;EAAe;;;;;EACnB,WAAA,CAAA,YANlB,aAMkB,CAAA,GAAA,CAAA,EAAA,gBAAA,GAAA,EAAA,kBAAA,GAAA,EAAA,sBAHR,MAGQ,CAAA,MAAA,EAAA,GAAA,CAAA,GAHc,MAGd,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,MAAA,EADtB,yBACsB,CADI,aACJ,EADmB,aACnB,EADkC,eAClC,EADmD,aACnD,CAAA,CAAA,EAA7B,OAA6B,CAArB,oBAAqB,CAAA,UAAA,CAAA,GAAA,EAAgB,aAAhB,CAAA,EAAgC,SAAhC,CAAA,CAAA"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { isNil } from "../is/isPrimitive.js";
|
|
2
|
+
import { isEmpty, isError } from "../is/isPrimitiveWithout.js";
|
|
3
|
+
import { CONSTANT_EMPTY_OBJECT } from "../constants/index.js";
|
|
4
|
+
import { anyRuleWithBracket } from "../regexp/OTHERS.js";
|
|
5
|
+
import { stringReplaceParametersWithObj } from "../string/proto.js";
|
|
6
|
+
import axios, { AxiosError } from "axios";
|
|
7
|
+
|
|
8
|
+
//#region src/request/instance.ts
|
|
9
|
+
/**
|
|
10
|
+
* 自定义 axios 请求
|
|
11
|
+
* @function 1. 请求体: 支持 argsRegexp、args 实现动态路径
|
|
12
|
+
* @function 2. 拦截器: 在不改变 axios 原始行为的前提下,实现对应拦截器的特性开关 (不推荐: runWhen 仅支持请求拦截器,不支持响应拦截器)
|
|
13
|
+
* @function 3. 响应体: 在 safeRequest 实现错误优先
|
|
14
|
+
* @reference https://axios-http.com/zh/docs/req_config
|
|
15
|
+
*/
|
|
16
|
+
var Request = class {
|
|
17
|
+
/**
|
|
18
|
+
* axios 实例
|
|
19
|
+
*/
|
|
20
|
+
#instance;
|
|
21
|
+
/**
|
|
22
|
+
* 在拦截器内获取指定名称的配置选项
|
|
23
|
+
* @param {InternalAxiosRequestConfig} config 当前请求的配置
|
|
24
|
+
* @param {string} optionName 配置选项名称
|
|
25
|
+
* @returns {any} 配置选项的值
|
|
26
|
+
*/
|
|
27
|
+
static getOptionValue(config, optionName) {
|
|
28
|
+
return config?.fetchOptions?.[optionName];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 将额外的自定义 options 合并到 fetchOptions 并往下传递
|
|
32
|
+
* @function 自定义功能: 贯穿整个请求流程,实现对应拦截器的特性开关
|
|
33
|
+
* @param {AxiosRequestConfigWrapper} config 请求配置对象
|
|
34
|
+
* @returns {Record<string, any>} 最终的 config.fetchOptions 对象
|
|
35
|
+
*/
|
|
36
|
+
#getInternalOptions(config) {
|
|
37
|
+
const { fetchOptions, options } = config;
|
|
38
|
+
return Object.assign({}, fetchOptions, options);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* 全局注册拦截器,且不会被移除,通过特性开关外部控制
|
|
42
|
+
* @description 拦截器是洋葱模型 - 拦截器 request 先注册后执行,拦截器 response 先注册先执行
|
|
43
|
+
* @description 内置属性 transformRequest 和 transformResponse 是洋葱结构的最内层,可以当作特殊的拦截器
|
|
44
|
+
* @param {Record<string, AxiosInterceptorParameters>} interceptors 待注册的拦截器
|
|
45
|
+
* @returns {void} 无返回值
|
|
46
|
+
*/
|
|
47
|
+
#registerInterceptors(interceptors = []) {
|
|
48
|
+
for (const interceptor of interceptors) {
|
|
49
|
+
const { request, response } = interceptor;
|
|
50
|
+
request && this.#instance.interceptors.request.use(request.onFulfilled, request.onRejected, request.options);
|
|
51
|
+
response && this.#instance.interceptors.response.use(response.onFulfilled, response.onRejected);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* 可复用的请求体处理逻辑,返回处理后的请求配置对象
|
|
56
|
+
* @param {AxiosRequestConfigWrapper} config 请求配置对象
|
|
57
|
+
* @returns {AxiosRequestConfig} 处理后的请求配置对象
|
|
58
|
+
*/
|
|
59
|
+
#beforeRequest(config) {
|
|
60
|
+
const { url, argsRegexp, args, fetchOptions, options, ...restConfig } = config;
|
|
61
|
+
const mergedUrl = this.getUri({
|
|
62
|
+
url,
|
|
63
|
+
argsRegexp,
|
|
64
|
+
args
|
|
65
|
+
});
|
|
66
|
+
const mergedFetchOptions = this.#getInternalOptions({
|
|
67
|
+
fetchOptions,
|
|
68
|
+
options
|
|
69
|
+
});
|
|
70
|
+
return {
|
|
71
|
+
...restConfig,
|
|
72
|
+
url: mergedUrl,
|
|
73
|
+
fetchOptions: mergedFetchOptions
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
constructor(createAxiosDefaults) {
|
|
77
|
+
const { fetchOptions, options, interceptors, ...restCreateAxiosDefaults } = createAxiosDefaults;
|
|
78
|
+
const mergedFetchOptions = this.#getInternalOptions({
|
|
79
|
+
fetchOptions,
|
|
80
|
+
options
|
|
81
|
+
});
|
|
82
|
+
const mergedConfig = {
|
|
83
|
+
...restCreateAxiosDefaults,
|
|
84
|
+
fetchOptions: mergedFetchOptions
|
|
85
|
+
};
|
|
86
|
+
this.#instance = axios.create(mergedConfig);
|
|
87
|
+
this.#registerInterceptors(interceptors);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* 获取最终的请求路径
|
|
91
|
+
* @function 自定义功能: 若只包含 `{ url?; argsRegexp?; args?; }`,则仅执行动态路径参数替换
|
|
92
|
+
* @param {AxiosRequestConfigWrapper} config 请求配置对象
|
|
93
|
+
* @returns {string} 最终的请求路径
|
|
94
|
+
*/
|
|
95
|
+
getUri(config) {
|
|
96
|
+
const { url = "", argsRegexp, args, ...restConfig } = config;
|
|
97
|
+
const mergedArgsRegexp = argsRegexp ?? anyRuleWithBracket.rule;
|
|
98
|
+
const mergedArgs = args ?? CONSTANT_EMPTY_OBJECT;
|
|
99
|
+
const mergedUrl = url.replace(mergedArgsRegexp, stringReplaceParametersWithObj(mergedArgs));
|
|
100
|
+
if (isEmpty(restConfig)) return mergedUrl;
|
|
101
|
+
return this.#instance.getUri({
|
|
102
|
+
...restConfig,
|
|
103
|
+
url: mergedUrl
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* 包装请求方法
|
|
108
|
+
* @param {AxiosRequestConfigWrapper} config 请求体
|
|
109
|
+
* @returns {SafeRequestReturnValue} 响应体
|
|
110
|
+
*/
|
|
111
|
+
async request(config) {
|
|
112
|
+
const mergedConfig = this.#beforeRequest(config);
|
|
113
|
+
return this.#instance.request(mergedConfig);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* 包装错误优先的请求方法
|
|
117
|
+
* @param {AxiosRequestConfigWrapper} config 请求体
|
|
118
|
+
* @returns {SafeRequestReturnValue} 响应体
|
|
119
|
+
*/
|
|
120
|
+
async safeRequest(config) {
|
|
121
|
+
const mergedConfig = this.#beforeRequest(config);
|
|
122
|
+
return this.#instance.request(mergedConfig).then((response) => {
|
|
123
|
+
if (isNil(response)) return [new AxiosError("The error occurred because no return value was set in AxiosRequestInterceptor or AxiosResponseInterceptor", "ERR_INTERCEPTOR"), void 0];
|
|
124
|
+
if (isError(response) && response.isAxiosError) return [response, void 0];
|
|
125
|
+
return [null, response];
|
|
126
|
+
}).catch((err) => {
|
|
127
|
+
return [err, void 0];
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
//#endregion
|
|
133
|
+
export { Request };
|
|
134
|
+
//# sourceMappingURL=instance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instance.js","names":["#instance","#getInternalOptions","#registerInterceptors","#beforeRequest"],"sources":["../../../src/request/instance.ts"],"sourcesContent":["/* eslint-disable eslint-comments/no-unlimited-disable */\nimport type { AxiosInstance, AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig } from 'axios'\nimport type { AxiosCreateDefaultsWrapper, AxiosInterceptorParameters, AxiosRequestConfigWrapper, AxiosResponseWrapper } from './interface'\nimport axios, { AxiosError } from 'axios'\nimport { CONSTANT_EMPTY_OBJECT } from '../constants'\nimport { isEmpty, isError, isNil } from '../is'\nimport { anyRuleWithBracket } from '../regexp'\nimport { stringReplaceParametersWithObj } from '../string'\n\n/**\n * 自定义 axios 请求\n * @function 1. 请求体: 支持 argsRegexp、args 实现动态路径\n * @function 2. 拦截器: 在不改变 axios 原始行为的前提下,实现对应拦截器的特性开关 (不推荐: runWhen 仅支持请求拦截器,不支持响应拦截器)\n * @function 3. 响应体: 在 safeRequest 实现错误优先\n * @reference https://axios-http.com/zh/docs/req_config\n */\nexport class Request<CustomOptions extends Record<string, any> = Record<string, any>> {\n /**\n * axios 实例\n */\n #instance: AxiosInstance\n\n /**\n * 在拦截器内获取指定名称的配置选项\n * @param {InternalAxiosRequestConfig} config 当前请求的配置\n * @param {string} optionName 配置选项名称\n * @returns {any} 配置选项的值\n */\n static getOptionValue<Value = any, ReqData = any>(config: InternalAxiosRequestConfig<ReqData>, optionName: string): Value {\n // @ts-expect-error 获取指定的配置选项的值\n return config?.fetchOptions?.[optionName]\n }\n\n /**\n * 将额外的自定义 options 合并到 fetchOptions 并往下传递\n * @function 自定义功能: 贯穿整个请求流程,实现对应拦截器的特性开关\n * @param {AxiosRequestConfigWrapper} config 请求配置对象\n * @returns {Record<string, any>} 最终的 config.fetchOptions 对象\n */\n #getInternalOptions(config: AxiosRequestConfigWrapper<CustomOptions>): Record<string, any> {\n const { fetchOptions, options } = config\n\n const mergedFetchOptions = Object.assign({}, fetchOptions, options)\n\n return mergedFetchOptions\n }\n\n /**\n * 全局注册拦截器,且不会被移除,通过特性开关外部控制\n * @description 拦截器是洋葱模型 - 拦截器 request 先注册后执行,拦截器 response 先注册先执行\n * @description 内置属性 transformRequest 和 transformResponse 是洋葱结构的最内层,可以当作特殊的拦截器\n * @param {Record<string, AxiosInterceptorParameters>} interceptors 待注册的拦截器\n * @returns {void} 无返回值\n */\n #registerInterceptors(interceptors: Array<AxiosInterceptorParameters> = []): void {\n for (const interceptor of interceptors) {\n const { request, response } = interceptor\n request && this.#instance.interceptors.request.use(request.onFulfilled, request.onRejected, request.options)\n response && this.#instance.interceptors.response.use(response.onFulfilled, response.onRejected)\n }\n }\n\n /**\n * 可复用的请求体处理逻辑,返回处理后的请求配置对象\n * @param {AxiosRequestConfigWrapper} config 请求配置对象\n * @returns {AxiosRequestConfig} 处理后的请求配置对象\n */\n #beforeRequest<\n CustomReqData = any,\n CustomReqParams = any,\n CustomReqArgs extends Record<string, any> = Record<string, any>,\n >(\n config: AxiosRequestConfigWrapper<CustomOptions, CustomReqData, CustomReqParams, CustomReqArgs>,\n ): AxiosRequestConfig<CustomReqData> {\n const {\n /** 动态路径 */\n // eslint-disable-next-line\n url, argsRegexp, args,\n /** fetchOptions 对象 */\n // eslint-disable-next-line\n fetchOptions, options,\n // 其他配置\n ...restConfig\n } = config\n\n const mergedUrl = this.getUri({ url, argsRegexp, args })\n const mergedFetchOptions = this.#getInternalOptions({ fetchOptions, options })\n const mergedConfig: AxiosRequestConfig<CustomReqData> = { ...restConfig, url: mergedUrl, fetchOptions: mergedFetchOptions }\n return mergedConfig\n }\n\n constructor(createAxiosDefaults: AxiosCreateDefaultsWrapper<CustomOptions>) {\n const { fetchOptions, options, interceptors, ...restCreateAxiosDefaults } = createAxiosDefaults\n\n const mergedFetchOptions = this.#getInternalOptions({ fetchOptions, options })\n const mergedConfig = { ...restCreateAxiosDefaults, fetchOptions: mergedFetchOptions }\n\n this.#instance = axios.create(mergedConfig)\n this.#registerInterceptors(interceptors)\n }\n\n /**\n * 获取最终的请求路径\n * @function 自定义功能: 若只包含 `{ url?; argsRegexp?; args?; }`,则仅执行动态路径参数替换\n * @param {AxiosRequestConfigWrapper} config 请求配置对象\n * @returns {string} 最终的请求路径\n */\n getUri<\n CustomReqData = any,\n CustomReqParams = any,\n CustomReqArgs extends Record<string, any> = Record<string, any>,\n >(\n config: AxiosRequestConfigWrapper<CustomOptions, CustomReqData, CustomReqParams, CustomReqArgs>,\n ): string {\n const { url = '', argsRegexp, args, ...restConfig } = config\n\n const mergedArgsRegexp = argsRegexp ?? anyRuleWithBracket.rule\n const mergedArgs = args ?? CONSTANT_EMPTY_OBJECT\n const mergedUrl = url.replace(mergedArgsRegexp, stringReplaceParametersWithObj(mergedArgs))\n\n if (isEmpty(restConfig)) return mergedUrl\n return this.#instance.getUri({ ...restConfig, url: mergedUrl })\n }\n\n /**\n * 包装请求方法\n * @param {AxiosRequestConfigWrapper} config 请求体\n * @returns {SafeRequestReturnValue} 响应体\n */\n async request<\n CustomRes = AxiosResponse<any>,\n CustomReqData = any,\n CustomReqParams = any,\n CustomReqArgs extends Record<string, any> = Record<string, any>,\n >(\n config: AxiosRequestConfigWrapper<CustomOptions, CustomReqData, CustomReqParams, CustomReqArgs>,\n ): Promise<CustomRes> {\n const mergedConfig = this.#beforeRequest(config)\n\n return this.#instance.request<any, CustomRes, CustomReqData>(mergedConfig)\n }\n\n /**\n * 包装错误优先的请求方法\n * @param {AxiosRequestConfigWrapper} config 请求体\n * @returns {SafeRequestReturnValue} 响应体\n */\n async safeRequest<\n CustomRes = AxiosResponse<any>,\n CustomReqData = any,\n CustomReqParams = any,\n CustomReqArgs extends Record<string, any> = Record<string, any>,\n >(\n config: AxiosRequestConfigWrapper<CustomOptions, CustomReqData, CustomReqParams, CustomReqArgs>,\n ): Promise<AxiosResponseWrapper<AxiosError<any, CustomReqData>, CustomRes>> {\n const mergedConfig = this.#beforeRequest(config)\n\n return this.#instance.request<any, CustomRes, CustomReqData>(mergedConfig)\n .then<AxiosResponseWrapper<AxiosError<any, CustomReqData>, CustomRes>>((response) => {\n // 不正确应用: 由于 AxiosResponseInterceptor.onRejected 未设置返回值\n if (isNil(response)) {\n return [new AxiosError('The error occurred because no return value was set in AxiosRequestInterceptor or AxiosResponseInterceptor', 'ERR_INTERCEPTOR'), undefined]\n }\n // 不正确应用: 在 AxiosResponseInterceptor.onRejected 内 `返回值为 AxiosError`\n // 不正确应用: 在 AxiosResponseInterceptor.onFulfilled 内 `返回值为 AxiosError`\n if (isError(response) && (response as any).isAxiosError) {\n return [response as unknown as AxiosError<any, CustomReqData>, undefined]\n }\n // 此处 msw 模拟网络请求的响应体不能根据 [object Response] 来判断类型,所以未对其类型进一步判断,不能防止返回其他非 response 类型\n return [null, response]\n })\n .catch<AxiosResponseWrapper<AxiosError<any, CustomReqData>, CustomRes>>((err: AxiosError<any, CustomReqData>) => {\n // 默认 reject 逻辑: `error => !status`、`AxiosRequestConfig['validateStatus']: (status) => status >= 200 && status < 300`\n // 不正确应用: 在 AxiosResponseInterceptor.onFulfilled 内 `throw AxiosError`\n return [err, undefined]\n })\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAgBA,IAAa,UAAb,MAAsF;;;;CAIpF;;;;;;;CAQA,OAAO,eAA2C,QAA6C,YAA2B;AAExH,SAAO,QAAQ,eAAe;;;;;;;;CAShC,oBAAoB,QAAuE;EACzF,MAAM,EAAE,cAAc,YAAY;AAIlC,SAF2B,OAAO,OAAO,EAAE,EAAE,cAAc,QAAQ;;;;;;;;;CAYrE,sBAAsB,eAAkD,EAAE,EAAQ;AAChF,OAAK,MAAM,eAAe,cAAc;GACtC,MAAM,EAAE,SAAS,aAAa;AAC9B,cAAW,MAAKA,SAAU,aAAa,QAAQ,IAAI,QAAQ,aAAa,QAAQ,YAAY,QAAQ,QAAQ;AAC5G,eAAY,MAAKA,SAAU,aAAa,SAAS,IAAI,SAAS,aAAa,SAAS,WAAW;;;;;;;;CASnG,eAKE,QACmC;EACnC,MAAM,EAGJ,KAAK,YAAY,MAGjB,cAAc,SAEd,GAAG,eACD;EAEJ,MAAM,YAAY,KAAK,OAAO;GAAE;GAAK;GAAY;GAAM,CAAC;EACxD,MAAM,qBAAqB,MAAKC,mBAAoB;GAAE;GAAc;GAAS,CAAC;AAE9E,SADwD;GAAE,GAAG;GAAY,KAAK;GAAW,cAAc;GAAoB;;CAI7H,YAAY,qBAAgE;EAC1E,MAAM,EAAE,cAAc,SAAS,cAAc,GAAG,4BAA4B;EAE5E,MAAM,qBAAqB,MAAKA,mBAAoB;GAAE;GAAc;GAAS,CAAC;EAC9E,MAAM,eAAe;GAAE,GAAG;GAAyB,cAAc;GAAoB;AAErF,QAAKD,WAAY,MAAM,OAAO,aAAa;AAC3C,QAAKE,qBAAsB,aAAa;;;;;;;;CAS1C,OAKE,QACQ;EACR,MAAM,EAAE,MAAM,IAAI,YAAY,MAAM,GAAG,eAAe;EAEtD,MAAM,mBAAmB,cAAc,mBAAmB;EAC1D,MAAM,aAAa,QAAQ;EAC3B,MAAM,YAAY,IAAI,QAAQ,kBAAkB,+BAA+B,WAAW,CAAC;AAE3F,MAAI,QAAQ,WAAW,CAAE,QAAO;AAChC,SAAO,MAAKF,SAAU,OAAO;GAAE,GAAG;GAAY,KAAK;GAAW,CAAC;;;;;;;CAQjE,MAAM,QAMJ,QACoB;EACpB,MAAM,eAAe,MAAKG,cAAe,OAAO;AAEhD,SAAO,MAAKH,SAAU,QAAuC,aAAa;;;;;;;CAQ5E,MAAM,YAMJ,QAC0E;EAC1E,MAAM,eAAe,MAAKG,cAAe,OAAO;AAEhD,SAAO,MAAKH,SAAU,QAAuC,aAAa,CACvE,MAAuE,aAAa;AAEnF,OAAI,MAAM,SAAS,CACjB,QAAO,CAAC,IAAI,WAAW,6GAA6G,kBAAkB,EAAE,OAAU;AAIpK,OAAI,QAAQ,SAAS,IAAK,SAAiB,aACzC,QAAO,CAAC,UAAuD,OAAU;AAG3E,UAAO,CAAC,MAAM,SAAS;IACvB,CACD,OAAwE,QAAwC;AAG/G,UAAO,CAAC,KAAK,OAAU;IACvB"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_isPrimitive = require('../is/isPrimitive.cjs');
|
|
3
|
+
const require_isJSON = require('../is/isJSON.cjs');
|
|
4
|
+
const require_fileBuffer_node = require('../file/fileBuffer.node.cjs');
|
|
5
|
+
const require_instance = require('./instance.cjs');
|
|
6
|
+
let axios = require("axios");
|
|
7
|
+
|
|
8
|
+
//#region src/request/interceptors.node.ts
|
|
9
|
+
/**
|
|
10
|
+
* 预设拦截器 - 响应耗时
|
|
11
|
+
*/
|
|
12
|
+
const presetInterceptorWithResponseLog = { response: {
|
|
13
|
+
onFulfilled(res) {
|
|
14
|
+
const { config } = res;
|
|
15
|
+
const requestId = config.headers["X-Request-Id"];
|
|
16
|
+
require_instance.Request.getOptionValue(config, "enableTimeConsuming") && console.timeEnd(`[presetInterceptorWithLog] ${requestId}`);
|
|
17
|
+
return res;
|
|
18
|
+
},
|
|
19
|
+
onRejected(err) {
|
|
20
|
+
const requestId = err.config.headers["X-Request-Id"];
|
|
21
|
+
require_instance.Request.getOptionValue(err.config, "enableTimeConsuming") && console.timeEnd(`[presetInterceptorWithLog] ${requestId}`);
|
|
22
|
+
throw err;
|
|
23
|
+
}
|
|
24
|
+
} };
|
|
25
|
+
/**
|
|
26
|
+
* 预设拦截器 - 响应尝试 JSON 解析,若解析成功,则将解析结果赋值给 res.dataJSON,不会影响后续拦截器的参数
|
|
27
|
+
* @description 若 responseType 为 json 或 forcedJSONParsing 为 true ,则尝试解析响应体为 JSON 字符串
|
|
28
|
+
* @description 其中前提是通过 `transformResponse: []` 覆盖内置的默认 transformResponse 函数
|
|
29
|
+
*/
|
|
30
|
+
const presetInterceptorWithResponseJSON = { response: { async onFulfilled(res) {
|
|
31
|
+
const { config, request, data } = res;
|
|
32
|
+
const allowJSONRequested = config.responseType === "json" || (config.transitional?.forcedJSONParsing ?? true);
|
|
33
|
+
let tempData = null;
|
|
34
|
+
if (require_isPrimitive.isString(data) && allowJSONRequested) tempData = data;
|
|
35
|
+
else if (require_fileBuffer_node.FileBuffer.isBlob(data) && data.type === "application/json" && allowJSONRequested) tempData = (await require_fileBuffer_node.FileBuffer.fromBlob(data)).toString();
|
|
36
|
+
if (require_isPrimitive.isNull(tempData)) return res;
|
|
37
|
+
const [err, json] = require_isJSON.isJSONString(tempData, config.parseReviver);
|
|
38
|
+
if (err) {
|
|
39
|
+
if (!(config.transitional?.silentJSONParsing ?? false)) throw err.name === "SyntaxError" ? axios.AxiosError.from(err, axios.AxiosError.ERR_BAD_RESPONSE, config, request, res) : err;
|
|
40
|
+
return res;
|
|
41
|
+
}
|
|
42
|
+
res.dataJSON = json;
|
|
43
|
+
return res;
|
|
44
|
+
} } };
|
|
45
|
+
/**
|
|
46
|
+
* 预设拦截器 - 请求耗时
|
|
47
|
+
*/
|
|
48
|
+
const presetInterceptorWithRequestLog = { request: { onFulfilled(config) {
|
|
49
|
+
const requestId = Date.now().toString();
|
|
50
|
+
config.headers["X-Request-Id"] = requestId;
|
|
51
|
+
require_instance.Request.getOptionValue(config, "enableTimeConsuming") && console.time(`[presetInterceptorWithLog] ${requestId}`);
|
|
52
|
+
return config;
|
|
53
|
+
} } };
|
|
54
|
+
/**
|
|
55
|
+
* 预设拦截器 - 请求认证
|
|
56
|
+
*/
|
|
57
|
+
const presetInterceptorWithRequestAuth = { request: { onFulfilled(config) {
|
|
58
|
+
config.headers.setAuthorization(`Bearer ${sessionStorage.getItem("Authorization") || ""}`);
|
|
59
|
+
return config;
|
|
60
|
+
} } };
|
|
61
|
+
|
|
62
|
+
//#endregion
|
|
63
|
+
exports.presetInterceptorWithRequestAuth = presetInterceptorWithRequestAuth;
|
|
64
|
+
exports.presetInterceptorWithRequestLog = presetInterceptorWithRequestLog;
|
|
65
|
+
exports.presetInterceptorWithResponseJSON = presetInterceptorWithResponseJSON;
|
|
66
|
+
exports.presetInterceptorWithResponseLog = presetInterceptorWithResponseLog;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { AxiosInterceptorParameters } from "./interface.js";
|
|
2
|
+
|
|
3
|
+
//#region src/request/interceptors.node.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 预设拦截器 - 响应耗时
|
|
7
|
+
*/
|
|
8
|
+
declare const presetInterceptorWithResponseLog: AxiosInterceptorParameters;
|
|
9
|
+
/**
|
|
10
|
+
* 预设拦截器 - 响应尝试 JSON 解析,若解析成功,则将解析结果赋值给 res.dataJSON,不会影响后续拦截器的参数
|
|
11
|
+
* @description 若 responseType 为 json 或 forcedJSONParsing 为 true ,则尝试解析响应体为 JSON 字符串
|
|
12
|
+
* @description 其中前提是通过 `transformResponse: []` 覆盖内置的默认 transformResponse 函数
|
|
13
|
+
*/
|
|
14
|
+
declare const presetInterceptorWithResponseJSON: AxiosInterceptorParameters;
|
|
15
|
+
/**
|
|
16
|
+
* 预设拦截器 - 请求耗时
|
|
17
|
+
*/
|
|
18
|
+
declare const presetInterceptorWithRequestLog: AxiosInterceptorParameters;
|
|
19
|
+
/**
|
|
20
|
+
* 预设拦截器 - 请求认证
|
|
21
|
+
*/
|
|
22
|
+
declare const presetInterceptorWithRequestAuth: AxiosInterceptorParameters;
|
|
23
|
+
//#endregion
|
|
24
|
+
export { presetInterceptorWithRequestAuth, presetInterceptorWithRequestLog, presetInterceptorWithResponseJSON, presetInterceptorWithResponseLog };
|
|
25
|
+
//# sourceMappingURL=interceptors.node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interceptors.node.d.ts","names":[],"sources":["../../../src/request/interceptors.node.ts"],"sourcesContent":[],"mappings":";;;;;;AAUA;AAuBa,cAvBA,gCAuBmC,EAvBD,0BA2D9C;AAKD;AAeA;;;;cAxDa,mCAAmC;;;;cAyCnC,iCAAiC;;;;cAejC,kCAAkC"}
|