Skip to content

Commit

Permalink
refactor: change the dependency of qs to query-string
Browse files Browse the repository at this point in the history
  • Loading branch information
Haixing-Hu committed Dec 25, 2023
1 parent b232b1b commit 5d6db4c
Show file tree
Hide file tree
Showing 13 changed files with 86 additions and 53 deletions.
4 changes: 1 addition & 3 deletions babel.config.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
],
"plugins": [
"@babel/plugin-transform-runtime",
"babel-plugin-transform-object-hasown",
["@babel/plugin-proposal-decorators", { "version": "2023-05" }],
"@babel/plugin-transform-class-properties"
["@babel/plugin-proposal-decorators", { "version": "2023-05" }]
]
}
11 changes: 8 additions & 3 deletions jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,14 @@ module.exports = {
transform: {
'\\.js$': 'babel-jest',
},
// transformIgnorePatterns: [
// '/node_modules/(?!@haixing_hu)',
// ],
transformIgnorePatterns: [
'/node_modules/@haixing_hu/clone',
'/node_modules/@haixing_hu/logging',
'/node_modules/@haixing_hu/typeinfo',
'/node_modules/deep-equal',
'/node_modules/json-beautify',
// DO NOT ignore /node_modules/query-string. It should be transpiled.
],
setupFilesAfterEnv: [
'jest-extended/all',
],
Expand Down
8 changes: 3 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@haixing_hu/common-util",
"version": "4.4.0",
"version": "4.5.0",
"description": "A JavaScript ES6 library of common utility functions",
"author": "Haixing Hu",
"license": "Apache-2.0",
Expand Down Expand Up @@ -29,7 +29,7 @@
"test": "jest --runInBand",
"lint": "eslint ./src ./test",
"doc": "jsdoc -c jsdoc.json",
"es5": "check-es-version -e 5 -s true",
"es5": "check-es-version -e 5 -s true -d ./dist",
"deploy": "yarn && yarn lint && yarn test && yarn build:all && npm publish --registry='https://registry.npmjs.com/' --access public"
},
"browserify": {
Expand All @@ -46,13 +46,12 @@
"dependencies": {
"deep-equal": "^2.0.5",
"json-beautify": "^1.1.1",
"qs": "^6.11.0"
"query-string": "^8.1.0"
},
"devDependencies": {
"@babel/core": "^7.23.2",
"@babel/eslint-parser": "^7.17.0",
"@babel/plugin-proposal-decorators": "^7.23.2",
"@babel/plugin-transform-class-properties": "^7.22.5",
"@babel/plugin-transform-runtime": "^7.23.2",
"@babel/preset-env": "^7.23.2",
"@babel/runtime": "^7.23.2",
Expand All @@ -71,7 +70,6 @@
"@vue/test-utils": "1.3.6",
"@vue/vue2-jest": "^29.2.6",
"babel-jest": "^29.7.0",
"babel-plugin-transform-object-hasown": "^1.1.0",
"check-es-version": "^1.1.2",
"core-js": "^3.19.1",
"cross-env": "^7.0.3",
Expand Down
23 changes: 22 additions & 1 deletion rollup.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,25 @@
////////////////////////////////////////////////////////////////////////////////
import rollupBuilder from '@haixing_hu/rollup-builder';

export default rollupBuilder('CommonUtil', import.meta.url);
export default rollupBuilder('CommonUtil', import.meta.url, {
debug: true,
babelPluginOptions: {
babelHelpers: 'runtime',
include: [
'src/**',
'node_modules/**/query-string*/**',
'node_modules/**/filter-obj*/**',
'node_modules/**/decode-uri-component*/**',
'node_modules/**/split-on-first*/**',
],
presets: [
// The @babel/preset-env preset enables Babel to transpile ES6+ code
// and the rollup requires that Babel keeps ES6 module syntax intact.
['@babel/preset-env', { modules: false }],
],
targets: 'fully supports es5',
plugins: [
'@babel/plugin-transform-runtime',
],
},
});
4 changes: 2 additions & 2 deletions src/add-search-params.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
// All rights reserved.
//
////////////////////////////////////////////////////////////////////////////////
import qs from 'qs';
import queryString from './query-string';
import getSearch from './get-search';
import getHash from './get-hash';

Expand Down Expand Up @@ -43,7 +43,7 @@ function addSearchParams(params, url = window.location) {
} else {
hash = `#${hash}`;
}
const kv = qs.stringify(params);
const kv = queryString.stringify(params);
let search = getSearch(url);
if (search !== null && search.length > 0) {
search = `${search}&${kv}`;
Expand Down
4 changes: 2 additions & 2 deletions src/get-parsed-search.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
// All rights reserved.
//
////////////////////////////////////////////////////////////////////////////////
import qs from 'qs';
import queryString from './query-string';
import getSearch from './get-search';

/**
Expand All @@ -26,7 +26,7 @@ function getParsedSearch(url) {
if (search === null) {
return null;
}
return qs.parse(search);
return queryString.parse(search);
}

export default getParsedSearch;
2 changes: 1 addition & 1 deletion src/query-string.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
// All rights reserved.
//
////////////////////////////////////////////////////////////////////////////////
import queryString from 'qs';
import queryString from 'query-string';

/**
* Exports the `queryString` function from the `qs` library.
Expand Down
6 changes: 3 additions & 3 deletions src/remove-search-param.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
// All rights reserved.
//
////////////////////////////////////////////////////////////////////////////////
import qs from 'qs';
import queryString from './query-string';
import getSearch from './get-search';
import getHash from './get-hash';

Expand Down Expand Up @@ -35,10 +35,10 @@ function removeSearchParam(name, url) {
const hash = getHash(url);
let search = getSearch(url);
if (search !== null && search.length > 0) {
const args = qs.parse(search);
const args = queryString.parse(search);
if (args[name] !== undefined) {
delete args[name];
search = qs.stringify(args);
search = queryString.stringify(args);
}
}
return base
Expand Down
4 changes: 2 additions & 2 deletions src/talking-data.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
// All rights reserved.
//
////////////////////////////////////////////////////////////////////////////////
import qs from 'qs';
import { Logger } from '@haixing_hu/logging';
import queryString from './query-string';
import getSearch from './get-search';
import addSearchParams from './add-search-params';
import redirect from './redirect';
Expand Down Expand Up @@ -50,7 +50,7 @@ class TalkingData {
return new Promise((resolve, reject) => {
logger.info('Initializing the TalkingData SDK ...');
const search = getSearch();
const args = qs.parse(search);
const args = queryString.parse(search);
if (!args.source) {
if (defaultSource) {
const url = addSearchParams({
Expand Down
3 changes: 1 addition & 2 deletions test/add-search-params.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@
// All rights reserved.
//
////////////////////////////////////////////////////////////////////////////////
import queryString from 'qs';
import { getSearch, addSearchParams } from '../src';
import { getSearch, addSearchParams, queryString } from '../src';

/**
* 单元测试 'addSearchParam'
Expand Down
3 changes: 1 addition & 2 deletions test/normalize-url.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@
// All rights reserved.
//
////////////////////////////////////////////////////////////////////////////////
import queryString from 'qs';
import { getSearch, normalizeUrl } from '../src';
import { getSearch, normalizeUrl, queryString } from '../src';

/**
* 单元测试 'normalizeUrl'
Expand Down
21 changes: 10 additions & 11 deletions test/remove-search-param.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@
// All rights reserved.
//
////////////////////////////////////////////////////////////////////////////////
import queryString from 'qs';
import { getSearch, removeSearchParam } from '../src';
import { getSearch, removeSearchParam, queryString } from '../src';

/**
* 单元测试 'removeSearchParam'
Expand Down Expand Up @@ -37,7 +36,7 @@ describe('removeSearchParam', () => {
test('参数为字符串,querystring在hash后面,hash为非空字符串,hash以反斜杠结尾', () => {
const url = 'http://192.168.199.2:8081/#/finish/?value=zzz&source=nanjing-bank&params=xxxx';
const result = removeSearchParam('source', url);
expect(result).toBe('http://192.168.199.2:8081/?value=zzz&params=xxxx#/finish/');
expect(result).toBe('http://192.168.199.2:8081/?params=xxxx&value=zzz#/finish/');
const search = getSearch(result);
const args = queryString.parse(search);
expect(args.source).toBeUndefined();
Expand All @@ -57,7 +56,7 @@ describe('removeSearchParam', () => {
test('参数为字符串,querystring在hash后面,hash为非空字符串,hash不以反斜杠结尾', () => {
const url = 'http://192.168.199.2:8081/#finish?source=nanjing-bank&value=zzz&params=xxxx';
const result = removeSearchParam('source', url);
expect(result).toBe('http://192.168.199.2:8081/?value=zzz&params=xxxx#finish');
expect(result).toBe('http://192.168.199.2:8081/?params=xxxx&value=zzz#finish');
const search = getSearch(result);
const args = queryString.parse(search);
expect(args.source).toBeUndefined();
Expand All @@ -67,7 +66,7 @@ describe('removeSearchParam', () => {
test('参数为字符串,querystring在hash前面,hash为空字符串,hash以反斜杠结尾', () => {
const url = 'http://192.168.199.2:8081/?source=nanjing-bank&value=zzz&params=xxxx#/';
const result = removeSearchParam('source', url);
expect(result).toBe('http://192.168.199.2:8081/?value=zzz&params=xxxx#/');
expect(result).toBe('http://192.168.199.2:8081/?params=xxxx&value=zzz#/');
const search = getSearch(result);
const args = queryString.parse(search);
expect(args.source).toBeUndefined();
Expand All @@ -77,7 +76,7 @@ describe('removeSearchParam', () => {
test('参数为字符串,querystring在hash前面,hash为非空字符串,hash以反斜杠结尾', () => {
const url = 'http://192.168.199.2:8081/?source=nanjing-bank&value=zzz&params=xxxx#finish/';
const result = removeSearchParam('source', url);
expect(result).toBe('http://192.168.199.2:8081/?value=zzz&params=xxxx#finish/');
expect(result).toBe('http://192.168.199.2:8081/?params=xxxx&value=zzz#finish/');
const search = getSearch(result);
const args = queryString.parse(search);
expect(args.source).toBeUndefined();
Expand All @@ -87,7 +86,7 @@ describe('removeSearchParam', () => {
test('参数为字符串,querystring在hash前面,hash为非空字符串,hash以反斜杠结尾', () => {
const url = 'http://192.168.199.2:8081/?source=nanjing-bank&source=value2&value=zzz&params=xxxx#/finish/';
const result = removeSearchParam('source', url);
expect(result).toBe('http://192.168.199.2:8081/?value=zzz&params=xxxx#/finish/');
expect(result).toBe('http://192.168.199.2:8081/?params=xxxx&value=zzz#/finish/');
const search = getSearch(result);
const args = queryString.parse(search);
expect(args.source).toBeUndefined();
Expand All @@ -97,17 +96,17 @@ describe('removeSearchParam', () => {
test('参数为字符串,querystring在hash前面,hash为空字符串,hash不以反斜杠结尾', () => {
const url = 'http://192.168.199.2:8081/?source=&value&params=xxxx#';
const result = removeSearchParam('source', url);
expect(result).toBe('http://192.168.199.2:8081/?value=&params=xxxx#');
expect(result).toBe('http://192.168.199.2:8081/?params=xxxx&value#');
const search = getSearch(result);
const args = queryString.parse(search);
expect(args.source).toBeUndefined();
expect(args.params).toBe('xxxx');
expect(args.value).toBe('');
expect(args.value).toBeNull();
});
test('参数为字符串,querystring在hash前面,hash为非空字符串,hash不以反斜杠结尾', () => {
const url = 'http://192.168.199.2:8081/?source&value[]=v1&params=xxxx&value[]=v2#finish';
const url = 'http://192.168.199.2:8081/?source&value=v1&params=xxxx&value=v2#finish';
const result = removeSearchParam('source', url);
expect(result).toBe('http://192.168.199.2:8081/?value%5B0%5D=v1&value%5B1%5D=v2&params=xxxx#finish');
expect(result).toBe('http://192.168.199.2:8081/?params=xxxx&value=v1&value=v2#finish');
const search = getSearch(result);
const args = queryString.parse(search);
expect(args.source).toBeUndefined();
Expand Down
46 changes: 30 additions & 16 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -720,7 +720,7 @@ __metadata:
languageName: node
linkType: hard

"@babel/plugin-transform-class-properties@npm:^7.22.5, @babel/plugin-transform-class-properties@npm:^7.23.3":
"@babel/plugin-transform-class-properties@npm:^7.23.3":
version: 7.23.3
resolution: "@babel/plugin-transform-class-properties@npm:7.23.3"
dependencies:
Expand Down Expand Up @@ -1481,7 +1481,6 @@ __metadata:
"@babel/core": "npm:^7.23.2"
"@babel/eslint-parser": "npm:^7.17.0"
"@babel/plugin-proposal-decorators": "npm:^7.23.2"
"@babel/plugin-transform-class-properties": "npm:^7.22.5"
"@babel/plugin-transform-runtime": "npm:^7.23.2"
"@babel/preset-env": "npm:^7.23.2"
"@babel/runtime": "npm:^7.23.2"
Expand All @@ -1500,7 +1499,6 @@ __metadata:
"@vue/test-utils": "npm:1.3.6"
"@vue/vue2-jest": "npm:^29.2.6"
babel-jest: "npm:^29.7.0"
babel-plugin-transform-object-hasown: "npm:^1.1.0"
check-es-version: "npm:^1.1.2"
core-js: "npm:^3.19.1"
cross-env: "npm:^7.0.3"
Expand All @@ -1514,7 +1512,7 @@ __metadata:
jsdoc: "npm:^3.6.7"
jsdom: "npm:^18.1.1"
json-beautify: "npm:^1.1.1"
qs: "npm:^6.11.0"
query-string: "npm:^8.1.0"
rollup: "npm:^4.1.4"
rollup-plugin-analyzer: "npm:^4.0.0"
vue: "npm:^2.7.15"
Expand Down Expand Up @@ -2870,13 +2868,6 @@ __metadata:
languageName: node
linkType: hard

"babel-plugin-transform-object-hasown@npm:^1.1.0":
version: 1.1.0
resolution: "babel-plugin-transform-object-hasown@npm:1.1.0"
checksum: 85e9532c9ee6b29443229ec141e012186e9a3686b448d47f115aef8731bf66b5d49ba69d39b253b81c7dfe305f61c947acf284f72317f05400ae25637e15c62e
languageName: node
linkType: hard

"babel-preset-current-node-syntax@npm:^1.0.0":
version: 1.0.1
resolution: "babel-preset-current-node-syntax@npm:1.0.1"
Expand Down Expand Up @@ -3422,6 +3413,13 @@ __metadata:
languageName: node
linkType: hard

"decode-uri-component@npm:^0.4.1":
version: 0.4.1
resolution: "decode-uri-component@npm:0.4.1"
checksum: a180bbdb5398ec8270d236a3ac07cb988bbf6097428481780b85840f088951dc0318a8d8f9d56796e1a322b55b29859cea29982f22f9b03af0bc60974c54e591
languageName: node
linkType: hard

"dedent@npm:^1.0.0":
version: 1.5.1
resolution: "dedent@npm:1.5.1"
Expand Down Expand Up @@ -4139,6 +4137,13 @@ __metadata:
languageName: node
linkType: hard

"filter-obj@npm:^5.1.0":
version: 5.1.0
resolution: "filter-obj@npm:5.1.0"
checksum: 716e8ad2bc352e206556b3e5695b3cdff8aab80c53ea4b00c96315bbf467b987df3640575100aef8b84e812cf5ea4251db4cd672bbe33b1e78afea88400c67dd
languageName: node
linkType: hard

"find-up@npm:^4.0.0, find-up@npm:^4.1.0":
version: 4.1.0
resolution: "find-up@npm:4.1.0"
Expand Down Expand Up @@ -6835,12 +6840,14 @@ __metadata:
languageName: node
linkType: hard

"qs@npm:^6.11.0":
version: 6.11.2
resolution: "qs@npm:6.11.2"
"query-string@npm:^8.1.0":
version: 8.1.0
resolution: "query-string@npm:8.1.0"
dependencies:
side-channel: "npm:^1.0.4"
checksum: 4f95d4ff18ed480befcafa3390022817ffd3087fc65f146cceb40fc5edb9fa96cb31f648cae2fa96ca23818f0798bd63ad4ca369a0e22702fcd41379b3ab6571
decode-uri-component: "npm:^0.4.1"
filter-obj: "npm:^5.1.0"
split-on-first: "npm:^3.0.0"
checksum: 36247633651c7a2aaf84a5e0f9917dea5a514259fda7d49f88e47d698439709539d541506787d13e3543545539e8924cdae5df26e85520485d905332902d0220
languageName: node
linkType: hard

Expand Down Expand Up @@ -7364,6 +7371,13 @@ __metadata:
languageName: node
linkType: hard

"split-on-first@npm:^3.0.0":
version: 3.0.0
resolution: "split-on-first@npm:3.0.0"
checksum: a1262eae12b68de235e1a08e011bf5b42c42621985ddf807e6221fb1e2b3304824913ae7019f18436b96b8fab8aef5f1ad80dedd2385317fdc51b521c3882cd0
languageName: node
linkType: hard

"sprintf-js@npm:~1.0.2":
version: 1.0.3
resolution: "sprintf-js@npm:1.0.3"
Expand Down

0 comments on commit 5d6db4c

Please sign in to comment.