@nr1e/commons 0.0.0-snapshot-20251228023149
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 +202 -0
- package/README.md +11 -0
- package/dist/bitsnbytes/b64.d.mts +43 -0
- package/dist/bitsnbytes/b64.d.mts.map +1 -0
- package/dist/bitsnbytes/b64.mjs +156 -0
- package/dist/bitsnbytes/b64.mjs.map +1 -0
- package/dist/bitsnbytes/b64.test.d.mts +2 -0
- package/dist/bitsnbytes/b64.test.d.mts.map +1 -0
- package/dist/bitsnbytes/b64.test.mjs +71 -0
- package/dist/bitsnbytes/b64.test.mjs.map +1 -0
- package/dist/bitsnbytes/index.d.mts +2 -0
- package/dist/bitsnbytes/index.d.mts.map +1 -0
- package/dist/bitsnbytes/index.mjs +2 -0
- package/dist/bitsnbytes/index.mjs.map +1 -0
- package/dist/errors/errors.d.mts +160 -0
- package/dist/errors/errors.d.mts.map +1 -0
- package/dist/errors/errors.mjs +234 -0
- package/dist/errors/errors.mjs.map +1 -0
- package/dist/errors/errors.test.d.mts +2 -0
- package/dist/errors/errors.test.d.mts.map +1 -0
- package/dist/errors/errors.test.mjs +45 -0
- package/dist/errors/errors.test.mjs.map +1 -0
- package/dist/errors/index.d.mts +2 -0
- package/dist/errors/index.d.mts.map +1 -0
- package/dist/errors/index.mjs +2 -0
- package/dist/errors/index.mjs.map +1 -0
- package/dist/http/http-method.d.mts +10 -0
- package/dist/http/http-method.d.mts.map +1 -0
- package/dist/http/http-method.mjs +11 -0
- package/dist/http/http-method.mjs.map +1 -0
- package/dist/http/http-status-code.d.mts +43 -0
- package/dist/http/http-status-code.d.mts.map +1 -0
- package/dist/http/http-status-code.mjs +44 -0
- package/dist/http/http-status-code.mjs.map +1 -0
- package/dist/http/index.d.mts +3 -0
- package/dist/http/index.d.mts.map +1 -0
- package/dist/http/index.mjs +3 -0
- package/dist/http/index.mjs.map +1 -0
- package/dist/ids/index.d.mts +6 -0
- package/dist/ids/index.d.mts.map +1 -0
- package/dist/ids/index.mjs +23 -0
- package/dist/ids/index.mjs.map +1 -0
- package/dist/ids/index.test.d.mts +2 -0
- package/dist/ids/index.test.d.mts.map +1 -0
- package/dist/ids/index.test.mjs +10 -0
- package/dist/ids/index.test.mjs.map +1 -0
- package/dist/lang/equality.d.mts +2 -0
- package/dist/lang/equality.d.mts.map +1 -0
- package/dist/lang/equality.mjs +27 -0
- package/dist/lang/equality.mjs.map +1 -0
- package/dist/lang/equality.test.d.mts +2 -0
- package/dist/lang/equality.test.d.mts.map +1 -0
- package/dist/lang/equality.test.mjs +15 -0
- package/dist/lang/equality.test.mjs.map +1 -0
- package/dist/lang/index.d.mts +5 -0
- package/dist/lang/index.d.mts.map +1 -0
- package/dist/lang/index.mjs +5 -0
- package/dist/lang/index.mjs.map +1 -0
- package/dist/lang/merge.d.mts +4 -0
- package/dist/lang/merge.d.mts.map +1 -0
- package/dist/lang/merge.mjs +2 -0
- package/dist/lang/merge.mjs.map +1 -0
- package/dist/lang/sleep.d.mts +7 -0
- package/dist/lang/sleep.d.mts.map +1 -0
- package/dist/lang/sleep.mjs +9 -0
- package/dist/lang/sleep.mjs.map +1 -0
- package/dist/lang/type-functions.d.mts +4 -0
- package/dist/lang/type-functions.d.mts.map +1 -0
- package/dist/lang/type-functions.mjs +10 -0
- package/dist/lang/type-functions.mjs.map +1 -0
- package/dist/oauth/crypto-functions.d.mts +19 -0
- package/dist/oauth/crypto-functions.d.mts.map +1 -0
- package/dist/oauth/crypto-functions.mjs +42 -0
- package/dist/oauth/crypto-functions.mjs.map +1 -0
- package/dist/oauth/crypto-functions.test.d.mts +2 -0
- package/dist/oauth/crypto-functions.test.d.mts.map +1 -0
- package/dist/oauth/crypto-functions.test.mjs +36 -0
- package/dist/oauth/crypto-functions.test.mjs.map +1 -0
- package/dist/oauth/index.d.mts +2 -0
- package/dist/oauth/index.d.mts.map +1 -0
- package/dist/oauth/index.mjs +2 -0
- package/dist/oauth/index.mjs.map +1 -0
- package/dist/validator/index.d.mts +2 -0
- package/dist/validator/index.d.mts.map +1 -0
- package/dist/validator/index.mjs +2 -0
- package/dist/validator/index.mjs.map +1 -0
- package/dist/validator/validators.d.mts +189 -0
- package/dist/validator/validators.d.mts.map +1 -0
- package/dist/validator/validators.mjs +309 -0
- package/dist/validator/validators.mjs.map +1 -0
- package/dist/validator/validators.test.d.mts +2 -0
- package/dist/validator/validators.test.d.mts.map +1 -0
- package/dist/validator/validators.test.mjs +177 -0
- package/dist/validator/validators.test.mjs.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as uuid from 'uuid';
|
|
2
|
+
import { tob64s } from '../bitsnbytes/index.mjs';
|
|
3
|
+
import KSUID from 'ksuid';
|
|
4
|
+
export function uuidv4() {
|
|
5
|
+
return uuid.v4();
|
|
6
|
+
}
|
|
7
|
+
export function uuidv7() {
|
|
8
|
+
return uuid.v7();
|
|
9
|
+
}
|
|
10
|
+
export function uuidv4b64() {
|
|
11
|
+
const buf = new Uint8Array(16);
|
|
12
|
+
uuid.v4(undefined, buf);
|
|
13
|
+
return tob64s(buf, { b64chars: 'url' });
|
|
14
|
+
}
|
|
15
|
+
export function uuidv7b64() {
|
|
16
|
+
const buf = new Uint8Array(16);
|
|
17
|
+
uuid.v7(undefined, buf);
|
|
18
|
+
return tob64s(buf, { b64chars: 'url' });
|
|
19
|
+
}
|
|
20
|
+
export async function ksuid() {
|
|
21
|
+
return (await KSUID.random()).string;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/ids/index.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAC,MAAM,EAAC,MAAM,yBAAyB,CAAC;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,UAAU,MAAM;IACpB,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,MAAM;IACpB,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACxB,OAAO,MAAM,CAAC,GAAG,EAAE,EAAC,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACxB,OAAO,MAAM,CAAC,GAAG,EAAE,EAAC,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK;IACzB,OAAO,CAAC,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.mts","sourceRoot":"","sources":["../../src/ids/index.test.mts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { expect, test } from 'vitest';
|
|
2
|
+
import { ksuid, uuidv4, uuidv4b64, uuidv7, uuidv7b64 } from './index.mjs';
|
|
3
|
+
test('Test ID generation', async () => {
|
|
4
|
+
expect(uuidv4()).toMatch(/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/);
|
|
5
|
+
expect(uuidv7()).toMatch(/^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/);
|
|
6
|
+
expect(uuidv4b64()).toMatch(/^[0-9a-zA-Z_-]{22}$/);
|
|
7
|
+
expect(uuidv7b64()).toMatch(/^[0-9a-zA-Z_-]{22}$/);
|
|
8
|
+
expect(await ksuid()).toMatch(/^[0-9A-Za-z]{27}$/);
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=index.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.mjs","sourceRoot":"","sources":["../../src/ids/index.test.mts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,IAAI,EAAC,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAC,MAAM,aAAa,CAAC;AAExE,IAAI,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;IACpC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CACtB,uEAAuE,CACxE,CAAC;IACF,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CACtB,uEAAuE,CACxE,CAAC;IACF,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACnD,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACnD,MAAM,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"equality.d.mts","sourceRoot":"","sources":["../../src/lang/equality.mts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,WA4B5D"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { isObject } from './type-functions.mjs';
|
|
2
|
+
export function deepEquals(object1, object2) {
|
|
3
|
+
if (object1 === undefined ||
|
|
4
|
+
object2 === undefined ||
|
|
5
|
+
object1 === null ||
|
|
6
|
+
object2 === null) {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
const obj1 = object1;
|
|
10
|
+
const obj2 = object2;
|
|
11
|
+
const keys1 = Object.keys(obj1);
|
|
12
|
+
const keys2 = Object.keys(obj2);
|
|
13
|
+
if (keys1.length !== keys2.length) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
for (const key of keys1) {
|
|
17
|
+
const val1 = obj1[key];
|
|
18
|
+
const val2 = obj2[key];
|
|
19
|
+
const areObjects = isObject(val1) && isObject(val2);
|
|
20
|
+
if ((areObjects && !deepEquals(val1, val2)) ||
|
|
21
|
+
(!areObjects && val1 !== val2)) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=equality.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"equality.mjs","sourceRoot":"","sources":["../../src/lang/equality.mts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAE9C,MAAM,UAAU,UAAU,CAAC,OAAgB,EAAE,OAAgB;IAC3D,IACE,OAAO,KAAK,SAAS;QACrB,OAAO,KAAK,SAAS;QACrB,OAAO,KAAK,IAAI;QAChB,OAAO,KAAK,IAAI,EAChB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,GAAG,OAAmC,CAAC;IACjD,MAAM,IAAI,GAAG,OAAmC,CAAC;IACjD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpD,IACE,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvC,CAAC,CAAC,UAAU,IAAI,IAAI,KAAK,IAAI,CAAC,EAC9B,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"equality.test.d.mts","sourceRoot":"","sources":["../../src/lang/equality.test.mts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { test, expect } from 'vitest';
|
|
2
|
+
import { deepEquals } from './equality.mjs';
|
|
3
|
+
test('Test deepEquals', () => {
|
|
4
|
+
expect(deepEquals('bar', 'bar')).toBeTruthy();
|
|
5
|
+
expect(deepEquals('bar', 'baz')).toBeFalsy();
|
|
6
|
+
expect(deepEquals({ bar: 'baz', foo: 'bar' }, { foo: 'bar', bar: 'baz' })).toBeTruthy();
|
|
7
|
+
expect(deepEquals('bar', 'baz')).toBeFalsy();
|
|
8
|
+
expect(deepEquals(['bar', 'baz'], ['baz', 'bar'])).toBeFalsy();
|
|
9
|
+
expect(deepEquals(['bar', 'baz'], ['bar', 'baz', 'foo'])).toBeFalsy();
|
|
10
|
+
expect(deepEquals('bar', undefined)).toBeFalsy();
|
|
11
|
+
expect(deepEquals('bar', null)).toBeFalsy();
|
|
12
|
+
expect(deepEquals(undefined, 'bar')).toBeFalsy();
|
|
13
|
+
expect(deepEquals(null, 'baz')).toBeFalsy();
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=equality.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"equality.test.mjs","sourceRoot":"","sources":["../../src/lang/equality.test.mts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,MAAM,EAAC,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAC,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAE1C,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC3B,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IAC9C,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAC7C,MAAM,CACJ,UAAU,CAAC,EAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAC,EAAE,EAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAC,CAAC,CAC/D,CAAC,UAAU,EAAE,CAAC;IACf,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAC7C,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAC/D,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IACtE,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IACjD,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAC5C,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IACjD,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AAC9C,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/lang/index.mts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/lang/index.mts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge.d.mts","sourceRoot":"","sources":["../../src/lang/merge.mts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI;KAAE,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAC,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge.mjs","sourceRoot":"","sources":["../../src/lang/merge.mts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sleep.d.mts","sourceRoot":"","sources":["../../src/lang/sleep.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,oBAE/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sleep.mjs","sourceRoot":"","sources":["../../src/lang/sleep.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-functions.d.mts","sourceRoot":"","sources":["../../src/lang/type-functions.mts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIvE;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,MAAM,CAEtD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,KAAK,CAEpD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function isObject(item) {
|
|
2
|
+
return (item !== null && typeof item === 'object' && Array.isArray(item) === false);
|
|
3
|
+
}
|
|
4
|
+
export function isString(item) {
|
|
5
|
+
return typeof item === 'string';
|
|
6
|
+
}
|
|
7
|
+
export function isError(item) {
|
|
8
|
+
return item instanceof Error;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=type-functions.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-functions.mjs","sourceRoot":"","sources":["../../src/lang/type-functions.mts"],"names":[],"mappings":"AAAA,MAAM,UAAU,QAAQ,CAAC,IAAa;IACpC,OAAO,CACL,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,CAC3E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAa;IACpC,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAa;IACnC,OAAO,IAAI,YAAY,KAAK,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates a state string for use with OAuth2.0 authorization requests.
|
|
3
|
+
*
|
|
4
|
+
* @param len The length of the state string in bytes. Defaults to 16 bytes.
|
|
5
|
+
*/
|
|
6
|
+
export declare function generateState(len?: number): string;
|
|
7
|
+
/**
|
|
8
|
+
* Generates a nonce string for use with OAuth2.0 authorization requests.
|
|
9
|
+
*
|
|
10
|
+
* @param len The length of the state string in bytes. Defaults to 16 bytes.
|
|
11
|
+
*/
|
|
12
|
+
export declare function generateNonce(len?: number): string;
|
|
13
|
+
/**
|
|
14
|
+
* Generates a secret string for use with OAuth2.0 authorization requests.
|
|
15
|
+
*
|
|
16
|
+
* @param len The length of the state string in bytes. Defaults to 32 bytes.
|
|
17
|
+
*/
|
|
18
|
+
export declare function generateSecret(len?: number): string;
|
|
19
|
+
//# sourceMappingURL=crypto-functions.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto-functions.d.mts","sourceRoot":"","sources":["../../src/oauth/crypto-functions.mts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAOlD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAOlD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAOnD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as crypto from 'crypto';
|
|
2
|
+
import { tob64s } from '../bitsnbytes/index.mjs';
|
|
3
|
+
/**
|
|
4
|
+
* Generates a state string for use with OAuth2.0 authorization requests.
|
|
5
|
+
*
|
|
6
|
+
* @param len The length of the state string in bytes. Defaults to 16 bytes.
|
|
7
|
+
*/
|
|
8
|
+
export function generateState(len) {
|
|
9
|
+
if (len && len < 16) {
|
|
10
|
+
throw new Error('State must be at least 16 bytes');
|
|
11
|
+
}
|
|
12
|
+
return tob64s(crypto.randomBytes(len ?? 16), {
|
|
13
|
+
b64chars: 'url',
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Generates a nonce string for use with OAuth2.0 authorization requests.
|
|
18
|
+
*
|
|
19
|
+
* @param len The length of the state string in bytes. Defaults to 16 bytes.
|
|
20
|
+
*/
|
|
21
|
+
export function generateNonce(len) {
|
|
22
|
+
if (len && len < 16) {
|
|
23
|
+
throw new Error('Nonce must be at least 16 bytes');
|
|
24
|
+
}
|
|
25
|
+
return tob64s(crypto.randomBytes(len ?? 16), {
|
|
26
|
+
b64chars: 'url',
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Generates a secret string for use with OAuth2.0 authorization requests.
|
|
31
|
+
*
|
|
32
|
+
* @param len The length of the state string in bytes. Defaults to 32 bytes.
|
|
33
|
+
*/
|
|
34
|
+
export function generateSecret(len) {
|
|
35
|
+
if (len && len < 32) {
|
|
36
|
+
throw new Error('Secret must be at least 32 bytes');
|
|
37
|
+
}
|
|
38
|
+
return tob64s(crypto.randomBytes(len ?? 32), {
|
|
39
|
+
b64chars: 'url',
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=crypto-functions.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto-functions.mjs","sourceRoot":"","sources":["../../src/oauth/crypto-functions.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAC,MAAM,EAAC,MAAM,yBAAyB,CAAC;AAE/C;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;QAC3C,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;QAC3C,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;QAC3C,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto-functions.test.d.mts","sourceRoot":"","sources":["../../src/oauth/crypto-functions.test.mts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { test, expect } from 'vitest';
|
|
2
|
+
import { generateNonce, generateSecret, generateState, } from './crypto-functions.mjs';
|
|
3
|
+
test('Test generateState', () => {
|
|
4
|
+
const state = generateState();
|
|
5
|
+
expect(state).toMatch(/^[A-Za-z0-9_-]{22}$/);
|
|
6
|
+
});
|
|
7
|
+
test('Test generateState with custom length', () => {
|
|
8
|
+
const state = generateState(32);
|
|
9
|
+
expect(state).toMatch(/^[A-Za-z0-9_-]{43}$/);
|
|
10
|
+
});
|
|
11
|
+
test('Test generateState with invalid length', () => {
|
|
12
|
+
expect(() => generateState(10)).toThrow('State must be at least 16 bytes');
|
|
13
|
+
});
|
|
14
|
+
test('Test generateNonce', () => {
|
|
15
|
+
const nonce = generateNonce();
|
|
16
|
+
expect(nonce).toMatch(/^[A-Za-z0-9_-]{22}$/);
|
|
17
|
+
});
|
|
18
|
+
test('Test generateNonce with custom length', () => {
|
|
19
|
+
const nonce = generateNonce(32);
|
|
20
|
+
expect(nonce).toMatch(/^[A-Za-z0-9_-]{43}$/);
|
|
21
|
+
});
|
|
22
|
+
test('Test generateNonce with invalid length', () => {
|
|
23
|
+
expect(() => generateNonce(10)).toThrow('Nonce must be at least 16 bytes');
|
|
24
|
+
});
|
|
25
|
+
test('Test generateSecret', () => {
|
|
26
|
+
const secret = generateSecret();
|
|
27
|
+
expect(secret).toMatch(/^[A-Za-z0-9_-]{43}$/);
|
|
28
|
+
});
|
|
29
|
+
test('Test generateSecret with custom length', () => {
|
|
30
|
+
const secret = generateSecret(64);
|
|
31
|
+
expect(secret).toMatch(/^[A-Za-z0-9_-]{86}$/);
|
|
32
|
+
});
|
|
33
|
+
test('Test generateSecret with invalid length', () => {
|
|
34
|
+
expect(() => generateSecret(10)).toThrow('Secret must be at least 32 bytes');
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=crypto-functions.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto-functions.test.mjs","sourceRoot":"","sources":["../../src/oauth/crypto-functions.test.mts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,MAAM,EAAC,MAAM,QAAQ,CAAC;AACpC,OAAO,EACL,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,wBAAwB,CAAC;AAEhC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAC9B,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACjD,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;IAChC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;IAClD,MAAM,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;AAC7E,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAC9B,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACjD,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;IAChC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;IAClD,MAAM,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;AAC7E,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE;IAC/B,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAChC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;IAClD,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;IAClC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACnD,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;AAC/E,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/oauth/index.mts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/oauth/index.mts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/validator/index.mts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/validator/index.mts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests if a value is null or undefined.
|
|
3
|
+
*
|
|
4
|
+
* @param o the value to check
|
|
5
|
+
*/
|
|
6
|
+
export declare function isNotNull(o?: unknown): o is NonNullable<unknown>;
|
|
7
|
+
/**
|
|
8
|
+
* Throws a ValidationError if the value is null or undefined.
|
|
9
|
+
* This function also asserts the value to be NonNullable if the check passes.
|
|
10
|
+
*
|
|
11
|
+
* @param name the name of the variable
|
|
12
|
+
* @param o the value to check
|
|
13
|
+
*/
|
|
14
|
+
export declare function notNull(name: string, o?: unknown): asserts o is NonNullable<unknown>;
|
|
15
|
+
/**
|
|
16
|
+
* Tests if a value is empty, null, undefined or has a length of 0.
|
|
17
|
+
*
|
|
18
|
+
* @param o the value to check
|
|
19
|
+
*/
|
|
20
|
+
export declare function isNotEmpty(o?: unknown): o is NonNullable<unknown>;
|
|
21
|
+
/**
|
|
22
|
+
* Throws a ValidationError if the value is null, undefined or the length is 0.
|
|
23
|
+
* This function also asserts the value to be NonNullable if the check passes.
|
|
24
|
+
*
|
|
25
|
+
* @param name the name of the variable
|
|
26
|
+
* @param o the value to check
|
|
27
|
+
*/
|
|
28
|
+
export declare function notEmpty(name: string, o?: unknown): asserts o is NonNullable<unknown>;
|
|
29
|
+
/**
|
|
30
|
+
* Tests if a value is null, undefined, has a length of 0 or contains only whitespace.
|
|
31
|
+
*
|
|
32
|
+
* @param o the value to check
|
|
33
|
+
*/
|
|
34
|
+
export declare function isNotBlank(o?: unknown): o is NonNullable<unknown>;
|
|
35
|
+
/**
|
|
36
|
+
* Throws a ValidationError if the value is null, undefined, has a length of 0 or contains only whitespace.
|
|
37
|
+
* This function also asserts the value to be NonNullable if the check passes.
|
|
38
|
+
*
|
|
39
|
+
* @param name the name of the variable
|
|
40
|
+
* @param o the value to check
|
|
41
|
+
*/
|
|
42
|
+
export declare function notBlank(name: string, o?: unknown): asserts o is NonNullable<unknown>;
|
|
43
|
+
/**
|
|
44
|
+
* Tests if a value does not match the regular expression provided.
|
|
45
|
+
* Undefined and null values are skipped and not tested.
|
|
46
|
+
*
|
|
47
|
+
* @param regex the regular expression to test with
|
|
48
|
+
* @param o the value to check
|
|
49
|
+
*/
|
|
50
|
+
export declare function isMatch(regex: RegExp, o?: string | null): o is string;
|
|
51
|
+
/**
|
|
52
|
+
* Throws a ValidationError if the value matches the regular expression provided.
|
|
53
|
+
* Undefined and null values are skipped and not validated.
|
|
54
|
+
*
|
|
55
|
+
* @param name the name of the variable
|
|
56
|
+
* @param regex the regular expression to validate with
|
|
57
|
+
* @param o the value to check
|
|
58
|
+
*/
|
|
59
|
+
export declare function match(name: string, regex: RegExp, o?: string | null): void;
|
|
60
|
+
/**
|
|
61
|
+
* Tests if a value is a valid email address.
|
|
62
|
+
* Undefined and null values are skipped and not validated.
|
|
63
|
+
*
|
|
64
|
+
* @param o the value to check
|
|
65
|
+
*/
|
|
66
|
+
export declare function isEmail(o?: string | null): o is string;
|
|
67
|
+
/**
|
|
68
|
+
* Throws a ValidationError if the value provided is not an email.
|
|
69
|
+
* Undefined and null values are skipped and not validated.
|
|
70
|
+
*
|
|
71
|
+
* @param name the name of the variable
|
|
72
|
+
* @param o the value to check
|
|
73
|
+
*/
|
|
74
|
+
export declare function email(name: string, o?: string | null): void;
|
|
75
|
+
/**
|
|
76
|
+
* Tests if a value has a length that is less than the provided length.
|
|
77
|
+
* Undefined and null values are skipped and not validated.
|
|
78
|
+
*
|
|
79
|
+
* @param length the maximum length of the variable
|
|
80
|
+
* @param o the value to check
|
|
81
|
+
*/
|
|
82
|
+
export declare function isMaxLength(length: number, o?: string | unknown[] | null): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Throws a ValidationError if the value provided has a length that exceeds the provided length.
|
|
85
|
+
* Undefined and null values are skipped and not validated.
|
|
86
|
+
*
|
|
87
|
+
* @param name the name of the variable
|
|
88
|
+
* @param length the maximum length of the variable
|
|
89
|
+
* @param o the value to check
|
|
90
|
+
*/
|
|
91
|
+
export declare function maxLength(name: string, length: number, o?: string | unknown[] | null): void;
|
|
92
|
+
/**
|
|
93
|
+
* Tests if a value has a length that is greater than the provided length.
|
|
94
|
+
* Undefined and null values are skipped and not validated.
|
|
95
|
+
*
|
|
96
|
+
* @param length the minimum length of the variable
|
|
97
|
+
* @param o the value to check
|
|
98
|
+
*/
|
|
99
|
+
export declare function isMinLength(length: number, o?: string | unknown[] | null): boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Throws a ValidationError if the value provided has a length that is less than the provided length.
|
|
102
|
+
* Undefined and null values are skipped and not validated.
|
|
103
|
+
*
|
|
104
|
+
* @param name the name of the variable
|
|
105
|
+
* @param length the minimum length of the variable
|
|
106
|
+
* @param o the value to check
|
|
107
|
+
*/
|
|
108
|
+
export declare function minLength(name: string, length: number, o?: string | unknown[] | null): void;
|
|
109
|
+
/**
|
|
110
|
+
* Tests if a value provided is a number.
|
|
111
|
+
* Undefined and null values are skipped and not validated.
|
|
112
|
+
*
|
|
113
|
+
* @param o the value to check
|
|
114
|
+
*/
|
|
115
|
+
export declare function isNumber(o?: string | null | number): boolean;
|
|
116
|
+
/**
|
|
117
|
+
* Throws a ValidationError if the value provided is not a number.
|
|
118
|
+
* Undefined and null values are skipped and not validated.
|
|
119
|
+
*
|
|
120
|
+
* @param name the name of the variable
|
|
121
|
+
* @param o the value to check
|
|
122
|
+
*/
|
|
123
|
+
export declare function number(name: string, o?: string | null | number): void;
|
|
124
|
+
/**
|
|
125
|
+
* Tests if a value is less than the provided minimum value.
|
|
126
|
+
* Undefined and null values are skipped and not validated.
|
|
127
|
+
*
|
|
128
|
+
* @param minValue the minimum value allowed
|
|
129
|
+
* @param o the value to check
|
|
130
|
+
*/
|
|
131
|
+
export declare function isMinValue(minValue: number, o?: string | number | null): boolean;
|
|
132
|
+
/**
|
|
133
|
+
* Throws a ValidationError if the value is less than the provided minimum value.
|
|
134
|
+
* Undefined and null values are skipped and not validated.
|
|
135
|
+
*
|
|
136
|
+
* @param name the name of the variable
|
|
137
|
+
* @param minValue the minimum value allowed
|
|
138
|
+
* @param o the value to check
|
|
139
|
+
*/
|
|
140
|
+
export declare function minValue(name: string, minValue: number, o?: number | string | null): void;
|
|
141
|
+
/**
|
|
142
|
+
* Tests if a value is more than the provided maximum value.
|
|
143
|
+
* Undefined and null values are skipped and not validated.
|
|
144
|
+
*
|
|
145
|
+
* @param maxValue the maximum value allowed
|
|
146
|
+
* @param o the value to check
|
|
147
|
+
*/
|
|
148
|
+
export declare function isMaxValue(maxValue: number, o?: string | number | null): boolean;
|
|
149
|
+
/**
|
|
150
|
+
* Throws a ValidationError if the value is more than the provided maximum value.
|
|
151
|
+
* Undefined and null values are skipped and not validated.
|
|
152
|
+
*
|
|
153
|
+
* @param name the name of the variable
|
|
154
|
+
* @param maxValue the maximum value allowed
|
|
155
|
+
* @param o the value to check
|
|
156
|
+
*/
|
|
157
|
+
export declare function maxValue(name: string, maxValue: number, o?: number | string | null): void;
|
|
158
|
+
/**
|
|
159
|
+
* Tests if the value is between the provided minimum and maximum values inclusive.
|
|
160
|
+
* Undefined and null values are skipped and not validated.
|
|
161
|
+
*
|
|
162
|
+
* @param minValue the minimum value allowed
|
|
163
|
+
* @param maxValue the maximum value allowed
|
|
164
|
+
* @param o the value to check
|
|
165
|
+
*/
|
|
166
|
+
export declare function isBetweenValues(minValue: number, maxValue: number, o?: string | number | null): boolean;
|
|
167
|
+
/**
|
|
168
|
+
* Throws a ValidationError if the value is not between the provided minimum and maximum values inclusive.
|
|
169
|
+
* Undefined and null values are skipped and not validated.
|
|
170
|
+
*
|
|
171
|
+
* @param name the name of the variable
|
|
172
|
+
* @param minValue the minimum value allowed
|
|
173
|
+
* @param maxValue the maximum value allowed
|
|
174
|
+
* @param o the value to check
|
|
175
|
+
*/
|
|
176
|
+
export declare function betweenValues(name: string, minValue: number, maxValue: number, o?: string | number | null): void;
|
|
177
|
+
export interface StringValidationOptions {
|
|
178
|
+
readonly required: boolean;
|
|
179
|
+
readonly minLength?: number;
|
|
180
|
+
readonly maxLength?: number;
|
|
181
|
+
readonly regex?: RegExp;
|
|
182
|
+
readonly notBlank?: boolean;
|
|
183
|
+
readonly notEmpty?: boolean;
|
|
184
|
+
readonly email?: boolean;
|
|
185
|
+
readonly number?: boolean;
|
|
186
|
+
}
|
|
187
|
+
export declare function isValidString(options: StringValidationOptions, value?: unknown): value is string;
|
|
188
|
+
export declare function validString(name: string, options: StringValidationOptions, value?: unknown): void;
|
|
189
|
+
//# sourceMappingURL=validators.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.d.mts","sourceRoot":"","sources":["../../src/validator/validators.mts"],"names":[],"mappings":"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"}
|