@diplodoc/transform 4.34.2-beta1 → 4.35.0-beta2

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.
Files changed (71) hide show
  1. package/dist/css/_yfm-only.css +164 -0
  2. package/dist/css/_yfm-only.css.map +7 -0
  3. package/dist/css/_yfm-only.min.css +2 -0
  4. package/dist/css/_yfm-only.min.css.map +7 -0
  5. package/dist/css/base.css +580 -0
  6. package/dist/css/base.css.map +7 -0
  7. package/dist/css/base.min.css +2 -0
  8. package/dist/css/base.min.css.map +7 -0
  9. package/dist/css/print.css.map +2 -2
  10. package/dist/css/yfm.css +124 -98
  11. package/dist/css/yfm.css.map +3 -3
  12. package/dist/css/yfm.min.css +1 -1
  13. package/dist/css/yfm.min.css.map +3 -3
  14. package/dist/js/_yfm-only.js +223 -0
  15. package/dist/js/_yfm-only.js.map +7 -0
  16. package/dist/js/_yfm-only.min.js +2 -0
  17. package/dist/js/_yfm-only.min.js.map +7 -0
  18. package/dist/js/base.js +138 -0
  19. package/dist/js/base.js.map +7 -0
  20. package/dist/js/base.min.js +2 -0
  21. package/dist/js/base.min.js.map +7 -0
  22. package/dist/js/yfm.js +100 -100
  23. package/dist/js/yfm.js.map +3 -3
  24. package/dist/js/yfm.min.js +1 -1
  25. package/dist/js/yfm.min.js.map +3 -3
  26. package/lib/md.d.ts +2 -2
  27. package/lib/md.js +2 -2
  28. package/lib/plugins/csp.d.ts +6 -0
  29. package/lib/plugins/csp.js +26 -0
  30. package/lib/plugins/csp.js.map +1 -0
  31. package/lib/plugins/includes/collect.js +16 -11
  32. package/lib/plugins/includes/collect.js.map +1 -1
  33. package/lib/plugins/includes/types.d.ts +1 -0
  34. package/lib/plugins/tabs.js +11 -1
  35. package/lib/plugins/tabs.js.map +1 -1
  36. package/lib/plugins/utils.d.ts +1 -0
  37. package/lib/plugins/utils.js +10 -1
  38. package/lib/plugins/utils.js.map +1 -1
  39. package/lib/plugins/video/const.d.ts +8 -1
  40. package/lib/plugins/video/const.js +4 -0
  41. package/lib/plugins/video/const.js.map +1 -1
  42. package/lib/plugins/video/index.js +12 -3
  43. package/lib/plugins/video/index.js.map +1 -1
  44. package/lib/plugins/video/parsers.d.ts +3 -1
  45. package/lib/plugins/video/parsers.js +59 -28
  46. package/lib/plugins/video/parsers.js.map +1 -1
  47. package/lib/plugins/video/types.d.ts +6 -27
  48. package/lib/plugins/video/utils.js +5 -1
  49. package/lib/plugins/video/utils.js.map +1 -1
  50. package/lib/preprocessors/included/index.js +1 -1
  51. package/lib/preprocessors/included/index.js.map +1 -1
  52. package/package.json +2 -2
  53. package/src/js/_yfm-only.ts +1 -0
  54. package/src/js/base.ts +2 -0
  55. package/src/js/index.ts +2 -3
  56. package/src/scss/_yfm-only.scss +12 -0
  57. package/src/scss/base.scss +4 -0
  58. package/src/scss/yfm.scss +2 -9
  59. package/src/transform/index.ts +2 -2
  60. package/src/transform/md.ts +2 -2
  61. package/src/transform/plugins/changelog/collect.ts +2 -2
  62. package/src/transform/plugins/includes/collect.ts +18 -23
  63. package/src/transform/plugins/includes/types.ts +1 -0
  64. package/src/transform/plugins/tabs.ts +11 -1
  65. package/src/transform/plugins/utils.ts +16 -0
  66. package/src/transform/plugins/video/const.ts +11 -0
  67. package/src/transform/plugins/video/index.ts +15 -3
  68. package/src/transform/plugins/video/parsers.ts +63 -28
  69. package/src/transform/plugins/video/types.ts +8 -7
  70. package/src/transform/plugins/video/utils.ts +5 -1
  71. package/src/transform/preprocessors/included/index.ts +1 -1
