@labacacia/nps-sdk 1.0.0-alpha.2 → 1.0.0-alpha.3
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.
- package/CHANGELOG.cn.md +20 -2
- package/CHANGELOG.md +20 -2
- package/README.cn.md +1 -1
- package/README.md +1 -1
- package/dist/core/anchor-cache.d.ts +0 -0
- package/dist/core/anchor-cache.d.ts.map +0 -0
- package/dist/core/cache.d.ts +0 -0
- package/dist/core/cache.d.ts.map +0 -0
- package/dist/core/canonical-json.d.ts +0 -0
- package/dist/core/canonical-json.d.ts.map +0 -0
- package/dist/core/codec.d.ts +0 -0
- package/dist/core/codec.d.ts.map +0 -0
- package/dist/core/codecs/index.d.ts +0 -0
- package/dist/core/codecs/index.d.ts.map +0 -0
- package/dist/core/codecs/ncp-codec.d.ts +0 -0
- package/dist/core/codecs/ncp-codec.d.ts.map +0 -0
- package/dist/core/codecs/tier1-json-codec.d.ts +0 -0
- package/dist/core/codecs/tier1-json-codec.d.ts.map +0 -0
- package/dist/core/codecs/tier2-msgpack-codec.d.ts +0 -0
- package/dist/core/codecs/tier2-msgpack-codec.d.ts.map +0 -0
- package/dist/core/crypto-provider.d.ts +0 -0
- package/dist/core/crypto-provider.d.ts.map +0 -0
- package/dist/core/exceptions.d.ts +0 -0
- package/dist/core/exceptions.d.ts.map +0 -0
- package/dist/core/frame-header.d.ts +0 -0
- package/dist/core/frame-header.d.ts.map +0 -0
- package/dist/core/frame-registry.d.ts +0 -0
- package/dist/core/frame-registry.d.ts.map +0 -0
- package/dist/core/frames.d.ts +0 -0
- package/dist/core/frames.d.ts.map +0 -0
- package/dist/core/index.cjs +90 -9
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.ts +0 -0
- package/dist/core/index.d.ts.map +0 -0
- package/dist/core/index.js +405 -21
- package/dist/core/index.js.map +1 -1
- package/dist/core/registry.d.ts +0 -0
- package/dist/core/registry.d.ts.map +0 -0
- package/dist/core/status-codes.d.ts +0 -0
- package/dist/core/status-codes.d.ts.map +0 -0
- package/dist/index.cjs +3 -1551
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +0 -0
- package/dist/index.js +5 -9
- package/dist/index.js.map +1 -1
- package/dist/ncp/frames/anchor-frame.d.ts +0 -0
- package/dist/ncp/frames/anchor-frame.d.ts.map +0 -0
- package/dist/ncp/frames/caps-frame.d.ts +0 -0
- package/dist/ncp/frames/caps-frame.d.ts.map +0 -0
- package/dist/ncp/frames/diff-frame.d.ts +0 -0
- package/dist/ncp/frames/diff-frame.d.ts.map +0 -0
- package/dist/ncp/frames/error-frame.d.ts +0 -0
- package/dist/ncp/frames/error-frame.d.ts.map +0 -0
- package/dist/ncp/frames/hello-frame.d.ts +0 -0
- package/dist/ncp/frames/hello-frame.d.ts.map +0 -0
- package/dist/ncp/frames/stream-frame.d.ts +0 -0
- package/dist/ncp/frames/stream-frame.d.ts.map +0 -0
- package/dist/ncp/frames.d.ts +0 -0
- package/dist/ncp/frames.d.ts.map +0 -0
- package/dist/ncp/handshake.d.ts +0 -0
- package/dist/ncp/handshake.d.ts.map +0 -0
- package/dist/ncp/index.cjs +364 -164
- package/dist/ncp/index.cjs.map +1 -1
- package/dist/ncp/index.d.ts +0 -0
- package/dist/ncp/index.d.ts.map +0 -0
- package/dist/ncp/index.js +368 -12
- package/dist/ncp/index.js.map +1 -1
- package/dist/ncp/ncp-error-codes.d.ts +0 -0
- package/dist/ncp/ncp-error-codes.d.ts.map +0 -0
- package/dist/ncp/ncp-patch-format.d.ts +0 -0
- package/dist/ncp/ncp-patch-format.d.ts.map +0 -0
- package/dist/ncp/registry.d.ts +0 -0
- package/dist/ncp/registry.d.ts.map +0 -0
- package/dist/ncp/stream-manager.d.ts +0 -0
- package/dist/ncp/stream-manager.d.ts.map +0 -0
- package/dist/ndp/frames.d.ts +0 -0
- package/dist/ndp/frames.d.ts.map +0 -0
- package/dist/ndp/index.cjs +0 -0
- package/dist/ndp/index.cjs.map +0 -0
- package/dist/ndp/index.d.ts +0 -0
- package/dist/ndp/index.d.ts.map +0 -0
- package/dist/ndp/index.js +223 -6
- package/dist/ndp/index.js.map +1 -1
- package/dist/ndp/ndp-registry.d.ts +0 -0
- package/dist/ndp/ndp-registry.d.ts.map +0 -0
- package/dist/ndp/registry.d.ts +0 -0
- package/dist/ndp/registry.d.ts.map +0 -0
- package/dist/ndp/validator.d.ts +0 -0
- package/dist/ndp/validator.d.ts.map +0 -0
- package/dist/nip/frames.d.ts +0 -0
- package/dist/nip/frames.d.ts.map +0 -0
- package/dist/nip/identity.d.ts +0 -0
- package/dist/nip/identity.d.ts.map +0 -0
- package/dist/nip/index.cjs +0 -0
- package/dist/nip/index.cjs.map +0 -0
- package/dist/nip/index.d.ts +0 -0
- package/dist/nip/index.d.ts.map +0 -0
- package/dist/nip/index.js +187 -5
- package/dist/nip/index.js.map +1 -1
- package/dist/nip/registry.d.ts +0 -0
- package/dist/nip/registry.d.ts.map +0 -0
- package/dist/nop/client.d.ts +0 -0
- package/dist/nop/client.d.ts.map +0 -0
- package/dist/nop/frames.d.ts +0 -0
- package/dist/nop/frames.d.ts.map +0 -0
- package/dist/nop/index.cjs +62 -1
- package/dist/nop/index.cjs.map +1 -1
- package/dist/nop/index.d.ts +0 -0
- package/dist/nop/index.d.ts.map +0 -0
- package/dist/nop/index.js +789 -6
- package/dist/nop/index.js.map +1 -1
- package/dist/nop/models.d.ts +0 -0
- package/dist/nop/models.d.ts.map +0 -0
- package/dist/nop/nop-types.d.ts +0 -0
- package/dist/nop/nop-types.d.ts.map +0 -0
- package/dist/nop/registry.d.ts +0 -0
- package/dist/nop/registry.d.ts.map +0 -0
- package/dist/nwp/client.d.ts +0 -0
- package/dist/nwp/client.d.ts.map +0 -0
- package/dist/nwp/frames.d.ts +0 -0
- package/dist/nwp/frames.d.ts.map +0 -0
- package/dist/nwp/index.cjs +64 -2
- package/dist/nwp/index.cjs.map +1 -1
- package/dist/nwp/index.d.ts +0 -0
- package/dist/nwp/index.d.ts.map +0 -0
- package/dist/nwp/index.js +693 -5
- package/dist/nwp/index.js.map +1 -1
- package/dist/nwp/registry.d.ts +0 -0
- package/dist/nwp/registry.d.ts.map +0 -0
- package/dist/setup.d.ts +0 -0
- package/dist/setup.d.ts.map +0 -0
- package/package.json +1 -1
- package/src/index.ts +1 -1
- package/.npmrc.publish +0 -1
- package/dist/codec-CmHeovTV.d.cts +0 -120
- package/dist/codec-CmHeovTV.d.ts +0 -120
- package/dist/core/anchor-cache.js +0 -104
- package/dist/core/anchor-cache.js.map +0 -1
- package/dist/core/cache.js +0 -80
- package/dist/core/cache.js.map +0 -1
- package/dist/core/canonical-json.js +0 -44
- package/dist/core/canonical-json.js.map +0 -1
- package/dist/core/codec.js +0 -119
- package/dist/core/codec.js.map +0 -1
- package/dist/core/codecs/index.js +0 -6
- package/dist/core/codecs/index.js.map +0 -1
- package/dist/core/codecs/ncp-codec.js +0 -93
- package/dist/core/codecs/ncp-codec.js.map +0 -1
- package/dist/core/codecs/tier1-json-codec.js +0 -28
- package/dist/core/codecs/tier1-json-codec.js.map +0 -1
- package/dist/core/codecs/tier2-msgpack-codec.js +0 -26
- package/dist/core/codecs/tier2-msgpack-codec.js.map +0 -1
- package/dist/core/crypto-provider.js +0 -10
- package/dist/core/crypto-provider.js.map +0 -1
- package/dist/core/exceptions.js +0 -52
- package/dist/core/exceptions.js.map +0 -1
- package/dist/core/frame-header.js +0 -185
- package/dist/core/frame-header.js.map +0 -1
- package/dist/core/frame-registry.js +0 -63
- package/dist/core/frame-registry.js.map +0 -1
- package/dist/core/frames.js +0 -154
- package/dist/core/frames.js.map +0 -1
- package/dist/core/index.d.cts +0 -41
- package/dist/core/registry.js +0 -17
- package/dist/core/registry.js.map +0 -1
- package/dist/core/status-codes.js +0 -38
- package/dist/core/status-codes.js.map +0 -1
- package/dist/frames-B3qLdl_g.d.cts +0 -77
- package/dist/frames-Ff7-ZPUl.d.ts +0 -77
- package/dist/index.d.cts +0 -21
- package/dist/ncp/frames/anchor-frame.js +0 -54
- package/dist/ncp/frames/anchor-frame.js.map +0 -1
- package/dist/ncp/frames/caps-frame.js +0 -29
- package/dist/ncp/frames/caps-frame.js.map +0 -1
- package/dist/ncp/frames/diff-frame.js +0 -37
- package/dist/ncp/frames/diff-frame.js.map +0 -1
- package/dist/ncp/frames/error-frame.js +0 -13
- package/dist/ncp/frames/error-frame.js.map +0 -1
- package/dist/ncp/frames/hello-frame.js +0 -25
- package/dist/ncp/frames/hello-frame.js.map +0 -1
- package/dist/ncp/frames/stream-frame.js +0 -18
- package/dist/ncp/frames/stream-frame.js.map +0 -1
- package/dist/ncp/frames.js +0 -192
- package/dist/ncp/frames.js.map +0 -1
- package/dist/ncp/handshake.js +0 -80
- package/dist/ncp/handshake.js.map +0 -1
- package/dist/ncp/index.d.cts +0 -6
- package/dist/ncp/ncp-error-codes.js +0 -32
- package/dist/ncp/ncp-error-codes.js.map +0 -1
- package/dist/ncp/ncp-patch-format.js +0 -13
- package/dist/ncp/ncp-patch-format.js.map +0 -1
- package/dist/ncp/registry.js +0 -13
- package/dist/ncp/registry.js.map +0 -1
- package/dist/ncp/stream-manager.js +0 -163
- package/dist/ncp/stream-manager.js.map +0 -1
- package/dist/ndp/frames.js +0 -87
- package/dist/ndp/frames.js.map +0 -1
- package/dist/ndp/index.d.cts +0 -86
- package/dist/ndp/ndp-registry.js +0 -79
- package/dist/ndp/ndp-registry.js.map +0 -1
- package/dist/ndp/registry.js +0 -10
- package/dist/ndp/registry.js.map +0 -1
- package/dist/ndp/validator.js +0 -48
- package/dist/ndp/validator.js.map +0 -1
- package/dist/nip/frames.js +0 -81
- package/dist/nip/frames.js.map +0 -1
- package/dist/nip/identity.js +0 -94
- package/dist/nip/identity.js.map +0 -1
- package/dist/nip/index.d.cts +0 -65
- package/dist/nip/registry.js +0 -10
- package/dist/nip/registry.js.map +0 -1
- package/dist/nop/client.js +0 -90
- package/dist/nop/client.js.map +0 -1
- package/dist/nop/frames.js +0 -148
- package/dist/nop/frames.js.map +0 -1
- package/dist/nop/index.d.cts +0 -155
- package/dist/nop/models.js +0 -50
- package/dist/nop/models.js.map +0 -1
- package/dist/nop/nop-types.js +0 -44
- package/dist/nop/nop-types.js.map +0 -1
- package/dist/nop/registry.js +0 -11
- package/dist/nop/registry.js.map +0 -1
- package/dist/nwp/client.js +0 -101
- package/dist/nwp/client.js.map +0 -1
- package/dist/nwp/frames.js +0 -81
- package/dist/nwp/frames.js.map +0 -1
- package/dist/nwp/index.d.cts +0 -65
- package/dist/nwp/registry.js +0 -9
- package/dist/nwp/registry.js.map +0 -1
- package/dist/setup.js +0 -29
- package/dist/setup.js.map +0 -1
package/dist/ndp/frames.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"frames.js","sourceRoot":"","sources":["../../src/ndp/frames.ts"],"names":[],"mappings":"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"}
|
package/dist/ndp/index.d.cts
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { N as NpsFrame, g as FrameType, c as EncodingTier, F as FrameRegistry } from '../codec-CmHeovTV.cjs';
|
|
2
|
-
|
|
3
|
-
interface NdpAddress {
|
|
4
|
-
host: string;
|
|
5
|
-
port: number;
|
|
6
|
-
protocol: string;
|
|
7
|
-
}
|
|
8
|
-
interface NdpGraphNode {
|
|
9
|
-
nid: string;
|
|
10
|
-
addresses: readonly NdpAddress[];
|
|
11
|
-
capabilities: readonly string[];
|
|
12
|
-
nodeType?: string;
|
|
13
|
-
}
|
|
14
|
-
interface NdpResolveResult {
|
|
15
|
-
host: string;
|
|
16
|
-
port: number;
|
|
17
|
-
ttl: number;
|
|
18
|
-
certFingerprint?: string;
|
|
19
|
-
}
|
|
20
|
-
declare class AnnounceFrame implements NpsFrame {
|
|
21
|
-
readonly nid: string;
|
|
22
|
-
readonly addresses: readonly NdpAddress[];
|
|
23
|
-
readonly capabilities: readonly string[];
|
|
24
|
-
readonly ttl: number;
|
|
25
|
-
readonly timestamp: string;
|
|
26
|
-
readonly signature: string;
|
|
27
|
-
readonly nodeType?: string | undefined;
|
|
28
|
-
readonly frameType = FrameType.ANNOUNCE;
|
|
29
|
-
readonly preferredTier = EncodingTier.MSGPACK;
|
|
30
|
-
constructor(nid: string, addresses: readonly NdpAddress[], capabilities: readonly string[], ttl: number, timestamp: string, signature: string, nodeType?: string | undefined);
|
|
31
|
-
unsignedDict(): Record<string, unknown>;
|
|
32
|
-
toDict(): Record<string, unknown>;
|
|
33
|
-
static fromDict(data: Record<string, unknown>): AnnounceFrame;
|
|
34
|
-
}
|
|
35
|
-
declare class ResolveFrame implements NpsFrame {
|
|
36
|
-
readonly target: string;
|
|
37
|
-
readonly requesterNid?: string | undefined;
|
|
38
|
-
readonly resolved?: NdpResolveResult | undefined;
|
|
39
|
-
readonly frameType = FrameType.RESOLVE;
|
|
40
|
-
readonly preferredTier = EncodingTier.MSGPACK;
|
|
41
|
-
constructor(target: string, requesterNid?: string | undefined, resolved?: NdpResolveResult | undefined);
|
|
42
|
-
toDict(): Record<string, unknown>;
|
|
43
|
-
static fromDict(data: Record<string, unknown>): ResolveFrame;
|
|
44
|
-
}
|
|
45
|
-
declare class GraphFrame implements NpsFrame {
|
|
46
|
-
readonly seq: number;
|
|
47
|
-
readonly initialSync: boolean;
|
|
48
|
-
readonly nodes?: readonly NdpGraphNode[] | undefined;
|
|
49
|
-
readonly patch?: readonly Record<string, unknown>[] | undefined;
|
|
50
|
-
readonly frameType = FrameType.GRAPH;
|
|
51
|
-
readonly preferredTier = EncodingTier.MSGPACK;
|
|
52
|
-
constructor(seq: number, initialSync: boolean, nodes?: readonly NdpGraphNode[] | undefined, patch?: readonly Record<string, unknown>[] | undefined);
|
|
53
|
-
toDict(): Record<string, unknown>;
|
|
54
|
-
static fromDict(data: Record<string, unknown>): GraphFrame;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
declare function registerNdpFrames(registry: FrameRegistry): void;
|
|
58
|
-
|
|
59
|
-
declare class InMemoryNdpRegistry {
|
|
60
|
-
private readonly _store;
|
|
61
|
-
clock: () => number;
|
|
62
|
-
announce(frame: AnnounceFrame): void;
|
|
63
|
-
getByNid(nid: string): AnnounceFrame | undefined;
|
|
64
|
-
resolve(target: string): NdpResolveResult | undefined;
|
|
65
|
-
getAll(): AnnounceFrame[];
|
|
66
|
-
static nwpTargetMatchesNid(nid: string, target: string): boolean;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
interface NdpAnnounceResult {
|
|
70
|
-
isValid: boolean;
|
|
71
|
-
errorCode?: string;
|
|
72
|
-
message?: string;
|
|
73
|
-
}
|
|
74
|
-
declare const NdpAnnounceResult: {
|
|
75
|
-
ok: () => NdpAnnounceResult;
|
|
76
|
-
fail: (errorCode: string, message: string) => NdpAnnounceResult;
|
|
77
|
-
};
|
|
78
|
-
declare class NdpAnnounceValidator {
|
|
79
|
-
private readonly _keys;
|
|
80
|
-
registerPublicKey(nid: string, encodedPubKey: string): void;
|
|
81
|
-
removePublicKey(nid: string): void;
|
|
82
|
-
get knownPublicKeys(): ReadonlyMap<string, string>;
|
|
83
|
-
validate(frame: AnnounceFrame): NdpAnnounceResult;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
export { AnnounceFrame, GraphFrame, InMemoryNdpRegistry, type NdpAddress, NdpAnnounceResult, NdpAnnounceValidator, type NdpGraphNode, type NdpResolveResult, ResolveFrame, registerNdpFrames };
|
package/dist/ndp/ndp-registry.js
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
// Copyright 2026 INNO LOTUS PTY LTD
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
export class InMemoryNdpRegistry {
|
|
4
|
-
_store = new Map();
|
|
5
|
-
// Replaceable for testing
|
|
6
|
-
clock = () => Date.now();
|
|
7
|
-
announce(frame) {
|
|
8
|
-
const expiresAt = this.clock() + frame.ttl * 1000;
|
|
9
|
-
if (frame.ttl === 0) {
|
|
10
|
-
this._store.delete(frame.nid);
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
this._store.set(frame.nid, { frame, expiresAt });
|
|
14
|
-
}
|
|
15
|
-
getByNid(nid) {
|
|
16
|
-
const entry = this._store.get(nid);
|
|
17
|
-
if (entry === undefined)
|
|
18
|
-
return undefined;
|
|
19
|
-
if (this.clock() > entry.expiresAt) {
|
|
20
|
-
this._store.delete(nid);
|
|
21
|
-
return undefined;
|
|
22
|
-
}
|
|
23
|
-
return entry.frame;
|
|
24
|
-
}
|
|
25
|
-
resolve(target) {
|
|
26
|
-
for (const [nid, entry] of this._store) {
|
|
27
|
-
if (this.clock() > entry.expiresAt) {
|
|
28
|
-
this._store.delete(nid);
|
|
29
|
-
continue;
|
|
30
|
-
}
|
|
31
|
-
if (!InMemoryNdpRegistry.nwpTargetMatchesNid(nid, target))
|
|
32
|
-
continue;
|
|
33
|
-
const addr = entry.frame.addresses[0];
|
|
34
|
-
if (addr === undefined)
|
|
35
|
-
continue;
|
|
36
|
-
return { host: addr.host, port: addr.port, ttl: entry.frame.ttl };
|
|
37
|
-
}
|
|
38
|
-
return undefined;
|
|
39
|
-
}
|
|
40
|
-
getAll() {
|
|
41
|
-
const now = this.clock();
|
|
42
|
-
const result = [];
|
|
43
|
-
for (const [nid, entry] of this._store) {
|
|
44
|
-
if (now > entry.expiresAt) {
|
|
45
|
-
this._store.delete(nid);
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
result.push(entry.frame);
|
|
49
|
-
}
|
|
50
|
-
return result;
|
|
51
|
-
}
|
|
52
|
-
static nwpTargetMatchesNid(nid, target) {
|
|
53
|
-
// NID: urn:nps:node:{authority}:{path-segment}
|
|
54
|
-
// target: nwp://{authority}/{path}
|
|
55
|
-
const nidParts = nid.split(":");
|
|
56
|
-
if (nidParts.length < 5 || nidParts[0] !== "urn" || nidParts[1] !== "nps" || nidParts[2] !== "node") {
|
|
57
|
-
return false;
|
|
58
|
-
}
|
|
59
|
-
if (!target.startsWith("nwp://"))
|
|
60
|
-
return false;
|
|
61
|
-
const nidAuthority = nidParts[3];
|
|
62
|
-
const nidPath = nidParts[4];
|
|
63
|
-
const rest = target.slice("nwp://".length);
|
|
64
|
-
const slashIdx = rest.indexOf("/");
|
|
65
|
-
if (slashIdx === -1)
|
|
66
|
-
return false;
|
|
67
|
-
const urlAuthority = rest.slice(0, slashIdx);
|
|
68
|
-
const urlPath = rest.slice(slashIdx + 1); // without leading slash
|
|
69
|
-
if (urlAuthority !== nidAuthority)
|
|
70
|
-
return false;
|
|
71
|
-
// nidPath must be a prefix of urlPath at a segment boundary
|
|
72
|
-
if (urlPath === nidPath)
|
|
73
|
-
return true;
|
|
74
|
-
if (urlPath.startsWith(nidPath + "/"))
|
|
75
|
-
return true;
|
|
76
|
-
return false;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
//# sourceMappingURL=ndp-registry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ndp-registry.js","sourceRoot":"","sources":["../../src/ndp/ndp-registry.ts"],"names":[],"mappings":"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"}
|
package/dist/ndp/registry.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
// Copyright 2026 INNO LOTUS PTY LTD
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import { FrameType } from "../core/frames.js";
|
|
4
|
-
import { AnnounceFrame, GraphFrame, ResolveFrame } from "./frames.js";
|
|
5
|
-
export function registerNdpFrames(registry) {
|
|
6
|
-
registry.register(FrameType.ANNOUNCE, AnnounceFrame);
|
|
7
|
-
registry.register(FrameType.RESOLVE, ResolveFrame);
|
|
8
|
-
registry.register(FrameType.GRAPH, GraphFrame);
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=registry.js.map
|
package/dist/ndp/registry.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/ndp/registry.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,sCAAsC;AAGtC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEtE,MAAM,UAAU,iBAAiB,CAAC,QAAuB;IACvD,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACrD,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAG,YAAY,CAAC,CAAC;IACpD,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAK,UAAU,CAAC,CAAC;AACpD,CAAC"}
|
package/dist/ndp/validator.js
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
// Copyright 2026 INNO LOTUS PTY LTD
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import * as ed25519 from "@noble/ed25519";
|
|
4
|
-
import { sha512 } from "@noble/hashes/sha512";
|
|
5
|
-
ed25519.etc.sha512Sync = (...m) => sha512(ed25519.etc.concatBytes(...m));
|
|
6
|
-
export const NdpAnnounceResult = {
|
|
7
|
-
ok: () => ({ isValid: true }),
|
|
8
|
-
fail: (errorCode, message) => ({ isValid: false, errorCode, message }),
|
|
9
|
-
};
|
|
10
|
-
export class NdpAnnounceValidator {
|
|
11
|
-
_keys = new Map(); // nid → "ed25519:<hex>"
|
|
12
|
-
registerPublicKey(nid, encodedPubKey) {
|
|
13
|
-
this._keys.set(nid, encodedPubKey);
|
|
14
|
-
}
|
|
15
|
-
removePublicKey(nid) {
|
|
16
|
-
this._keys.delete(nid);
|
|
17
|
-
}
|
|
18
|
-
get knownPublicKeys() {
|
|
19
|
-
return this._keys;
|
|
20
|
-
}
|
|
21
|
-
validate(frame) {
|
|
22
|
-
const encoded = this._keys.get(frame.nid);
|
|
23
|
-
if (encoded === undefined) {
|
|
24
|
-
return NdpAnnounceResult.fail("NDP-ANNOUNCE-NID-MISMATCH", `No public key registered for NID: ${frame.nid}`);
|
|
25
|
-
}
|
|
26
|
-
try {
|
|
27
|
-
const prefix = "ed25519:";
|
|
28
|
-
const pubHex = encoded.startsWith(prefix) ? encoded.slice(prefix.length) : encoded;
|
|
29
|
-
const pubKey = Buffer.from(pubHex, "hex");
|
|
30
|
-
const sig = frame.signature;
|
|
31
|
-
if (!sig.startsWith(prefix)) {
|
|
32
|
-
return NdpAnnounceResult.fail("NDP-ANNOUNCE-SIG-INVALID", "Signature must start with 'ed25519:'");
|
|
33
|
-
}
|
|
34
|
-
const sigBytes = Buffer.from(sig.slice(prefix.length), "base64");
|
|
35
|
-
const unsigned = frame.unsignedDict();
|
|
36
|
-
const canonical = JSON.stringify(unsigned, Object.keys(unsigned).sort());
|
|
37
|
-
const message = new TextEncoder().encode(canonical);
|
|
38
|
-
const valid = ed25519.verify(sigBytes, message, pubKey);
|
|
39
|
-
if (!valid)
|
|
40
|
-
return NdpAnnounceResult.fail("NDP-ANNOUNCE-SIG-INVALID", "Ed25519 signature verification failed.");
|
|
41
|
-
return NdpAnnounceResult.ok();
|
|
42
|
-
}
|
|
43
|
-
catch {
|
|
44
|
-
return NdpAnnounceResult.fail("NDP-ANNOUNCE-SIG-INVALID", "Ed25519 signature verification failed.");
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=validator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/ndp/validator.ts"],"names":[],"mappings":"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"}
|
package/dist/nip/frames.js
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
// Copyright 2026 INNO LOTUS PTY LTD
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import { EncodingTier, FrameType } from "../core/frames.js";
|
|
4
|
-
export class IdentFrame {
|
|
5
|
-
nid;
|
|
6
|
-
pubKey;
|
|
7
|
-
metadata;
|
|
8
|
-
signature;
|
|
9
|
-
frameType = FrameType.IDENT;
|
|
10
|
-
preferredTier = EncodingTier.MSGPACK;
|
|
11
|
-
constructor(nid, pubKey, metadata, signature) {
|
|
12
|
-
this.nid = nid;
|
|
13
|
-
this.pubKey = pubKey;
|
|
14
|
-
this.metadata = metadata;
|
|
15
|
-
this.signature = signature;
|
|
16
|
-
}
|
|
17
|
-
unsignedDict() {
|
|
18
|
-
return {
|
|
19
|
-
nid: this.nid,
|
|
20
|
-
pub_key: this.pubKey,
|
|
21
|
-
metadata: this.metadata,
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
toDict() {
|
|
25
|
-
return { ...this.unsignedDict(), signature: this.signature };
|
|
26
|
-
}
|
|
27
|
-
static fromDict(data) {
|
|
28
|
-
return new IdentFrame(data["nid"], data["pub_key"], data["metadata"], data["signature"]);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
export class TrustFrame {
|
|
32
|
-
issuerNid;
|
|
33
|
-
subjectNid;
|
|
34
|
-
scopes;
|
|
35
|
-
expiresAt;
|
|
36
|
-
signature;
|
|
37
|
-
frameType = FrameType.TRUST;
|
|
38
|
-
preferredTier = EncodingTier.MSGPACK;
|
|
39
|
-
constructor(issuerNid, subjectNid, scopes, expiresAt, signature) {
|
|
40
|
-
this.issuerNid = issuerNid;
|
|
41
|
-
this.subjectNid = subjectNid;
|
|
42
|
-
this.scopes = scopes;
|
|
43
|
-
this.expiresAt = expiresAt;
|
|
44
|
-
this.signature = signature;
|
|
45
|
-
}
|
|
46
|
-
toDict() {
|
|
47
|
-
return {
|
|
48
|
-
issuer_nid: this.issuerNid,
|
|
49
|
-
subject_nid: this.subjectNid,
|
|
50
|
-
scopes: this.scopes,
|
|
51
|
-
expires_at: this.expiresAt,
|
|
52
|
-
signature: this.signature,
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
static fromDict(data) {
|
|
56
|
-
return new TrustFrame(data["issuer_nid"], data["subject_nid"], data["scopes"], data["expires_at"], data["signature"]);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
export class RevokeFrame {
|
|
60
|
-
nid;
|
|
61
|
-
reason;
|
|
62
|
-
revokedAt;
|
|
63
|
-
frameType = FrameType.REVOKE;
|
|
64
|
-
preferredTier = EncodingTier.MSGPACK;
|
|
65
|
-
constructor(nid, reason, revokedAt) {
|
|
66
|
-
this.nid = nid;
|
|
67
|
-
this.reason = reason;
|
|
68
|
-
this.revokedAt = revokedAt;
|
|
69
|
-
}
|
|
70
|
-
toDict() {
|
|
71
|
-
return {
|
|
72
|
-
nid: this.nid,
|
|
73
|
-
reason: this.reason ?? null,
|
|
74
|
-
revoked_at: this.revokedAt ?? null,
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
static fromDict(data) {
|
|
78
|
-
return new RevokeFrame(data["nid"], data["reason"] ?? undefined, data["revoked_at"] ?? undefined);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
//# sourceMappingURL=frames.js.map
|
package/dist/nip/frames.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"frames.js","sourceRoot":"","sources":["../../src/nip/frames.ts"],"names":[],"mappings":"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"}
|
package/dist/nip/identity.js
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
// Copyright 2026 INNO LOTUS PTY LTD
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
/**
|
|
4
|
-
* NipIdentity — Ed25519 key management and signing for NPS NID identity.
|
|
5
|
-
* Uses @noble/ed25519 for signing; node:crypto for key storage encryption.
|
|
6
|
-
*/
|
|
7
|
-
import * as ed25519 from "@noble/ed25519";
|
|
8
|
-
import { sha512 } from "@noble/hashes/sha512";
|
|
9
|
-
import { createCipheriv, createDecipheriv, pbkdf2Sync, randomBytes } from "node:crypto";
|
|
10
|
-
import { readFileSync, writeFileSync } from "node:fs";
|
|
11
|
-
// noble/ed25519 requires sha512 to be set explicitly in Node environments
|
|
12
|
-
ed25519.etc.sha512Sync = (...m) => sha512(ed25519.etc.concatBytes(...m));
|
|
13
|
-
const KEY_FILE_VERSION = 1;
|
|
14
|
-
const PBKDF2_ITERS = 600_000;
|
|
15
|
-
const SALT_BYTES = 16;
|
|
16
|
-
const IV_BYTES = 12;
|
|
17
|
-
const KEY_BYTES = 32;
|
|
18
|
-
export class NipIdentity {
|
|
19
|
-
_privKey;
|
|
20
|
-
pubKey;
|
|
21
|
-
constructor(_privKey, pubKey) {
|
|
22
|
-
this._privKey = _privKey;
|
|
23
|
-
this.pubKey = pubKey;
|
|
24
|
-
}
|
|
25
|
-
// ── Factory ───────────────────────────────────────────────────────────────
|
|
26
|
-
static generate() {
|
|
27
|
-
const priv = ed25519.utils.randomPrivateKey();
|
|
28
|
-
const pub = ed25519.getPublicKey(priv);
|
|
29
|
-
return new NipIdentity(priv, pub);
|
|
30
|
-
}
|
|
31
|
-
static fromPrivateKey(privKey) {
|
|
32
|
-
const pub = ed25519.getPublicKey(privKey);
|
|
33
|
-
return new NipIdentity(privKey, pub);
|
|
34
|
-
}
|
|
35
|
-
/** Load from an AES-256-GCM encrypted key file. */
|
|
36
|
-
static load(path, passphrase) {
|
|
37
|
-
const envelope = JSON.parse(readFileSync(path, "utf8"));
|
|
38
|
-
const salt = Buffer.from(envelope.salt, "hex");
|
|
39
|
-
const iv = Buffer.from(envelope.iv, "hex");
|
|
40
|
-
const ct = Buffer.from(envelope.ciphertext, "hex");
|
|
41
|
-
const dk = pbkdf2Sync(passphrase, salt, PBKDF2_ITERS, KEY_BYTES, "sha256");
|
|
42
|
-
const decipher = createDecipheriv("aes-256-gcm", dk, iv);
|
|
43
|
-
// Last 16 bytes of ciphertext are the GCM auth tag
|
|
44
|
-
const authTag = ct.slice(ct.length - 16);
|
|
45
|
-
const body = ct.slice(0, ct.length - 16);
|
|
46
|
-
decipher.setAuthTag(authTag);
|
|
47
|
-
const priv = Buffer.concat([decipher.update(body), decipher.final()]);
|
|
48
|
-
return NipIdentity.fromPrivateKey(new Uint8Array(priv));
|
|
49
|
-
}
|
|
50
|
-
/** Save to an AES-256-GCM encrypted key file. */
|
|
51
|
-
save(path, passphrase) {
|
|
52
|
-
const salt = randomBytes(SALT_BYTES);
|
|
53
|
-
const iv = randomBytes(IV_BYTES);
|
|
54
|
-
const dk = pbkdf2Sync(passphrase, salt, PBKDF2_ITERS, KEY_BYTES, "sha256");
|
|
55
|
-
const cipher = createCipheriv("aes-256-gcm", dk, iv);
|
|
56
|
-
const body = Buffer.concat([cipher.update(Buffer.from(this._privKey)), cipher.final()]);
|
|
57
|
-
const tag = cipher.getAuthTag();
|
|
58
|
-
const envelope = {
|
|
59
|
-
version: KEY_FILE_VERSION,
|
|
60
|
-
salt: salt.toString("hex"),
|
|
61
|
-
iv: iv.toString("hex"),
|
|
62
|
-
ciphertext: Buffer.concat([body, tag]).toString("hex"),
|
|
63
|
-
pubKey: Buffer.from(this.pubKey).toString("hex"),
|
|
64
|
-
};
|
|
65
|
-
writeFileSync(path, JSON.stringify(envelope, null, 2), "utf8");
|
|
66
|
-
}
|
|
67
|
-
// ── Signing ───────────────────────────────────────────────────────────────
|
|
68
|
-
/** Sign a dict payload. Returns `ed25519:<base64url>`. */
|
|
69
|
-
sign(payload) {
|
|
70
|
-
const canonical = JSON.stringify(payload, Object.keys(payload).sort());
|
|
71
|
-
const bytes = new TextEncoder().encode(canonical);
|
|
72
|
-
const sig = ed25519.sign(bytes, this._privKey);
|
|
73
|
-
return `ed25519:${Buffer.from(sig).toString("base64")}`;
|
|
74
|
-
}
|
|
75
|
-
/** Verify a signature string against a dict payload. */
|
|
76
|
-
verify(payload, signature) {
|
|
77
|
-
if (!signature.startsWith("ed25519:"))
|
|
78
|
-
return false;
|
|
79
|
-
try {
|
|
80
|
-
const canonical = JSON.stringify(payload, Object.keys(payload).sort());
|
|
81
|
-
const bytes = new TextEncoder().encode(canonical);
|
|
82
|
-
const sigBytes = Buffer.from(signature.slice("ed25519:".length), "base64");
|
|
83
|
-
return ed25519.verify(sigBytes, bytes, this.pubKey);
|
|
84
|
-
}
|
|
85
|
-
catch {
|
|
86
|
-
return false;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
/** Public key as `ed25519:<hex>` string. */
|
|
90
|
-
get pubKeyString() {
|
|
91
|
-
return `ed25519:${Buffer.from(this.pubKey).toString("hex")}`;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
//# sourceMappingURL=identity.js.map
|
package/dist/nip/identity.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/nip/identity.ts"],"names":[],"mappings":"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"}
|
package/dist/nip/index.d.cts
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { N as NpsFrame, g as FrameType, c as EncodingTier, F as FrameRegistry } from '../codec-CmHeovTV.cjs';
|
|
2
|
-
|
|
3
|
-
interface IdentMetadata {
|
|
4
|
-
issuer: string;
|
|
5
|
-
issuedAt: string;
|
|
6
|
-
expiresAt?: string;
|
|
7
|
-
capabilities?: readonly string[];
|
|
8
|
-
scopes?: readonly string[];
|
|
9
|
-
}
|
|
10
|
-
declare class IdentFrame implements NpsFrame {
|
|
11
|
-
readonly nid: string;
|
|
12
|
-
readonly pubKey: string;
|
|
13
|
-
readonly metadata: IdentMetadata;
|
|
14
|
-
readonly signature: string;
|
|
15
|
-
readonly frameType = FrameType.IDENT;
|
|
16
|
-
readonly preferredTier = EncodingTier.MSGPACK;
|
|
17
|
-
constructor(nid: string, pubKey: string, metadata: IdentMetadata, signature: string);
|
|
18
|
-
unsignedDict(): Record<string, unknown>;
|
|
19
|
-
toDict(): Record<string, unknown>;
|
|
20
|
-
static fromDict(data: Record<string, unknown>): IdentFrame;
|
|
21
|
-
}
|
|
22
|
-
declare class TrustFrame implements NpsFrame {
|
|
23
|
-
readonly issuerNid: string;
|
|
24
|
-
readonly subjectNid: string;
|
|
25
|
-
readonly scopes: readonly string[];
|
|
26
|
-
readonly expiresAt: string;
|
|
27
|
-
readonly signature: string;
|
|
28
|
-
readonly frameType = FrameType.TRUST;
|
|
29
|
-
readonly preferredTier = EncodingTier.MSGPACK;
|
|
30
|
-
constructor(issuerNid: string, subjectNid: string, scopes: readonly string[], expiresAt: string, signature: string);
|
|
31
|
-
toDict(): Record<string, unknown>;
|
|
32
|
-
static fromDict(data: Record<string, unknown>): TrustFrame;
|
|
33
|
-
}
|
|
34
|
-
declare class RevokeFrame implements NpsFrame {
|
|
35
|
-
readonly nid: string;
|
|
36
|
-
readonly reason?: string | undefined;
|
|
37
|
-
readonly revokedAt?: string | undefined;
|
|
38
|
-
readonly frameType = FrameType.REVOKE;
|
|
39
|
-
readonly preferredTier = EncodingTier.MSGPACK;
|
|
40
|
-
constructor(nid: string, reason?: string | undefined, revokedAt?: string | undefined);
|
|
41
|
-
toDict(): Record<string, unknown>;
|
|
42
|
-
static fromDict(data: Record<string, unknown>): RevokeFrame;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
declare class NipIdentity {
|
|
46
|
-
private readonly _privKey;
|
|
47
|
-
readonly pubKey: Uint8Array;
|
|
48
|
-
private constructor();
|
|
49
|
-
static generate(): NipIdentity;
|
|
50
|
-
static fromPrivateKey(privKey: Uint8Array): NipIdentity;
|
|
51
|
-
/** Load from an AES-256-GCM encrypted key file. */
|
|
52
|
-
static load(path: string, passphrase: string): NipIdentity;
|
|
53
|
-
/** Save to an AES-256-GCM encrypted key file. */
|
|
54
|
-
save(path: string, passphrase: string): void;
|
|
55
|
-
/** Sign a dict payload. Returns `ed25519:<base64url>`. */
|
|
56
|
-
sign(payload: Record<string, unknown>): string;
|
|
57
|
-
/** Verify a signature string against a dict payload. */
|
|
58
|
-
verify(payload: Record<string, unknown>, signature: string): boolean;
|
|
59
|
-
/** Public key as `ed25519:<hex>` string. */
|
|
60
|
-
get pubKeyString(): string;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
declare function registerNipFrames(registry: FrameRegistry): void;
|
|
64
|
-
|
|
65
|
-
export { IdentFrame, type IdentMetadata, NipIdentity, RevokeFrame, TrustFrame, registerNipFrames };
|
package/dist/nip/registry.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
// Copyright 2026 INNO LOTUS PTY LTD
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import { FrameType } from "../core/frames.js";
|
|
4
|
-
import { IdentFrame, TrustFrame, RevokeFrame } from "./frames.js";
|
|
5
|
-
export function registerNipFrames(registry) {
|
|
6
|
-
registry.register(FrameType.IDENT, IdentFrame);
|
|
7
|
-
registry.register(FrameType.TRUST, TrustFrame);
|
|
8
|
-
registry.register(FrameType.REVOKE, RevokeFrame);
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=registry.js.map
|
package/dist/nip/registry.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/nip/registry.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,sCAAsC;AAGtC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAElE,MAAM,UAAU,iBAAiB,CAAC,QAAuB;IACvD,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAG,UAAU,CAAC,CAAC;IAChD,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAG,UAAU,CAAC,CAAC;IAChD,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AACnD,CAAC"}
|
package/dist/nop/client.js
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
// Copyright 2026 INNO LOTUS PTY LTD
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import { NpsFrameCodec } from "../core/codec.js";
|
|
4
|
-
import { EncodingTier } from "../core/frames.js";
|
|
5
|
-
import { FrameRegistry } from "../core/registry.js";
|
|
6
|
-
import { registerNcpFrames } from "../ncp/registry.js";
|
|
7
|
-
import { registerNopFrames } from "./registry.js";
|
|
8
|
-
import { TaskState } from "./models.js";
|
|
9
|
-
const TERMINAL_STATES = new Set([
|
|
10
|
-
TaskState.COMPLETED,
|
|
11
|
-
TaskState.FAILED,
|
|
12
|
-
TaskState.CANCELLED,
|
|
13
|
-
]);
|
|
14
|
-
export class NopTaskStatus {
|
|
15
|
-
_raw;
|
|
16
|
-
constructor(_raw) {
|
|
17
|
-
this._raw = _raw;
|
|
18
|
-
}
|
|
19
|
-
get taskId() { return this._raw["task_id"]; }
|
|
20
|
-
get state() { return this._raw["state"]; }
|
|
21
|
-
get isTerminal() { return TERMINAL_STATES.has(this._raw["state"]); }
|
|
22
|
-
get aggregatedResult() { return this._raw["aggregated_result"]; }
|
|
23
|
-
get errorCode() { return this._raw["error_code"] ?? undefined; }
|
|
24
|
-
get errorMessage() { return this._raw["error_message"] ?? undefined; }
|
|
25
|
-
get nodeResults() { return this._raw["node_results"] ?? {}; }
|
|
26
|
-
get raw() { return this._raw; }
|
|
27
|
-
toString() {
|
|
28
|
-
return `NopTaskStatus(taskId=${this.taskId}, state=${String(this._raw["state"])})`;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
export class NopClient {
|
|
32
|
-
_baseUrl;
|
|
33
|
-
_codec;
|
|
34
|
-
_tier;
|
|
35
|
-
constructor(baseUrl, options = {}) {
|
|
36
|
-
this._baseUrl = baseUrl.replace(/\/$/, "");
|
|
37
|
-
this._tier = options.defaultTier ?? EncodingTier.MSGPACK;
|
|
38
|
-
const registry = options.registry ?? (() => {
|
|
39
|
-
const r = new FrameRegistry();
|
|
40
|
-
registerNcpFrames(r);
|
|
41
|
-
registerNopFrames(r);
|
|
42
|
-
return r;
|
|
43
|
-
})();
|
|
44
|
-
this._codec = new NpsFrameCodec(registry);
|
|
45
|
-
}
|
|
46
|
-
async submit(frame) {
|
|
47
|
-
const wire = this._codec.encode(frame, { overrideTier: this._tier });
|
|
48
|
-
const res = await fetch(`${this._baseUrl}/task`, {
|
|
49
|
-
method: "POST",
|
|
50
|
-
body: wire,
|
|
51
|
-
headers: { "Content-Type": "application/x-nps-frame", "Accept": "application/json" },
|
|
52
|
-
});
|
|
53
|
-
if (!res.ok)
|
|
54
|
-
throw new Error(`NOP /task failed: HTTP ${res.status}`);
|
|
55
|
-
const data = await res.json();
|
|
56
|
-
return data["task_id"];
|
|
57
|
-
}
|
|
58
|
-
async getStatus(taskId) {
|
|
59
|
-
const res = await fetch(`${this._baseUrl}/task/${taskId}`, {
|
|
60
|
-
headers: { "Accept": "application/json" },
|
|
61
|
-
});
|
|
62
|
-
if (!res.ok)
|
|
63
|
-
throw new Error(`NOP /task/${taskId} failed: HTTP ${res.status}`);
|
|
64
|
-
return new NopTaskStatus(await res.json());
|
|
65
|
-
}
|
|
66
|
-
async cancel(taskId) {
|
|
67
|
-
const res = await fetch(`${this._baseUrl}/task/${taskId}/cancel`, {
|
|
68
|
-
method: "POST",
|
|
69
|
-
headers: { "Accept": "application/json" },
|
|
70
|
-
});
|
|
71
|
-
if (!res.ok)
|
|
72
|
-
throw new Error(`NOP /task/${taskId}/cancel failed: HTTP ${res.status}`);
|
|
73
|
-
}
|
|
74
|
-
async wait(taskId, options = {}) {
|
|
75
|
-
const pollIntervalMs = options.pollIntervalMs ?? 1000;
|
|
76
|
-
const timeoutMs = options.timeoutMs ?? 30_000;
|
|
77
|
-
const deadline = Date.now() + timeoutMs;
|
|
78
|
-
while (true) {
|
|
79
|
-
const status = await this.getStatus(taskId);
|
|
80
|
-
if (status.isTerminal)
|
|
81
|
-
return status;
|
|
82
|
-
const remaining = deadline - Date.now();
|
|
83
|
-
if (remaining <= 0) {
|
|
84
|
-
throw new Error(`Task '${taskId}' did not complete within ${timeoutMs}ms (state: ${String(status.raw["state"])}).`);
|
|
85
|
-
}
|
|
86
|
-
await new Promise((resolve) => setTimeout(resolve, Math.min(pollIntervalMs, remaining)));
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
//# sourceMappingURL=client.js.map
|
package/dist/nop/client.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/nop/client.ts"],"names":[],"mappings":"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"}
|