@push.rocks/smartdns 9.1.0 → 10.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.
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "format": "tsrust.build-provenance.v2",
3
- "binarySha256": "26cf065d42cc444ec2034ba1e6224257f2ccc82d6aa0d6f44e1206028baeba86",
3
+ "binarySha256": "ab6ee725fc73995187b878a2141b1b8df9f6629ee4df1f503e1089db6496c578",
4
4
  "buildInfo": {
5
5
  "projectName": "@push.rocks/smartdns",
6
- "projectVersion": "9.1.0",
7
- "gitCommit": "389909862096f69b2fdcd32ea87a2010fdf951fb",
6
+ "projectVersion": "10.0.0",
7
+ "gitCommit": "103ccddcaf641e0db2a7036c303ecd55def9d331",
8
8
  "gitDirty": false,
9
- "builtAt": "2026-10-13T11:38:36.641Z",
10
- "tsrustVersion": "4.3.0",
9
+ "builtAt": "2026-10-14T22:50:17.565Z",
10
+ "tsrustVersion": "4.5.1",
11
11
  "binary": "rustdns-client",
12
12
  "target": "linux_amd64_musl"
13
13
  }
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "format": "tsrust.build-provenance.v2",
3
- "binarySha256": "6dba07fed5dcb9bb67c5fce76958ca665a6606f25152214b558fa1703dad23f8",
3
+ "binarySha256": "5c7cf8605dc8aa7b451ace0701324001102239b57be4e9c8b1308ceb409267a1",
4
4
  "buildInfo": {
5
5
  "projectName": "@push.rocks/smartdns",
6
- "projectVersion": "9.1.0",
7
- "gitCommit": "389909862096f69b2fdcd32ea87a2010fdf951fb",
6
+ "projectVersion": "10.0.0",
7
+ "gitCommit": "103ccddcaf641e0db2a7036c303ecd55def9d331",
8
8
  "gitDirty": false,
9
- "builtAt": "2026-10-13T11:42:10.749Z",
10
- "tsrustVersion": "4.3.0",
9
+ "builtAt": "2026-10-14T22:51:25.854Z",
10
+ "tsrustVersion": "4.5.1",
11
11
  "binary": "rustdns-client",
12
12
  "target": "linux_arm64_musl"
13
13
  }
Binary file
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "format": "tsrust.build-provenance.v2",
3
- "binarySha256": "56388f93b152509dfffbab99ed61b559cb9049d3d1e4af2ea2f4cc90cc8579d1",
3
+ "binarySha256": "f7c33e641e26d716aa095acd5539a131b9d3235b8cf43e43844e9311e555a7cd",
4
4
  "buildInfo": {
5
5
  "projectName": "@push.rocks/smartdns",
6
- "projectVersion": "9.1.0",
7
- "gitCommit": "389909862096f69b2fdcd32ea87a2010fdf951fb",
6
+ "projectVersion": "10.0.0",
7
+ "gitCommit": "103ccddcaf641e0db2a7036c303ecd55def9d331",
8
8
  "gitDirty": false,
9
- "builtAt": "2026-10-13T11:38:36.641Z",
10
- "tsrustVersion": "4.3.0",
9
+ "builtAt": "2026-10-14T22:50:17.565Z",
10
+ "tsrustVersion": "4.5.1",
11
11
  "binary": "rustdns",
12
12
  "target": "linux_amd64_musl"
13
13
  }
Binary file
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "format": "tsrust.build-provenance.v2",
3
- "binarySha256": "17239008ebeb8056d60f2110da8cadd19a1fb776fba4e8faa305703f0d338516",
3
+ "binarySha256": "553bfcf2343da5d04efdcef4612043b9b68b9c69238252706222325a4362b585",
4
4
  "buildInfo": {
5
5
  "projectName": "@push.rocks/smartdns",
6
- "projectVersion": "9.1.0",
7
- "gitCommit": "389909862096f69b2fdcd32ea87a2010fdf951fb",
6
+ "projectVersion": "10.0.0",
7
+ "gitCommit": "103ccddcaf641e0db2a7036c303ecd55def9d331",
8
8
  "gitDirty": false,
9
- "builtAt": "2026-10-13T11:42:10.749Z",
10
- "tsrustVersion": "4.3.0",
9
+ "builtAt": "2026-10-14T22:51:25.854Z",
10
+ "tsrustVersion": "4.5.1",
11
11
  "binary": "rustdns",
12
12
  "target": "linux_arm64_musl"
13
13
  }
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@push.rocks/smartdns',
6
- version: '9.1.0',
6
+ version: '10.0.0',
7
7
  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.'
