emj 0.0.11 → 0.1.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/README.md +14 -38
- package/lib/characters.d.ts +165 -0
- package/lib/characters.js +169 -0
- package/lib/generator.d.ts +1 -0
- package/lib/generator.js +101 -0
- package/lib/index.d.ts +2 -0
- package/lib/{src/index.js → index.js} +1 -1
- package/lib/limits.d.ts +1 -0
- package/lib/limits.js +5 -0
- package/lib/parser.d.ts +1 -0
- package/lib/parser.js +301 -0
- package/package.json +28 -34
- package/lib/gen/grammar.js +0 -85
- package/lib/src/characters.js +0 -168
- package/lib/src/generator.js +0 -114
- package/lib/src/lexer.js +0 -51
- package/lib/src/mapper.js +0 -51
- package/lib/src/parser.js +0 -66
- package/lib/src/patterns.js +0 -69
- package/lib/src/postprocessor.js +0 -89
- package/lib/src/typer.js +0 -32
- package/lib/src/utilities.js +0 -46
package/README.md
CHANGED
|
@@ -39,7 +39,8 @@ const emojion = generate(JSON.stringify({ created: 2019 }));
|
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
Both functions use JSON text so every valid JSON value can round-trip without
|
|
42
|
-
losing type information.
|
|
42
|
+
losing type information. `parse()` throws a `SyntaxError` if its input is not
|
|
43
|
+
valid Emojion.
|
|
43
44
|
|
|
44
45
|
## Syntax
|
|
45
46
|
|
|
@@ -48,7 +49,8 @@ Emojion, you're a winner in this author's eyes. Emojion documents end with `✋`
|
|
|
48
49
|
— because... stop.
|
|
49
50
|
|
|
50
51
|
Objects are enclosed by `👉` and `👈`, arrays are enclosed by `🤜` and `🤛`, and
|
|
51
|
-
array items are separated by `🤝`.
|
|
52
|
+
array items are separated by `🤝`. A top-level object has no `👉` and `👈`. A
|
|
53
|
+
document can also hold one array, string, number, boolean, or `null`.
|
|
52
54
|
|
|
53
55
|
Keys are encoded with face emoji, such as `😠`, `🥺`, `😖`, `😺`, `😸`, and `😽`
|
|
54
56
|
(`a`, `b`, `c`, `1`, `2`, `3` ). Capital letters are prefixed with `👠`. `🗝`
|
|
@@ -58,16 +60,20 @@ Strings are encoded with animals and plants, such as `🐜`, `🐝`, `🐄`, `
|
|
|
58
60
|
`🌱`, and `🌵` (`a`, `b`, `c`, `1`, `2`, `3` ). Capital letters are prefixed
|
|
59
61
|
with `👡`. `🧵` represents an empty string.
|
|
60
62
|
|
|
61
|
-
Numbers are encoded with
|
|
62
|
-
|
|
63
|
-
|
|
63
|
+
Numbers are encoded with clocks, such as `🕛`, `🕐`, and `🕑` (`0`, `1`, `2`).
|
|
64
|
+
Decimal points are encoded with `⛳️` and negative numbers are prefixed with `⏰`
|
|
65
|
+
(because alarms are annoying). Exponents are prefixed with `🚀` (because they
|
|
66
|
+
make numbers take off), so `1e-7` is `🕐🚀⏰🕖`.
|
|
64
67
|
|
|
65
68
|
`💚` is `true`, `💔` is `false`, and `🕳` is `null`.
|
|
66
69
|
|
|
67
70
|
In keys, Unicode characters can be encoded using `🌎` followed by fruit, such as
|
|
68
71
|
`🌎🍏🍊🍈🍓` for `U+0398` (which is `Θ`). In values, Unicode characters are
|
|
69
72
|
encoded using `🗺` followed by office supplies, such as `🗺🖋🖊🧷🔎` for `U+0394`
|
|
70
|
-
(which is `Δ`).
|
|
73
|
+
(which is `Δ`). An encoded character can use up to six of these digits.
|
|
74
|
+
|
|
75
|
+
Whitespace and emoji variation selectors are ignored. Arrays and objects can be
|
|
76
|
+
nested up to 512 levels deep.
|
|
71
77
|
|
|
72
78
|
See [`characters.ts`](./src/characters.ts) for the full character map.
|
|
73
79
|
|
|
@@ -99,35 +105,5 @@ When your coworker tells you YAML is "too hard to read".
|
|
|
99
105
|
|
|
100
106
|
## Tech
|
|
101
107
|
|
|
102
|
-
Emojion
|
|
103
|
-
|
|
104
|
-
[Nearley parser](https://nearley.js.org) engines.
|
|
105
|
-
|
|
106
|
-
## Publishing
|
|
107
|
-
|
|
108
|
-
Emojion is a maintained joke package: its premise is intentionally absurd, but
|
|
109
|
-
its runtime dependencies and published security posture are maintained like any
|
|
110
|
-
other library. Garden keeps development tooling and compatible lockfile
|
|
111
|
-
resolutions current while runtime-range changes remain deliberate.
|
|
112
|
-
|
|
113
|
-
Garden dispatches [`Prepare Release`](./.github/workflows/prepare-release.yml)
|
|
114
|
-
with an exact semantic version. The tag is the release source of truth; the
|
|
115
|
-
publisher checks out that immutable tag and stamps the package manifest only in
|
|
116
|
-
its packaging worktree before publishing to npm and creating the matching GitHub
|
|
117
|
-
Release. Routine releases are batched to at most one per week.
|
|
118
|
-
|
|
119
|
-
Publishing uses npm Trusted Publishing.
|
|
120
|
-
|
|
121
|
-
Configure the `emj` package on npm with this trusted publisher:
|
|
122
|
-
|
|
123
|
-
- Provider: GitHub Actions
|
|
124
|
-
- Organization or user: `agorischek`
|
|
125
|
-
- Repository: `emojion`
|
|
126
|
-
- Workflow filename: `publish.yml`
|
|
127
|
-
- Environment name: leave blank
|
|
128
|
-
|
|
129
|
-
You can also configure it from an authenticated npm CLI:
|
|
130
|
-
|
|
131
|
-
```sh
|
|
132
|
-
npx npm@latest trust github emj --repo agorischek/emojion --file publish.yml
|
|
133
|
-
```
|
|
108
|
+
Emojion has no runtime dependencies. It reads each document in a single pass
|
|
109
|
+
with a hand-written parser. Run `npm run bench` to measure its speed.
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
export declare const characters: {
|
|
2
|
+
document: {
|
|
3
|
+
arrayClose: string;
|
|
4
|
+
arrayDelimit: string;
|
|
5
|
+
arrayOpen: string;
|
|
6
|
+
end: string;
|
|
7
|
+
indent: string;
|
|
8
|
+
outdent: string;
|
|
9
|
+
start: string;
|
|
10
|
+
};
|
|
11
|
+
keys: {
|
|
12
|
+
letters: {
|
|
13
|
+
a: string;
|
|
14
|
+
b: string;
|
|
15
|
+
c: string;
|
|
16
|
+
d: string;
|
|
17
|
+
e: string;
|
|
18
|
+
f: string;
|
|
19
|
+
g: string;
|
|
20
|
+
h: string;
|
|
21
|
+
i: string;
|
|
22
|
+
j: string;
|
|
23
|
+
k: string;
|
|
24
|
+
l: string;
|
|
25
|
+
m: string;
|
|
26
|
+
n: string;
|
|
27
|
+
o: string;
|
|
28
|
+
p: string;
|
|
29
|
+
q: string;
|
|
30
|
+
r: string;
|
|
31
|
+
s: string;
|
|
32
|
+
t: string;
|
|
33
|
+
u: string;
|
|
34
|
+
v: string;
|
|
35
|
+
w: string;
|
|
36
|
+
x: string;
|
|
37
|
+
y: string;
|
|
38
|
+
z: string;
|
|
39
|
+
};
|
|
40
|
+
modifiers: {
|
|
41
|
+
unicode: string;
|
|
42
|
+
upperCase: string;
|
|
43
|
+
};
|
|
44
|
+
numerals: {
|
|
45
|
+
0: string;
|
|
46
|
+
1: string;
|
|
47
|
+
2: string;
|
|
48
|
+
3: string;
|
|
49
|
+
4: string;
|
|
50
|
+
5: string;
|
|
51
|
+
6: string;
|
|
52
|
+
7: string;
|
|
53
|
+
8: string;
|
|
54
|
+
9: string;
|
|
55
|
+
};
|
|
56
|
+
other: {
|
|
57
|
+
empty: string;
|
|
58
|
+
};
|
|
59
|
+
unicode: {
|
|
60
|
+
0: string;
|
|
61
|
+
1: string;
|
|
62
|
+
2: string;
|
|
63
|
+
3: string;
|
|
64
|
+
4: string;
|
|
65
|
+
5: string;
|
|
66
|
+
6: string;
|
|
67
|
+
7: string;
|
|
68
|
+
8: string;
|
|
69
|
+
9: string;
|
|
70
|
+
a: string;
|
|
71
|
+
b: string;
|
|
72
|
+
c: string;
|
|
73
|
+
d: string;
|
|
74
|
+
e: string;
|
|
75
|
+
f: string;
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
values: {
|
|
79
|
+
booleans: {
|
|
80
|
+
false: string;
|
|
81
|
+
true: string;
|
|
82
|
+
};
|
|
83
|
+
letters: {
|
|
84
|
+
a: string;
|
|
85
|
+
b: string;
|
|
86
|
+
c: string;
|
|
87
|
+
d: string;
|
|
88
|
+
e: string;
|
|
89
|
+
f: string;
|
|
90
|
+
g: string;
|
|
91
|
+
h: string;
|
|
92
|
+
i: string;
|
|
93
|
+
j: string;
|
|
94
|
+
k: string;
|
|
95
|
+
l: string;
|
|
96
|
+
m: string;
|
|
97
|
+
n: string;
|
|
98
|
+
o: string;
|
|
99
|
+
p: string;
|
|
100
|
+
q: string;
|
|
101
|
+
r: string;
|
|
102
|
+
s: string;
|
|
103
|
+
t: string;
|
|
104
|
+
u: string;
|
|
105
|
+
v: string;
|
|
106
|
+
w: string;
|
|
107
|
+
x: string;
|
|
108
|
+
y: string;
|
|
109
|
+
z: string;
|
|
110
|
+
};
|
|
111
|
+
modifiers: {
|
|
112
|
+
unicode: string;
|
|
113
|
+
upperCase: string;
|
|
114
|
+
negative: string;
|
|
115
|
+
};
|
|
116
|
+
numbers: {
|
|
117
|
+
0: string;
|
|
118
|
+
1: string;
|
|
119
|
+
2: string;
|
|
120
|
+
3: string;
|
|
121
|
+
4: string;
|
|
122
|
+
5: string;
|
|
123
|
+
6: string;
|
|
124
|
+
7: string;
|
|
125
|
+
8: string;
|
|
126
|
+
9: string;
|
|
127
|
+
'.': string;
|
|
128
|
+
e: string;
|
|
129
|
+
};
|
|
130
|
+
numerals: {
|
|
131
|
+
0: string;
|
|
132
|
+
1: string;
|
|
133
|
+
2: string;
|
|
134
|
+
3: string;
|
|
135
|
+
4: string;
|
|
136
|
+
5: string;
|
|
137
|
+
6: string;
|
|
138
|
+
7: string;
|
|
139
|
+
8: string;
|
|
140
|
+
9: string;
|
|
141
|
+
};
|
|
142
|
+
other: {
|
|
143
|
+
null: string;
|
|
144
|
+
emptyString: string;
|
|
145
|
+
};
|
|
146
|
+
unicode: {
|
|
147
|
+
0: string;
|
|
148
|
+
1: string;
|
|
149
|
+
2: string;
|
|
150
|
+
3: string;
|
|
151
|
+
4: string;
|
|
152
|
+
5: string;
|
|
153
|
+
6: string;
|
|
154
|
+
7: string;
|
|
155
|
+
8: string;
|
|
156
|
+
9: string;
|
|
157
|
+
a: string;
|
|
158
|
+
b: string;
|
|
159
|
+
c: string;
|
|
160
|
+
d: string;
|
|
161
|
+
e: string;
|
|
162
|
+
f: string;
|
|
163
|
+
};
|
|
164
|
+
};
|
|
165
|
+
};
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.characters = void 0;
|
|
4
|
+
exports.characters = {
|
|
5
|
+
document: {
|
|
6
|
+
arrayClose: '🤛',
|
|
7
|
+
arrayDelimit: '🤝',
|
|
8
|
+
arrayOpen: '🤜',
|
|
9
|
+
end: '✋',
|
|
10
|
+
indent: '👉',
|
|
11
|
+
outdent: '👈',
|
|
12
|
+
start: '🙌',
|
|
13
|
+
},
|
|
14
|
+
keys: {
|
|
15
|
+
letters: {
|
|
16
|
+
a: '😠',
|
|
17
|
+
b: '🥺',
|
|
18
|
+
c: '😖',
|
|
19
|
+
d: '🤤',
|
|
20
|
+
e: '😳',
|
|
21
|
+
f: '🙁',
|
|
22
|
+
g: '🤪',
|
|
23
|
+
h: '😃',
|
|
24
|
+
i: '🤔',
|
|
25
|
+
j: '😂',
|
|
26
|
+
k: '😚',
|
|
27
|
+
l: '🥰',
|
|
28
|
+
m: '🤑',
|
|
29
|
+
n: '😶',
|
|
30
|
+
o: '😮',
|
|
31
|
+
p: '🥳',
|
|
32
|
+
q: '🤫',
|
|
33
|
+
r: '😭',
|
|
34
|
+
s: '😢',
|
|
35
|
+
t: '😛',
|
|
36
|
+
u: '🙃',
|
|
37
|
+
v: '😁',
|
|
38
|
+
w: '😉',
|
|
39
|
+
x: '😵',
|
|
40
|
+
y: '🤩',
|
|
41
|
+
z: '🤐',
|
|
42
|
+
},
|
|
43
|
+
modifiers: {
|
|
44
|
+
unicode: '🌎',
|
|
45
|
+
upperCase: '👠',
|
|
46
|
+
},
|
|
47
|
+
numerals: {
|
|
48
|
+
0: '🐱',
|
|
49
|
+
1: '😺',
|
|
50
|
+
2: '😸',
|
|
51
|
+
3: '😽',
|
|
52
|
+
4: '😻',
|
|
53
|
+
5: '😹',
|
|
54
|
+
6: '😿',
|
|
55
|
+
7: '😾',
|
|
56
|
+
8: '😼',
|
|
57
|
+
9: '🙀',
|
|
58
|
+
},
|
|
59
|
+
other: {
|
|
60
|
+
empty: '🗝',
|
|
61
|
+
},
|
|
62
|
+
unicode: {
|
|
63
|
+
0: '🍏',
|
|
64
|
+
1: '🍎',
|
|
65
|
+
2: '🍐',
|
|
66
|
+
3: '🍊',
|
|
67
|
+
4: '🍋',
|
|
68
|
+
5: '🍌',
|
|
69
|
+
6: '🍉',
|
|
70
|
+
7: '🍇',
|
|
71
|
+
8: '🍓',
|
|
72
|
+
9: '🍈',
|
|
73
|
+
a: '🍒',
|
|
74
|
+
b: '🍑',
|
|
75
|
+
c: '🥭',
|
|
76
|
+
d: '🍍',
|
|
77
|
+
e: '🥥',
|
|
78
|
+
f: '🥝',
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
values: {
|
|
82
|
+
booleans: {
|
|
83
|
+
false: '💔',
|
|
84
|
+
true: '💚',
|
|
85
|
+
},
|
|
86
|
+
letters: {
|
|
87
|
+
a: '🐜',
|
|
88
|
+
b: '🐝',
|
|
89
|
+
c: '🐄',
|
|
90
|
+
d: '🐬',
|
|
91
|
+
e: '🐘',
|
|
92
|
+
f: '🐟',
|
|
93
|
+
g: '🐐',
|
|
94
|
+
h: '🦔',
|
|
95
|
+
i: '🐖',
|
|
96
|
+
j: '🦒',
|
|
97
|
+
k: '🦘',
|
|
98
|
+
l: '🦞',
|
|
99
|
+
m: '🐁',
|
|
100
|
+
n: '🦏',
|
|
101
|
+
o: '🦉',
|
|
102
|
+
p: '🦚',
|
|
103
|
+
q: '🦑',
|
|
104
|
+
r: '🦝',
|
|
105
|
+
s: '🐌',
|
|
106
|
+
t: '🐢',
|
|
107
|
+
u: '🦋',
|
|
108
|
+
v: '🕊',
|
|
109
|
+
w: '🐋',
|
|
110
|
+
x: '🐂',
|
|
111
|
+
y: '🦃',
|
|
112
|
+
z: '🦓',
|
|
113
|
+
},
|
|
114
|
+
modifiers: {
|
|
115
|
+
unicode: '🗺',
|
|
116
|
+
upperCase: '👡',
|
|
117
|
+
negative: '⏰',
|
|
118
|
+
},
|
|
119
|
+
numbers: {
|
|
120
|
+
0: '🕛',
|
|
121
|
+
1: '🕐',
|
|
122
|
+
2: '🕑',
|
|
123
|
+
3: '🕒',
|
|
124
|
+
4: '🕓',
|
|
125
|
+
5: '🕔',
|
|
126
|
+
6: '🕕',
|
|
127
|
+
7: '🕖',
|
|
128
|
+
8: '🕗',
|
|
129
|
+
9: '🕘',
|
|
130
|
+
'.': '⛳️',
|
|
131
|
+
e: '🚀',
|
|
132
|
+
},
|
|
133
|
+
numerals: {
|
|
134
|
+
0: '🌻',
|
|
135
|
+
1: '🌷',
|
|
136
|
+
2: '🌱',
|
|
137
|
+
3: '🌵',
|
|
138
|
+
4: '🍀',
|
|
139
|
+
5: '🌺',
|
|
140
|
+
6: '🌾',
|
|
141
|
+
7: '🌿',
|
|
142
|
+
8: '🌼',
|
|
143
|
+
9: '🌹',
|
|
144
|
+
},
|
|
145
|
+
other: {
|
|
146
|
+
null: '🕳',
|
|
147
|
+
emptyString: '🧵',
|
|
148
|
+
},
|
|
149
|
+
unicode: {
|
|
150
|
+
0: '🖋',
|
|
151
|
+
1: '🖌',
|
|
152
|
+
2: '🖍',
|
|
153
|
+
3: '🖊',
|
|
154
|
+
4: '🔎',
|
|
155
|
+
5: '📐',
|
|
156
|
+
6: '📏',
|
|
157
|
+
7: '📍',
|
|
158
|
+
8: '📌',
|
|
159
|
+
9: '🧷',
|
|
160
|
+
a: '📎',
|
|
161
|
+
b: '📁',
|
|
162
|
+
c: '📓',
|
|
163
|
+
d: '📒',
|
|
164
|
+
e: '📕',
|
|
165
|
+
f: '📋',
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcmFjdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jaGFyYWN0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFhLFFBQUEsVUFBVSxHQUFHO0lBQ3hCLFFBQVEsRUFBRTtRQUNSLFVBQVUsRUFBRSxJQUFJO1FBQ2hCLFlBQVksRUFBRSxJQUFJO1FBQ2xCLFNBQVMsRUFBRSxJQUFJO1FBQ2YsR0FBRyxFQUFFLEdBQUc7UUFDUixNQUFNLEVBQUUsSUFBSTtRQUNaLE9BQU8sRUFBRSxJQUFJO1FBQ2IsS0FBSyxFQUFFLElBQUk7S0FDWjtJQUNELElBQUksRUFBRTtRQUNKLE9BQU8sRUFBRTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7U0FDUjtRQUNELFNBQVMsRUFBRTtZQUNULE9BQU8sRUFBRSxJQUFJO1lBQ2IsU0FBUyxFQUFFLElBQUk7U0FDaEI7UUFDRCxRQUFRLEVBQUU7WUFDUixDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtTQUNSO1FBQ0QsS0FBSyxFQUFFO1lBQ0wsS0FBSyxFQUFFLElBQUk7U0FDWjtRQUNELE9BQU8sRUFBRTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1NBQ1I7S0FDRjtJQUNELE1BQU0sRUFBRTtRQUNOLFFBQVEsRUFBRTtZQUNSLEtBQUssRUFBRSxJQUFJO1lBQ1gsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNELE9BQU8sRUFBRTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7U0FDUjtRQUNELFNBQVMsRUFBRTtZQUNULE9BQU8sRUFBRSxJQUFJO1lBQ2IsU0FBUyxFQUFFLElBQUk7WUFDZixRQUFRLEVBQUUsR0FBRztTQUNkO1FBQ0QsT0FBTyxFQUFFO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxHQUFHLEVBQUUsSUFBSTtZQUNULENBQUMsRUFBRSxJQUFJO1NBQ1I7UUFDRCxRQUFRLEVBQUU7WUFDUixDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtTQUNSO1FBQ0QsS0FBSyxFQUFFO1lBQ0wsSUFBSSxFQUFFLElBQUk7WUFDVixXQUFXLEVBQUUsSUFBSTtTQUNsQjtRQUNELE9BQU8sRUFBRTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxJQUFJO1NBQ1I7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgY2hhcmFjdGVycyA9IHtcbiAgZG9jdW1lbnQ6IHtcbiAgICBhcnJheUNsb3NlOiAn8J+kmycsXG4gICAgYXJyYXlEZWxpbWl0OiAn8J+knScsXG4gICAgYXJyYXlPcGVuOiAn8J+knCcsXG4gICAgZW5kOiAn4pyLJyxcbiAgICBpbmRlbnQ6ICfwn5GJJyxcbiAgICBvdXRkZW50OiAn8J+RiCcsXG4gICAgc3RhcnQ6ICfwn5mMJyxcbiAgfSxcbiAga2V5czoge1xuICAgIGxldHRlcnM6IHtcbiAgICAgIGE6ICfwn5igJyxcbiAgICAgIGI6ICfwn6W6JyxcbiAgICAgIGM6ICfwn5iWJyxcbiAgICAgIGQ6ICfwn6SkJyxcbiAgICAgIGU6ICfwn5izJyxcbiAgICAgIGY6ICfwn5mBJyxcbiAgICAgIGc6ICfwn6SqJyxcbiAgICAgIGg6ICfwn5iDJyxcbiAgICAgIGk6ICfwn6SUJyxcbiAgICAgIGo6ICfwn5iCJyxcbiAgICAgIGs6ICfwn5iaJyxcbiAgICAgIGw6ICfwn6WwJyxcbiAgICAgIG06ICfwn6SRJyxcbiAgICAgIG46ICfwn5i2JyxcbiAgICAgIG86ICfwn5iuJyxcbiAgICAgIHA6ICfwn6WzJyxcbiAgICAgIHE6ICfwn6SrJyxcbiAgICAgIHI6ICfwn5itJyxcbiAgICAgIHM6ICfwn5iiJyxcbiAgICAgIHQ6ICfwn5ibJyxcbiAgICAgIHU6ICfwn5mDJyxcbiAgICAgIHY6ICfwn5iBJyxcbiAgICAgIHc6ICfwn5iJJyxcbiAgICAgIHg6ICfwn5i1JyxcbiAgICAgIHk6ICfwn6SpJyxcbiAgICAgIHo6ICfwn6SQJyxcbiAgICB9LFxuICAgIG1vZGlmaWVyczoge1xuICAgICAgdW5pY29kZTogJ/CfjI4nLFxuICAgICAgdXBwZXJDYXNlOiAn8J+RoCcsXG4gICAgfSxcbiAgICBudW1lcmFsczoge1xuICAgICAgMDogJ/CfkLEnLFxuICAgICAgMTogJ/CfmLonLFxuICAgICAgMjogJ/CfmLgnLFxuICAgICAgMzogJ/CfmL0nLFxuICAgICAgNDogJ/CfmLsnLFxuICAgICAgNTogJ/CfmLknLFxuICAgICAgNjogJ/CfmL8nLFxuICAgICAgNzogJ/CfmL4nLFxuICAgICAgODogJ/CfmLwnLFxuICAgICAgOTogJ/CfmYAnLFxuICAgIH0sXG4gICAgb3RoZXI6IHtcbiAgICAgIGVtcHR5OiAn8J+XnScsXG4gICAgfSxcbiAgICB1bmljb2RlOiB7XG4gICAgICAwOiAn8J+NjycsXG4gICAgICAxOiAn8J+NjicsXG4gICAgICAyOiAn8J+NkCcsXG4gICAgICAzOiAn8J+NiicsXG4gICAgICA0OiAn8J+NiycsXG4gICAgICA1OiAn8J+NjCcsXG4gICAgICA2OiAn8J+NiScsXG4gICAgICA3OiAn8J+NhycsXG4gICAgICA4OiAn8J+NkycsXG4gICAgICA5OiAn8J+NiCcsXG4gICAgICBhOiAn8J+NkicsXG4gICAgICBiOiAn8J+NkScsXG4gICAgICBjOiAn8J+lrScsXG4gICAgICBkOiAn8J+NjScsXG4gICAgICBlOiAn8J+lpScsXG4gICAgICBmOiAn8J+lnScsXG4gICAgfSxcbiAgfSxcbiAgdmFsdWVzOiB7XG4gICAgYm9vbGVhbnM6IHtcbiAgICAgIGZhbHNlOiAn8J+SlCcsXG4gICAgICB0cnVlOiAn8J+SmicsXG4gICAgfSxcbiAgICBsZXR0ZXJzOiB7XG4gICAgICBhOiAn8J+QnCcsXG4gICAgICBiOiAn8J+QnScsXG4gICAgICBjOiAn8J+QhCcsXG4gICAgICBkOiAn8J+QrCcsXG4gICAgICBlOiAn8J+QmCcsXG4gICAgICBmOiAn8J+QnycsXG4gICAgICBnOiAn8J+QkCcsXG4gICAgICBoOiAn8J+mlCcsXG4gICAgICBpOiAn8J+QlicsXG4gICAgICBqOiAn8J+mkicsXG4gICAgICBrOiAn8J+mmCcsXG4gICAgICBsOiAn8J+mnicsXG4gICAgICBtOiAn8J+QgScsXG4gICAgICBuOiAn8J+mjycsXG4gICAgICBvOiAn8J+miScsXG4gICAgICBwOiAn8J+mmicsXG4gICAgICBxOiAn8J+mkScsXG4gICAgICByOiAn8J+mnScsXG4gICAgICBzOiAn8J+QjCcsXG4gICAgICB0OiAn8J+QoicsXG4gICAgICB1OiAn8J+miycsXG4gICAgICB2OiAn8J+ViicsXG4gICAgICB3OiAn8J+QiycsXG4gICAgICB4OiAn8J+QgicsXG4gICAgICB5OiAn8J+mgycsXG4gICAgICB6OiAn8J+mkycsXG4gICAgfSxcbiAgICBtb2RpZmllcnM6IHtcbiAgICAgIHVuaWNvZGU6ICfwn5e6JyxcbiAgICAgIHVwcGVyQ2FzZTogJ/CfkaEnLFxuICAgICAgbmVnYXRpdmU6ICfij7AnLFxuICAgIH0sXG4gICAgbnVtYmVyczoge1xuICAgICAgMDogJ/CflZsnLFxuICAgICAgMTogJ/CflZAnLFxuICAgICAgMjogJ/CflZEnLFxuICAgICAgMzogJ/CflZInLFxuICAgICAgNDogJ/CflZMnLFxuICAgICAgNTogJ/CflZQnLFxuICAgICAgNjogJ/CflZUnLFxuICAgICAgNzogJ/CflZYnLFxuICAgICAgODogJ/CflZcnLFxuICAgICAgOTogJ/CflZgnLFxuICAgICAgJy4nOiAn4puz77iPJyxcbiAgICAgIGU6ICfwn5qAJyxcbiAgICB9LFxuICAgIG51bWVyYWxzOiB7XG4gICAgICAwOiAn8J+MuycsXG4gICAgICAxOiAn8J+MtycsXG4gICAgICAyOiAn8J+MsScsXG4gICAgICAzOiAn8J+MtScsXG4gICAgICA0OiAn8J+NgCcsXG4gICAgICA1OiAn8J+MuicsXG4gICAgICA2OiAn8J+MvicsXG4gICAgICA3OiAn8J+MvycsXG4gICAgICA4OiAn8J+MvCcsXG4gICAgICA5OiAn8J+MuScsXG4gICAgfSxcbiAgICBvdGhlcjoge1xuICAgICAgbnVsbDogJ/CflbMnLFxuICAgICAgZW1wdHlTdHJpbmc6ICfwn6e1JyxcbiAgICB9LFxuICAgIHVuaWNvZGU6IHtcbiAgICAgIDA6ICfwn5aLJyxcbiAgICAgIDE6ICfwn5aMJyxcbiAgICAgIDI6ICfwn5aNJyxcbiAgICAgIDM6ICfwn5aKJyxcbiAgICAgIDQ6ICfwn5SOJyxcbiAgICAgIDU6ICfwn5OQJyxcbiAgICAgIDY6ICfwn5OPJyxcbiAgICAgIDc6ICfwn5ONJyxcbiAgICAgIDg6ICfwn5OMJyxcbiAgICAgIDk6ICfwn6e3JyxcbiAgICAgIGE6ICfwn5OOJyxcbiAgICAgIGI6ICfwn5OBJyxcbiAgICAgIGM6ICfwn5OTJyxcbiAgICAgIGQ6ICfwn5OSJyxcbiAgICAgIGU6ICfwn5OVJyxcbiAgICAgIGY6ICfwn5OLJyxcbiAgICB9LFxuICB9LFxufTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const generate: (input: string) => string;
|
package/lib/generator.js
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generate = void 0;
|
|
4
|
+
const characters_1 = require("./characters");
|
|
5
|
+
const limits_1 = require("./limits");
|
|
6
|
+
const KEYS = Array.from({ length: 128 }, () => '');
|
|
7
|
+
const VALUES = Array.from({ length: 128 }, () => '');
|
|
8
|
+
for (const [char, emoji] of Object.entries(characters_1.characters.keys.letters)) {
|
|
9
|
+
KEYS[char.charCodeAt(0)] = emoji;
|
|
10
|
+
KEYS[char.toUpperCase().charCodeAt(0)] =
|
|
11
|
+
characters_1.characters.keys.modifiers.upperCase + emoji;
|
|
12
|
+
}
|
|
13
|
+
for (const [char, emoji] of Object.entries(characters_1.characters.keys.numerals)) {
|
|
14
|
+
KEYS[char.charCodeAt(0)] = emoji;
|
|
15
|
+
}
|
|
16
|
+
for (const [char, emoji] of Object.entries(characters_1.characters.values.letters)) {
|
|
17
|
+
VALUES[char.charCodeAt(0)] = emoji;
|
|
18
|
+
VALUES[char.toUpperCase().charCodeAt(0)] =
|
|
19
|
+
characters_1.characters.values.modifiers.upperCase + emoji;
|
|
20
|
+
}
|
|
21
|
+
for (const [char, emoji] of Object.entries(characters_1.characters.values.numerals)) {
|
|
22
|
+
VALUES[char.charCodeAt(0)] = emoji;
|
|
23
|
+
}
|
|
24
|
+
const KEY_NIBBLES = characters_1.characters.keys.unicode;
|
|
25
|
+
const VALUE_NIBBLES = characters_1.characters.values.unicode;
|
|
26
|
+
const NUMBERS = Object.assign(Object.assign({}, characters_1.characters.values.numbers), { '-': characters_1.characters.values.modifiers.negative, '+': '' });
|
|
27
|
+
function encode(text, table, unicode, nibbles) {
|
|
28
|
+
let out = '';
|
|
29
|
+
for (let i = 0; i < text.length; i++) {
|
|
30
|
+
const emoji = table[text.charCodeAt(i)];
|
|
31
|
+
if (emoji) {
|
|
32
|
+
out += emoji;
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
const point = text.codePointAt(i);
|
|
36
|
+
if (point > 0xffff)
|
|
37
|
+
i++;
|
|
38
|
+
out += unicode;
|
|
39
|
+
for (const hex of point.toString(16))
|
|
40
|
+
out += nibbles[hex];
|
|
41
|
+
}
|
|
42
|
+
return out;
|
|
43
|
+
}
|
|
44
|
+
function nest(depth) {
|
|
45
|
+
if (depth >= limits_1.MAX_DEPTH) {
|
|
46
|
+
throw new RangeError(`JSON nesting exceeds ${limits_1.MAX_DEPTH} levels, the most Emojion supports`);
|
|
47
|
+
}
|
|
48
|
+
return depth + 1;
|
|
49
|
+
}
|
|
50
|
+
function encodeObject(object, depth) {
|
|
51
|
+
let out = '';
|
|
52
|
+
for (const key of Object.keys(object)) {
|
|
53
|
+
out += key
|
|
54
|
+
? encode(key, KEYS, characters_1.characters.keys.modifiers.unicode, KEY_NIBBLES)
|
|
55
|
+
: characters_1.characters.keys.other.empty;
|
|
56
|
+
out += encodeValue(object[key], depth);
|
|
57
|
+
}
|
|
58
|
+
return out;
|
|
59
|
+
}
|
|
60
|
+
function encodeValue(value, depth) {
|
|
61
|
+
if (typeof value === 'string') {
|
|
62
|
+
return value
|
|
63
|
+
? encode(value, VALUES, characters_1.characters.values.modifiers.unicode, VALUE_NIBBLES)
|
|
64
|
+
: characters_1.characters.values.other.emptyString;
|
|
65
|
+
}
|
|
66
|
+
if (typeof value === 'number') {
|
|
67
|
+
let out = '';
|
|
68
|
+
for (const char of String(value))
|
|
69
|
+
out += NUMBERS[char];
|
|
70
|
+
return out;
|
|
71
|
+
}
|
|
72
|
+
if (typeof value === 'boolean') {
|
|
73
|
+
return value
|
|
74
|
+
? characters_1.characters.values.booleans.true
|
|
75
|
+
: characters_1.characters.values.booleans.false;
|
|
76
|
+
}
|
|
77
|
+
if (value === null)
|
|
78
|
+
return characters_1.characters.values.other.null;
|
|
79
|
+
const inner = nest(depth);
|
|
80
|
+
if (Array.isArray(value)) {
|
|
81
|
+
let out = characters_1.characters.document.arrayOpen;
|
|
82
|
+
for (let i = 0; i < value.length; i++) {
|
|
83
|
+
if (i)
|
|
84
|
+
out += characters_1.characters.document.arrayDelimit;
|
|
85
|
+
out += encodeValue(value[i], inner);
|
|
86
|
+
}
|
|
87
|
+
return out + characters_1.characters.document.arrayClose;
|
|
88
|
+
}
|
|
89
|
+
return (characters_1.characters.document.indent +
|
|
90
|
+
encodeObject(value, inner) +
|
|
91
|
+
characters_1.characters.document.outdent);
|
|
92
|
+
}
|
|
93
|
+
const generate = (input) => {
|
|
94
|
+
const value = JSON.parse(input);
|
|
95
|
+
const body = value && typeof value === 'object' && !Array.isArray(value)
|
|
96
|
+
? encodeObject(value, 0)
|
|
97
|
+
: encodeValue(value, 0);
|
|
98
|
+
return characters_1.characters.document.start + body + characters_1.characters.document.end;
|
|
99
|
+
};
|
|
100
|
+
exports.generate = generate;
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2dlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBMEM7QUFDMUMscUNBQXFDO0FBSXJDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbkQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUVyRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO0lBQ3BFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLHVCQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0FBQ2hELENBQUM7QUFDRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQ3JFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ25DLENBQUM7QUFDRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBVSxD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QUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQztnQkFBRSxHQUFHLElBQUksdUJBQVUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBQy9DLEdBQUcsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxPQUFPLEdBQUcsR0FBRyx1QkFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7SUFDOUMsQ0FBQztJQUNELE9BQU8sQ0FDTCx1QkFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNO1FBQzFCLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO1FBQzFCLHVCQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FDNUIsQ0FBQztBQUNKLENBQUM7QUFTTSxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQWEsRUFBVSxFQUFFO0lBQ2hELE1BQU0sS0FBSyxHQUFTLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsTUFBTSxJQUFJLEdBQ1IsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ3pELENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN4QixDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1QixPQUFPLHVCQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsdUJBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0FBQ3BFLENBQUMsQ0FBQztBQVBXLFFBQUEsUUFBUSxZQU9uQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNoYXJhY3RlcnMgfSBmcm9tICcuL2NoYXJhY3RlcnMnO1xuaW1wb3J0IHsgTUFYX0RFUFRIIH0gZnJvbSAnLi9saW1pdHMnO1xuXG50eXBlIEpzb24gPSBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IEpzb25bXSB8IHsgW2tleTogc3RyaW5nXTogSnNvbiB9O1xuXG5jb25zdCBLRVlTID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogMTI4IH0sICgpID0+ICcnKTtcbmNvbnN0IFZBTFVFUyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDEyOCB9LCAoKSA9PiAnJyk7XG5cbmZvciAoY29uc3QgW2NoYXIsIGVtb2ppXSBvZiBPYmplY3QuZW50cmllcyhjaGFyYWN0ZXJzLmtleXMubGV0dGVycykpIHtcbiAgS0VZU1tjaGFyLmNoYXJDb2RlQXQoMCldID0gZW1vamk7XG4gIEtFWVNbY2hhci50b1VwcGVyQ2FzZSgpLmNoYXJDb2RlQXQoMCldID1cbiAgICBjaGFyYWN0ZXJzLmtleXMubW9kaWZpZXJzLnVwcGVyQ2FzZSArIGVtb2ppO1xufVxuZm9yIChjb25zdCBbY2hhciwgZW1vamldIG9mIE9iamVjdC5lbnRyaWVzKGNoYXJhY3RlcnMua2V5cy5udW1lcmFscykpIHtcbiAgS0VZU1tjaGFyLmNoYXJDb2RlQXQoMCldID0gZW1vamk7XG59XG5mb3IgKGNvbnN0IFtjaGFyLCBlbW9qaV0gb2YgT2JqZWN0LmVudHJpZXMoY2hhcmFjdGVycy52YWx1ZXMubGV0dGVycykpIHtcbiAgVkFMVUVTW2NoYXIuY2hhckNvZGVBdCgwKV0gPSBlbW9qaTtcbiAgVkFMVUVTW2NoYXIudG9VcHBlckNhc2UoKS5jaGFyQ29kZUF0KDApXSA9XG4gICAgY2hhcmFjdGVycy52YWx1ZXMubW9kaWZpZXJzLnVwcGVyQ2FzZSArIGVtb2ppO1xufVxuZm9yIChjb25zdCBbY2hhciwgZW1vamldIG9mIE9iamVjdC5lbnRyaWVzKGNoYXJhY3RlcnMudmFsdWVzLm51bWVyYWxzKSkge1xuICBWQUxVRVNbY2hhci5jaGFyQ29kZUF0KDApXSA9IGVtb2ppO1xufVxuXG5jb25zdCBLRVlfTklCQkxFUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IGNoYXJhY3RlcnMua2V5cy51bmljb2RlO1xuY29uc3QgVkFMVUVfTklCQkxFUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IGNoYXJhY3RlcnMudmFsdWVzLnVuaWNvZGU7XG5cbmNvbnN0IE5VTUJFUlM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIC4uLmNoYXJhY3RlcnMudmFsdWVzLm51bWJlcnMsXG4gICctJzogY2hhcmFjdGVycy52YWx1ZXMubW9kaWZpZXJzLm5lZ2F0aXZlLFxuICAnKyc6ICcnLFxufTtcblxuZnVuY3Rpb24gZW5jb2RlKFxuICB0ZXh0OiBzdHJpbmcsXG4gIHRhYmxlOiBzdHJpbmdbXSxcbiAgdW5pY29kZTogc3RyaW5nLFxuICBuaWJibGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4pOiBzdHJpbmcge1xuICBsZXQgb3V0ID0gJyc7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGVtb2ppID0gdGFibGVbdGV4dC5jaGFyQ29kZUF0KGkpXTtcbiAgICBpZiAoZW1vamkpIHtcbiAgICAgIG91dCArPSBlbW9qaTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBwb2ludCA9IHRleHQuY29kZVBvaW50QXQoaSkhO1xuICAgIGlmIChwb2ludCA+IDB4ZmZmZikgaSsrO1xuICAgIG91dCArPSB1bmljb2RlO1xuICAgIGZvciAoY29uc3QgaGV4IG9mIHBvaW50LnRvU3RyaW5nKDE2KSkgb3V0ICs9IG5pYmJsZXNbaGV4XTtcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuXG5mdW5jdGlvbiBuZXN0KGRlcHRoOiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAoZGVwdGggPj0gTUFYX0RFUFRIKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXG4gICAgICBgSlNPTiBuZXN0aW5nIGV4Y2VlZHMgJHtNQVhfREVQVEh9IGxldmVscywgdGhlIG1vc3QgRW1vamlvbiBzdXBwb3J0c2BcbiAgICApO1xuICB9XG4gIHJldHVybiBkZXB0aCArIDE7XG59XG5cbmZ1bmN0aW9uIGVuY29kZU9iamVjdChvYmplY3Q6IHsgW2tleTogc3RyaW5nXTogSnNvbiB9LCBkZXB0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgbGV0IG91dCA9ICcnO1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvYmplY3QpKSB7XG4gICAgb3V0ICs9IGtleVxuICAgICAgPyBlbmNvZGUoa2V5LCBLRVlTLCBjaGFyYWN0ZXJzLmtleXMubW9kaWZpZXJzLnVuaWNvZGUsIEtFWV9OSUJCTEVTKVxuICAgICAgOiBjaGFyYWN0ZXJzLmtleXMub3RoZXIuZW1wdHk7XG4gICAgb3V0ICs9IGVuY29kZVZhbHVlKG9iamVjdFtrZXldLCBkZXB0aCk7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gZW5jb2RlVmFsdWUodmFsdWU6IEpzb24sIGRlcHRoOiBudW1iZXIpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZVxuICAgICAgPyBlbmNvZGUoXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgVkFMVUVTLFxuICAgICAgICAgIGNoYXJhY3RlcnMudmFsdWVzLm1vZGlmaWVycy51bmljb2RlLFxuICAgICAgICAgIFZBTFVFX05JQkJMRVNcbiAgICAgICAgKVxuICAgICAgOiBjaGFyYWN0ZXJzLnZhbHVlcy5vdGhlci5lbXB0eVN0cmluZztcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIGxldCBvdXQgPSAnJztcbiAgICBmb3IgKGNvbnN0IGNoYXIgb2YgU3RyaW5nKHZhbHVlKSkgb3V0ICs9IE5VTUJFUlNbY2hhcl07XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm4gdmFsdWVcbiAgICAgID8gY2hhcmFjdGVycy52YWx1ZXMuYm9vbGVhbnMudHJ1ZVxuICAgICAgOiBjaGFyYWN0ZXJzLnZhbHVlcy5ib29sZWFucy5mYWxzZTtcbiAgfVxuICBpZiAodmFsdWUgPT09IG51bGwpIHJldHVybiBjaGFyYWN0ZXJzLnZhbHVlcy5vdGhlci5udWxsO1xuICBjb25zdCBpbm5lciA9IG5lc3QoZGVwdGgpO1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBsZXQgb3V0ID0gY2hhcmFjdGVycy5kb2N1bWVudC5hcnJheU9wZW47XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGkpIG91dCArPSBjaGFyYWN0ZXJzLmRvY3VtZW50LmFycmF5RGVsaW1pdDtcbiAgICAgIG91dCArPSBlbmNvZGVWYWx1ZSh2YWx1ZVtpXSwgaW5uZXIpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0ICsgY2hhcmFjdGVycy5kb2N1bWVudC5hcnJheUNsb3NlO1xuICB9XG4gIHJldHVybiAoXG4gICAgY2hhcmFjdGVycy5kb2N1bWVudC5pbmRlbnQgK1xuICAgIGVuY29kZU9iamVjdCh2YWx1ZSwgaW5uZXIpICtcbiAgICBjaGFyYWN0ZXJzLmRvY3VtZW50Lm91dGRlbnRcbiAgKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IEpTT04gdGV4dCBpbnRvIGFuIEVtb2ppb24gZG9jdW1lbnQuXG4gKlxuICogQGV4YW1wbGVcbiAqIGdlbmVyYXRlKCd7XCJjcmVhdGVkXCI6MjAxOX0nKTtcbiAqIC8vPT4gJ/CfmYzwn5iW8J+YrfCfmLPwn5ig8J+Ym/CfmLPwn6Sk8J+VkfCflZvwn5WQ8J+VmOKciydcbiAqL1xuZXhwb3J0IGNvbnN0IGdlbmVyYXRlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB2YWx1ZTogSnNvbiA9IEpTT04ucGFyc2UoaW5wdXQpO1xuICBjb25zdCBib2R5ID1cbiAgICB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgPyBlbmNvZGVPYmplY3QodmFsdWUsIDApXG4gICAgICA6IGVuY29kZVZhbHVlKHZhbHVlLCAwKTtcbiAgcmV0dXJuIGNoYXJhY3RlcnMuZG9jdW1lbnQuc3RhcnQgKyBib2R5ICsgY2hhcmFjdGVycy5kb2N1bWVudC5lbmQ7XG59O1xuIl19
|
package/lib/index.d.ts
ADDED
|
@@ -5,4 +5,4 @@ var parser_1 = require("./parser");
|
|
|
5
5
|
Object.defineProperty(exports, "parse", { enumerable: true, get: function () { return parser_1.parse; } });
|
|
6
6
|
var generator_1 = require("./generator");
|
|
7
7
|
Object.defineProperty(exports, "generate", { enumerable: true, get: function () { return generator_1.generate; } });
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQWlDO0FBQXhCLCtGQUFBLEtBQUssT0FBQTtBQUNkLHlDQUF1QztBQUE5QixxR0FBQSxRQUFRLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBwYXJzZSB9IGZyb20gJy4vcGFyc2VyJztcbmV4cG9ydCB7IGdlbmVyYXRlIH0gZnJvbSAnLi9nZW5lcmF0b3InO1xuIl19
|
package/lib/limits.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const MAX_DEPTH = 512;
|
package/lib/limits.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MAX_DEPTH = void 0;
|
|
4
|
+
exports.MAX_DEPTH = 512;
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGltaXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xpbWl0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLYSxRQUFBLFNBQVMsR0FBRyxHQUFHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBkZWVwZXN0IGFuIGFycmF5IG9yIG9iamVjdCBtYXkgYmUgbmVzdGVkLiBCb3RoIGBwYXJzZSgpYCBhbmRcbiAqIGBnZW5lcmF0ZSgpYCBlbmZvcmNlIGl0LCBzbyBhbnl0aGluZyBvbmUgcHJvZHVjZXMgdGhlIG90aGVyIGFjY2VwdHMuXG4gKiBJdCBrZWVwcyB2ZXJ5IGRlZXAgaW5wdXQgZnJvbSBvdmVyZmxvd2luZyB0aGUgY2FsbCBzdGFjay5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BWF9ERVBUSCA9IDUxMjtcbiJdfQ==
|
package/lib/parser.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const parse: (input: string) => string;
|