@tryghost/url-utils 4.0.3 → 4.1.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/lib/url-utils.js CHANGED
@@ -427,6 +427,66 @@ module.exports = class UrlUtils {
427
427
  return utils.mobiledocAbsoluteToTransformReady(serializedMobiledoc, this.getSiteUrl(), _options);
428
428
  }
429
429
 
430
+ lexicalToTransformReady(serializedLexical, itemPath, options) {
431
+ if (typeof itemPath === 'object' && !options) {
432
+ options = itemPath;
433
+ itemPath = null;
434
+ }
435
+ const defaultOptions = {
436
+ cardTransformers: this._config.cardTransformers
437
+ };
438
+ const _options = assignOptions({}, defaultOptions, options || {});
439
+ return utils.lexicalToTransformReady(serializedLexical, this.getSiteUrl(), itemPath, _options);
440
+ }
441
+
442
+ lexicalRelativeToAbsolute(serializedLexical, itemPath, options) {
443
+ if (typeof itemPath === 'object' && !options) {
444
+ options = itemPath;
445
+ itemPath = null;
446
+ }
447
+ const defaultOptions = {
448
+ assetsOnly: false,
449
+ staticImageUrlPrefix: this._config.staticImageUrlPrefix,
450
+ cardTransformers: this._config.cardTransformers
451
+ };
452
+ const _options = assignOptions({}, defaultOptions, options || {});
453
+ return utils.lexicalRelativeToAbsolute(serializedLexical, this.getSiteUrl(), itemPath, _options);
454
+ }
455
+
456
+ lexicalRelativeToTransformReady(serializedLexical, itemPath, options) {
457
+ if (typeof itemPath === 'object' && !options) {
458
+ options = itemPath;
459
+ itemPath = null;
460
+ }
461
+ const defaultOptions = {
462
+ assetsOnly: false,
463
+ staticImageUrlPrefix: this._config.staticImageUrlPrefix,
464
+ cardTransformers: this._config.cardTransformers
465
+ };
466
+ const _options = assignOptions({}, defaultOptions, options || {});
467
+ return utils.lexicalRelativeToTransformReady(serializedLexical, this.getSiteUrl(), itemPath, _options);
468
+ }
469
+
470
+ lexicalAbsoluteToRelative(serializedLexical, options = {}) {
471
+ const defaultOptions = {
472
+ assetsOnly: false,
473
+ staticImageUrlPrefix: this._config.staticImageUrlPrefix,
474
+ cardTransformers: this._config.cardTransformers
475
+ };
476
+ const _options = assignOptions({}, defaultOptions, options);
477
+ return utils.lexicalAbsoluteToRelative(serializedLexical, this.getSiteUrl(), _options);
478
+ }
479
+
480
+ lexicalAbsoluteToTransformReady(serializedLexical, options = {}) {
481
+ const defaultOptions = {
482
+ assetsOnly: false,
483
+ staticImageUrlPrefix: this._config.staticImageUrlPrefix,
484
+ cardTransformers: this._config.cardTransformers
485
+ };
486
+ const _options = assignOptions({}, defaultOptions, options);
487
+ return utils.lexicalAbsoluteToTransformReady(serializedLexical, this.getSiteUrl(), _options);
488
+ }
489
+
430
490
  plaintextToTransformReady(plaintext, options = {}) {
431
491
  const defaultOptions = {
432
492
  staticImageUrlPrefix: this._config.staticImageUrlPrefix
@@ -0,0 +1,36 @@
1
+ function lexicalTransform(serializedLexical, siteUrl, transformFunction, itemPath, _options = {}) {
2
+ const defaultOptions = {assetsOnly: false, secure: false};
3
+ const options = Object.assign({}, defaultOptions, _options, {siteUrl, itemPath});
4
+
5
+ if (!serializedLexical) {
6
+ return serializedLexical;
7
+ }
8
+
9
+ // function only accepts serialized lexical so there's no chance of accidentally
10
+ // modifying pass-by-reference objects
11
+ const lexical = JSON.parse(serializedLexical);
12
+
13
+ if (!lexical?.root?.children) {
14
+ return serializedLexical;
15
+ }
16
+
17
+ // any lexical links will be a child object with a `url` attribute,
18
+ // recursively walk the tree transforming any `.url`s
19
+ const transformChildren = function (children) {
20
+ for (const child of children) {
21
+ if (child.url) {
22
+ child.url = transformFunction(child.url, siteUrl, itemPath, options);
23
+ }
24
+
25
+ if (child.children) {
26
+ transformChildren(child.children);
27
+ }
28
+ }
29
+ };
30
+
31
+ transformChildren(lexical.root.children);
32
+
33
+ return JSON.stringify(lexical);
34
+ }
35
+
36
+ module.exports = lexicalTransform;
@@ -19,6 +19,11 @@ module.exports = {
19
19
  mobiledocAbsoluteToTransformReady: require('./mobiledoc-absolute-to-transform-ready'),
20
20
  mobiledocRelativeToTransformReady: require('./mobiledoc-relative-to-transform-ready'),
21
21
  mobiledocToTransformReady: require('./mobiledoc-to-transform-ready'),
22
+ lexicalAbsoluteToRelative: require('./lexical-absolute-to-relative'),
23
+ lexicalRelativeToAbsolute: require('./lexical-relative-to-absolute'),
24
+ lexicalAbsoluteToTransformReady: require('./lexical-absolute-to-transform-ready'),
25
+ lexicalRelativeToTransformReady: require('./lexical-relative-to-transform-ready'),
26
+ lexicalToTransformReady: require('./lexical-to-transform-ready'),
22
27
  plaintextAbsoluteToTransformReady: require('./plaintext-absolute-to-transform-ready'),
23
28
  plaintextRelativeToTransformReady: require('./plaintext-relative-to-transform-ready'),
24
29
  plaintextToTransformReady: require('./plaintext-to-transform-ready'),
@@ -0,0 +1,16 @@
1
+ const absoluteToRelative = require('./absolute-to-relative');
2
+ const lexicalTransform = require('./_lexical-transform');
3
+
4
+ function lexicalAbsoluteToRelative(serializedLexical, siteUrl, _options = {}) {
5
+ const defaultOptions = {assetsOnly: false, secure: false, cardTransformers: []};
6
+ const overrideOptions = {siteUrl, transformType: 'absoluteToRelative'};
7
+ const options = Object.assign({}, defaultOptions, _options, overrideOptions);
8
+
9
+ const transformFunction = function (_url, _siteUrl, _itemPath, __options) {
10
+ return absoluteToRelative(_url, _siteUrl, __options);
11
+ };
12
+
13
+ return lexicalTransform(serializedLexical, siteUrl, transformFunction, '', options);
14
+ }
15
+
16
+ module.exports = lexicalAbsoluteToRelative;
@@ -0,0 +1,16 @@
1
+ const absoluteToTransformReady = require('./absolute-to-transform-ready');
2
+ const lexicalTransform = require('./_lexical-transform');
3
+
4
+ function lexicalAbsoluteToRelative(serializedLexical, siteUrl, _options = {}) {
5
+ const defaultOptions = {assetsOnly: false, secure: false, cardTransformers: []};
6
+ const overrideOptions = {siteUrl, transformType: 'toTransformReady'};
7
+ const options = Object.assign({}, defaultOptions, _options, overrideOptions);
8
+
9
+ const transformFunction = function (_url, _siteUrl, _itemPath, __options) {
10
+ return absoluteToTransformReady(_url, _siteUrl, __options);
11
+ };
12
+
13
+ return lexicalTransform(serializedLexical, siteUrl, transformFunction, '', options);
14
+ }
15
+
16
+ module.exports = lexicalAbsoluteToRelative;
@@ -0,0 +1,12 @@
1
+ const relativeToAbsolute = require('./relative-to-absolute');
2
+ const lexicalTransform = require('./_lexical-transform');
3
+
4
+ function lexicalRelativeToAbsolute(serializedLexical, siteUrl, itemPath, _options = {}) {
5
+ const defaultOptions = {assetsOnly: false, secure: false, cardTransformers: []};
6
+ const overrideOptions = {siteUrl, itemPath, transformType: 'relativeToAbsolute'};
7
+ const options = Object.assign({}, defaultOptions, _options, overrideOptions);
8
+
9
+ return lexicalTransform(serializedLexical, siteUrl, relativeToAbsolute, itemPath, options);
10
+ }
11
+
12
+ module.exports = lexicalRelativeToAbsolute;
@@ -0,0 +1,12 @@
1
+ const relativeToTransformReady = require('./relative-to-transform-ready');
2
+ const lexicalTransform = require('./_lexical-transform');
3
+
4
+ function lexicalRelativeToTransformReady(serializedLexical, siteUrl, itemPath, _options = {}) {
5
+ const defaultOptions = {assetsOnly: false, secure: false, cardTransformers: []};
6
+ const overrideOptions = {siteUrl, transformType: 'toTransformReady'};
7
+ const options = Object.assign({}, defaultOptions, _options, overrideOptions);
8
+
9
+ return lexicalTransform(serializedLexical, siteUrl, relativeToTransformReady, itemPath, options);
10
+ }
11
+
12
+ module.exports = lexicalRelativeToTransformReady;
@@ -0,0 +1,13 @@
1
+ const lexicalRelativeToAbsolute = require('./lexical-relative-to-absolute');
2
+ const lexicalAbsoluteToTransformReady = require('./lexical-absolute-to-transform-ready');
3
+
4
+ function lexicalToTransformReady(lexical, siteUrl, itemPath, options) {
5
+ if (typeof itemPath === 'object' && !options) {
6
+ options = itemPath;
7
+ itemPath = null;
8
+ }
9
+ const absolute = lexicalRelativeToAbsolute(lexical, siteUrl, itemPath, options);
10
+ return lexicalAbsoluteToTransformReady(absolute, siteUrl, options);
11
+ }
12
+
13
+ module.exports = lexicalToTransformReady;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tryghost/url-utils",
3
- "version": "4.0.3",
3
+ "version": "4.1.0",
4
4
  "repository": "https://github.com/TryGhost/SDK/tree/master/packages/url-utils",
5
5
  "author": "Ghost Foundation",
6
6
  "license": "MIT",
@@ -34,5 +34,5 @@
34
34
  "remark-footnotes": "^1.0.0",
35
35
  "unist-util-visit": "^2.0.0"
36
36
  },
37
- "gitHead": "9251588cb81347205c5dab850636bba4c86fe58d"
37
+ "gitHead": "c4bc4d5ee2c7fea2eb9fc8de6cb8fd479ea039e3"
38
38
  }