micromark-extension-sub 1.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/README.md ADDED
@@ -0,0 +1,75 @@
1
+ # micromark-extension-sub
2
+
3
+ [micromark](https://github.com/micromark/micromark) extension for inline substitution syntax (`:sub[INITIAL]{REPLACEMENT}`).
4
+
5
+ Inline substitution enables progressive disclosure — show brief content initially, reveal full content on activation. Useful for TL;DR summaries, spoilers, and interactive learning. For a complete solution, use [`remark-sub`](https://www.npmjs.com/package/remark-sub).
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ npm install micromark-extension-sub
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ ```javascript
16
+ import { micromark } from 'micromark'
17
+ import { sub } from 'micromark-extension-sub'
18
+
19
+ const html = micromark(':sub[initial]{replacement}', {
20
+ extensions: [sub()],
21
+ htmlExtensions: [{
22
+ enter: {
23
+ sub() { this.tag('<span class="sub">') }
24
+ },
25
+ exit: {
26
+ subInitialData(token) {
27
+ this.tag('<span class="initial">')
28
+ this.raw(this.sliceSerialize(token))
29
+ this.tag('</span>')
30
+ },
31
+ subReplacementData(token) {
32
+ this.tag('<span class="replacement">')
33
+ this.raw(this.sliceSerialize(token))
34
+ this.tag('</span>')
35
+ },
36
+ sub() { this.tag('</span>') }
37
+ }
38
+ }]
39
+ })
40
+
41
+ // Output: <p><span class="sub"><span class="initial">initial</span><span class="replacement">replacement</span></span></p>
42
+ ```
43
+
44
+ **Note:** This extension only tokenizes the syntax. You must provide an `htmlExtensions` handler to render output, or use [`remark-sub`](https://www.npmjs.com/package/remark-sub) for a complete solution.
45
+
46
+ ## Tokens
47
+
48
+ - `sub` — The whole construct
49
+ - `subMarker` — The `:sub[`, `]`, `{`, and `}` markers
50
+ - `subInitialData` — The INITIAL content
51
+ - `subReplacementData` — The REPLACEMENT content
52
+
53
+ ## Syntax
54
+
55
+ - Starts with `:sub[` (no whitespace allowed)
56
+ - INITIAL ends with `]` (with bracket balancing)
57
+ - REPLACEMENT is between `{` and `}` (with brace balancing)
58
+ - Cannot span multiple lines
59
+ - Must not be preceded by a word character (a-z, A-Z, 0-9, _)
60
+
61
+ ## Escaping
62
+
63
+ **In INITIAL:**
64
+ - `\]` → literal `]` (doesn't close)
65
+ - `\[` → literal `[` (no depth change)
66
+ - `\\` → literal `\`
67
+
68
+ **In REPLACEMENT:**
69
+ - `\}` → literal `}` (doesn't close)
70
+ - `\{` → literal `{` (no depth change)
71
+ - `\\` → literal `\`
72
+
73
+ ## License
74
+
75
+ MIT
@@ -0,0 +1,2 @@
1
+ export { sub, subConstruct } from './syntax.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { sub, subConstruct } from './syntax.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,13 @@
1
+ import type { Construct, Extension } from 'micromark-util-types';
2
+ declare module 'micromark-util-types' {
3
+ interface TokenTypeMap {
4
+ sub: 'sub';
5
+ subMarker: 'subMarker';
6
+ subInitialData: 'subInitialData';
7
+ subReplacementData: 'subReplacementData';
8
+ }
9
+ }
10
+ declare const subConstruct: Construct;
11
+ export declare function sub(): Extension;
12
+ export { subConstruct };
13
+ //# sourceMappingURL=syntax.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syntax.d.ts","sourceRoot":"","sources":["../src/syntax.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAET,SAAS,EAIV,MAAM,sBAAsB,CAAA;AAE7B,OAAO,QAAQ,sBAAsB,CAAC;IACpC,UAAU,YAAY;QACpB,GAAG,EAAE,KAAK,CAAA;QACV,SAAS,EAAE,WAAW,CAAA;QACtB,cAAc,EAAE,gBAAgB,CAAA;QAChC,kBAAkB,EAAE,oBAAoB,CAAA;KACzC;CACF;AAED,QAAA,MAAM,YAAY,EAAE,SAInB,CAAA;AAiMD,wBAAgB,GAAG,IAAI,SAAS,CAM/B;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
package/dist/syntax.js ADDED
@@ -0,0 +1,181 @@
1
+ const subConstruct = {
2
+ name: 'sub',
3
+ tokenize: tokenizeSub,
4
+ previous: previousSub
5
+ };
6
+ function previousSub(code) {
7
+ // :sub[ must not be preceded by an ASCII word character (a-z, A-Z, 0-9, _)
8
+ if (code === null)
9
+ return true; // start of document
10
+ if ((code >= 97 && code <= 122) || // a-z
11
+ (code >= 65 && code <= 90) || // A-Z
12
+ (code >= 48 && code <= 57) || // 0-9
13
+ code === 95 // _
14
+ ) {
15
+ return false;
16
+ }
17
+ return true;
18
+ }
19
+ function tokenizeSub(effects, ok, nok) {
20
+ let bracketDepth = 0;
21
+ let braceDepth = 0;
22
+ return start;
23
+ function start(code) {
24
+ // Must start with ':'
25
+ if (code !== 58)
26
+ return nok(code); // :
27
+ effects.enter('sub');
28
+ effects.enter('subMarker');
29
+ effects.consume(code);
30
+ return colonConsumed;
31
+ }
32
+ function colonConsumed(code) {
33
+ if (code !== 115)
34
+ return nok(code); // s
35
+ effects.consume(code);
36
+ return s;
37
+ }
38
+ function s(code) {
39
+ if (code !== 117)
40
+ return nok(code); // u
41
+ effects.consume(code);
42
+ return su;
43
+ }
44
+ function su(code) {
45
+ if (code !== 98)
46
+ return nok(code); // b
47
+ effects.consume(code);
48
+ return sub;
49
+ }
50
+ function sub(code) {
51
+ if (code !== 91)
52
+ return nok(code); // [
53
+ effects.consume(code);
54
+ effects.exit('subMarker');
55
+ effects.enter('subInitialData');
56
+ bracketDepth = 0;
57
+ return insideInitialStart;
58
+ }
59
+ function insideInitialStart(code) {
60
+ // Empty initial not allowed - must have at least one char
61
+ if (code === 93)
62
+ return nok(code); // ]
63
+ return insideInitial(code);
64
+ }
65
+ function insideInitial(code) {
66
+ // Cannot span lines
67
+ if (code === null || code === -5 || code === -4 || code === -3 || code === 10 || code === 13) {
68
+ return nok(code);
69
+ }
70
+ // Backslash - potential escape
71
+ if (code === 92) { // \
72
+ effects.consume(code);
73
+ return insideInitialAfterBackslash;
74
+ }
75
+ // Opening bracket - increase depth
76
+ if (code === 91) { // [
77
+ bracketDepth++;
78
+ effects.consume(code);
79
+ return insideInitial;
80
+ }
81
+ // Closing bracket
82
+ if (code === 93) { // ]
83
+ if (bracketDepth > 0) {
84
+ bracketDepth--;
85
+ effects.consume(code);
86
+ return insideInitial;
87
+ }
88
+ // End of initial, expect {
89
+ effects.exit('subInitialData');
90
+ effects.enter('subMarker');
91
+ effects.consume(code);
92
+ return afterInitial;
93
+ }
94
+ effects.consume(code);
95
+ return insideInitial;
96
+ }
97
+ function insideInitialAfterBackslash(code) {
98
+ // Cannot span lines
99
+ if (code === null || code === -5 || code === -4 || code === -3 || code === 10 || code === 13) {
100
+ return nok(code);
101
+ }
102
+ // Escaped chars: ] [ \ - consume without special handling
103
+ if (code === 93 || code === 91 || code === 92) {
104
+ effects.consume(code);
105
+ return insideInitial;
106
+ }
107
+ // Not a special char - go back to insideInitial to handle this char normally
108
+ return insideInitial(code);
109
+ }
110
+ function afterInitial(code) {
111
+ if (code !== 123)
112
+ return nok(code); // {
113
+ effects.consume(code);
114
+ effects.exit('subMarker');
115
+ effects.enter('subReplacementData');
116
+ braceDepth = 0;
117
+ return insideReplacementStart;
118
+ }
119
+ function insideReplacementStart(code) {
120
+ // Empty replacement not allowed - must have at least one char
121
+ if (code === 125)
122
+ return nok(code); // }
123
+ return insideReplacement(code);
124
+ }
125
+ function insideReplacement(code) {
126
+ // Cannot span lines
127
+ if (code === null || code === -5 || code === -4 || code === -3 || code === 10 || code === 13) {
128
+ return nok(code);
129
+ }
130
+ // Backslash - potential escape
131
+ if (code === 92) { // \
132
+ effects.consume(code);
133
+ return insideReplacementAfterBackslash;
134
+ }
135
+ // Opening brace - increase depth
136
+ if (code === 123) { // {
137
+ braceDepth++;
138
+ effects.consume(code);
139
+ return insideReplacement;
140
+ }
141
+ // Closing brace
142
+ if (code === 125) { // }
143
+ if (braceDepth > 0) {
144
+ braceDepth--;
145
+ effects.consume(code);
146
+ return insideReplacement;
147
+ }
148
+ // End of replacement
149
+ effects.exit('subReplacementData');
150
+ effects.enter('subMarker');
151
+ effects.consume(code);
152
+ effects.exit('subMarker');
153
+ effects.exit('sub');
154
+ return ok;
155
+ }
156
+ effects.consume(code);
157
+ return insideReplacement;
158
+ }
159
+ function insideReplacementAfterBackslash(code) {
160
+ // Cannot span lines
161
+ if (code === null || code === -5 || code === -4 || code === -3 || code === 10 || code === 13) {
162
+ return nok(code);
163
+ }
164
+ // Escaped chars: } { \ - consume without special handling
165
+ if (code === 125 || code === 123 || code === 92) {
166
+ effects.consume(code);
167
+ return insideReplacement;
168
+ }
169
+ // Not a special char - go back to insideReplacement to handle this char normally
170
+ return insideReplacement(code);
171
+ }
172
+ }
173
+ export function sub() {
174
+ return {
175
+ text: {
176
+ 58: subConstruct // :
177
+ }
178
+ };
179
+ }
180
+ export { subConstruct };
181
+ //# sourceMappingURL=syntax.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syntax.js","sourceRoot":"","sources":["../src/syntax.ts"],"names":[],"mappings":"AAkBA,MAAM,YAAY,GAAc;IAC9B,IAAI,EAAE,KAAK;IACX,QAAQ,EAAE,WAAW;IACrB,QAAQ,EAAE,WAAW;CACtB,CAAA;AAED,SAAS,WAAW,CAAwB,IAAU;IACpD,2EAA2E;IAC3E,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA,CAAC,oBAAoB;IACnD,IACE,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,MAAM;QACrC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,IAAK,MAAM;QACrC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,IAAK,MAAM;QACrC,IAAI,KAAK,EAAE,CAAqB,IAAI;MACpC,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,WAAW,CAElB,OAAgB,EAChB,EAAS,EACT,GAAU;IAEV,IAAI,YAAY,GAAG,CAAC,CAAA;IACpB,IAAI,UAAU,GAAG,CAAC,CAAA;IAElB,OAAO,KAAK,CAAA;IAEZ,SAAS,KAAK,CAAC,IAAU;QACvB,sBAAsB;QACtB,IAAI,IAAI,KAAK,EAAE;YAAE,OAAO,GAAG,CAAC,IAAI,CAAC,CAAA,CAAC,IAAI;QACtC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACpB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QAC1B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACrB,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,SAAS,aAAa,CAAC,IAAU;QAC/B,IAAI,IAAI,KAAK,GAAG;YAAE,OAAO,GAAG,CAAC,IAAI,CAAC,CAAA,CAAC,IAAI;QACvC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACrB,OAAO,CAAC,CAAA;IACV,CAAC;IAED,SAAS,CAAC,CAAC,IAAU;QACnB,IAAI,IAAI,KAAK,GAAG;YAAE,OAAO,GAAG,CAAC,IAAI,CAAC,CAAA,CAAC,IAAI;QACvC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACrB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,SAAS,EAAE,CAAC,IAAU;QACpB,IAAI,IAAI,KAAK,EAAE;YAAE,OAAO,GAAG,CAAC,IAAI,CAAC,CAAA,CAAC,IAAI;QACtC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACrB,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,SAAS,GAAG,CAAC,IAAU;QACrB,IAAI,IAAI,KAAK,EAAE;YAAE,OAAO,GAAG,CAAC,IAAI,CAAC,CAAA,CAAC,IAAI;QACtC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACrB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACzB,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;QAC/B,YAAY,GAAG,CAAC,CAAA;QAChB,OAAO,kBAAkB,CAAA;IAC3B,CAAC;IAED,SAAS,kBAAkB,CAAC,IAAU;QACpC,0DAA0D;QAC1D,IAAI,IAAI,KAAK,EAAE;YAAE,OAAO,GAAG,CAAC,IAAI,CAAC,CAAA,CAAC,IAAI;QACtC,OAAO,aAAa,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;IAED,SAAS,aAAa,CAAC,IAAU;QAC/B,oBAAoB;QACpB,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAC7F,OAAO,GAAG,CAAC,IAAI,CAAC,CAAA;QAClB,CAAC;QAED,+BAA+B;QAC/B,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI;YACrB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YACrB,OAAO,2BAA2B,CAAA;QACpC,CAAC;QAED,mCAAmC;QACnC,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI;YACrB,YAAY,EAAE,CAAA;YACd,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YACrB,OAAO,aAAa,CAAA;QACtB,CAAC;QAED,kBAAkB;QAClB,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI;YACrB,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;gBACrB,YAAY,EAAE,CAAA;gBACd,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBACrB,OAAO,aAAa,CAAA;YACtB,CAAC;YACD,2BAA2B;YAC3B,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;YAC9B,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;YAC1B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YACrB,OAAO,YAAY,CAAA;QACrB,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACrB,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,SAAS,2BAA2B,CAAC,IAAU;QAC7C,oBAAoB;QACpB,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAC7F,OAAO,GAAG,CAAC,IAAI,CAAC,CAAA;QAClB,CAAC;QAED,0DAA0D;QAC1D,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAC9C,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YACrB,OAAO,aAAa,CAAA;QACtB,CAAC;QAED,6EAA6E;QAC7E,OAAO,aAAa,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;IAED,SAAS,YAAY,CAAC,IAAU;QAC9B,IAAI,IAAI,KAAK,GAAG;YAAE,OAAO,GAAG,CAAC,IAAI,CAAC,CAAA,CAAC,IAAI;QACvC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACrB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACzB,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;QACnC,UAAU,GAAG,CAAC,CAAA;QACd,OAAO,sBAAsB,CAAA;IAC/B,CAAC;IAED,SAAS,sBAAsB,CAAC,IAAU;QACxC,8DAA8D;QAC9D,IAAI,IAAI,KAAK,GAAG;YAAE,OAAO,GAAG,CAAC,IAAI,CAAC,CAAA,CAAC,IAAI;QACvC,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAED,SAAS,iBAAiB,CAAC,IAAU;QACnC,oBAAoB;QACpB,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAC7F,OAAO,GAAG,CAAC,IAAI,CAAC,CAAA;QAClB,CAAC;QAED,+BAA+B;QAC/B,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI;YACrB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YACrB,OAAO,+BAA+B,CAAA;QACxC,CAAC;QAED,iCAAiC;QACjC,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC,IAAI;YACtB,UAAU,EAAE,CAAA;YACZ,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YACrB,OAAO,iBAAiB,CAAA;QAC1B,CAAC;QAED,gBAAgB;QAChB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC,IAAI;YACtB,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACnB,UAAU,EAAE,CAAA;gBACZ,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBACrB,OAAO,iBAAiB,CAAA;YAC1B,CAAC;YACD,qBAAqB;YACrB,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;YAClC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;YAC1B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YACrB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YACzB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACnB,OAAO,EAAE,CAAA;QACX,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACrB,OAAO,iBAAiB,CAAA;IAC1B,CAAC;IAED,SAAS,+BAA+B,CAAC,IAAU;QACjD,oBAAoB;QACpB,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAC7F,OAAO,GAAG,CAAC,IAAI,CAAC,CAAA;QAClB,CAAC;QAED,0DAA0D;QAC1D,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAChD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YACrB,OAAO,iBAAiB,CAAA;QAC1B,CAAC;QAED,iFAAiF;QACjF,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,GAAG;IACjB,OAAO;QACL,IAAI,EAAE;YACJ,EAAE,EAAE,YAAY,CAAC,IAAI;SACtB;KACF,CAAA;AACH,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
package/package.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "micromark-extension-sub",
3
+ "version": "1.0.0",
4
+ "description": "Micromark extension for inline substitution syntax (:sub[...]{...})",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": ["dist"],
15
+ "scripts": {
16
+ "build": "tsc",
17
+ "test": "vitest run",
18
+ "test:watch": "vitest",
19
+ "clean": "rm -rf dist"
20
+ },
21
+ "dependencies": {
22
+ "micromark-util-symbol": "^2.0.0",
23
+ "micromark-util-types": "^2.0.0"
24
+ },
25
+ "devDependencies": {
26
+ "micromark": "^4.0.0",
27
+ "typescript": "^5.7.0",
28
+ "vitest": "^4.0.16"
29
+ },
30
+ "keywords": ["micromark", "substitution", "inline", "toggle"],
31
+ "license": "MIT",
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "https://github.com/weavepage/remark-sub.git",
35
+ "directory": "packages/micromark-extension-sub"
36
+ }
37
+ }