@astrox/identity 0.0.9 → 0.0.14
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/lib/esm/buffer.js.map +1 -1
- package/lib/esm/identity/delegation.js.map +1 -1
- package/lib/esm/identity/der.d.ts +9 -0
- package/lib/esm/identity/der.js +34 -7
- package/lib/esm/identity/der.js.map +1 -1
- package/lib/esm/identity/secp256k1.d.ts +73 -0
- package/lib/esm/identity/secp256k1.js +148 -0
- package/lib/esm/identity/secp256k1.js.map +1 -0
- package/lib/tsconfig-cjs.tsbuildinfo +2 -2
- package/lib/tsconfig.tsbuildinfo +1761 -996
- package/package.json +4 -14
- package/types/borc.d.ts +1 -1
package/lib/esm/buffer.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"buffer.js","sourceRoot":"","sources":["../../src/buffer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB;;IAC7C,OAAO,IAAI,UAAU,CAAC,
|
1
|
+
{"version":3,"file":"buffer.js","sourceRoot":"","sources":["../../src/buffer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB;;IAC7C,OAAO,IAAI,UAAU,CAAC,CAAC,MAAA,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,mCAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACnG,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAkB;IAC5C,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACnG,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"delegation.js","sourceRoot":"","sources":["../../../src/identity/delegation.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"delegation.js","sourceRoot":"","sources":["../../../src/identity/delegation.ts"],"names":[],"mappings":"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"}
|
@@ -1,3 +1,8 @@
|
|
1
|
+
export declare const bufEquals: (b1: ArrayBuffer, b2: ArrayBuffer) => boolean;
|
2
|
+
export declare const encodeLenBytes: (len: number) => number;
|
3
|
+
export declare const encodeLen: (buf: Uint8Array, offset: number, len: number) => number;
|
4
|
+
export declare const decodeLenBytes: (buf: Uint8Array, offset: number) => number;
|
5
|
+
export declare const decodeLen: (buf: Uint8Array, offset: number) => number;
|
1
6
|
/**
|
2
7
|
* A DER encoded `SEQUENCE(OID)` for DER-encoded-COSE
|
3
8
|
*/
|
@@ -6,6 +11,10 @@ export declare const DER_COSE_OID: Uint8Array;
|
|
6
11
|
* A DER encoded `SEQUENCE(OID)` for the Ed25519 algorithm
|
7
12
|
*/
|
8
13
|
export declare const ED25519_OID: Uint8Array;
|
14
|
+
/**
|
15
|
+
* A DER encoded `SEQUENCE(OID)` for secp256k1 with the ECDSA algorithm
|
16
|
+
*/
|
17
|
+
export declare const SECP256K1_OID: Uint8Array;
|
9
18
|
/**
|
10
19
|
* Wraps the given `payload` in a DER encoding tagged with the given encoded `oid` like so:
|
11
20
|
* `SEQUENCE(oid, BITSTRING(payload))`
|
package/lib/esm/identity/der.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
const bufEquals = (b1, b2) => {
|
1
|
+
export const bufEquals = (b1, b2) => {
|
2
2
|
if (b1.byteLength !== b2.byteLength)
|
3
3
|
return false;
|
4
4
|
const u1 = new Uint8Array(b1);
|
@@ -9,7 +9,7 @@ const bufEquals = (b1, b2) => {
|
|
9
9
|
}
|
10
10
|
return true;
|
11
11
|
};
|
12
|
-
const encodeLenBytes = (len) => {
|
12
|
+
export const encodeLenBytes = (len) => {
|
13
13
|
if (len <= 0x7f) {
|
14
14
|
return 1;
|
15
15
|
}
|
@@ -26,7 +26,7 @@ const encodeLenBytes = (len) => {
|
|
26
26
|
throw new Error('Length too long (> 4 bytes)');
|
27
27
|
}
|
28
28
|
};
|
29
|
-
const encodeLen = (buf, offset, len) => {
|
29
|
+
export const encodeLen = (buf, offset, len) => {
|
30
30
|
if (len <= 0x7f) {
|
31
31
|
buf[offset] = len;
|
32
32
|
return 1;
|
@@ -53,7 +53,7 @@ const encodeLen = (buf, offset, len) => {
|
|
53
53
|
throw new Error('Length too long (> 4 bytes)');
|
54
54
|
}
|
55
55
|
};
|
56
|
-
const decodeLenBytes = (buf, offset) => {
|
56
|
+
export const decodeLenBytes = (buf, offset) => {
|
57
57
|
if (buf[offset] < 0x80)
|
58
58
|
return 1;
|
59
59
|
if (buf[offset] === 0x80)
|
@@ -66,13 +66,25 @@ const decodeLenBytes = (buf, offset) => {
|
|
66
66
|
return 4;
|
67
67
|
throw new Error('Length too long (> 4 bytes)');
|
68
68
|
};
|
69
|
+
export const decodeLen = (buf, offset) => {
|
70
|
+
const lenBytes = decodeLenBytes(buf, offset);
|
71
|
+
if (lenBytes === 1)
|
72
|
+
return buf[offset];
|
73
|
+
else if (lenBytes === 2)
|
74
|
+
return buf[offset + 1];
|
75
|
+
else if (lenBytes === 3)
|
76
|
+
return (buf[offset + 1] << 8) + buf[offset + 2];
|
77
|
+
else if (lenBytes === 4)
|
78
|
+
return (buf[offset + 1] << 16) + (buf[offset + 2] << 8) + buf[offset + 3];
|
79
|
+
throw new Error('Length too long (> 4 bytes)');
|
80
|
+
};
|
69
81
|
/**
|
70
82
|
* A DER encoded `SEQUENCE(OID)` for DER-encoded-COSE
|
71
83
|
*/
|
72
84
|
export const DER_COSE_OID = Uint8Array.from([
|
73
85
|
...[0x30, 0x0c],
|
74
86
|
...[0x06, 0x0a],
|
75
|
-
...[0x2b, 0x06, 0x01, 0x04, 0x01, 0x83, 0xb8, 0x43, 0x01, 0x01],
|
87
|
+
...[0x2b, 0x06, 0x01, 0x04, 0x01, 0x83, 0xb8, 0x43, 0x01, 0x01], // DER encoded COSE
|
76
88
|
]);
|
77
89
|
/**
|
78
90
|
* A DER encoded `SEQUENCE(OID)` for the Ed25519 algorithm
|
@@ -80,7 +92,17 @@ export const DER_COSE_OID = Uint8Array.from([
|
|
80
92
|
export const ED25519_OID = Uint8Array.from([
|
81
93
|
...[0x30, 0x05],
|
82
94
|
...[0x06, 0x03],
|
83
|
-
...[0x2b, 0x65, 0x70],
|
95
|
+
...[0x2b, 0x65, 0x70], // id-Ed25519 OID
|
96
|
+
]);
|
97
|
+
/**
|
98
|
+
* A DER encoded `SEQUENCE(OID)` for secp256k1 with the ECDSA algorithm
|
99
|
+
*/
|
100
|
+
export const SECP256K1_OID = Uint8Array.from([
|
101
|
+
...[0x30, 0x10],
|
102
|
+
...[0x06, 0x07],
|
103
|
+
...[0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01],
|
104
|
+
...[0x06, 0x05],
|
105
|
+
...[0x2b, 0x81, 0x04, 0x00, 0x0a], // OID secp256k1
|
84
106
|
]);
|
85
107
|
/**
|
86
108
|
* Wraps the given `payload` in a DER encoding tagged with the given encoded `oid` like so:
|
@@ -134,8 +156,13 @@ export const unwrapDER = (derEncoded, oid) => {
|
|
134
156
|
}
|
135
157
|
offset += oid.byteLength;
|
136
158
|
expect(0x03, 'bit string');
|
159
|
+
const payloadLen = decodeLen(buf, offset) - 1; // Subtracting 1 to account for the 0 padding
|
137
160
|
offset += decodeLenBytes(buf, offset);
|
138
161
|
expect(0x00, '0 padding');
|
139
|
-
|
162
|
+
const result = buf.slice(offset);
|
163
|
+
if (payloadLen !== result.length) {
|
164
|
+
throw new Error(`DER payload mismatch: Expected length ${payloadLen} actual length ${result.length}`);
|
165
|
+
}
|
166
|
+
return result;
|
140
167
|
};
|
141
168
|
//# sourceMappingURL=der.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"der.js","sourceRoot":"","sources":["../../../src/identity/der.ts"],"names":[],"mappings":"AAAA,MAAM,SAAS,GAAG,CAAC,EAAe,EAAE,EAAe,EAAW,EAAE;
|
1
|
+
{"version":3,"file":"der.js","sourceRoot":"","sources":["../../../src/identity/der.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,73 @@
|
|
1
|
+
import { DerEncodedPublicKey, KeyPair, Signature } from '@astrox/agent';
|
2
|
+
import { PublicKey, SignIdentity } from '@astrox/agent';
|
3
|
+
declare type PublicKeyHex = string;
|
4
|
+
declare type SecretKeyHex = string;
|
5
|
+
export declare type JsonableSecp256k1Identity = [PublicKeyHex, SecretKeyHex];
|
6
|
+
export declare class Secp256k1PublicKey implements PublicKey {
|
7
|
+
/**
|
8
|
+
* Construct Secp256k1PublicKey from an existing PublicKey
|
9
|
+
* @param {PublicKey} key
|
10
|
+
* @returns {Secp256k1PublicKey} Instance of Secp256k1PublicKey
|
11
|
+
*/
|
12
|
+
static from(key: PublicKey): Secp256k1PublicKey;
|
13
|
+
static fromRaw(rawKey: ArrayBuffer): Secp256k1PublicKey;
|
14
|
+
static fromDer(derKey: DerEncodedPublicKey): Secp256k1PublicKey;
|
15
|
+
private static derEncode;
|
16
|
+
private static derDecode;
|
17
|
+
private readonly rawKey;
|
18
|
+
private readonly derKey;
|
19
|
+
private constructor();
|
20
|
+
toDer(): DerEncodedPublicKey;
|
21
|
+
toRaw(): ArrayBuffer;
|
22
|
+
}
|
23
|
+
export declare class Secp256k1KeyIdentity extends SignIdentity {
|
24
|
+
protected _privateKey: ArrayBuffer;
|
25
|
+
/**
|
26
|
+
* Generates an identity. If a seed is provided, the keys are generated from the
|
27
|
+
* seed according to BIP 0032. Otherwise, the key pair is randomly generated.
|
28
|
+
* This method throws an error in case the seed is not 32 bytes long or invalid
|
29
|
+
* for use as a private key.
|
30
|
+
* @param {Uint8Array} seed the optional seed
|
31
|
+
* @returns {Secp256k1KeyIdentity}
|
32
|
+
*/
|
33
|
+
static generate(seed?: Uint8Array): Secp256k1KeyIdentity;
|
34
|
+
static fromParsedJson(obj: JsonableSecp256k1Identity): Secp256k1KeyIdentity;
|
35
|
+
static fromJSON(json: string): Secp256k1KeyIdentity;
|
36
|
+
/**
|
37
|
+
* generates an identity from a public and private key. Please ensure that you are generating these keys securely and protect the user's private key
|
38
|
+
* @param {ArrayBuffer} publicKey
|
39
|
+
* @param {ArrayBuffer} privateKey
|
40
|
+
* @returns {Secp256k1KeyIdentity}
|
41
|
+
*/
|
42
|
+
static fromKeyPair(publicKey: ArrayBuffer, privateKey: ArrayBuffer): Secp256k1KeyIdentity;
|
43
|
+
/**
|
44
|
+
* generates an identity from an existing secret key, and is the correct method to generate an identity from a seed phrase. Please ensure you protect the user's private key.
|
45
|
+
* @param {ArrayBuffer} secretKey
|
46
|
+
* @returns {Secp256k1KeyIdentity}
|
47
|
+
*/
|
48
|
+
static fromSecretKey(secretKey: ArrayBuffer): Secp256k1KeyIdentity;
|
49
|
+
protected _publicKey: Secp256k1PublicKey;
|
50
|
+
protected constructor(publicKey: Secp256k1PublicKey, _privateKey: ArrayBuffer);
|
51
|
+
/**
|
52
|
+
* Serialize this key to JSON-serializable object.
|
53
|
+
* @returns {JsonableSecp256k1Identity}
|
54
|
+
*/
|
55
|
+
toJSON(): JsonableSecp256k1Identity;
|
56
|
+
/**
|
57
|
+
* Return a copy of the key pair.
|
58
|
+
* @returns {KeyPair}
|
59
|
+
*/
|
60
|
+
getKeyPair(): KeyPair;
|
61
|
+
/**
|
62
|
+
* Return the public key.
|
63
|
+
* @returns {Secp256k1PublicKey}
|
64
|
+
*/
|
65
|
+
getPublicKey(): Secp256k1PublicKey;
|
66
|
+
/**
|
67
|
+
* Signs a blob of data, with this identity's private key.
|
68
|
+
* @param {ArrayBuffer} challenge - challenge to sign with this identity's secretKey, producing a signature
|
69
|
+
* @returns {Promise<Signature>} signature
|
70
|
+
*/
|
71
|
+
sign(challenge: ArrayBuffer): Promise<Signature>;
|
72
|
+
}
|
73
|
+
export default Secp256k1KeyIdentity;
|
@@ -0,0 +1,148 @@
|
|
1
|
+
import { SignIdentity } from '@astrox/agent';
|
2
|
+
import { sha256 } from 'js-sha256';
|
3
|
+
import Secp256k1 from 'secp256k1';
|
4
|
+
import { randomBytes } from 'tweetnacl';
|
5
|
+
import { fromHexString, toHexString } from '../buffer';
|
6
|
+
import { SECP256K1_OID, unwrapDER, wrapDER } from './der';
|
7
|
+
export class Secp256k1PublicKey {
|
8
|
+
// `fromRaw` and `fromDer` should be used for instantiation, not this constructor.
|
9
|
+
constructor(key) {
|
10
|
+
key.byteLength;
|
11
|
+
this.rawKey = key;
|
12
|
+
this.derKey = Secp256k1PublicKey.derEncode(key);
|
13
|
+
}
|
14
|
+
/**
|
15
|
+
* Construct Secp256k1PublicKey from an existing PublicKey
|
16
|
+
* @param {PublicKey} key
|
17
|
+
* @returns {Secp256k1PublicKey} Instance of Secp256k1PublicKey
|
18
|
+
*/
|
19
|
+
static from(key) {
|
20
|
+
return this.fromDer(key.toDer());
|
21
|
+
}
|
22
|
+
static fromRaw(rawKey) {
|
23
|
+
return new Secp256k1PublicKey(rawKey);
|
24
|
+
}
|
25
|
+
static fromDer(derKey) {
|
26
|
+
return new Secp256k1PublicKey(this.derDecode(derKey));
|
27
|
+
}
|
28
|
+
static derEncode(publicKey) {
|
29
|
+
return wrapDER(publicKey, SECP256K1_OID).buffer;
|
30
|
+
}
|
31
|
+
static derDecode(key) {
|
32
|
+
return unwrapDER(key, SECP256K1_OID);
|
33
|
+
}
|
34
|
+
toDer() {
|
35
|
+
return this.derKey;
|
36
|
+
}
|
37
|
+
toRaw() {
|
38
|
+
return this.rawKey;
|
39
|
+
}
|
40
|
+
}
|
41
|
+
export class Secp256k1KeyIdentity extends SignIdentity {
|
42
|
+
constructor(publicKey, _privateKey) {
|
43
|
+
super();
|
44
|
+
this._privateKey = _privateKey;
|
45
|
+
this._publicKey = publicKey;
|
46
|
+
}
|
47
|
+
/**
|
48
|
+
* Generates an identity. If a seed is provided, the keys are generated from the
|
49
|
+
* seed according to BIP 0032. Otherwise, the key pair is randomly generated.
|
50
|
+
* This method throws an error in case the seed is not 32 bytes long or invalid
|
51
|
+
* for use as a private key.
|
52
|
+
* @param {Uint8Array} seed the optional seed
|
53
|
+
* @returns {Secp256k1KeyIdentity}
|
54
|
+
*/
|
55
|
+
static generate(seed) {
|
56
|
+
if (seed && seed.byteLength !== 32) {
|
57
|
+
throw new Error('Secp256k1 Seed needs to be 32 bytes long.');
|
58
|
+
}
|
59
|
+
let privateKey;
|
60
|
+
if (seed) {
|
61
|
+
// private key from seed according to https://en.bitcoin.it/wiki/BIP_0032
|
62
|
+
// master key generation:
|
63
|
+
privateKey = seed;
|
64
|
+
if (!Secp256k1.privateKeyVerify(privateKey)) {
|
65
|
+
throw new Error('The seed is invalid.');
|
66
|
+
}
|
67
|
+
}
|
68
|
+
else {
|
69
|
+
privateKey = new Uint8Array(randomBytes(32));
|
70
|
+
while (!Secp256k1.privateKeyVerify(privateKey)) {
|
71
|
+
privateKey = new Uint8Array(randomBytes(32));
|
72
|
+
}
|
73
|
+
}
|
74
|
+
const publicKeyRaw = Secp256k1.publicKeyCreate(privateKey, false);
|
75
|
+
const publicKey = Secp256k1PublicKey.fromRaw(publicKeyRaw);
|
76
|
+
return new this(publicKey, privateKey);
|
77
|
+
}
|
78
|
+
static fromParsedJson(obj) {
|
79
|
+
const [publicKeyRaw, privateKeyRaw] = obj;
|
80
|
+
return new Secp256k1KeyIdentity(Secp256k1PublicKey.fromRaw(fromHexString(publicKeyRaw)), fromHexString(privateKeyRaw));
|
81
|
+
}
|
82
|
+
static fromJSON(json) {
|
83
|
+
const parsed = JSON.parse(json);
|
84
|
+
if (Array.isArray(parsed)) {
|
85
|
+
if (typeof parsed[0] === 'string' && typeof parsed[1] === 'string') {
|
86
|
+
return this.fromParsedJson([parsed[0], parsed[1]]);
|
87
|
+
}
|
88
|
+
throw new Error('Deserialization error: JSON must have at least 2 items.');
|
89
|
+
}
|
90
|
+
throw new Error(`Deserialization error: Invalid JSON type for string: ${JSON.stringify(json)}`);
|
91
|
+
}
|
92
|
+
/**
|
93
|
+
* generates an identity from a public and private key. Please ensure that you are generating these keys securely and protect the user's private key
|
94
|
+
* @param {ArrayBuffer} publicKey
|
95
|
+
* @param {ArrayBuffer} privateKey
|
96
|
+
* @returns {Secp256k1KeyIdentity}
|
97
|
+
*/
|
98
|
+
static fromKeyPair(publicKey, privateKey) {
|
99
|
+
return new Secp256k1KeyIdentity(Secp256k1PublicKey.fromRaw(publicKey), privateKey);
|
100
|
+
}
|
101
|
+
/**
|
102
|
+
* generates an identity from an existing secret key, and is the correct method to generate an identity from a seed phrase. Please ensure you protect the user's private key.
|
103
|
+
* @param {ArrayBuffer} secretKey
|
104
|
+
* @returns {Secp256k1KeyIdentity}
|
105
|
+
*/
|
106
|
+
static fromSecretKey(secretKey) {
|
107
|
+
const publicKey = Secp256k1.publicKeyCreate(new Uint8Array(secretKey), false);
|
108
|
+
const identity = Secp256k1KeyIdentity.fromKeyPair(publicKey, new Uint8Array(secretKey));
|
109
|
+
return identity;
|
110
|
+
}
|
111
|
+
/**
|
112
|
+
* Serialize this key to JSON-serializable object.
|
113
|
+
* @returns {JsonableSecp256k1Identity}
|
114
|
+
*/
|
115
|
+
toJSON() {
|
116
|
+
return [toHexString(this._publicKey.toRaw()), toHexString(this._privateKey)];
|
117
|
+
}
|
118
|
+
/**
|
119
|
+
* Return a copy of the key pair.
|
120
|
+
* @returns {KeyPair}
|
121
|
+
*/
|
122
|
+
getKeyPair() {
|
123
|
+
return {
|
124
|
+
secretKey: this._privateKey,
|
125
|
+
publicKey: this._publicKey,
|
126
|
+
};
|
127
|
+
}
|
128
|
+
/**
|
129
|
+
* Return the public key.
|
130
|
+
* @returns {Secp256k1PublicKey}
|
131
|
+
*/
|
132
|
+
getPublicKey() {
|
133
|
+
return this._publicKey;
|
134
|
+
}
|
135
|
+
/**
|
136
|
+
* Signs a blob of data, with this identity's private key.
|
137
|
+
* @param {ArrayBuffer} challenge - challenge to sign with this identity's secretKey, producing a signature
|
138
|
+
* @returns {Promise<Signature>} signature
|
139
|
+
*/
|
140
|
+
async sign(challenge) {
|
141
|
+
const hash = sha256.create();
|
142
|
+
hash.update(challenge);
|
143
|
+
const signature = Secp256k1.ecdsaSign(new Uint8Array(hash.digest()), new Uint8Array(this._privateKey)).signature.buffer;
|
144
|
+
return signature;
|
145
|
+
}
|
146
|
+
}
|
147
|
+
export default Secp256k1KeyIdentity;
|
148
|
+
//# sourceMappingURL=secp256k1.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"secp256k1.js","sourceRoot":"","sources":["../../../src/identity/secp256k1.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,YAAY,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAM1D,MAAM,OAAO,kBAAkB;IA8B7B,kFAAkF;IAClF,YAAoB,GAAgB;QAClC,GAAG,CAAC,UAAU,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC;IAlCD;;;;OAIG;IACI,MAAM,CAAC,IAAI,CAAC,GAAc;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IACnC,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,MAAmB;QACvC,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,MAA2B;QAC/C,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IAEO,MAAM,CAAC,SAAS,CAAC,SAAsB;QAC7C,OAAO,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,MAA6B,CAAC;IACzE,CAAC;IAEO,MAAM,CAAC,SAAS,CAAC,GAAwB;QAC/C,OAAO,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IACvC,CAAC;IAaM,KAAK;QACV,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,YAAY;IA6EpD,YAAsB,SAA6B,EAAY,WAAwB;QACrF,KAAK,EAAE,CAAC;QADqD,gBAAW,GAAX,WAAW,CAAa;QAErF,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IA/ED;;;;;;;OAOG;IACI,MAAM,CAAC,QAAQ,CAAC,IAAiB;QACtC,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,EAAE,EAAE;YAClC,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;SAC9D;QACD,IAAI,UAAsB,CAAC;QAE3B,IAAI,IAAI,EAAE;YACR,yEAAyE;YACzE,yBAAyB;YACzB,UAAU,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE;gBAC3C,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;aACzC;SACF;aAAM;YACL,UAAU,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE;gBAC9C,UAAU,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;aAC9C;SACF;QAED,MAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAElE,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC3D,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACzC,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,GAA8B;QACzD,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,GAAG,GAAG,CAAC;QAC1C,OAAO,IAAI,oBAAoB,CAC7B,kBAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,EACvD,aAAa,CAAC,aAAa,CAAC,CAC7B,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,IAAY;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACzB,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;gBAClE,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACpD;YACD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;SAC5E;QACD,MAAM,IAAI,KAAK,CAAC,wDAAwD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClG,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,WAAW,CAAC,SAAsB,EAAE,UAAuB;QACvE,OAAO,IAAI,oBAAoB,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,CAAC;IACrF,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,aAAa,CAAC,SAAsB;QAChD,MAAM,SAAS,GAAG,SAAS,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;QAC9E,MAAM,QAAQ,GAAG,oBAAoB,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;QACxF,OAAO,QAAQ,CAAC;IAClB,CAAC;IASD;;;OAGG;IACI,MAAM;QACX,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED;;;OAGG;IACI,UAAU;QACf,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,WAAW;YAC3B,SAAS,EAAE,IAAI,CAAC,UAAU;SAC3B,CAAC;IACJ,CAAC;IAED;;;OAGG;IACI,YAAY;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,IAAI,CAAC,SAAsB;QACtC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACvB,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CACnC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAC7B,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CACjC,CAAC,SAAS,CAAC,MAAM,CAAC;QACnB,OAAO,SAAsB,CAAC;IAChC,CAAC;CACF;AAED,eAAe,oBAAoB,CAAC"}
|
@@ -237,8 +237,8 @@
|
|
237
237
|
"affectsGlobalScope": false
|
238
238
|
},
|
239
239
|
"../../agent/lib/cjs/agent/http/index.d.ts": {
|
240
|
-
"version": "
|
241
|
-
"signature": "
|
240
|
+
"version": "28236054da1a90e2a87d9db5ab316da3ed95e6455516b8b5201e5fb8755b4ea9",
|
241
|
+
"signature": "28236054da1a90e2a87d9db5ab316da3ed95e6455516b8b5201e5fb8755b4ea9",
|
242
242
|
"affectsGlobalScope": false
|
243
243
|
},
|
244
244
|
"../../agent/lib/cjs/agent/proxy.d.ts": {
|