Latest Threat Research:SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains.Details
Socket
Book a DemoInstallSign in
Socket

jshttp

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

jshttp - npm Package Compare versions

Comparing version
0.5.4
to
0.5.6
+67
lib/core/get-url.js
'use strict'
const paramsSerializer = require('./params-serializer')
function isHttpUrl(url) {
if (url && typeof url === 'string' && (url.startsWith('http://') || url.startsWith('https://'))) {
return true
}
return false
}
function isBrowserEnv() {
return typeof XMLHttpRequest === 'function' && typeof location === 'object'
}
/**
* 合并 `baseURL` 和 `url` 生成基础部分 url
*/
function concatBaseURL(baseURL = '', url = '') {
if (isHttpUrl(url)) {
return url.replace(/\/+$/u, '')
}
return baseURL.replace(/\/+$/u, '') + '/' + url.replace(/^\/+/u, '').replace(/\/+$/u, '')
}
function decodeQs(str) {
if (!str) {
return {}
}
// 拆分为 ['name=mark','age=19'] 形式的数组
const parts = str.split('&')
const obj = {}
for (let i = 0; i < parts.length; i++) {
const [name, value] = parts[i].split('=')
if (name && value) {
obj[name] = value
}
}
return obj
}
function encodeQs(obj) {
return paramsSerializer(obj)
}
module.exports = function getUrl(baseURL = '', url = '', params = {}) {
if (!isHttpUrl(baseURL) && !isHttpUrl(url) && !isBrowserEnv()) {
throw new Error(`配置项 \`baseURL\` 和 \`url\` 至少需要有一个是以 \`http://\` 或 \`https://\` 开头的绝对路径!`)
}
// 连接 `baseURL` 和 `url`
let baseUrl = concatBaseURL(baseURL, url)
// 去掉 `#` 后面的部分
baseUrl = baseUrl.split('#')[0]
const [beforeQs, quertstring] = baseUrl.split('?')
const params2 = decodeQs(quertstring || '')
const query = Object.assign({}, params2, params)
const wholeQs = encodeQs(query)
return beforeQs + (wholeQs ? '?' + wholeQs : '')
}
+1
-1

@@ -5,3 +5,3 @@ 'use strict'

const statuses = require('../static/statuses')
const getUrl = require('../core/getUrl')
const getUrl = require('../core/get-url')

@@ -8,0 +8,0 @@ module.exports = function wxMiniprogramAdapter(config) {

@@ -12,2 +12,6 @@ 'use strict'

module.exports = function paramsSerializer(params) {
if (typeof params !== 'object') {
return ''
}
const parts = []

@@ -14,0 +18,0 @@ const basicType = ['number', 'string', 'boolean']

'use strict'
const getDefaultAdapter = require('./core/default-adapter')
const paramsSerializer = require('./core/params-serializer')
const defaults = {
adapter: getDefaultAdapter(),
paramsSerializer,
}
module.exports = defaults
'use strict'
const CryptoJS = require('crypto-js')
const getUrl = require('../core/getUrl')
const getUrl = require('../core/get-url')

@@ -6,0 +6,0 @@ /** 放在 `config.headers` 中但是非正常请求头字段的字段 */

@@ -7,2 +7,3 @@ 'use strict'

const aliyunApigwSignatureInterceptor = require('./interceptors/aliyun-apigw-signature')
const getUrl = require('./core/get-url')

@@ -13,2 +14,5 @@ function create(defaultConfig) {

instance.interceptors.request.use(coreInterceptor)
instance.getUrl = function instanceGetUrl(config) {
return getUrl(config.baseURL, config.url, config.params)
}
return instance

@@ -15,0 +19,0 @@ }

{
"name": "jshttp",
"version": "0.5.4",
"version": "0.5.6",
"description": "基于 Axios 的 HTTP 请求库,内置了一些常用功能,支持在任何 Javascript 环境下运行",

@@ -31,2 +31,5 @@ "main": "index.js",

"homepage": "https://github.com/inlym/jshttp#readme",
"peerDependencies": {
"axios": "*"
},
"devDependencies": {

@@ -36,5 +39,4 @@ "mocha": "^8.4.0"

"dependencies": {
"axios": "^0.21.1",
"crypto-js": "^4.0.0"
}
}
'use strict'
const paramsSerializer = require('./params-serializer')
function isHttpUrl(url) {
if (url && typeof url === 'string' && (url.startsWith('http://') || url.startsWith('https://'))) {
return true
}
return false
}
function isBrowserEnv() {
return typeof XMLHttpRequest === 'function' && typeof location === 'object'
}
/**
* 合并 `baseURL` 和 `url` 生成基础部分 url
*/
function concatBaseURL(baseURL = '', url = '') {
if (isHttpUrl(url)) {
return url.replace(/\/+$/u, '')
}
return baseURL.replace(/\/+$/u, '') + '/' + url.replace(/^\/+/u, '').replace(/\/+$/u, '')
}
function decodeQs(str) {
if (!str) {
return {}
}
// 拆分为 ['name=mark','age=19'] 形式的数组
const parts = str.split('&')
const obj = {}
for (let i = 0; i < parts.length; i++) {
const [name, value] = parts[i].split('=')
if (name && value) {
obj[name] = value
}
}
return obj
}
function encodeQs(obj) {
return paramsSerializer(obj)
}
module.exports = function getUri(baseURL = '', url = '', params = {}) {
if (!isHttpUrl(baseURL) && !isHttpUrl(url) && !isBrowserEnv()) {
throw new Error(`配置项 \`baseURL\` 和 \`url\` 至少需要有一个是以 \`http://\` 或 \`https://\` 开头的绝对路径!`)
}
// 连接 `baseURL` 和 `url`
let baseUrl = concatBaseURL(baseURL, url)
// 去掉 `#` 后面的部分
baseUrl = baseUrl.split('#')[0]
const [beforeQs, quertstring] = baseUrl.split('?')
const params2 = decodeQs(quertstring || '')
const query = Object.assign({}, params2, params)
const wholeQs = encodeQs(query)
return beforeQs + (wholeQs ? '?' + wholeQs : '')
}