@diplodoc/transform 4.35.0-beta6 → 4.36.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/dist/css/_yfm-only.css +7 -7
- package/dist/css/_yfm-only.css.map +3 -3
- package/dist/css/_yfm-only.min.css +1 -1
- package/dist/css/_yfm-only.min.css.map +3 -3
- package/dist/css/base.css.map +2 -2
- package/dist/css/base.min.css.map +2 -2
- package/dist/css/print.css.map +2 -2
- package/dist/css/yfm.css +7 -7
- package/dist/css/yfm.css.map +3 -3
- package/dist/css/yfm.min.css +1 -1
- package/dist/css/yfm.min.css.map +3 -3
- package/dist/js/base.js +2 -2
- package/dist/js/base.js.map +1 -1
- package/dist/js/base.min.js +1 -1
- package/dist/js/base.min.js.map +2 -2
- package/dist/js/yfm.js +5 -5
- package/dist/js/yfm.js.map +1 -1
- package/dist/js/yfm.min.js +1 -1
- package/dist/js/yfm.min.js.map +2 -2
- package/lib/md.d.ts +1 -0
- package/lib/md.js +3 -1
- package/lib/md.js.map +1 -1
- package/lib/plugins/anchors/index.d.ts +1 -0
- package/lib/plugins/anchors/index.js +5 -3
- package/lib/plugins/anchors/index.js.map +1 -1
- package/lib/plugins/images/index.js +1 -1
- package/lib/plugins/images/index.js.map +1 -1
- package/lib/plugins/imsize/const.d.ts +2 -1
- package/lib/plugins/imsize/const.js +1 -0
- package/lib/plugins/imsize/const.js.map +1 -1
- package/lib/plugins/imsize/index.d.ts +3 -2
- package/lib/plugins/imsize/index.js +2 -2
- package/lib/plugins/imsize/index.js.map +1 -1
- package/lib/plugins/imsize/plugin.d.ts +4 -1
- package/lib/plugins/imsize/plugin.js +26 -1
- package/lib/plugins/imsize/plugin.js.map +1 -1
- package/lib/plugins/notes/index.js +5 -10
- package/lib/plugins/notes/index.js.map +1 -1
- package/lib/plugins/video/const.d.ts +0 -5
- package/lib/plugins/video/const.js.map +1 -1
- package/lib/plugins/video/index.js +8 -3
- package/lib/plugins/video/index.js.map +1 -1
- package/lib/plugins/video/parsers.js +8 -8
- package/lib/plugins/video/parsers.js.map +1 -1
- package/lib/plugins/video/types.d.ts +5 -0
- package/lib/sanitize.d.ts +2 -4
- package/lib/sanitize.js +4 -1
- package/lib/sanitize.js.map +1 -1
- package/lib/typings.d.ts +4 -0
- package/package.json +1 -1
- package/src/scss/_note.scss +2 -3
- package/src/transform/md.ts +3 -1
- package/src/transform/plugins/anchors/index.ts +13 -4
- package/src/transform/plugins/images/index.ts +1 -1
- package/src/transform/plugins/imsize/const.ts +1 -0
- package/src/transform/plugins/imsize/index.ts +4 -4
- package/src/transform/plugins/imsize/plugin.ts +32 -1
- package/src/transform/plugins/notes/index.ts +8 -6
- package/src/transform/plugins/video/const.ts +0 -7
- package/src/transform/plugins/video/index.ts +12 -7
- package/src/transform/plugins/video/parsers.ts +10 -9
- package/src/transform/plugins/video/types.ts +7 -0
- package/src/transform/sanitize.ts +14 -3
- package/src/transform/typings.ts +3 -0
- package/lib/plugins/csp.d.ts +0 -6
- package/lib/plugins/csp.js +0 -26
- package/lib/plugins/csp.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transform/plugins/video/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transform/plugins/video/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,7 +51,7 @@ function rutubeParser(url) {
|
|
|
51
51
|
}
|
|
52
52
|
exports.rutubeParser = rutubeParser;
|
|
53
53
|
const urlParser = (url) => url;
|
|
54
|
-
const supportedServices =
|
|
54
|
+
const supportedServices = {
|
|
55
55
|
osf: {
|
|
56
56
|
extract: mfrParser,
|
|
57
57
|
},
|
|
@@ -73,33 +73,33 @@ const supportedServices = Object.entries({
|
|
|
73
73
|
vk: {
|
|
74
74
|
extract: vkParser,
|
|
75
75
|
csp: {
|
|
76
|
-
'frame-src': 'https://vk.com/',
|
|
76
|
+
'frame-src': ['https://vk.com/'],
|
|
77
77
|
},
|
|
78
78
|
},
|
|
79
79
|
rutube: {
|
|
80
80
|
extract: rutubeParser,
|
|
81
81
|
csp: {
|
|
82
|
-
'frame-src': 'https://rutube.ru/play/embed/',
|
|
82
|
+
'frame-src': ['https://rutube.ru/play/embed/'],
|
|
83
83
|
},
|
|
84
84
|
},
|
|
85
85
|
url: {
|
|
86
86
|
extract: urlParser,
|
|
87
87
|
},
|
|
88
|
-
}
|
|
88
|
+
};
|
|
89
89
|
function parseVideoUrl(service, url) {
|
|
90
90
|
let videoID = '';
|
|
91
91
|
const normalizedService = service.toLowerCase();
|
|
92
|
-
const parsed = supportedServices
|
|
92
|
+
const parsed = supportedServices[normalizedService];
|
|
93
93
|
if (!parsed) {
|
|
94
94
|
return false;
|
|
95
95
|
}
|
|
96
|
-
const
|
|
97
|
-
videoID =
|
|
96
|
+
const { extract, csp } = parsed;
|
|
97
|
+
videoID = extract(url);
|
|
98
98
|
// If the videoID field is empty, regex currently make it the close parenthesis.
|
|
99
99
|
if (videoID === ')') {
|
|
100
100
|
videoID = '';
|
|
101
101
|
}
|
|
102
|
-
return [videoID,
|
|
102
|
+
return [videoID, csp];
|
|
103
103
|
}
|
|
104
104
|
exports.parseVideoUrl = parseVideoUrl;
|
|
105
105
|
//# sourceMappingURL=parsers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../../src/transform/plugins/video/parsers.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../../src/transform/plugins/video/parsers.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,11 @@ export declare type VideoServicesOptions = {
|
|
|
14
14
|
embed: 'simple' | (string & {});
|
|
15
15
|
};
|
|
16
16
|
};
|
|
17
|
+
export declare type Service = {
|
|
18
|
+
csp?: Record<string, string[]>;
|
|
19
|
+
extract(url: string): string;
|
|
20
|
+
};
|
|
21
|
+
export declare type Services = Record<VideoService, Service>;
|
|
17
22
|
export declare type VideoFullOptions = VideoServicesOptions & {
|
|
18
23
|
videoUrl: VideoUrlFn;
|
|
19
24
|
};
|
package/lib/sanitize.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import sanitizeHtml from 'sanitize-html';
|
|
2
|
-
|
|
3
|
-
[property: string]: boolean;
|
|
4
|
-
};
|
|
2
|
+
import { CssWhiteList } from './typings';
|
|
5
3
|
export interface SanitizeOptions extends sanitizeHtml.IOptions {
|
|
6
4
|
cssWhiteList?: CssWhiteList;
|
|
7
5
|
disableStyleSanitizer?: boolean;
|
|
@@ -10,4 +8,4 @@ export declare const defaultParseOptions: {
|
|
|
10
8
|
lowerCaseAttributeNames: boolean;
|
|
11
9
|
};
|
|
12
10
|
export declare const defaultOptions: SanitizeOptions;
|
|
13
|
-
export default function sanitize(html: string, options?: SanitizeOptions): string;
|
|
11
|
+
export default function sanitize(html: string, options?: SanitizeOptions, additionalOptions?: SanitizeOptions): string;
|
package/lib/sanitize.js
CHANGED
|
@@ -569,9 +569,12 @@ function sanitizeStyles(html, options) {
|
|
|
569
569
|
const content = $('body').html() || '';
|
|
570
570
|
return styles + content;
|
|
571
571
|
}
|
|
572
|
-
function sanitize(html, options) {
|
|
572
|
+
function sanitize(html, options, additionalOptions) {
|
|
573
573
|
var _a;
|
|
574
574
|
const sanitizeOptions = options || exports.defaultOptions;
|
|
575
|
+
if (additionalOptions === null || additionalOptions === void 0 ? void 0 : additionalOptions.cssWhiteList) {
|
|
576
|
+
sanitizeOptions.cssWhiteList = Object.assign(Object.assign({}, sanitizeOptions.cssWhiteList), additionalOptions.cssWhiteList);
|
|
577
|
+
}
|
|
575
578
|
const needToSanitizeStyles = !((_a = sanitizeOptions.disableStyleSanitizer) !== null && _a !== void 0 ? _a : false);
|
|
576
579
|
const modifiedHtml = needToSanitizeStyles ? sanitizeStyles(html, sanitizeOptions) : html;
|
|
577
580
|
return (0, sanitize_html_1.default)(modifiedHtml, sanitizeOptions);
|
package/lib/sanitize.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../src/transform/sanitize.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kEAAyC;AACzC,aAAa;AACb,0DAAkC;AAClC,iDAAmC;AACnC,8CAAsB;
|
|
1
|
+
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../src/transform/sanitize.ts"],"names":[],"mappings":"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"}
|
package/lib/typings.d.ts
CHANGED
|
@@ -64,6 +64,7 @@ export declare type EnvType<Extras extends {} = {}> = {
|
|
|
64
64
|
assets?: unknown[];
|
|
65
65
|
meta?: object;
|
|
66
66
|
changelogs?: ChangelogItem[];
|
|
67
|
+
additionalOptionsCssWhiteList?: CssWhiteList;
|
|
67
68
|
} & Extras;
|
|
68
69
|
export interface MarkdownItPluginOpts {
|
|
69
70
|
path: string;
|
|
@@ -84,3 +85,6 @@ export declare type MarkdownItPluginCb<T extends {} = {}> = {
|
|
|
84
85
|
export declare type MarkdownItPreprocessorCb<T extends unknown = {}> = {
|
|
85
86
|
(input: string, opts: T & Partial<MarkdownItPluginOpts>, md?: MarkdownIt): string;
|
|
86
87
|
};
|
|
88
|
+
export declare type CssWhiteList = {
|
|
89
|
+
[property: string]: boolean;
|
|
90
|
+
};
|
package/package.json
CHANGED
package/src/scss/_note.scss
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
font-weight: 700;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
& >
|
|
11
|
+
& > * {
|
|
12
12
|
margin: 0 0 10px;
|
|
13
13
|
|
|
14
14
|
&:first-child {
|
|
@@ -29,7 +29,6 @@
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
|
|
33
32
|
// @todo replace with variables
|
|
34
33
|
|
|
35
34
|
$colors: (
|
|
@@ -40,7 +39,7 @@
|
|
|
40
39
|
);
|
|
41
40
|
|
|
42
41
|
@each $type, $color in $colors {
|
|
43
|
-
&.#{$type} >
|
|
42
|
+
&.#{$type} > :first-child::before {
|
|
44
43
|
$r: red($color);
|
|
45
44
|
$g: green($color);
|
|
46
45
|
$b: blue($color);
|
package/src/transform/md.ts
CHANGED
|
@@ -168,7 +168,9 @@ function initCompiler(md: MarkdownIt, options: OptionsType, env: EnvType) {
|
|
|
168
168
|
const html = md.renderer.render(tokens, md.options, env);
|
|
169
169
|
|
|
170
170
|
// Sanitize the page
|
|
171
|
-
return needToSanitizeHtml
|
|
171
|
+
return needToSanitizeHtml
|
|
172
|
+
? sanitizeHtml(html, sanitizeOptions, {cssWhiteList: env.additionalOptionsCssWhiteList})
|
|
173
|
+
: html;
|
|
172
174
|
};
|
|
173
175
|
}
|
|
174
176
|
|
|
@@ -76,12 +76,14 @@ const removeCustomIds = (token: Token) => {
|
|
|
76
76
|
interface Options {
|
|
77
77
|
extractTitle?: boolean;
|
|
78
78
|
supportGithubAnchors?: boolean;
|
|
79
|
+
disableCommonAnchors?: boolean;
|
|
79
80
|
transformLink: (v: string) => string;
|
|
80
81
|
getPublicPath?: (options: Options, v?: string) => string;
|
|
81
82
|
}
|
|
82
83
|
|
|
83
84
|
const index: MarkdownItPluginCb<Options> = (md, options) => {
|
|
84
|
-
const {extractTitle, path, log, supportGithubAnchors, getPublicPath} =
|
|
85
|
+
const {extractTitle, path, log, supportGithubAnchors, getPublicPath, disableCommonAnchors} =
|
|
86
|
+
options;
|
|
85
87
|
|
|
86
88
|
const plugin = (state: StateCore) => {
|
|
87
89
|
/* Do not use the plugin if it is included in the file */
|
|
@@ -143,9 +145,16 @@ const index: MarkdownItPluginCb<Options> = (md, options) => {
|
|
|
143
145
|
const anchorTitle = removeCustomId(title).replace(/`/g, '');
|
|
144
146
|
allAnchorIds.forEach((customId) => {
|
|
145
147
|
const setId = id !== customId;
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
148
|
+
if (!disableCommonAnchors) {
|
|
149
|
+
const linkTokens = createLinkTokens(
|
|
150
|
+
state,
|
|
151
|
+
customId,
|
|
152
|
+
anchorTitle,
|
|
153
|
+
setId,
|
|
154
|
+
href,
|
|
155
|
+
);
|
|
156
|
+
inlineToken.children?.unshift(...linkTokens);
|
|
157
|
+
}
|
|
149
158
|
|
|
150
159
|
if (supportGithubAnchors) {
|
|
151
160
|
const ghLinkTokens = createLinkTokens(state, ghId, anchorTitle, true, href);
|
|
@@ -29,7 +29,7 @@ function replaceImageSrc(
|
|
|
29
29
|
const path = resolveRelativePath(currentPath, src);
|
|
30
30
|
|
|
31
31
|
if (isFileExists(path)) {
|
|
32
|
-
state.md.assets?.push(
|
|
32
|
+
state.md.assets?.push(src);
|
|
33
33
|
} else {
|
|
34
34
|
log.error(`Asset not found: ${bold(src)} in ${bold(currentPath)}`);
|
|
35
35
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {PluginWithOptions} from 'markdown-it';
|
|
2
2
|
|
|
3
|
-
import {imageWithSize} from './plugin';
|
|
3
|
+
import {ImsizeOptions, imageWithSize} from './plugin';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Imsize plugin for markdown-it.
|
|
@@ -8,8 +8,8 @@ import {imageWithSize} from './plugin';
|
|
|
8
8
|
* Forked from https://github.com/tatsy/markdown-it-imsize
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
const imsize:
|
|
12
|
-
md.inline.ruler.before('emphasis', 'image', imageWithSize(md));
|
|
11
|
+
const imsize: PluginWithOptions<ImsizeOptions> = (md, opts) => {
|
|
12
|
+
md.inline.ruler.before('emphasis', 'image', imageWithSize(md, opts));
|
|
13
13
|
};
|
|
14
14
|
|
|
15
15
|
export = imsize;
|
|
@@ -5,7 +5,11 @@ import type Token from 'markdown-it/lib/token';
|
|
|
5
5
|
import {ImsizeAttr} from './const';
|
|
6
6
|
import {parseImageSize} from './helpers';
|
|
7
7
|
|
|
8
|
-
export
|
|
8
|
+
export type ImsizeOptions = {
|
|
9
|
+
enableInlineStyling?: boolean;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export const imageWithSize = (md: MarkdownIt, opts?: ImsizeOptions): ParserInline.RuleInline => {
|
|
9
13
|
// eslint-disable-next-line complexity
|
|
10
14
|
return (state, silent) => {
|
|
11
15
|
if (state.src.charCodeAt(state.pos) !== 0x21 /* ! */) {
|
|
@@ -206,6 +210,33 @@ export const imageWithSize = (md: MarkdownIt): ParserInline.RuleInline => {
|
|
|
206
210
|
if (height !== '') {
|
|
207
211
|
token.attrs.push([ImsizeAttr.Height, height]);
|
|
208
212
|
}
|
|
213
|
+
|
|
214
|
+
if (opts?.enableInlineStyling) {
|
|
215
|
+
let style: string | undefined = '';
|
|
216
|
+
|
|
217
|
+
const widthWithPercent = width.includes('%');
|
|
218
|
+
const heightWithPercent = height.includes('%');
|
|
219
|
+
|
|
220
|
+
if (width !== '') {
|
|
221
|
+
const widthString = widthWithPercent ? width : `${width}px`;
|
|
222
|
+
style += `width: ${widthString};`;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
if (height !== '') {
|
|
226
|
+
if (width !== '' && !heightWithPercent && !widthWithPercent) {
|
|
227
|
+
style += `aspect-ratio: ${width} / ${height};height: auto;`;
|
|
228
|
+
state.env.additionalOptionsCssWhiteList ??= {};
|
|
229
|
+
state.env.additionalOptionsCssWhiteList['aspect-ratio'] = true;
|
|
230
|
+
} else {
|
|
231
|
+
const heightString = heightWithPercent ? height : `${height}px`;
|
|
232
|
+
style += `height: ${heightString};`;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
if (style) {
|
|
237
|
+
token.attrs.push([ImsizeAttr.Style, style]);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
209
240
|
}
|
|
210
241
|
|
|
211
242
|
state.pos = pos;
|
|
@@ -108,16 +108,18 @@ const index: MarkdownItPluginCb = (md, {lang, notesAutotitle, path: optPath, log
|
|
|
108
108
|
titleInline.children,
|
|
109
109
|
);
|
|
110
110
|
|
|
111
|
-
const insideTokens = [
|
|
112
|
-
|
|
113
|
-
titleOpen,
|
|
114
|
-
|
|
115
|
-
|
|
111
|
+
const insideTokens = [newOpenToken];
|
|
112
|
+
if (titleInline.content) {
|
|
113
|
+
insideTokens.push(titleOpen, titleInline, titleClose);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
insideTokens.push(
|
|
116
117
|
contentOpen,
|
|
117
118
|
...tokens.slice(i + 3, closeTokenIdx),
|
|
118
119
|
contentClose,
|
|
119
120
|
newCloseToken,
|
|
120
|
-
|
|
121
|
+
);
|
|
122
|
+
|
|
121
123
|
tokens.splice(i, closeTokenIdx - i + 3, ...insideTokens);
|
|
122
124
|
|
|
123
125
|
i++;
|
|
@@ -15,13 +15,6 @@ export enum VideoService {
|
|
|
15
15
|
url = 'url',
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
export type Service = {
|
|
19
|
-
csp?: Record<string, string[]>;
|
|
20
|
-
extract(url: string): string;
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
export type Services = [VideoService, Service][];
|
|
24
|
-
|
|
25
18
|
export const defaults: VideoFullOptions = {
|
|
26
19
|
videoUrl,
|
|
27
20
|
youtube: {width: 640, height: 390},
|
|
@@ -83,7 +83,7 @@ function tokenizeVideo(md: MarkdownIt, options: VideoFullOptions): Renderer.Rend
|
|
|
83
83
|
};
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
const EMBED_REGEX = /@\[([a-zA-Z]
|
|
86
|
+
const EMBED_REGEX = /@\[([a-zA-Z]*?)]\([\s]*(.*?)[\s]*[)]/im;
|
|
87
87
|
|
|
88
88
|
function videoEmbed(md: MarkdownIt, _options: VideoFullOptions): ParserInline.RuleInline {
|
|
89
89
|
return (state, silent) => {
|
|
@@ -98,12 +98,11 @@ function videoEmbed(md: MarkdownIt, _options: VideoFullOptions): ParserInline.Ru
|
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
const match = EMBED_REGEX.exec(state.src.slice(state.pos, state.src.length));
|
|
101
|
-
|
|
102
101
|
if (!match || match.length < 3) {
|
|
103
102
|
return false;
|
|
104
103
|
}
|
|
105
104
|
|
|
106
|
-
const service = match[1];
|
|
105
|
+
const service = match[1] || 'url';
|
|
107
106
|
const parsed = parseVideoUrl(service, match[2]);
|
|
108
107
|
|
|
109
108
|
if (parsed === false) {
|
|
@@ -126,13 +125,19 @@ function videoEmbed(md: MarkdownIt, _options: VideoFullOptions): ParserInline.Ru
|
|
|
126
125
|
const newState = new theState.md.inline.State(service, theState.md, theState.env, []);
|
|
127
126
|
newState.md.inline.tokenize(newState);
|
|
128
127
|
|
|
129
|
-
const token = theState.push('video', '', 0);
|
|
130
|
-
|
|
131
|
-
|
|
128
|
+
const token = theState.push('video', '', 0) as VideoToken;
|
|
129
|
+
|
|
130
|
+
token.videoID = videoID;
|
|
131
|
+
token.service = service;
|
|
132
|
+
|
|
132
133
|
token.level = theState.level;
|
|
133
134
|
}
|
|
134
135
|
|
|
135
|
-
|
|
136
|
+
if (service === 'url') {
|
|
137
|
+
theState.pos = theState.src.indexOf(')', theState.pos) + 1;
|
|
138
|
+
} else {
|
|
139
|
+
theState.pos += theState.src.indexOf(')', theState.pos);
|
|
140
|
+
}
|
|
136
141
|
|
|
137
142
|
if (csp) {
|
|
138
143
|
state.env.meta ??= {};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {VideoService} from './const';
|
|
2
|
+
import {Services} from './types';
|
|
2
3
|
|
|
3
4
|
const ytRegex = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#&?]*).*/;
|
|
4
5
|
export function youtubeParser(url: string) {
|
|
@@ -53,7 +54,7 @@ export function rutubeParser(url: string) {
|
|
|
53
54
|
|
|
54
55
|
const urlParser = (url: string) => url;
|
|
55
56
|
|
|
56
|
-
const supportedServices =
|
|
57
|
+
const supportedServices = {
|
|
57
58
|
osf: {
|
|
58
59
|
extract: mfrParser,
|
|
59
60
|
},
|
|
@@ -75,37 +76,37 @@ const supportedServices = Object.entries({
|
|
|
75
76
|
vk: {
|
|
76
77
|
extract: vkParser,
|
|
77
78
|
csp: {
|
|
78
|
-
'frame-src': 'https://vk.com/',
|
|
79
|
+
'frame-src': ['https://vk.com/'],
|
|
79
80
|
},
|
|
80
81
|
},
|
|
81
82
|
rutube: {
|
|
82
83
|
extract: rutubeParser,
|
|
83
84
|
csp: {
|
|
84
|
-
'frame-src': 'https://rutube.ru/play/embed/',
|
|
85
|
+
'frame-src': ['https://rutube.ru/play/embed/'],
|
|
85
86
|
},
|
|
86
87
|
},
|
|
87
88
|
url: {
|
|
88
89
|
extract: urlParser,
|
|
89
90
|
},
|
|
90
|
-
}
|
|
91
|
+
} as Services;
|
|
91
92
|
|
|
92
93
|
export function parseVideoUrl(service: string, url: string) {
|
|
93
94
|
let videoID = '';
|
|
94
95
|
const normalizedService = service.toLowerCase();
|
|
95
|
-
const parsed = supportedServices
|
|
96
|
+
const parsed = supportedServices[normalizedService as VideoService];
|
|
96
97
|
|
|
97
98
|
if (!parsed) {
|
|
98
99
|
return false;
|
|
99
100
|
}
|
|
100
101
|
|
|
101
|
-
const
|
|
102
|
+
const {extract, csp} = parsed;
|
|
102
103
|
|
|
103
|
-
videoID =
|
|
104
|
+
videoID = extract(url);
|
|
104
105
|
|
|
105
106
|
// If the videoID field is empty, regex currently make it the close parenthesis.
|
|
106
107
|
if (videoID === ')') {
|
|
107
108
|
videoID = '';
|
|
108
109
|
}
|
|
109
110
|
|
|
110
|
-
return [videoID,
|
|
111
|
+
return [videoID, csp] as const;
|
|
111
112
|
}
|
|
@@ -17,6 +17,13 @@ export type VideoServicesOptions = {
|
|
|
17
17
|
};
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
+
export type Service = {
|
|
21
|
+
csp?: Record<string, string[]>;
|
|
22
|
+
extract(url: string): string;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export type Services = Record<VideoService, Service>;
|
|
26
|
+
|
|
20
27
|
export type VideoFullOptions = VideoServicesOptions & {
|
|
21
28
|
videoUrl: VideoUrlFn;
|
|
22
29
|
};
|
|
@@ -4,6 +4,8 @@ import cssfilter from 'cssfilter';
|
|
|
4
4
|
import * as cheerio from 'cheerio';
|
|
5
5
|
import css from 'css';
|
|
6
6
|
|
|
7
|
+
import {CssWhiteList} from './typings';
|
|
8
|
+
|
|
7
9
|
const htmlTags = [
|
|
8
10
|
'a',
|
|
9
11
|
'abbr',
|
|
@@ -492,8 +494,6 @@ const allowedTags = Array.from(
|
|
|
492
494
|
);
|
|
493
495
|
const allowedAttributes = Array.from(new Set([...htmlAttrs, ...svgAttrs, ...yfmHtmlAttrs]));
|
|
494
496
|
|
|
495
|
-
export type CssWhiteList = {[property: string]: boolean};
|
|
496
|
-
|
|
497
497
|
export interface SanitizeOptions extends sanitizeHtml.IOptions {
|
|
498
498
|
cssWhiteList?: CssWhiteList;
|
|
499
499
|
disableStyleSanitizer?: boolean;
|
|
@@ -598,9 +598,20 @@ function sanitizeStyles(html: string, options: SanitizeOptions) {
|
|
|
598
598
|
return styles + content;
|
|
599
599
|
}
|
|
600
600
|
|
|
601
|
-
export default function sanitize(
|
|
601
|
+
export default function sanitize(
|
|
602
|
+
html: string,
|
|
603
|
+
options?: SanitizeOptions,
|
|
604
|
+
additionalOptions?: SanitizeOptions,
|
|
605
|
+
) {
|
|
602
606
|
const sanitizeOptions = options || defaultOptions;
|
|
603
607
|
|
|
608
|
+
if (additionalOptions?.cssWhiteList) {
|
|
609
|
+
sanitizeOptions.cssWhiteList = {
|
|
610
|
+
...sanitizeOptions.cssWhiteList,
|
|
611
|
+
...additionalOptions.cssWhiteList,
|
|
612
|
+
};
|
|
613
|
+
}
|
|
614
|
+
|
|
604
615
|
const needToSanitizeStyles = !(sanitizeOptions.disableStyleSanitizer ?? false);
|
|
605
616
|
|
|
606
617
|
const modifiedHtml = needToSanitizeStyles ? sanitizeStyles(html, sanitizeOptions) : html;
|
package/src/transform/typings.ts
CHANGED
|
@@ -74,6 +74,7 @@ export type EnvType<Extras extends {} = {}> = {
|
|
|
74
74
|
assets?: unknown[];
|
|
75
75
|
meta?: object;
|
|
76
76
|
changelogs?: ChangelogItem[];
|
|
77
|
+
additionalOptionsCssWhiteList?: CssWhiteList;
|
|
77
78
|
} & Extras;
|
|
78
79
|
|
|
79
80
|
export interface MarkdownItPluginOpts {
|
|
@@ -98,3 +99,5 @@ export type MarkdownItPluginCb<T extends {} = {}> = {
|
|
|
98
99
|
export type MarkdownItPreprocessorCb<T extends unknown = {}> = {
|
|
99
100
|
(input: string, opts: T & Partial<MarkdownItPluginOpts>, md?: MarkdownIt): string;
|
|
100
101
|
};
|
|
102
|
+
|
|
103
|
+
export type CssWhiteList = {[property: string]: boolean};
|
package/lib/plugins/csp.d.ts
DELETED
package/lib/plugins/csp.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.collect = exports.requestCSP = void 0;
|
|
4
|
-
let csp = {};
|
|
5
|
-
const requestCSP = (policy) => {
|
|
6
|
-
for (const [field, content] of Object.entries(policy)) {
|
|
7
|
-
if (!csp[field]) {
|
|
8
|
-
csp[field] = [];
|
|
9
|
-
}
|
|
10
|
-
const flat = Array.isArray(content) ? content : [content];
|
|
11
|
-
for (const value of flat) {
|
|
12
|
-
if (csp[field].includes(value)) {
|
|
13
|
-
continue;
|
|
14
|
-
}
|
|
15
|
-
csp[field].push(value);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
exports.requestCSP = requestCSP;
|
|
20
|
-
const collect = () => {
|
|
21
|
-
const usedCSP = Object.assign({}, csp);
|
|
22
|
-
csp = {};
|
|
23
|
-
return usedCSP;
|
|
24
|
-
};
|
|
25
|
-
exports.collect = collect;
|
|
26
|
-
//# sourceMappingURL=csp.js.map
|
package/lib/plugins/csp.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"csp.js","sourceRoot":"","sources":["../../src/transform/plugins/csp.ts"],"names":[],"mappings":";;;AAAA,IAAI,GAAG,GAA6B,EAAE,CAAC;AAIvC,MAAM,UAAU,GAAG,CAAC,MAAiB,EAAE,EAAE;IACrC,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACnD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACb,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;SACnB;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAE1D,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE;YACtB,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBAC5B,SAAS;aACZ;YAED,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC1B;KACJ;AACL,CAAC,CAAC;AAUM,gCAAU;AARlB,MAAM,OAAO,GAAG,GAAG,EAAE;IACjB,MAAM,OAAO,qBAAO,GAAG,CAAC,CAAC;IAEzB,GAAG,GAAG,EAAE,CAAC;IAET,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AAEkB,0BAAO"}
|