uribuilder
Version:
URI builder and parser
210 lines (208 loc) • 6.32 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var index_1 = require("./index");
var instanceOf_1 = require("./instanceOf");
var uriBuilder_1 = require("./uriBuilder");
function hr() {
console.log('====================');
}
function deepEq(a, b) {
if (instanceOf_1.is(a, Object) || typeof a === 'object') {
var result = true;
for (var key in a) {
if (key[0] === '_' || instanceOf_1.is(a[key], Function))
continue;
result = result && deepEq(a[key], b[key]);
if (!result)
return result;
}
return result;
}
else if (instanceOf_1.is(a, Array)) {
var result = true;
for (var i = 0; i < a.length; i++) {
result = result && deepEq(a[i], b[i]);
if (!result)
return result;
}
return result;
}
else {
return a === b;
}
}
hr();
console.info('URI Query Parse Test');
var queryDataSet = [
['search=helloworld&class=commom', { search: 'helloworld', class: 'commom' }],
[
'search=helloworld&class=commom&class=typescript',
{ search: 'helloworld', class: ['commom', 'typescript'] }
],
[
'search=helloworld&class=commom&class=typescript&class=111',
{ search: 'helloworld', class: ['commom', 'typescript', 111] }
]
];
for (var _i = 0, queryDataSet_1 = queryDataSet; _i < queryDataSet_1.length; _i++) {
var data = queryDataSet_1[_i];
console.log(data[0]);
var queryModel = index_1.UriQueryBuilder.parse(data[0]);
console.assert(deepEq(queryModel.model, data[1]));
console.assert(deepEq(queryModel.toString(), data[0]));
}
hr();
console.info('URI Query Update Test');
var queryUpdateDataSet = [
[
'https://www.youtube.com/watch?v=TlzfSfc_ymI',
{ v: 'test' },
'https://www.youtube.com/watch?v=test'
],
[
'https://www.youtube.com/watch?v=TlzfymI',
{ v: 'test', a: [1, 2, 3, 4] },
'https://www.youtube.com/watch?v=test&a=1&a=2&a=3&a=4'
]
];
for (var _a = 0, queryUpdateDataSet_1 = queryUpdateDataSet; _a < queryUpdateDataSet_1.length; _a++) {
var data = queryUpdateDataSet_1[_a];
console.log(data[0]);
var queryUpdated = uriBuilder_1.UriBuilder.updateQuery(data[0], data[1]);
console.assert(deepEq(queryUpdated, data[2]));
}
hr();
console.info('URI Set Path Test');
var setPathDataSet = [
[
'https://www.youtube.com/watch?v=TlzfSfc_ymI',
'test/a/b/c/',
'https://www.youtube.com/test/a/b/c/?v=TlzfSfc_ymI'
],
[
'https://www.youtube.com/watch?v=TlzfymI',
'/test',
'https://www.youtube.com/test?v=TlzfymI'
]
];
for (var _b = 0, setPathDataSet_1 = setPathDataSet; _b < setPathDataSet_1.length; _b++) {
var data = setPathDataSet_1[_b];
console.log(data[0]);
var builder = uriBuilder_1.UriBuilder.parse(data[0]);
builder.setPath(data[1]);
console.assert(deepEq(builder.toString(), data[2]));
}
hr();
console.info('URI Parse Test');
var uriDataSet = [
[
'https://www.youtube.com/watch',
{
schema: 'https',
host: 'www.youtube.com',
port: 80,
pathSegments: ['watch']
}
],
[
'./a/b/c/watch',
{
schema: uriBuilder_1.UriBuilder.relative,
host: '.',
port: undefined,
pathSegments: ['a', 'b', 'c', 'watch']
}
],
[
'https://www.youtube.com/watch?v=TlzfSfc_ymI&%E4%B8%AD%E6%96%87=%E4%B8%AD%E6%96%87',
{
schema: 'https',
host: 'www.youtube.com',
port: 80,
pathSegments: ['watch'],
query: { v: 'TlzfSfc_ymI', 中文: '中文' }
}
],
[
'https://example.com:8080/a/b/c/d?key=2',
{
schema: 'https',
host: 'example.com',
port: 8080,
pathSegments: ['a', 'b', 'c', 'd'],
query: { key: 2 }
}
],
[
'https://example.com:8080/a/b/c/d?key=2#hash',
{
schema: 'https',
host: 'example.com',
port: 8080,
pathSegments: ['a', 'b', 'c', 'd'],
query: { key: 2 },
fragment: 'hash'
}
],
[
'https://example.com/a/#b/c/d?key=2',
{
schema: 'https',
host: 'example.com',
port: 80,
pathSegments: ['a', ''],
fragment: 'b/c/d?key=2'
}
],
[
'https://test@example.com/a/#b/c/d?key=2',
{
schema: 'https',
authority: { user: 'test' },
host: 'example.com',
port: 80,
pathSegments: ['a', ''],
fragment: 'b/c/d?key=2'
}
],
[
'https://test:1234@example.com/',
{
schema: 'https',
authority: { user: 'test', password: '1234' },
host: 'example.com',
port: 80,
pathSegments: ['']
}
]
];
for (var _c = 0, uriDataSet_1 = uriDataSet; _c < uriDataSet_1.length; _c++) {
var data = uriDataSet_1[_c];
var uriModel = uriBuilder_1.UriBuilder.parse(data[0]);
console.log(uriModel);
console.assert(deepEq(uriModel, data[1]));
console.assert(deepEq(uriModel.toString(), data[0]));
}
hr();
console.info('Empty URI Builder Test');
var emptyBuilder = new uriBuilder_1.UriBuilder();
emptyBuilder.schema = 'http';
emptyBuilder.host = 'example';
emptyBuilder.setPath('/home/index');
emptyBuilder.fragment = 'top';
emptyBuilder.setAuthority('guest');
emptyBuilder.query.action = 'back';
console.assert(emptyBuilder.toString() === 'http://guest@example/home/index?action=back#top');
emptyBuilder.toString();
hr();
console.info('Delete Query Param Test');
delete emptyBuilder.query.action;
console.assert(emptyBuilder.toString() === 'http://guest@example/home/index#top');
console.log(emptyBuilder.toString());
hr();
console.info('Relative Test');
var relativeBuilder = uriBuilder_1.UriBuilder.parse('./home/exam?id=0');
relativeBuilder.query.id = 1;
console.assert(relativeBuilder.toString() === './home/exam?id=1');
console.log(relativeBuilder.toString());
//# sourceMappingURL=test.js.map