saro-dat 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/crypto.d.ts CHANGED
@@ -5,8 +5,9 @@ export declare class DatCryptoKey {
5
5
  readonly key: CryptoKey;
6
6
  constructor(algorithm: DatCryptoAlgorithm, key: CryptoKey);
7
7
  static generate(algorithm: DatCryptoAlgorithm): Promise<DatCryptoKey>;
8
- static import(algorithmString: string, base64: string): Promise<DatCryptoKey>;
9
- export(): Promise<string>;
10
- encrypt(data: string | ArrayBuffer | Uint8Array | Buffer | null | undefined): Promise<ArrayBuffer>;
11
- decrypt(data: ArrayBuffer | null | undefined): Promise<ArrayBuffer>;
8
+ static imports(algorithmString: string, base64: string): Promise<DatCryptoKey>;
9
+ exports(): Promise<string>;
10
+ encrypt(data: ArrayBuffer): Promise<ArrayBuffer>;
11
+ decrypt(data: ArrayBuffer): Promise<ArrayBuffer>;
12
12
  }
13
+ //# sourceMappingURL=crypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,YAAY,CAAC;AAW7D,qBAAa,YAAY;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,SAAgB,SAAS,EAAE,kBAAkB,CAAC;IAC9C,SAAgB,GAAG,EAAE,SAAS,CAAC;gBAG3B,SAAS,EAAE,kBAAkB,EAC7B,GAAG,EAAE,SAAS;WAOL,QAAQ,CAAC,SAAS,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;WAU9D,OAAO,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAe9E,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAI1B,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAehD,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;CAezD"}
package/dist/crypto.js CHANGED
@@ -1,6 +1,5 @@
1
- // @ts-ignore
2
- import { concatArrayBufferLike, decodeBase64, encodeBase64Url, toArrayBuffer } from "./index.ts";
3
- const allAlgorithms = ["AES128GCMN", "AES256GCMN"];
1
+ import { concatArrayBufferLike, decodeBase64, encodeBase64Url } from "./index.js";
2
+ const algorithms = ["AES128GCMN", "AES256GCMN"];
4
3
  const CRYPTO_CONFIG = {
5
4
  AES128GCMN: { name: "AES-GCM", length: 128 },
6
5
  AES256GCMN: { name: "AES-GCM", length: 256 },
@@ -21,8 +20,8 @@ export class DatCryptoKey {
21
20
  const key = await crypto.subtle.generateKey({ name: config.name, length: config.length }, true, ["encrypt", "decrypt"]);
22
21
  return new DatCryptoKey(algorithm, key);
23
22
  }
24
- static async import(algorithmString, base64) {
25
- if (!allAlgorithms.includes(algorithmString)) {
23
+ static async imports(algorithmString, base64) {
24
+ if (!algorithms.includes(algorithmString)) {
26
25
  throw new Error(`Unsupported algorithm: ${algorithmString}`);
27
26
  }
28
27
  const algorithm = algorithmString;
@@ -33,34 +32,33 @@ export class DatCryptoKey {
33
32
  const key = await crypto.subtle.importKey("raw", bytes, { name: config.name }, true, ["encrypt", "decrypt"]);
34
33
  return new DatCryptoKey(algorithm, key);
35
34
  }
36
- async export() {
35
+ async exports() {
37
36
  return encodeBase64Url(await crypto.subtle.exportKey("raw", this.key));
38
37
  }
39
38
  async encrypt(data) {
40
- const bytes = toArrayBuffer(data);
41
- if (!bytes) {
39
+ if (!data) {
42
40
  return new ArrayBuffer(0);
43
41
  }
44
42
  if (this.config.name == "AES-GCM") {
45
43
  const nonce = new Uint8Array(12);
46
44
  crypto.getRandomValues(nonce);
47
- const encrypt = await crypto.subtle.encrypt({ name: this.config.name, iv: nonce }, this.key, bytes);
45
+ const encrypt = await crypto.subtle.encrypt({ name: this.config.name, iv: nonce }, this.key, data);
48
46
  return concatArrayBufferLike(nonce.buffer, encrypt);
49
47
  }
50
48
  throw new Error("Unsupported algorithm");
51
49
  }
52
50
  async decrypt(data) {
53
- const bytes = toArrayBuffer(data);
54
- if (!bytes) {
51
+ if (!data) {
55
52
  return new ArrayBuffer(0);
56
53
  }
57
54
  if (this.config.name == "AES-GCM") {
58
- if (bytes.byteLength <= 12) {
55
+ if (data.byteLength <= 12) {
59
56
  throw new Error("Invalid data length");
60
57
  }
61
- const nonce = bytes.slice(0, 12);
62
- return await crypto.subtle.decrypt({ name: this.config.name, iv: nonce }, this.key, bytes.slice(12));
58
+ const nonce = data.slice(0, 12);
59
+ return await crypto.subtle.decrypt({ name: this.config.name, iv: nonce }, this.key, data.slice(12));
63
60
  }
64
61
  throw new Error("Unsupported algorithm");
65
62
  }
66
63
  }
64
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,13 @@
1
- import { DatKey } from "./index.ts";
2
- import type { DatSignatureKeyOutOption } from "./index.ts";
1
+ import { DatKey, DatPayload, DatPayloadBuffer, DatSignatureKeyOutOption } from "./index.js";
3
2
  export declare class DatBank {
4
- private issueKey;
5
- private verifyKeys;
3
+ private readonly issueKey;
4
+ private readonly verifyKeys;
6
5
  constructor(issueKey?: DatKey | null, verifyKeys?: DatKey[]);
7
- static import(format: string): Promise<DatBank>;
8
- export(datSignatureKeyOutOption: DatSignatureKeyOutOption): Promise<string>;
9
- findKey(kid: string): DatKey | null;
10
- toDat(plain: ArrayBuffer | null | undefined, secure: ArrayBuffer | null | undefined): Promise<ArrayBuffer>;
11
- toPayload(dat: string): Promise<ArrayBuffer>;
6
+ static imports(format: string): Promise<DatBank>;
7
+ exports(datSignatureKeyOutOption: DatSignatureKeyOutOption): Promise<string>;
8
+ find(kid: string): DatKey | null;
9
+ toDat(plain: string | ArrayBuffer, secure: string | ArrayBuffer): Promise<string>;
10
+ toPayloadBuffer(dat: string): Promise<DatPayloadBuffer>;
11
+ toPayload(dat: string): Promise<DatPayload>;
12
12
  }
13
+ //# sourceMappingURL=dat.bank.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dat.bank.d.ts","sourceRoot":"","sources":["../src/dat.bank.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,wBAAwB,EAI3B,MAAM,YAAY,CAAC;AAEpB,qBAAa,OAAO;IAChB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAW;gBAC1B,QAAQ,GAAE,MAAM,GAAG,IAAW,EAAE,UAAU,GAAE,MAAM,EAAO;WAKxD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBhD,OAAO,CAAC,wBAAwB,EAAE,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC;IAQlF,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI1B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAC,WAAW,EAAE,MAAM,EAAE,MAAM,GAAC,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAO7E,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAYvD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAGpD"}
package/dist/dat.bank.js CHANGED
@@ -1,5 +1,4 @@
1
- // @ts-ignore
2
- import { DatKey, } from "./index.ts";
1
+ import { DatKey, serializePayload, splitDat, toArrayBuffer } from "./index.js";
3
2
  export class DatBank {
4
3
  issueKey;
5
4
  verifyKeys;
@@ -7,44 +6,49 @@ export class DatBank {
7
6
  this.issueKey = issueKey;
8
7
  this.verifyKeys = verifyKeys;
9
8
  }
10
- static async import(format) {
9
+ static async imports(format) {
11
10
  const now = Math.floor(new Date().getTime() / 1000);
12
11
  const lines = format.split('\n').map(e => e.trim()).filter(e => !!e);
13
12
  let keys = [];
14
13
  for (const line of lines) {
15
14
  keys.push(await DatKey.import(line));
16
15
  }
16
+ if (keys.length != new Set(keys.map(e => e.kid)).size) {
17
+ throw new Error('duplicate kid');
18
+ }
17
19
  keys.sort((a, b) => a.issueBegin - b.issueBegin);
18
- const issueKey = keys.findLast(e => e.issueBegin <= now && e.issueEnd > now) || null;
20
+ const issueKey = keys.findLast(e => e.hasSigningKey() && e.issueBegin <= now && e.issueEnd > now) || null;
19
21
  return new DatBank(issueKey, keys);
20
22
  }
21
- async export(datSignatureKeyOutOption) {
23
+ async exports(datSignatureKeyOutOption) {
22
24
  let lines = [];
23
25
  for (const key of this.verifyKeys) {
24
26
  lines.push(await key.export(datSignatureKeyOutOption));
25
27
  }
26
28
  return lines.join('\n');
27
29
  }
28
- findKey(kid) {
30
+ find(kid) {
29
31
  return this.verifyKeys.find(e => e.kid === kid) || null;
30
32
  }
31
33
  async toDat(plain, secure) {
32
34
  if (this.issueKey) {
33
- return this.issueKey.toDat(plain, secure);
35
+ return await this.issueKey.toDat(toArrayBuffer(plain), toArrayBuffer(secure));
34
36
  }
35
37
  throw new Error("issue key does not exist");
36
38
  }
37
- async toPayload(dat) {
38
- if (!dat) {
39
- throw new Error("dat is required");
39
+ async toPayloadBuffer(dat) {
40
+ const parts = splitDat(dat);
41
+ if (parts.error) {
42
+ return Promise.reject("invalid dat format");
40
43
  }
41
- const kid = dat.split('.')?.[1] || null;
42
- if (kid != null) {
43
- const key = this.findKey(kid);
44
- if (key) {
45
- return key.toPayload(dat);
46
- }
44
+ const key = this.find(parts.kid);
45
+ if (key != null) {
46
+ return key.toPayloadBuffer(parts);
47
47
  }
48
- throw new Error("invalid dat");
48
+ return Promise.reject("invalid dat");
49
+ }
50
+ async toPayload(dat) {
51
+ return this.toPayloadBuffer(dat).then(serializePayload);
49
52
  }
50
53
  }
54
+ //# sourceMappingURL=dat.bank.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dat.bank.js","sourceRoot":"","sources":["../src/dat.bank.ts"],"names":[],"mappings":"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"}
package/dist/dat.key.d.ts CHANGED
@@ -1,5 +1,4 @@
1
- import { DatCryptoKey, DatSignatureKey } from "./index.ts";
2
- import type { DatSignatureKeyOutOption } from "./index.ts";
1
+ import { DatCryptoKey, type DatParts, type DatPayload, type DatPayloadBuffer, DatSignatureKey, type DatSignatureKeyOutOption } from "./index.js";
3
2
  export declare class DatKey {
4
3
  readonly kid: string;
5
4
  readonly signatureKey: DatSignatureKey;
@@ -11,6 +10,9 @@ export declare class DatKey {
11
10
  export(datSignatureKeyOutOption: DatSignatureKeyOutOption): Promise<string>;
12
11
  static import(format: string): Promise<DatKey>;
13
12
  private static _import_ver_2;
14
- toDat(plain: ArrayBuffer | null | undefined, secure: ArrayBuffer | null | undefined): Promise<ArrayBuffer>;
15
- toPayload(dat: string): Promise<ArrayBuffer>;
13
+ toDat(plainIn: ArrayBuffer, secureIn: ArrayBuffer): Promise<string>;
14
+ toPayload(parts: DatParts | string): Promise<DatPayload>;
15
+ toPayloadBuffer(parts: DatParts | string): Promise<DatPayloadBuffer>;
16
+ hasSigningKey(): boolean;
16
17
  }
18
+ //# sourceMappingURL=dat.key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dat.key.d.ts","sourceRoot":"","sources":["../src/dat.key.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,YAAY,EACZ,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,eAAe,EACf,KAAK,wBAAwB,EAMhC,MAAM,YAAY,CAAC;AAGpB,qBAAa,MAAM;IACf,SAAgB,GAAG,EAAE,MAAM,CAAC;IAC5B,SAAgB,YAAY,EAAE,eAAe,CAAC;IAC9C,SAAgB,SAAS,EAAE,YAAY,CAAC;IACxC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,QAAQ,EAAE,MAAM,CAAC;gBAG7B,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,eAAe,EAC7B,SAAS,EAAE,YAAY,EACvB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM;IAgBd,MAAM,CAAC,wBAAwB,EAAE,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC;WAYpE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;mBAW/B,aAAa;IAU5B,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAWnE,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAC,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAItD,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAC,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwBxE,aAAa,IAAI,OAAO;CAG3B"}
package/dist/dat.key.js CHANGED
@@ -1,5 +1,4 @@
1
- // @ts-ignore
2
- import { DAT_VERSION, DatCryptoKey, DatSignatureKey, toArrayBuffer, } from "./index.ts";
1
+ import { DAT_VERSION, DatCryptoKey, DatSignatureKey, decodeBase64, encodeBase64Url, serializePayload, splitDat, toArrayBuffer } from "./index.js";
3
2
  export class DatKey {
4
3
  kid;
5
4
  signatureKey;
@@ -24,9 +23,9 @@ export class DatKey {
24
23
  async export(datSignatureKeyOutOption) {
25
24
  const kid = this.kid;
26
25
  const signAlg = this.signatureKey.algorithm;
27
- const signKey = await this.signatureKey.export(datSignatureKeyOutOption);
26
+ const signKey = await this.signatureKey.exports(datSignatureKeyOutOption);
28
27
  const cryptoAlg = this.cryptoKey.algorithm;
29
- const cryptoKey = await this.cryptoKey.export();
28
+ const cryptoKey = await this.cryptoKey.exports();
30
29
  const issueBegin = this.issueBegin;
31
30
  const issueEnd = this.issueEnd;
32
31
  const tokenTtl = this.tokenTtl;
@@ -45,24 +44,50 @@ export class DatKey {
45
44
  }
46
45
  static async _import_ver_2(split) {
47
46
  const kid = split[1];
48
- const signKey = await DatSignatureKey.import(split[2], split[3]);
49
- const cryptoKey = await DatCryptoKey.import(split[4], split[5]);
47
+ const signKey = await DatSignatureKey.imports(split[2], split[3]);
48
+ const cryptoKey = await DatCryptoKey.imports(split[4], split[5]);
50
49
  const issueBegin = Number(split[6]);
51
50
  const issueEnd = Number(split[7]);
52
51
  const tokenTtl = Number(split[8]);
53
52
  return new DatKey(kid, signKey, cryptoKey, issueBegin, issueEnd, tokenTtl);
54
53
  }
55
- async toDat(plain, secure) {
56
- const bytes = toArrayBuffer(plain);
57
- if (!bytes) {
58
- return new ArrayBuffer(0);
59
- }
60
- throw new Error("Unsupported algorithm");
54
+ async toDat(plainIn, secureIn) {
55
+ const now = Math.floor(new Date().getTime() / 1000);
56
+ const exp = now + this.tokenTtl;
57
+ const kid = this.kid;
58
+ const plain = encodeBase64Url(plainIn || new ArrayBuffer(0));
59
+ const secure = encodeBase64Url(await this.cryptoKey.encrypt(secureIn || new ArrayBuffer(0)));
60
+ const body = `${exp}.${kid}.${plain}.${secure}`;
61
+ const sign = encodeBase64Url(await this.signatureKey.sign(toArrayBuffer(body)));
62
+ return `${body}.${sign}`;
61
63
  }
62
- async toPayload(dat) {
63
- if (!dat) {
64
- throw new Error("dat is required");
64
+ async toPayload(parts) {
65
+ return this.toPayloadBuffer(parts).then(serializePayload);
66
+ }
67
+ async toPayloadBuffer(parts) {
68
+ if (typeof parts === 'string') {
69
+ parts = splitDat(parts);
70
+ }
71
+ if (parts.error) {
72
+ return Promise.reject("invalid format");
65
73
  }
66
- throw new Error("Unsupported algorithm");
74
+ const exp = parts.expire;
75
+ if (exp < (new Date().getTime() / 1000)) {
76
+ return Promise.reject('expired');
77
+ }
78
+ if (parts.kid != this.kid) {
79
+ return Promise.reject('invalid kid');
80
+ }
81
+ const body = toArrayBuffer(parts.dat.substring(0, parts.dat.lastIndexOf('.')));
82
+ if (!await this.signatureKey.verify(body, toArrayBuffer(decodeBase64(parts.signature)))) {
83
+ return Promise.reject('invalid signature');
84
+ }
85
+ const plain = decodeBase64(parts.plain);
86
+ const secure = Buffer.from(await this.cryptoKey.decrypt(toArrayBuffer(decodeBase64(parts.secure))));
87
+ return ({ expire: exp, plain, secure, });
88
+ }
89
+ hasSigningKey() {
90
+ return this.signatureKey.hasSigningKey();
67
91
  }
68
92
  }
93
+ //# sourceMappingURL=dat.key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dat.key.js","sourceRoot":"","sources":["../src/dat.key.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export declare const DAT_VERSION = "2";
2
- export * from './crypto.ts';
3
- export * from './dat.key.ts';
4
- export * from './dat.bank.ts';
5
- export * from './signature.ts';
6
- export * from './util.ts';
2
+ export * from "./crypto.js";
3
+ export * from "./dat.key.js";
4
+ export * from "./dat.bank.js";
5
+ export * from "./signature.js";
6
+ export * from "./util.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -1,11 +1,7 @@
1
- export const DAT_VERSION = '2';
2
- // @ts-ignore
3
- export * from './crypto.ts';
4
- // @ts-ignore
5
- export * from './dat.key.ts';
6
- // @ts-ignore
7
- export * from './dat.bank.ts';
8
- // @ts-ignore
9
- export * from './signature.ts';
10
- // @ts-ignore
11
- export * from './util.ts';
1
+ export const DAT_VERSION = "2";
2
+ export * from "./crypto.js";
3
+ export * from "./dat.key.js";
4
+ export * from "./dat.bank.js";
5
+ export * from "./signature.js";
6
+ export * from "./util.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC;AAE/B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC"}
@@ -3,12 +3,14 @@ export type DatSignatureKeyOutOption = "FULL" | "SIGNING" | "VERIFYING";
3
3
  export declare class DatSignatureKey {
4
4
  private readonly config;
5
5
  readonly algorithm: DatSignatureAlgorithm;
6
- readonly signingKey: CryptoKey | null;
7
- readonly verifyingKey: CryptoKey;
6
+ private readonly signingKey;
7
+ private readonly verifyingKey;
8
8
  constructor(algorithm: DatSignatureAlgorithm, SigningKey: CryptoKey | null, VerifyingKey: CryptoKey);
9
9
  static generate(algorithm: DatSignatureAlgorithm): Promise<DatSignatureKey>;
10
- static import(algorithmString: string, format: string): Promise<DatSignatureKey>;
11
- export(option: DatSignatureKeyOutOption): Promise<string>;
12
- sign(data: ArrayBuffer | null | undefined): Promise<ArrayBuffer>;
13
- verify(data: ArrayBuffer | null | undefined, signature: ArrayBuffer | null | undefined): Promise<boolean>;
10
+ static imports(algorithmString: string, format: string): Promise<DatSignatureKey>;
11
+ exports(option: DatSignatureKeyOutOption): Promise<string>;
12
+ sign(data: ArrayBuffer): Promise<ArrayBuffer>;
13
+ verify(body: ArrayBuffer, signature: ArrayBuffer): Promise<boolean>;
14
+ hasSigningKey(): boolean;
14
15
  }
16
+ //# sourceMappingURL=signature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAC7D,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC;AAYxE,qBAAa,eAAe;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,SAAgB,SAAS,EAAE,qBAAqB,CAAC;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAY;gBAGrC,SAAS,EAAE,qBAAqB,EAChC,UAAU,EAAE,SAAS,GAAG,IAAI,EAC5B,YAAY,EAAE,SAAS;WAQd,QAAQ,CAAC,SAAS,EAAE,qBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC;WAYpE,OAAO,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAoFjF,OAAO,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC;IAkB1D,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAgB7C,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAezE,aAAa,IAAI,OAAO;CAG3B"}
package/dist/signature.js CHANGED
@@ -1,7 +1,6 @@
1
- // @ts-ignore
2
- import { decodeBase64, encodeBase64Url, normalizeBase64Url } from "./index.ts";
1
+ import { decodeBase64, encodeBase64Url } from "./index.js";
3
2
  import { p256, p384, p521 } from '@noble/curves/nist.js';
4
- const allAlgorithms = ["P256", "P384", "P521"];
3
+ const algorithms = ["P256", "P384", "P521"];
5
4
  const SIGNATURE_CONFIG = {
6
5
  P256: { name: "ECDSA", curve: 'P-256', hash: 'SHA-256' },
7
6
  P384: { name: "ECDSA", curve: 'P-384', hash: 'SHA-384' },
@@ -25,8 +24,8 @@ export class DatSignatureKey {
25
24
  const { publicKey, privateKey } = await crypto.subtle.generateKey({ name: config.name, namedCurve: config.curve, }, true, ["sign", "verify"]);
26
25
  return new DatSignatureKey(algorithm, privateKey, publicKey);
27
26
  }
28
- static async import(algorithmString, format) {
29
- if (!allAlgorithms.includes(algorithmString)) {
27
+ static async imports(algorithmString, format) {
28
+ if (!algorithms.includes(algorithmString)) {
30
29
  throw new Error(`Unsupported algorithm: ${algorithmString}`);
31
30
  }
32
31
  const algorithm = algorithmString;
@@ -97,12 +96,12 @@ export class DatSignatureKey {
97
96
  }
98
97
  return new DatSignatureKey(algorithm, signingKey, verifyingKey);
99
98
  }
100
- async export(option) {
99
+ async exports(option) {
101
100
  let rv = "";
102
101
  if (option == "FULL" || option == "SIGNING") {
103
102
  if (this.signingKey) {
104
103
  let jwk = await crypto.subtle.exportKey("jwk", this.signingKey);
105
- rv += normalizeBase64Url(jwk.d);
104
+ rv += jwk.d;
106
105
  }
107
106
  else {
108
107
  throw new Error("this key is verifying only");
@@ -125,13 +124,17 @@ export class DatSignatureKey {
125
124
  hash: { name: this.config.hash },
126
125
  }, this.signingKey, data);
127
126
  }
128
- async verify(data, signature) {
129
- if (!data || !signature) {
127
+ async verify(body, signature) {
128
+ if (!body || !signature) {
130
129
  return false;
131
130
  }
132
131
  return crypto.subtle.verify({
133
132
  name: this.config.name,
134
133
  hash: { name: this.config.hash },
135
- }, this.verifyingKey, signature, data);
134
+ }, this.verifyingKey, signature, body);
135
+ }
136
+ hasSigningKey() {
137
+ return this.signingKey !== null;
136
138
  }
137
139
  }
140
+ //# sourceMappingURL=signature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature.js","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,eAAe,EAAC,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,uBAAuB,CAAC;AAMvD,MAAM,UAAU,GAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAIrE,MAAM,gBAAgB,GAAmD;IACrE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;IACxD,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;IACxD,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;CAC3D,CAAC;AAEF,MAAM,OAAO,eAAe;IACP,MAAM,CAAkB;IACzB,SAAS,CAAwB;IAChC,UAAU,CAAmB;IAC7B,YAAY,CAAY;IAEzC,YACI,SAAgC,EAChC,UAA4B,EAC5B,YAAuB;QAEvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAgC;QAClD,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,SAAS,EAAE,CAAC,CAAC;QAEpE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,CAC7D,EAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,KAAK,GAAE,EAC9C,IAAI,EACJ,CAAC,MAAM,EAAE,QAAQ,CAAC,CACrB,CAAC;QACF,OAAO,IAAI,eAAe,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,eAAuB,EAAE,MAAc;QACxD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,eAAwC,CAAC,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,0BAA0B,eAAe,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,SAAS,GAAG,eAAwC,CAAC;QAC3D,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,SAAS,EAAE,CAAC,CAAC;QAEpE,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,gBAAgB,GAAW,EAAE,CAAC;QAClC,IAAI,UAAU,GAAqB,IAAI,CAAC;QACxC,IAAI,iBAAiB,GAAmC,IAAI,CAAC;QAC7D,IAAI,YAAY,GAAqB,IAAI,CAAC;QAE1C,IAAI,KAAY,CAAC;QACjB,QAAQ,SAAS,EAAE,CAAC;YAChB,KAAK,MAAM;gBAAE,KAAK,GAAG,IAAI,CAAC;gBAAC,MAAM;YACjC,KAAK,MAAM;gBAAE,KAAK,GAAG,IAAI,CAAC;gBAAC,MAAM;YACjC,KAAK,MAAM;gBAAE,KAAK,GAAG,IAAI,CAAC;gBAAC,MAAM;YACjC;gBACI,MAAM,IAAI,KAAK,CAAC,0BAA0B,SAAS,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACX,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAChC,CAAC;QACL,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACX,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAChC,CAAC;YACD,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACX,iBAAiB,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC;QACL,CAAC;QAED,IAAI,gBAAgB,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;YAE9C,sBAAsB;YACtB,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAEtD,wCAAwC;YACxC,MAAM,aAAa,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,aAAa,EAAE,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC;YAE3E,MAAM,GAAG,GAAG;gBACR,GAAG,EAAE,IAAI;gBACT,GAAG,EAAE,MAAM,CAAC,KAAK;gBACjB,CAAC,EAAE,gBAAgB;gBACnB,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACzC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACzC,GAAG,EAAE,IAAI;aACZ,CAAC;YAEF,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CACtC,KAAK,EACL,GAAG,EACH,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,KAAK,EAAE,EAC3C,IAAI,EACJ,CAAC,MAAM,CAAC,CACX,CAAC;QACN,CAAC;QACD,IAAI,CAAC,iBAAiB,IAAI,gBAAgB,EAAE,CAAC;YACzC,iBAAiB,GAAG,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAC,CAAA;QACjF,CAAC;QACD,IAAI,iBAAiB,EAAE,CAAC;YACpB,YAAY,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CACxC,KAAK,EAAE,iBAAiB,EACxB,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,KAAK,EAAE,EAC/C,IAAI,EACJ,CAAC,QAAQ,CAAC,CACb,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,eAAe,CAAC,SAAS,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAgC;QAC1C,IAAI,EAAE,GAAG,EAAE,CAAC;QAEZ,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,SAAS,EAAE,CAAC;YAC1C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBAChE,EAAE,IAAI,GAAG,CAAC,CAAG,CAAA;YACjB,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAClD,CAAC;QACL,CAAC;QACD,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,WAAW,EAAE,CAAC;YAC5C,EAAE,IAAI,GAAG,GAAG,eAAe,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAA;QACxF,CAAC;QAED,OAAO,EAAE,CAAC;IACd,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAiB;QACxB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CACrB;YACI,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YACtB,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;SACnC,EACD,IAAI,CAAC,UAAU,EACf,IAAI,CACP,CAAA;IACL,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,IAAiB,EAAE,SAAsB;QAClD,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CACvB;YACI,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YACtB,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;SACnC,EACD,IAAI,CAAC,YAAY,EACjB,SAAS,EACT,IAAI,CACP,CAAA;IACL,CAAC;IAED,aAAa;QACT,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC;IACpC,CAAC;CACJ"}
package/dist/util.d.ts CHANGED
@@ -1,8 +1,29 @@
1
- export declare function normalizeBase64Url(base64: string): string;
1
+ export type DatParts = {
2
+ error: boolean;
3
+ dat: string;
4
+ expire: number;
5
+ kid: string;
6
+ plain: string;
7
+ secure: string;
8
+ signature: string;
9
+ };
10
+ export type DatPayload = {
11
+ expire: number;
12
+ plain: string;
13
+ secure: string;
14
+ };
15
+ export type DatPayloadBuffer = {
16
+ expire: number;
17
+ plain: Buffer;
18
+ secure: Buffer;
19
+ };
2
20
  export declare function encodeBase64Url(data: any): string;
3
- export declare function decodeBase64String(b64: string | ArrayBuffer | null | undefined): string;
4
- export declare function decodeBase64(b64: string | ArrayBuffer | null | undefined): Buffer;
21
+ export declare function decodeBase64String(b64: any): string;
22
+ export declare function decodeBase64(b64: any): Buffer;
5
23
  export declare function concatArrayBufferLike(arr1: ArrayBufferLike, arr2: ArrayBufferLike): ArrayBuffer;
6
24
  export declare function toArrayBuffer(data: string | ArrayBuffer | Uint8Array | SharedArrayBuffer | Buffer | null | undefined): ArrayBuffer;
7
25
  export declare function randomString(length: number, mold: string): string;
8
26
  export declare function randomBase62(length: number): string;
27
+ export declare function splitDat(dat: string | null | undefined): DatParts;
28
+ export declare function serializePayload(payloadBuffer: DatPayloadBuffer): DatPayload;
29
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,QAAQ,GAAG;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAaF,wBAAgB,eAAe,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,CAcjD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAEnD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAa7C;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,GAAG,WAAW,CAK/F;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,iBAAiB,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,CA0BlI;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAIjE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,QAAQ,CAejE;AAED,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,GAAG,UAAU,CAM5E"}
package/dist/util.js CHANGED
@@ -1,37 +1,36 @@
1
1
  const asciiDecoder = new TextDecoder('ascii');
2
2
  const textEncoder = new TextEncoder();
3
3
  const base62arr = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
4
- export function normalizeBase64Url(base64) {
5
- return base64.replace(/[+\/=]/g, (ch) => {
6
- switch (ch) {
7
- case '+': return '-';
8
- case '/': return '_';
9
- }
10
- return '';
11
- });
12
- }
4
+ // function normalizeBase64Url(base64: string): string {
5
+ // return base64.replace(/[+\/=]/g, (ch: string) => {
6
+ // switch (ch) {
7
+ // case '+': return '-';
8
+ // case '/': return '_';
9
+ // }
10
+ // return '';
11
+ // });
12
+ // }
13
13
  export function encodeBase64Url(data) {
14
14
  if (!data) {
15
15
  return '';
16
16
  }
17
17
  if (typeof data === 'string') {
18
- return normalizeBase64Url(Buffer.from(data).toString('base64'));
18
+ return Buffer.from(data).toString('base64url');
19
19
  }
20
20
  else if (data instanceof ArrayBuffer) {
21
- return normalizeBase64Url(Buffer.from(data).toString('base64'));
21
+ return Buffer.from(data).toString('base64url');
22
22
  }
23
23
  else if (data instanceof Uint8Array) {
24
- return normalizeBase64Url(Buffer.from(data).toString('base64'));
24
+ return Buffer.from(data).toString('base64url');
25
25
  }
26
26
  else if (data instanceof Buffer) {
27
- return normalizeBase64Url(data.toString('base64'));
27
+ return data.toString('base64url');
28
28
  }
29
29
  throw new Error('Unsupported data type');
30
30
  }
31
31
  export function decodeBase64String(b64) {
32
32
  return decodeBase64(b64).toString('utf-8');
33
33
  }
34
- // @ts-ignore
35
34
  export function decodeBase64(b64) {
36
35
  if (!b64) {
37
36
  return Buffer.alloc(0);
@@ -81,3 +80,27 @@ export function randomString(length, mold) {
81
80
  export function randomBase62(length) {
82
81
  return randomString(length, base62arr);
83
82
  }
83
+ export function splitDat(dat) {
84
+ const parts = dat?.split('.') || [];
85
+ if (dat && parts.length == 5) {
86
+ let exp = Number(parts[0] || 'x');
87
+ let kid = parts[1];
88
+ let plain = parts[2];
89
+ let secure = parts[3];
90
+ let sign = parts[4];
91
+ if (Number.isInteger(exp) && sign) {
92
+ return ({
93
+ error: false, dat, expire: exp, kid, plain, secure, signature: sign
94
+ });
95
+ }
96
+ }
97
+ return ({ error: true, dat: dat || '', expire: 0, kid: '', plain: '', secure: '', signature: '' });
98
+ }
99
+ export function serializePayload(payloadBuffer) {
100
+ return ({
101
+ expire: payloadBuffer.expire,
102
+ plain: payloadBuffer.plain.toString('utf-8'),
103
+ secure: payloadBuffer.secure.toString('utf-8'),
104
+ });
105
+ }
106
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "saro-dat",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "Distributed Access Token",
5
5
  "keywords": [
6
6
  "dat",
@@ -8,31 +8,41 @@
8
8
  "access",
9
9
  "token"
10
10
  ],
11
- "homepage": "https://github.com/saro-lab/dat-npm#readme",
11
+ "author": "marker",
12
+ "license": "MIT",
13
+ "homepage": "https://dat.saro.me/",
12
14
  "bugs": {
13
15
  "url": "https://github.com/saro-lab/dat-npm/issues"
14
16
  },
15
17
  "repository": {
16
18
  "type": "git",
17
- "url": "git+https://github.com/saro-lab/dat-npm.git"
19
+ "url": "https://github.com/saro-lab/dat-npm"
20
+ },
21
+ "type": "module",
22
+ "main": "./dist/index.cjs",
23
+ "module": "./dist/index.js",
24
+ "types": "./dist/index.d.ts",
25
+ "exports": {
26
+ ".": {
27
+ "types": "./dist/index.d.ts",
28
+ "import": "./dist/index.js",
29
+ "require": "./dist/index.cjs"
30
+ }
18
31
  },
19
- "license": "MIT",
20
- "author": "marker",
21
- "main": "dist/index.js",
22
- "types": "dist/index.d.ts",
23
32
  "files": [
24
- "dist/**"
33
+ "dist"
25
34
  ],
26
35
  "scripts": {
27
- "build": "tsc",
28
- "--test": "node --test dist/**/*.test.js",
29
- "pretest": "npm run build"
30
- },
31
- "devDependencies": {
32
- "@types/node": "^25.6.0",
33
- "typescript": "^6.0.3"
36
+ "build": "tsc && tsc -p tsconfig.json",
37
+ "test": "vitest run",
38
+ "prepublishOnly": "npm run build"
34
39
  },
35
40
  "dependencies": {
36
41
  "@noble/curves": "^2.2.0"
42
+ },
43
+ "devDependencies": {
44
+ "@types/node": "^25.6.0",
45
+ "typescript": "^6.0.3",
46
+ "vitest": "^4.1.5"
37
47
  }
38
48
  }
package/dist/dat.d.ts DELETED
@@ -1 +0,0 @@
1
- export declare function dat(key: string): string;
package/dist/dat.js DELETED
@@ -1,3 +0,0 @@
1
- export function dat(key) {
2
- return `dat:${key}`;
3
- }