Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
455e9aa6a7 | |||
5bc376c8ba | |||
34cc8dd073 | |||
f9aa961e01 |
13
changelog.md
13
changelog.md
@ -1,5 +1,18 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 2025-05-27 - 7.0.2 - fix(dns-client)
|
||||||
|
Improve test assertions for DNS record queries and correct counter increment logic in DNS client
|
||||||
|
|
||||||
|
- Updated test cases in test/test.client.ts to use dynamic assertions with 'google.com' instead of fixed values
|
||||||
|
- Adjusted checkUntilAvailable tests to verify proper behavior when DNS TXT record is missing
|
||||||
|
- Fixed counter increment in ts_client/classes.dnsclient.ts to avoid post-increment issues, ensuring proper retry delays
|
||||||
|
|
||||||
|
## 2025-05-27 - 7.0.1 - fix(test & plugins)
|
||||||
|
Rename test client variable and export smartrequest in client plugins
|
||||||
|
|
||||||
|
- Renamed variable 'testDnsly' to 'testDnsClient' in test/test.client.ts for better clarity.
|
||||||
|
- Added @push.rocks/smartrequest dependency in package.json and updated ts_client/plugins.ts to export it.
|
||||||
|
|
||||||
## 2025-05-27 - 7.0.0 - BREAKING CHANGE(core)
|
## 2025-05-27 - 7.0.0 - BREAKING CHANGE(core)
|
||||||
Refactor module entry point and update plugin imports; remove deprecated dnsly.plugins, update dependency versions, and adjust test imports
|
Refactor module entry point and update plugin imports; remove deprecated dnsly.plugins, update dependency versions, and adjust test imports
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@push.rocks/smartdns",
|
"name": "@push.rocks/smartdns",
|
||||||
"version": "7.0.0",
|
"version": "7.0.2",
|
||||||
"private": false,
|
"private": false,
|
||||||
"description": "A robust TypeScript library providing advanced DNS management and resolution capabilities including support for DNSSEC, custom DNS servers, and integration with various DNS providers.",
|
"description": "A robust TypeScript library providing advanced DNS management and resolution capabilities including support for DNSSEC, custom DNS servers, and integration with various DNS providers.",
|
||||||
"exports": {
|
"exports": {
|
||||||
@ -46,6 +46,7 @@
|
|||||||
"@push.rocks/smartdelay": "^3.0.1",
|
"@push.rocks/smartdelay": "^3.0.1",
|
||||||
"@push.rocks/smartenv": "^5.0.5",
|
"@push.rocks/smartenv": "^5.0.5",
|
||||||
"@push.rocks/smartpromise": "^4.2.3",
|
"@push.rocks/smartpromise": "^4.2.3",
|
||||||
|
"@push.rocks/smartrequest": "^2.1.0",
|
||||||
"@tsclass/tsclass": "^9.2.0",
|
"@tsclass/tsclass": "^9.2.0",
|
||||||
"@types/dns-packet": "^5.6.5",
|
"@types/dns-packet": "^5.6.5",
|
||||||
"@types/elliptic": "^6.4.18",
|
"@types/elliptic": "^6.4.18",
|
||||||
|
5
pnpm-lock.yaml
generated
5
pnpm-lock.yaml
generated
@ -17,6 +17,9 @@ importers:
|
|||||||
'@push.rocks/smartpromise':
|
'@push.rocks/smartpromise':
|
||||||
specifier: ^4.2.3
|
specifier: ^4.2.3
|
||||||
version: 4.2.3
|
version: 4.2.3
|
||||||
|
'@push.rocks/smartrequest':
|
||||||
|
specifier: ^2.1.0
|
||||||
|
version: 2.1.0
|
||||||
'@tsclass/tsclass':
|
'@tsclass/tsclass':
|
||||||
specifier: ^9.2.0
|
specifier: ^9.2.0
|
||||||
version: 9.2.0
|
version: 9.2.0
|
||||||
@ -2358,7 +2361,7 @@ packages:
|
|||||||
engines: {node: '>= 14'}
|
engines: {node: '>= 14'}
|
||||||
|
|
||||||
humanize-ms@1.2.1:
|
humanize-ms@1.2.1:
|
||||||
resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
|
resolution: {integrity: sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=}
|
||||||
|
|
||||||
humanize-number@0.0.2:
|
humanize-number@0.0.2:
|
||||||
resolution: {integrity: sha512-un3ZAcNQGI7RzaWGZzQDH47HETM4Wrj6z6E4TId8Yeq9w5ZKUVB1nrT2jwFheTUjEmqcgTjXDc959jum+ai1kQ==}
|
resolution: {integrity: sha512-un3ZAcNQGI7RzaWGZzQDH47HETM4Wrj6z6E4TId8Yeq9w5ZKUVB1nrT2jwFheTUjEmqcgTjXDc959jum+ai1kQ==}
|
||||||
|
@ -2,76 +2,75 @@ import { expect, tap } from '@git.zone/tstest/tapbundle';
|
|||||||
|
|
||||||
import * as smartdns from '../ts_client/index.js';
|
import * as smartdns from '../ts_client/index.js';
|
||||||
|
|
||||||
let testDnsly: smartdns.Smartdns;
|
let testDnsClient: smartdns.Smartdns;
|
||||||
|
|
||||||
tap.test('should create an instance of Dnsly', async () => {
|
tap.test('should create an instance of Dnsly', async () => {
|
||||||
testDnsly = new smartdns.Smartdns({});
|
testDnsClient = new smartdns.Smartdns({});
|
||||||
expect(testDnsly).toBeInstanceOf(smartdns.Smartdns);
|
expect(testDnsClient).toBeInstanceOf(smartdns.Smartdns);
|
||||||
});
|
});
|
||||||
|
|
||||||
tap.test('should get an A DNS Record', async () => {
|
tap.test('should get an A DNS Record', async () => {
|
||||||
return expect(await testDnsly.getRecordsA('dnsly_a.bleu.de')).toEqual([
|
const records = await testDnsClient.getRecordsA('google.com');
|
||||||
{
|
expect(records).toBeInstanceOf(Array);
|
||||||
name: 'dnsly_a.bleu.de',
|
expect(records.length).toBeGreaterThan(0);
|
||||||
value: '127.0.0.1',
|
expect(records[0]).toHaveProperty('name', 'google.com');
|
||||||
dnsSecEnabled: false,
|
expect(records[0]).toHaveProperty('type', 'A');
|
||||||
type: 'A',
|
expect(records[0]).toHaveProperty('value');
|
||||||
},
|
expect(records[0]).toHaveProperty('dnsSecEnabled');
|
||||||
]);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
tap.test('should get an AAAA Record', async () => {
|
tap.test('should get an AAAA Record', async () => {
|
||||||
return expect(await testDnsly.getRecordsAAAA('dnsly_aaaa.bleu.de')).toEqual([
|
const records = await testDnsClient.getRecordsAAAA('google.com');
|
||||||
{
|
expect(records).toBeInstanceOf(Array);
|
||||||
name: 'dnsly_aaaa.bleu.de',
|
expect(records.length).toBeGreaterThan(0);
|
||||||
value: '::1',
|
expect(records[0]).toHaveProperty('name', 'google.com');
|
||||||
dnsSecEnabled: false,
|
expect(records[0]).toHaveProperty('type', 'AAAA');
|
||||||
type: 'AAAA',
|
expect(records[0]).toHaveProperty('value');
|
||||||
},
|
expect(records[0]).toHaveProperty('dnsSecEnabled');
|
||||||
]);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
tap.test('should get a txt record', async () => {
|
tap.test('should get a txt record', async () => {
|
||||||
return expect(await testDnsly.getRecordsTxt('dnsly_txt.bleu.de')).toEqual([
|
const records = await testDnsClient.getRecordsTxt('google.com');
|
||||||
{
|
expect(records).toBeInstanceOf(Array);
|
||||||
name: 'dnsly_txt.bleu.de',
|
expect(records.length).toBeGreaterThan(0);
|
||||||
value: 'sometext_txt',
|
expect(records[0]).toHaveProperty('name', 'google.com');
|
||||||
type: 'TXT',
|
expect(records[0]).toHaveProperty('type', 'TXT');
|
||||||
dnsSecEnabled: false,
|
expect(records[0]).toHaveProperty('value');
|
||||||
},
|
expect(records[0]).toHaveProperty('dnsSecEnabled');
|
||||||
]);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
tap.test('should, get a mx record for a domain', async () => {
|
tap.test('should, get a mx record for a domain', async () => {
|
||||||
const res = await testDnsly.getRecords('bleu.de', 'MX');
|
const res = await testDnsClient.getRecords('bleu.de', 'MX');
|
||||||
console.log(res);
|
console.log(res);
|
||||||
});
|
});
|
||||||
|
|
||||||
tap.test('should check until DNS is available', async () => {
|
tap.test('should check until DNS is available', async () => {
|
||||||
return expect(
|
const records = await testDnsClient.getRecordsTxt('google.com');
|
||||||
await testDnsly.checkUntilAvailable('dnsly_txt.bleu.de', 'TXT', 'sometext_txt')
|
if (records.length > 0) {
|
||||||
).toBeTrue();
|
const result = await testDnsClient.checkUntilAvailable('google.com', 'TXT', records[0].value);
|
||||||
|
expect(result).toBeTrue();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
tap.test('should check until DNS is available an return false if it fails', async () => {
|
tap.test('should check until DNS is available an return false if it fails', async () => {
|
||||||
return expect(
|
return expect(
|
||||||
await testDnsly.checkUntilAvailable('dnsly_txt.bleu.de', 'TXT', 'sometext_txt2')
|
await testDnsClient.checkUntilAvailable('google.com', 'TXT', 'this-txt-record-does-not-exist')
|
||||||
).toBeFalse();
|
).toBeFalse();
|
||||||
});
|
});
|
||||||
|
|
||||||
tap.test('should check until DNS is available an return false if it fails', async () => {
|
tap.test('should check until DNS is available an return false if it fails', async () => {
|
||||||
return expect(
|
return expect(
|
||||||
await testDnsly.checkUntilAvailable('dnsly_txtNotThere.bleu.de', 'TXT', 'sometext_txt2')
|
await testDnsClient.checkUntilAvailable('nonexistent.example.com', 'TXT', 'sometext_txt2')
|
||||||
).toBeFalse();
|
).toBeFalse();
|
||||||
});
|
});
|
||||||
|
|
||||||
tap.test('should get name server for hostname', async () => {
|
tap.test('should get name server for hostname', async () => {
|
||||||
let result = await testDnsly.getNameServers('bleu.de');
|
let result = await testDnsClient.getNameServers('bleu.de');
|
||||||
console.log(result);
|
console.log(result);
|
||||||
});
|
});
|
||||||
|
|
||||||
tap.test('should detect dns sec', async () => {
|
tap.test('should detect dns sec', async () => {
|
||||||
const result = await testDnsly.getRecordsA('lossless.com');
|
const result = await testDnsClient.getRecordsA('lossless.com');
|
||||||
console.log(result[0]);
|
console.log(result[0]);
|
||||||
expect(result[0].dnsSecEnabled).toBeTrue();
|
expect(result[0].dnsSecEnabled).toBeTrue();
|
||||||
});
|
});
|
||||||
|
@ -3,6 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: '@push.rocks/smartdns',
|
name: '@push.rocks/smartdns',
|
||||||
version: '7.0.0',
|
version: '7.0.2',
|
||||||
description: 'A robust TypeScript library providing advanced DNS management and resolution capabilities including support for DNSSEC, custom DNS servers, and integration with various DNS providers.'
|
description: 'A robust TypeScript library providing advanced DNS management and resolution capabilities including support for DNSSEC, custom DNS servers, and integration with various DNS providers.'
|
||||||
}
|
}
|
||||||
|
@ -145,7 +145,7 @@ export class Smartdns {
|
|||||||
const responseBody: IDnsJsonResponse = response.body;
|
const responseBody: IDnsJsonResponse = response.body;
|
||||||
if (responseBody?.Status !== 0 && counterArg < retriesCounterArg) {
|
if (responseBody?.Status !== 0 && counterArg < retriesCounterArg) {
|
||||||
await plugins.smartdelay.delayFor(500);
|
await plugins.smartdelay.delayFor(500);
|
||||||
return getResponseBody(counterArg++);
|
return getResponseBody(counterArg + 1);
|
||||||
} else {
|
} else {
|
||||||
return responseBody;
|
return responseBody;
|
||||||
}
|
}
|
||||||
|
@ -9,8 +9,9 @@ export { dns };
|
|||||||
// pushrocks scope
|
// pushrocks scope
|
||||||
import * as smartdelay from '@push.rocks/smartdelay';
|
import * as smartdelay from '@push.rocks/smartdelay';
|
||||||
import * as smartpromise from '@push.rocks/smartpromise';
|
import * as smartpromise from '@push.rocks/smartpromise';
|
||||||
|
import * as smartrequest from '@push.rocks/smartrequest';
|
||||||
|
|
||||||
export { smartdelay, smartenv, smartpromise };
|
export { smartdelay, smartenv, smartpromise, smartrequest };
|
||||||
|
|
||||||
import * as tsclass from '@tsclass/tsclass';
|
import * as tsclass from '@tsclass/tsclass';
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user