8
8
  };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLHlMQUF5TDtDQUN2TSxDQUFBIn0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLHlMQUF5TDtDQUN2TSxDQUFBIn0=
@@ -42,7 +42,18 @@ export class RustDnsClientBridge {
42
42
  if (!this.spawnPromise) {
43
43
  this.spawnPromise = this.bridge.spawn();
44
44
  }
45
- const ok = await this.spawnPromise;
45
+ const spawning = this.spawnPromise;
46
+ let ok;
47
+ try {
48
+ ok = await spawning;
49
+ }
50
+ catch (error) {
51
+ // smartrust rejects a binary it cannot select, e.g. a sidecar a single executable
52
+ // application cannot provide; the next query looks the binary up again.
53
+ if (this.spawnPromise === spawning)
54
+ this.spawnPromise = null;
55
+ throw error;
56
+ }
46
57
  if (!ok) {
47
58
  this.spawnPromise = null;
48
59
  throw new Error('Failed to spawn rustdns-client binary');
@@ -135,4 +146,4 @@ function getPlatformSuffix() {
135
146
  }
136
147
  return null;
137
148
  }
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5ydXN0ZG5zY2xpZW50YnJpZGdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfY2xpZW50L2NsYXNzZXMucnVzdGRuc2NsaWVudGJyaWRnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQXFFeEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBSTlCO1FBRlEsaUJBQVksR0FBNEIsSUFBSSxDQUFDO1FBR25ELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUNyQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFDdkQsSUFBSSxDQUNMLENBQUM7UUFFRiwyRUFBMkU7UUFDM0UsTUFBTSxjQUFjLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztRQUMzQyxNQUFNLFVBQVUsR0FBYSxFQUFFLENBQUM7UUFFaEMsMEVBQTBFO1FBQzFFLElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUNqQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLGNBQWMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUN2RyxDQUFDO1lBQ0QsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEcsQ0FBQztRQUNELDJDQUEyQztRQUMzQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLEVB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
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5ydXN0ZG5zY2xpZW50YnJpZGdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfY2xpZW50L2NsYXNzZXMucnVzdGRuc2NsaWVudGJyaWRnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQXFFeEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBSTlCO1FBRlEsaUJBQVksR0FBNEIsSUFBSSxDQUFDO1FBR25ELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUNyQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFDdkQsSUFBSSxDQUNMLENBQUM7UUFFRiwyRUFBMkU7UUFDM0UsTUFBTSxjQUFjLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztRQUMzQyxNQUFNLFVBQVUsR0FBYSxFQUFFLENBQUM7UUFFaEMsMEVBQTBFO1FBQzFFLElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUNqQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLGNBQWMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUN2RyxDQUFDO1lBQ0QsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEcsQ0FBQztRQUNELDJDQUEyQztRQUMzQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLEVB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
@@ -12,7 +12,8 @@ export interface IManagedDnsServerOptions {
12
12
  ownerId: string;
13
13
  /** Exact IP literal; wildcard listeners are forbidden. */
14
14
  bindAddress: string;
15
- /** UDP and TCP use the same port. Zero allocates one available port. */
15
+ /** UDP and TCP use the same port. Zero allocates one port free for both transports
16
+ * (bounded re-allocation when the kernel's UDP choice is taken for TCP). */
16
17
  port: number;
17
18
  /** Persist this fence alongside the complete accepted snapshot. */
18
19
  revisionFloor: IManagedDnsRevision | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@push.rocks/smartdns",
3
- "version": "9.1.0",
3
+ "version": "10.0.0",
4
4
  "private": false,
5
5
  "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.",
6
6
  "exports": {
@@ -37,15 +37,15 @@
37
37
  "dependencies": {
38
38
  "@push.rocks/smartenv": "^6.0.0",
39
39
  "@push.rocks/smartpromise": "^4.3.0",
40
- "@push.rocks/smartrust": "^1.9.1",
40
+ "@push.rocks/smartrust": "^2.6.0",
41
41
  "@tsclass/tsclass": "^9.5.1",
42
42
  "minimatch": "^10.2.6"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@git.zone/tsbuild": "^6.0.2",
46
46
  "@git.zone/tsrun": "^3.0.3",
47
- "@git.zone/tsrust": "^4.3.0",
48
- "@git.zone/tstest": "^7.2.1",
47
+ "@git.zone/tsrust": "^4.5.1",
48
+ "@git.zone/tstest": "^8.0.0",
49
49
  "@types/dns-packet": "^5.6.5",
50
50
  "@types/lodash.clonedeep": "^4.5.9",
51
51
  "@types/node": "^26.6.4",
package/readme.md CHANGED
@@ -673,6 +673,9 @@ snapshot/revision and the same global 256 UDP-job and 128 TCP-connection budgets
673
673
  An empty set has `active: false` while retaining the accepted revision and native
674
674
  owner. Port zero allocates one common port at the first nonempty binding and
675
675
  retains it through later empty sets; before that first binding, status reports zero.
676
+ The allocated port is free for UDP and TCP on every address: when the kernel's UDP
677
+ choice is taken for TCP, the owner releases that attempt and allocates again, up to
678
+ eight times. An explicit or retained port is never replaced.
676
679
 
677
680
  For a mixed address/authority transition, the caller persists and serializes its
678
681
  combined intent, binds the union of old and new addresses, applies one new complete
@@ -695,10 +698,12 @@ For an installed or compiled node bundle, pass a second, process-only option:
695
698
  `new ManagedDnsServer(configuration, { binaryPath: '/opt/node/bin/rustdns' })`.
696
699
  `binaryPath` must be absolute and is never serialized into a DNS snapshot or native
697
700
  listener configuration. It selects that exact executable with an empty fallback
698
- list and no system PATH search; a missing path fails even when package or local
699
- build binaries exist. The installer remains responsible for verifying the artifact
700
- and protecting its path. Without this option the existing npm package lookup is
701
- preserved, including static Linux musl binaries.
701
+ list and no system PATH search; a missing, non-file or non-executable path rejects
702
+ `start()` with `@push.rocks/smartrust`'s `RustBinaryLocatorError`
703
+ (`ERR_RUST_BINARY_EXPLICIT_PATH_INVALID`) even when package or local build binaries
704
+ exist, and its permissions are never changed. The installer remains responsible for
705
+ verifying the artifact and protecting its path. Without this option the existing
706
+ npm package lookup is preserved, including static Linux musl binaries.
702
707
 
703
708
  For a caller-owned Linux network namespace, add `networkNamespaceFd: handle.fd`
704
709
  to those process options. Keep the original descriptor open and bound to the
@@ -818,6 +823,10 @@ readiness, trusted reboot-time recovery, CRI settings and complete node packagin
818
823
 
819
824
  The npm package ships `rustdns` and `rustdns-client` as static Linux amd64 and
820
825
  arm64 musl binaries. The default bridges select the matching musl asset first.
826
+ Inside a Node.js single executable application (built with `@git.zone/tssea`), the
827
+ default bridges run the sidecars the executable embeds under the names `rustdns` and
828
+ `rustdns-client` instead and search nothing else; an explicit `binaryPath` still
829
+ wins.
821
830
  Managed DNS requires Linux for its boot identity and suspend-inclusive clock.
822
831
  Installer-owned bundles can select an exact absolute server binary path as
823
832
  shown above; carry [third-party-notices.md](./third-party-notices.md) and the
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@push.rocks/smartdns',
6
- version: '9.1.0',
6
+ version: '10.0.0',
7
7
  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.'
8
8
  }