@e280/stz 0.0.0-20 → 0.0.0-21
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/README.md +56 -7
- package/package.json +5 -4
- package/s/data/base-x.ts +164 -0
- package/s/data/base58.ts +15 -5
- package/s/data/base64.ts +15 -6
- package/s/data/base64url.ts +15 -6
- package/s/data/bytename/bytename.ts +2 -2
- package/s/data/bytename/thumbprint.test.ts +1 -1
- package/s/data/bytename/thumbprint.ts +5 -5
- package/s/data/bytes.ts +2 -2
- package/s/data/data.test.ts +93 -0
- package/s/data/hex.ts +15 -5
- package/s/data/txt.ts +14 -4
- package/s/index.ts +1 -0
- package/s/tests.test.ts +12 -10
- package/x/data/base-x.d.ts +44 -0
- package/x/data/base-x.js +142 -0
- package/x/data/base-x.js.map +1 -0
- package/x/data/base58.d.ts +5 -1
- package/x/data/base58.js +13 -5
- package/x/data/base58.js.map +1 -1
- package/x/data/base64.d.ts +7 -3
- package/x/data/base64.js +13 -5
- package/x/data/base64.js.map +1 -1
- package/x/data/base64url.d.ts +5 -1
- package/x/data/base64url.js +13 -5
- package/x/data/base64url.js.map +1 -1
- package/x/data/bytename/bytename.js +2 -2
- package/x/data/bytename/bytename.js.map +1 -1
- package/x/data/bytename/thumbprint.js +5 -5
- package/x/data/bytename/thumbprint.js.map +1 -1
- package/x/data/bytename/thumbprint.test.js +1 -1
- package/x/data/bytename/thumbprint.test.js.map +1 -1
- package/x/data/bytes.d.ts +2 -2
- package/x/data/bytes.js +2 -2
- package/x/data/bytes.js.map +1 -1
- package/x/data/data.test.d.ts +68 -0
- package/x/data/data.test.js +72 -0
- package/x/data/data.test.js.map +1 -0
- package/x/data/hex.d.ts +8 -4
- package/x/data/hex.js +13 -5
- package/x/data/hex.js.map +1 -1
- package/x/data/txt.d.ts +6 -2
- package/x/data/txt.js +12 -4
- package/x/data/txt.js.map +1 -1
- package/x/index.d.ts +1 -0
- package/x/index.js +1 -0
- package/x/index.js.map +1 -1
- package/x/tests.test.js +12 -10
- package/x/tests.test.js.map +1 -1
- package/s/data/anka.ts +0 -66
- package/x/data/anka.d.ts +0 -5
- package/x/data/anka.js +0 -53
- package/x/data/anka.js.map +0 -1
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Science, test, expect } from "@e280/science";
|
|
2
|
+
import { ob } from "../ob.js";
|
|
3
|
+
import { Txt } from "./txt.js";
|
|
4
|
+
import { Hex } from "./hex.js";
|
|
5
|
+
import { Bytes } from "./bytes.js";
|
|
6
|
+
import { BaseX } from "./base-x.js";
|
|
7
|
+
import { Base58 } from "./base58.js";
|
|
8
|
+
import { Base64 } from "./base64.js";
|
|
9
|
+
import { Base64url } from "./base64url.js";
|
|
10
|
+
const sampleBytes = Hex.toBytes("9960cd633a46acfe8307d8a400e842da0d930a75fb8188e0f5da264e4b6b4e5b");
|
|
11
|
+
function testBytes(util) {
|
|
12
|
+
return async () => {
|
|
13
|
+
const string = util.fromBytes(sampleBytes);
|
|
14
|
+
const recreated = util.toBytes(string);
|
|
15
|
+
expect(Bytes.eq(sampleBytes, recreated)).ok();
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function testNumbers(util) {
|
|
19
|
+
return {
|
|
20
|
+
positive: async () => {
|
|
21
|
+
const original = 123456789;
|
|
22
|
+
const string = util.fromInteger(original);
|
|
23
|
+
const recreated = util.toInteger(string);
|
|
24
|
+
expect(original).is(recreated);
|
|
25
|
+
expect(util.toInteger("")).is(0);
|
|
26
|
+
},
|
|
27
|
+
negative: async () => {
|
|
28
|
+
const original = -123456789;
|
|
29
|
+
const string = util.fromInteger(original);
|
|
30
|
+
const recreated = util.toInteger(string);
|
|
31
|
+
expect(original).is(recreated);
|
|
32
|
+
expect(util.toInteger("")).is(0);
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function testBoth(util) {
|
|
37
|
+
return {
|
|
38
|
+
bytes: testBytes(util),
|
|
39
|
+
numbers: testNumbers(util),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function testCompat(alpha, bravo) {
|
|
43
|
+
return async () => {
|
|
44
|
+
expect(alpha.fromBytes(sampleBytes))
|
|
45
|
+
.is(bravo.fromBytes(sampleBytes));
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export default Science.suite({
|
|
49
|
+
"Base58": testBytes(Base58),
|
|
50
|
+
"Base64": testBytes(Base64),
|
|
51
|
+
"Base64url": testBytes(Base64url),
|
|
52
|
+
"Hex": testBytes(Hex),
|
|
53
|
+
"Txt": test(async () => {
|
|
54
|
+
const original = `build or die. 💻>☠️ 命火工`;
|
|
55
|
+
const bytes = Txt.toBytes(original);
|
|
56
|
+
const recreated = Txt.fromBytes(bytes);
|
|
57
|
+
expect(original).is(recreated);
|
|
58
|
+
}),
|
|
59
|
+
"BaseX": Science.suite({
|
|
60
|
+
lexicons: Science.suite(ob(BaseX.lexicons).map(lex => testBoth(new BaseX(lex)))),
|
|
61
|
+
compat: Science.suite({
|
|
62
|
+
"Hex": testCompat(Hex, new BaseX(BaseX.lexicons.hex)),
|
|
63
|
+
"Base64": testCompat(Base64, new BaseX(BaseX.lexicons.base64)),
|
|
64
|
+
"Base64url": testCompat(Base64url, new BaseX(BaseX.lexicons.base64url)),
|
|
65
|
+
}),
|
|
66
|
+
"base64 has padding": test(async () => {
|
|
67
|
+
const s = new BaseX(BaseX.lexicons.base64).fromBytes(sampleBytes);
|
|
68
|
+
expect(s.endsWith("=")).ok();
|
|
69
|
+
}),
|
|
70
|
+
}),
|
|
71
|
+
});
|
|
72
|
+
//# sourceMappingURL=data.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data.test.js","sourceRoot":"","sources":["../../s/data/data.test.ts"],"names":[],"mappings":"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"}
|
package/x/data/hex.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
export declare const Hex: {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
export declare const Hex: Readonly<{
|
|
2
|
+
fromBytes(bytes: Uint8Array): string;
|
|
3
|
+
toBytes(string: string): Uint8Array<ArrayBuffer>;
|
|
4
4
|
/** generate a random hex string. byteCount defaults to 32. */
|
|
5
5
|
random(byteCount?: number): string;
|
|
6
|
-
|
|
6
|
+
/** @deprecated renamed to `fromBytes` */
|
|
7
|
+
string(bytes: Uint8Array): string;
|
|
8
|
+
/** @deprecated renamed to `toBytes` */
|
|
9
|
+
bytes(string: string): Uint8Array<ArrayBuffer>;
|
|
10
|
+
}>;
|
package/x/data/hex.js
CHANGED
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
|
|
9
9
|
*/
|
|
10
10
|
import { Bytes } from "./bytes.js";
|
|
11
|
-
export const Hex = {
|
|
12
|
-
|
|
11
|
+
export const Hex = Object.freeze({
|
|
12
|
+
fromBytes(bytes) {
|
|
13
13
|
return [...bytes]
|
|
14
14
|
.map(byte => byte.toString(16).padStart(2, "0"))
|
|
15
15
|
.join("");
|
|
16
16
|
},
|
|
17
|
-
|
|
17
|
+
toBytes(string) {
|
|
18
18
|
if (string.length % 2 !== 0)
|
|
19
19
|
throw new Error("must have even number of hex characters");
|
|
20
20
|
const bytes = new Uint8Array(string.length / 2);
|
|
@@ -24,7 +24,15 @@ export const Hex = {
|
|
|
24
24
|
},
|
|
25
25
|
/** generate a random hex string. byteCount defaults to 32. */
|
|
26
26
|
random(byteCount = 32) {
|
|
27
|
-
return this.
|
|
27
|
+
return this.fromBytes(Bytes.random(byteCount));
|
|
28
|
+
},
|
|
29
|
+
/** @deprecated renamed to `fromBytes` */
|
|
30
|
+
string(bytes) {
|
|
31
|
+
return Hex.fromBytes(bytes);
|
|
32
|
+
},
|
|
33
|
+
/** @deprecated renamed to `toBytes` */
|
|
34
|
+
bytes(string) {
|
|
35
|
+
return Hex.toBytes(string);
|
|
28
36
|
},
|
|
29
|
-
};
|
|
37
|
+
});
|
|
30
38
|
//# sourceMappingURL=hex.js.map
|
package/x/data/hex.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hex.js","sourceRoot":"","sources":["../../s/data/hex.ts"],"names":[],"mappings":"AACA;;;;;;;;EAQE;AAEF,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAA;AAEhC,MAAM,CAAC,MAAM,GAAG,GAAG
|
|
1
|
+
{"version":3,"file":"hex.js","sourceRoot":"","sources":["../../s/data/hex.ts"],"names":[],"mappings":"AACA;;;;;;;;EAQE;AAEF,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAA;AAEhC,MAAM,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;IAChC,SAAS,CAAC,KAAiB;QAC1B,OAAO,CAAC,GAAG,KAAK,CAAC;aACf,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;aAC/C,IAAI,CAAC,EAAE,CAAC,CAAA;IACX,CAAC;IAED,OAAO,CAAC,MAAc;QACrB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QAC3D,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;YACxC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QACpD,OAAO,KAAK,CAAA;IACb,CAAC;IAED,8DAA8D;IAC9D,MAAM,CAAC,SAAS,GAAG,EAAE;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;IAC/C,CAAC;IAED,yCAAyC;IACzC,MAAM,CAAC,KAAiB;QACvB,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC;IAED,uCAAuC;IACvC,KAAK,CAAC,MAAc;QACnB,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC;CACD,CAAC,CAAA"}
|
package/x/data/txt.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
export declare const Txt: {
|
|
1
|
+
export declare const Txt: Readonly<{
|
|
2
|
+
fromBytes(bytes: Uint8Array): string;
|
|
3
|
+
toBytes(string: string): Uint8Array<ArrayBufferLike>;
|
|
4
|
+
/** @deprecated renamed to `fromBytes` */
|
|
2
5
|
string(bytes: Uint8Array): string;
|
|
6
|
+
/** @deprecated renamed to `toBytes` */
|
|
3
7
|
bytes(string: string): Uint8Array<ArrayBufferLike>;
|
|
4
|
-
}
|
|
8
|
+
}>;
|
package/x/data/txt.js
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
|
-
export const Txt = {
|
|
2
|
-
|
|
1
|
+
export const Txt = Object.freeze({
|
|
2
|
+
fromBytes(bytes) {
|
|
3
3
|
return new TextDecoder().decode(bytes);
|
|
4
4
|
},
|
|
5
|
-
|
|
5
|
+
toBytes(string) {
|
|
6
6
|
return new TextEncoder().encode(string);
|
|
7
7
|
},
|
|
8
|
-
|
|
8
|
+
/** @deprecated renamed to `fromBytes` */
|
|
9
|
+
string(bytes) {
|
|
10
|
+
return Txt.fromBytes(bytes);
|
|
11
|
+
},
|
|
12
|
+
/** @deprecated renamed to `toBytes` */
|
|
13
|
+
bytes(string) {
|
|
14
|
+
return Txt.toBytes(string);
|
|
15
|
+
},
|
|
16
|
+
});
|
|
9
17
|
//# sourceMappingURL=txt.js.map
|
package/x/data/txt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"txt.js","sourceRoot":"","sources":["../../s/data/txt.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,GAAG,GAAG
|
|
1
|
+
{"version":3,"file":"txt.js","sourceRoot":"","sources":["../../s/data/txt.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;IAChC,SAAS,CAAC,KAAiB;QAC1B,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACvC,CAAC;IAED,OAAO,CAAC,MAAc;QACrB,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACxC,CAAC;IAED,yCAAyC;IACzC,MAAM,CAAC,KAAiB;QACvB,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC;IAED,uCAAuC;IACvC,KAAK,CAAC,MAAc;QACnB,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC;CACD,CAAC,CAAA"}
|
package/x/index.d.ts
CHANGED
package/x/index.js
CHANGED
package/x/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../s/index.ts"],"names":[],"mappings":"AACA,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAE7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AAEnC,cAAc,gBAAgB,CAAA;AAE9B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../s/index.ts"],"names":[],"mappings":"AACA,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAE7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AAEnC,cAAc,gBAAgB,CAAA;AAE9B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
|
package/x/tests.test.js
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { Science } from "@e280/science";
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
2
|
+
import clone from "./clone/clone.test.js";
|
|
3
|
+
import thumbprint from "./data/bytename/thumbprint.test.js";
|
|
4
|
+
import debounce from "./debounce/debounce.test.js";
|
|
5
|
+
import bytename from "./data/bytename/bytename.test.js";
|
|
6
|
+
import deep from "./deep/deep.test.js";
|
|
7
|
+
import data from "./data/data.test.js";
|
|
7
8
|
await Science.run({
|
|
8
|
-
clone
|
|
9
|
-
bytename
|
|
10
|
-
thumbprint
|
|
11
|
-
debounce
|
|
12
|
-
deep
|
|
9
|
+
clone,
|
|
10
|
+
bytename,
|
|
11
|
+
thumbprint,
|
|
12
|
+
debounce,
|
|
13
|
+
deep,
|
|
14
|
+
data,
|
|
13
15
|
});
|
|
14
16
|
//# sourceMappingURL=tests.test.js.map
|
package/x/tests.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tests.test.js","sourceRoot":"","sources":["../s/tests.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAA;AAErC,OAAO,
|
|
1
|
+
{"version":3,"file":"tests.test.js","sourceRoot":"","sources":["../s/tests.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAA;AAErC,OAAO,KAAK,MAAM,uBAAuB,CAAA;AACzC,OAAO,UAAU,MAAM,oCAAoC,CAAA;AAC3D,OAAO,QAAQ,MAAM,6BAA6B,CAAA;AAClD,OAAO,QAAQ,MAAM,kCAAkC,CAAA;AACvD,OAAO,IAAI,MAAM,qBAAqB,CAAA;AACtC,OAAO,IAAI,MAAM,qBAAqB,CAAA;AAEtC,MAAM,OAAO,CAAC,GAAG,CAAC;IACjB,KAAK;IACL,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,IAAI;IACJ,IAAI;CACJ,CAAC,CAAA"}
|
package/s/data/anka.ts
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
/*
|
|
3
|
-
|
|
4
|
-
"anka" is an alternative to base64 that i totally made up.
|
|
5
|
-
- it looks cool because it features characters from the indian subcontinent.
|
|
6
|
-
- each byte is represented by one character, which makes a 256 bit id incomparably short at only 32 characters.
|
|
7
|
-
- however, it's probably a bad idea, for these negative reasons:
|
|
8
|
-
1. many of these characters are actually 2-or-3-byte sequences (so even though anka is visually more compact than base64 to the user, it's actually more data in terms of bytes).
|
|
9
|
-
2. it's horrible for url-encoding.
|
|
10
|
-
3. it's horrible for trying to manually copy by typing.
|
|
11
|
-
|
|
12
|
-
256-bit anka ids look like this:
|
|
13
|
-
|
|
14
|
-
ஒഐওଆઊসਅവஎଉखਬശயഘसചവਭଏரঊझഠடଓઐഴঠണവઞ
|
|
15
|
-
ठକநइஎਦਏஒഊটਹஜഴयભকயঙਪഉजकঝഐवઠসഏਓਡਟऋ
|
|
16
|
-
થঞठખஉધഫரਜऐફരਪਙਗഭਣഎफઇমએরଔડਉதਤஅदઘച
|
|
17
|
-
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
import {Bytes} from "./bytes.js"
|
|
21
|
-
|
|
22
|
-
const characters = [...new Set([
|
|
23
|
-
// devanagari
|
|
24
|
-
..."अआइईउऊऋएऐओऔकखगघङचछजझञटठडढणतथदधनपफबभमयरलवशषसह",
|
|
25
|
-
|
|
26
|
-
// tamil
|
|
27
|
-
..."அஆஇஈஉஊஎஏஐஒஓகஙசஜஞடணதநபமயரலவழளறன",
|
|
28
|
-
|
|
29
|
-
// bengali
|
|
30
|
-
..."অআইঈউঊএঐওকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহ",
|
|
31
|
-
|
|
32
|
-
// gurmukhi
|
|
33
|
-
..."ਅਆਇਈਉਊਏਐਓਕਖਗਘਙਚਛਜਝਞਟਠਡਢਣਤਥਦਧਨਪਫਬਭਮਯਰਲਵਸਹ",
|
|
34
|
-
|
|
35
|
-
// malayalam
|
|
36
|
-
..."അആഇഈഉഊഎഏഐഒഓകഖഗഘങചഛജഝഞടഠഡഢണതഥദധനപഫബഭമയരലവശസഹളഴറ",
|
|
37
|
-
|
|
38
|
-
// gujarati
|
|
39
|
-
..."અઆઇઈઉઊએઐઓકખગઘઙચછજઝઞટઠડઢણતથદધનપફબભમયરલવશષસહ",
|
|
40
|
-
|
|
41
|
-
// odia
|
|
42
|
-
..."ଅଆଇଈଉଊଏଐଓଔକଖଗଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନପଫବଭମଯରଲଶଷସହ",
|
|
43
|
-
])]
|
|
44
|
-
|
|
45
|
-
export const Anka = Object.freeze({
|
|
46
|
-
|
|
47
|
-
string(bytes: Uint8Array) {
|
|
48
|
-
return [...bytes]
|
|
49
|
-
.map(int => characters.at(int))
|
|
50
|
-
.join("")
|
|
51
|
-
},
|
|
52
|
-
|
|
53
|
-
bytes(code: string) {
|
|
54
|
-
return new Uint8Array([...code].map(char => {
|
|
55
|
-
const index = characters.indexOf(char)
|
|
56
|
-
if (index === -1)
|
|
57
|
-
throw new Error(`invalid anka character "${char}"`)
|
|
58
|
-
return index
|
|
59
|
-
}))
|
|
60
|
-
},
|
|
61
|
-
|
|
62
|
-
random(count = 32) {
|
|
63
|
-
return this.string(Bytes.random(count))
|
|
64
|
-
},
|
|
65
|
-
})
|
|
66
|
-
|
package/x/data/anka.d.ts
DELETED
package/x/data/anka.js
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
|
|
3
|
-
"anka" is an alternative to base64 that i totally made up.
|
|
4
|
-
- it looks cool because it features characters from the indian subcontinent.
|
|
5
|
-
- each byte is represented by one character, which makes a 256 bit id incomparably short at only 32 characters.
|
|
6
|
-
- however, it's probably a bad idea, for these negative reasons:
|
|
7
|
-
1. many of these characters are actually 2-or-3-byte sequences (so even though anka is visually more compact than base64 to the user, it's actually more data in terms of bytes).
|
|
8
|
-
2. it's horrible for url-encoding.
|
|
9
|
-
3. it's horrible for trying to manually copy by typing.
|
|
10
|
-
|
|
11
|
-
256-bit anka ids look like this:
|
|
12
|
-
|
|
13
|
-
ஒഐওଆઊসਅവஎଉखਬശயഘसചവਭଏரঊझഠடଓઐഴঠണവઞ
|
|
14
|
-
ठକநइஎਦਏஒഊটਹஜഴयભকயঙਪഉजकঝഐवઠসഏਓਡਟऋ
|
|
15
|
-
થঞठખஉધഫரਜऐફരਪਙਗഭਣഎफઇমએরଔડਉதਤஅदઘച
|
|
16
|
-
|
|
17
|
-
*/
|
|
18
|
-
import { Bytes } from "./bytes.js";
|
|
19
|
-
const characters = [...new Set([
|
|
20
|
-
// devanagari
|
|
21
|
-
..."अआइईउऊऋएऐओऔकखगघङचछजझञटठडढणतथदधनपफबभमयरलवशषसह",
|
|
22
|
-
// tamil
|
|
23
|
-
..."அஆஇஈஉஊஎஏஐஒஓகஙசஜஞடணதநபமயரலவழளறன",
|
|
24
|
-
// bengali
|
|
25
|
-
..."অআইঈউঊএঐওকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহ",
|
|
26
|
-
// gurmukhi
|
|
27
|
-
..."ਅਆਇਈਉਊਏਐਓਕਖਗਘਙਚਛਜਝਞਟਠਡਢਣਤਥਦਧਨਪਫਬਭਮਯਰਲਵਸਹ",
|
|
28
|
-
// malayalam
|
|
29
|
-
..."അആഇഈഉഊഎഏഐഒഓകഖഗഘങചഛജഝഞടഠഡഢണതഥദധനപഫബഭമയരലവശസഹളഴറ",
|
|
30
|
-
// gujarati
|
|
31
|
-
..."અઆઇઈઉઊએઐઓકખગઘઙચછજઝઞટઠડઢણતથદધનપફબભમયરલવશષસહ",
|
|
32
|
-
// odia
|
|
33
|
-
..."ଅଆଇଈଉଊଏଐଓଔକଖଗଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନପଫବଭମଯରଲଶଷସହ",
|
|
34
|
-
])];
|
|
35
|
-
export const Anka = Object.freeze({
|
|
36
|
-
string(bytes) {
|
|
37
|
-
return [...bytes]
|
|
38
|
-
.map(int => characters.at(int))
|
|
39
|
-
.join("");
|
|
40
|
-
},
|
|
41
|
-
bytes(code) {
|
|
42
|
-
return new Uint8Array([...code].map(char => {
|
|
43
|
-
const index = characters.indexOf(char);
|
|
44
|
-
if (index === -1)
|
|
45
|
-
throw new Error(`invalid anka character "${char}"`);
|
|
46
|
-
return index;
|
|
47
|
-
}));
|
|
48
|
-
},
|
|
49
|
-
random(count = 32) {
|
|
50
|
-
return this.string(Bytes.random(count));
|
|
51
|
-
},
|
|
52
|
-
});
|
|
53
|
-
//# sourceMappingURL=anka.js.map
|
package/x/data/anka.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anka.js","sourceRoot":"","sources":["../../s/data/anka.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;EAgBE;AAEF,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAA;AAEhC,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;QAC9B,aAAa;QACb,GAAG,8CAA8C;QAEjD,QAAQ;QACR,GAAG,gCAAgC;QAEnC,UAAU;QACV,GAAG,2CAA2C;QAE9C,WAAW;QACX,GAAG,0CAA0C;QAE7C,YAAY;QACZ,GAAG,gDAAgD;QAEnD,WAAW;QACX,GAAG,4CAA4C;QAE/C,OAAO;QACP,GAAG,4CAA4C;KAC/C,CAAC,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;IAEjC,MAAM,CAAC,KAAiB;QACvB,OAAO,CAAC,GAAG,KAAK,CAAC;aACf,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;aAC9B,IAAI,CAAC,EAAE,CAAC,CAAA;IACX,CAAC;IAED,KAAK,CAAC,IAAY;QACjB,OAAO,IAAI,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YACtC,IAAI,KAAK,KAAK,CAAC,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,GAAG,CAAC,CAAA;YACpD,OAAO,KAAK,CAAA;QACb,CAAC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAC,KAAK,GAAG,EAAE;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IACxC,CAAC;CACD,CAAC,CAAA"}
|