From 1fd1b537aa7be8863a00f61e82a6ac1606f15b86 Mon Sep 17 00:00:00 2001 From: Junxiao Shi Date: Sat, 20 Oct 2018 14:11:30 -0400 Subject: [PATCH 01/20] ndn-js: Transport --- types/ndn-js/face.d.ts | 17 +++++++++++++++ types/ndn-js/index.d.ts | 3 +++ types/ndn-js/ndn-js-tests.ts | 7 ++++++ types/ndn-js/transport.d.ts | 42 ++++++++++++++++++++++++++++++++++++ types/ndn-js/tsconfig.json | 23 ++++++++++++++++++++ types/ndn-js/tslint.json | 7 ++++++ 6 files changed, 99 insertions(+) create mode 100644 types/ndn-js/face.d.ts create mode 100644 types/ndn-js/index.d.ts create mode 100644 types/ndn-js/ndn-js-tests.ts create mode 100644 types/ndn-js/transport.d.ts create mode 100644 types/ndn-js/tsconfig.json create mode 100644 types/ndn-js/tslint.json diff --git a/types/ndn-js/face.d.ts b/types/ndn-js/face.d.ts new file mode 100644 index 0000000000..0049585be6 --- /dev/null +++ b/types/ndn-js/face.d.ts @@ -0,0 +1,17 @@ +import { Transport } from "./transport"; + +export interface FaceCtorOptions { + getTransport?: () => Transport; + getConnectionInfo?: () => Transport.ConnectionInfo; + connectionInfo?: Transport.ConnectionInfo|null; + host?: string|null; + port?: number|null; + onopen?: () => any; + onclose?: () => any; +} + +export class Face { + constructor(); + constructor(settings: FaceCtorOptions); + constructor(transport: Transport, connectionInfo: Transport.ConnectionInfo); +} diff --git a/types/ndn-js/index.d.ts b/types/ndn-js/index.d.ts new file mode 100644 index 0000000000..da75f56e6c --- /dev/null +++ b/types/ndn-js/index.d.ts @@ -0,0 +1,3 @@ +export as namespace ndn; +export * from "./face"; +export * from "./transport"; diff --git a/types/ndn-js/ndn-js-tests.ts b/types/ndn-js/ndn-js-tests.ts new file mode 100644 index 0000000000..2364a6e377 --- /dev/null +++ b/types/ndn-js/ndn-js-tests.ts @@ -0,0 +1,7 @@ +import ndn = require("ndn-js"); + +let face = new ndn.Face(); +face = new ndn.Face({host: 'hobo.cs.arizona.edu', port: 6363}); +face = new ndn.Face(new ndn.TcpTransport(), new ndn.TcpTransport.ConnectionInfo("hobo.cs.arizona.edu", 9696)); +face = new ndn.Face(new ndn.UnixTransport(), new ndn.UnixTransport.ConnectionInfo("/run/nfd.sock")); +face = new ndn.Face(new ndn.WebSocketTransport(), new ndn.WebSocketTransport.ConnectionInfo("hobo.cs.arizona.edu", 9696)); diff --git a/types/ndn-js/transport.d.ts b/types/ndn-js/transport.d.ts new file mode 100644 index 0000000000..320ec1e695 --- /dev/null +++ b/types/ndn-js/transport.d.ts @@ -0,0 +1,42 @@ +export interface Transport { +} + +export namespace Transport { + interface ConnectionInfo { + } +} + +export class TcpTransport implements Transport { +} + +export namespace TcpTransport { + class ConnectionInfo implements Transport.ConnectionInfo { + constructor(host: string, port: number); + equals(other: ConnectionInfo): boolean; + toString(): string; + } +} + +export class UnixTransport implements Transport { +} + +export namespace UnixTransport { + class ConnectionInfo implements Transport.ConnectionInfo { + constructor(filePath: string); + equals(other: ConnectionInfo): boolean; + toString(): string; + } +} + +export class WebSocketTransport implements Transport { + isLocal(): boolean; +} + +export namespace WebSocketTransport { + class ConnectionInfo implements Transport.ConnectionInfo { + constructor(host: string, port: number); + constructor(uri: string); + equals(other: ConnectionInfo): boolean; + toString(): string; + } +} diff --git a/types/ndn-js/tsconfig.json b/types/ndn-js/tsconfig.json new file mode 100644 index 0000000000..1568d2bd35 --- /dev/null +++ b/types/ndn-js/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictFunctionTypes": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "ndn-js-tests.ts" + ] +} diff --git a/types/ndn-js/tslint.json b/types/ndn-js/tslint.json new file mode 100644 index 0000000000..5f014d5c68 --- /dev/null +++ b/types/ndn-js/tslint.json @@ -0,0 +1,7 @@ +{ + "extends": "dtslint/dtslint.json", + "rules": { + "no-empty-interface": false, + "unified-signatures": false + } +} From 6baea0f9bf090d2d2fac76bce42a17bec9cef214 Mon Sep 17 00:00:00 2001 From: Junxiao Shi Date: Sat, 20 Oct 2018 14:38:48 -0400 Subject: [PATCH 02/20] ndn-js: Blob and SignedBlob --- types/ndn-js/blob.d.ts | 23 +++++++++++++++++++++++ types/ndn-js/index.d.ts | 1 + types/ndn-js/ndn-js-tests.ts | 34 +++++++++++++++++++++++++++++----- 3 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 types/ndn-js/blob.d.ts diff --git a/types/ndn-js/blob.d.ts b/types/ndn-js/blob.d.ts new file mode 100644 index 0000000000..8a84e66b58 --- /dev/null +++ b/types/ndn-js/blob.d.ts @@ -0,0 +1,23 @@ +export class Blob { + constructor(value?: Blob); + constructor(value: Buffer, copy?: boolean); + constructor(value: number[]); + constructor(value: string); + + size(): number; + buf(): Buffer; + isNull(): boolean; + toHex(): string; + toString(): string; + equals(other: Blob): boolean; +} + +export class SignedBlob extends Blob { + constructor(); + constructor(value: Blob|Buffer|number[], signedPortionBeginOffset: number, signedPortionEndOffset: number); + + signedSize(): number; + signedBuf(): Buffer; + getSignedPortionBeginOffset(): number; + getSignedPortionEndOffset(): number; +} diff --git a/types/ndn-js/index.d.ts b/types/ndn-js/index.d.ts index da75f56e6c..c1dbeb6a76 100644 --- a/types/ndn-js/index.d.ts +++ b/types/ndn-js/index.d.ts @@ -1,3 +1,4 @@ export as namespace ndn; +export * from "./blob"; export * from "./face"; export * from "./transport"; diff --git a/types/ndn-js/ndn-js-tests.ts b/types/ndn-js/ndn-js-tests.ts index 2364a6e377..ceeb00effe 100644 --- a/types/ndn-js/ndn-js-tests.ts +++ b/types/ndn-js/ndn-js-tests.ts @@ -1,7 +1,31 @@ +/// import ndn = require("ndn-js"); -let face = new ndn.Face(); -face = new ndn.Face({host: 'hobo.cs.arizona.edu', port: 6363}); -face = new ndn.Face(new ndn.TcpTransport(), new ndn.TcpTransport.ConnectionInfo("hobo.cs.arizona.edu", 9696)); -face = new ndn.Face(new ndn.UnixTransport(), new ndn.UnixTransport.ConnectionInfo("/run/nfd.sock")); -face = new ndn.Face(new ndn.WebSocketTransport(), new ndn.WebSocketTransport.ConnectionInfo("hobo.cs.arizona.edu", 9696)); +function testBlob() { + let blob = new ndn.Blob(); + blob = new ndn.Blob(blob); + blob = new ndn.Blob(Buffer.alloc(4)); + blob = new ndn.Blob("str"); + + let n: number = blob.size(); + let buf: Buffer = blob.buf(); + let b: boolean = blob.equals(blob); + let s: string = blob.toHex(); + s = blob.toString(); + b = blob.isNull(); + + let sb = new ndn.SignedBlob(); + sb = new ndn.SignedBlob(sb, 20, 40); + n = sb.signedSize(); + buf = sb.signedBuf(); + n = sb.getSignedPortionBeginOffset(); + n = sb.getSignedPortionEndOffset(); +} + +function testFaceTransport() { + let face = new ndn.Face(); + face = new ndn.Face({host: 'hobo.cs.arizona.edu', port: 6363}); + face = new ndn.Face(new ndn.TcpTransport(), new ndn.TcpTransport.ConnectionInfo("hobo.cs.arizona.edu", 9696)); + face = new ndn.Face(new ndn.UnixTransport(), new ndn.UnixTransport.ConnectionInfo("/run/nfd.sock")); + face = new ndn.Face(new ndn.WebSocketTransport(), new ndn.WebSocketTransport.ConnectionInfo("hobo.cs.arizona.edu", 9696)); +} From 6ecd873f913d6bff10ae30ae241985b344f2c72c Mon Sep 17 00:00:00 2001 From: Junxiao Shi Date: Sat, 20 Oct 2018 16:01:35 -0400 Subject: [PATCH 03/20] ndn-js: Name and Name.Component --- types/ndn-js/blob.d.ts | 2 + types/ndn-js/index.d.ts | 1 + types/ndn-js/name.d.ts | 102 +++++++++++++++++++++++++++++++++++ types/ndn-js/ndn-js-tests.ts | 85 +++++++++++++++++++++++++++++ 4 files changed, 190 insertions(+) create mode 100644 types/ndn-js/name.d.ts diff --git a/types/ndn-js/blob.d.ts b/types/ndn-js/blob.d.ts index 8a84e66b58..562f05cda5 100644 --- a/types/ndn-js/blob.d.ts +++ b/types/ndn-js/blob.d.ts @@ -1,3 +1,5 @@ +export type BlobLike = Blob|Buffer; + export class Blob { constructor(value?: Blob); constructor(value: Buffer, copy?: boolean); diff --git a/types/ndn-js/index.d.ts b/types/ndn-js/index.d.ts index c1dbeb6a76..0230f1a3f1 100644 --- a/types/ndn-js/index.d.ts +++ b/types/ndn-js/index.d.ts @@ -1,4 +1,5 @@ export as namespace ndn; export * from "./blob"; export * from "./face"; +export * from "./name"; export * from "./transport"; diff --git a/types/ndn-js/name.d.ts b/types/ndn-js/name.d.ts new file mode 100644 index 0000000000..8d0334f7a9 --- /dev/null +++ b/types/ndn-js/name.d.ts @@ -0,0 +1,102 @@ +import { Blob, BlobLike } from "./blob"; + +export namespace Name { + type ComponentCtorValue = string|number[]|ArrayBuffer|Buffer; + type CompareResult = -1|0|1; + + enum ComponentType { + IMPLICIT_SHA256_DIGEST = 1, + PARAMETERS_SHA256_DIGEST = 2, + GENERIC = 8, + OTHER_CODE = 0x7fff, + } + + class Component { + constructor(); + constructor(comp: Component); + constructor(value: ComponentCtorValue, type?: ComponentType); + constructor(value: ComponentCtorValue, type: ComponentType.OTHER_CODE, otherTypeCode: number); + + // accessors + getType(): ComponentType; + getOtherTypeCode(): number; + getValue(): Blob; + toEscapedString(): string; + + // algorithms + getSuccessor(): Component; + equals(other: Component): boolean; + compare(other: Component): CompareResult; + + // digest types + isImplicitSha256Digest(): boolean; + isParametersSha256Digest(): boolean; + static fromImplicitSha256Digest(digest: BlobLike): Component; + static fromParametersSha256Digest(digest: BlobLike): Component; + + // naming conventions + isSegment(): boolean; + isSegmentOffset(): boolean; + isVersion(): boolean; + isTimestamp(): boolean; + isSequenceNumber(): boolean; + isGeneric(): boolean; + toNumber(): number; + toNumberWithMarker(marker: number): number; + toSegment(): number; + toSegmentOffset(): number; + toVersion(): number; + toTimestamp(): number; + toSequenceNumber(): number; + static fromNumber(number: number, type?: ComponentType): Component; + static fromNumber(number: number, type: ComponentType.OTHER_CODE, otherTypeCode: number): Component; + static fromNumberWithMarker(number: number, marker: number): Component; + static fromSegment(segment: number): Component; + static fromSegmentOffset(segmentOffset: number): Component; + static fromVersion(version: number): Component; + static fromTimestamp(timestamp: number): Component; + static fromSequenceNumber(sequenceNumber: number): Component; + } +} + +export class Name { + constructor(uri?: string); + constructor(name: Name); + constructor(components: Array); + + // accessors + set(uri: string): void; + clear(): void; + getSubName(iStartComponent: number, nComponents?: number): Name; + getPrefix(nComponents: number): Name; + size(): number; + get(i: number): Name.Component; + + // append + append(component: Name.Component): Name; + append(component: Name): Name; + append(value: Name.ComponentCtorValue, type?: Name.ComponentType): Name; + append(value: Name.ComponentCtorValue, type: Name.ComponentType.OTHER_CODE, otherTypeCode: number): Name; + appendSegment(segment: number): Name; + appendSegmentOffset(segmentOffset: number): Name; + appendVersion(version: number): Name; + appendTimestamp(timestamp: number): Name; + appendSequenceNumber(sequenceNumber: number): Name; + appendImplicitSha256Digest(digest: BlobLike): Name; + appendParametersSha256Digest(digest: BlobLike): Name; + + // algorithms + compare(other: Name): Name.CompareResult; + compare(iStartComponent: number, nComponents: number, other: Name, + iOtherStartComponent?: number, nOtherComponents?: number): Name.CompareResult; + equals(other: Name): boolean; + getSuccessor(): Name; + match(name: Name): boolean; + isPrefixOf(name: Name): boolean; + + // encoding + wireEncode(): Blob; + wireDecode(input: BlobLike): void; + toUri(includeScheme?: boolean): string; + static fromEscapedString(uri: string): Name; +} diff --git a/types/ndn-js/ndn-js-tests.ts b/types/ndn-js/ndn-js-tests.ts index ceeb00effe..a617509bb1 100644 --- a/types/ndn-js/ndn-js-tests.ts +++ b/types/ndn-js/ndn-js-tests.ts @@ -5,6 +5,7 @@ function testBlob() { let blob = new ndn.Blob(); blob = new ndn.Blob(blob); blob = new ndn.Blob(Buffer.alloc(4)); + blob = new ndn.Blob([0x08, 0x01, 0x41]); blob = new ndn.Blob("str"); let n: number = blob.size(); @@ -22,6 +23,90 @@ function testBlob() { n = sb.getSignedPortionEndOffset(); } +function testName() { + const digestBlob = new ndn.Blob([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]); + + let comp = new ndn.Name.Component(); + comp = new ndn.Name.Component(comp); + comp = new ndn.Name.Component("A"); + comp = new ndn.Name.Component([0x41], ndn.Name.ComponentType.GENERIC); + comp = new ndn.Name.Component([0x41], ndn.Name.ComponentType.OTHER_CODE, 1000); + + let blob: ndn.Blob = comp.getValue(); + const ct: ndn.Name.ComponentType = comp.getType(); + let n: number = comp.getOtherTypeCode(); + let s: string = comp.toEscapedString(); + + comp = comp.getSuccessor(); + let b: boolean = comp.equals(comp); + n = comp.compare(comp); + + b = comp.isImplicitSha256Digest(); + b = comp.isParametersSha256Digest(); + comp = ndn.Name.Component.fromImplicitSha256Digest(digestBlob); + comp = ndn.Name.Component.fromParametersSha256Digest(Buffer.alloc(32)); + + b = comp.isSegment(); + b = comp.isSegmentOffset(); + b = comp.isVersion(); + b = comp.isTimestamp(); + b = comp.isSequenceNumber(); + b = comp.isGeneric(); + + n = comp.toNumber(); + n = comp.toNumberWithMarker(0xFD); + n = comp.toSegment(); + n = comp.toSegmentOffset(); + n = comp.toVersion(); + n = comp.toTimestamp(); + n = comp.toSequenceNumber(); + + comp = ndn.Name.Component.fromNumber(200); + comp = ndn.Name.Component.fromNumber(200, ndn.Name.ComponentType.OTHER_CODE, 1000); + comp = ndn.Name.Component.fromNumberWithMarker(200, 0xFD); + comp = ndn.Name.Component.fromSegment(0); + comp = ndn.Name.Component.fromSegmentOffset(0); + comp = ndn.Name.Component.fromVersion(4); + comp = ndn.Name.Component.fromTimestamp(123456789); + comp = ndn.Name.Component.fromSequenceNumber(1); + + let name = new ndn.Name(); + name = new ndn.Name("/A"); + name = new ndn.Name(name); + name = new ndn.Name(["A", Buffer.from([0x42]), name]); + + name.set("/B"); + name.clear(); + name = name.getSubName(1) + .getSubName(1, 4) + .getPrefix(3); + n = name.size(); + comp = name.get(2); + + name = name.append(ndn.Name.Component.fromSegment(4)) + .append("A", ndn.Name.ComponentType.OTHER_CODE, 1000) + .appendSegment(0) + .appendSegmentOffset(1) + .appendVersion(2) + .appendTimestamp(3) + .appendSequenceNumber(4) + .appendImplicitSha256Digest(digestBlob) + .appendParametersSha256Digest(Buffer.alloc(32)); + + n = name.compare(name); + n = name.compare(0, 2, name, 1, 3); + b = name.equals(name); + name = name.getSuccessor(); + b = name.match(name); + b = name.isPrefixOf(name); + + blob = name.wireEncode(); + name.wireDecode(blob); + s = name.toUri(); + name = ndn.Name.fromEscapedString(s); +} + function testFaceTransport() { let face = new ndn.Face(); face = new ndn.Face({host: 'hobo.cs.arizona.edu', port: 6363}); From 6b9475b1293e463cf28ca96b0e7344cc2f0942a2 Mon Sep 17 00:00:00 2001 From: Junxiao Shi Date: Sat, 20 Oct 2018 16:25:07 -0400 Subject: [PATCH 04/20] ndn-js: Interest --- types/ndn-js/data.d.ts | 1 + types/ndn-js/delegation-set.d.ts | 1 + types/ndn-js/index.d.ts | 1 + types/ndn-js/interest.d.ts | 31 +++++++++++++++++++++++++++++++ types/ndn-js/name.d.ts | 6 +++--- types/ndn-js/ndn-js-tests.ts | 20 ++++++++++++++++++++ 6 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 types/ndn-js/data.d.ts create mode 100644 types/ndn-js/delegation-set.d.ts create mode 100644 types/ndn-js/interest.d.ts diff --git a/types/ndn-js/data.d.ts b/types/ndn-js/data.d.ts new file mode 100644 index 0000000000..9c1b2d5e22 --- /dev/null +++ b/types/ndn-js/data.d.ts @@ -0,0 +1 @@ +export type Data = any; diff --git a/types/ndn-js/delegation-set.d.ts b/types/ndn-js/delegation-set.d.ts new file mode 100644 index 0000000000..f40dbd1912 --- /dev/null +++ b/types/ndn-js/delegation-set.d.ts @@ -0,0 +1 @@ +export type DelegationSet = any; diff --git a/types/ndn-js/index.d.ts b/types/ndn-js/index.d.ts index 0230f1a3f1..7646134cb6 100644 --- a/types/ndn-js/index.d.ts +++ b/types/ndn-js/index.d.ts @@ -1,5 +1,6 @@ export as namespace ndn; export * from "./blob"; export * from "./face"; +export * from "./interest"; export * from "./name"; export * from "./transport"; diff --git a/types/ndn-js/interest.d.ts b/types/ndn-js/interest.d.ts new file mode 100644 index 0000000000..94f826dc6a --- /dev/null +++ b/types/ndn-js/interest.d.ts @@ -0,0 +1,31 @@ +import { Blob, BlobLike } from "./blob"; +import { Data } from "./data"; +import { DelegationSet } from "./delegation-set"; +import { Name, NameCtor } from "./name"; + +export class Interest { + constructor(name?: NameCtor); + constructor(interest: Interest); + + // field accessors + getName(): Name; + setName(name: NameCtor): Interest; + getCanBePrefix(): boolean; + setCanBePrefix(canBePrefix: boolean): Interest; + getMustBeFresh(): boolean; + setMustBeFresh(mustBeFresh: boolean): Interest; + getForwardingHint(): DelegationSet; + setForwardingHint(fh: DelegationSet): Interest; + getNonce(): Blob; + refreshNonce(): void; + getInterestLifetimeMilliseconds(): number; + setInterestLifetimeMilliseconds(lifetime: number): Interest; + + // algorithms + matchesData(data: Data): boolean; + matchesName(name: Name): boolean; + + // encoding + wireEncode(): Blob; + wireDecode(input: BlobLike): void; +} diff --git a/types/ndn-js/name.d.ts b/types/ndn-js/name.d.ts index 8d0334f7a9..b4eea8064a 100644 --- a/types/ndn-js/name.d.ts +++ b/types/ndn-js/name.d.ts @@ -59,10 +59,10 @@ export namespace Name { } } +export type NameCtor = string|Name|Array; + export class Name { - constructor(uri?: string); - constructor(name: Name); - constructor(components: Array); + constructor(arg?: NameCtor); // accessors set(uri: string): void; diff --git a/types/ndn-js/ndn-js-tests.ts b/types/ndn-js/ndn-js-tests.ts index a617509bb1..005aad2d4d 100644 --- a/types/ndn-js/ndn-js-tests.ts +++ b/types/ndn-js/ndn-js-tests.ts @@ -107,6 +107,26 @@ function testName() { name = ndn.Name.fromEscapedString(s); } +function testInterest() { + let interest = new ndn.Interest(); + interest = new ndn.Interest("/A"); + interest = new ndn.Interest(interest); + + const name: ndn.Name = interest.setName("/B").getName(); + let b: boolean = interest.setCanBePrefix(false).getCanBePrefix(); + b = interest.setMustBeFresh(true).getMustBeFresh(); + const fh: any = interest.setForwardingHint({}).getMustBeFresh(); + let blob: ndn.Blob = interest.getNonce(); + interest.refreshNonce(); + const n: number = interest.setInterestLifetimeMilliseconds(8888).getInterestLifetimeMilliseconds(); + + b = interest.matchesData({}); + b = interest.matchesName(name); + + blob = name.wireEncode(); + name.wireDecode(blob); +} + function testFaceTransport() { let face = new ndn.Face(); face = new ndn.Face({host: 'hobo.cs.arizona.edu', port: 6363}); From 9462ec2b57cec752e1929f0a086c9f6580ada091 Mon Sep 17 00:00:00 2001 From: Junxiao Shi Date: Sat, 20 Oct 2018 20:38:32 -0400 Subject: [PATCH 05/20] ndn-js: Data and Signature --- types/ndn-js/data.d.ts | 48 +++++++++++++++++++++++++- types/ndn-js/index.d.ts | 2 ++ types/ndn-js/interest.d.ts | 2 +- types/ndn-js/name.d.ts | 15 ++++---- types/ndn-js/ndn-js-tests.ts | 34 ++++++++++++++++++- types/ndn-js/signature.d.ts | 66 ++++++++++++++++++++++++++++++++++++ 6 files changed, 157 insertions(+), 10 deletions(-) create mode 100644 types/ndn-js/signature.d.ts diff --git a/types/ndn-js/data.d.ts b/types/ndn-js/data.d.ts index 9c1b2d5e22..3682d055ff 100644 --- a/types/ndn-js/data.d.ts +++ b/types/ndn-js/data.d.ts @@ -1 +1,47 @@ -export type Data = any; +import { Blob, BlobLike } from "./blob"; +import { NameCtor, Name } from "./name"; +import { Signature } from "./signature"; + +export class Data { + constructor(name?: NameCtor, content?: BlobLike); + constructor(name: NameCtor, metaInfo: MetaInfo, content: Buffer); + constructor(data: Data); + + // accessors + getName(): Name; + setName(name: NameCtor): Data; + getMetaInfo(): MetaInfo; + setMetaInfo(meta: MetaInfo): Data; + getContent(): Blob; + setContent(content: BlobLike): Data; + getSignature(): Signature; + setSignature(sig: Signature): Data; + + // algorithms + getFullName(): Name; + + // encoding + wireEncode(): Blob; + wireDecode(input: BlobLike): void; +} + +export enum ContentType { + BLOB = 0, + LINK = 1, + KEY = 2, + NACK = 3, + OTHER_CODE = 0x7fff, +} + +export class MetaInfo { + constructor(meta?: MetaInfo); + + getType(): ContentType; + setType(type: ContentType|null): void; + getOtherTypeCode(): number; + setOtherTypeCode(otherTypeCode: number): void; + getFreshnessPeriod(): number; + setFreshnessPeriod(freshness: number): void; + getFinalBlockId(): Name.Component; + setFinalBlockId(comp: Name.ComponentCtor): void; +} diff --git a/types/ndn-js/index.d.ts b/types/ndn-js/index.d.ts index 7646134cb6..ebd46601ba 100644 --- a/types/ndn-js/index.d.ts +++ b/types/ndn-js/index.d.ts @@ -1,6 +1,8 @@ export as namespace ndn; export * from "./blob"; +export * from "./data"; export * from "./face"; export * from "./interest"; export * from "./name"; +export * from "./signature"; export * from "./transport"; diff --git a/types/ndn-js/interest.d.ts b/types/ndn-js/interest.d.ts index 94f826dc6a..fd20be4492 100644 --- a/types/ndn-js/interest.d.ts +++ b/types/ndn-js/interest.d.ts @@ -7,7 +7,7 @@ export class Interest { constructor(name?: NameCtor); constructor(interest: Interest); - // field accessors + // accessors getName(): Name; setName(name: NameCtor): Interest; getCanBePrefix(): boolean; diff --git a/types/ndn-js/name.d.ts b/types/ndn-js/name.d.ts index b4eea8064a..9a72d7020b 100644 --- a/types/ndn-js/name.d.ts +++ b/types/ndn-js/name.d.ts @@ -1,7 +1,7 @@ import { Blob, BlobLike } from "./blob"; export namespace Name { - type ComponentCtorValue = string|number[]|ArrayBuffer|Buffer; + type ComponentCtor = string|number[]|ArrayBuffer|Buffer; type CompareResult = -1|0|1; enum ComponentType { @@ -14,8 +14,8 @@ export namespace Name { class Component { constructor(); constructor(comp: Component); - constructor(value: ComponentCtorValue, type?: ComponentType); - constructor(value: ComponentCtorValue, type: ComponentType.OTHER_CODE, otherTypeCode: number); + constructor(value: ComponentCtor, type?: ComponentType); + constructor(value: ComponentCtor, type: ComponentType.OTHER_CODE, otherTypeCode: number); // accessors getType(): ComponentType; @@ -59,10 +59,11 @@ export namespace Name { } } -export type NameCtor = string|Name|Array; +export type NameCtor = string|Name; export class Name { - constructor(arg?: NameCtor); + constructor(name?: NameCtor); + constructor(components: Array); // accessors set(uri: string): void; @@ -75,8 +76,8 @@ export class Name { // append append(component: Name.Component): Name; append(component: Name): Name; - append(value: Name.ComponentCtorValue, type?: Name.ComponentType): Name; - append(value: Name.ComponentCtorValue, type: Name.ComponentType.OTHER_CODE, otherTypeCode: number): Name; + append(value: Name.ComponentCtor, type?: Name.ComponentType): Name; + append(value: Name.ComponentCtor, type: Name.ComponentType.OTHER_CODE, otherTypeCode: number): Name; appendSegment(segment: number): Name; appendSegmentOffset(segmentOffset: number): Name; appendVersion(version: number): Name; diff --git a/types/ndn-js/ndn-js-tests.ts b/types/ndn-js/ndn-js-tests.ts index 005aad2d4d..eaade07186 100644 --- a/types/ndn-js/ndn-js-tests.ts +++ b/types/ndn-js/ndn-js-tests.ts @@ -120,13 +120,45 @@ function testInterest() { interest.refreshNonce(); const n: number = interest.setInterestLifetimeMilliseconds(8888).getInterestLifetimeMilliseconds(); - b = interest.matchesData({}); + b = interest.matchesData(new ndn.Data()); b = interest.matchesName(name); blob = name.wireEncode(); name.wireDecode(blob); } +function testData() { + let meta = new ndn.MetaInfo(); + meta = new ndn.MetaInfo(meta); + let n: number = meta.getType(); + meta.setType(ndn.ContentType.OTHER_CODE); + n = meta.getOtherTypeCode(); + meta.setOtherTypeCode(25); + n = meta.getFreshnessPeriod(); + meta.setFreshnessPeriod(5000); + const comp: ndn.Name.Component = meta.getFinalBlockId(); + meta.setFinalBlockId("A"); + + let sig: ndn.Signature = new ndn.DigestSha256Signature(); + sig = new ndn.GenericSignature(); + sig = new ndn.Sha256WithRsaSignature(); + sig = new ndn.Sha256WithEcdsaSignature(); + + let data = new ndn.Data(); + data = new ndn.Data("/A"); + data = new ndn.Data("/A", new ndn.Blob()); + data = new ndn.Data("/A", meta, Buffer.alloc(4)); + + let name: ndn.Name = data.setName("/B").getName(); + meta = data.setMetaInfo(meta).getMetaInfo(); + let blob: ndn.Blob = data.setContent(Buffer.alloc(4)).getContent(); + sig = data.setSignature(sig).getSignature(); + + name = data.getFullName(); + blob = data.wireEncode(); + data.wireDecode(blob); +} + function testFaceTransport() { let face = new ndn.Face(); face = new ndn.Face({host: 'hobo.cs.arizona.edu', port: 6363}); diff --git a/types/ndn-js/signature.d.ts b/types/ndn-js/signature.d.ts new file mode 100644 index 0000000000..72ce443b41 --- /dev/null +++ b/types/ndn-js/signature.d.ts @@ -0,0 +1,66 @@ +import { Blob, BlobLike } from "./blob"; +import { Name } from "./name"; + +export enum KeyLocatorType { + KEYNAME = 1, + KEY_LOCATOR_DIGEST = 2, +} + +export class KeyLocator { + constructor(kl?: KeyLocator); + + getKeyData(): Blob; + getKeyName(): Name; + getType(): KeyLocatorType; + + setKeyData(keyData: Blob): void; + setKeyName(name: Name): void; + setType(type: KeyLocatorType): void; + + clear(): void; +} + +export type ValidityPeriod = any; + +export interface Signature { + clone(): Signature; +} + +export class SignatureBase implements Signature { + constructor(); + clone(): T; + + getSignature(): Blob; + setSignature(sigValue: BlobLike): void; +} + +export class SignatureBaseKl extends SignatureBase { + getKeyLocator(): KeyLocator; + setKeyLocator(kl?: KeyLocator): void; +} + +export class SignatureBaseKlVp extends SignatureBaseKl { + getValidityPeriod(): ValidityPeriod; + setValidityPeriod(validity?: ValidityPeriod): void; +} + +export class DigestSha256Signature extends SignatureBase { +} + +export class GenericSignature extends SignatureBase { + constructor(); + clone(): GenericSignature; + + getTypeCode(): number; + getSignatureInfoEncoding(): Blob; + setSignatureInfoEncoding(encoding: Blob, typeCode?: number): void; +} + +export class Sha256WithRsaSignature extends SignatureBaseKlVp { +} + +export class Sha256WithEcdsaSignature extends SignatureBaseKlVp { +} + +export class HmacWithSha25Signature extends SignatureBaseKl { +} From 06035ab117bbf00921ee821851a2a3b6a7447b39 Mon Sep 17 00:00:00 2001 From: Junxiao Shi Date: Sat, 20 Oct 2018 21:53:32 -0400 Subject: [PATCH 06/20] ndn-js: follow ndn-ccl-api and split tests --- types/ndn-js/blob-test.ts | 20 ++++ types/ndn-js/blob.d.ts | 12 +-- types/ndn-js/data-test.ts | 34 +++++++ types/ndn-js/data.d.ts | 44 +++++---- types/ndn-js/face-test.ts | 3 + types/ndn-js/index.d.ts | 1 + types/ndn-js/interest-test.ts | 28 ++++++ types/ndn-js/interest.d.ts | 30 +++--- types/ndn-js/name-test.ts | 82 ++++++++++++++++ types/ndn-js/name.d.ts | 128 +++++++++++-------------- types/ndn-js/ndn-js-tests.ts | 168 --------------------------------- types/ndn-js/signature-test.ts | 60 ++++++++++++ types/ndn-js/signature.d.ts | 11 +-- types/ndn-js/transport-test.ts | 6 ++ types/ndn-js/tsconfig.json | 8 +- 15 files changed, 341 insertions(+), 294 deletions(-) create mode 100644 types/ndn-js/blob-test.ts create mode 100644 types/ndn-js/data-test.ts create mode 100644 types/ndn-js/face-test.ts create mode 100644 types/ndn-js/interest-test.ts create mode 100644 types/ndn-js/name-test.ts delete mode 100644 types/ndn-js/ndn-js-tests.ts create mode 100644 types/ndn-js/signature-test.ts create mode 100644 types/ndn-js/transport-test.ts diff --git a/types/ndn-js/blob-test.ts b/types/ndn-js/blob-test.ts new file mode 100644 index 0000000000..b5540b831b --- /dev/null +++ b/types/ndn-js/blob-test.ts @@ -0,0 +1,20 @@ +/// +import ndn = require("ndn-js"); + +let blob = new ndn.Blob(); +blob = new ndn.Blob(blob); +blob = new ndn.Blob(Buffer.alloc(4)); +blob = new ndn.Blob([0x08, 0x01, 0x41]); +blob = new ndn.Blob("str"); + +let buf: Buffer = blob.buf(); +let b: boolean = blob.equals(blob); +b = blob.isNull(); +let n: number = blob.size(); + +let sb = new ndn.SignedBlob(); +sb = new ndn.SignedBlob(blob, 20, 40); +n = sb.getSignedPortionBeginOffset(); +n = sb.getSignedPortionEndOffset(); +buf = sb.signedBuf(); +n = sb.signedSize(); diff --git a/types/ndn-js/blob.d.ts b/types/ndn-js/blob.d.ts index 562f05cda5..eaaabb9dda 100644 --- a/types/ndn-js/blob.d.ts +++ b/types/ndn-js/blob.d.ts @@ -1,25 +1,21 @@ -export type BlobLike = Blob|Buffer; - export class Blob { constructor(value?: Blob); constructor(value: Buffer, copy?: boolean); constructor(value: number[]); constructor(value: string); - size(): number; buf(): Buffer; - isNull(): boolean; - toHex(): string; - toString(): string; equals(other: Blob): boolean; + isNull(): boolean; + size(): number; } export class SignedBlob extends Blob { constructor(); constructor(value: Blob|Buffer|number[], signedPortionBeginOffset: number, signedPortionEndOffset: number); - signedSize(): number; - signedBuf(): Buffer; getSignedPortionBeginOffset(): number; getSignedPortionEndOffset(): number; + signedBuf(): Buffer; + signedSize(): number; } diff --git a/types/ndn-js/data-test.ts b/types/ndn-js/data-test.ts new file mode 100644 index 0000000000..feea541a19 --- /dev/null +++ b/types/ndn-js/data-test.ts @@ -0,0 +1,34 @@ +/// +import ndn = require("ndn-js"); + +let meta = new ndn.MetaInfo(); +meta = new ndn.MetaInfo(meta); +const comp: ndn.Name.Component = meta.getFinalBlockId(); +let n: number = meta.getFreshnessPeriod(); +n = meta.getOtherTypeCode(); +const ct: ndn.ContentType = meta.getType(); + +meta.setFinalBlockId(comp); +meta.setFreshnessPeriod(5000); +meta.setOtherTypeCode(1000); +meta.setType(ndn.ContentType.OTHER_CODE); + +let data = new ndn.Data(); +data = new ndn.Data(new ndn.Name("/A")); + +n = data.getCongestionMark(); +let blob: ndn.Blob = data.getContent(); +let name: ndn.Name = data.getName(); +n = data.getIncomingFaceId(); +meta = data.getMetaInfo(); +name = data.getName(); +const sig: ndn.Signature = data.getSignature(); + +data = data.setContent(blob) + .setMetaInfo(meta) + .setName(name) + .setSignature(sig); + +data.wireDecode(blob); +data.wireDecode(Buffer.alloc(4)); +blob = data.wireEncode(); diff --git a/types/ndn-js/data.d.ts b/types/ndn-js/data.d.ts index 3682d055ff..d76dd02779 100644 --- a/types/ndn-js/data.d.ts +++ b/types/ndn-js/data.d.ts @@ -1,28 +1,25 @@ -import { Blob, BlobLike } from "./blob"; -import { NameCtor, Name } from "./name"; +import { Blob } from "./blob"; +import { Name } from "./name"; import { Signature } from "./signature"; export class Data { - constructor(name?: NameCtor, content?: BlobLike); - constructor(name: NameCtor, metaInfo: MetaInfo, content: Buffer); - constructor(data: Data); + constructor(name?: Name); - // accessors - getName(): Name; - setName(name: NameCtor): Data; - getMetaInfo(): MetaInfo; - setMetaInfo(meta: MetaInfo): Data; + getCongestionMark(): number; getContent(): Blob; - setContent(content: BlobLike): Data; + getFullName(): Name; + getIncomingFaceId(): number; + getMetaInfo(): MetaInfo; + getName(): Name; getSignature(): Signature; + + setContent(content: Blob): Data; + setMetaInfo(meta: MetaInfo): Data; + setName(name: Name): Data; setSignature(sig: Signature): Data; - // algorithms - getFullName(): Name; - - // encoding + wireDecode(input: Blob|Buffer): void; wireEncode(): Blob; - wireDecode(input: BlobLike): void; } export enum ContentType { @@ -36,12 +33,13 @@ export enum ContentType { export class MetaInfo { constructor(meta?: MetaInfo); - getType(): ContentType; - setType(type: ContentType|null): void; - getOtherTypeCode(): number; - setOtherTypeCode(otherTypeCode: number): void; - getFreshnessPeriod(): number; - setFreshnessPeriod(freshness: number): void; getFinalBlockId(): Name.Component; - setFinalBlockId(comp: Name.ComponentCtor): void; + getFreshnessPeriod(): number; + getOtherTypeCode(): number; + getType(): ContentType; + + setFinalBlockId(comp: Name.Component): void; + setFreshnessPeriod(freshness: number): void; + setOtherTypeCode(otherTypeCode: number): void; + setType(type: ContentType): void; } diff --git a/types/ndn-js/face-test.ts b/types/ndn-js/face-test.ts new file mode 100644 index 0000000000..f2afe7bed1 --- /dev/null +++ b/types/ndn-js/face-test.ts @@ -0,0 +1,3 @@ +import ndn = require("ndn-js"); + +const face = new ndn.Face(); diff --git a/types/ndn-js/index.d.ts b/types/ndn-js/index.d.ts index ebd46601ba..d6c46c551b 100644 --- a/types/ndn-js/index.d.ts +++ b/types/ndn-js/index.d.ts @@ -1,6 +1,7 @@ export as namespace ndn; export * from "./blob"; export * from "./data"; +export * from "./delegation-set"; export * from "./face"; export * from "./interest"; export * from "./name"; diff --git a/types/ndn-js/interest-test.ts b/types/ndn-js/interest-test.ts new file mode 100644 index 0000000000..9f964fd2ed --- /dev/null +++ b/types/ndn-js/interest-test.ts @@ -0,0 +1,28 @@ +/// +import ndn = require("ndn-js"); + +let interest = new ndn.Interest(); +interest = new ndn.Interest(new ndn.Name("/A")); +interest = new ndn.Interest(interest); + +let b: boolean = interest.getCanBePrefix(); +const fh: ndn.DelegationSet = interest.getForwardingHint(); +let n: number = interest.getIncomingFaceId(); +n = interest.getInterestLifetimeMilliseconds(); +b = interest.getMustBeFresh(); +const name: ndn.Name = interest.getName(); +let blob: ndn.Blob = interest.getNonce(); + +interest = interest.setCanBePrefix(true) + .setForwardingHint(fh) + .setInterestLifetimeMilliseconds(2000) + .setMustBeFresh(true) + .setName(name); + +b = interest.matchesData(new ndn.Data()); +b = interest.matchesName(name); +interest.refreshNonce(); + +interest.wireDecode(blob); +interest.wireDecode(Buffer.alloc(4)); +blob = interest.wireEncode(); diff --git a/types/ndn-js/interest.d.ts b/types/ndn-js/interest.d.ts index fd20be4492..f3b5bc88b4 100644 --- a/types/ndn-js/interest.d.ts +++ b/types/ndn-js/interest.d.ts @@ -1,31 +1,29 @@ -import { Blob, BlobLike } from "./blob"; +import { Blob } from "./blob"; import { Data } from "./data"; import { DelegationSet } from "./delegation-set"; -import { Name, NameCtor } from "./name"; +import { Name } from "./name"; export class Interest { - constructor(name?: NameCtor); + constructor(name?: Name); constructor(interest: Interest); - // accessors - getName(): Name; - setName(name: NameCtor): Interest; getCanBePrefix(): boolean; - setCanBePrefix(canBePrefix: boolean): Interest; - getMustBeFresh(): boolean; - setMustBeFresh(mustBeFresh: boolean): Interest; getForwardingHint(): DelegationSet; - setForwardingHint(fh: DelegationSet): Interest; - getNonce(): Blob; - refreshNonce(): void; + getIncomingFaceId(): number; getInterestLifetimeMilliseconds(): number; + getMustBeFresh(): boolean; + getName(): Name; + getNonce(): Blob; + + setCanBePrefix(canBePrefix: boolean): Interest; + setForwardingHint(fh: DelegationSet): Interest; setInterestLifetimeMilliseconds(lifetime: number): Interest; + setMustBeFresh(mustBeFresh: boolean): Interest; + setName(name: Name): Interest; - // algorithms matchesData(data: Data): boolean; matchesName(name: Name): boolean; - - // encoding + refreshNonce(): void; + wireDecode(input: Blob|Buffer): void; wireEncode(): Blob; - wireDecode(input: BlobLike): void; } diff --git a/types/ndn-js/name-test.ts b/types/ndn-js/name-test.ts new file mode 100644 index 0000000000..beb7e3c26c --- /dev/null +++ b/types/ndn-js/name-test.ts @@ -0,0 +1,82 @@ +/// +import ndn = require("ndn-js"); + +const DIGEST = new ndn.Blob(Buffer.alloc(32)); + +let comp = new ndn.Name.Component(); +comp = new ndn.Name.Component([0x41]); +comp = new ndn.Name.Component(new ArrayBuffer(4), ndn.ComponentType.GENERIC); +comp = new ndn.Name.Component(Buffer.alloc(4), ndn.ComponentType.OTHER_CODE, 1000); +comp = new ndn.Name.Component(new Uint8Array(4)); +comp = new ndn.Name.Component("A"); +comp = new ndn.Name.Component(new ndn.Blob()); +comp = new ndn.Name.Component(comp); + +let n: number = comp.compare(comp); +let b: boolean = comp.equals(comp); +comp = ndn.Name.Component.fromImplicitSha256Digest(DIGEST); +comp = ndn.Name.Component.fromParametersSha256Digest(DIGEST); +n = comp.getOtherTypeCode(); +comp = comp.getSuccessor(); +const ct: ndn.ComponentType = comp.getType(); +let blob: ndn.Blob = comp.getValue(); +b = comp.isGeneric(); +b = comp.isImplicitSha256Digest(); +b = comp.isParametersSha256Digest(); +let s: string = comp.toEscapedString(); + +comp = ndn.Name.Component.fromNumber(200); +comp = ndn.Name.Component.fromNumber(200, ndn.ComponentType.OTHER_CODE, 1000); +comp = ndn.Name.Component.fromNumberWithMarker(200, 0xFD); +comp = ndn.Name.Component.fromSegment(0); +comp = ndn.Name.Component.fromSegmentOffset(0); +comp = ndn.Name.Component.fromSequenceNumber(1); +comp = ndn.Name.Component.fromTimestamp(123456789); +comp = ndn.Name.Component.fromVersion(4); + +b = comp.isSegment(); +b = comp.isSegmentOffset(); +b = comp.isSequenceNumber(); +b = comp.isTimestamp(); +b = comp.isVersion(); + +n = comp.toNumber(); +n = comp.toNumberWithMarker(0xFD); +n = comp.toSegment(); +n = comp.toSegmentOffset(); +n = comp.toSequenceNumber(); +n = comp.toTimestamp(); +n = comp.toVersion(); + +let name = new ndn.Name(); +name = new ndn.Name([new ndn.Name.Component("A"), new Uint8Array(2)]); +name = new ndn.Name("/A"); +name = new ndn.Name(name); + +name = name.append(ndn.Name.Component.fromSegment(4)) + .append("A", ndn.ComponentType.OTHER_CODE, 1000) + .appendImplicitSha256Digest(DIGEST) + .appendParametersSha256Digest(DIGEST) + .appendSegment(0) + .appendSegmentOffset(1) + .appendSequenceNumber(4) + .appendTimestamp(3) + .appendVersion(2); + +name.clear(); +n = name.compare(name); +n = name.compare(0, 2, name, 1, 3); +b = name.equals(name); +name = ndn.Name.fromEscapedString(s); +comp = name.get(2); +name = name.getPrefix(3); +name = name.getSubName(1).getSubName(1, 4); +name = name.getSuccessor(); +b = name.match(name); +name.set("/B"); +n = name.size(); +s = name.toUri(); +s = name.toUri(true); +name.wireDecode(blob); +name.wireDecode(Buffer.alloc(4)); +blob = name.wireEncode(); diff --git a/types/ndn-js/name.d.ts b/types/ndn-js/name.d.ts index 9a72d7020b..5519b28a9a 100644 --- a/types/ndn-js/name.d.ts +++ b/types/ndn-js/name.d.ts @@ -1,103 +1,89 @@ -import { Blob, BlobLike } from "./blob"; +import { Blob } from "./blob"; + +export enum ComponentType { + IMPLICIT_SHA256_DIGEST = 1, + PARAMETERS_SHA256_DIGEST = 2, + GENERIC = 8, + OTHER_CODE = 0x7fff, +} + +export type CompareResult = -1|0|1; export namespace Name { - type ComponentCtor = string|number[]|ArrayBuffer|Buffer; - type CompareResult = -1|0|1; - - enum ComponentType { - IMPLICIT_SHA256_DIGEST = 1, - PARAMETERS_SHA256_DIGEST = 2, - GENERIC = 8, - OTHER_CODE = 0x7fff, - } - class Component { - constructor(); - constructor(comp: Component); - constructor(value: ComponentCtor, type?: ComponentType); - constructor(value: ComponentCtor, type: ComponentType.OTHER_CODE, otherTypeCode: number); + constructor(value?: number[]|ArrayBuffer|Uint8Array|string|Blob, type?: ComponentType, otherTypeCode?: number); + constructor(component: Component); - // accessors - getType(): ComponentType; - getOtherTypeCode(): number; - getValue(): Blob; - toEscapedString(): string; - - // algorithms - getSuccessor(): Component; - equals(other: Component): boolean; compare(other: Component): CompareResult; - - // digest types + equals(other: Component): boolean; + static fromImplicitSha256Digest(digest: Blob): Component; + static fromParametersSha256Digest(digest: Blob): Component; + getOtherTypeCode(): number; + getSuccessor(): Component; + getType(): ComponentType; + getValue(): Blob; + isGeneric(): boolean; isImplicitSha256Digest(): boolean; isParametersSha256Digest(): boolean; - static fromImplicitSha256Digest(digest: BlobLike): Component; - static fromParametersSha256Digest(digest: BlobLike): Component; + toEscapedString(): string; + + static fromNumber(number: number, type?: ComponentType, otherTypeCode?: number): Component; + static fromNumberWithMarker(number: number, marker: number): Component; + static fromSegment(segment: number): Component; + static fromSegmentOffset(segmentOffset: number): Component; + static fromSequenceNumber(sequenceNumber: number): Component; + static fromTimestamp(timestamp: number): Component; + static fromVersion(version: number): Component; - // naming conventions isSegment(): boolean; isSegmentOffset(): boolean; - isVersion(): boolean; - isTimestamp(): boolean; isSequenceNumber(): boolean; - isGeneric(): boolean; + isTimestamp(): boolean; + isVersion(): boolean; + toNumber(): number; toNumberWithMarker(marker: number): number; toSegment(): number; toSegmentOffset(): number; - toVersion(): number; - toTimestamp(): number; toSequenceNumber(): number; - static fromNumber(number: number, type?: ComponentType): Component; - static fromNumber(number: number, type: ComponentType.OTHER_CODE, otherTypeCode: number): Component; - static fromNumberWithMarker(number: number, marker: number): Component; - static fromSegment(segment: number): Component; - static fromSegmentOffset(segmentOffset: number): Component; - static fromVersion(version: number): Component; - static fromTimestamp(timestamp: number): Component; - static fromSequenceNumber(sequenceNumber: number): Component; + toTimestamp(): number; + toVersion(): number; } } -export type NameCtor = string|Name; - export class Name { - constructor(name?: NameCtor); - constructor(components: Array); + constructor(components?: Array); + constructor(uri: string); + constructor(name: Name); - // accessors - set(uri: string): void; - clear(): void; - getSubName(iStartComponent: number, nComponents?: number): Name; - getPrefix(nComponents: number): Name; - size(): number; - get(i: number): Name.Component; - - // append + append(value: number[]|ArrayBuffer|Uint8Array|string|Blob, type?: ComponentType, otherTypeCode?: number): Name; append(component: Name.Component): Name; - append(component: Name): Name; - append(value: Name.ComponentCtor, type?: Name.ComponentType): Name; - append(value: Name.ComponentCtor, type: Name.ComponentType.OTHER_CODE, otherTypeCode: number): Name; + append(name: Name): Name; + appendImplicitSha256Digest(digest: Blob): Name; + appendParametersSha256Digest(digest: Blob): Name; appendSegment(segment: number): Name; appendSegmentOffset(segmentOffset: number): Name; - appendVersion(version: number): Name; - appendTimestamp(timestamp: number): Name; appendSequenceNumber(sequenceNumber: number): Name; - appendImplicitSha256Digest(digest: BlobLike): Name; - appendParametersSha256Digest(digest: BlobLike): Name; + appendTimestamp(timestamp: number): Name; + appendVersion(version: number): Name; - // algorithms - compare(other: Name): Name.CompareResult; + clear(): void; + + compare(other: Name): CompareResult; compare(iStartComponent: number, nComponents: number, other: Name, - iOtherStartComponent?: number, nOtherComponents?: number): Name.CompareResult; + iOtherStartComponent?: number, nOtherComponents?: number): CompareResult; + equals(other: Name): boolean; + static fromEscapedString(uri: string): Name; + get(i: number): Name.Component; + getPrefix(nComponents: number): Name; + getSubName(iStartComponent: number, nComponents?: number): Name; getSuccessor(): Name; match(name: Name): boolean; - isPrefixOf(name: Name): boolean; - - // encoding - wireEncode(): Blob; - wireDecode(input: BlobLike): void; + set(uri: string): void; + size(): number; toUri(includeScheme?: boolean): string; - static fromEscapedString(uri: string): Name; + + wireDecode(input: Blob|Buffer): void; + wireEncode(): Blob; } diff --git a/types/ndn-js/ndn-js-tests.ts b/types/ndn-js/ndn-js-tests.ts deleted file mode 100644 index eaade07186..0000000000 --- a/types/ndn-js/ndn-js-tests.ts +++ /dev/null @@ -1,168 +0,0 @@ -/// -import ndn = require("ndn-js"); - -function testBlob() { - let blob = new ndn.Blob(); - blob = new ndn.Blob(blob); - blob = new ndn.Blob(Buffer.alloc(4)); - blob = new ndn.Blob([0x08, 0x01, 0x41]); - blob = new ndn.Blob("str"); - - let n: number = blob.size(); - let buf: Buffer = blob.buf(); - let b: boolean = blob.equals(blob); - let s: string = blob.toHex(); - s = blob.toString(); - b = blob.isNull(); - - let sb = new ndn.SignedBlob(); - sb = new ndn.SignedBlob(sb, 20, 40); - n = sb.signedSize(); - buf = sb.signedBuf(); - n = sb.getSignedPortionBeginOffset(); - n = sb.getSignedPortionEndOffset(); -} - -function testName() { - const digestBlob = new ndn.Blob([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]); - - let comp = new ndn.Name.Component(); - comp = new ndn.Name.Component(comp); - comp = new ndn.Name.Component("A"); - comp = new ndn.Name.Component([0x41], ndn.Name.ComponentType.GENERIC); - comp = new ndn.Name.Component([0x41], ndn.Name.ComponentType.OTHER_CODE, 1000); - - let blob: ndn.Blob = comp.getValue(); - const ct: ndn.Name.ComponentType = comp.getType(); - let n: number = comp.getOtherTypeCode(); - let s: string = comp.toEscapedString(); - - comp = comp.getSuccessor(); - let b: boolean = comp.equals(comp); - n = comp.compare(comp); - - b = comp.isImplicitSha256Digest(); - b = comp.isParametersSha256Digest(); - comp = ndn.Name.Component.fromImplicitSha256Digest(digestBlob); - comp = ndn.Name.Component.fromParametersSha256Digest(Buffer.alloc(32)); - - b = comp.isSegment(); - b = comp.isSegmentOffset(); - b = comp.isVersion(); - b = comp.isTimestamp(); - b = comp.isSequenceNumber(); - b = comp.isGeneric(); - - n = comp.toNumber(); - n = comp.toNumberWithMarker(0xFD); - n = comp.toSegment(); - n = comp.toSegmentOffset(); - n = comp.toVersion(); - n = comp.toTimestamp(); - n = comp.toSequenceNumber(); - - comp = ndn.Name.Component.fromNumber(200); - comp = ndn.Name.Component.fromNumber(200, ndn.Name.ComponentType.OTHER_CODE, 1000); - comp = ndn.Name.Component.fromNumberWithMarker(200, 0xFD); - comp = ndn.Name.Component.fromSegment(0); - comp = ndn.Name.Component.fromSegmentOffset(0); - comp = ndn.Name.Component.fromVersion(4); - comp = ndn.Name.Component.fromTimestamp(123456789); - comp = ndn.Name.Component.fromSequenceNumber(1); - - let name = new ndn.Name(); - name = new ndn.Name("/A"); - name = new ndn.Name(name); - name = new ndn.Name(["A", Buffer.from([0x42]), name]); - - name.set("/B"); - name.clear(); - name = name.getSubName(1) - .getSubName(1, 4) - .getPrefix(3); - n = name.size(); - comp = name.get(2); - - name = name.append(ndn.Name.Component.fromSegment(4)) - .append("A", ndn.Name.ComponentType.OTHER_CODE, 1000) - .appendSegment(0) - .appendSegmentOffset(1) - .appendVersion(2) - .appendTimestamp(3) - .appendSequenceNumber(4) - .appendImplicitSha256Digest(digestBlob) - .appendParametersSha256Digest(Buffer.alloc(32)); - - n = name.compare(name); - n = name.compare(0, 2, name, 1, 3); - b = name.equals(name); - name = name.getSuccessor(); - b = name.match(name); - b = name.isPrefixOf(name); - - blob = name.wireEncode(); - name.wireDecode(blob); - s = name.toUri(); - name = ndn.Name.fromEscapedString(s); -} - -function testInterest() { - let interest = new ndn.Interest(); - interest = new ndn.Interest("/A"); - interest = new ndn.Interest(interest); - - const name: ndn.Name = interest.setName("/B").getName(); - let b: boolean = interest.setCanBePrefix(false).getCanBePrefix(); - b = interest.setMustBeFresh(true).getMustBeFresh(); - const fh: any = interest.setForwardingHint({}).getMustBeFresh(); - let blob: ndn.Blob = interest.getNonce(); - interest.refreshNonce(); - const n: number = interest.setInterestLifetimeMilliseconds(8888).getInterestLifetimeMilliseconds(); - - b = interest.matchesData(new ndn.Data()); - b = interest.matchesName(name); - - blob = name.wireEncode(); - name.wireDecode(blob); -} - -function testData() { - let meta = new ndn.MetaInfo(); - meta = new ndn.MetaInfo(meta); - let n: number = meta.getType(); - meta.setType(ndn.ContentType.OTHER_CODE); - n = meta.getOtherTypeCode(); - meta.setOtherTypeCode(25); - n = meta.getFreshnessPeriod(); - meta.setFreshnessPeriod(5000); - const comp: ndn.Name.Component = meta.getFinalBlockId(); - meta.setFinalBlockId("A"); - - let sig: ndn.Signature = new ndn.DigestSha256Signature(); - sig = new ndn.GenericSignature(); - sig = new ndn.Sha256WithRsaSignature(); - sig = new ndn.Sha256WithEcdsaSignature(); - - let data = new ndn.Data(); - data = new ndn.Data("/A"); - data = new ndn.Data("/A", new ndn.Blob()); - data = new ndn.Data("/A", meta, Buffer.alloc(4)); - - let name: ndn.Name = data.setName("/B").getName(); - meta = data.setMetaInfo(meta).getMetaInfo(); - let blob: ndn.Blob = data.setContent(Buffer.alloc(4)).getContent(); - sig = data.setSignature(sig).getSignature(); - - name = data.getFullName(); - blob = data.wireEncode(); - data.wireDecode(blob); -} - -function testFaceTransport() { - let face = new ndn.Face(); - face = new ndn.Face({host: 'hobo.cs.arizona.edu', port: 6363}); - face = new ndn.Face(new ndn.TcpTransport(), new ndn.TcpTransport.ConnectionInfo("hobo.cs.arizona.edu", 9696)); - face = new ndn.Face(new ndn.UnixTransport(), new ndn.UnixTransport.ConnectionInfo("/run/nfd.sock")); - face = new ndn.Face(new ndn.WebSocketTransport(), new ndn.WebSocketTransport.ConnectionInfo("hobo.cs.arizona.edu", 9696)); -} diff --git a/types/ndn-js/signature-test.ts b/types/ndn-js/signature-test.ts new file mode 100644 index 0000000000..026edf9556 --- /dev/null +++ b/types/ndn-js/signature-test.ts @@ -0,0 +1,60 @@ +import ndn = require("ndn-js"); + +let kl: ndn.KeyLocator = new ndn.KeyLocator(); +kl = new ndn.KeyLocator(kl); + +let blob: ndn.Blob = kl.getKeyData(); +const name: ndn.Name = kl.getKeyName(); +const klt: ndn.KeyLocatorType = kl.getType(); + +kl.setKeyData(blob); +kl.setKeyName(name); +kl.setType(ndn.KeyLocatorType.KEY_LOCATOR_DIGEST); + +kl.clear(); + +let validity: ndn.ValidityPeriod; + +let sig0 = new ndn.DigestSha256Signature(); +blob = sig0.getSignature(); +sig0.setSignature(blob); +sig0 = sig0.clone(); +let sig: ndn.Signature = sig0; + +let sigG = new ndn.GenericSignature(); +blob = sigG.getSignature(); +blob = sigG.getSignatureInfoEncoding(); +const n: number = sigG.getTypeCode(); +sigG.setSignature(blob); +sigG.setSignatureInfoEncoding(blob); +sigG.setSignatureInfoEncoding(blob, 1000); +sigG = sigG.clone(); +sig = sigG; + +let sig1 = new ndn.Sha256WithRsaSignature(); +kl = sig1.getKeyLocator(); +blob = sig1.getSignature(); +validity = sig1.getValidityPeriod(); +sig1.setKeyLocator(kl); +sig1.setSignature(blob); +sig1.setValidityPeriod(validity); +sig1 = sig1.clone(); +sig = sig1; + +let sig3 = new ndn.Sha256WithEcdsaSignature(); +kl = sig3.getKeyLocator(); +blob = sig3.getSignature(); +validity = sig3.getValidityPeriod(); +sig3.setKeyLocator(kl); +sig3.setSignature(blob); +sig3.setValidityPeriod(validity); +sig3 = sig3.clone(); +sig = sig3; + +let sig4 = new ndn.HmacWithSha25Signature(); +kl = sig4.getKeyLocator(); +blob = sig4.getSignature(); +sig4.setKeyLocator(kl); +sig4.setSignature(blob); +sig4 = sig4.clone(); +sig = sig4; diff --git a/types/ndn-js/signature.d.ts b/types/ndn-js/signature.d.ts index 72ce443b41..cd33bfbbc0 100644 --- a/types/ndn-js/signature.d.ts +++ b/types/ndn-js/signature.d.ts @@ -1,4 +1,4 @@ -import { Blob, BlobLike } from "./blob"; +import { Blob } from "./blob"; import { Name } from "./name"; export enum KeyLocatorType { @@ -28,10 +28,9 @@ export interface Signature { export class SignatureBase implements Signature { constructor(); - clone(): T; - getSignature(): Blob; - setSignature(sigValue: BlobLike): void; + setSignature(sigValue: Blob): void; + clone(): T; } export class SignatureBaseKl extends SignatureBase { @@ -49,10 +48,8 @@ export class DigestSha256Signature extends SignatureBase export class GenericSignature extends SignatureBase { constructor(); - clone(): GenericSignature; - - getTypeCode(): number; getSignatureInfoEncoding(): Blob; + getTypeCode(): number; setSignatureInfoEncoding(encoding: Blob, typeCode?: number): void; } diff --git a/types/ndn-js/transport-test.ts b/types/ndn-js/transport-test.ts new file mode 100644 index 0000000000..0a95844ce4 --- /dev/null +++ b/types/ndn-js/transport-test.ts @@ -0,0 +1,6 @@ +import ndn = require("ndn-js"); + +let face = new ndn.Face({host: 'hobo.cs.arizona.edu', port: 6363}); +face = new ndn.Face(new ndn.TcpTransport(), new ndn.TcpTransport.ConnectionInfo("hobo.cs.arizona.edu", 9696)); +face = new ndn.Face(new ndn.UnixTransport(), new ndn.UnixTransport.ConnectionInfo("/run/nfd.sock")); +face = new ndn.Face(new ndn.WebSocketTransport(), new ndn.WebSocketTransport.ConnectionInfo("hobo.cs.arizona.edu", 9696)); diff --git a/types/ndn-js/tsconfig.json b/types/ndn-js/tsconfig.json index 1568d2bd35..ba0723ec4d 100644 --- a/types/ndn-js/tsconfig.json +++ b/types/ndn-js/tsconfig.json @@ -18,6 +18,12 @@ }, "files": [ "index.d.ts", - "ndn-js-tests.ts" + "blob-test.ts", + "data-test.ts", + "face-test.ts", + "interest-test.ts", + "name-test.ts", + "signature-test.ts", + "transport-test.ts" ] } From 6dc4a94d5a76ce6fe2e9b21b8b9f58f67f0765d5 Mon Sep 17 00:00:00 2001 From: Junxiao Shi Date: Sat, 20 Oct 2018 22:29:09 -0400 Subject: [PATCH 07/20] ndn-js: Face --- types/ndn-js/face-test.ts | 44 ++++++++++++++++++++++++++++ types/ndn-js/face.d.ts | 52 +++++++++++++++++++++++++++++++--- types/ndn-js/index.d.ts | 2 ++ types/ndn-js/key-chain.d.ts | 1 + types/ndn-js/network-nack.d.ts | 1 + types/ndn-js/transport-test.ts | 9 ++++-- 6 files changed, 103 insertions(+), 6 deletions(-) create mode 100644 types/ndn-js/key-chain.d.ts create mode 100644 types/ndn-js/network-nack.d.ts diff --git a/types/ndn-js/face-test.ts b/types/ndn-js/face-test.ts index f2afe7bed1..738385f6ef 100644 --- a/types/ndn-js/face-test.ts +++ b/types/ndn-js/face-test.ts @@ -1,3 +1,47 @@ import ndn = require("ndn-js"); +let filter = new ndn.InterestFilter("/A"); +filter = new ndn.InterestFilter(new ndn.Name("/A"), "<>{2}"); +filter = new ndn.InterestFilter(filter); + +let b: boolean = filter.doesMatch(new ndn.Name("/B")); +const name: ndn.Name = filter.getPrefix(); +const s: string = filter.getRegexFilter(); +b = filter.hasRegexFilter(); + const face = new ndn.Face(); + +let n: number = face.expressInterest(new ndn.Interest(), + (interest: ndn.Interest, data: ndn.Data) => {}); +face.expressInterest(new ndn.Name("/A"), + (interest: ndn.Interest, data: ndn.Data) => {}, + (interest: ndn.Interest) => {}); +face.expressInterest(new ndn.Name("/A"), + new ndn.Interest().setCanBePrefix(true), + (interest: ndn.Interest, data: ndn.Data) => {}, + (interest: ndn.Interest) => {}, + (interest: ndn.Interest, nack: ndn.NetworkNack) => {}); + +n = ndn.Face.getMaxNdnPacketSize(); +face.putData(new ndn.Data()); + +n = face.registerPrefix(new ndn.Name("/A"), + (prefix: ndn.Name, interest: ndn.Interest) => {}, + (prefix: ndn.Name) => {}); +face.registerPrefix(new ndn.Name("/A"), + (prefix: ndn.Name, interest: ndn.Interest) => {}, + (prefix: ndn.Name) => {}, + (prefix: ndn.Name, id: number) => {}); + +face.removePendingInterest(n); +face.removeRegisteredPrefix(n); +face.send(new ndn.Blob()); +face.setCommandCertificateName(name); +face.setCommandSigningInfo({}, name); + +n = face.setInterestFilter(filter, + (prefix: ndn.Name, interest: ndn.Interest, face: ndn.Face, filterId: number, filter: ndn.InterestFilter) => {}); +face.setInterestFilter(name, + (prefix: ndn.Name, interest: ndn.Interest) => {}); + +face.unsetInterestFilter(n); diff --git a/types/ndn-js/face.d.ts b/types/ndn-js/face.d.ts index 0049585be6..06143a4614 100644 --- a/types/ndn-js/face.d.ts +++ b/types/ndn-js/face.d.ts @@ -1,3 +1,9 @@ +import { Blob } from "./blob"; +import { Data } from "./data"; +import { Interest } from "./interest"; +import { KeyChain } from "./key-chain"; +import { Name } from "./name"; +import { NetworkNack } from "./network-nack"; import { Transport } from "./transport"; export interface FaceCtorOptions { @@ -6,12 +12,50 @@ export interface FaceCtorOptions { connectionInfo?: Transport.ConnectionInfo|null; host?: string|null; port?: number|null; - onopen?: () => any; - onclose?: () => any; } +export type OnInterestCallback = (prefix: Name, interest: Interest, face: Face, filterId: number, filter: InterestFilter) => any; + export class Face { - constructor(); - constructor(settings: FaceCtorOptions); constructor(transport: Transport, connectionInfo: Transport.ConnectionInfo); + constructor(settings?: FaceCtorOptions); + + expressInterest(interest: Interest|Name, + onData: (interest: Interest, data: Data) => any, + onTimeout?: (interest: Interest) => any, + onNetworkNack?: (interest: Interest, nack: NetworkNack) => any): number; + expressInterest(name: Name, + interestTemplate: Interest, + onData: (interest: Interest, data: Data) => any, + onTimeout?: (interest: Interest) => any, + onNetworkNack?: (interest: Interest, nack: NetworkNack) => any): number; + + static getMaxNdnPacketSize(): number; + putData(data: Data): void; + + registerPrefix(prefix: Name, + onInterest: OnInterestCallback, + onRegisterFailed: (prefix: Name) => any, + onRegisterSuccess?: (prefix: Name, registeredPrefixId: number) => any, + flags?: ForwardingFlags): number; + + removePendingInterest(id: number): void; + removeRegisteredPrefix(id: number): void; + send(encoding: Blob|Buffer): void; + setCommandCertificateName(certificateName: Name): void; + setCommandSigningInfo(keyChain: KeyChain, certificateName: Name): void; + setInterestFilter(filter: InterestFilter|Name, onInterest: OnInterestCallback): number; + unsetInterestFilter(id: number): void; +} + +export type ForwardingFlags = any; + +export class InterestFilter { + constructor(filter: InterestFilter); + constructor(prefix: Name|string, regexFilter?: string); + + doesMatch(name: Name): boolean; + getPrefix(): Name; + getRegexFilter(): string; + hasRegexFilter(): boolean; } diff --git a/types/ndn-js/index.d.ts b/types/ndn-js/index.d.ts index d6c46c551b..cf3aba3518 100644 --- a/types/ndn-js/index.d.ts +++ b/types/ndn-js/index.d.ts @@ -4,6 +4,8 @@ export * from "./data"; export * from "./delegation-set"; export * from "./face"; export * from "./interest"; +export * from "./key-chain"; export * from "./name"; +export * from "./network-nack"; export * from "./signature"; export * from "./transport"; diff --git a/types/ndn-js/key-chain.d.ts b/types/ndn-js/key-chain.d.ts new file mode 100644 index 0000000000..1ecb000773 --- /dev/null +++ b/types/ndn-js/key-chain.d.ts @@ -0,0 +1 @@ +export type KeyChain = any; diff --git a/types/ndn-js/network-nack.d.ts b/types/ndn-js/network-nack.d.ts new file mode 100644 index 0000000000..d1444bf9d5 --- /dev/null +++ b/types/ndn-js/network-nack.d.ts @@ -0,0 +1 @@ +export type NetworkNack = any; diff --git a/types/ndn-js/transport-test.ts b/types/ndn-js/transport-test.ts index 0a95844ce4..7c5b55dabb 100644 --- a/types/ndn-js/transport-test.ts +++ b/types/ndn-js/transport-test.ts @@ -1,6 +1,11 @@ import ndn = require("ndn-js"); -let face = new ndn.Face({host: 'hobo.cs.arizona.edu', port: 6363}); -face = new ndn.Face(new ndn.TcpTransport(), new ndn.TcpTransport.ConnectionInfo("hobo.cs.arizona.edu", 9696)); +let face = new ndn.Face(new ndn.TcpTransport(), new ndn.TcpTransport.ConnectionInfo("hobo.cs.arizona.edu", 9696)); face = new ndn.Face(new ndn.UnixTransport(), new ndn.UnixTransport.ConnectionInfo("/run/nfd.sock")); face = new ndn.Face(new ndn.WebSocketTransport(), new ndn.WebSocketTransport.ConnectionInfo("hobo.cs.arizona.edu", 9696)); + +face = new ndn.Face({host: 'hobo.cs.arizona.edu', port: 6363}); +face = new ndn.Face({getTransport: () => new ndn.UnixTransport(), + getConnectionInfo: () => new ndn.UnixTransport.ConnectionInfo("/run/nfd.sock")}); +face = new ndn.Face({getTransport: () => new ndn.UnixTransport(), + connectionInfo: new ndn.UnixTransport.ConnectionInfo("/run/nfd.sock")}); From 652219757831072026191bcfa9ae40bbeebe6a5a Mon Sep 17 00:00:00 2001 From: Junxiao Shi Date: Sat, 20 Oct 2018 22:34:49 -0400 Subject: [PATCH 08/20] ndn-js: NetworkNack --- types/ndn-js/network-nack-test.ts | 6 ++++++ types/ndn-js/network-nack.d.ts | 15 ++++++++++++++- types/ndn-js/tsconfig.json | 1 + 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 types/ndn-js/network-nack-test.ts diff --git a/types/ndn-js/network-nack-test.ts b/types/ndn-js/network-nack-test.ts new file mode 100644 index 0000000000..8341742295 --- /dev/null +++ b/types/ndn-js/network-nack-test.ts @@ -0,0 +1,6 @@ +import ndn = require("ndn-js"); + +(nack: ndn.NetworkNack) => { + const n: number = nack.getOtherReasonCode(); + const reason: ndn.NetworkNack.Reason = nack.getReason(); +}; diff --git a/types/ndn-js/network-nack.d.ts b/types/ndn-js/network-nack.d.ts index d1444bf9d5..6ffb681313 100644 --- a/types/ndn-js/network-nack.d.ts +++ b/types/ndn-js/network-nack.d.ts @@ -1 +1,14 @@ -export type NetworkNack = any; +export namespace NetworkNack { + enum Reason { + NONE = 0, + CONGESTION = 50, + DUPLICATE = 100, + NO_ROUTE = 150, + OTHER_CODE = 0x7fff, + } +} + +export class NetworkNack { + getOtherReasonCode(): number; + getReason(): NetworkNack.Reason; +} diff --git a/types/ndn-js/tsconfig.json b/types/ndn-js/tsconfig.json index ba0723ec4d..766352636d 100644 --- a/types/ndn-js/tsconfig.json +++ b/types/ndn-js/tsconfig.json @@ -23,6 +23,7 @@ "face-test.ts", "interest-test.ts", "name-test.ts", + "network-nack-test.ts", "signature-test.ts", "transport-test.ts" ] From a70f2757ff08037457f91c67560960757f2db580 Mon Sep 17 00:00:00 2001 From: Junxiao Shi Date: Sun, 21 Oct 2018 12:09:58 -0400 Subject: [PATCH 09/20] ndn-js: KeyChain --- types/ndn-js/face-test.ts | 2 +- types/ndn-js/key-chain-test.ts | 40 ++++++++++++++++++++++++++++++++ types/ndn-js/key-chain.d.ts | 42 +++++++++++++++++++++++++++++++++- types/ndn-js/tsconfig.json | 1 + 4 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 types/ndn-js/key-chain-test.ts diff --git a/types/ndn-js/face-test.ts b/types/ndn-js/face-test.ts index 738385f6ef..90ba176d27 100644 --- a/types/ndn-js/face-test.ts +++ b/types/ndn-js/face-test.ts @@ -37,7 +37,7 @@ face.removePendingInterest(n); face.removeRegisteredPrefix(n); face.send(new ndn.Blob()); face.setCommandCertificateName(name); -face.setCommandSigningInfo({}, name); +face.setCommandSigningInfo(new ndn.KeyChain(), name); n = face.setInterestFilter(filter, (prefix: ndn.Name, interest: ndn.Interest, face: ndn.Face, filterId: number, filter: ndn.InterestFilter) => {}); diff --git a/types/ndn-js/key-chain-test.ts b/types/ndn-js/key-chain-test.ts new file mode 100644 index 0000000000..4bfefc9f28 --- /dev/null +++ b/types/ndn-js/key-chain-test.ts @@ -0,0 +1,40 @@ +/// +import ndn = require("ndn-js"); + +let kc = new ndn.KeyChain(); +kc = new ndn.KeyChain("pib-memory:", "tpm-memory:"); + +const kp: ndn.KeyParams = ndn.KeyChain.getDefaultKeyParams(); +const pib: ndn.Pib = kc.getPib(); +const tpm: ndn.Tpm = kc.getTpm(); + +const name = new ndn.Name("/key-name"); + +let id: ndn.PibIdentity = kc.createIdentityV2(name); +id = kc.createIdentityV2(name, kp); +kc.createIdentityV2(name, (id: ndn.PibIdentity) => {}); +kc.createIdentityV2(name, (id: ndn.PibIdentity) => {}, (err) => {}); +kc.createIdentityV2(name, kp, (id: ndn.PibIdentity) => {}); +kc.createIdentityV2(name, kp, (id: ndn.PibIdentity) => {}, (err) => {}); +kc.deleteIdentity(id); +kc.setDefaultIdentity(id); + +let key: ndn.PibKey = kc.createKey(id); +key = kc.createKey(id, kp); +kc.createKey(id, (key: ndn.PibKey) => {}); +kc.createKey(id, (key: ndn.PibKey) => {}, (err) => {}); +kc.createKey(id, kp, (key: ndn.PibKey) => {}); +kc.createKey(id, kp, (key: ndn.PibKey) => {}, (err) => {}); +kc.deleteKey(id, key); +kc.setDefaultKey(id, key); + +const cert: ndn.CertificateV2 = {}; +kc.addCertificate(key, cert); +kc.deleteCertificate(key, cert); +kc.setDefaultCertificate(key, cert); + +const si: ndn.SigningInfo = {}; +kc.sign(new ndn.Data(), si, (data: ndn.Data) => {}); +kc.sign(new ndn.Interest(), si, (interest: ndn.Interest) => {}); +kc.signWithSha256(new ndn.Data()); +kc.signWithSha256(new ndn.Interest()); diff --git a/types/ndn-js/key-chain.d.ts b/types/ndn-js/key-chain.d.ts index 1ecb000773..1aa96e4129 100644 --- a/types/ndn-js/key-chain.d.ts +++ b/types/ndn-js/key-chain.d.ts @@ -1 +1,41 @@ -export type KeyChain = any; +import { Data } from "./data"; +import { Interest } from "./interest"; +import { Name } from "./name"; + +export class KeyChain { + constructor(); + constructor(pibLocator: string, tpmLocator: string, allowReset?: boolean); + + static getDefaultKeyParams(): KeyParams; + getPib(): Pib; + getTpm(): Tpm; + + createIdentityV2(identityName: Name, params?: KeyParams): PibIdentity; + createIdentityV2(identityName: Name, onComplete: (identity: PibIdentity) => any, onError?: (err: any) => any): void; + createIdentityV2(identityName: Name, params: KeyParams, onComplete: (identity: PibIdentity) => any, onError?: (err: any) => any): void; + deleteIdentity(identity: PibIdentity, onComplete?: () => any, onError?: (err: any) => any): void; + setDefaultIdentity(identity: PibIdentity, onComplete?: () => any, onError?: (err: any) => any): void; + + createKey(identity: PibIdentity, params?: KeyParams): PibKey; + createKey(identity: PibIdentity, onComplete: (key: PibKey) => any, onError?: (err: any) => any): void; + createKey(identity: PibIdentity, params: KeyParams, onComplete: (key: PibKey) => any, onError?: (err: any) => any): void; + deleteKey(identity: PibIdentity, key: PibKey, onComplete?: () => any, onError?: (err: any) => any): void; + setDefaultKey(identity: PibIdentity, key: PibKey, onComplete?: () => any, onError?: (err: any) => any): void; + + addCertificate(key: PibKey, certificate: CertificateV2, onComplete?: () => any, onError?: (err: any) => any): void; + deleteCertificate(key: PibKey, certificateName: Name, onComplete?: () => any, onError?: (err: any) => any): void; + setDefaultCertificate(key: PibKey, certificate: CertificateV2, onComplete?: () => any, onError?: (err: any) => any): void; + + sign(data: Data, params: SigningInfo, onComplete?: (data: Data) => any, onError?: (err: any) => any): void; + sign(interest: Interest, params: SigningInfo, onComplete?: (interest: Interest) => any, onError?: (err: any) => any): void; + signWithSha256(data: Data): void; + signWithSha256(interest: Interest): void; +} + +export type CertificateV2 = any; +export type KeyParams = any; +export type Pib = any; +export type PibIdentity = any; +export type PibKey = any; +export type SigningInfo = any; +export type Tpm = any; diff --git a/types/ndn-js/tsconfig.json b/types/ndn-js/tsconfig.json index 766352636d..a07c5e1c00 100644 --- a/types/ndn-js/tsconfig.json +++ b/types/ndn-js/tsconfig.json @@ -22,6 +22,7 @@ "data-test.ts", "face-test.ts", "interest-test.ts", + "key-chain-test.ts", "name-test.ts", "network-nack-test.ts", "signature-test.ts", From d81940298541ccefd969dde50b8c222e58a82661 Mon Sep 17 00:00:00 2001 From: Junxiao Shi Date: Tue, 23 Oct 2018 10:39:14 -0400 Subject: [PATCH 10/20] ndn-js: add MemoryContentCache --- types/ndn-js/index.d.ts | 1 + types/ndn-js/memory-content-cache-test.ts | 15 +++++++++++++++ types/ndn-js/memory-content-cache.d.ts | 20 ++++++++++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 types/ndn-js/memory-content-cache-test.ts create mode 100644 types/ndn-js/memory-content-cache.d.ts diff --git a/types/ndn-js/index.d.ts b/types/ndn-js/index.d.ts index cf3aba3518..1481a65162 100644 --- a/types/ndn-js/index.d.ts +++ b/types/ndn-js/index.d.ts @@ -5,6 +5,7 @@ export * from "./delegation-set"; export * from "./face"; export * from "./interest"; export * from "./key-chain"; +export * from "./memory-content-cache"; export * from "./name"; export * from "./network-nack"; export * from "./signature"; diff --git a/types/ndn-js/memory-content-cache-test.ts b/types/ndn-js/memory-content-cache-test.ts new file mode 100644 index 0000000000..d166ef30d9 --- /dev/null +++ b/types/ndn-js/memory-content-cache-test.ts @@ -0,0 +1,15 @@ +import ndn = require("ndn-js"); + +const face = new ndn.Face(); +let cache = new ndn.MemoryContentCache(face); +cache = new ndn.MemoryContentCache(face, 8000); + +cache.add(new ndn.Data()); +const n: number = cache.getMinimumCacheLifetime(); +cache.registerPrefix(new ndn.Name("/A"), + () => {}, + () => {}, + cache.getStorePendingInterest()); +cache.setInterestFilter(new ndn.Name("/A"), cache.getStorePendingInterest()); +cache.setMinimumCacheLifetime(5000); +cache.storePendingInterest(new ndn.Interest(), new ndn.UdpTransport()); diff --git a/types/ndn-js/memory-content-cache.d.ts b/types/ndn-js/memory-content-cache.d.ts new file mode 100644 index 0000000000..1411bebe08 --- /dev/null +++ b/types/ndn-js/memory-content-cache.d.ts @@ -0,0 +1,20 @@ +import { Data } from "./data"; +import { Face, ForwardingFlags, InterestFilter, OnInterestCallback } from "./face"; +import { Interest } from "./interest"; +import { Name } from "./name"; +import { Transport } from "./transport"; + +export class MemoryContentCache { + constructor(face: Face, cleanupIntervalMilliseconds?: number); + + add(data: Data): void; + getMinimumCacheLifetime(): number; + getStorePendingInterest(): OnInterestCallback; + registerPrefix(name: Name, onRegisterFailed: (prefix: Name) => any, + onRegisterSuccess?: (prefix: Name, registeredPrefixId: number) => any, + onDataNotFound?: OnInterestCallback, flags?: ForwardingFlags): void; + setInterestFilter(filter: InterestFilter|Name, onDataNotFound?: OnInterestCallback): void; + setMinimumCacheLifetime(minimumCacheLifetime: number): void; + storePendingInterest(interest: Interest, transport: Transport): void; + unregisterAll(): void; +} From 0f0b8fa5a3fb60617eaf60eb3f586c344f26e034 Mon Sep 17 00:00:00 2001 From: Junxiao Shi Date: Wed, 20 Feb 2019 16:06:58 -0500 Subject: [PATCH 11/20] ndn-js: use tslint:disable comments --- types/ndn-js/blob.d.ts | 3 +-- types/ndn-js/key-chain.d.ts | 1 + types/ndn-js/name.d.ts | 2 ++ types/ndn-js/transport.d.ts | 3 +++ types/ndn-js/tslint.json | 6 +----- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/types/ndn-js/blob.d.ts b/types/ndn-js/blob.d.ts index eaaabb9dda..8b6b43b8aa 100644 --- a/types/ndn-js/blob.d.ts +++ b/types/ndn-js/blob.d.ts @@ -1,8 +1,7 @@ export class Blob { constructor(value?: Blob); constructor(value: Buffer, copy?: boolean); - constructor(value: number[]); - constructor(value: string); + constructor(value: number[]|string); buf(): Buffer; equals(other: Blob): boolean; diff --git a/types/ndn-js/key-chain.d.ts b/types/ndn-js/key-chain.d.ts index 1aa96e4129..6c1103eed5 100644 --- a/types/ndn-js/key-chain.d.ts +++ b/types/ndn-js/key-chain.d.ts @@ -29,6 +29,7 @@ export class KeyChain { sign(data: Data, params: SigningInfo, onComplete?: (data: Data) => any, onError?: (err: any) => any): void; sign(interest: Interest, params: SigningInfo, onComplete?: (interest: Interest) => any, onError?: (err: any) => any): void; signWithSha256(data: Data): void; + // tslint:disable-next-line unified-signatures signWithSha256(interest: Interest): void; } diff --git a/types/ndn-js/name.d.ts b/types/ndn-js/name.d.ts index 5519b28a9a..4c38617ab5 100644 --- a/types/ndn-js/name.d.ts +++ b/types/ndn-js/name.d.ts @@ -54,10 +54,12 @@ export namespace Name { export class Name { constructor(components?: Array); constructor(uri: string); + // tslint:disable-next-line unified-signatures constructor(name: Name); append(value: number[]|ArrayBuffer|Uint8Array|string|Blob, type?: ComponentType, otherTypeCode?: number): Name; append(component: Name.Component): Name; + // tslint:disable-next-line unified-signatures append(name: Name): Name; appendImplicitSha256Digest(digest: Blob): Name; appendParametersSha256Digest(digest: Blob): Name; diff --git a/types/ndn-js/transport.d.ts b/types/ndn-js/transport.d.ts index 320ec1e695..68cd7fc3a9 100644 --- a/types/ndn-js/transport.d.ts +++ b/types/ndn-js/transport.d.ts @@ -1,7 +1,9 @@ +// tslint:disable-next-line no-empty-interface export interface Transport { } export namespace Transport { + // tslint:disable-next-line no-empty-interface interface ConnectionInfo { } } @@ -34,6 +36,7 @@ export class WebSocketTransport implements Transport { export namespace WebSocketTransport { class ConnectionInfo implements Transport.ConnectionInfo { + // tslint:disable-next-line unified-signatures constructor(host: string, port: number); constructor(uri: string); equals(other: ConnectionInfo): boolean; diff --git a/types/ndn-js/tslint.json b/types/ndn-js/tslint.json index 5f014d5c68..4c3a548997 100644 --- a/types/ndn-js/tslint.json +++ b/types/ndn-js/tslint.json @@ -1,7 +1,3 @@ { - "extends": "dtslint/dtslint.json", - "rules": { - "no-empty-interface": false, - "unified-signatures": false - } + "extends": "dtslint/dtslint.json" } From 6ddf89b20bad73197682ea299066bf2cc0afb162 Mon Sep 17 00:00:00 2001 From: Junxiao Shi Date: Wed, 20 Feb 2019 16:09:33 -0500 Subject: [PATCH 12/20] ndn-js: use ReadonlyArray --- types/ndn-js/blob.d.ts | 4 ++-- types/ndn-js/name.d.ts | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/types/ndn-js/blob.d.ts b/types/ndn-js/blob.d.ts index 8b6b43b8aa..9b3d56bb67 100644 --- a/types/ndn-js/blob.d.ts +++ b/types/ndn-js/blob.d.ts @@ -1,7 +1,7 @@ export class Blob { constructor(value?: Blob); constructor(value: Buffer, copy?: boolean); - constructor(value: number[]|string); + constructor(value: ReadonlyArray|string); buf(): Buffer; equals(other: Blob): boolean; @@ -11,7 +11,7 @@ export class Blob { export class SignedBlob extends Blob { constructor(); - constructor(value: Blob|Buffer|number[], signedPortionBeginOffset: number, signedPortionEndOffset: number); + constructor(value: Blob|Buffer|ReadonlyArray, signedPortionBeginOffset: number, signedPortionEndOffset: number); getSignedPortionBeginOffset(): number; getSignedPortionEndOffset(): number; diff --git a/types/ndn-js/name.d.ts b/types/ndn-js/name.d.ts index 4c38617ab5..d27123ad9a 100644 --- a/types/ndn-js/name.d.ts +++ b/types/ndn-js/name.d.ts @@ -11,7 +11,7 @@ export type CompareResult = -1|0|1; export namespace Name { class Component { - constructor(value?: number[]|ArrayBuffer|Uint8Array|string|Blob, type?: ComponentType, otherTypeCode?: number); + constructor(value?: ReadonlyArray|ArrayBuffer|Uint8Array|string|Blob, type?: ComponentType, otherTypeCode?: number); constructor(component: Component); compare(other: Component): CompareResult; @@ -52,12 +52,12 @@ export namespace Name { } export class Name { - constructor(components?: Array); + constructor(components?: ReadonlyArray); constructor(uri: string); // tslint:disable-next-line unified-signatures constructor(name: Name); - append(value: number[]|ArrayBuffer|Uint8Array|string|Blob, type?: ComponentType, otherTypeCode?: number): Name; + append(value: ReadonlyArray|ArrayBuffer|Uint8Array|string|Blob, type?: ComponentType, otherTypeCode?: number): Name; append(component: Name.Component): Name; // tslint:disable-next-line unified-signatures append(name: Name): Name; From eff3febc9e40162bfa2625e37c77e110121711b4 Mon Sep 17 00:00:00 2001 From: Junxiao Shi Date: Thu, 21 Mar 2019 13:46:07 -0400 Subject: [PATCH 13/20] ndn-js: move tests into test folder --- types/ndn-js/face.d.ts | 8 +++---- types/ndn-js/index.d.ts | 5 ++++ types/ndn-js/{blob-test.ts => test/blob.ts} | 0 types/ndn-js/{data-test.ts => test/data.ts} | 0 types/ndn-js/{face-test.ts => test/face.ts} | 0 .../{interest-test.ts => test/interest.ts} | 0 .../{key-chain-test.ts => test/key-chain.ts} | 0 .../memory-content-cache.ts} | 2 +- types/ndn-js/{name-test.ts => test/name.ts} | 0 .../network-nack.ts} | 0 .../{signature-test.ts => test/signature.ts} | 0 .../{transport-test.ts => test/transport.ts} | 5 +++- types/ndn-js/transport.d.ts | 23 ++++++++----------- types/ndn-js/tsconfig.json | 19 +++++++-------- types/ndn-js/tslint.json | 4 +--- 15 files changed, 35 insertions(+), 31 deletions(-) rename types/ndn-js/{blob-test.ts => test/blob.ts} (100%) rename types/ndn-js/{data-test.ts => test/data.ts} (100%) rename types/ndn-js/{face-test.ts => test/face.ts} (100%) rename types/ndn-js/{interest-test.ts => test/interest.ts} (100%) rename types/ndn-js/{key-chain-test.ts => test/key-chain.ts} (100%) rename types/ndn-js/{memory-content-cache-test.ts => test/memory-content-cache.ts} (86%) rename types/ndn-js/{name-test.ts => test/name.ts} (100%) rename types/ndn-js/{network-nack-test.ts => test/network-nack.ts} (100%) rename types/ndn-js/{signature-test.ts => test/signature.ts} (100%) rename types/ndn-js/{transport-test.ts => test/transport.ts} (77%) diff --git a/types/ndn-js/face.d.ts b/types/ndn-js/face.d.ts index 06143a4614..524623a1a4 100644 --- a/types/ndn-js/face.d.ts +++ b/types/ndn-js/face.d.ts @@ -4,12 +4,12 @@ import { Interest } from "./interest"; import { KeyChain } from "./key-chain"; import { Name } from "./name"; import { NetworkNack } from "./network-nack"; -import { Transport } from "./transport"; +import { Transport, TransportConnectionInfo } from "./transport"; export interface FaceCtorOptions { getTransport?: () => Transport; - getConnectionInfo?: () => Transport.ConnectionInfo; - connectionInfo?: Transport.ConnectionInfo|null; + getConnectionInfo?: () => TransportConnectionInfo; + connectionInfo?: TransportConnectionInfo|null; host?: string|null; port?: number|null; } @@ -17,7 +17,7 @@ export interface FaceCtorOptions { export type OnInterestCallback = (prefix: Name, interest: Interest, face: Face, filterId: number, filter: InterestFilter) => any; export class Face { - constructor(transport: Transport, connectionInfo: Transport.ConnectionInfo); + constructor(transport: Transport, connectionInfo: TransportConnectionInfo); constructor(settings?: FaceCtorOptions); expressInterest(interest: Interest|Name, diff --git a/types/ndn-js/index.d.ts b/types/ndn-js/index.d.ts index 1481a65162..9f76593c02 100644 --- a/types/ndn-js/index.d.ts +++ b/types/ndn-js/index.d.ts @@ -1,3 +1,8 @@ +// Type definitions for ndn-js 0.18 +// Project: https://github.com/named-data/ndn-js +// Definitions by: Junxiao +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + export as namespace ndn; export * from "./blob"; export * from "./data"; diff --git a/types/ndn-js/blob-test.ts b/types/ndn-js/test/blob.ts similarity index 100% rename from types/ndn-js/blob-test.ts rename to types/ndn-js/test/blob.ts diff --git a/types/ndn-js/data-test.ts b/types/ndn-js/test/data.ts similarity index 100% rename from types/ndn-js/data-test.ts rename to types/ndn-js/test/data.ts diff --git a/types/ndn-js/face-test.ts b/types/ndn-js/test/face.ts similarity index 100% rename from types/ndn-js/face-test.ts rename to types/ndn-js/test/face.ts diff --git a/types/ndn-js/interest-test.ts b/types/ndn-js/test/interest.ts similarity index 100% rename from types/ndn-js/interest-test.ts rename to types/ndn-js/test/interest.ts diff --git a/types/ndn-js/key-chain-test.ts b/types/ndn-js/test/key-chain.ts similarity index 100% rename from types/ndn-js/key-chain-test.ts rename to types/ndn-js/test/key-chain.ts diff --git a/types/ndn-js/memory-content-cache-test.ts b/types/ndn-js/test/memory-content-cache.ts similarity index 86% rename from types/ndn-js/memory-content-cache-test.ts rename to types/ndn-js/test/memory-content-cache.ts index d166ef30d9..daa26d4e17 100644 --- a/types/ndn-js/memory-content-cache-test.ts +++ b/types/ndn-js/test/memory-content-cache.ts @@ -12,4 +12,4 @@ cache.registerPrefix(new ndn.Name("/A"), cache.getStorePendingInterest()); cache.setInterestFilter(new ndn.Name("/A"), cache.getStorePendingInterest()); cache.setMinimumCacheLifetime(5000); -cache.storePendingInterest(new ndn.Interest(), new ndn.UdpTransport()); +cache.storePendingInterest(new ndn.Interest(), new ndn.UnixTransport()); diff --git a/types/ndn-js/name-test.ts b/types/ndn-js/test/name.ts similarity index 100% rename from types/ndn-js/name-test.ts rename to types/ndn-js/test/name.ts diff --git a/types/ndn-js/network-nack-test.ts b/types/ndn-js/test/network-nack.ts similarity index 100% rename from types/ndn-js/network-nack-test.ts rename to types/ndn-js/test/network-nack.ts diff --git a/types/ndn-js/signature-test.ts b/types/ndn-js/test/signature.ts similarity index 100% rename from types/ndn-js/signature-test.ts rename to types/ndn-js/test/signature.ts diff --git a/types/ndn-js/transport-test.ts b/types/ndn-js/test/transport.ts similarity index 77% rename from types/ndn-js/transport-test.ts rename to types/ndn-js/test/transport.ts index 7c5b55dabb..707a5f0d55 100644 --- a/types/ndn-js/transport-test.ts +++ b/types/ndn-js/test/transport.ts @@ -1,6 +1,9 @@ import ndn = require("ndn-js"); -let face = new ndn.Face(new ndn.TcpTransport(), new ndn.TcpTransport.ConnectionInfo("hobo.cs.arizona.edu", 9696)); +const transport = new ndn.TcpTransport(); +const b: boolean = transport.isLocal(); + +let face = new ndn.Face(transport, new ndn.TcpTransport.ConnectionInfo("hobo.cs.arizona.edu", 9696)); face = new ndn.Face(new ndn.UnixTransport(), new ndn.UnixTransport.ConnectionInfo("/run/nfd.sock")); face = new ndn.Face(new ndn.WebSocketTransport(), new ndn.WebSocketTransport.ConnectionInfo("hobo.cs.arizona.edu", 9696)); diff --git a/types/ndn-js/transport.d.ts b/types/ndn-js/transport.d.ts index 68cd7fc3a9..ec4b17d0c9 100644 --- a/types/ndn-js/transport.d.ts +++ b/types/ndn-js/transport.d.ts @@ -1,41 +1,38 @@ -// tslint:disable-next-line no-empty-interface -export interface Transport { +export abstract class TransportConnectionInfo { } -export namespace Transport { - // tslint:disable-next-line no-empty-interface - interface ConnectionInfo { - } +export abstract class Transport { + static ConnectionInfo: TransportConnectionInfo; + isLocal(): boolean; } -export class TcpTransport implements Transport { +export class TcpTransport extends Transport { } export namespace TcpTransport { - class ConnectionInfo implements Transport.ConnectionInfo { + class ConnectionInfo extends TransportConnectionInfo { constructor(host: string, port: number); equals(other: ConnectionInfo): boolean; toString(): string; } } -export class UnixTransport implements Transport { +export class UnixTransport extends Transport { } export namespace UnixTransport { - class ConnectionInfo implements Transport.ConnectionInfo { + class ConnectionInfo extends TransportConnectionInfo { constructor(filePath: string); equals(other: ConnectionInfo): boolean; toString(): string; } } -export class WebSocketTransport implements Transport { - isLocal(): boolean; +export class WebSocketTransport extends Transport { } export namespace WebSocketTransport { - class ConnectionInfo implements Transport.ConnectionInfo { + class ConnectionInfo extends TransportConnectionInfo { // tslint:disable-next-line unified-signatures constructor(host: string, port: number); constructor(uri: string); diff --git a/types/ndn-js/tsconfig.json b/types/ndn-js/tsconfig.json index a07c5e1c00..3aaea5f6f1 100644 --- a/types/ndn-js/tsconfig.json +++ b/types/ndn-js/tsconfig.json @@ -18,14 +18,15 @@ }, "files": [ "index.d.ts", - "blob-test.ts", - "data-test.ts", - "face-test.ts", - "interest-test.ts", - "key-chain-test.ts", - "name-test.ts", - "network-nack-test.ts", - "signature-test.ts", - "transport-test.ts" + "test/blob.ts", + "test/data.ts", + "test/face.ts", + "test/interest.ts", + "test/key-chain.ts", + "test/memory-content-cache.ts", + "test/name.ts", + "test/network-nack.ts", + "test/signature.ts", + "test/transport.ts" ] } diff --git a/types/ndn-js/tslint.json b/types/ndn-js/tslint.json index 4c3a548997..3db14f85ea 100644 --- a/types/ndn-js/tslint.json +++ b/types/ndn-js/tslint.json @@ -1,3 +1 @@ -{ - "extends": "dtslint/dtslint.json" -} +{ "extends": "dtslint/dt.json" } From e87748d38952303ceddbcfc87742f77dbac5b8bd Mon Sep 17 00:00:00 2001 From: Junxiao Shi Date: Fri, 22 Mar 2019 11:02:39 -0400 Subject: [PATCH 14/20] ndn-js: fix MemoryContentCache.storePendingInterest --- types/ndn-js/memory-content-cache.d.ts | 3 +-- types/ndn-js/test/memory-content-cache.ts | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/types/ndn-js/memory-content-cache.d.ts b/types/ndn-js/memory-content-cache.d.ts index 1411bebe08..75c47419c0 100644 --- a/types/ndn-js/memory-content-cache.d.ts +++ b/types/ndn-js/memory-content-cache.d.ts @@ -2,7 +2,6 @@ import { Data } from "./data"; import { Face, ForwardingFlags, InterestFilter, OnInterestCallback } from "./face"; import { Interest } from "./interest"; import { Name } from "./name"; -import { Transport } from "./transport"; export class MemoryContentCache { constructor(face: Face, cleanupIntervalMilliseconds?: number); @@ -15,6 +14,6 @@ export class MemoryContentCache { onDataNotFound?: OnInterestCallback, flags?: ForwardingFlags): void; setInterestFilter(filter: InterestFilter|Name, onDataNotFound?: OnInterestCallback): void; setMinimumCacheLifetime(minimumCacheLifetime: number): void; - storePendingInterest(interest: Interest, transport: Transport): void; + storePendingInterest(interest: Interest, face: Face): void; unregisterAll(): void; } diff --git a/types/ndn-js/test/memory-content-cache.ts b/types/ndn-js/test/memory-content-cache.ts index daa26d4e17..d809b7a442 100644 --- a/types/ndn-js/test/memory-content-cache.ts +++ b/types/ndn-js/test/memory-content-cache.ts @@ -12,4 +12,4 @@ cache.registerPrefix(new ndn.Name("/A"), cache.getStorePendingInterest()); cache.setInterestFilter(new ndn.Name("/A"), cache.getStorePendingInterest()); cache.setMinimumCacheLifetime(5000); -cache.storePendingInterest(new ndn.Interest(), new ndn.UnixTransport()); +cache.storePendingInterest(new ndn.Interest(), face); From 23241a50372d2330b58e21761fbf5b845c39f295 Mon Sep 17 00:00:00 2001 From: Junxiao Shi Date: Fri, 22 Mar 2019 11:29:46 -0400 Subject: [PATCH 15/20] ndn-js: declare DelegationSet and ApplicationParameters --- types/ndn-js/delegation-set.d.ts | 1 - types/ndn-js/index.d.ts | 1 - types/ndn-js/interest.d.ts | 38 ++++++++++++++++++++++++-------- types/ndn-js/name.d.ts | 4 +--- types/ndn-js/test/interest.ts | 28 ++++++++++++++++------- 5 files changed, 50 insertions(+), 22 deletions(-) delete mode 100644 types/ndn-js/delegation-set.d.ts diff --git a/types/ndn-js/delegation-set.d.ts b/types/ndn-js/delegation-set.d.ts deleted file mode 100644 index f40dbd1912..0000000000 --- a/types/ndn-js/delegation-set.d.ts +++ /dev/null @@ -1 +0,0 @@ -export type DelegationSet = any; diff --git a/types/ndn-js/index.d.ts b/types/ndn-js/index.d.ts index 9f76593c02..0e584e9297 100644 --- a/types/ndn-js/index.d.ts +++ b/types/ndn-js/index.d.ts @@ -6,7 +6,6 @@ export as namespace ndn; export * from "./blob"; export * from "./data"; -export * from "./delegation-set"; export * from "./face"; export * from "./interest"; export * from "./key-chain"; diff --git a/types/ndn-js/interest.d.ts b/types/ndn-js/interest.d.ts index f3b5bc88b4..20dd23c9a0 100644 --- a/types/ndn-js/interest.d.ts +++ b/types/ndn-js/interest.d.ts @@ -1,29 +1,49 @@ import { Blob } from "./blob"; import { Data } from "./data"; -import { DelegationSet } from "./delegation-set"; import { Name } from "./name"; export class Interest { - constructor(name?: Name); + constructor(name?: Name|string); constructor(interest: Interest); - getCanBePrefix(): boolean; - getForwardingHint(): DelegationSet; - getIncomingFaceId(): number; - getInterestLifetimeMilliseconds(): number; - getMustBeFresh(): boolean; getName(): Name; + getCanBePrefix(): boolean; + getMustBeFresh(): boolean; + getForwardingHint(): DelegationSet; getNonce(): Blob; + getInterestLifetimeMilliseconds(): number; + getApplicationParameters(): Blob; + getIncomingFaceId(): number; + setName(name: Name): Interest; setCanBePrefix(canBePrefix: boolean): Interest; + setMustBeFresh(mustBeFresh: boolean): Interest; setForwardingHint(fh: DelegationSet): Interest; setInterestLifetimeMilliseconds(lifetime: number): Interest; - setMustBeFresh(mustBeFresh: boolean): Interest; - setName(name: Name): Interest; + setApplicationParameters(parameters: Blob|Buffer): Interest; + appendParametersDigestToName(): Interest; matchesData(data: Data): boolean; matchesName(name: Name): boolean; refreshNonce(): void; + toUri(): string; wireDecode(input: Blob|Buffer): void; wireEncode(): Blob; } + +export class DelegationSet { + size(): number; + get(i: number): DelegationSet.Delegation; + find(name: Name): number; + + add(preference: number, name: Name): void; + remove(name: Name): boolean; + clear(): void; +} + +export namespace DelegationSet { + class Delegation { + getPreference(): number; + getName(): Name; + } +} diff --git a/types/ndn-js/name.d.ts b/types/ndn-js/name.d.ts index d27123ad9a..40b8a99245 100644 --- a/types/ndn-js/name.d.ts +++ b/types/ndn-js/name.d.ts @@ -53,9 +53,7 @@ export namespace Name { export class Name { constructor(components?: ReadonlyArray); - constructor(uri: string); - // tslint:disable-next-line unified-signatures - constructor(name: Name); + constructor(name: Name|string); append(value: ReadonlyArray|ArrayBuffer|Uint8Array|string|Blob, type?: ComponentType, otherTypeCode?: number): Name; append(component: Name.Component): Name; diff --git a/types/ndn-js/test/interest.ts b/types/ndn-js/test/interest.ts index 9f964fd2ed..008a795aec 100644 --- a/types/ndn-js/test/interest.ts +++ b/types/ndn-js/test/interest.ts @@ -3,26 +3,38 @@ import ndn = require("ndn-js"); let interest = new ndn.Interest(); interest = new ndn.Interest(new ndn.Name("/A")); +interest = new ndn.Interest("/A"); interest = new ndn.Interest(interest); +let name: ndn.Name = interest.getName(); let b: boolean = interest.getCanBePrefix(); -const fh: ndn.DelegationSet = interest.getForwardingHint(); -let n: number = interest.getIncomingFaceId(); -n = interest.getInterestLifetimeMilliseconds(); b = interest.getMustBeFresh(); -const name: ndn.Name = interest.getName(); +const fh: ndn.DelegationSet = interest.getForwardingHint(); let blob: ndn.Blob = interest.getNonce(); +let n: number = interest.getInterestLifetimeMilliseconds(); +blob = interest.getApplicationParameters(); +n = interest.getIncomingFaceId(); -interest = interest.setCanBePrefix(true) +interest = interest.setName(name) + .setCanBePrefix(true) + .setMustBeFresh(true) .setForwardingHint(fh) .setInterestLifetimeMilliseconds(2000) - .setMustBeFresh(true) - .setName(name); + .setApplicationParameters(blob) + .setApplicationParameters(Buffer.alloc(4)) + .appendParametersDigestToName(); b = interest.matchesData(new ndn.Data()); b = interest.matchesName(name); interest.refreshNonce(); - +const s: string = interest.toUri(); interest.wireDecode(blob); interest.wireDecode(Buffer.alloc(4)); blob = interest.wireEncode(); + +fh.add(10, name); +n = fh.size(); +const del: ndn.DelegationSet.Delegation = fh.get(0); +n = del.getPreference(); +name = del.getName(); +b = fh.remove(name); From 0d3e8bf9c19d495fd6a6df36fbdb35ae2b24af4c Mon Sep 17 00:00:00 2001 From: Junxiao Shi Date: Fri, 22 Mar 2019 11:40:39 -0400 Subject: [PATCH 16/20] ndn: Data methods follow packet format order --- types/ndn-js/data.d.ts | 29 +++++++++++++++-------------- types/ndn-js/test/data.ts | 27 +++++++++++++++------------ 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/types/ndn-js/data.d.ts b/types/ndn-js/data.d.ts index d76dd02779..9d6c03cda1 100644 --- a/types/ndn-js/data.d.ts +++ b/types/ndn-js/data.d.ts @@ -3,19 +3,20 @@ import { Name } from "./name"; import { Signature } from "./signature"; export class Data { - constructor(name?: Name); + constructor(name?: Name|string); + constructor(data: Data); - getCongestionMark(): number; - getContent(): Blob; - getFullName(): Name; - getIncomingFaceId(): number; - getMetaInfo(): MetaInfo; getName(): Name; + getFullName(): Name; + getMetaInfo(): MetaInfo; + getContent(): Blob; getSignature(): Signature; + getCongestionMark(): number; + getIncomingFaceId(): number; - setContent(content: Blob): Data; - setMetaInfo(meta: MetaInfo): Data; setName(name: Name): Data; + setMetaInfo(meta: MetaInfo): Data; + setContent(content: Blob|Buffer): Data; setSignature(sig: Signature): Data; wireDecode(input: Blob|Buffer): void; @@ -33,13 +34,13 @@ export enum ContentType { export class MetaInfo { constructor(meta?: MetaInfo); - getFinalBlockId(): Name.Component; - getFreshnessPeriod(): number; - getOtherTypeCode(): number; getType(): ContentType; + getOtherTypeCode(): number; + getFreshnessPeriod(): number; + getFinalBlockId(): Name.Component; - setFinalBlockId(comp: Name.Component): void; - setFreshnessPeriod(freshness: number): void; - setOtherTypeCode(otherTypeCode: number): void; setType(type: ContentType): void; + setOtherTypeCode(otherTypeCode: number): void; + setFreshnessPeriod(freshness: number): void; + setFinalBlockId(comp: Name.Component): void; } diff --git a/types/ndn-js/test/data.ts b/types/ndn-js/test/data.ts index feea541a19..367a7a0ec7 100644 --- a/types/ndn-js/test/data.ts +++ b/types/ndn-js/test/data.ts @@ -3,30 +3,33 @@ import ndn = require("ndn-js"); let meta = new ndn.MetaInfo(); meta = new ndn.MetaInfo(meta); -const comp: ndn.Name.Component = meta.getFinalBlockId(); -let n: number = meta.getFreshnessPeriod(); -n = meta.getOtherTypeCode(); const ct: ndn.ContentType = meta.getType(); +let n: number = meta.getOtherTypeCode(); +n = meta.getFreshnessPeriod(); +const comp: ndn.Name.Component = meta.getFinalBlockId(); -meta.setFinalBlockId(comp); -meta.setFreshnessPeriod(5000); -meta.setOtherTypeCode(1000); meta.setType(ndn.ContentType.OTHER_CODE); +meta.setOtherTypeCode(1000); +meta.setFreshnessPeriod(5000); +meta.setFinalBlockId(comp); let data = new ndn.Data(); data = new ndn.Data(new ndn.Name("/A")); +data = new ndn.Data("/A"); +data = new ndn.Data(data); -n = data.getCongestionMark(); -let blob: ndn.Blob = data.getContent(); let name: ndn.Name = data.getName(); -n = data.getIncomingFaceId(); +name = data.getFullName(); meta = data.getMetaInfo(); -name = data.getName(); +let blob: ndn.Blob = data.getContent(); const sig: ndn.Signature = data.getSignature(); +n = data.getCongestionMark(); +n = data.getIncomingFaceId(); -data = data.setContent(blob) +data = data.setName(name) .setMetaInfo(meta) - .setName(name) + .setContent(blob) + .setContent(Buffer.alloc(4)) .setSignature(sig); data.wireDecode(blob); From 9ee5e77d3b9e30d151e5d4516eabdf81a08dda8a Mon Sep 17 00:00:00 2001 From: Junxiao Shi Date: Fri, 22 Mar 2019 11:57:02 -0400 Subject: [PATCH 17/20] ndn-js: mark 'rarely used' --- types/ndn-js/face.d.ts | 2 +- types/ndn-js/key-chain.d.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/types/ndn-js/face.d.ts b/types/ndn-js/face.d.ts index 524623a1a4..18edf5ba34 100644 --- a/types/ndn-js/face.d.ts +++ b/types/ndn-js/face.d.ts @@ -48,7 +48,7 @@ export class Face { unsetInterestFilter(id: number): void; } -export type ForwardingFlags = any; +export type ForwardingFlags = any; // no declaration because this type is rarely used export class InterestFilter { constructor(filter: InterestFilter); diff --git a/types/ndn-js/key-chain.d.ts b/types/ndn-js/key-chain.d.ts index 6c1103eed5..1df70849c8 100644 --- a/types/ndn-js/key-chain.d.ts +++ b/types/ndn-js/key-chain.d.ts @@ -33,6 +33,7 @@ export class KeyChain { signWithSha256(interest: Interest): void; } +// no declaration because these types are rarely used export type CertificateV2 = any; export type KeyParams = any; export type Pib = any; From 92230d07f1857ca56a139d16b964fc1150472731 Mon Sep 17 00:00:00 2001 From: Junxiao Shi Date: Fri, 22 Mar 2019 11:57:15 -0400 Subject: [PATCH 18/20] ndn-js: declare ValidityPeriod type --- types/ndn-js/signature.d.ts | 21 ++++++++++++++++----- types/ndn-js/test/signature.ts | 21 +++++++++++++++------ 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/types/ndn-js/signature.d.ts b/types/ndn-js/signature.d.ts index cd33bfbbc0..f170494214 100644 --- a/types/ndn-js/signature.d.ts +++ b/types/ndn-js/signature.d.ts @@ -9,18 +9,29 @@ export enum KeyLocatorType { export class KeyLocator { constructor(kl?: KeyLocator); - getKeyData(): Blob; - getKeyName(): Name; getType(): KeyLocatorType; + getKeyName(): Name; + getKeyData(): Blob; - setKeyData(keyData: Blob): void; - setKeyName(name: Name): void; setType(type: KeyLocatorType): void; + setKeyName(name: Name): void; + setKeyData(keyData: Blob): void; clear(): void; } -export type ValidityPeriod = any; +export class ValidityPeriod { + constructor(validity?: ValidityPeriod); + constructor(notBefore: number, notAfter: number); + + hasPeriod(): boolean; + getNotBefore(): number; + getNotAfter(): number; + isValid(time?: number): boolean; + + equals(other: ValidityPeriod): boolean; + clear(): void; +} export interface Signature { clone(): Signature; diff --git a/types/ndn-js/test/signature.ts b/types/ndn-js/test/signature.ts index 026edf9556..0a8fdc26e9 100644 --- a/types/ndn-js/test/signature.ts +++ b/types/ndn-js/test/signature.ts @@ -3,17 +3,26 @@ import ndn = require("ndn-js"); let kl: ndn.KeyLocator = new ndn.KeyLocator(); kl = new ndn.KeyLocator(kl); -let blob: ndn.Blob = kl.getKeyData(); -const name: ndn.Name = kl.getKeyName(); const klt: ndn.KeyLocatorType = kl.getType(); +const name: ndn.Name = kl.getKeyName(); +let blob: ndn.Blob = kl.getKeyData(); -kl.setKeyData(blob); -kl.setKeyName(name); kl.setType(ndn.KeyLocatorType.KEY_LOCATOR_DIGEST); +kl.setKeyName(name); +kl.setKeyData(blob); kl.clear(); -let validity: ndn.ValidityPeriod; +let validity: ndn.ValidityPeriod = new ndn.ValidityPeriod(); +validity = new ndn.ValidityPeriod(validity); +validity = new ndn.ValidityPeriod(540109800000, 664156800000); +let b: boolean = validity.hasPeriod(); +let n: number = validity.getNotBefore(); +n = validity.getNotAfter(); +b = validity.isValid(); +b = validity.isValid(594172800000); +validity.equals(new ndn.ValidityPeriod()); +validity.clear(); let sig0 = new ndn.DigestSha256Signature(); blob = sig0.getSignature(); @@ -24,7 +33,7 @@ let sig: ndn.Signature = sig0; let sigG = new ndn.GenericSignature(); blob = sigG.getSignature(); blob = sigG.getSignatureInfoEncoding(); -const n: number = sigG.getTypeCode(); +n = sigG.getTypeCode(); sigG.setSignature(blob); sigG.setSignatureInfoEncoding(blob); sigG.setSignatureInfoEncoding(blob, 1000); From ec6b8fd2ac938a5600f5a463c2baa8398656a84c Mon Sep 17 00:00:00 2001 From: Junxiao Shi Date: Fri, 22 Mar 2019 12:04:42 -0400 Subject: [PATCH 19/20] ndn-js: Signature should be a class --- types/ndn-js/signature.d.ts | 12 ++++++------ types/ndn-js/test/signature.ts | 17 +++++++---------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/types/ndn-js/signature.d.ts b/types/ndn-js/signature.d.ts index f170494214..0f9eed260f 100644 --- a/types/ndn-js/signature.d.ts +++ b/types/ndn-js/signature.d.ts @@ -33,11 +33,11 @@ export class ValidityPeriod { clear(): void; } -export interface Signature { +export abstract class Signature { clone(): Signature; } -export class SignatureBase implements Signature { +export class SignatureBase extends Signature { constructor(); getSignature(): Blob; setSignature(sigValue: Blob): void; @@ -54,16 +54,16 @@ export class SignatureBaseKlVp extends SignatureBaseKl { setValidityPeriod(validity?: ValidityPeriod): void; } -export class DigestSha256Signature extends SignatureBase { -} - export class GenericSignature extends SignatureBase { constructor(); - getSignatureInfoEncoding(): Blob; getTypeCode(): number; + getSignatureInfoEncoding(): Blob; setSignatureInfoEncoding(encoding: Blob, typeCode?: number): void; } +export class DigestSha256Signature extends SignatureBase { +} + export class Sha256WithRsaSignature extends SignatureBaseKlVp { } diff --git a/types/ndn-js/test/signature.ts b/types/ndn-js/test/signature.ts index 0a8fdc26e9..65b809f1a6 100644 --- a/types/ndn-js/test/signature.ts +++ b/types/ndn-js/test/signature.ts @@ -2,15 +2,12 @@ import ndn = require("ndn-js"); let kl: ndn.KeyLocator = new ndn.KeyLocator(); kl = new ndn.KeyLocator(kl); - const klt: ndn.KeyLocatorType = kl.getType(); const name: ndn.Name = kl.getKeyName(); let blob: ndn.Blob = kl.getKeyData(); - kl.setType(ndn.KeyLocatorType.KEY_LOCATOR_DIGEST); kl.setKeyName(name); kl.setKeyData(blob); - kl.clear(); let validity: ndn.ValidityPeriod = new ndn.ValidityPeriod(); @@ -24,12 +21,6 @@ b = validity.isValid(594172800000); validity.equals(new ndn.ValidityPeriod()); validity.clear(); -let sig0 = new ndn.DigestSha256Signature(); -blob = sig0.getSignature(); -sig0.setSignature(blob); -sig0 = sig0.clone(); -let sig: ndn.Signature = sig0; - let sigG = new ndn.GenericSignature(); blob = sigG.getSignature(); blob = sigG.getSignatureInfoEncoding(); @@ -38,7 +29,13 @@ sigG.setSignature(blob); sigG.setSignatureInfoEncoding(blob); sigG.setSignatureInfoEncoding(blob, 1000); sigG = sigG.clone(); -sig = sigG; +let sig: ndn.Signature = sigG; + +let sig0 = new ndn.DigestSha256Signature(); +blob = sig0.getSignature(); +sig0.setSignature(blob); +sig0 = sig0.clone(); +sig = sig0; let sig1 = new ndn.Sha256WithRsaSignature(); kl = sig1.getKeyLocator(); From b3853e27d9a15ec41aff198a6334397f73f80aac Mon Sep 17 00:00:00 2001 From: Junxiao Shi Date: Fri, 22 Mar 2019 15:42:49 -0400 Subject: [PATCH 20/20] ndn-js: declare SigningInfo and fix tslint errors --- types/ndn-js/face.d.ts | 3 ++- types/ndn-js/key-chain.d.ts | 37 ++++++++++++++++++++++++---------- types/ndn-js/name.d.ts | 4 +--- types/ndn-js/test/key-chain.ts | 14 ++++++++++--- types/ndn-js/transport.d.ts | 4 +--- 5 files changed, 41 insertions(+), 21 deletions(-) diff --git a/types/ndn-js/face.d.ts b/types/ndn-js/face.d.ts index 18edf5ba34..09a8a84981 100644 --- a/types/ndn-js/face.d.ts +++ b/types/ndn-js/face.d.ts @@ -48,7 +48,8 @@ export class Face { unsetInterestFilter(id: number): void; } -export type ForwardingFlags = any; // no declaration because this type is rarely used +// no declaration because this type is rarely used +export class ForwardingFlags {} export class InterestFilter { constructor(filter: InterestFilter); diff --git a/types/ndn-js/key-chain.d.ts b/types/ndn-js/key-chain.d.ts index 1df70849c8..f2ad3612a5 100644 --- a/types/ndn-js/key-chain.d.ts +++ b/types/ndn-js/key-chain.d.ts @@ -26,18 +26,33 @@ export class KeyChain { deleteCertificate(key: PibKey, certificateName: Name, onComplete?: () => any, onError?: (err: any) => any): void; setDefaultCertificate(key: PibKey, certificate: CertificateV2, onComplete?: () => any, onError?: (err: any) => any): void; - sign(data: Data, params: SigningInfo, onComplete?: (data: Data) => any, onError?: (err: any) => any): void; sign(interest: Interest, params: SigningInfo, onComplete?: (interest: Interest) => any, onError?: (err: any) => any): void; - signWithSha256(data: Data): void; - // tslint:disable-next-line unified-signatures - signWithSha256(interest: Interest): void; + sign(data: Data, params: SigningInfo, onComplete?: (data: Data) => any, onError?: (err: any) => any): void; + signWithSha256(packet: Data|Interest): void; } // no declaration because these types are rarely used -export type CertificateV2 = any; -export type KeyParams = any; -export type Pib = any; -export type PibIdentity = any; -export type PibKey = any; -export type SigningInfo = any; -export type Tpm = any; +export class Pib {} +export class PibIdentity {} +export class PibKey {} +export class KeyParams {} +export class CertificateV2 {} +export class Tpm {} + +export class SigningInfo { + constructor(signerType: SigningInfo.SignerType, signerName: Name); + constructor(arg?: SigningInfo|PibIdentity|PibKey|string); + + getSignerType(): SigningInfo.SignerType; + getSignerName(): Name; +} + +export namespace SigningInfo { + enum SignerType { + NULL = 0, + ID = 1, + KEY = 2, + CERT = 3, + SHA256 = 4, + } +} diff --git a/types/ndn-js/name.d.ts b/types/ndn-js/name.d.ts index 40b8a99245..9b4d38733d 100644 --- a/types/ndn-js/name.d.ts +++ b/types/ndn-js/name.d.ts @@ -56,9 +56,7 @@ export class Name { constructor(name: Name|string); append(value: ReadonlyArray|ArrayBuffer|Uint8Array|string|Blob, type?: ComponentType, otherTypeCode?: number): Name; - append(component: Name.Component): Name; - // tslint:disable-next-line unified-signatures - append(name: Name): Name; + append(components: Name.Component|Name): Name; appendImplicitSha256Digest(digest: Blob): Name; appendParametersSha256Digest(digest: Blob): Name; appendSegment(segment: number): Name; diff --git a/types/ndn-js/test/key-chain.ts b/types/ndn-js/test/key-chain.ts index 4bfefc9f28..1f52abec86 100644 --- a/types/ndn-js/test/key-chain.ts +++ b/types/ndn-js/test/key-chain.ts @@ -8,7 +8,7 @@ const kp: ndn.KeyParams = ndn.KeyChain.getDefaultKeyParams(); const pib: ndn.Pib = kc.getPib(); const tpm: ndn.Tpm = kc.getTpm(); -const name = new ndn.Name("/key-name"); +let name = new ndn.Name("/key-name"); let id: ndn.PibIdentity = kc.createIdentityV2(name); id = kc.createIdentityV2(name, kp); @@ -30,10 +30,18 @@ kc.setDefaultKey(id, key); const cert: ndn.CertificateV2 = {}; kc.addCertificate(key, cert); -kc.deleteCertificate(key, cert); +kc.deleteCertificate(key, name); kc.setDefaultCertificate(key, cert); -const si: ndn.SigningInfo = {}; +let si: ndn.SigningInfo = new ndn.SigningInfo(); +si = new ndn.SigningInfo(ndn.SigningInfo.SignerType.ID, name); +si = new ndn.SigningInfo(si); +si = new ndn.SigningInfo(id); +si = new ndn.SigningInfo(key); +si = new ndn.SigningInfo("id:/my-identity"); +const signerType: ndn.SigningInfo.SignerType = si.getSignerType(); +name = si.getSignerName(); + kc.sign(new ndn.Data(), si, (data: ndn.Data) => {}); kc.sign(new ndn.Interest(), si, (interest: ndn.Interest) => {}); kc.signWithSha256(new ndn.Data()); diff --git a/types/ndn-js/transport.d.ts b/types/ndn-js/transport.d.ts index ec4b17d0c9..9a2c4db918 100644 --- a/types/ndn-js/transport.d.ts +++ b/types/ndn-js/transport.d.ts @@ -33,9 +33,7 @@ export class WebSocketTransport extends Transport { export namespace WebSocketTransport { class ConnectionInfo extends TransportConnectionInfo { - // tslint:disable-next-line unified-signatures - constructor(host: string, port: number); - constructor(uri: string); + constructor(hostOrUri: string, port?: number); equals(other: ConnectionInfo): boolean; toString(): string; }