emj 0.0.10 → 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 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 with clocks, such as `🕛`, `🕐`, and `🕑` (`0`, `1`,
62
- `2`). Decimal points are encoded with `⛳️` and negative numbers are prefixed
63
- with `⏰` (because alarms are annoying).
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 is built with the excellent
103
- [Moo lexer](https://www.npmjs.com/package/moo) and
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;
@@ -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
@@ -0,0 +1,2 @@
1
+ export { parse } from './parser';
2
+ export { generate } from './generator';
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQWlDO0FBQXhCLCtGQUFBLEtBQUssT0FBQTtBQUNkLHlDQUF1QztBQUE5QixxR0FBQSxRQUFRLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBwYXJzZSB9IGZyb20gJy4vcGFyc2VyJztcbmV4cG9ydCB7IGdlbmVyYXRlIH0gZnJvbSAnLi9nZW5lcmF0b3InO1xuIl19
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQWlDO0FBQXhCLCtGQUFBLEtBQUssT0FBQTtBQUNkLHlDQUF1QztBQUE5QixxR0FBQSxRQUFRLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBwYXJzZSB9IGZyb20gJy4vcGFyc2VyJztcbmV4cG9ydCB7IGdlbmVyYXRlIH0gZnJvbSAnLi9nZW5lcmF0b3InO1xuIl19
@@ -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==
@@ -0,0 +1 @@
1
+ export declare const parse: (input: string) => string;