samlesa 4.3.0 → 4.3.1
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/build/src/binding-post.js +1 -4
- package/build/src/metadata-sp.js +0 -2
- package/build/src/schemaValidator.js +37 -7
- package/build/src/utility.js +8 -33
- package/package.json +87 -87
- package/types/src/binding-post.d.ts.map +1 -1
- package/types/src/metadata-sp.d.ts.map +1 -1
- package/types/src/schemaValidator.d.ts.map +1 -1
- package/types/src/utility.d.ts.map +1 -1
|
@@ -64,7 +64,7 @@ function base64LoginRequest(referenceTagXPath, entity, customTagReplacement) {
|
|
|
64
64
|
action: 'after'
|
|
65
65
|
},
|
|
66
66
|
},
|
|
67
|
-
isMessageSigned:
|
|
67
|
+
isMessageSigned: false,
|
|
68
68
|
isBase64Output: true
|
|
69
69
|
}),
|
|
70
70
|
};
|
|
@@ -204,9 +204,6 @@ async function base64LoginResponse({ requestInfo = {}, entity, user = {}, custom
|
|
|
204
204
|
}
|
|
205
205
|
}
|
|
206
206
|
//sign after encrypting
|
|
207
|
-
/* console.log(encryptThenSign)
|
|
208
|
-
console.log(encryptThenSign && (spSetting.wantMessageSigned || !metadata.sp.isWantAssertionsSigned()))
|
|
209
|
-
console.log("结果====================")*/
|
|
210
207
|
if (encryptThenSign && (spSetting.wantMessageSigned || !metadata.sp.isWantAssertionsSigned())) {
|
|
211
208
|
rawSamlResponse = libsaml.constructSAMLSignature({
|
|
212
209
|
...config,
|
package/build/src/metadata-sp.js
CHANGED
|
@@ -263,8 +263,6 @@ export class SpMetadata extends Metadata {
|
|
|
263
263
|
}
|
|
264
264
|
else {
|
|
265
265
|
// 数据源本身为空,直接报错
|
|
266
|
-
console.log(acsData);
|
|
267
|
-
console.log("看下这是什么啊啊啊啊");
|
|
268
266
|
return "";
|
|
269
267
|
/* throw new Error("SAML Metadata Error: No AssertionConsumerService definitions found in metadata.");*/
|
|
270
268
|
}
|
|
@@ -41,21 +41,51 @@ const metadataSchemas = [
|
|
|
41
41
|
* @param samlString 待检测的 XML 字符串
|
|
42
42
|
* @returns 如果存在可疑模式则返回匹配详情,否则返回 null
|
|
43
43
|
*/
|
|
44
|
+
/**
|
|
45
|
+
* 检测SAML字符串中可能的XXE攻击模式
|
|
46
|
+
* @param samlString - 要检查的SAML字符串
|
|
47
|
+
* @returns 包含发现的潜在XXE模式的对象,如果没有发现则返回null
|
|
48
|
+
*/
|
|
44
49
|
function detectXXEIndicators(samlString) {
|
|
50
|
+
// 更全面的XXE模式检测
|
|
45
51
|
const xxePatterns = [
|
|
46
|
-
|
|
47
|
-
/<!
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
52
|
+
// DOCTYPE声明
|
|
53
|
+
/<!DOCTYPE\s+([a-zA-Z_][a-zA-Z0-9]*)((\s+[^>]*)?)>/gi,
|
|
54
|
+
// 外部实体声明(SYSTEM和PUBLIC)
|
|
55
|
+
/<!ENTITY\s+([a-zA-Z_][a-zA-Z0-9]*)\s+(SYSTEM|PUBLIC)\s+["'][^"']*["']\s*>/gi,
|
|
56
|
+
// file://协议引用
|
|
57
|
+
/SYSTEM\s+["']file:\/\/\/?([^"']+)["']/gi,
|
|
58
|
+
// HTTP/HTTPS外部实体
|
|
59
|
+
/SYSTEM\s+["'](https?:\/\/[^"']+)["']/gi,
|
|
60
|
+
// 本地文件引用
|
|
61
|
+
/SYSTEM\s+["'](\.\.\/|\/)[^"']*\.dtd["']/gi,
|
|
62
|
+
// 内部实体引用(可能用于Billion Laughs攻击)
|
|
63
|
+
/<!ENTITY\s+([a-zA-Z_][a-zA-Z0-9]*)\s+"?\1"?/gi,
|
|
64
|
+
// CDATA节中的恶意内容
|
|
65
|
+
/<!\[CDATA\[(.*?)\]\]>/gi,
|
|
66
|
+
// 注释中的潜在恶意内容
|
|
67
|
+
/<!--(.*?)-->/gi
|
|
68
|
+
];
|
|
69
|
+
const patternNames = [
|
|
70
|
+
'DOCTYPE Declaration',
|
|
71
|
+
'External Entity Declaration',
|
|
72
|
+
'File Protocol Reference',
|
|
73
|
+
'HTTP External Entity',
|
|
74
|
+
'Local File Reference',
|
|
75
|
+
'Recursive Entity Reference',
|
|
76
|
+
'CDATA Section',
|
|
77
|
+
'Comment Section'
|
|
51
78
|
];
|
|
52
79
|
const matches = {};
|
|
53
80
|
xxePatterns.forEach((pattern, index) => {
|
|
81
|
+
// 重置正则表达式的lastIndex以便多次使用
|
|
82
|
+
pattern.lastIndex = 0;
|
|
54
83
|
const found = samlString.match(pattern);
|
|
55
84
|
if (found) {
|
|
56
|
-
matches[
|
|
85
|
+
matches[patternNames[index]] = {
|
|
57
86
|
pattern: pattern.toString(),
|
|
58
|
-
matches: found
|
|
87
|
+
matches: found,
|
|
88
|
+
description: patternNames[index]
|
|
59
89
|
};
|
|
60
90
|
}
|
|
61
91
|
});
|
package/build/src/utility.js
CHANGED
|
@@ -230,39 +230,6 @@ function validatePEMHeaders(pem, keyType) {
|
|
|
230
230
|
.trim() + // 清理空白
|
|
231
231
|
`\n${expectedHeader}\n${pem}\n${expectedFooter}\n`;
|
|
232
232
|
}
|
|
233
|
-
/*export function readPrivateKey(
|
|
234
|
-
keyString: string | Buffer,
|
|
235
|
-
passphrase?: string,
|
|
236
|
-
isOutputString: boolean = true
|
|
237
|
-
): string | Buffer {
|
|
238
|
-
try {
|
|
239
|
-
// 统一转换为字符串格式处理
|
|
240
|
-
const pemKey = Buffer.isBuffer(keyString)
|
|
241
|
-
? keyString.toString('utf8')
|
|
242
|
-
: keyString;
|
|
243
|
-
|
|
244
|
-
// 创建私钥对象 (自动处理加密)
|
|
245
|
-
const keyObject = createPrivateKey({
|
|
246
|
-
key: pemKey,
|
|
247
|
-
format: 'pem',
|
|
248
|
-
passphrase: isString(passphrase) ? passphrase : undefined,
|
|
249
|
-
encoding: 'utf8'
|
|
250
|
-
});
|
|
251
|
-
|
|
252
|
-
// 验证密钥类型为 RSA
|
|
253
|
-
if (keyObject.asymmetricKeyType !== 'rsa') {
|
|
254
|
-
throw new Error('仅支持 RSA 私钥类型');
|
|
255
|
-
}
|
|
256
|
-
// 强制转换为 PKCS#1 格式
|
|
257
|
-
const exported = keyObject.export({
|
|
258
|
-
type: 'pkcs1', // 明确指定 RSA 传统格式
|
|
259
|
-
format: 'pem' // 输出为 PEM 格式
|
|
260
|
-
}) as string;
|
|
261
|
-
return isOutputString ? String(exported) : Buffer.from(exported, 'utf8');
|
|
262
|
-
} catch (error) {
|
|
263
|
-
throw new Error(`私钥读取失败: ${error.message}`);
|
|
264
|
-
}
|
|
265
|
-
}*/
|
|
266
233
|
export function readPrivateKey(keyString, passphrase, isOutputString = true) {
|
|
267
234
|
try {
|
|
268
235
|
// 统一转换为字符串格式处理
|
|
@@ -302,6 +269,14 @@ export function readPrivateKey(keyString, passphrase, isOutputString = true) {
|
|
|
302
269
|
throw new Error(`私钥读取失败: ${error.message}`);
|
|
303
270
|
}
|
|
304
271
|
}
|
|
272
|
+
/*export function readPrivateKey(keyString: string | Buffer, passphrase: string | undefined, isOutputString?: boolean) {
|
|
273
|
+
if (isString(passphrase)) {
|
|
274
|
+
const key = createPrivateKey({ key: keyString, format: 'pem', passphrase });
|
|
275
|
+
const pem = key.export({ type: 'pkcs1', format: 'pem' });
|
|
276
|
+
return convertToString(pem, isOutputString);
|
|
277
|
+
}
|
|
278
|
+
return keyString;
|
|
279
|
+
}*/
|
|
305
280
|
/**
|
|
306
281
|
* @desc Inline syntax sugar
|
|
307
282
|
*/
|
package/package.json
CHANGED
|
@@ -1,87 +1,87 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "samlesa",
|
|
3
|
-
"version": "4.3.
|
|
4
|
-
"description": "High-level API for Single Sign On (SAML 2.0) baseed on samlify ",
|
|
5
|
-
"main": "build/index.js",
|
|
6
|
-
"keywords": [
|
|
7
|
-
"nodejs",
|
|
8
|
-
"saml2",
|
|
9
|
-
"sso",
|
|
10
|
-
"slo",
|
|
11
|
-
"metadata"
|
|
12
|
-
],
|
|
13
|
-
"type": "module",
|
|
14
|
-
"typings": "types/index.d.ts",
|
|
15
|
-
"homepage": "https://saml.veclea.com",
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
"
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
},
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
"
|
|
54
|
-
},
|
|
55
|
-
"
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
"@
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
"
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
"
|
|
85
|
-
"
|
|
86
|
-
}
|
|
87
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "samlesa",
|
|
3
|
+
"version": "4.3.1",
|
|
4
|
+
"description": "High-level API for Single Sign On (SAML 2.0) baseed on samlify ",
|
|
5
|
+
"main": "build/index.js",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"nodejs",
|
|
8
|
+
"saml2",
|
|
9
|
+
"sso",
|
|
10
|
+
"slo",
|
|
11
|
+
"metadata"
|
|
12
|
+
],
|
|
13
|
+
"type": "module",
|
|
14
|
+
"typings": "types/index.d.ts",
|
|
15
|
+
"homepage": "https://saml.veclea.com",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"types": "./types/index.d.ts",
|
|
19
|
+
"import": "./build/index.js"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"build",
|
|
24
|
+
"types"
|
|
25
|
+
],
|
|
26
|
+
"contributors": [
|
|
27
|
+
"Veclea <vemocle@gmail.com>"
|
|
28
|
+
],
|
|
29
|
+
"author": "Veclea",
|
|
30
|
+
"repository": {
|
|
31
|
+
"url": "https://github.com/Veclea/samlify.git",
|
|
32
|
+
"type": "git"
|
|
33
|
+
},
|
|
34
|
+
"bugs": {
|
|
35
|
+
"url": "https://github.com/Veclea/samlify/issues"
|
|
36
|
+
},
|
|
37
|
+
"docs": "https://saml.veclea.com",
|
|
38
|
+
"license": "MIT",
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"@xmldom/xmldom": "^0.9.8",
|
|
41
|
+
"axios": "^1.13.6",
|
|
42
|
+
"camelcase": "^9.0.0",
|
|
43
|
+
"cross-env": "^10.1.0",
|
|
44
|
+
"iconv-lite": "^0.7.2",
|
|
45
|
+
"ts-node": "^10.9.2",
|
|
46
|
+
"vite-tsconfig-paths": "^6.1.1",
|
|
47
|
+
"xml": "^1.0.1",
|
|
48
|
+
"xml-crypto-next": "^8.0.0",
|
|
49
|
+
"xml-encryption-next": "^5.0.0",
|
|
50
|
+
"xml-escape": "^1.1.0",
|
|
51
|
+
"xml2js": "^0.6.2",
|
|
52
|
+
"xmllint-wasm": "^5.2.0",
|
|
53
|
+
"xpath": "^0.0.34"
|
|
54
|
+
},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@types/node": "^25.5.0",
|
|
57
|
+
"@types/pako": "2.0.4",
|
|
58
|
+
"@types/uuid": "11.0.0",
|
|
59
|
+
"@vitest/coverage-istanbul": "^4.1.2",
|
|
60
|
+
"@vitest/coverage-v8": "4.1.2",
|
|
61
|
+
"copyfiles": "^2.4.1",
|
|
62
|
+
"coveralls": "^3.1.1",
|
|
63
|
+
"esbuild": "^0.27.4",
|
|
64
|
+
"jsdom": "^29.0.1",
|
|
65
|
+
"timekeeper": "^2.3.1",
|
|
66
|
+
"typescript": "6.0.2",
|
|
67
|
+
"vitest": "^4.1.2"
|
|
68
|
+
},
|
|
69
|
+
"scripts": {
|
|
70
|
+
"build": "tsc && copyfiles -u 1 src/schema/**/* build/src",
|
|
71
|
+
"build:fast": "tsc",
|
|
72
|
+
"build:clean": "tsc --build --clean && pnpm run build",
|
|
73
|
+
"docs:dev": "cd docs && npm run docs:dev",
|
|
74
|
+
"docs:build": "cd docs && npm run docs:build",
|
|
75
|
+
"docs:preview": "cd docs && npm run docs:preview",
|
|
76
|
+
"docs:deploy": "vercel --prod",
|
|
77
|
+
"lint": "tslint -p .",
|
|
78
|
+
"lint:fix": "tslint -p . --fix",
|
|
79
|
+
"test": "vitest run",
|
|
80
|
+
"test:watch": "vitest",
|
|
81
|
+
"test:coverage": "vitest run --coverage",
|
|
82
|
+
"test:fast": "vitest run --pool=forks",
|
|
83
|
+
"test:artifact": "vitest run test/artifact.test.ts",
|
|
84
|
+
"generate-certs": "node scripts/generate-certs.js",
|
|
85
|
+
"hooks:postinstall": "mklink /J .git\\hooks\\pre-commit .pre-commit.sh || copy .pre-commit.sh .git\\hooks\\pre-commit"
|
|
86
|
+
}
|
|
87
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding-post.d.ts","sourceRoot":"","sources":["../../src/binding-post.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC;AAQhD,OAAO,EAAC,yBAAyB,EAAC,MAAM,YAAY,CAAC;AAMrD;;;;;GAKG;AACH,iBAAS,kBAAkB,CAAC,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,oBAAoB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,cAAc,GAAG,cAAc,CAsE/I;AAGD;;;;;;;;;GASG;AACH,iBAAe,mBAAmB,CAAC,EAAC,WAAgB,EAAE,MAAM,EAAE,IAAS,EAAE,oBAAoB,EAAE,eAAuB,EAAE,kBAAuB,EAAE,OAAO,EAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"binding-post.d.ts","sourceRoot":"","sources":["../../src/binding-post.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC;AAQhD,OAAO,EAAC,yBAAyB,EAAC,MAAM,YAAY,CAAC;AAMrD;;;;;GAKG;AACH,iBAAS,kBAAkB,CAAC,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,oBAAoB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,cAAc,GAAG,cAAc,CAsE/I;AAGD;;;;;;;;;GASG;AACH,iBAAe,mBAAmB,CAAC,EAAC,WAAgB,EAAE,MAAM,EAAE,IAAS,EAAE,oBAAoB,EAAE,eAAuB,EAAE,kBAAuB,EAAE,OAAO,EAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,cAAc,CAAC,CAoJ7M;AAED;;;;;;;GAOG;AACH,iBAAS,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,KAAA,EAAE,oBAAoB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,cAAc,GAAG,cAAc,CA2D1K;AAED;;;;;;GAMG;AACH,iBAAS,oBAAoB,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,oBAAoB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,cAAc,GAAG,cAAc,CA6DvI;AAED,QAAA,MAAM,WAAW;;;;;CAKhB,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-sp.d.ts","sourceRoot":"","sources":["../../src/metadata-sp.ts"],"names":[],"mappings":"AAAA;;;;EAIE;AACF,OAAO,QAAQ,EAAE,EAAC,KAAK,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAE/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAMxD,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;CAE7D;AAeD,MAAM,CAAC,OAAO,WAAU,IAAI,EAAE,qBAAqB,cAElD;AAED;;EAEE;AACF,qBAAa,UAAW,SAAQ,QAAQ;IAEtC;;;MAGE;gBACU,IAAI,EAAE,qBAAqB;IA6NvC;;;MAGE;IACK,sBAAsB,IAAI,OAAO;IAGxC;;;MAGE;IACK,oBAAoB,IAAI,OAAO;IAGtC;;;;MAIE;IACK,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"metadata-sp.d.ts","sourceRoot":"","sources":["../../src/metadata-sp.ts"],"names":[],"mappings":"AAAA;;;;EAIE;AACF,OAAO,QAAQ,EAAE,EAAC,KAAK,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAE/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAMxD,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;CAE7D;AAeD,MAAM,CAAC,OAAO,WAAU,IAAI,EAAE,qBAAqB,cAElD;AAED;;EAEE;AACF,qBAAa,UAAW,SAAQ,QAAQ;IAEtC;;;MAGE;gBACU,IAAI,EAAE,qBAAqB;IA6NvC;;;MAGE;IACK,sBAAsB,IAAI,OAAO;IAGxC;;;MAGE;IACK,oBAAoB,IAAI,OAAO;IAGtC;;;;MAIE;IACK,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAwL5D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemaValidator.d.ts","sourceRoot":"","sources":["../../src/schemaValidator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schemaValidator.d.ts","sourceRoot":"","sources":["../../src/schemaValidator.ts"],"names":[],"mappings":"AAuHA;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,GAAU,KAAK,MAAM,EAAE,SAAQ,OAAe,qBA4BlE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAU,KAAK,MAAM,EAAE,UAAS,OAAe;;;EA+D3E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utility.d.ts","sourceRoot":"","sources":["../../src/utility.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,cAAc,UAAO,MAmB3E;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,OAIvC;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,OAEhC;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,YAGnC;AAED;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,GAAG,KAAA,EAAE,IAAI,KAAA,EAAE,YAAY,KAAA,OAG1C;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,GAAG,mBAElC;AAED;;;;GAIG;AACH,iBAAS,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,UAE/C;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAGtF;AAED;;;;GAIG;AACH,iBAAS,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAKhD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAc9D;AAYD;;;;GAIG;AACH,iBAAS,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,UAEtD;AAED;;;;GAIG;AACH,iBAAS,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,UAErD;AAED;;;;GAIG;AACH,iBAAS,UAAU,CAAC,GAAG,KAAA,UAEtB;AAED;;;;GAIG;AACH,iBAAS,WAAW,CAAC,GAAG,KAAA,EAAE,YAAY,SAAK,OAE1C;AAED;;;;;GAKG;AACH,iBAAS,YAAY,CAAC,IAAI,KAAA,EAAE,IAAI,KAAA,OAE/B;AAED;;;;GAIG;AACH,iBAAS,8BAA8B,CAAC,qBAAqB,EAAE,MAAM,UAsBpE;
|
|
1
|
+
{"version":3,"file":"utility.d.ts","sourceRoot":"","sources":["../../src/utility.ts"],"names":[],"mappings":"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"}
|