@moda-editor/core 0.2.0 → 0.2.2
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/dist/collab.d.ts +7 -0
- package/dist/collab.d.ts.map +1 -1
- package/dist/collab.js +29 -8
- package/dist/collab.js.map +1 -1
- package/dist/commands.d.ts +35 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +144 -36
- package/dist/commands.js.map +1 -1
- package/dist/editor/editor.d.ts +6 -0
- package/dist/editor/editor.d.ts.map +1 -1
- package/dist/editor/editor.js +14 -4
- package/dist/editor/editor.js.map +1 -1
- package/dist/features/ace.d.ts.map +1 -1
- package/dist/features/ace.js +6 -0
- package/dist/features/ace.js.map +1 -1
- package/dist/features/alignment.d.ts.map +1 -1
- package/dist/features/alignment.js +6 -0
- package/dist/features/alignment.js.map +1 -1
- package/dist/features/block-dnd.d.ts.map +1 -1
- package/dist/features/block-dnd.js +6 -1
- package/dist/features/block-dnd.js.map +1 -1
- package/dist/features/blockquote.d.ts.map +1 -1
- package/dist/features/blockquote.js +40 -11
- package/dist/features/blockquote.js.map +1 -1
- package/dist/features/code-block.d.ts.map +1 -1
- package/dist/features/code-block.js +21 -9
- package/dist/features/code-block.js.map +1 -1
- package/dist/features/code-context.d.ts.map +1 -1
- package/dist/features/code-context.js +3 -1
- package/dist/features/code-context.js.map +1 -1
- package/dist/features/code-edit.d.ts.map +1 -1
- package/dist/features/code-edit.js +25 -4
- package/dist/features/code-edit.js.map +1 -1
- package/dist/features/code-format.d.ts.map +1 -1
- package/dist/features/code-format.js +131 -42
- package/dist/features/code-format.js.map +1 -1
- package/dist/features/doc.d.ts.map +1 -1
- package/dist/features/doc.js +36 -13
- package/dist/features/doc.js.map +1 -1
- package/dist/features/heading.d.ts.map +1 -1
- package/dist/features/heading.js +10 -3
- package/dist/features/heading.js.map +1 -1
- package/dist/features/horizontal-rule.d.ts.map +1 -1
- package/dist/features/horizontal-rule.js +34 -8
- package/dist/features/horizontal-rule.js.map +1 -1
- package/dist/features/image.d.ts.map +1 -1
- package/dist/features/image.js +25 -6
- package/dist/features/image.js.map +1 -1
- package/dist/features/inline-style.d.ts.map +1 -1
- package/dist/features/inline-style.js +48 -22
- package/dist/features/inline-style.js.map +1 -1
- package/dist/features/link.d.ts.map +1 -1
- package/dist/features/link.js +43 -17
- package/dist/features/link.js.map +1 -1
- package/dist/features/lists.d.ts.map +1 -1
- package/dist/features/lists.js +31 -14
- package/dist/features/lists.js.map +1 -1
- package/dist/features/markdown.d.ts.map +1 -1
- package/dist/features/markdown.js +7 -1
- package/dist/features/markdown.js.map +1 -1
- package/dist/features/marks.d.ts.map +1 -1
- package/dist/features/marks.js +31 -13
- package/dist/features/marks.js.map +1 -1
- package/dist/features/mention.d.ts.map +1 -1
- package/dist/features/mention.js +11 -0
- package/dist/features/mention.js.map +1 -1
- package/dist/features/script.d.ts.map +1 -1
- package/dist/features/script.js +5 -2
- package/dist/features/script.js.map +1 -1
- package/dist/features/search.d.ts.map +1 -1
- package/dist/features/search.js +62 -15
- package/dist/features/search.js.map +1 -1
- package/dist/features/table.d.ts.map +1 -1
- package/dist/features/table.js +74 -17
- package/dist/features/table.js.map +1 -1
- package/dist/features/task-list.d.ts.map +1 -1
- package/dist/features/task-list.js +23 -3
- package/dist/features/task-list.js.map +1 -1
- package/dist/history.d.ts.map +1 -1
- package/dist/history.js +64 -7
- package/dist/history.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/parse/html.d.ts.map +1 -1
- package/dist/parse/html.js +91 -16
- package/dist/parse/html.js.map +1 -1
- package/dist/parse/sanitize.d.ts +6 -0
- package/dist/parse/sanitize.d.ts.map +1 -1
- package/dist/parse/sanitize.js +39 -3
- package/dist/parse/sanitize.js.map +1 -1
- package/dist/presets/markdown-parse.d.ts.map +1 -1
- package/dist/presets/markdown-parse.js +155 -33
- package/dist/presets/markdown-parse.js.map +1 -1
- package/dist/presets/markdown.d.ts.map +1 -1
- package/dist/presets/markdown.js +59 -13
- package/dist/presets/markdown.js.map +1 -1
- package/dist/state/apply.d.ts +1 -1
- package/dist/state/apply.d.ts.map +1 -1
- package/dist/state/apply.js +34 -8
- package/dist/state/apply.js.map +1 -1
- package/dist/state/delete-ops.d.ts.map +1 -1
- package/dist/state/delete-ops.js +13 -21
- package/dist/state/delete-ops.js.map +1 -1
- package/dist/state/insert-ops.d.ts +5 -2
- package/dist/state/insert-ops.d.ts.map +1 -1
- package/dist/state/insert-ops.js +7 -5
- package/dist/state/insert-ops.js.map +1 -1
- package/dist/state/list-ops.d.ts.map +1 -1
- package/dist/state/list-ops.js +74 -10
- package/dist/state/list-ops.js.map +1 -1
- package/dist/state/navigate.d.ts.map +1 -1
- package/dist/state/navigate.js +13 -4
- package/dist/state/navigate.js.map +1 -1
- package/dist/state/resolve-insert.d.ts.map +1 -1
- package/dist/state/resolve-insert.js +42 -4
- package/dist/state/resolve-insert.js.map +1 -1
- package/dist/state/selection.d.ts +9 -0
- package/dist/state/selection.d.ts.map +1 -1
- package/dist/state/selection.js +25 -1
- package/dist/state/selection.js.map +1 -1
- package/dist/state/slice-ops.d.ts +3 -0
- package/dist/state/slice-ops.d.ts.map +1 -1
- package/dist/state/slice-ops.js +44 -11
- package/dist/state/slice-ops.js.map +1 -1
- package/dist/state/state.d.ts.map +1 -1
- package/dist/state/state.js +27 -8
- package/dist/state/state.js.map +1 -1
- package/dist/state/transaction.d.ts +11 -3
- package/dist/state/transaction.d.ts.map +1 -1
- package/dist/state/transaction.js +37 -4
- package/dist/state/transaction.js.map +1 -1
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +5 -1
- package/dist/theme.js.map +1 -1
- package/dist/view/decoration.d.ts.map +1 -1
- package/dist/view/decoration.js +39 -35
- package/dist/view/decoration.js.map +1 -1
- package/dist/view/hook-ctx.d.ts.map +1 -1
- package/dist/view/hook-ctx.js +30 -9
- package/dist/view/hook-ctx.js.map +1 -1
- package/dist/view/ime.d.ts +6 -0
- package/dist/view/ime.d.ts.map +1 -1
- package/dist/view/ime.js +9 -3
- package/dist/view/ime.js.map +1 -1
- package/dist/view/input.d.ts.map +1 -1
- package/dist/view/input.js +53 -9
- package/dist/view/input.js.map +1 -1
- package/dist/view/node-selection.d.ts.map +1 -1
- package/dist/view/node-selection.js +6 -1
- package/dist/view/node-selection.js.map +1 -1
- package/dist/view/render.d.ts.map +1 -1
- package/dist/view/render.js +37 -4
- package/dist/view/render.js.map +1 -1
- package/package.json +1 -1
package/dist/parse/html.js
CHANGED
|
@@ -124,12 +124,18 @@ class Parser {
|
|
|
124
124
|
isInline(type) {
|
|
125
125
|
return type === "text" || this.schema.isInline(type);
|
|
126
126
|
}
|
|
127
|
-
/**
|
|
128
|
-
|
|
127
|
+
/**
|
|
128
|
+
* 인라인 컨텍스트 — 자식들을 인라인 노드 목록으로 걷는다.
|
|
129
|
+
* raw=true(코드 블록 안)이면 공백을 정규화하지 않는다 — <pre>의
|
|
130
|
+
* 개행·들여쓰기는 의미 있는 내용이다 (PM의 preserveWhitespace 관례)
|
|
131
|
+
*/
|
|
132
|
+
walkInline(el, marks, raw = false) {
|
|
129
133
|
const out = [];
|
|
130
134
|
for (const child of Array.from(el.childNodes)) {
|
|
131
135
|
if (child.nodeType === 3) {
|
|
132
|
-
const text =
|
|
136
|
+
const text = raw
|
|
137
|
+
? (child.textContent ?? "")
|
|
138
|
+
: normWS(child.textContent ?? "");
|
|
133
139
|
if (!text)
|
|
134
140
|
continue;
|
|
135
141
|
out.push({
|
|
@@ -142,32 +148,81 @@ class Parser {
|
|
|
142
148
|
if (child.nodeType !== 1)
|
|
143
149
|
continue;
|
|
144
150
|
const cel = child;
|
|
151
|
+
if (raw) {
|
|
152
|
+
// 코드(raw) 컨텍스트는 순수 텍스트다 — 마크뿐 아니라 인라인
|
|
153
|
+
// 노드(hardBreak·멘션 등)도 만들면 안 된다. <br>만 줄바꿈으로
|
|
154
|
+
// 살리고 나머지 요소는 textContent로 평탄화한다
|
|
155
|
+
const text = cel.tagName === "BR" ? "\n" : (cel.textContent ?? "");
|
|
156
|
+
if (text)
|
|
157
|
+
out.push({ type: "text", text });
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
// 코드(raw) 컨텍스트는 순수 텍스트다 — <pre><b>x</b></pre>에서
|
|
161
|
+
// 볼드가 코드 안에 마크로 남으면 raw-text 계약이 깨진다.
|
|
162
|
+
// 마크 태그는 마크 없이 투명 언랩한다
|
|
145
163
|
const mark = this.matchMark(cel);
|
|
146
164
|
if (mark) {
|
|
147
|
-
out.push(...this.walkInline(cel, [...marks, mark]));
|
|
165
|
+
out.push(...this.walkInline(cel, [...marks, mark], raw));
|
|
148
166
|
continue;
|
|
149
167
|
}
|
|
150
168
|
const nodeMatch = this.matchNode(cel);
|
|
151
169
|
if (nodeMatch && this.isInline(nodeMatch.type)) {
|
|
170
|
+
const spec = this.schema.nodeSpec(nodeMatch.type);
|
|
171
|
+
// 인라인 atom(mention 등)은 content를 갖지 않는다 — walkInline의
|
|
172
|
+
// 빈 배열을 심으면 atom이 isContainer로 오판되고, content 없는
|
|
173
|
+
// Yjs 변환 결과와도 어긋나 협업 문서 비교가 깨진다
|
|
152
174
|
out.push(this.schema.node(nodeMatch.type, {
|
|
153
175
|
attrs: nodeMatch.attrs,
|
|
154
|
-
|
|
176
|
+
...(spec?.atom
|
|
177
|
+
? {}
|
|
178
|
+
: { content: this.walkInline(cel, marks, raw) }),
|
|
155
179
|
}));
|
|
156
180
|
continue;
|
|
157
181
|
}
|
|
158
182
|
// 미매칭/블록 매칭 — 인라인 컨텍스트에서는 투명 언랩
|
|
159
|
-
out.push(...this.walkInline(cel, marks));
|
|
183
|
+
out.push(...this.walkInline(cel, marks, raw));
|
|
160
184
|
}
|
|
161
185
|
return out;
|
|
162
186
|
}
|
|
187
|
+
/**
|
|
188
|
+
* 부모 content 표현식이 type을 받는가 — 그룹명은 자식 타입의
|
|
189
|
+
* group으로 해석한다 ("cell+"는 tableCell/tableHeader를 받는다).
|
|
190
|
+
* 표현식이 없으면(content 미선언) 검사하지 않는다 — 선언된 스키마
|
|
191
|
+
* 만 좁힌다
|
|
192
|
+
*/
|
|
193
|
+
allowsChild(expr, type) {
|
|
194
|
+
if (!expr)
|
|
195
|
+
return true;
|
|
196
|
+
for (const token of expr.replace(/[+*?()]/g, " ").split(/[|\s]+/)) {
|
|
197
|
+
if (!token)
|
|
198
|
+
continue;
|
|
199
|
+
if (token === type || this.schema.groups(type).includes(token)) {
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
202
|
+
// 타입 플래그 소속 — "listItem+"는 listItem 플래그를 가진
|
|
203
|
+
// 노드(taskItem 등)를 모두 받는다. taskItem은 group이 없어
|
|
204
|
+
// 이름 매칭만으로는 bulletList 안에 못 들어간다
|
|
205
|
+
const ts = this.schema.nodeSpec(token);
|
|
206
|
+
const cs = this.schema.nodeSpec(type);
|
|
207
|
+
if (ts?.listItem && cs?.listItem)
|
|
208
|
+
return true;
|
|
209
|
+
}
|
|
210
|
+
return false;
|
|
211
|
+
}
|
|
163
212
|
/** 블록 컨텍스트 — 인라인 런은 문단으로 감싼다 */
|
|
164
|
-
walkBlocks(el, marks = []) {
|
|
213
|
+
walkBlocks(el, marks = [], expr = "") {
|
|
165
214
|
const out = [];
|
|
166
215
|
let run = [];
|
|
167
216
|
const flush = () => {
|
|
168
217
|
const content = trimWS(run);
|
|
169
|
-
if (content.length)
|
|
170
|
-
|
|
218
|
+
if (content.length) {
|
|
219
|
+
const w = this.wrapTextblock(content);
|
|
220
|
+
// 런을 감싼 텍스트블록이 부모 표현식을 위반하면 내보내지
|
|
221
|
+
// 않는다 — <td>text</td> 같은 불량 자식이 tr 안에 paragraph를
|
|
222
|
+
// 심어 스키마를 깨는 것을 막는다
|
|
223
|
+
if (this.allowsChild(expr, w.type))
|
|
224
|
+
out.push(w);
|
|
225
|
+
}
|
|
171
226
|
run = [];
|
|
172
227
|
};
|
|
173
228
|
for (const child of Array.from(el.childNodes)) {
|
|
@@ -187,10 +242,22 @@ class Parser {
|
|
|
187
242
|
const cel = child;
|
|
188
243
|
const nodeMatch = this.matchNode(cel);
|
|
189
244
|
if (nodeMatch && !this.isInline(nodeMatch.type)) {
|
|
245
|
+
if (!this.allowsChild(expr, nodeMatch.type)) {
|
|
246
|
+
// 부모가 받지 않는 블록 매치(td in doc, p in tr) — 노드를
|
|
247
|
+
// 만들면 스키마 위반이니 blockish로 내려 자식만 남긴다
|
|
248
|
+
flush();
|
|
249
|
+
out.push(...this.walkBlocks(cel, marks, expr));
|
|
250
|
+
continue;
|
|
251
|
+
}
|
|
190
252
|
flush();
|
|
253
|
+
const spec = this.schema.nodeSpec(nodeMatch.type);
|
|
254
|
+
// 블록 atom(hr/image 등)에도 content를 심지 않는다 — 인라인과
|
|
255
|
+
// 같은 이유로, atom의 빈 content는 컨테이너 오판을 만든다
|
|
191
256
|
out.push(this.schema.node(nodeMatch.type, {
|
|
192
257
|
attrs: nodeMatch.attrs,
|
|
193
|
-
|
|
258
|
+
...(spec?.atom
|
|
259
|
+
? {}
|
|
260
|
+
: { content: this.nodeContent(cel, nodeMatch.type, marks) }),
|
|
194
261
|
}));
|
|
195
262
|
continue;
|
|
196
263
|
}
|
|
@@ -201,16 +268,17 @@ class Parser {
|
|
|
201
268
|
}
|
|
202
269
|
if (nodeMatch) {
|
|
203
270
|
// 인라인 노드 매칭
|
|
271
|
+
const spec = this.schema.nodeSpec(nodeMatch.type);
|
|
204
272
|
run.push(this.schema.node(nodeMatch.type, {
|
|
205
273
|
attrs: nodeMatch.attrs,
|
|
206
|
-
content: this.walkInline(cel, marks),
|
|
274
|
+
...(spec?.atom ? {} : { content: this.walkInline(cel, marks) }),
|
|
207
275
|
}));
|
|
208
276
|
continue;
|
|
209
277
|
}
|
|
210
278
|
// 미매칭 — blockish면 경계, 아니면 투명 언랩
|
|
211
279
|
if (BLOCKISH.has(cel.tagName.toLowerCase())) {
|
|
212
280
|
flush();
|
|
213
|
-
out.push(...this.walkBlocks(cel, marks));
|
|
281
|
+
out.push(...this.walkBlocks(cel, marks, expr));
|
|
214
282
|
}
|
|
215
283
|
else {
|
|
216
284
|
run.push(...this.walkInline(cel, marks));
|
|
@@ -224,9 +292,13 @@ class Parser {
|
|
|
224
292
|
const spec = this.schema.nodeSpec(type);
|
|
225
293
|
const expr = spec?.content ?? "";
|
|
226
294
|
const inline = expr.includes("inline") || this.isInlineOnly(expr);
|
|
227
|
-
if (inline)
|
|
228
|
-
|
|
229
|
-
|
|
295
|
+
if (inline) {
|
|
296
|
+
// code 노드는 순수 텍스트만 담는다 — 바깥 마크 컨텍스트(<b><pre>
|
|
297
|
+
// 같은 래퍼)도 끊고 안쪽 마크 매칭도 끈다 (walkInline의 raw 플래그)
|
|
298
|
+
const raw = spec?.code === true;
|
|
299
|
+
return trimWS(this.walkInline(el, raw ? [] : marks, raw));
|
|
300
|
+
}
|
|
301
|
+
return this.walkBlocks(el, marks, expr);
|
|
230
302
|
}
|
|
231
303
|
isInlineOnly(expr) {
|
|
232
304
|
// "paragraph"/"heading" 같은 노드명이 아니라 그룹만 있으면 inline 아님
|
|
@@ -274,6 +346,9 @@ function trimWS(nodes) {
|
|
|
274
346
|
*/
|
|
275
347
|
export function parseHTML(html, schema, doc) {
|
|
276
348
|
const root = sanitizeHTML(html, doc);
|
|
277
|
-
|
|
349
|
+
// 최상위도 topNode의 content 표현식으로 검증한다 — 스키마 밖
|
|
350
|
+
// 블록(예: block이 아닌 그룹의 노드)이 루트에 들어가지 않게
|
|
351
|
+
const topExpr = schema.nodeSpec(schema.topNodeType)?.content ?? "";
|
|
352
|
+
return new Parser(schema).walkBlocks(root, [], topExpr);
|
|
278
353
|
}
|
|
279
354
|
//# sourceMappingURL=html.js.map
|
package/dist/parse/html.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/parse/html.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/parse/html.ts"],"names":[],"mappings":"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"}
|
package/dist/parse/sanitize.d.ts
CHANGED
|
@@ -12,6 +12,12 @@
|
|
|
12
12
|
* 스키마 밖 태그의 생존 여부는 sanitizer가 아니라 파서가 결정한다
|
|
13
13
|
* (parse/html.ts의 unwrap/drop) — 이 함수는 "위험한가"만 본다.
|
|
14
14
|
*/
|
|
15
|
+
/**
|
|
16
|
+
* href/src에 허용되는 URL인가 — javascript:/vbscript:/data: 스킴 차단.
|
|
17
|
+
* sanitizer뿐 아니라 setLink 같은 커맨드 경로도 이 검사를 공유한다 —
|
|
18
|
+
* 커맨드로 만든 링크는 파서를 거치지 않아 여기서 막지 않으면 XSS다.
|
|
19
|
+
*/
|
|
20
|
+
export declare function isSafeUrl(value: string): boolean;
|
|
15
21
|
/**
|
|
16
22
|
* HTML 문자열을 파싱해 정제된 컨테이너 div를 반환한다.
|
|
17
23
|
* 브라우저/happy-dom의 DOMParser를 쓰고, 없으면 주입된 Document 사용.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/parse/sanitize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/parse/sanitize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAoEH;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAUhD;AAuDD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,OAAO,CAalE"}
|
package/dist/parse/sanitize.js
CHANGED
|
@@ -36,12 +36,18 @@ const DROP_TAGS = new Set([
|
|
|
36
36
|
"math",
|
|
37
37
|
"xml",
|
|
38
38
|
]);
|
|
39
|
-
/** style 속성에서 생존시키는 선언 —
|
|
39
|
+
/** style 속성에서 생존시키는 선언 — 마크·블록 attr 매칭에 필요한 것만 */
|
|
40
40
|
const KEEP_STYLES = new Set([
|
|
41
41
|
"font-weight",
|
|
42
42
|
"font-style",
|
|
43
43
|
"text-decoration",
|
|
44
44
|
"text-decoration-line",
|
|
45
|
+
// textColor/fontSize/highlight 마크와 블록 align attr의 왕복 경로 —
|
|
46
|
+
// 전부 불활성 스타일이라 url()·expression() 같은 실행 경로가 없다
|
|
47
|
+
"color",
|
|
48
|
+
"background-color",
|
|
49
|
+
"font-size",
|
|
50
|
+
"text-align",
|
|
45
51
|
]);
|
|
46
52
|
/** 허용 속성 — 나머지는 전부 벗긴다 */
|
|
47
53
|
const KEEP_ATTRS = new Set([
|
|
@@ -53,9 +59,26 @@ const KEEP_ATTRS = new Set([
|
|
|
53
59
|
// img/td의 크기 속성 — 값이 숫자라 실행 위험이 없다
|
|
54
60
|
"width",
|
|
55
61
|
"height",
|
|
62
|
+
// 에디터 자체 직렬화물의 왕복 속성 — 데이터 전달이라 실행 위험 없음
|
|
63
|
+
"start", // orderedList start
|
|
64
|
+
"data-checked", // taskItem
|
|
65
|
+
"data-language", // codeBlock
|
|
66
|
+
"data-id", // mention
|
|
67
|
+
"data-label",
|
|
56
68
|
]);
|
|
69
|
+
/**
|
|
70
|
+
* class는 MS Office 가비지(Mso*)가 널리 퍼지는 채널이라 전량 제거가
|
|
71
|
+
* 원칙 — 단 에디터 자체 마커(me-*)와 하이라이트 언어 표기
|
|
72
|
+
* (language-js)만 토큰 단위로 살려 왕복을 보장한다.
|
|
73
|
+
*/
|
|
74
|
+
const KEEP_CLASS = /^(?:me-|language-)[\w-]*$/;
|
|
57
75
|
const URL_ATTRS = new Set(["href", "src"]);
|
|
58
|
-
|
|
76
|
+
/**
|
|
77
|
+
* href/src에 허용되는 URL인가 — javascript:/vbscript:/data: 스킴 차단.
|
|
78
|
+
* sanitizer뿐 아니라 setLink 같은 커맨드 경로도 이 검사를 공유한다 —
|
|
79
|
+
* 커맨드로 만든 링크는 파서를 거치지 않아 여기서 막지 않으면 XSS다.
|
|
80
|
+
*/
|
|
81
|
+
export function isSafeUrl(value) {
|
|
59
82
|
const v = value
|
|
60
83
|
.trim()
|
|
61
84
|
.toLowerCase()
|
|
@@ -98,8 +121,21 @@ function sanitizeElement(el) {
|
|
|
98
121
|
el.removeAttribute("style");
|
|
99
122
|
continue;
|
|
100
123
|
}
|
|
124
|
+
if (name === "class") {
|
|
125
|
+
// me-*/language-* 토큰만 생존 — 나머지(Mso* 등)는 걸러낸다
|
|
126
|
+
const kept = attr.value.split(/\s+/).filter((c) => KEEP_CLASS.test(c));
|
|
127
|
+
if (kept.length)
|
|
128
|
+
el.setAttribute("class", kept.join(" "));
|
|
129
|
+
else
|
|
130
|
+
el.removeAttribute("class");
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
101
133
|
if (KEEP_ATTRS.has(name)) {
|
|
102
|
-
|
|
134
|
+
// src의 data:image/*는 예외 — <img>는 data: URL에서 스크립트를
|
|
135
|
+
// 실행하지 않고, fileToDataUrl 업로더의 붙여넣기 왕복 경로다.
|
|
136
|
+
// href에는 예외 없음 — 링크 클릭은 스킴을 그대로 탄다
|
|
137
|
+
const safeImg = name === "src" && /^data:image\//i.test(attr.value.trim());
|
|
138
|
+
if (URL_ATTRS.has(name) && !isSafeUrl(attr.value) && !safeImg) {
|
|
103
139
|
el.removeAttribute(attr.name);
|
|
104
140
|
}
|
|
105
141
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../src/parse/sanitize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACxB,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,MAAM;IACN,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,UAAU;IACV,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,UAAU;IACV,UAAU;IACV,KAAK;IACL,MAAM;IACN,KAAK;CACN,CAAC,CAAC;AAEH,
|
|
1
|
+
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../src/parse/sanitize.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-parse.d.ts","sourceRoot":"","sources":["../../src/presets/markdown-parse.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAQ,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"markdown-parse.d.ts","sourceRoot":"","sources":["../../src/presets/markdown-parse.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAQ,MAAM,kBAAkB,CAAC;AAsiBlE;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,EAAE,CAEtD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAGnD"}
|