@sphereon/did-auth-siop-adapter 0.14.1-next.10
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/LICENSE +201 -0
- package/README.md +13 -0
- package/dist/DidJwtAdapter.d.ts +17 -0
- package/dist/DidJwtAdapter.d.ts.map +1 -0
- package/dist/DidJwtAdapter.js +57 -0
- package/dist/DidJwtAdapter.js.map +1 -0
- package/dist/did/DIDResolution.d.ts +18 -0
- package/dist/did/DIDResolution.d.ts.map +1 -0
- package/dist/did/DIDResolution.js +119 -0
- package/dist/did/DIDResolution.js.map +1 -0
- package/dist/did/DidJWT.d.ts +57 -0
- package/dist/did/DidJWT.d.ts.map +1 -0
- package/dist/did/DidJWT.js +247 -0
- package/dist/did/DidJWT.js.map +1 -0
- package/dist/did/LinkedDomainValidations.d.ts +3 -0
- package/dist/did/LinkedDomainValidations.d.ts.map +1 -0
- package/dist/did/LinkedDomainValidations.js +102 -0
- package/dist/did/LinkedDomainValidations.js.map +1 -0
- package/dist/did/index.d.ts +4 -0
- package/dist/did/index.d.ts.map +1 -0
- package/dist/did/index.js +20 -0
- package/dist/did/index.js.map +1 -0
- package/dist/helpers.d.ts +5 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +10 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/types/SIOP.types.d.ts +63 -0
- package/dist/types/SIOP.types.d.ts.map +1 -0
- package/dist/types/SIOP.types.js +15 -0
- package/dist/types/SIOP.types.js.map +1 -0
- package/dist/types/SSI.types.d.ts +15 -0
- package/dist/types/SSI.types.d.ts.map +1 -0
- package/dist/types/SSI.types.js +3 -0
- package/dist/types/SSI.types.js.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +19 -0
- package/dist/types/index.js.map +1 -0
- package/lib/DidJwtAdapter.ts +67 -0
- package/lib/did/DIDResolution.ts +117 -0
- package/lib/did/DidJWT.ts +273 -0
- package/lib/did/LinkedDomainValidations.ts +98 -0
- package/lib/did/index.ts +3 -0
- package/lib/helpers.ts +10 -0
- package/lib/index.ts +5 -0
- package/lib/types/SIOP.types.ts +77 -0
- package/lib/types/SSI.types.ts +16 -0
- package/lib/types/index.ts +2 -0
- package/package.json +53 -0
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.toSIOPRegistrationDidMethod = exports.getMethodFromDid = exports.isIssSelfIssued = exports.getSubDidFromPayload = exports.getAudience = exports.signDidJwtInternal = exports.signRequestObjectPayload = exports.signIDTokenPayload = exports.createDidJWT = exports.verifyDidJWT = void 0;
|
|
13
|
+
const did_auth_siop_1 = require("@sphereon/did-auth-siop");
|
|
14
|
+
const did_auth_siop_2 = require("@sphereon/did-auth-siop");
|
|
15
|
+
const did_jwt_1 = require("did-jwt");
|
|
16
|
+
const helpers_1 = require("../helpers");
|
|
17
|
+
/**
|
|
18
|
+
* Verifies given JWT. If the JWT is valid, the promise returns an object including the JWT, the payload of the JWT,
|
|
19
|
+
* and the did doc of the issuer of the JWT.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* verifyDidJWT('did:key:example', resolver, {audience: '5A8bRWU3F7j3REx3vkJ...', callbackUrl: 'https://...'}).then(obj => {
|
|
23
|
+
* const did = obj.did // DIDres of signer
|
|
24
|
+
* const payload = obj.payload
|
|
25
|
+
* const doc = obj.doc // DIDres Document of signer
|
|
26
|
+
* const JWT = obj.JWT // JWT
|
|
27
|
+
* const signerKeyId = obj.signerKeyId // ID of key in DIDres document that signed JWT
|
|
28
|
+
* ...
|
|
29
|
+
* })
|
|
30
|
+
*
|
|
31
|
+
* @param {String} jwt a JSON Web Token to verify
|
|
32
|
+
* @param {Resolvable} resolver
|
|
33
|
+
* @param {JWTVerifyOptions} [options] Options
|
|
34
|
+
* @param {String} options.audience DID of the recipient of the JWT
|
|
35
|
+
* @param {String} options.callbackUrl callback url in JWT
|
|
36
|
+
* @return {Promise<Object, Error>} a promise which resolves with a response object or rejects with an error
|
|
37
|
+
*/
|
|
38
|
+
function verifyDidJWT(jwt, resolver, options) {
|
|
39
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
40
|
+
return (0, did_jwt_1.verifyJWT)(jwt, Object.assign(Object.assign({}, options), { resolver }));
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
exports.verifyDidJWT = verifyDidJWT;
|
|
44
|
+
/**
|
|
45
|
+
* Creates a signed JWT given an address which becomes the issuer, a signer function, and a payload for which the withSignature is over.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* const signer = ES256KSigner(process.env.PRIVATE_KEY)
|
|
49
|
+
* createJWT({address: '5A8bRWU3F7j3REx3vkJ...', signer}, {key1: 'value', key2: ..., ... }).then(JWT => {
|
|
50
|
+
* ...
|
|
51
|
+
* })
|
|
52
|
+
*
|
|
53
|
+
* @param {Object} payload payload object
|
|
54
|
+
* @param {Object} [options] an unsigned credential object
|
|
55
|
+
* @param {String} options.issuer The DID of the issuer (signer) of JWT
|
|
56
|
+
* @param {Signer} options.signer a `Signer` function, Please see `ES256KSigner` or `EdDSASigner`
|
|
57
|
+
* @param {boolean} options.canonicalize optional flag to canonicalize header and payload before signing
|
|
58
|
+
* @param {Object} header optional object to specify or customize the JWT header
|
|
59
|
+
* @return {Promise<Object, Error>} a promise which resolves with a signed JSON Web Token or rejects with an error
|
|
60
|
+
*/
|
|
61
|
+
function createDidJWT(payload_1, _a, header_1) {
|
|
62
|
+
return __awaiter(this, arguments, void 0, function* (payload, { issuer, signer, expiresIn, canonicalize }, header) {
|
|
63
|
+
return (0, did_jwt_1.createJWT)(payload, { issuer, signer, expiresIn, canonicalize }, header);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
exports.createDidJWT = createDidJWT;
|
|
67
|
+
function signIDTokenPayload(payload, signature) {
|
|
68
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
69
|
+
if ((0, helpers_1.isInternalSignature)(signature)) {
|
|
70
|
+
return signDidJwtInternal(payload, payload.issuer, signature.hexPrivateKey, signature.alg, signature.kid, signature.customJwtSigner);
|
|
71
|
+
}
|
|
72
|
+
else if ((0, helpers_1.isExternalSignature)(signature)) {
|
|
73
|
+
return signDidJwtExternal(payload, signature.signatureUri, signature.authZToken, signature.alg, signature.kid);
|
|
74
|
+
}
|
|
75
|
+
else if ((0, helpers_1.isSuppliedSignature)(signature)) {
|
|
76
|
+
return signDidJwtSupplied(payload, payload.issuer, signature.signature, signature.alg, signature.kid);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
throw new Error('Signature parameters should be internal signature with hexPrivateKey, did, and an optional kid, or external signature parameters with signatureUri, did, and optionals parameters authZToken, hexPublicKey, and kid');
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
exports.signIDTokenPayload = signIDTokenPayload;
|
|
84
|
+
function signRequestObjectPayload(payload, signature) {
|
|
85
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
86
|
+
let issuer = payload.iss;
|
|
87
|
+
if (!issuer) {
|
|
88
|
+
issuer = signature.did;
|
|
89
|
+
}
|
|
90
|
+
if (!issuer) {
|
|
91
|
+
throw Error('No issuer supplied to sign the JWT');
|
|
92
|
+
}
|
|
93
|
+
if (!payload.iss) {
|
|
94
|
+
payload.iss = issuer;
|
|
95
|
+
}
|
|
96
|
+
if (!payload.sub) {
|
|
97
|
+
payload.sub = signature.did;
|
|
98
|
+
}
|
|
99
|
+
if ((0, helpers_1.isInternalSignature)(signature)) {
|
|
100
|
+
return signDidJwtInternal(payload, issuer, signature.hexPrivateKey, signature.alg, signature.kid, signature.customJwtSigner);
|
|
101
|
+
}
|
|
102
|
+
else if ((0, helpers_1.isExternalSignature)(signature)) {
|
|
103
|
+
return signDidJwtExternal(payload, signature.signatureUri, signature.authZToken, signature.alg, signature.kid);
|
|
104
|
+
}
|
|
105
|
+
else if ((0, helpers_1.isSuppliedSignature)(signature)) {
|
|
106
|
+
return signDidJwtSupplied(payload, issuer, signature.signature, signature.alg, signature.kid);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
throw new Error('Signature parameters should be internal signature with hexPrivateKey, did, and an optional kid, or external signature parameters with signatureUri, did, and optionals parameters authZToken, hexPublicKey, and kid');
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
exports.signRequestObjectPayload = signRequestObjectPayload;
|
|
114
|
+
function signDidJwtInternal(payload, issuer, hexPrivateKey, alg, kid, customJwtSigner) {
|
|
115
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
116
|
+
const signer = determineSigner(alg, hexPrivateKey, customJwtSigner);
|
|
117
|
+
const header = {
|
|
118
|
+
alg,
|
|
119
|
+
kid,
|
|
120
|
+
};
|
|
121
|
+
const options = {
|
|
122
|
+
issuer,
|
|
123
|
+
signer,
|
|
124
|
+
expiresIn: did_auth_siop_2.DEFAULT_EXPIRATION_TIME,
|
|
125
|
+
};
|
|
126
|
+
return yield createDidJWT(Object.assign({}, payload), options, header);
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
exports.signDidJwtInternal = signDidJwtInternal;
|
|
130
|
+
function signDidJwtExternal(payload, signatureUri, authZToken, alg, kid) {
|
|
131
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
132
|
+
const body = {
|
|
133
|
+
issuer: payload.iss && payload.iss.includes('did:') ? payload.iss : payload.sub,
|
|
134
|
+
payload,
|
|
135
|
+
expiresIn: did_auth_siop_2.DEFAULT_EXPIRATION_TIME,
|
|
136
|
+
alg,
|
|
137
|
+
selfIssued: payload.iss.includes(did_auth_siop_2.ResponseIss.SELF_ISSUED_V2) ? payload.iss : undefined,
|
|
138
|
+
kid,
|
|
139
|
+
};
|
|
140
|
+
const response = yield (0, did_auth_siop_1.post)(signatureUri, JSON.stringify(body), { bearerToken: authZToken });
|
|
141
|
+
return response.successBody.jws;
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
function signDidJwtSupplied(payload, issuer, signer, alg, kid) {
|
|
145
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
146
|
+
const header = {
|
|
147
|
+
alg,
|
|
148
|
+
kid,
|
|
149
|
+
};
|
|
150
|
+
const options = {
|
|
151
|
+
issuer,
|
|
152
|
+
signer,
|
|
153
|
+
expiresIn: did_auth_siop_2.DEFAULT_EXPIRATION_TIME,
|
|
154
|
+
};
|
|
155
|
+
return yield createDidJWT(Object.assign({}, payload), options, header);
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
const determineSigner = (alg, hexPrivateKey, customSigner) => {
|
|
159
|
+
if (customSigner) {
|
|
160
|
+
return customSigner;
|
|
161
|
+
}
|
|
162
|
+
else if (!hexPrivateKey) {
|
|
163
|
+
throw new Error('no private key provided');
|
|
164
|
+
}
|
|
165
|
+
const privateKey = (0, did_jwt_1.hexToBytes)(hexPrivateKey.replace('0x', ''));
|
|
166
|
+
switch (alg) {
|
|
167
|
+
case did_auth_siop_2.SigningAlgo.EDDSA:
|
|
168
|
+
return (0, did_jwt_1.EdDSASigner)(privateKey);
|
|
169
|
+
case did_auth_siop_2.SigningAlgo.ES256:
|
|
170
|
+
return (0, did_jwt_1.ES256Signer)(privateKey);
|
|
171
|
+
case did_auth_siop_2.SigningAlgo.ES256K:
|
|
172
|
+
return (0, did_jwt_1.ES256KSigner)(privateKey);
|
|
173
|
+
case did_auth_siop_2.SigningAlgo.PS256:
|
|
174
|
+
throw Error('PS256 is not supported yet. Please provide a custom signer');
|
|
175
|
+
case did_auth_siop_2.SigningAlgo.RS256:
|
|
176
|
+
throw Error('RS256 is not supported yet. Please provide a custom signer');
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
function getAudience(jwt) {
|
|
180
|
+
const { payload } = (0, did_jwt_1.decodeJWT)(jwt);
|
|
181
|
+
if (!payload) {
|
|
182
|
+
throw new Error(did_auth_siop_2.SIOPErrors.NO_AUDIENCE);
|
|
183
|
+
}
|
|
184
|
+
else if (!payload.aud) {
|
|
185
|
+
return undefined;
|
|
186
|
+
}
|
|
187
|
+
else if (Array.isArray(payload.aud)) {
|
|
188
|
+
throw new Error(did_auth_siop_2.SIOPErrors.INVALID_AUDIENCE);
|
|
189
|
+
}
|
|
190
|
+
return payload.aud;
|
|
191
|
+
}
|
|
192
|
+
exports.getAudience = getAudience;
|
|
193
|
+
//TODO To enable automatic registration, it cannot be a did, but HTTPS URL
|
|
194
|
+
function assertIssSelfIssuedOrDid(payload) {
|
|
195
|
+
if (!payload.sub || !payload.sub.startsWith('did:') || !payload.iss || !isIssSelfIssued(payload)) {
|
|
196
|
+
throw new Error('Token does not have a iss DID');
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
function getSubDidFromPayload(payload, header) {
|
|
200
|
+
assertIssSelfIssuedOrDid(payload);
|
|
201
|
+
if (isIssSelfIssued(payload)) {
|
|
202
|
+
let did;
|
|
203
|
+
if (payload.sub && payload.sub.startsWith('did:')) {
|
|
204
|
+
did = payload.sub;
|
|
205
|
+
}
|
|
206
|
+
if (!did && header && header.kid && header.kid.startsWith('did:')) {
|
|
207
|
+
did = header.kid.split('#')[0];
|
|
208
|
+
}
|
|
209
|
+
if (did) {
|
|
210
|
+
return did;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return payload.sub;
|
|
214
|
+
}
|
|
215
|
+
exports.getSubDidFromPayload = getSubDidFromPayload;
|
|
216
|
+
function isIssSelfIssued(payload) {
|
|
217
|
+
return payload.iss.includes(did_auth_siop_2.ResponseIss.SELF_ISSUED_V1) || payload.iss.includes(did_auth_siop_2.ResponseIss.SELF_ISSUED_V2) || payload.iss === payload.sub;
|
|
218
|
+
}
|
|
219
|
+
exports.isIssSelfIssued = isIssSelfIssued;
|
|
220
|
+
function getMethodFromDid(did) {
|
|
221
|
+
if (!did) {
|
|
222
|
+
throw new Error(did_auth_siop_2.SIOPErrors.BAD_PARAMS);
|
|
223
|
+
}
|
|
224
|
+
const split = did.split(':');
|
|
225
|
+
if (split.length == 1 && did.length > 0) {
|
|
226
|
+
return did;
|
|
227
|
+
}
|
|
228
|
+
else if (!did.startsWith('did:') || split.length < 2) {
|
|
229
|
+
throw new Error(did_auth_siop_2.SIOPErrors.BAD_PARAMS);
|
|
230
|
+
}
|
|
231
|
+
return split[1];
|
|
232
|
+
}
|
|
233
|
+
exports.getMethodFromDid = getMethodFromDid;
|
|
234
|
+
/**
|
|
235
|
+
* Since the OIDC SIOP spec incorrectly uses 'did:<method>:' and calls that a method, we have to fix it
|
|
236
|
+
* @param didOrMethod
|
|
237
|
+
*/
|
|
238
|
+
function toSIOPRegistrationDidMethod(didOrMethod) {
|
|
239
|
+
let prefix = didOrMethod;
|
|
240
|
+
if (!didOrMethod.startsWith('did:')) {
|
|
241
|
+
prefix = 'did:' + didOrMethod;
|
|
242
|
+
}
|
|
243
|
+
const split = prefix.split(':');
|
|
244
|
+
return `${split[0]}:${split[1]}`;
|
|
245
|
+
}
|
|
246
|
+
exports.toSIOPRegistrationDidMethod = toSIOPRegistrationDidMethod;
|
|
247
|
+
//# sourceMappingURL=DidJWT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DidJWT.js","sourceRoot":"","sources":["../../lib/did/DidJWT.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LinkedDomainValidations.d.ts","sourceRoot":"","sources":["../../lib/did/LinkedDomainValidations.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqB,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAiD3F,wBAAsB,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,oBAAoB,GAAG,oBAAoB,iBA+BvH"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.validateLinkedDomainWithDid = void 0;
|
|
13
|
+
const wellknown_dids_client_1 = require("@sphereon/wellknown-dids-client");
|
|
14
|
+
const types_1 = require("./../types/");
|
|
15
|
+
const DIDResolution_1 = require("./DIDResolution");
|
|
16
|
+
const DidJWT_1 = require("./DidJWT");
|
|
17
|
+
function getValidationErrorMessages(validationResult) {
|
|
18
|
+
const messages = [];
|
|
19
|
+
if (validationResult.message) {
|
|
20
|
+
messages.push(validationResult.message);
|
|
21
|
+
}
|
|
22
|
+
if (validationResult === null || validationResult === void 0 ? void 0 : validationResult.endpointDescriptors.length) {
|
|
23
|
+
for (const endpointDescriptor of validationResult.endpointDescriptors) {
|
|
24
|
+
if (endpointDescriptor.message) {
|
|
25
|
+
messages.push(endpointDescriptor.message);
|
|
26
|
+
}
|
|
27
|
+
if (endpointDescriptor.resources) {
|
|
28
|
+
for (const resource of endpointDescriptor.resources) {
|
|
29
|
+
if (resource.message) {
|
|
30
|
+
messages.push(resource.message);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return messages;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* @param validationErrorMessages
|
|
40
|
+
* @return returns false if the messages received from wellknown-dids-client makes this invalid for CheckLinkedDomain.IF_PRESENT plus the message itself
|
|
41
|
+
* and true for when we can move on
|
|
42
|
+
*/
|
|
43
|
+
function checkInvalidMessages(validationErrorMessages) {
|
|
44
|
+
if (!validationErrorMessages || !validationErrorMessages.length) {
|
|
45
|
+
return { status: false, message: 'linked domain is invalid.' };
|
|
46
|
+
}
|
|
47
|
+
const validMessages = [
|
|
48
|
+
wellknown_dids_client_1.WDCErrors.PROPERTY_LINKED_DIDS_DOES_NOT_CONTAIN_ANY_DOMAIN_LINK_CREDENTIALS.valueOf(),
|
|
49
|
+
wellknown_dids_client_1.WDCErrors.PROPERTY_LINKED_DIDS_NOT_PRESENT.valueOf(),
|
|
50
|
+
wellknown_dids_client_1.WDCErrors.PROPERTY_TYPE_NOT_CONTAIN_VALID_LINKED_DOMAIN.valueOf(),
|
|
51
|
+
wellknown_dids_client_1.WDCErrors.PROPERTY_SERVICE_NOT_PRESENT.valueOf(),
|
|
52
|
+
];
|
|
53
|
+
for (const validationErrorMessage of validationErrorMessages) {
|
|
54
|
+
if (!validMessages.filter((vm) => validationErrorMessage.includes(vm)).pop()) {
|
|
55
|
+
return { status: false, message: validationErrorMessage };
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return { status: true };
|
|
59
|
+
}
|
|
60
|
+
function validateLinkedDomainWithDid(did, verification) {
|
|
61
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
62
|
+
const { checkLinkedDomain, resolveOpts, wellknownDIDVerifyCallback } = verification;
|
|
63
|
+
if (checkLinkedDomain === types_1.CheckLinkedDomain.NEVER) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const didDocument = yield (0, DIDResolution_1.resolveDidDocument)(did, Object.assign(Object.assign({}, resolveOpts), { subjectSyntaxTypesSupported: [(0, DidJWT_1.toSIOPRegistrationDidMethod)((0, DidJWT_1.getMethodFromDid)(did))] }));
|
|
67
|
+
if (!didDocument) {
|
|
68
|
+
throw Error(`Could not resolve DID: ${did}`);
|
|
69
|
+
}
|
|
70
|
+
if ((!didDocument.service || !didDocument.service.find((s) => s.type === 'LinkedDomains')) && checkLinkedDomain === types_1.CheckLinkedDomain.IF_PRESENT) {
|
|
71
|
+
// No linked domains in DID document and it was optional. Let's cut it short here.
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
const validationResult = yield checkWellKnownDid({ didDocument, verifyCallback: wellknownDIDVerifyCallback });
|
|
76
|
+
if (validationResult.status === wellknown_dids_client_1.ValidationStatusEnum.INVALID) {
|
|
77
|
+
const validationErrorMessages = getValidationErrorMessages(validationResult);
|
|
78
|
+
const messageCondition = checkInvalidMessages(validationErrorMessages);
|
|
79
|
+
if (checkLinkedDomain === types_1.CheckLinkedDomain.ALWAYS || (checkLinkedDomain === types_1.CheckLinkedDomain.IF_PRESENT && !messageCondition.status)) {
|
|
80
|
+
throw new Error(messageCondition.message ? messageCondition.message : validationErrorMessages[0]);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
const messageCondition = checkInvalidMessages([err.message]);
|
|
86
|
+
if (checkLinkedDomain === types_1.CheckLinkedDomain.ALWAYS || (checkLinkedDomain === types_1.CheckLinkedDomain.IF_PRESENT && !messageCondition.status)) {
|
|
87
|
+
throw new Error(err.message);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
exports.validateLinkedDomainWithDid = validateLinkedDomainWithDid;
|
|
93
|
+
function checkWellKnownDid(args) {
|
|
94
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
95
|
+
const verifier = new wellknown_dids_client_1.WellKnownDidVerifier({
|
|
96
|
+
verifySignatureCallback: args.verifyCallback,
|
|
97
|
+
onlyVerifyServiceDid: false,
|
|
98
|
+
});
|
|
99
|
+
return yield verifier.verifyDomainLinkage({ didDocument: args.didDocument });
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=LinkedDomainValidations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LinkedDomainValidations.js","sourceRoot":"","sources":["../../lib/did/LinkedDomainValidations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/did/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./DidJWT"), exports);
|
|
18
|
+
__exportStar(require("./DIDResolution"), exports);
|
|
19
|
+
__exportStar(require("./LinkedDomainValidations"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/did/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,kDAA+B;AAC/B,4DAAyC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ExternalSignature, InternalSignature, NoSignature, SuppliedSignature } from './types/SIOP.types';
|
|
2
|
+
export declare const isInternalSignature: (object: InternalSignature | ExternalSignature | SuppliedSignature | NoSignature) => object is InternalSignature;
|
|
3
|
+
export declare const isExternalSignature: (object: InternalSignature | ExternalSignature | SuppliedSignature | NoSignature) => object is ExternalSignature;
|
|
4
|
+
export declare const isSuppliedSignature: (object: InternalSignature | ExternalSignature | SuppliedSignature | NoSignature) => object is SuppliedSignature;
|
|
5
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../lib/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEzG,eAAO,MAAM,mBAAmB,WAAY,iBAAiB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,WAAW,gCACrE,CAAA;AAE9C,eAAO,MAAM,mBAAmB,WAAY,iBAAiB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,WAAW,gCACtE,CAAA;AAE7C,eAAO,MAAM,mBAAmB,WAAY,iBAAiB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,WAAW,gCAC5F,CAAA"}
|
package/dist/helpers.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isSuppliedSignature = exports.isExternalSignature = exports.isInternalSignature = void 0;
|
|
4
|
+
const isInternalSignature = (object) => 'hexPrivateKey' in object && 'did' in object;
|
|
5
|
+
exports.isInternalSignature = isInternalSignature;
|
|
6
|
+
const isExternalSignature = (object) => 'signatureUri' in object && 'did' in object;
|
|
7
|
+
exports.isExternalSignature = isExternalSignature;
|
|
8
|
+
const isSuppliedSignature = (object) => 'signature' in object;
|
|
9
|
+
exports.isSuppliedSignature = isSuppliedSignature;
|
|
10
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../lib/helpers.ts"],"names":[],"mappings":";;;AAEO,MAAM,mBAAmB,GAAG,CAAC,MAA+E,EAA+B,EAAE,CAClJ,eAAe,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,CAAA;AADjC,QAAA,mBAAmB,uBACc;AAEvC,MAAM,mBAAmB,GAAG,CAAC,MAA+E,EAA+B,EAAE,CAClJ,cAAc,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,CAAA;AADhC,QAAA,mBAAmB,uBACa;AAEtC,MAAM,mBAAmB,GAAG,CAAC,MAA+E,EAA+B,EAAE,CAClJ,WAAW,IAAI,MAAM,CAAA;AADV,QAAA,mBAAmB,uBACT"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AAErB,cAAc,SAAS,CAAA;AACvB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./did"), exports);
|
|
18
|
+
__exportStar(require("./types"), exports);
|
|
19
|
+
__exportStar(require("./DidJwtAdapter"), exports);
|
|
20
|
+
__exportStar(require("./helpers"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAqB;AAErB,0CAAuB;AACvB,kDAA+B;AAC/B,4CAAyB"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { SigningAlgo } from '@sphereon/did-auth-siop';
|
|
2
|
+
import { VerifyCallback as WellknownDIDVerifyCallback } from '@sphereon/wellknown-dids-client';
|
|
3
|
+
import { JWTVerifyOptions } from 'did-jwt';
|
|
4
|
+
import { Resolvable } from 'did-resolver';
|
|
5
|
+
export declare enum CheckLinkedDomain {
|
|
6
|
+
NEVER = "never",// We don't want to verify Linked domains
|
|
7
|
+
IF_PRESENT = "if_present",// If present, did-auth-siop will check the linked domain, if exist and not valid, throws an exception
|
|
8
|
+
ALWAYS = "always"
|
|
9
|
+
}
|
|
10
|
+
export interface InternalSignature {
|
|
11
|
+
hexPrivateKey: string;
|
|
12
|
+
did: string;
|
|
13
|
+
alg: SigningAlgo;
|
|
14
|
+
kid?: string;
|
|
15
|
+
customJwtSigner?: Signer;
|
|
16
|
+
}
|
|
17
|
+
export interface SuppliedSignature {
|
|
18
|
+
signature: (data: string | Uint8Array) => Promise<EcdsaSignature | string>;
|
|
19
|
+
alg: SigningAlgo;
|
|
20
|
+
did: string;
|
|
21
|
+
kid: string;
|
|
22
|
+
}
|
|
23
|
+
export interface NoSignature {
|
|
24
|
+
hexPublicKey: string;
|
|
25
|
+
did: string;
|
|
26
|
+
kid?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface ExternalSignature {
|
|
29
|
+
signatureUri: string;
|
|
30
|
+
did: string;
|
|
31
|
+
authZToken?: string;
|
|
32
|
+
hexPublicKey?: string;
|
|
33
|
+
alg: SigningAlgo;
|
|
34
|
+
kid?: string;
|
|
35
|
+
}
|
|
36
|
+
export declare enum VerificationMode {
|
|
37
|
+
INTERNAL = 0,
|
|
38
|
+
EXTERNAL = 1
|
|
39
|
+
}
|
|
40
|
+
export interface EcdsaSignature {
|
|
41
|
+
r: string;
|
|
42
|
+
s: string;
|
|
43
|
+
recoveryParam?: number | null;
|
|
44
|
+
}
|
|
45
|
+
export type Signer = (data: string | Uint8Array) => Promise<EcdsaSignature | string>;
|
|
46
|
+
export interface Verification {
|
|
47
|
+
checkLinkedDomain?: CheckLinkedDomain;
|
|
48
|
+
wellknownDIDVerifyCallback?: WellknownDIDVerifyCallback;
|
|
49
|
+
resolveOpts: ResolveOpts;
|
|
50
|
+
}
|
|
51
|
+
export type InternalVerification = Verification;
|
|
52
|
+
export interface ExternalVerification extends Verification {
|
|
53
|
+
verifyUri: string;
|
|
54
|
+
authZToken?: string;
|
|
55
|
+
}
|
|
56
|
+
export interface ResolveOpts {
|
|
57
|
+
jwtVerifyOpts?: JWTVerifyOptions;
|
|
58
|
+
resolver?: Resolvable;
|
|
59
|
+
resolveUrl?: string;
|
|
60
|
+
noUniversalResolverFallback?: boolean;
|
|
61
|
+
subjectSyntaxTypesSupported?: string[];
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=SIOP.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SIOP.types.d.ts","sourceRoot":"","sources":["../../lib/types/SIOP.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,cAAc,IAAI,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAC9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,oBAAY,iBAAiB;IAC3B,KAAK,UAAU,CAAE,yCAAyC;IAC1D,UAAU,eAAe,CAAE,sGAAsG;IACjI,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAA;IACrB,GAAG,EAAE,MAAM,CAAA;IAEX,GAAG,EAAE,WAAW,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IAEZ,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,KAAK,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,CAAA;IAE1E,GAAG,EAAE,WAAW,CAAA;IAChB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB,GAAG,EAAE,WAAW,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,oBAAY,gBAAgB;IAC1B,QAAQ,IAAA;IACR,QAAQ,IAAA;CACT;AAED,MAAM,WAAW,cAAc;IAC7B,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B;AACD,MAAM,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,KAAK,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,CAAA;AAEpF,MAAM,WAAW,YAAY;IAC3B,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,0BAA0B,CAAC,EAAE,0BAA0B,CAAA;IACvD,WAAW,EAAE,WAAW,CAAA;CACzB;AAED,MAAM,MAAM,oBAAoB,GAAG,YAAY,CAAA;AAE/C,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACxD,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,CAAC,EAAE,gBAAgB,CAAA;IAChC,QAAQ,CAAC,EAAE,UAAU,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,2BAA2B,CAAC,EAAE,OAAO,CAAA;IACrC,2BAA2B,CAAC,EAAE,MAAM,EAAE,CAAA;CACvC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VerificationMode = exports.CheckLinkedDomain = void 0;
|
|
4
|
+
var CheckLinkedDomain;
|
|
5
|
+
(function (CheckLinkedDomain) {
|
|
6
|
+
CheckLinkedDomain["NEVER"] = "never";
|
|
7
|
+
CheckLinkedDomain["IF_PRESENT"] = "if_present";
|
|
8
|
+
CheckLinkedDomain["ALWAYS"] = "always";
|
|
9
|
+
})(CheckLinkedDomain || (exports.CheckLinkedDomain = CheckLinkedDomain = {}));
|
|
10
|
+
var VerificationMode;
|
|
11
|
+
(function (VerificationMode) {
|
|
12
|
+
VerificationMode[VerificationMode["INTERNAL"] = 0] = "INTERNAL";
|
|
13
|
+
VerificationMode[VerificationMode["EXTERNAL"] = 1] = "EXTERNAL";
|
|
14
|
+
})(VerificationMode || (exports.VerificationMode = VerificationMode = {}));
|
|
15
|
+
//# sourceMappingURL=SIOP.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SIOP.types.js","sourceRoot":"","sources":["../../lib/types/SIOP.types.ts"],"names":[],"mappings":";;;AAKA,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,oCAAe,CAAA;IACf,8CAAyB,CAAA;IACzB,sCAAiB,CAAA;AACnB,CAAC,EAJW,iBAAiB,iCAAjB,iBAAiB,QAI5B;AAoCD,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,+DAAQ,CAAA;IACR,+DAAQ,CAAA;AACV,CAAC,EAHW,gBAAgB,gCAAhB,gBAAgB,QAG3B"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DIDDocument as DIFDIDDocument } from 'did-resolver';
|
|
2
|
+
export interface LinkedDataProof {
|
|
3
|
+
type: string;
|
|
4
|
+
created: string;
|
|
5
|
+
creator: string;
|
|
6
|
+
nonce: string;
|
|
7
|
+
signatureValue: string;
|
|
8
|
+
}
|
|
9
|
+
export interface DIDDocument extends DIFDIDDocument {
|
|
10
|
+
owner?: string;
|
|
11
|
+
created?: string;
|
|
12
|
+
updated?: string;
|
|
13
|
+
proof?: LinkedDataProof;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=SSI.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SSI.types.d.ts","sourceRoot":"","sources":["../../lib/types/SSI.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,cAAc,CAAA;AAE5D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,eAAe,CAAA;CACxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SSI.types.js","sourceRoot":"","sources":["../../lib/types/SSI.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./SIOP.types"), exports);
|
|
18
|
+
__exportStar(require("./SSI.types"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,8CAA2B"}
|