@20syldev/api 3.5.0 → 4.0.0
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/.prettierrc +7 -0
- package/README.md +32 -33
- package/dist/app.js +36 -0
- package/dist/app.js.map +1 -0
- package/dist/config/env.js +73 -0
- package/dist/config/env.js.map +1 -0
- package/dist/config/versions.js +72 -0
- package/dist/config/versions.js.map +1 -0
- package/dist/constants.js +42 -0
- package/dist/constants.js.map +1 -0
- package/dist/middleware/cors.js +15 -0
- package/dist/middleware/cors.js.map +1 -0
- package/dist/middleware/error.js +6 -0
- package/dist/middleware/error.js.map +1 -0
- package/dist/middleware/json.js +8 -0
- package/dist/middleware/json.js.map +1 -0
- package/dist/middleware/logger.js +26 -0
- package/dist/middleware/logger.js.map +1 -0
- package/dist/middleware/ratelimit.js +58 -0
- package/dist/middleware/ratelimit.js.map +1 -0
- package/dist/middleware/version.js +30 -0
- package/dist/middleware/version.js.map +1 -0
- package/dist/modules/v3/algorithms.js +221 -0
- package/dist/modules/v3/algorithms.js.map +1 -0
- package/{modules → dist/modules}/v3/captcha.js +4 -13
- package/dist/modules/v3/captcha.js.map +1 -0
- package/dist/modules/v3/chat.js +103 -0
- package/dist/modules/v3/chat.js.map +1 -0
- package/{modules → dist/modules}/v3/color.js +12 -13
- package/dist/modules/v3/color.js.map +1 -0
- package/dist/modules/v3/convert.js +41 -0
- package/dist/modules/v3/convert.js.map +1 -0
- package/dist/modules/v3/domain.js +83 -0
- package/dist/modules/v3/domain.js.map +1 -0
- package/dist/modules/v3/hash.js +16 -0
- package/dist/modules/v3/hash.js.map +1 -0
- package/dist/modules/v3/hyperplanning.js +50 -0
- package/dist/modules/v3/hyperplanning.js.map +1 -0
- package/dist/modules/v3/levenshtein.js +38 -0
- package/dist/modules/v3/levenshtein.js.map +1 -0
- package/dist/modules/v3/personal.js +129 -0
- package/dist/modules/v3/personal.js.map +1 -0
- package/dist/modules/v3/qrcode.js +21 -0
- package/dist/modules/v3/qrcode.js.map +1 -0
- package/dist/modules/v3/tic_tac_toe.js +221 -0
- package/dist/modules/v3/tic_tac_toe.js.map +1 -0
- package/dist/modules/v3/time.js +88 -0
- package/dist/modules/v3/time.js.map +1 -0
- package/{modules → dist/modules}/v3/token.js +10 -11
- package/dist/modules/v3/token.js.map +1 -0
- package/dist/modules/v3/username.js +92 -0
- package/dist/modules/v3/username.js.map +1 -0
- package/dist/modules/v3/utils.js +70 -0
- package/dist/modules/v3/utils.js.map +1 -0
- package/dist/modules/v3.js +16 -0
- package/dist/modules/v3.js.map +1 -0
- package/dist/modules/v4/algorithms.js +200 -0
- package/dist/modules/v4/algorithms.js.map +1 -0
- package/dist/modules/v4/captcha.js +35 -0
- package/dist/modules/v4/captcha.js.map +1 -0
- package/dist/modules/v4/chat.js +92 -0
- package/dist/modules/v4/chat.js.map +1 -0
- package/dist/modules/v4/color.js +43 -0
- package/dist/modules/v4/color.js.map +1 -0
- package/dist/modules/v4/convert.js +33 -0
- package/dist/modules/v4/convert.js.map +1 -0
- package/dist/modules/v4/dice.js +30 -0
- package/dist/modules/v4/dice.js.map +1 -0
- package/dist/modules/v4/domain.js +78 -0
- package/dist/modules/v4/domain.js.map +1 -0
- package/dist/modules/v4/encode.js +165 -0
- package/dist/modules/v4/encode.js.map +1 -0
- package/dist/modules/v4/geo.js +41 -0
- package/dist/modules/v4/geo.js.map +1 -0
- package/dist/modules/v4/hash.js +9 -0
- package/dist/modules/v4/hash.js.map +1 -0
- package/dist/modules/v4/hyperplanning.js +42 -0
- package/dist/modules/v4/hyperplanning.js.map +1 -0
- package/dist/modules/v4/levenshtein.js +29 -0
- package/dist/modules/v4/levenshtein.js.map +1 -0
- package/dist/modules/v4/palette.js +89 -0
- package/dist/modules/v4/palette.js.map +1 -0
- package/dist/modules/v4/personal.js +125 -0
- package/dist/modules/v4/personal.js.map +1 -0
- package/dist/modules/v4/placeholder.js +96 -0
- package/dist/modules/v4/placeholder.js.map +1 -0
- package/dist/modules/v4/qrcode.js +12 -0
- package/dist/modules/v4/qrcode.js.map +1 -0
- package/dist/modules/v4/statistics.js +41 -0
- package/dist/modules/v4/statistics.js.map +1 -0
- package/dist/modules/v4/text.js +293 -0
- package/dist/modules/v4/text.js.map +1 -0
- package/dist/modules/v4/tic_tac_toe.js +206 -0
- package/dist/modules/v4/tic_tac_toe.js.map +1 -0
- package/dist/modules/v4/time.js +73 -0
- package/dist/modules/v4/time.js.map +1 -0
- package/dist/modules/v4/token.js +36 -0
- package/dist/modules/v4/token.js.map +1 -0
- package/dist/modules/v4/username.js +87 -0
- package/dist/modules/v4/username.js.map +1 -0
- package/dist/modules/v4/utils.js +26 -0
- package/dist/modules/v4/utils.js.map +1 -0
- package/dist/modules/v4/validate.js +54 -0
- package/dist/modules/v4/validate.js.map +1 -0
- package/dist/modules/v4.js +18 -0
- package/dist/modules/v4.js.map +1 -0
- package/dist/routes/delete.js +65 -0
- package/dist/routes/delete.js.map +1 -0
- package/dist/routes/get.js +441 -0
- package/dist/routes/get.js.map +1 -0
- package/dist/routes/index.js +50 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/patch.js +41 -0
- package/dist/routes/patch.js.map +1 -0
- package/dist/routes/post.js +185 -0
- package/dist/routes/post.js.map +1 -0
- package/dist/storage/index.js +13 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/types/storage.js +2 -0
- package/dist/types/storage.js.map +1 -0
- package/dist/utils/response.js +10 -0
- package/dist/utils/response.js.map +1 -0
- package/dist/utils/version.js +3 -0
- package/dist/utils/version.js.map +1 -0
- package/eslint.config.js +20 -0
- package/package.json +30 -15
- package/src/app.ts +44 -0
- package/src/config/env.ts +81 -0
- package/src/config/versions.ts +80 -0
- package/src/constants.ts +28 -0
- package/src/middleware/cors.ts +17 -0
- package/src/middleware/error.ts +7 -0
- package/src/middleware/json.ts +9 -0
- package/src/middleware/logger.ts +31 -0
- package/src/middleware/ratelimit.ts +66 -0
- package/src/middleware/version.ts +39 -0
- package/{modules → src/modules}/v3/algorithms.js +1 -1
- package/src/modules/v3/captcha.js +60 -0
- package/{modules → src/modules}/v3/chat.js +6 -4
- package/src/modules/v3/color.js +60 -0
- package/{modules → src/modules}/v3/convert.js +5 -5
- package/{modules → src/modules}/v3/domain.js +51 -4
- package/{modules → src/modules}/v3/hash.js +1 -1
- package/{modules → src/modules}/v3/hyperplanning.js +11 -10
- package/{modules → src/modules}/v3/levenshtein.js +3 -3
- package/{modules → src/modules}/v3/personal.js +20 -8
- package/{modules → src/modules}/v3/qrcode.js +1 -1
- package/{modules → src/modules}/v3/tic_tac_toe.js +24 -18
- package/{modules → src/modules}/v3/time.js +22 -11
- package/src/modules/v3/token.js +54 -0
- package/src/modules/v3/username.js +94 -0
- package/{modules → src/modules}/v3/utils.js +2 -2
- package/{modules → src/modules}/v3.js +1 -1
- package/src/modules/v4/algorithms.ts +155 -0
- package/src/modules/v4/captcha.ts +49 -0
- package/src/modules/v4/chat.ts +99 -0
- package/src/modules/v4/color.ts +64 -0
- package/src/modules/v4/convert.ts +38 -0
- package/src/modules/v4/domain.ts +81 -0
- package/src/modules/v4/hash.ts +9 -0
- package/src/modules/v4/hyperplanning.ts +58 -0
- package/src/modules/v4/levenshtein.ts +38 -0
- package/src/modules/v4/personal.ts +147 -0
- package/src/modules/v4/qrcode.ts +11 -0
- package/src/modules/v4/tic_tac_toe.ts +223 -0
- package/src/modules/v4/time.ts +92 -0
- package/src/modules/v4/token.ts +43 -0
- package/src/modules/v4/username.ts +89 -0
- package/src/modules/v4/utils.ts +38 -0
- package/src/modules/v4.ts +15 -0
- package/src/routes/get.ts +461 -0
- package/src/routes/index.ts +58 -0
- package/src/routes/post.ts +200 -0
- package/src/storage/index.ts +16 -0
- package/src/types/express.d.ts +17 -0
- package/src/types/storage.ts +48 -0
- package/src/utils/response.ts +11 -0
- package/tsconfig.json +17 -0
- package/app.js +0 -865
- package/modules/v3/username.js +0 -32
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color.js","sourceRoot":"","sources":["../../../src/modules/v4/color.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { MIN_TEMPERATURE, MAX_TEMPERATURE } from '../../constants.js';
|
|
2
|
+
const conversions = {
|
|
3
|
+
celsius: {
|
|
4
|
+
fahrenheit: (val) => (val * 9) / 5 + 32,
|
|
5
|
+
kelvin: (val) => val + 273.15,
|
|
6
|
+
},
|
|
7
|
+
fahrenheit: {
|
|
8
|
+
celsius: (val) => ((val - 32) * 5) / 9,
|
|
9
|
+
kelvin: (val) => ((val - 32) * 5) / 9 + 273.15,
|
|
10
|
+
},
|
|
11
|
+
kelvin: {
|
|
12
|
+
celsius: (val) => val - 273.15,
|
|
13
|
+
fahrenheit: (val) => ((val - 273.15) * 9) / 5 + 32,
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
export default function convert(value, from, to) {
|
|
17
|
+
const convertFn = conversions[from.toLowerCase()]?.[to.toLowerCase()];
|
|
18
|
+
if (!convertFn)
|
|
19
|
+
throw new Error('Invalid conversion unit');
|
|
20
|
+
if (isNaN(Number(value)))
|
|
21
|
+
throw new Error('Value must be a number');
|
|
22
|
+
if (Number(value) < MIN_TEMPERATURE)
|
|
23
|
+
throw new Error('Value must be greater than absolute zero');
|
|
24
|
+
if (Number(value) > MAX_TEMPERATURE)
|
|
25
|
+
throw new Error('Value must be less than 1,000,000');
|
|
26
|
+
return {
|
|
27
|
+
from,
|
|
28
|
+
to,
|
|
29
|
+
value: parseFloat(String(value)),
|
|
30
|
+
result: convertFn(parseFloat(String(value))),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=convert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../src/modules/v4/convert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAItE,MAAM,WAAW,GAAiD;IAC9D,OAAO,EAAE;QACL,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;QACvC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM;KAChC;IACD,UAAU,EAAE;QACR,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;QACtC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM;KACjD;IACD,MAAM,EAAE;QACJ,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM;QAC9B,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;KACrD;CACJ,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,OAAO,CAC3B,KAAsB,EACtB,IAAY,EACZ,EAAU;IAEV,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAEtE,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC3D,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACpE,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,eAAe;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACjG,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,eAAe;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAE1F,OAAO;QACH,IAAI;QACJ,EAAE;QACF,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,EAAE,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;KAC/C,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export default function dice(roll) {
|
|
2
|
+
if (!roll)
|
|
3
|
+
throw new Error('A roll notation is required (e.g. 2d6+3)');
|
|
4
|
+
if (typeof roll !== 'string')
|
|
5
|
+
throw new Error('Roll must be a string');
|
|
6
|
+
const match = /^(\d*)d(\d+)([+-]\d+)?$/i.exec(roll.trim().replace(/\s+/g, '+'));
|
|
7
|
+
if (!match)
|
|
8
|
+
throw new Error('Invalid notation. Use NdX or NdX+M (e.g. 2d6+3)');
|
|
9
|
+
const count = match[1] ? parseInt(match[1], 10) : 1;
|
|
10
|
+
const sides = parseInt(match[2], 10);
|
|
11
|
+
const modifier = match[3] ? parseInt(match[3], 10) : 0;
|
|
12
|
+
if (count < 1 || count > 100)
|
|
13
|
+
throw new Error('Number of dice must be between 1 and 100');
|
|
14
|
+
if (sides < 2 || sides > 1000)
|
|
15
|
+
throw new Error('Number of sides must be between 2 and 1000');
|
|
16
|
+
const results = [];
|
|
17
|
+
for (let i = 0; i < count; i++) {
|
|
18
|
+
results.push(1 + Math.floor(Math.random() * sides));
|
|
19
|
+
}
|
|
20
|
+
const total = results.reduce((a, b) => a + b, 0) + modifier;
|
|
21
|
+
return {
|
|
22
|
+
roll: `${count}d${sides}${modifier ? (modifier > 0 ? `+${modifier}` : modifier) : ''}`,
|
|
23
|
+
count,
|
|
24
|
+
sides,
|
|
25
|
+
modifier,
|
|
26
|
+
results,
|
|
27
|
+
total,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=dice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dice.js","sourceRoot":"","sources":["../../../src/modules/v4/dice.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,IAAY;IACrC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACvE,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAEvE,MAAM,KAAK,GAAG,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAChF,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IAE/E,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvD,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC1F,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAE7F,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC;IAE5D,OAAO;QACH,IAAI,EAAE,GAAG,KAAK,IAAI,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;QACtF,KAAK;QACL,KAAK;QACL,QAAQ;QACR,OAAO;QACP,KAAK;KACR,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { random, genIP } from './utils.js';
|
|
2
|
+
export default function domain() {
|
|
3
|
+
const subdomains = [
|
|
4
|
+
'fr.',
|
|
5
|
+
'en.',
|
|
6
|
+
'docs.',
|
|
7
|
+
'api.',
|
|
8
|
+
'projects.',
|
|
9
|
+
'app.',
|
|
10
|
+
'web.',
|
|
11
|
+
'info.',
|
|
12
|
+
'dev.',
|
|
13
|
+
'shop.',
|
|
14
|
+
'blog.',
|
|
15
|
+
'support.',
|
|
16
|
+
'mail.',
|
|
17
|
+
'forum.',
|
|
18
|
+
];
|
|
19
|
+
const domains = [
|
|
20
|
+
'example',
|
|
21
|
+
'site',
|
|
22
|
+
'test',
|
|
23
|
+
'demo',
|
|
24
|
+
'page',
|
|
25
|
+
'store',
|
|
26
|
+
'portfolio',
|
|
27
|
+
'platform',
|
|
28
|
+
'hub',
|
|
29
|
+
'network',
|
|
30
|
+
'service',
|
|
31
|
+
'cloud',
|
|
32
|
+
'solutions',
|
|
33
|
+
'company',
|
|
34
|
+
];
|
|
35
|
+
const tlds = [
|
|
36
|
+
'.com',
|
|
37
|
+
'.fr',
|
|
38
|
+
'.eu',
|
|
39
|
+
'.dev',
|
|
40
|
+
'.net',
|
|
41
|
+
'.org',
|
|
42
|
+
'.io',
|
|
43
|
+
'.tech',
|
|
44
|
+
'.biz',
|
|
45
|
+
'.info',
|
|
46
|
+
'.co',
|
|
47
|
+
'.app',
|
|
48
|
+
'.store',
|
|
49
|
+
'.online',
|
|
50
|
+
'.shop',
|
|
51
|
+
'.tv',
|
|
52
|
+
];
|
|
53
|
+
const domainName = `${random(domains)}${random(tlds)}`;
|
|
54
|
+
const fulldomain = `${random(subdomains)}${domainName}`;
|
|
55
|
+
const ips = Array.from({ length: Math.floor(Math.random() * 3) + 1 }, genIP);
|
|
56
|
+
const dns = Array.from({ length: Math.floor(Math.random() * 5) + 1 }, genIP);
|
|
57
|
+
return {
|
|
58
|
+
domain: domainName,
|
|
59
|
+
full_domain: fulldomain,
|
|
60
|
+
ip_address: ips,
|
|
61
|
+
ssl_certified: Math.random() > 0.5,
|
|
62
|
+
hosting_provider: random(['AWS', 'Bluehost', 'DigitalOcean', 'GitHub', 'HostGator', 'Render', 'SiteGround']),
|
|
63
|
+
dns_servers: dns,
|
|
64
|
+
dns_provider: random(['AWS Route 53', 'Cloudflare', 'GoDaddy', 'Google DNS', 'Namecheap']),
|
|
65
|
+
traffic: `${Math.floor(Math.random() * 10000)} visits/day`,
|
|
66
|
+
seo_score: Math.floor(Math.random() * 100),
|
|
67
|
+
page_rank: Math.floor(Math.random() * 10),
|
|
68
|
+
country: random(['Australia', 'Canada', 'France', 'Germany', 'India', 'Japan', 'UK', 'USA']),
|
|
69
|
+
website_type: random(['Blog', 'Community', 'Corporate', 'Educational', 'E-commerce', 'Personal', 'Portfolio']),
|
|
70
|
+
random_name: domainName.split('.')[0],
|
|
71
|
+
random_subdomain: fulldomain.split('.')[0],
|
|
72
|
+
random_tld: domainName.split('.').pop(),
|
|
73
|
+
backlinks_count: Math.floor(Math.random() * 1000),
|
|
74
|
+
creation_date: new Date(Date.now() - Math.floor(Math.random() * 10000000000)).toISOString(),
|
|
75
|
+
expiration_date: new Date(Date.now() + Math.floor(Math.random() * 10000000000)).toISOString(),
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=domain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain.js","sourceRoot":"","sources":["../../../src/modules/v4/domain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { MAX_STRING_LENGTH } from '../../constants.js';
|
|
2
|
+
const MORSE_TABLE = {
|
|
3
|
+
A: '.-',
|
|
4
|
+
B: '-...',
|
|
5
|
+
C: '-.-.',
|
|
6
|
+
D: '-..',
|
|
7
|
+
E: '.',
|
|
8
|
+
F: '..-.',
|
|
9
|
+
G: '--.',
|
|
10
|
+
H: '....',
|
|
11
|
+
I: '..',
|
|
12
|
+
J: '.---',
|
|
13
|
+
K: '-.-',
|
|
14
|
+
L: '.-..',
|
|
15
|
+
M: '--',
|
|
16
|
+
N: '-.',
|
|
17
|
+
O: '---',
|
|
18
|
+
P: '.--.',
|
|
19
|
+
Q: '--.-',
|
|
20
|
+
R: '.-.',
|
|
21
|
+
S: '...',
|
|
22
|
+
T: '-',
|
|
23
|
+
U: '..-',
|
|
24
|
+
V: '...-',
|
|
25
|
+
W: '.--',
|
|
26
|
+
X: '-..-',
|
|
27
|
+
Y: '-.--',
|
|
28
|
+
Z: '--..',
|
|
29
|
+
'0': '-----',
|
|
30
|
+
'1': '.----',
|
|
31
|
+
'2': '..---',
|
|
32
|
+
'3': '...--',
|
|
33
|
+
'4': '....-',
|
|
34
|
+
'5': '.....',
|
|
35
|
+
'6': '-....',
|
|
36
|
+
'7': '--...',
|
|
37
|
+
'8': '---..',
|
|
38
|
+
'9': '----.',
|
|
39
|
+
'.': '.-.-.-',
|
|
40
|
+
',': '--..--',
|
|
41
|
+
'?': '..--..',
|
|
42
|
+
"'": '.----.',
|
|
43
|
+
'!': '-.-.--',
|
|
44
|
+
'/': '-..-.',
|
|
45
|
+
'(': '-.--.',
|
|
46
|
+
')': '-.--.-',
|
|
47
|
+
'&': '.-...',
|
|
48
|
+
':': '---...',
|
|
49
|
+
';': '-.-.-.',
|
|
50
|
+
'=': '-...-',
|
|
51
|
+
'+': '.-.-.',
|
|
52
|
+
'-': '-....-',
|
|
53
|
+
_: '..--.-',
|
|
54
|
+
'"': '.-..-.',
|
|
55
|
+
$: '...-..-',
|
|
56
|
+
'@': '.--.-.',
|
|
57
|
+
};
|
|
58
|
+
const MORSE_REVERSE = Object.fromEntries(Object.entries(MORSE_TABLE).map(([k, v]) => [v, k]));
|
|
59
|
+
function checkText(value) {
|
|
60
|
+
if (!value)
|
|
61
|
+
throw new Error('A value is required');
|
|
62
|
+
if (typeof value !== 'string')
|
|
63
|
+
throw new Error('Value must be a string');
|
|
64
|
+
if (value.length > MAX_STRING_LENGTH)
|
|
65
|
+
throw new Error(`Value must be less than ${MAX_STRING_LENGTH} characters long`);
|
|
66
|
+
}
|
|
67
|
+
export function base64encode(value) {
|
|
68
|
+
checkText(value);
|
|
69
|
+
return Buffer.from(value, 'utf-8').toString('base64');
|
|
70
|
+
}
|
|
71
|
+
export function base64decode(value) {
|
|
72
|
+
checkText(value);
|
|
73
|
+
if (!/^[A-Za-z0-9+/]*={0,2}$/.test(value))
|
|
74
|
+
throw new Error('Invalid Base64 string');
|
|
75
|
+
return Buffer.from(value, 'base64').toString('utf-8');
|
|
76
|
+
}
|
|
77
|
+
export function urlencode(value) {
|
|
78
|
+
checkText(value);
|
|
79
|
+
return encodeURIComponent(value);
|
|
80
|
+
}
|
|
81
|
+
export function urldecode(value) {
|
|
82
|
+
checkText(value);
|
|
83
|
+
try {
|
|
84
|
+
return decodeURIComponent(value);
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
throw new Error('Invalid URL-encoded string');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
export function morse(value) {
|
|
91
|
+
checkText(value);
|
|
92
|
+
return value
|
|
93
|
+
.toUpperCase()
|
|
94
|
+
.split(' ')
|
|
95
|
+
.map((word) => word
|
|
96
|
+
.split('')
|
|
97
|
+
.map((c) => {
|
|
98
|
+
if (c === '\n' || c === '\t')
|
|
99
|
+
return '';
|
|
100
|
+
const code = MORSE_TABLE[c];
|
|
101
|
+
if (!code)
|
|
102
|
+
throw new Error(`Unsupported character in Morse code: '${c}'`);
|
|
103
|
+
return code;
|
|
104
|
+
})
|
|
105
|
+
.filter(Boolean)
|
|
106
|
+
.join(' '))
|
|
107
|
+
.join(' / ');
|
|
108
|
+
}
|
|
109
|
+
export function unmorse(value) {
|
|
110
|
+
checkText(value);
|
|
111
|
+
return value
|
|
112
|
+
.split(' / ')
|
|
113
|
+
.map((word) => word
|
|
114
|
+
.split(' ')
|
|
115
|
+
.map((code) => {
|
|
116
|
+
if (!code)
|
|
117
|
+
return '';
|
|
118
|
+
const char = MORSE_REVERSE[code];
|
|
119
|
+
if (!char)
|
|
120
|
+
throw new Error(`Unsupported Morse sequence: '${code}'`);
|
|
121
|
+
return char;
|
|
122
|
+
})
|
|
123
|
+
.join(''))
|
|
124
|
+
.join(' ');
|
|
125
|
+
}
|
|
126
|
+
export function rot13(value) {
|
|
127
|
+
checkText(value);
|
|
128
|
+
return value.replace(/[a-zA-Z]/g, (c) => {
|
|
129
|
+
const base = c <= 'Z' ? 65 : 97;
|
|
130
|
+
return String.fromCharCode(((c.charCodeAt(0) - base + 13) % 26) + base);
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
export function caesar(value, shift) {
|
|
134
|
+
checkText(value);
|
|
135
|
+
const n = Number(shift);
|
|
136
|
+
if (isNaN(n))
|
|
137
|
+
throw new Error('Shift must be a number');
|
|
138
|
+
const s = ((n % 26) + 26) % 26;
|
|
139
|
+
return value.replace(/[a-zA-Z]/g, (c) => {
|
|
140
|
+
const base = c <= 'Z' ? 65 : 97;
|
|
141
|
+
return String.fromCharCode(((c.charCodeAt(0) - base + s) % 26) + base);
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
export function binary(value) {
|
|
145
|
+
checkText(value);
|
|
146
|
+
return value
|
|
147
|
+
.split('')
|
|
148
|
+
.map((c) => c.charCodeAt(0).toString(2).padStart(8, '0'))
|
|
149
|
+
.join(' ');
|
|
150
|
+
}
|
|
151
|
+
export function unbinary(value) {
|
|
152
|
+
checkText(value);
|
|
153
|
+
if (!/^[01\s]+$/.test(value))
|
|
154
|
+
throw new Error('Invalid binary string');
|
|
155
|
+
return value
|
|
156
|
+
.trim()
|
|
157
|
+
.split(/\s+/)
|
|
158
|
+
.map((b) => {
|
|
159
|
+
if (b.length !== 8)
|
|
160
|
+
throw new Error('Each binary group must contain 8 bits');
|
|
161
|
+
return String.fromCharCode(parseInt(b, 2));
|
|
162
|
+
})
|
|
163
|
+
.join('');
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=encode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encode.js","sourceRoot":"","sources":["../../../src/modules/v4/encode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
const EARTH_RADIUS_KM = 6371;
|
|
2
|
+
const CARDINALS = ['N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE', 'S', 'SSW', 'SW', 'WSW', 'W', 'WNW', 'NW', 'NNW'];
|
|
3
|
+
function toRad(deg) {
|
|
4
|
+
return (deg * Math.PI) / 180;
|
|
5
|
+
}
|
|
6
|
+
function toDeg(rad) {
|
|
7
|
+
return (rad * 180) / Math.PI;
|
|
8
|
+
}
|
|
9
|
+
function parseCoord(value, name, min, max) {
|
|
10
|
+
const n = Number(value);
|
|
11
|
+
if (isNaN(n))
|
|
12
|
+
throw new Error(`${name} must be a number`);
|
|
13
|
+
if (n < min || n > max)
|
|
14
|
+
throw new Error(`${name} must be between ${min} and ${max}`);
|
|
15
|
+
return n;
|
|
16
|
+
}
|
|
17
|
+
export default function geo(lat1, lon1, lat2, lon2) {
|
|
18
|
+
const a = parseCoord(lat1, 'lat1', -90, 90);
|
|
19
|
+
const b = parseCoord(lon1, 'lon1', -180, 180);
|
|
20
|
+
const c = parseCoord(lat2, 'lat2', -90, 90);
|
|
21
|
+
const d = parseCoord(lon2, 'lon2', -180, 180);
|
|
22
|
+
const dLat = toRad(c - a);
|
|
23
|
+
const dLon = toRad(d - b);
|
|
24
|
+
const sa = Math.sin(dLat / 2) ** 2 + Math.cos(toRad(a)) * Math.cos(toRad(c)) * Math.sin(dLon / 2) ** 2;
|
|
25
|
+
const distance = 2 * EARTH_RADIUS_KM * Math.asin(Math.sqrt(sa));
|
|
26
|
+
const y = Math.sin(toRad(d - b)) * Math.cos(toRad(c));
|
|
27
|
+
const x = Math.cos(toRad(a)) * Math.sin(toRad(c)) - Math.sin(toRad(a)) * Math.cos(toRad(c)) * Math.cos(toRad(d - b));
|
|
28
|
+
const bearing = (toDeg(Math.atan2(y, x)) + 360) % 360;
|
|
29
|
+
const cardinal = CARDINALS[Math.round(bearing / 22.5) % 16];
|
|
30
|
+
return {
|
|
31
|
+
distance: {
|
|
32
|
+
km: +distance.toFixed(3),
|
|
33
|
+
miles: +(distance * 0.621371).toFixed(3),
|
|
34
|
+
nauticalMiles: +(distance * 0.539957).toFixed(3),
|
|
35
|
+
},
|
|
36
|
+
bearing: { degrees: +bearing.toFixed(2), cardinal },
|
|
37
|
+
from: { lat: a, lon: b },
|
|
38
|
+
to: { lat: c, lon: d },
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=geo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geo.js","sourceRoot":"","sources":["../../../src/modules/v4/geo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { getHashes, createHash } from 'crypto';
|
|
2
|
+
export default function hash(text, method) {
|
|
3
|
+
const methods = getHashes();
|
|
4
|
+
if (!methods.includes(method))
|
|
5
|
+
return { error: `Unsupported method. Use one of: ${methods.join(', ')}` };
|
|
6
|
+
const result = createHash(method).update(text).digest('hex');
|
|
7
|
+
return { method, hash: result };
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../../src/modules/v4/hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAE/C,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,IAAY,EAAE,MAAc;IACrD,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,mCAAmC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;IAEzG,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7D,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { formatDate } from './utils.js';
|
|
2
|
+
import ical from 'ical.js';
|
|
3
|
+
export default async function hyperplanning(url, detail) {
|
|
4
|
+
const response = await fetch(url);
|
|
5
|
+
if (!response.ok || !(response.headers.get('content-type') || '').includes('text/calendar')) {
|
|
6
|
+
throw new Error('Invalid ICS file format.');
|
|
7
|
+
}
|
|
8
|
+
const events = new ical.Component(ical.parse(await response.text()))
|
|
9
|
+
.getAllSubcomponents('vevent')
|
|
10
|
+
.map((e) => {
|
|
11
|
+
const evt = new ical.Event(e);
|
|
12
|
+
const summary = (evt.summary || '').split(' ').filter((part) => part !== '-');
|
|
13
|
+
const start = formatDate(evt.startDate.toJSDate());
|
|
14
|
+
const end = formatDate(evt.endDate.toJSDate());
|
|
15
|
+
if (detail === 'full') {
|
|
16
|
+
const desc = (evt.description || '').split('\n').map((l) => l.trim());
|
|
17
|
+
const extract = (p) => (desc.find((l) => l.startsWith(p)) || '').replace(p, '').trim();
|
|
18
|
+
return {
|
|
19
|
+
summary,
|
|
20
|
+
subject: extract('Matière :'),
|
|
21
|
+
teacher: extract('Enseignant :'),
|
|
22
|
+
classes: extract('Promotions :')
|
|
23
|
+
.split(', ')
|
|
24
|
+
.map((c) => c.trim()),
|
|
25
|
+
type: extract('Salle :') || undefined,
|
|
26
|
+
start,
|
|
27
|
+
end,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
if (detail === 'list')
|
|
31
|
+
return { summary, start, end };
|
|
32
|
+
return {
|
|
33
|
+
summary: evt.summary || '',
|
|
34
|
+
start,
|
|
35
|
+
end,
|
|
36
|
+
};
|
|
37
|
+
})
|
|
38
|
+
.sort((a, b) => new Date(a.start).getTime() - new Date(b.start).getTime())
|
|
39
|
+
.filter((e) => new Date(e.end) >= new Date());
|
|
40
|
+
return events;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=hyperplanning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hyperplanning.js","sourceRoot":"","sources":["../../../src/modules/v4/hyperplanning.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { MAX_LEVENSHTEIN_LENGTH } from '../../constants.js';
|
|
2
|
+
export default function levenshtein(str1, str2) {
|
|
3
|
+
if (!str1 || typeof str1 !== 'string') {
|
|
4
|
+
throw new Error('Please provide a valid first string');
|
|
5
|
+
}
|
|
6
|
+
if (!str2 || typeof str2 !== 'string') {
|
|
7
|
+
throw new Error('Please provide a valid second string');
|
|
8
|
+
}
|
|
9
|
+
if (str1.length > MAX_LEVENSHTEIN_LENGTH) {
|
|
10
|
+
throw new Error('First string exceeds 1000 characters');
|
|
11
|
+
}
|
|
12
|
+
if (str2.length > MAX_LEVENSHTEIN_LENGTH) {
|
|
13
|
+
throw new Error('Second string exceeds 1000 characters');
|
|
14
|
+
}
|
|
15
|
+
const m = Array.from({ length: str1.length + 1 }, (_, i) => [i]);
|
|
16
|
+
for (let j = 0; j <= str2.length; j++)
|
|
17
|
+
m[0][j] = j;
|
|
18
|
+
for (let i = 1; i <= str1.length; i++) {
|
|
19
|
+
for (let j = 1; j <= str2.length; j++) {
|
|
20
|
+
m[i][j] = Math.min(m[i - 1][j] + 1, m[i][j - 1] + 1, m[i - 1][j - 1] + (str1[i - 1] !== str2[j - 1] ? 1 : 0));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
str1,
|
|
25
|
+
str2,
|
|
26
|
+
distance: m[str1.length][str2.length],
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=levenshtein.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"levenshtein.js","sourceRoot":"","sources":["../../../src/modules/v4/levenshtein.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,IAAY,EAAE,IAAY;IAC1D,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,GAAG,sBAAsB,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,GAAG,sBAAsB,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,GAAe,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAEpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CACf,CAAC,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,CAAC,EACjB,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,CAAC,EACjB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC5D,CAAC;QACN,CAAC;IACL,CAAC;IAED,OAAO;QACH,IAAI;QACJ,IAAI;QACJ,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,MAAM,CAAE;KAC1C,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
function hexToRgb(hex) {
|
|
2
|
+
const clean = hex.replace('#', '');
|
|
3
|
+
if (!/^[0-9a-fA-F]{6}$/.test(clean))
|
|
4
|
+
throw new Error('Invalid HEX color (use #RRGGBB)');
|
|
5
|
+
return [parseInt(clean.slice(0, 2), 16), parseInt(clean.slice(2, 4), 16), parseInt(clean.slice(4, 6), 16)];
|
|
6
|
+
}
|
|
7
|
+
function rgbToHsl(r, g, b) {
|
|
8
|
+
const r1 = r / 255, g1 = g / 255, b1 = b / 255;
|
|
9
|
+
const max = Math.max(r1, g1, b1), min = Math.min(r1, g1, b1);
|
|
10
|
+
const l = (max + min) / 2;
|
|
11
|
+
if (max === min)
|
|
12
|
+
return [0, 0, l];
|
|
13
|
+
const d = max - min;
|
|
14
|
+
const s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|
|
15
|
+
let h = 0;
|
|
16
|
+
if (max === r1)
|
|
17
|
+
h = (g1 - b1) / d + (g1 < b1 ? 6 : 0);
|
|
18
|
+
else if (max === g1)
|
|
19
|
+
h = (b1 - r1) / d + 2;
|
|
20
|
+
else
|
|
21
|
+
h = (r1 - g1) / d + 4;
|
|
22
|
+
return [(h * 60 + 360) % 360, s, l];
|
|
23
|
+
}
|
|
24
|
+
function hslToRgb(h, s, l) {
|
|
25
|
+
const c = (1 - Math.abs(2 * l - 1)) * s;
|
|
26
|
+
const x = c * (1 - Math.abs(((h / 60) % 2) - 1));
|
|
27
|
+
const m = l - c / 2;
|
|
28
|
+
let r1 = 0, g1 = 0, b1 = 0;
|
|
29
|
+
if (h < 60)
|
|
30
|
+
[r1, g1, b1] = [c, x, 0];
|
|
31
|
+
else if (h < 120)
|
|
32
|
+
[r1, g1, b1] = [x, c, 0];
|
|
33
|
+
else if (h < 180)
|
|
34
|
+
[r1, g1, b1] = [0, c, x];
|
|
35
|
+
else if (h < 240)
|
|
36
|
+
[r1, g1, b1] = [0, x, c];
|
|
37
|
+
else if (h < 300)
|
|
38
|
+
[r1, g1, b1] = [x, 0, c];
|
|
39
|
+
else
|
|
40
|
+
[r1, g1, b1] = [c, 0, x];
|
|
41
|
+
return [Math.round((r1 + m) * 255), Math.round((g1 + m) * 255), Math.round((b1 + m) * 255)];
|
|
42
|
+
}
|
|
43
|
+
function format(r, g, b) {
|
|
44
|
+
const [h, s, l] = rgbToHsl(r, g, b);
|
|
45
|
+
return {
|
|
46
|
+
hex: `#${[r, g, b].map((x) => x.toString(16).padStart(2, '0')).join('')}`,
|
|
47
|
+
rgb: `rgb(${r}, ${g}, ${b})`,
|
|
48
|
+
hsl: `hsl(${h.toFixed(1)}, ${(s * 100).toFixed(1)}%, ${(l * 100).toFixed(1)}%)`,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function fromHueShifts(base, shifts) {
|
|
52
|
+
const [h, s, l] = base;
|
|
53
|
+
return shifts.map((shift) => {
|
|
54
|
+
const newH = (h + shift + 360) % 360;
|
|
55
|
+
const [r, g, b] = hslToRgb(newH, s, l);
|
|
56
|
+
return format(r, g, b);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
export default function palette(color, type) {
|
|
60
|
+
if (!color)
|
|
61
|
+
throw new Error('A base color is required');
|
|
62
|
+
if (!type)
|
|
63
|
+
throw new Error('A palette type is required');
|
|
64
|
+
const [r, g, b] = hexToRgb(color);
|
|
65
|
+
const base = format(r, g, b);
|
|
66
|
+
const hsl = rgbToHsl(r, g, b);
|
|
67
|
+
let colors;
|
|
68
|
+
switch (type) {
|
|
69
|
+
case 'complementary':
|
|
70
|
+
colors = fromHueShifts(hsl, [0, 180]);
|
|
71
|
+
break;
|
|
72
|
+
case 'triadic':
|
|
73
|
+
colors = fromHueShifts(hsl, [0, 120, 240]);
|
|
74
|
+
break;
|
|
75
|
+
case 'analogous':
|
|
76
|
+
colors = fromHueShifts(hsl, [-60, -30, 0, 30, 60]);
|
|
77
|
+
break;
|
|
78
|
+
case 'tetradic':
|
|
79
|
+
colors = fromHueShifts(hsl, [0, 90, 180, 270]);
|
|
80
|
+
break;
|
|
81
|
+
case 'split-complementary':
|
|
82
|
+
colors = fromHueShifts(hsl, [0, 150, 210]);
|
|
83
|
+
break;
|
|
84
|
+
default:
|
|
85
|
+
throw new Error('Type must be one of: complementary, triadic, analogous, tetradic, split-complementary');
|
|
86
|
+
}
|
|
87
|
+
return { base, type, colors };
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=palette.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"palette.js","sourceRoot":"","sources":["../../../src/modules/v4/palette.ts"],"names":[],"mappings":"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"}
|