@diplodoc/transform 4.50.1 → 4.50.3
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.map +1 -1
- package/dist/css/_yfm-only.min.css.map +1 -1
- package/dist/css/base.css +2 -0
- package/dist/css/base.css.map +3 -3
- package/dist/css/base.min.css +1 -1
- package/dist/css/base.min.css.map +3 -3
- package/dist/css/print.css.map +1 -1
- package/dist/css/yfm.css +2 -0
- 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/lib/plugins/links/index.js +20 -19
- package/lib/plugins/links/index.js.map +1 -1
- package/package.json +1 -1
- package/src/scss/_common.scss +1 -0
- package/src/transform/plugins/links/index.ts +25 -24
|
@@ -85,16 +85,16 @@ function processLink(md, state, tokens, idx, opts) {
|
|
|
85
85
|
const currentPath = state.env.path || startPath;
|
|
86
86
|
const linkToken = tokens[idx];
|
|
87
87
|
const nextToken = tokens[idx + 1];
|
|
88
|
-
|
|
89
|
-
if (!
|
|
88
|
+
const originalHref = (0, utils_1.getHrefTokenAttr)(linkToken);
|
|
89
|
+
if (!originalHref) {
|
|
90
90
|
log.error(`Empty link in ${(0, chalk_1.bold)(startPath)}`);
|
|
91
91
|
return;
|
|
92
92
|
}
|
|
93
|
-
const { pathname, hash } = url_1.default.parse(
|
|
93
|
+
const { pathname, hash } = url_1.default.parse(originalHref);
|
|
94
94
|
let file;
|
|
95
95
|
let fileExists;
|
|
96
96
|
let isPageFile;
|
|
97
|
-
if (!(0, utils_1.isLocalUrl)(
|
|
97
|
+
if (!(0, utils_1.isLocalUrl)(originalHref)) {
|
|
98
98
|
linkToken.attrSet('target', '_blank');
|
|
99
99
|
linkToken.attrSet('rel', 'noreferrer noopener');
|
|
100
100
|
return;
|
|
@@ -106,13 +106,13 @@ function processLink(md, state, tokens, idx, opts) {
|
|
|
106
106
|
if (isPageFile && !fileExists) {
|
|
107
107
|
let needShowError = true;
|
|
108
108
|
if (needSkipLinkFn) {
|
|
109
|
-
needShowError = !needSkipLinkFn(
|
|
109
|
+
needShowError = !needSkipLinkFn(originalHref);
|
|
110
110
|
}
|
|
111
111
|
if (notFoundCb && needShowError) {
|
|
112
112
|
notFoundCb(file.replace(root, ''));
|
|
113
113
|
}
|
|
114
114
|
if (needShowError) {
|
|
115
|
-
log.error(`Link is unreachable: ${(0, chalk_1.bold)(
|
|
115
|
+
log.error(`Link is unreachable: ${(0, chalk_1.bold)(originalHref)} in ${(0, chalk_1.bold)(currentPath)}`);
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
}
|
|
@@ -139,24 +139,21 @@ function processLink(md, state, tokens, idx, opts) {
|
|
|
139
139
|
tokens,
|
|
140
140
|
idx,
|
|
141
141
|
nextToken,
|
|
142
|
-
href,
|
|
142
|
+
href: originalHref,
|
|
143
143
|
currentPath,
|
|
144
144
|
log,
|
|
145
145
|
cache,
|
|
146
146
|
});
|
|
147
147
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
if (pathname || newPathname) {
|
|
154
|
-
const transformer = transformLink || utils_1.defaultTransformLink;
|
|
155
|
-
linkToken.attrSet('href', transformer(href));
|
|
156
|
-
}
|
|
148
|
+
const patchedHref = !(0, path_1.isAbsolute)(originalHref) && !originalHref.includes('//')
|
|
149
|
+
? url_1.default.format(Object.assign(Object.assign({}, url_1.default.parse(originalHref)), { pathname: getPublicPath(opts, file) }))
|
|
150
|
+
: originalHref;
|
|
151
|
+
const linkHrefTransformer = transformLink || utils_1.defaultTransformLink;
|
|
152
|
+
linkToken.attrSet('href', linkHrefTransformer(patchedHref));
|
|
157
153
|
}
|
|
158
154
|
const index = (md, opts) => {
|
|
159
155
|
const plugin = (state) => {
|
|
156
|
+
var _a, _b;
|
|
160
157
|
const tokens = state.tokens;
|
|
161
158
|
let i = 0;
|
|
162
159
|
while (i < tokens.length) {
|
|
@@ -164,12 +161,16 @@ const index = (md, opts) => {
|
|
|
164
161
|
const childrenTokens = tokens[i].children || [];
|
|
165
162
|
let j = 0;
|
|
166
163
|
while (j < childrenTokens.length) {
|
|
167
|
-
const
|
|
168
|
-
const
|
|
164
|
+
const token = childrenTokens[j];
|
|
165
|
+
const isLinkOpenToken = token.type === 'link_open';
|
|
166
|
+
const tokenClass = token.attrGet('class');
|
|
169
167
|
/* Don't process anchor links */
|
|
170
168
|
const isYfmAnchor = tokenClass ? tokenClass.includes('yfm-anchor') : false;
|
|
171
|
-
|
|
169
|
+
const wasProcessedBefore = Boolean((_a = token.meta) === null || _a === void 0 ? void 0 : _a.yfmLinkPluginProcessed);
|
|
170
|
+
if (isLinkOpenToken && !wasProcessedBefore && !isYfmAnchor) {
|
|
172
171
|
processLink(md, state, childrenTokens, j, opts);
|
|
172
|
+
(_b = token.meta) !== null && _b !== void 0 ? _b : (token.meta = {});
|
|
173
|
+
token.meta.yfmLinkPluginProcessed = true;
|
|
173
174
|
}
|
|
174
175
|
j++;
|
|
175
176
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transform/plugins/links/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transform/plugins/links/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/scss/_common.scss
CHANGED
|
@@ -144,19 +144,19 @@ function processLink(
|
|
|
144
144
|
const linkToken = tokens[idx];
|
|
145
145
|
const nextToken = tokens[idx + 1];
|
|
146
146
|
|
|
147
|
-
|
|
147
|
+
const originalHref = getHrefTokenAttr(linkToken);
|
|
148
148
|
|
|
149
|
-
if (!
|
|
149
|
+
if (!originalHref) {
|
|
150
150
|
log.error(`Empty link in ${bold(startPath)}`);
|
|
151
151
|
return;
|
|
152
152
|
}
|
|
153
153
|
|
|
154
|
-
const {pathname, hash} = url.parse(
|
|
154
|
+
const {pathname, hash} = url.parse(originalHref);
|
|
155
155
|
let file;
|
|
156
156
|
let fileExists;
|
|
157
157
|
let isPageFile;
|
|
158
158
|
|
|
159
|
-
if (!isLocalUrl(
|
|
159
|
+
if (!isLocalUrl(originalHref)) {
|
|
160
160
|
linkToken.attrSet('target', '_blank');
|
|
161
161
|
linkToken.attrSet('rel', 'noreferrer noopener');
|
|
162
162
|
return;
|
|
@@ -170,7 +170,7 @@ function processLink(
|
|
|
170
170
|
if (isPageFile && !fileExists) {
|
|
171
171
|
let needShowError = true;
|
|
172
172
|
if (needSkipLinkFn) {
|
|
173
|
-
needShowError = !needSkipLinkFn(
|
|
173
|
+
needShowError = !needSkipLinkFn(originalHref);
|
|
174
174
|
}
|
|
175
175
|
|
|
176
176
|
if (notFoundCb && needShowError) {
|
|
@@ -178,7 +178,7 @@ function processLink(
|
|
|
178
178
|
}
|
|
179
179
|
|
|
180
180
|
if (needShowError) {
|
|
181
|
-
log.error(`Link is unreachable: ${bold(
|
|
181
|
+
log.error(`Link is unreachable: ${bold(originalHref)} in ${bold(currentPath)}`);
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
184
|
} else if (hash) {
|
|
@@ -206,28 +206,23 @@ function processLink(
|
|
|
206
206
|
tokens,
|
|
207
207
|
idx,
|
|
208
208
|
nextToken,
|
|
209
|
-
href,
|
|
209
|
+
href: originalHref,
|
|
210
210
|
currentPath,
|
|
211
211
|
log,
|
|
212
212
|
cache,
|
|
213
213
|
});
|
|
214
214
|
}
|
|
215
215
|
|
|
216
|
-
|
|
216
|
+
const patchedHref =
|
|
217
|
+
!isAbsolute(originalHref) && !originalHref.includes('//')
|
|
218
|
+
? url.format({
|
|
219
|
+
...url.parse(originalHref),
|
|
220
|
+
pathname: getPublicPath(opts, file),
|
|
221
|
+
})
|
|
222
|
+
: originalHref;
|
|
223
|
+
const linkHrefTransformer = transformLink || defaultTransformLink;
|
|
217
224
|
|
|
218
|
-
|
|
219
|
-
newPathname = getPublicPath(opts, file);
|
|
220
|
-
|
|
221
|
-
href = url.format({
|
|
222
|
-
...url.parse(href),
|
|
223
|
-
pathname: newPathname,
|
|
224
|
-
});
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
if (pathname || newPathname) {
|
|
228
|
-
const transformer = transformLink || defaultTransformLink;
|
|
229
|
-
linkToken.attrSet('href', transformer(href));
|
|
230
|
-
}
|
|
225
|
+
linkToken.attrSet('href', linkHrefTransformer(patchedHref));
|
|
231
226
|
}
|
|
232
227
|
|
|
233
228
|
const index: MarkdownItPluginCb<ProcOpts & Options> = (md: MarkdownItIncluded, opts) => {
|
|
@@ -241,14 +236,20 @@ const index: MarkdownItPluginCb<ProcOpts & Options> = (md: MarkdownItIncluded, o
|
|
|
241
236
|
let j = 0;
|
|
242
237
|
|
|
243
238
|
while (j < childrenTokens.length) {
|
|
244
|
-
const
|
|
245
|
-
|
|
239
|
+
const token = childrenTokens[j];
|
|
240
|
+
|
|
241
|
+
const isLinkOpenToken = token.type === 'link_open';
|
|
242
|
+
const tokenClass = token.attrGet('class');
|
|
246
243
|
|
|
247
244
|
/* Don't process anchor links */
|
|
248
245
|
const isYfmAnchor = tokenClass ? tokenClass.includes('yfm-anchor') : false;
|
|
246
|
+
const wasProcessedBefore = Boolean(token.meta?.yfmLinkPluginProcessed);
|
|
249
247
|
|
|
250
|
-
if (isLinkOpenToken && !isYfmAnchor) {
|
|
248
|
+
if (isLinkOpenToken && !wasProcessedBefore && !isYfmAnchor) {
|
|
251
249
|
processLink(md, state, childrenTokens, j, opts);
|
|
250
|
+
|
|
251
|
+
token.meta ??= {};
|
|
252
|
+
token.meta.yfmLinkPluginProcessed = true;
|
|
252
253
|
}
|
|
253
254
|
|
|
254
255
|
j++;
|