@@ -6,6 +6,9 @@
6
6
  // Process @[osf](guid)
7
7
  // Process @[yandex](videoID)
8
8
  // Process @[vk](videoID)
9
+ // Process @[dzen](videoID)
10
+ // Process @[rutube](videoID)
11
+ const utils_1 = require("../utils");
9
12
  const parsers_1 = require("./parsers");
10
13
  const const_1 = require("./const");
11
14
  // eslint-disable-next-line valid-jsdoc
@@ -60,9 +63,10 @@ function tokenizeVideo(md, options) {
60
63
  };
61
64
  }
62
65
  const EMBED_REGEX = /@\[([a-zA-Z].+)]\([\s]*(.*?)[\s]*[)]/im;
63
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
64
66
  function videoEmbed(md, _options) {
65
67
  return (state, silent) => {
68
+ var _a;
69
+ var _b;
66
70
  const theState = state;
67
71
  const oldPos = state.pos;
68
72
  if (state.src.charCodeAt(oldPos) !== 0x40 /* @ */ ||
@@ -74,10 +78,11 @@ function videoEmbed(md, _options) {
74
78
  return false;
75
79
  }
76
80
  const service = match[1];
77
- const videoID = (0, parsers_1.parseVideoUrl)(service, match[2]);
78
- if (videoID === false) {
81
+ const parsed = (0, parsers_1.parseVideoUrl)(service, match[2]);
82
+ if (parsed === false) {
79
83
  return false;
80
84
  }
85
+ const [videoID, csp] = parsed;
81
86
  const serviceStart = oldPos + 2;
82
87
  const serviceEnd = md.helpers.parseLinkLabel(state, oldPos + 1, false);
83
88
  //
@@ -96,6 +101,10 @@ function videoEmbed(md, _options) {
96
101
  token.level = theState.level;
97
102
  }
98
103
  theState.pos += theState.src.indexOf(')', theState.pos);
104
+ if (csp) {
105
+ (_a = (_b = state.env).meta) !== null && _a !== void 0 ? _a : (_b.meta = {});
106
+ (0, utils_1.append)(state.env.meta, 'csp', csp);
107
+ }
99
108
  return true;
100
109
  };
101
110
  }
@@ -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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"}
@@ -5,4 +5,6 @@ export declare function preziParser(url: string): string;
5
5
  export declare function mfrParser(url: string): string;
6
6
  export declare function yandexParser(url: string): string;
7
7
  export declare function vkParser(url: string): string;
8
- export declare function parseVideoUrl(service: string, url: string): string | false;
8
+ export declare function rutubeParser(url: string): string;
9
+ export declare function dzenParser(url: string): string;
10
+ export declare function parseVideoUrl(service: string, url: string): false | readonly [string, Record<string, string[]> | undefined];
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseVideoUrl = exports.vkParser = exports.yandexParser = exports.mfrParser = exports.preziParser = exports.vineParser = exports.vimeoParser = exports.youtubeParser = void 0;
4
- const const_1 = require("./const");
3
+ exports.parseVideoUrl = exports.dzenParser = exports.rutubeParser = exports.vkParser = exports.yandexParser = exports.mfrParser = exports.preziParser = exports.vineParser = exports.vimeoParser = exports.youtubeParser = void 0;
5
4
  const ytRegex = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#&?]*).*/;
6
5
  function youtubeParser(url) {
7
6
  const match = url.match(ytRegex);
@@ -39,44 +38,76 @@ function yandexParser(url) {
39
38
  return match ? match[1] : url;
40
39
  }
41
40
  exports.yandexParser = yandexParser;
42
- const vkRegex = /^https:\/\/vk.com\/video_ext\.php?(oid=[-\d]+&id=[-\d]+)/;
41
+ const vkRegex = /^https:\/\/vk\.com\/video_ext\.php\?(oid=[-\d]+&id=[-\d]+)/;
43
42
  function vkParser(url) {
44
43
  const match = url.match(vkRegex);
45
44
  return match ? match[1] : url;
46
45
  }
47
46
  exports.vkParser = vkParser;
47
+ const rutubeRegex = /^https:\/\/rutube\.ru\/video\/([a-zA-Z0-9]+)\/?/;
48
+ function rutubeParser(url) {
49
+ const match = url.match(rutubeRegex);
50
+ return match ? match[1] : url;
51
+ }
52
+ exports.rutubeParser = rutubeParser;
53
+ const dzenRegex = /^https:\/\/dzen\.ru\/video\/watch\/([a-zA-Z0-9]+)/;
54
+ function dzenParser(url) {
55
+ const match = url.match(dzenRegex);
56
+ return match ? match[1] : url;
57
+ }
58
+ exports.dzenParser = dzenParser;
59
+ const supportedServices = Object.entries({
60
+ osf: {
61
+ extract: mfrParser,
62
+ },
63
+ prezi: {
64
+ extract: preziParser,
65
+ },
66
+ vimeo: {
67
+ extract: vimeoParser,
68
+ },
69
+ vine: {
70
+ extract: vineParser,
71
+ },
72
+ yandex: {
73
+ extract: yandexParser,
74
+ },
75
+ youtube: {
76
+ extract: youtubeParser,
77
+ },
78
+ vk: {
79
+ extract: vkParser,
80
+ csp: {
81
+ 'frame-src': 'https://vk.com/',
82
+ },
83
+ },
84
+ rutube: {
85
+ extract: rutubeParser,
86
+ csp: {
87
+ 'frame-src': 'https://rutube.ru/play/embed/',
88
+ },
89
+ },
90
+ dzen: {
91
+ extract: dzenParser,
92
+ csp: {
93
+ 'frame-src': 'https://dzen.ru/embed/',
94
+ },
95
+ },
96
+ });
48
97
  function parseVideoUrl(service, url) {
49
98
  let videoID = '';
50
- switch (service.toLowerCase()) {
51
- case const_1.VideoService.YouTube:
52
- videoID = youtubeParser(url);
53
- break;
54
- case const_1.VideoService.Vimeo:
55
- videoID = vimeoParser(url);
56
- break;
57
- case const_1.VideoService.Vine:
58
- videoID = vineParser(url);
59
- break;
60
- case const_1.VideoService.Prezi:
61
- videoID = preziParser(url);
62
- break;
63
- case const_1.VideoService.Osf:
64
- videoID = mfrParser(url);
65
- break;
66
- case const_1.VideoService.Yandex:
67
- videoID = yandexParser(url);
68
- break;
69
- case const_1.VideoService.Vk:
70
- videoID = vkParser(url);
71
- break;
72
- default:
73
- return false;
99
+ const normalizedService = service.toLowerCase();
100
+ const parsed = supportedServices.find(([name]) => name === normalizedService);
101
+ if (!parsed) {
102
+ return false;
74
103
  }
104
+ const [, videoParser] = parsed;
105
+ videoID = videoParser.extract(url);
75
106
  // If the videoID field is empty, regex currently make it the close parenthesis.
76
107
  if (videoID === ')') {
77
108
  videoID = '';
78
109
  }
79
- return videoID;
110
+ return [videoID, videoParser.csp];
80
111
  }
81
112
  exports.parseVideoUrl = parseVideoUrl;
82
113
  //# sourceMappingURL=parsers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../../src/transform/plugins/video/parsers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../../src/transform/plugins/video/parsers.ts"],"names":[],"mappings":";;;AAEA,MAAM,OAAO,GAAG,2EAA2E,CAAC;AAC5F,SAAgB,aAAa,CAAC,GAAW;IACrC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC5D,CAAC;AAHD,sCAGC;AAED,MAAM,UAAU,GACZ,oIAAoI,CAAC;AACzI,SAAgB,WAAW,CAAC,GAAW;IACnC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACpC,OAAO,KAAK,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAClE,CAAC;AAHD,kCAGC;AAED,MAAM,SAAS,GAAG,8DAA8D,CAAC;AACjF,SAAgB,UAAU,CAAC,GAAW;IAClC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACnC,OAAO,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC5D,CAAC;AAHD,gCAGC;AAED,MAAM,UAAU,GAAG,gCAAgC,CAAC;AACpD,SAAgB,WAAW,CAAC,GAAW;IACnC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACpC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAClC,CAAC;AAHD,kCAGC;AAED,mDAAmD;AACnD,MAAM,QAAQ,GACV,mHAAmH,CAAC;AACxH,SAAgB,SAAS,CAAC,GAAW;IACjC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAClC,CAAC;AAHD,8BAGC;AAED,MAAM,WAAW,GAAG,0EAA0E,CAAC;AAC/F,SAAgB,YAAY,CAAC,GAAW;IACpC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACrC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAClC,CAAC;AAHD,oCAGC;AAED,MAAM,OAAO,GAAG,4DAA4D,CAAC;AAC7E,SAAgB,QAAQ,CAAC,GAAW;IAChC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAClC,CAAC;AAHD,4BAGC;AAED,MAAM,WAAW,GAAG,iDAAiD,CAAC;AACtE,SAAgB,YAAY,CAAC,GAAW;IACpC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACrC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAClC,CAAC;AAHD,oCAGC;AAED,MAAM,SAAS,GAAG,mDAAmD,CAAC;AACtE,SAAgB,UAAU,CAAC,GAAW;IAClC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAClC,CAAC;AAHD,gCAGC;AAED,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC;IACrC,GAAG,EAAE;QACD,OAAO,EAAE,SAAS;KACrB;IACD,KAAK,EAAE;QACH,OAAO,EAAE,WAAW;KACvB;IACD,KAAK,EAAE;QACH,OAAO,EAAE,WAAW;KACvB;IACD,IAAI,EAAE;QACF,OAAO,EAAE,UAAU;KACtB;IACD,MAAM,EAAE;QACJ,OAAO,EAAE,YAAY;KACxB;IACD,OAAO,EAAE;QACL,OAAO,EAAE,aAAa;KACzB;IACD,EAAE,EAAE;QACA,OAAO,EAAE,QAAQ;QACjB,GAAG,EAAE;YACD,WAAW,EAAE,iBAAiB;SACjC;KACJ;IACD,MAAM,EAAE;QACJ,OAAO,EAAE,YAAY;QACrB,GAAG,EAAE;YACD,WAAW,EAAE,+BAA+B;SAC/C;KACJ;IACD,IAAI,EAAE;QACF,OAAO,EAAE,UAAU;QACnB,GAAG,EAAE;YACD,WAAW,EAAE,wBAAwB;SACxC;KACJ;CACJ,CAAa,CAAC;AAEf,SAAgB,aAAa,CAAC,OAAe,EAAE,GAAW;IACtD,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,MAAM,iBAAiB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAChD,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;IAE9E,IAAI,CAAC,MAAM,EAAE;QACT,OAAO,KAAK,CAAC;KAChB;IAED,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG,MAAM,CAAC;IAE/B,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEnC,gFAAgF;IAChF,IAAI,OAAO,KAAK,GAAG,EAAE;QACjB,OAAO,GAAG,EAAE,CAAC;KAChB;IAED,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAU,CAAC;AAC/C,CAAC;AAnBD,sCAmBC"}
@@ -5,34 +5,13 @@ export declare type VideoToken = Token & {
5
5
  videoID: string;
6
6
  };
7
7
  export declare type VideoServicesOptions = {
8
- [VideoService.YouTube]: {
9
- width: number;
10
- height: number;
8
+ [service in VideoService]: {
9
+ width: number | string;
10
+ height: number | string;
11
11
  };
12
- [VideoService.Vimeo]: {
13
- width: number;
14
- height: number;
15
- };
16
- [VideoService.Vine]: {
17
- width: number;
18
- height: number;
19
- embed: 'simple' | string;
20
- };
21
- [VideoService.Prezi]: {
22
- width: number;
23
- height: number;
24
- };
25
- [VideoService.Osf]: {
26
- width: string;
27
- height: string;
28
- };
29
- [VideoService.Yandex]: {
30
- width: number;
31
- height: number;
32
- };
33
- [VideoService.Vk]: {
34
- width: number;
35
- height: number;
12
+ } & {
13
+ vine: {
14
+ embed: 'simple' | (string & {});
36
15
  };
37
16
  };
38
17
  export declare type VideoFullOptions = VideoServicesOptions & {
@@ -17,9 +17,13 @@ const videoUrl = (service, videoID, options) => {
17
17
  case 'osf':
18
18
  return `https://mfr.osf.io/render?url=https://osf.io/${videoID}/?action=download`;
19
19
  case 'yandex':
20
- return `https://runtime.video.cloud.yandex.net/player/${videoID}`;
20
+ return `https://runtime.video.cloud.yandex.net/player/video/${videoID}`;
21
21
  case 'vk':
22
22
  return `https://vk.com/video_ext.php?${videoID}`;
23
+ case 'rutube':
24
+ return `https://rutube.ru/play/embed/${videoID}`;
25
+ case 'dzen':
26
+ return `https://dzen.ru/video/embed/${videoID}`;
23
27
  default:
24
28
  return service;
25
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/transform/plugins/video/utils.ts"],"names":[],"mappings":";;;AAEO,MAAM,QAAQ,GAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IAC9D,QAAQ,OAAO,EAAE;QACb,KAAK,SAAS;YACV,OAAO,iCAAiC,OAAO,EAAE,CAAC;QACtD,KAAK,OAAO;YACR,OAAO,kCAAkC,OAAO,EAAE,CAAC;QACvD,KAAK,MAAM;YACP,OAAO,qBAAqB,OAAO,UAAU,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACtE,KAAK,OAAO;YACR,OAAO,CACH,2BAA2B,OAAO,EAAE;gBACpC,8EAA8E;gBAC9E,+GAA+G;gBAC/G,0DAA0D,CAC7D,CAAC;QACN,KAAK,KAAK;YACN,OAAO,gDAAgD,OAAO,mBAAmB,CAAC;QACtF,KAAK,QAAQ;YACT,OAAO,iDAAiD,OAAO,EAAE,CAAC;QACtE,KAAK,IAAI;YACL,OAAO,gCAAgC,OAAO,EAAE,CAAC;QACrD;YACI,OAAO,OAAO,CAAC;KACtB;AACL,CAAC,CAAC;AAxBW,QAAA,QAAQ,YAwBnB"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/transform/plugins/video/utils.ts"],"names":[],"mappings":";;;AAEO,MAAM,QAAQ,GAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IAC9D,QAAQ,OAAO,EAAE;QACb,KAAK,SAAS;YACV,OAAO,iCAAiC,OAAO,EAAE,CAAC;QACtD,KAAK,OAAO;YACR,OAAO,kCAAkC,OAAO,EAAE,CAAC;QACvD,KAAK,MAAM;YACP,OAAO,qBAAqB,OAAO,UAAU,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACtE,KAAK,OAAO;YACR,OAAO,CACH,2BAA2B,OAAO,EAAE;gBACpC,8EAA8E;gBAC9E,+GAA+G;gBAC/G,0DAA0D,CAC7D,CAAC;QACN,KAAK,KAAK;YACN,OAAO,gDAAgD,OAAO,mBAAmB,CAAC;QACtF,KAAK,QAAQ;YACT,OAAO,uDAAuD,OAAO,EAAE,CAAC;QAC5E,KAAK,IAAI;YACL,OAAO,gCAAgC,OAAO,EAAE,CAAC;QACrD,KAAK,QAAQ;YACT,OAAO,gCAAgC,OAAO,EAAE,CAAC;QACrD,KAAK,MAAM;YACP,OAAO,+BAA+B,OAAO,EAAE,CAAC;QACpD;YACI,OAAO,OAAO,CAAC;KACtB;AACL,CAAC,CAAC;AA5BW,QAAA,QAAQ,YA4BnB"}
@@ -47,7 +47,7 @@ const index = (input, options, md) => {
47
47
  const { included, path, root } = options;
48
48
  // To reduce file reading we can include the file content into the generated content
49
49
  if (included) {
50
- const lines = input.split('\n') || [];
50
+ const lines = (input === null || input === void 0 ? void 0 : input.split('\n')) || [];
51
51
  // The finction reads the files from bottom to top(!). It stops the loop if it does not have anything to swap.
52
52
  // If the function finds something to process then it restarts the loop because the position of the last element has been moved.
53
53
  // eslint-disable-next-line no-unmodified-loop-condition
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transform/preprocessors/included/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transform/preprocessors/included/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diplodoc/transform",
3
- "version": "4.34.2-beta1",
3
+ "version": "4.35.0-beta2",
4
4
  "description": "A simple transformer of text in YFM (Yandex Flavored Markdown) to HTML",
5
5
  "keywords": [
6
6
  "markdown",
@@ -42,7 +42,7 @@
42
42
  },
43
43
  "dependencies": {
44
44
  "@diplodoc/cut-extension": "^0.3.0",
45
- "@diplodoc/tabs-extension": "^3.5.0-beta1",
45
+ "@diplodoc/tabs-extension": "^3.5.0",
46
46
  "chalk": "^4.1.2",
47
47
  "cheerio": "^1.0.0",
48
48
  "css": "^3.0.0",
@@ -0,0 +1 @@
1
+ import './term';
package/src/js/base.ts ADDED
@@ -0,0 +1,2 @@
1
+ import './polyfill';
2
+ import './code';
package/src/js/index.ts CHANGED
@@ -1,8 +1,7 @@
1
1
  import '@diplodoc/cut-extension/runtime';
2
2
  import '@diplodoc/tabs-extension/runtime';
3
3
 
4
- import './polyfill';
5
- import './code';
6
- import './term';
4
+ import './base';
5
+ import './_yfm-only';
7
6
  import './wide-mode';
8
7
  import './patch';
@@ -0,0 +1,12 @@
1
+ /**
2
+ Note: This file excludes "cut" and "tabs" as they are handled separately
3
+ in dedicated extensions (packages). In the future, "note", "file", "term"
4
+ and "table" will also be excluded from this file and moved to yfm.scss,
5
+ once they are moved to separate packages. Direct usage is not recommended,
6
+ as the file is subject to changes without prior notice.
7
+ */
8
+
9
+ @import 'note';
10
+ @import 'file';
11
+ @import 'table';
12
+ @import 'term';
@@ -0,0 +1,4 @@
1
+ @import 'common';
2
+ @import 'anchor';
3
+ @import 'highlight';
4
+ @import 'code';
package/src/scss/yfm.scss CHANGED
@@ -1,12 +1,5 @@
1
- @import 'common';
2
- @import 'note';
3
- @import 'anchor';
4
- @import 'highlight';
5
- @import 'code';
6
- @import 'file';
7
- @import 'term';
8
- @import 'table';
1
+ @import 'base';
2
+ @import 'yfm-only';
9
3
  @import 'modal';
10
-
11
4
  @import '@diplodoc/cut-extension/runtime';
12
5
  @import '@diplodoc/tabs-extension/runtime';
@@ -4,7 +4,7 @@ import {bold} from 'chalk';
4
4
 
5
5
  import {log} from './log';
6
6
  import liquidSnippet from './liquid';
7
- import initMarkdownit from './md';
7
+ import initMarkdownIt from './md';
8
8
 
9
9
  function applyLiquid(input: string, options: OptionsType) {
10
10
  const {
@@ -36,7 +36,7 @@ function emitResult(html: string, env: EnvType): OutputType {
36
36
  // eslint-disable-next-line consistent-return
37
37
  function transform(originInput: string, options: OptionsType = {}) {
38
38
  const input = applyLiquid(originInput, options);
39
- const {parse, compile, env} = initMarkdownit(options);
39
+ const {parse, compile, env} = initMarkdownIt(options);
40
40
 
41
41
  try {
42
42
  return emitResult(compile(parse(input)), env);
@@ -12,7 +12,7 @@ import extractTitle from './title';
12
12
  import getHeadings from './headings';
13
13
  import sanitizeHtml from './sanitize';
14
14
 
15
- function initMarkdownit(options: OptionsType) {
15
+ function initMarkdownIt(options: OptionsType) {
16
16
  const {
17
17
  allowHTML = false,
18
18
  linkify = false,
@@ -172,4 +172,4 @@ function initCompiler(md: MarkdownIt, options: OptionsType, env: EnvType) {
172
172
  };
173
173
  }
174
174
 
175
- export = initMarkdownit;
175
+ export = initMarkdownIt;
@@ -1,6 +1,6 @@
1
1
  import {bold} from 'chalk';
2
2
 
3
- import initMarkdownit from '../../md';
3
+ import initMarkdownIt from '../../md';
4
4
  import imsize from '../imsize';
5
5
  import {MarkdownItPluginOpts} from '../typings';
6
6
 
@@ -12,7 +12,7 @@ const BLOCK_START = '{% changelog %}';
12
12
  const BLOCK_END = '{% endchangelog %}';
13
13
 
14
14
  function parseChangelogs(str: string, path?: string) {
15
- const {parse, compile, env} = initMarkdownit({
15
+ const {parse, compile, env} = initMarkdownIt({
16
16
  plugins: [changelogPlugin, imsize],
17
17
  extractChangelogs: true,
18
18
  path,
@@ -12,7 +12,6 @@ function processRecursive(
12
12
  includePath: string,
13
13
  targetDestPath: string,
14
14
  options: IncludeCollectOpts,
15
- appendix: Map<string, string>,
16
15
  ) {
17
16
  const {path, log, copyFile, includedParentPath: includedParentPathNullable, included} = options;
18
17
  const includedParentPath = includedParentPathNullable || path;
@@ -34,20 +33,16 @@ function processRecursive(
34
33
  const includedRelativePath = getRelativePath(includedParentPath, includePath);
35
34
 
36
35
  // The appendix is the map that protects from multiple include files
37
- if (!appendix.has(includedRelativePath)) {
36
+ if (!options.appendix?.has(includedRelativePath)) {
38
37
  // Recursive function to include the depth structure
39
- const includeContent = collectRecursive(
40
- content,
41
- {
42
- ...options,
43
- path: includePath,
44
- includedParentPath,
45
- },
46
- appendix,
47
- );
38
+ const includeContent = collectRecursive(content, {
39
+ ...options,
40
+ path: includePath,
41
+ includedParentPath,
42
+ });
48
43
 
49
44
  // Add to appendix set structure
50
- appendix.set(
45
+ options.appendix?.set(
51
46
  includedRelativePath,
52
47
  `{% included (${includedRelativePath}) %}\n${includeContent}\n{% endincluded %}`,
53
48
  );
@@ -59,11 +54,7 @@ function processRecursive(
59
54
  }
60
55
  }
61
56
 
62
- function collectRecursive(
63
- result: string,
64
- options: IncludeCollectOpts,
65
- appendix: Map<string, string>,
66
- ) {
57
+ function collectRecursive(result: string, options: IncludeCollectOpts) {
67
58
  const {root, path, destPath = '', log, singlePage} = options;
68
59
 
69
60
  const INCLUDE_REGEXP = /{%\s*include\s*(notitle)?\s*\[(.+?)]\((.+?)\)\s*%}/g;
@@ -100,7 +91,7 @@ function collectRecursive(
100
91
 
101
92
  includesPaths.push(includePath);
102
93
 
103
- processRecursive(includePath, targetDestPath, options, appendix);
94
+ processRecursive(includePath, targetDestPath, options);
104
95
 
105
96
  includesPaths.pop();
106
97
  }
@@ -109,13 +100,17 @@ function collectRecursive(
109
100
  }
110
101
 
111
102
  function collect(input: string, options: IncludeCollectOpts) {
112
- const appendix: Map<string, string> = new Map();
103
+ const shouldWriteAppendix = !options.appendix;
113
104
 
114
- input = collectRecursive(input, options, appendix);
105
+ options.appendix = options.appendix ?? new Map();
115
106
 
116
- // Appendix should be appended to the end of the file (it supports depth structure, so the included files will have included as well)
117
- if (appendix.size > 0) {
118
- input += '\n' + [...appendix.values()].join('\n');
107
+ input = collectRecursive(input, options);
108
+
109
+ if (shouldWriteAppendix) {
110
+ // Appendix should be appended to the end of the file (it supports depth structure, so the included files will have included as well)
111
+ if (options.appendix.size > 0) {
112
+ input += '\n' + [...options.appendix.values()].join('\n');
113
+ }
119
114
  }
120
115
 
121
116
  return input;
@@ -14,4 +14,5 @@ export type IncludeCollectOpts = MarkdownItPluginOpts & {
14
14
  included: Boolean;
15
15
  includedParentPath?: string;
16
16
  additionalIncludedList?: string[];
17
+ appendix?: Map<string, string>;
17
18
  };
@@ -1,3 +1,13 @@
1
1
  import {transform} from '@diplodoc/tabs-extension';
2
2
 
3
- export = transform({bundle: false});
3
+ export = transform({
4
+ bundle: false,
5
+ features: {
6
+ enabledVariants: {
7
+ radio: true,
8
+ regular: true,
9
+ dropdown: true,
10
+ accordion: true,
11
+ },
12
+ },
13
+ });
@@ -37,3 +37,19 @@ export const сarriage = platform === 'win32' ? '\r\n' : '\n';
37
37
  export function generateID() {
38
38
  return Math.random().toString(36).substr(2, 8);
39
39
  }
40
+
41
+ export function append<T extends Record<string, []>, Key extends keyof T>(
42
+ target: T,
43
+ key: Key,
44
+ ...values: T[Key]
45
+ ) {
46
+ if (!target[key]) {
47
+ target[key] = values;
48
+
49
+ return;
50
+ }
51
+
52
+ values.forEach((value) => target[key].push(value));
53
+
54
+ return target;
55
+ }
@@ -11,8 +11,17 @@ export enum VideoService {
11
11
  Osf = 'osf',
12
12
  Yandex = 'yandex',
13
13
  Vk = 'vk',
14
+ Rutube = 'rutube',
15
+ Dzen = 'dzen',
14
16
  }
15
17
 
18
+ export type Service = {
19
+ csp?: Record<string, string[]>;
20
+ extract(url: string): string;
21
+ };
22
+
23
+ export type Services = [VideoService, Service][];
24
+
16
25
  export const defaults: VideoFullOptions = {
17
26
  url: videoUrl,
18
27
  youtube: {width: 640, height: 390},
@@ -22,4 +31,6 @@ export const defaults: VideoFullOptions = {
22
31
  osf: {width: '100%', height: '100%'},
23
32
  yandex: {width: 640, height: 390},
24
33
  vk: {width: 640, height: 390},
34
+ dzen: {width: 640, height: 390},
35
+ rutube: {width: 640, height: 390},
25
36
  };
@@ -5,6 +5,8 @@
5
5
  // Process @[osf](guid)
6
6
  // Process @[yandex](videoID)
7
7
  // Process @[vk](videoID)
8
+ // Process @[dzen](videoID)
9
+ // Process @[rutube](videoID)
8
10
 
9
11
  import type MarkdownIt from 'markdown-it';
10
12
  // eslint-disable-next-line no-duplicate-imports
@@ -13,6 +15,8 @@ import type ParserInline from 'markdown-it/lib/parser_inline';
13
15
  import type Renderer from 'markdown-it/lib/renderer';
14
16
  import type {VideoFullOptions, VideoPluginOptions, VideoToken} from './types';
15
17
 
18
+ import {append} from '../utils';
19
+
16
20
  import {parseVideoUrl} from './parsers';
17
21
  import {VideoService, defaults} from './const';
18
22
 
@@ -80,7 +84,7 @@ function tokenizeVideo(md: MarkdownIt, options: VideoFullOptions): Renderer.Rend
80
84
  }
81
85
 
82
86
  const EMBED_REGEX = /@\[([a-zA-Z].+)]\([\s]*(.*?)[\s]*[)]/im;
83
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
87
+
84
88
  function videoEmbed(md: MarkdownIt, _options: VideoFullOptions): ParserInline.RuleInline {
85
89
  return (state, silent) => {
86
90
  const theState = state;
@@ -100,12 +104,14 @@ function videoEmbed(md: MarkdownIt, _options: VideoFullOptions): ParserInline.Ru
100
104
  }
101
105
 
102
106
  const service = match[1];
103
- const videoID = parseVideoUrl(service, match[2]);
107
+ const parsed = parseVideoUrl(service, match[2]);
104
108
 
105
- if (videoID === false) {
109
+ if (parsed === false) {
106
110
  return false;
107
111
  }
108
112
 
113
+ const [videoID, csp] = parsed;
114
+
109
115
  const serviceStart = oldPos + 2;
110
116
  const serviceEnd = md.helpers.parseLinkLabel(state, oldPos + 1, false);
111
117
 
@@ -127,6 +133,12 @@ function videoEmbed(md: MarkdownIt, _options: VideoFullOptions): ParserInline.Ru
127
133
  }
128
134
 
129
135
  theState.pos += theState.src.indexOf(')', theState.pos);
136
+
137
+ if (csp) {
138
+ state.env.meta ??= {};
139
+ append(state.env.meta, 'csp', csp);
140
+ }
141
+
130
142
  return true;
131
143
  };
132
144
  }