@e280/stz 0.0.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/license +23 -0
- package/package.json +40 -0
- package/readme.md +85 -0
- package/s/clone/clone.test.ts +124 -0
- package/s/clone/clone.ts +41 -0
- package/s/concurrent.ts +12 -0
- package/s/data/anka.ts +66 -0
- package/s/data/barname/badge.ts +78 -0
- package/s/data/barname/barname.ts +62 -0
- package/s/data/barname/demo.ts +49 -0
- package/s/data/barname/index.ts +4 -0
- package/s/data/barname/utils/prefixes.ts +20 -0
- package/s/data/barname/utils/suffixes.ts +20 -0
- package/s/data/base58.ts +65 -0
- package/s/data/base64.ts +22 -0
- package/s/data/base64url.ts +27 -0
- package/s/data/bytes.ts +7 -0
- package/s/data/hex.ts +35 -0
- package/s/data/nomen/demo.ts +8 -0
- package/s/data/nomen/grammar.ts +41 -0
- package/s/data/nomen/index.ts +5 -0
- package/s/data/nomen/nomen.ts +34 -0
- package/s/data/nomen/presets/falrysk.ts +112 -0
- package/s/data/nomen/types.ts +9 -0
- package/s/data/txt.ts +11 -0
- package/s/deadline.ts +24 -0
- package/s/debounce/debounce.test.ts +73 -0
- package/s/debounce/debounce.ts +54 -0
- package/s/debounce/types.ts +8 -0
- package/s/dedupe.ts +5 -0
- package/s/deep/deep.test.ts +8 -0
- package/s/deep/deep.ts +11 -0
- package/s/deep/parts/equal.test.ts +124 -0
- package/s/deep/parts/equal.ts +49 -0
- package/s/deep/parts/freeze.ts +34 -0
- package/s/defer-promise.ts +29 -0
- package/s/escape-regex.ts +5 -0
- package/s/hat.ts +17 -0
- package/s/index.ts +23 -0
- package/s/is.ts +27 -0
- package/s/map-g.ts +52 -0
- package/s/nap.ts +5 -0
- package/s/ob.ts +66 -0
- package/s/pipe.ts +24 -0
- package/s/pubsub.ts +68 -0
- package/s/trash.ts +30 -0
- package/x/clone/clone.d.ts +1 -0
- package/x/clone/clone.js +26 -0
- package/x/clone/clone.js.map +1 -0
- package/x/clone/clone.test.d.ts +1 -0
- package/x/clone/clone.test.js +125 -0
- package/x/clone/clone.test.js.map +1 -0
- package/x/concurrent.d.ts +1 -0
- package/x/concurrent.js +7 -0
- package/x/concurrent.js.map +1 -0
- package/x/data/anka.d.ts +5 -0
- package/x/data/anka.js +53 -0
- package/x/data/anka.js.map +1 -0
- package/x/data/barname/badge.d.ts +25 -0
- package/x/data/barname/badge.js +64 -0
- package/x/data/barname/badge.js.map +1 -0
- package/x/data/barname/barname.d.ts +7 -0
- package/x/data/barname/barname.js +49 -0
- package/x/data/barname/barname.js.map +1 -0
- package/x/data/barname/demo.d.ts +1 -0
- package/x/data/barname/demo.js +45 -0
- package/x/data/barname/demo.js.map +1 -0
- package/x/data/barname/index.d.ts +2 -0
- package/x/data/barname/index.js +3 -0
- package/x/data/barname/index.js.map +1 -0
- package/x/data/barname/utils/prefixes.d.ts +1 -0
- package/x/data/barname/utils/prefixes.js +19 -0
- package/x/data/barname/utils/prefixes.js.map +1 -0
- package/x/data/barname/utils/suffixes.d.ts +1 -0
- package/x/data/barname/utils/suffixes.js +19 -0
- package/x/data/barname/utils/suffixes.js.map +1 -0
- package/x/data/base58.d.ts +5 -0
- package/x/data/base58.js +58 -0
- package/x/data/base58.js.map +1 -0
- package/x/data/base64.d.ts +5 -0
- package/x/data/base64.js +17 -0
- package/x/data/base64.js.map +1 -0
- package/x/data/base64url.d.ts +5 -0
- package/x/data/base64url.js +22 -0
- package/x/data/base64url.js.map +1 -0
- package/x/data/bytes.d.ts +3 -0
- package/x/data/bytes.js +6 -0
- package/x/data/bytes.js.map +1 -0
- package/x/data/hex.d.ts +6 -0
- package/x/data/hex.js +30 -0
- package/x/data/hex.js.map +1 -0
- package/x/data/nomen/demo.d.ts +1 -0
- package/x/data/nomen/demo.js +5 -0
- package/x/data/nomen/demo.js.map +1 -0
- package/x/data/nomen/grammar.d.ts +11 -0
- package/x/data/nomen/grammar.js +32 -0
- package/x/data/nomen/grammar.js.map +1 -0
- package/x/data/nomen/index.d.ts +3 -0
- package/x/data/nomen/index.js +4 -0
- package/x/data/nomen/index.js.map +1 -0
- package/x/data/nomen/nomen.d.ts +11 -0
- package/x/data/nomen/nomen.js +29 -0
- package/x/data/nomen/nomen.js.map +1 -0
- package/x/data/nomen/presets/falrysk.d.ts +5 -0
- package/x/data/nomen/presets/falrysk.js +99 -0
- package/x/data/nomen/presets/falrysk.js.map +1 -0
- package/x/data/nomen/types.d.ts +6 -0
- package/x/data/nomen/types.js +2 -0
- package/x/data/nomen/types.js.map +1 -0
- package/x/data/txt.d.ts +4 -0
- package/x/data/txt.js +9 -0
- package/x/data/txt.js.map +1 -0
- package/x/deadline.d.ts +6 -0
- package/x/deadline.js +17 -0
- package/x/deadline.js.map +1 -0
- package/x/debounce/debounce.d.ts +2 -0
- package/x/debounce/debounce.js +37 -0
- package/x/debounce/debounce.js.map +1 -0
- package/x/debounce/debounce.test.d.ts +1 -0
- package/x/debounce/debounce.test.js +75 -0
- package/x/debounce/debounce.test.js.map +1 -0
- package/x/debounce/types.d.ts +2 -0
- package/x/debounce/types.js +2 -0
- package/x/debounce/types.js.map +1 -0
- package/x/dedupe.d.ts +1 -0
- package/x/dedupe.js +4 -0
- package/x/dedupe.js.map +1 -0
- package/x/deep/deep.d.ts +7 -0
- package/x/deep/deep.js +9 -0
- package/x/deep/deep.js.map +1 -0
- package/x/deep/deep.test.d.ts +1 -0
- package/x/deep/deep.test.js +10 -0
- package/x/deep/deep.test.js.map +1 -0
- package/x/deep/parts/equal.d.ts +1 -0
- package/x/deep/parts/equal.js +39 -0
- package/x/deep/parts/equal.js.map +1 -0
- package/x/deep/parts/equal.test.d.ts +1 -0
- package/x/deep/parts/equal.test.js +126 -0
- package/x/deep/parts/equal.test.js.map +1 -0
- package/x/deep/parts/freeze.d.ts +1 -0
- package/x/deep/parts/freeze.js +24 -0
- package/x/deep/parts/freeze.js.map +1 -0
- package/x/defer-promise.d.ts +10 -0
- package/x/defer-promise.js +15 -0
- package/x/defer-promise.js.map +1 -0
- package/x/escape-regex.d.ts +1 -0
- package/x/escape-regex.js +4 -0
- package/x/escape-regex.js.map +1 -0
- package/x/hat.d.ts +6 -0
- package/x/hat.js +16 -0
- package/x/hat.js.map +1 -0
- package/x/index.d.ts +20 -0
- package/x/index.js +21 -0
- package/x/index.js.map +1 -0
- package/x/is.d.ts +10 -0
- package/x/is.js +11 -0
- package/x/is.js.map +1 -0
- package/x/map-g.d.ts +17 -0
- package/x/map-g.js +40 -0
- package/x/map-g.js.map +1 -0
- package/x/nap.d.ts +1 -0
- package/x/nap.js +2 -0
- package/x/nap.js.map +1 -0
- package/x/ob.d.ts +14 -0
- package/x/ob.js +21 -0
- package/x/ob.js.map +1 -0
- package/x/pipe.d.ts +8 -0
- package/x/pipe.js +16 -0
- package/x/pipe.js.map +1 -0
- package/x/pubsub.d.ts +18 -0
- package/x/pubsub.js +40 -0
- package/x/pubsub.js.map +1 -0
- package/x/trash.d.ts +14 -0
- package/x/trash.js +25 -0
- package/x/trash.js.map +1 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
//
|
|
2
|
+
// import {Suite, expect} from "cynic"
|
|
3
|
+
// import {clone} from "./clone.js"
|
|
4
|
+
//
|
|
5
|
+
// function checkMapOrSetEquality(original: any, cloned: any) {
|
|
6
|
+
// const originalEntries = JSON.stringify(Array.from(original))
|
|
7
|
+
// const clonedEntries = JSON.stringify(Array.from(cloned))
|
|
8
|
+
// expect(clonedEntries).equals(originalEntries)
|
|
9
|
+
// expect(cloned).not.equals(original) // check for deep cloning
|
|
10
|
+
// }
|
|
11
|
+
//
|
|
12
|
+
// export default <Suite>{
|
|
13
|
+
//
|
|
14
|
+
// async "clone primitive types"() {
|
|
15
|
+
// expect(clone(123)).equals(123)
|
|
16
|
+
// expect(clone("abc")).equals("abc")
|
|
17
|
+
// expect(clone(true)).equals(true)
|
|
18
|
+
// },
|
|
19
|
+
//
|
|
20
|
+
// async "clone arrays"() {
|
|
21
|
+
// const array = [1, 2, 3]
|
|
22
|
+
// const clonedArray = clone(array)
|
|
23
|
+
// expect(JSON.stringify(clonedArray)).equals(JSON.stringify(array))
|
|
24
|
+
// expect(clonedArray).not.equals(array) // check for deep cloning
|
|
25
|
+
// },
|
|
26
|
+
//
|
|
27
|
+
// async "clone plain objects"() {
|
|
28
|
+
// const object = {foo: "bar", baz: 123}
|
|
29
|
+
// const clonedObject = clone(object)
|
|
30
|
+
// expect(JSON.stringify(clonedObject)).equals(JSON.stringify(object))
|
|
31
|
+
// expect(clonedObject).not.equals(object) // check for deep cloning
|
|
32
|
+
// },
|
|
33
|
+
//
|
|
34
|
+
// async "clone Map"() {
|
|
35
|
+
// const map = new Map()
|
|
36
|
+
// map.set("key", "value")
|
|
37
|
+
// const clonedMap = clone(map)
|
|
38
|
+
// expect(map.get("key")).equals("value")
|
|
39
|
+
// expect(clonedMap).not.equals(map)
|
|
40
|
+
// },
|
|
41
|
+
//
|
|
42
|
+
// async "clone Set"() {
|
|
43
|
+
// const set = new Set()
|
|
44
|
+
// set.add("value")
|
|
45
|
+
// const clonedSet = clone(set)
|
|
46
|
+
// expect(clonedSet.has("value")).ok()
|
|
47
|
+
// expect(clonedSet).not.equals(set)
|
|
48
|
+
// },
|
|
49
|
+
//
|
|
50
|
+
// async "clone Date"() {
|
|
51
|
+
// const date = new Date()
|
|
52
|
+
// const clonedDate = clone(date)
|
|
53
|
+
// expect(clonedDate.getTime()).equals(date.getTime())
|
|
54
|
+
// expect(clonedDate).not.equals(date) // check for deep cloning
|
|
55
|
+
// },
|
|
56
|
+
//
|
|
57
|
+
// async "clone objects with circular reference"() {
|
|
58
|
+
// const object: any = {foo: "bar"}
|
|
59
|
+
// object.self = object // create circular reference
|
|
60
|
+
// let error: any
|
|
61
|
+
// try {
|
|
62
|
+
// clone(object)
|
|
63
|
+
// } catch (e) {
|
|
64
|
+
// error = e
|
|
65
|
+
// }
|
|
66
|
+
// expect(error).not.equals(undefined)
|
|
67
|
+
// expect(error instanceof Error).ok()
|
|
68
|
+
// },
|
|
69
|
+
//
|
|
70
|
+
// async "clone nested objects"() {
|
|
71
|
+
// const object = {foo: "bar", inner: {baz: 123, deeper: {qux: true}}}
|
|
72
|
+
// const clonedObject = clone(object)
|
|
73
|
+
// expect(JSON.stringify(clonedObject)).equals(JSON.stringify(object))
|
|
74
|
+
// expect(clonedObject).not.equals(object) // check for deep cloning
|
|
75
|
+
// expect(clonedObject.inner).not.equals(object.inner) // check for deep cloning
|
|
76
|
+
// expect(clonedObject.inner.deeper).not.equals(object.inner.deeper) // check for deep cloning
|
|
77
|
+
// },
|
|
78
|
+
//
|
|
79
|
+
// async "clone array of objects"() {
|
|
80
|
+
// const array = [{foo: "bar"}, {baz: 123}, {qux: true}]
|
|
81
|
+
// const clonedArray = clone(array)
|
|
82
|
+
// expect(JSON.stringify(clonedArray)).equals(JSON.stringify(array))
|
|
83
|
+
// expect(clonedArray).not.equals(array) // check for deep cloning
|
|
84
|
+
// },
|
|
85
|
+
//
|
|
86
|
+
// async "clone object with array"() {
|
|
87
|
+
// const object = {foo: "bar", array: [1, 2, 3]}
|
|
88
|
+
// const clonedObject = clone(object)
|
|
89
|
+
// expect(JSON.stringify(clonedObject)).equals(JSON.stringify(object))
|
|
90
|
+
// expect(clonedObject).not.equals(object) // check for deep cloning
|
|
91
|
+
// },
|
|
92
|
+
//
|
|
93
|
+
// async "clone object with Map"() {
|
|
94
|
+
// const map = new Map()
|
|
95
|
+
// map.set("key", "value")
|
|
96
|
+
// const object = {foo: "bar", map}
|
|
97
|
+
// const clonedObject = clone(object)
|
|
98
|
+
// expect(JSON.stringify(clonedObject.foo)).equals(JSON.stringify(object.foo))
|
|
99
|
+
// checkMapOrSetEquality(object.map, clonedObject.map)
|
|
100
|
+
// },
|
|
101
|
+
//
|
|
102
|
+
// async "clone object with duplicate sibling references"() {
|
|
103
|
+
// const dupeObject = { id: 1, name: "H4CK3RM4N" }
|
|
104
|
+
// const data = { obj1: dupeObject, obj2: dupeObject }
|
|
105
|
+
//
|
|
106
|
+
// let didThrow = false
|
|
107
|
+
// let clonedData: typeof data = {} as typeof data
|
|
108
|
+
//
|
|
109
|
+
// try {
|
|
110
|
+
// clonedData = clone(data)
|
|
111
|
+
// }
|
|
112
|
+
// catch (error) {
|
|
113
|
+
// didThrow = true
|
|
114
|
+
// }
|
|
115
|
+
//
|
|
116
|
+
// expect(didThrow).not.equals(true)
|
|
117
|
+
// expect(clonedData.obj1).not.equals(clonedData.obj2)
|
|
118
|
+
// expect(clonedData.obj1.id).equals(1)
|
|
119
|
+
// expect(clonedData.obj1.name).equals("H4CK3RM4N")
|
|
120
|
+
// expect(clonedData.obj2.id).equals(1)
|
|
121
|
+
// expect(clonedData.obj2.name).equals("H4CK3RM4N")
|
|
122
|
+
// },
|
|
123
|
+
// }
|
|
124
|
+
export {};
|
|
125
|
+
//# sourceMappingURL=clone.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clone.test.js","sourceRoot":"","sources":["../../s/clone/clone.test.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,sCAAsC;AACtC,mCAAmC;AACnC,EAAE;AACF,+DAA+D;AAC/D,gEAAgE;AAChE,4DAA4D;AAC5D,iDAAiD;AACjD,iEAAiE;AACjE,IAAI;AACJ,EAAE;AACF,0BAA0B;AAC1B,EAAE;AACF,qCAAqC;AACrC,mCAAmC;AACnC,uCAAuC;AACvC,qCAAqC;AACrC,MAAM;AACN,EAAE;AACF,4BAA4B;AAC5B,4BAA4B;AAC5B,qCAAqC;AACrC,sEAAsE;AACtE,oEAAoE;AACpE,MAAM;AACN,EAAE;AACF,mCAAmC;AACnC,0CAA0C;AAC1C,uCAAuC;AACvC,wEAAwE;AACxE,sEAAsE;AACtE,MAAM;AACN,EAAE;AACF,yBAAyB;AACzB,0BAA0B;AAC1B,4BAA4B;AAC5B,iCAAiC;AACjC,2CAA2C;AAC3C,sCAAsC;AACtC,MAAM;AACN,EAAE;AACF,yBAAyB;AACzB,0BAA0B;AAC1B,qBAAqB;AACrB,iCAAiC;AACjC,wCAAwC;AACxC,sCAAsC;AACtC,MAAM;AACN,EAAE;AACF,0BAA0B;AAC1B,4BAA4B;AAC5B,mCAAmC;AACnC,wDAAwD;AACxD,kEAAkE;AAClE,MAAM;AACN,EAAE;AACF,qDAAqD;AACrD,qCAAqC;AACrC,sDAAsD;AACtD,mBAAmB;AACnB,UAAU;AACV,mBAAmB;AACnB,kBAAkB;AAClB,eAAe;AACf,MAAM;AACN,wCAAwC;AACxC,wCAAwC;AACxC,MAAM;AACN,EAAE;AACF,oCAAoC;AACpC,wEAAwE;AACxE,uCAAuC;AACvC,wEAAwE;AACxE,sEAAsE;AACtE,kFAAkF;AAClF,gGAAgG;AAChG,MAAM;AACN,EAAE;AACF,sCAAsC;AACtC,0DAA0D;AAC1D,qCAAqC;AACrC,sEAAsE;AACtE,oEAAoE;AACpE,MAAM;AACN,EAAE;AACF,uCAAuC;AACvC,kDAAkD;AAClD,uCAAuC;AACvC,wEAAwE;AACxE,sEAAsE;AACtE,MAAM;AACN,EAAE;AACF,qCAAqC;AACrC,0BAA0B;AAC1B,4BAA4B;AAC5B,qCAAqC;AACrC,uCAAuC;AACvC,gFAAgF;AAChF,wDAAwD;AACxD,MAAM;AACN,EAAE;AACF,8DAA8D;AAC9D,oDAAoD;AACpD,wDAAwD;AACxD,EAAE;AACF,yBAAyB;AACzB,oDAAoD;AACpD,EAAE;AACF,UAAU;AACV,8BAA8B;AAC9B,MAAM;AACN,oBAAoB;AACpB,qBAAqB;AACrB,MAAM;AACN,EAAE;AACF,sCAAsC;AACtC,wDAAwD;AACxD,yCAAyC;AACzC,qDAAqD;AACrD,yCAAyC;AACzC,qDAAqD;AACrD,MAAM;AACN,IAAI"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function concurrent<O extends Record<string, Promise<any>>>(ob: O): Promise<{ [K in keyof O]: Awaited<O[K]>; }>;
|
package/x/concurrent.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export async function concurrent(ob) {
|
|
2
|
+
const entries = Object.entries(ob);
|
|
3
|
+
const promises = entries.map(([, promise]) => promise);
|
|
4
|
+
const values = await Promise.all(promises);
|
|
5
|
+
return (Object.fromEntries(entries.map(([key], index) => [key, values[index]])));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=concurrent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"concurrent.js","sourceRoot":"","sources":["../s/concurrent.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,EAAK;IAEN,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAA;IACrD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC1C,OAAO,CACN,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CACpC,CAAA;AACrC,CAAC"}
|
package/x/data/anka.d.ts
ADDED
package/x/data/anka.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Badge is a human-friendly presentation format for arbitrary binary data.
|
|
3
|
+
* - looks like "nomluc_rigpem.tg2bjNkjMh1H6M2b2EhD5V4x6XAqx9wyWddsBt"
|
|
4
|
+
* - the first bytes are shown in barname format
|
|
5
|
+
* - the rest of the data is in base58
|
|
6
|
+
* - designed to be a nice way to present 256-bit passport thumbprints
|
|
7
|
+
* - can be used for data of different lengths
|
|
8
|
+
* - preview size can be customized as 'leadCount', which defaults to 4
|
|
9
|
+
*/
|
|
10
|
+
export declare class Badge {
|
|
11
|
+
readonly bytes: Uint8Array;
|
|
12
|
+
readonly leadCount: number;
|
|
13
|
+
static readonly separator = ".";
|
|
14
|
+
static readonly defaultLeadCount = 4;
|
|
15
|
+
readonly hex: string;
|
|
16
|
+
readonly string: string;
|
|
17
|
+
readonly preview: string;
|
|
18
|
+
constructor(bytes: Uint8Array, leadCount?: number);
|
|
19
|
+
static parse(badge: string): Badge;
|
|
20
|
+
static fromHex(hex: string, leadCount?: number): Badge;
|
|
21
|
+
static string(bytes: Uint8Array, leadCount?: number): string;
|
|
22
|
+
static bytes(badge: string): Badge;
|
|
23
|
+
static hex(badge: string): string;
|
|
24
|
+
toString(): string;
|
|
25
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Hex } from "../hex.js";
|
|
2
|
+
import { Base58 } from "../base58.js";
|
|
3
|
+
import { Barname } from "./barname.js";
|
|
4
|
+
/**
|
|
5
|
+
* Badge is a human-friendly presentation format for arbitrary binary data.
|
|
6
|
+
* - looks like "nomluc_rigpem.tg2bjNkjMh1H6M2b2EhD5V4x6XAqx9wyWddsBt"
|
|
7
|
+
* - the first bytes are shown in barname format
|
|
8
|
+
* - the rest of the data is in base58
|
|
9
|
+
* - designed to be a nice way to present 256-bit passport thumbprints
|
|
10
|
+
* - can be used for data of different lengths
|
|
11
|
+
* - preview size can be customized as 'leadCount', which defaults to 4
|
|
12
|
+
*/
|
|
13
|
+
export class Badge {
|
|
14
|
+
bytes;
|
|
15
|
+
leadCount;
|
|
16
|
+
static separator = ".";
|
|
17
|
+
static defaultLeadCount = 4;
|
|
18
|
+
hex;
|
|
19
|
+
string;
|
|
20
|
+
preview;
|
|
21
|
+
constructor(bytes, leadCount = Badge.defaultLeadCount) {
|
|
22
|
+
this.bytes = bytes;
|
|
23
|
+
this.leadCount = leadCount;
|
|
24
|
+
if (leadCount < 1)
|
|
25
|
+
throw new Error(`badge leadCount must be greater than 0 (was ${leadCount})`);
|
|
26
|
+
this.hex = Hex.string(this.bytes);
|
|
27
|
+
this.preview = Barname.string(this.bytes.slice(0, leadCount));
|
|
28
|
+
this.string = (bytes.length > leadCount)
|
|
29
|
+
? `${this.preview}.${Base58.string(this.bytes.slice(leadCount))}`
|
|
30
|
+
: this.preview;
|
|
31
|
+
}
|
|
32
|
+
static parse(badge) {
|
|
33
|
+
const [barname, b58] = badge.split(Badge.separator);
|
|
34
|
+
// badge has a base58 component
|
|
35
|
+
if (b58) {
|
|
36
|
+
const appetizer = Barname.bytes(barname);
|
|
37
|
+
const entree = Base58.bytes(b58);
|
|
38
|
+
const bytes = new Uint8Array([...appetizer, ...entree]);
|
|
39
|
+
return new this(bytes, appetizer.length);
|
|
40
|
+
}
|
|
41
|
+
// badge is just a barname (no base58 part)
|
|
42
|
+
else {
|
|
43
|
+
const bytes = Barname.bytes(barname);
|
|
44
|
+
return new this(bytes, bytes.length);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
static fromHex(hex, leadCount = this.defaultLeadCount) {
|
|
48
|
+
const bytes = Hex.bytes(hex);
|
|
49
|
+
return new this(bytes, leadCount);
|
|
50
|
+
}
|
|
51
|
+
static string(bytes, leadCount = this.defaultLeadCount) {
|
|
52
|
+
return new this(bytes, leadCount).string;
|
|
53
|
+
}
|
|
54
|
+
static bytes(badge) {
|
|
55
|
+
return this.parse(badge);
|
|
56
|
+
}
|
|
57
|
+
static hex(badge) {
|
|
58
|
+
return this.parse(badge).hex;
|
|
59
|
+
}
|
|
60
|
+
toString() {
|
|
61
|
+
return this.string;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=badge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../s/data/barname/badge.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAC,MAAM,WAAW,CAAA;AAC7B,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAA;AACnC,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAA;AAEpC;;;;;;;;GAQG;AACH,MAAM,OAAO,KAAK;IASC;IACA;IATlB,MAAM,CAAU,SAAS,GAAG,GAAG,CAAA;IAC/B,MAAM,CAAU,gBAAgB,GAAG,CAAC,CAAA;IAE3B,GAAG,CAAQ;IACX,MAAM,CAAQ;IACd,OAAO,CAAQ;IAExB,YACkB,KAAiB,EACjB,YAAY,KAAK,CAAC,gBAAgB;QADlC,UAAK,GAAL,KAAK,CAAY;QACjB,cAAS,GAAT,SAAS,CAAyB;QAGnD,IAAI,SAAS,GAAG,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,+CAA+C,SAAS,GAAG,CAAC,CAAA;QAE7E,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAA;QAE7D,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;YACvC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE;YACjE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAA;IAChB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,KAAa;QACzB,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAEnD,+BAA+B;QAC/B,IAAI,GAAG,EAAE,CAAC;YACT,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACxC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAChC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,MAAM,CAAC,CAAC,CAAA;YACvD,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;QACzC,CAAC;QAED,2CAA2C;aACtC,CAAC;YACL,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACpC,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QACrC,CAAC;IACF,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,GAAW,EAAE,SAAS,GAAG,IAAI,CAAC,gBAAgB;QAC5D,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC5B,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IAClC,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,KAAiB,EAAE,SAAS,GAAG,IAAI,CAAC,gBAAgB;QACjE,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,MAAM,CAAA;IACzC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,KAAa;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,KAAa;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAA;IAC7B,CAAC;IAED,QAAQ;QACP,OAAO,IAAI,CAAC,MAAM,CAAA;IACnB,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Bytes } from "../bytes.js";
|
|
2
|
+
import { prefixes } from "./utils/prefixes.js";
|
|
3
|
+
import { suffixes } from "./utils/suffixes.js";
|
|
4
|
+
const wordSeparator = "_";
|
|
5
|
+
const groupSeparator = " ";
|
|
6
|
+
const defaultWordsPerGroup = 4;
|
|
7
|
+
export const Barname = {
|
|
8
|
+
random(byteCount) {
|
|
9
|
+
return this.string(Bytes.random(byteCount));
|
|
10
|
+
},
|
|
11
|
+
string(bytes, options) {
|
|
12
|
+
const groupSize = options?.wordsPerGroup ?? defaultWordsPerGroup;
|
|
13
|
+
const words = [];
|
|
14
|
+
let currentWord = [];
|
|
15
|
+
bytes.forEach((byte, index) => {
|
|
16
|
+
const source = ((index % 2) === 0) ? prefixes : suffixes;
|
|
17
|
+
currentWord.push(source[byte]);
|
|
18
|
+
if (currentWord.length === 2) {
|
|
19
|
+
words.push(currentWord.join(""));
|
|
20
|
+
currentWord = [];
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
if (currentWord.length)
|
|
24
|
+
words.push(currentWord.join(""));
|
|
25
|
+
const grouped = [];
|
|
26
|
+
for (let i = 0; i < words.length; i += groupSize)
|
|
27
|
+
grouped.push(words.slice(i, i + groupSize).join(wordSeparator));
|
|
28
|
+
return grouped.join(groupSeparator);
|
|
29
|
+
},
|
|
30
|
+
bytes(string) {
|
|
31
|
+
const letters = string
|
|
32
|
+
.toLowerCase()
|
|
33
|
+
.replace(/[^a-z]/g, ""); // strip everything except letters
|
|
34
|
+
const count = letters.length / 3;
|
|
35
|
+
if ((count % 1) !== 0)
|
|
36
|
+
throw new Error(`invalid triplet count, ${letters.length} does not divide into triplets`);
|
|
37
|
+
const triplets = [];
|
|
38
|
+
for (let i = 0; i < letters.length; i += 3)
|
|
39
|
+
triplets.push(letters.slice(i, i + 3));
|
|
40
|
+
return new Uint8Array(triplets.map((triplet, index) => {
|
|
41
|
+
const source = ((index % 2) === 0) ? prefixes : suffixes;
|
|
42
|
+
const number = source.findIndex(t => t === triplet);
|
|
43
|
+
if (number === -1)
|
|
44
|
+
throw new Error(`unknown triplet ${triplet}`);
|
|
45
|
+
return number;
|
|
46
|
+
}));
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=barname.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"barname.js","sourceRoot":"","sources":["../../../s/data/barname/barname.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AACjC,OAAO,EAAC,QAAQ,EAAC,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAC,QAAQ,EAAC,MAAM,qBAAqB,CAAA;AAE5C,MAAM,aAAa,GAAG,GAAG,CAAA;AACzB,MAAM,cAAc,GAAG,GAAG,CAAA;AAC1B,MAAM,oBAAoB,GAAG,CAAC,CAAA;AAE9B,MAAM,CAAC,MAAM,OAAO,GAAG;IACtB,MAAM,CAAC,SAAiB;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;IAC5C,CAAC;IAED,MAAM,CAAC,KAAiB,EAAE,OAAkC;QAC3D,MAAM,SAAS,GAAG,OAAO,EAAE,aAAa,IAAI,oBAAoB,CAAA;QAEhE,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,IAAI,WAAW,GAAa,EAAE,CAAA;QAE9B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC7B,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;YACxD,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAE,CAAC,CAAA;YAC/B,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;gBAChC,WAAW,GAAG,EAAE,CAAA;YACjB,CAAC;QACF,CAAC,CAAC,CAAA;QAEF,IAAI,WAAW,CAAC,MAAM;YACrB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;QAEjC,MAAM,OAAO,GAAG,EAAE,CAAA;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS;YAC/C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAA;QAEhE,OAAO,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,MAAc;QACnB,MAAM,OAAO,GAAG,MAAM;aACpB,WAAW,EAAE;aACb,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA,CAAC,kCAAkC;QAE3D,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA;QAChC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,CAAC,MAAM,gCAAgC,CAAC,CAAA;QAE1F,MAAM,QAAQ,GAAa,EAAE,CAAA;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;YACzC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAEvC,OAAO,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YACrD,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;YACxD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAA;YACnD,IAAI,MAAM,KAAK,CAAC,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAA;YAC9C,OAAO,MAAM,CAAA;QACd,CAAC,CAAC,CAAC,CAAA;IACJ,CAAC;CACD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Hex } from "../hex.js";
|
|
2
|
+
import { Badge } from "./badge.js";
|
|
3
|
+
import { Bytes } from "../bytes.js";
|
|
4
|
+
import { Barname } from "./barname.js";
|
|
5
|
+
for (const _ of Array(2)) {
|
|
6
|
+
const string = Barname.random(34);
|
|
7
|
+
const bytes = Barname.bytes(string);
|
|
8
|
+
const string2 = Barname.string(bytes);
|
|
9
|
+
console.log(string.replaceAll(" ", "\n"));
|
|
10
|
+
if (string !== string2)
|
|
11
|
+
throw new Error("barname fails equality check");
|
|
12
|
+
console.log("");
|
|
13
|
+
}
|
|
14
|
+
for (const _ of Array(10)) {
|
|
15
|
+
const bytes = Bytes.random(32);
|
|
16
|
+
const badge = new Badge(bytes);
|
|
17
|
+
const bytes2 = badge.bytes;
|
|
18
|
+
console.log(badge.string);
|
|
19
|
+
if (Hex.string(bytes) !== Hex.string(bytes2))
|
|
20
|
+
throw new Error("badge fails equality check");
|
|
21
|
+
}
|
|
22
|
+
{
|
|
23
|
+
console.log("");
|
|
24
|
+
const alpha = `
|
|
25
|
+
dacsyd_labdun_fipsub_bonmel
|
|
26
|
+
fitlys_rovbud_sipnel_sonryx
|
|
27
|
+
sitrem_lasdyr_dovpun_nibwep
|
|
28
|
+
tippet_mapnub_ticnet_famset
|
|
29
|
+
wanteg
|
|
30
|
+
`;
|
|
31
|
+
const bravo = `
|
|
32
|
+
dacsyd-labdun-fipsub-bonmel;
|
|
33
|
+
[fitlys rovbud sipnel sonryx]
|
|
34
|
+
sitrem/lasdyr/dovpun/nibwep
|
|
35
|
+
tippet+mapnub+ticnet+famset
|
|
36
|
+
wanteg++
|
|
37
|
+
`;
|
|
38
|
+
const alphaHex = Hex.string(Barname.bytes(alpha));
|
|
39
|
+
const bravoHex = Hex.string(Barname.bytes(bravo));
|
|
40
|
+
if (alphaHex.length === 68 && alphaHex === bravoHex)
|
|
41
|
+
console.log("*barname parsing appears resilient to whitespace and garbage*");
|
|
42
|
+
else
|
|
43
|
+
throw new Error("barname resiliency failure");
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=demo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo.js","sourceRoot":"","sources":["../../../s/data/barname/demo.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAC,MAAM,WAAW,CAAA;AAC7B,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAA;AAChC,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AACjC,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAA;AAEpC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACjC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACnC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACrC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;IACzC,IAAI,MAAM,KAAK,OAAO;QACrB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AAChB,CAAC;AAED,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC9B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAA;IAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAA;IAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACzB,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;AAC/C,CAAC;AAED,CAAC;IACA,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,MAAM,KAAK,GAAG;;;;;;EAMb,CAAA;IACD,MAAM,KAAK,GAAG;;;;;;EAMb,CAAA;IACD,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IACjD,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IACjD,IAAI,QAAQ,CAAC,MAAM,KAAK,EAAE,IAAI,QAAQ,KAAK,QAAQ;QAClD,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAA;;QAE5E,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;AAC/C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../s/data/barname/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const prefixes: string[];
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export const prefixes = [
|
|
2
|
+
"doz", "mar", "bin", "wan", "sam", "lit", "sig", "hid", "fid", "lis", "sog", "dir", "wac", "sab", "wis", "sib",
|
|
3
|
+
"rig", "sol", "dop", "mod", "fog", "lid", "hop", "dar", "dor", "lor", "hod", "fol", "rin", "tog", "sil", "mir",
|
|
4
|
+
"hol", "pas", "lac", "rov", "liv", "dal", "sat", "lib", "tab", "han", "tic", "pid", "tor", "bol", "fos", "dot",
|
|
5
|
+
"los", "dil", "for", "pil", "ram", "tir", "win", "tad", "bic", "dif", "roc", "wid", "bis", "das", "mid", "lop",
|
|
6
|
+
"ril", "nar", "dap", "mol", "san", "loc", "nov", "sit", "nid", "tip", "sic", "rop", "wit", "nat", "pan", "min",
|
|
7
|
+
"rit", "pod", "mot", "tam", "tol", "sav", "pos", "nap", "nop", "som", "fin", "fon", "ban", "mor", "wor", "sip",
|
|
8
|
+
"ron", "nor", "bot", "wic", "soc", "wat", "dol", "mag", "pic", "dav", "bid", "bal", "tim", "tas", "mal", "lig",
|
|
9
|
+
"siv", "tag", "pad", "sal", "div", "dac", "tan", "sid", "fab", "tar", "mon", "ran", "nis", "wol", "mis", "pal",
|
|
10
|
+
"las", "dis", "map", "rab", "tob", "rol", "lat", "lon", "nod", "nav", "fig", "nom", "nib", "pag", "sop", "ral",
|
|
11
|
+
"bil", "had", "doc", "rid", "moc", "pac", "rav", "rip", "fal", "tod", "til", "tin", "hap", "mic", "fan", "pat",
|
|
12
|
+
"tac", "lab", "mog", "sim", "son", "pin", "lom", "ric", "tap", "fir", "has", "bos", "bat", "poc", "hac", "tid",
|
|
13
|
+
"hav", "sap", "lin", "dib", "hos", "dab", "bit", "bar", "rac", "par", "lod", "dos", "bor", "toc", "hil", "mac",
|
|
14
|
+
"tom", "dig", "fil", "fas", "mit", "hob", "har", "mig", "hin", "rad", "mas", "hal", "rag", "lag", "fad", "top",
|
|
15
|
+
"mop", "hab", "nil", "nos", "mil", "fop", "fam", "dat", "nol", "din", "hat", "nac", "ris", "fot", "rib", "hoc",
|
|
16
|
+
"nim", "lar", "fit", "wal", "rap", "sar", "nal", "mos", "lan", "don", "dan", "lad", "dov", "riv", "bac", "pol",
|
|
17
|
+
"lap", "tal", "pit", "nam", "bon", "ros", "ton", "fod", "pon", "sov", "noc", "sor", "lav", "mat", "mip", "fip",
|
|
18
|
+
];
|
|
19
|
+
//# sourceMappingURL=prefixes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prefixes.js","sourceRoot":"","sources":["../../../../s/data/barname/utils/prefixes.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,QAAQ,GAAG;IACvB,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;CAC/F,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const suffixes: string[];
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export const suffixes = [
|
|
2
|
+
"zod", "nec", "bud", "wes", "sev", "per", "sut", "let", "ful", "pen", "syt", "dur", "wep", "ser", "wyl", "sun",
|
|
3
|
+
"ryp", "syx", "dyr", "nup", "heb", "peg", "lup", "dep", "dys", "put", "lug", "hec", "ryt", "tyv", "syd", "nex",
|
|
4
|
+
"lun", "mep", "lut", "sep", "pes", "del", "sul", "ped", "tem", "led", "tul", "met", "wen", "byn", "hex", "feb",
|
|
5
|
+
"pyl", "dul", "het", "mev", "rut", "tyl", "wyd", "tep", "bes", "dex", "sef", "wyc", "bur", "der", "nep", "pur",
|
|
6
|
+
"rys", "reb", "den", "nut", "sub", "pet", "rul", "syn", "reg", "tyd", "sup", "sem", "wyn", "rec", "meg", "net",
|
|
7
|
+
"sec", "mul", "nym", "tev", "web", "sum", "mut", "nyx", "rex", "teb", "fus", "hep", "ben", "mus", "wyx", "sym",
|
|
8
|
+
"sel", "ruc", "dec", "wex", "syr", "wet", "dyl", "myn", "mes", "det", "bet", "bel", "tux", "tug", "myr", "pel",
|
|
9
|
+
"syp", "ter", "meb", "set", "dut", "deg", "tex", "sur", "fel", "tud", "nux", "rux", "ren", "wyt", "nub", "med",
|
|
10
|
+
"lyt", "dus", "neb", "rum", "tyn", "seg", "lyx", "pun", "res", "red", "fun", "rev", "ref", "mec", "ted", "rus",
|
|
11
|
+
"bex", "leb", "dux", "ryn", "num", "pyx", "ryg", "ryx", "fep", "tyr", "tus", "tyc", "leg", "nem", "fer", "mer",
|
|
12
|
+
"ten", "lus", "nus", "syl", "tec", "mex", "pub", "rym", "tuc", "fyl", "lep", "deb", "ber", "mug", "hut", "tun",
|
|
13
|
+
"byl", "sud", "pem", "dev", "lur", "def", "bus", "bep", "run", "mel", "pex", "dyt", "byt", "typ", "lev", "myl",
|
|
14
|
+
"wed", "duc", "fur", "fex", "nul", "luc", "len", "ner", "lex", "rup", "ned", "lec", "ryd", "lyd", "fen", "wel",
|
|
15
|
+
"nyd", "hus", "rel", "rud", "nes", "hes", "fet", "des", "ret", "dun", "ler", "nyr", "seb", "hul", "ryl", "lud",
|
|
16
|
+
"rem", "lys", "fyn", "wer", "ryc", "sug", "nys", "nyl", "lyn", "dyn", "dem", "lux", "fed", "sed", "bec", "mun",
|
|
17
|
+
"lyr", "tes", "mud", "nyt", "byr", "sen", "weg", "fyr", "mur", "tel", "rep", "teg", "pec", "nel", "nev", "fes",
|
|
18
|
+
];
|
|
19
|
+
//# sourceMappingURL=suffixes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suffixes.js","sourceRoot":"","sources":["../../../../s/data/barname/utils/suffixes.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,QAAQ,GAAG;IACvB,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;CAC/F,CAAA"}
|
package/x/data/base58.js
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/*
|
|
2
|
+
|
|
3
|
+
256-bit base58 ids look like this:
|
|
4
|
+
|
|
5
|
+
9X1D9rdkDgRdykzmogNcxfopRc7TnbS869ow1E2ehCFS
|
|
6
|
+
AmRKyNfq6jhhsd9qda1Y6rAVS2NLUqyTUvfcB2wUiiAC
|
|
7
|
+
8skYcqBAXsejDcJzsZMo19PErt43DHP3bykaXBtMvdu
|
|
8
|
+
|
|
9
|
+
*/
|
|
10
|
+
import { Hex } from "./hex.js";
|
|
11
|
+
import { Bytes } from "./bytes.js";
|
|
12
|
+
const base = 58;
|
|
13
|
+
const characters = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
|
|
14
|
+
export const Base58 = Object.freeze({
|
|
15
|
+
string(bytes) {
|
|
16
|
+
let intVal = BigInt("0x" + Hex.string(bytes));
|
|
17
|
+
let encoded = "";
|
|
18
|
+
while (intVal > 0) {
|
|
19
|
+
const remainder = intVal % BigInt(base);
|
|
20
|
+
intVal = intVal / BigInt(base);
|
|
21
|
+
encoded = characters[Number(remainder)] + encoded;
|
|
22
|
+
}
|
|
23
|
+
for (const byte of bytes) {
|
|
24
|
+
if (byte === 0)
|
|
25
|
+
encoded = characters[0] + encoded;
|
|
26
|
+
else
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
return encoded;
|
|
30
|
+
},
|
|
31
|
+
bytes(string) {
|
|
32
|
+
let intVal = BigInt(0);
|
|
33
|
+
for (const char of string) {
|
|
34
|
+
const index = characters.indexOf(char);
|
|
35
|
+
if (index === -1)
|
|
36
|
+
throw new Error(`Invalid character '${char}' in base58 string`);
|
|
37
|
+
intVal = intVal * BigInt(base) + BigInt(index);
|
|
38
|
+
}
|
|
39
|
+
let hex = intVal.toString(16);
|
|
40
|
+
if (hex.length % 2 !== 0)
|
|
41
|
+
hex = "0" + hex;
|
|
42
|
+
const bytes = Hex.bytes(hex);
|
|
43
|
+
let leadingZeroes = 0;
|
|
44
|
+
for (const char of string) {
|
|
45
|
+
if (char === characters[0])
|
|
46
|
+
leadingZeroes++;
|
|
47
|
+
else
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
const decoded = new Uint8Array(leadingZeroes + bytes.length);
|
|
51
|
+
decoded.set(bytes, leadingZeroes);
|
|
52
|
+
return decoded;
|
|
53
|
+
},
|
|
54
|
+
random(count = 32) {
|
|
55
|
+
return this.string(Bytes.random(count));
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=base58.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base58.js","sourceRoot":"","sources":["../../s/data/base58.ts"],"names":[],"mappings":"AACA;;;;;;;;EAQE;AAEF,OAAO,EAAC,GAAG,EAAC,MAAM,UAAU,CAAA;AAC5B,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAA;AAEhC,MAAM,IAAI,GAAG,EAAE,CAAA;AACf,MAAM,UAAU,GAAG,4DAA4D,CAAA;AAE/E,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IACnC,MAAM,CAAC,KAAiB;QACvB,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QAC7C,IAAI,OAAO,GAAG,EAAE,CAAA;QAEhB,OAAO,MAAM,GAAG,CAAC,EAAE,CAAC;YACnB,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;YACvC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;YAC9B,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,OAAO,CAAA;QAClD,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC1B,IAAI,IAAI,KAAK,CAAC;gBAAE,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAA;;gBAC5C,MAAK;QACX,CAAC;QAED,OAAO,OAAO,CAAA;IACf,CAAC;IAED,KAAK,CAAC,MAAc;QACnB,IAAI,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QAEtB,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YACtC,IAAI,KAAK,KAAK,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,oBAAoB,CAAC,CAAA;YACjF,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;QAC/C,CAAC;QAED,IAAI,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAC7B,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;YAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACzC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAE5B,IAAI,aAAa,GAAG,CAAC,CAAA;QACrB,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC;gBAAE,aAAa,EAAE,CAAA;;gBACtC,MAAK;QACX,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;QAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;QACjC,OAAO,OAAO,CAAA;IACf,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"}
|
package/x/data/base64.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Bytes } from "./bytes.js";
|
|
2
|
+
export const Base64 = {
|
|
3
|
+
string(bytes) {
|
|
4
|
+
return (typeof btoa === "function")
|
|
5
|
+
? btoa(String.fromCharCode(...bytes))
|
|
6
|
+
: Buffer.from(bytes).toString("base64");
|
|
7
|
+
},
|
|
8
|
+
bytes(string) {
|
|
9
|
+
return (typeof atob === "function")
|
|
10
|
+
? Uint8Array.from(atob(string), char => char.charCodeAt(0))
|
|
11
|
+
: Uint8Array.from(Buffer.from(string, "base64"));
|
|
12
|
+
},
|
|
13
|
+
random(count = 32) {
|
|
14
|
+
return this.string(Bytes.random(count));
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=base64.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base64.js","sourceRoot":"","sources":["../../s/data/base64.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAA;AAEhC,MAAM,CAAC,MAAM,MAAM,GAAG;IAErB,MAAM,CAAC,KAAiB;QACvB,OAAO,CAAC,OAAO,IAAI,KAAK,UAAU,CAAC;YAClC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,CAAC;YACrC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACzC,CAAC;IAED,KAAK,CAAC,MAAc;QACnB,OAAO,CAAC,OAAO,IAAI,KAAK,UAAU,CAAC;YAClC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC3D,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAA;IAClD,CAAC;IAED,MAAM,CAAC,KAAK,GAAG,EAAE;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IACxC,CAAC;CACD,CAAA"}
|