@redneckz/wildless-cms-uni-blocks 0.8.29 → 0.8.31

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 (62) hide show
  1. package/bin/migrateContentUnit.js +2 -5
  2. package/bin/migration-scripts/0.8.31.js +86 -0
  3. package/bundle/blocks.schema.json +1 -1
  4. package/bundle/bundle.umd.js +1 -1
  5. package/bundle/bundle.umd.min.js +1 -1
  6. package/bundle/components/StepsBlock/StepsBlockContent.d.ts +3 -0
  7. package/bundle/content-page-repository/transformImgPath.d.ts +8 -0
  8. package/dist/components/StepsBlock/StepsBlockContent.d.ts +3 -0
  9. package/dist/content-page-repository/transformImg.js +6 -6
  10. package/dist/content-page-repository/transformImg.js.map +1 -1
  11. package/dist/content-page-repository/transformImgPath.d.ts +8 -0
  12. package/{mobile/dist/content-page-repository/transformSrc.js → dist/content-page-repository/transformImgPath.js} +7 -5
  13. package/dist/content-page-repository/transformImgPath.js.map +1 -0
  14. package/dist/content-page-repository/transformPicture.js +3 -3
  15. package/dist/content-page-repository/transformPicture.js.map +1 -1
  16. package/lib/components/StepsBlock/StepsBlockContent.d.ts +3 -0
  17. package/lib/content-page-repository/transformImg.js +6 -6
  18. package/lib/content-page-repository/transformImg.js.map +1 -1
  19. package/lib/content-page-repository/transformImgPath.d.ts +8 -0
  20. package/lib/content-page-repository/{transformSrc.js → transformImgPath.js} +5 -3
  21. package/lib/content-page-repository/transformImgPath.js.map +1 -0
  22. package/lib/content-page-repository/transformPicture.js +3 -3
  23. package/lib/content-page-repository/transformPicture.js.map +1 -1
  24. package/mobile/bundle/bundle.umd.js +1 -1
  25. package/mobile/bundle/bundle.umd.min.js +1 -1
  26. package/mobile/bundle/components/StepsBlock/StepsBlockContent.d.ts +3 -0
  27. package/mobile/bundle/content-page-repository/transformImgPath.d.ts +8 -0
  28. package/mobile/dist/components/StepsBlock/StepsBlockContent.d.ts +3 -0
  29. package/mobile/dist/content-page-repository/transformImg.js +6 -6
  30. package/mobile/dist/content-page-repository/transformImg.js.map +1 -1
  31. package/mobile/dist/content-page-repository/transformImgPath.d.ts +8 -0
  32. package/{dist/content-page-repository/transformSrc.js → mobile/dist/content-page-repository/transformImgPath.js} +7 -5
  33. package/mobile/dist/content-page-repository/transformImgPath.js.map +1 -0
  34. package/mobile/dist/content-page-repository/transformPicture.js +3 -3
  35. package/mobile/dist/content-page-repository/transformPicture.js.map +1 -1
  36. package/mobile/lib/components/StepsBlock/StepsBlockContent.d.ts +3 -0
  37. package/mobile/lib/content-page-repository/transformImg.js +6 -6
  38. package/mobile/lib/content-page-repository/transformImg.js.map +1 -1
  39. package/mobile/lib/content-page-repository/transformImgPath.d.ts +8 -0
  40. package/mobile/lib/content-page-repository/{transformSrc.js → transformImgPath.js} +5 -3
  41. package/mobile/lib/content-page-repository/transformImgPath.js.map +1 -0
  42. package/mobile/lib/content-page-repository/transformPicture.js +3 -3
  43. package/mobile/lib/content-page-repository/transformPicture.js.map +1 -1
  44. package/mobile/src/components/StepsBlock/StepsBlockContent.ts +3 -0
  45. package/mobile/src/content-page-repository/transformImg.ts +6 -9
  46. package/mobile/src/content-page-repository/{transformSrc.ts → transformImgPath.ts} +12 -3
  47. package/mobile/src/content-page-repository/transformPicture.ts +3 -6
  48. package/package.json +1 -1
  49. package/src/components/StepsBlock/StepsBlockContent.ts +3 -0
  50. package/src/content-page-repository/transformImg.ts +6 -9
  51. package/src/content-page-repository/{transformSrc.ts → transformImgPath.ts} +12 -3
  52. package/src/content-page-repository/transformPicture.ts +3 -6
  53. package/bundle/content-page-repository/transformSrc.d.ts +0 -3
  54. package/dist/content-page-repository/transformSrc.d.ts +0 -3
  55. package/dist/content-page-repository/transformSrc.js.map +0 -1
  56. package/lib/content-page-repository/transformSrc.d.ts +0 -3
  57. package/lib/content-page-repository/transformSrc.js.map +0 -1
  58. package/mobile/bundle/content-page-repository/transformSrc.d.ts +0 -3
  59. package/mobile/dist/content-page-repository/transformSrc.d.ts +0 -3
  60. package/mobile/dist/content-page-repository/transformSrc.js.map +0 -1
  61. package/mobile/lib/content-page-repository/transformSrc.d.ts +0 -3
  62. package/mobile/lib/content-page-repository/transformSrc.js.map +0 -1
@@ -7,12 +7,9 @@ export function migrateContentUnit(migrationScripts) {
7
7
  console.log('Start processing of:', unitPath);
8
8
  try {
9
9
  const content = JSON.parse(await readFile(unitPath, 'utf-8'));
10
+ const result = await contentProcessor(unitPath, content);
10
11
 
11
- await writeFile(
12
- unitPath,
13
- JSON.stringify(contentProcessor(unitPath, content), undefined, 2),
14
- 'utf-8',
15
- );
12
+ await writeFile(unitPath, JSON.stringify(result, undefined, 2), 'utf-8');
16
13
  } catch (ex) {
17
14
  console.warn(ex);
18
15
  } finally {
@@ -0,0 +1,86 @@
1
+ import crypto from 'crypto';
2
+ import { createReadStream, promises as fs } from 'fs';
3
+ import glob from 'glob';
4
+ import { basename } from 'path';
5
+ import { promisify } from 'util';
6
+
7
+ const findFiles = promisify(glob);
8
+
9
+ const CONTENT_DIR = './content';
10
+ const IMAGE_EXT_LIST = ['png', 'jpg', 'svg'];
11
+ const IMAGE_FIELD_KEYS = ['image', 'icon'];
12
+
13
+ export const description = 'v0.8.31';
14
+
15
+ export default async (unitPath, content) => {
16
+ replaceImgSrcRecursive(content);
17
+
18
+ return { ...content };
19
+ };
20
+
21
+ const getFileHash = async (filePath, algorithm = 'sha1') => {
22
+ return new Promise((resolve, reject) => {
23
+ const hash = crypto.createHash(algorithm);
24
+ const stream = createReadStream(filePath);
25
+ stream.on('error', (err) => reject(err));
26
+ stream.on('data', (chunk) => hash.update(chunk));
27
+ stream.on('end', () => resolve(hash.digest('hex')));
28
+ });
29
+ };
30
+
31
+ const getFilesHashMap = async (paths) => {
32
+ let fileHashMap = {};
33
+ for (const filePath of paths) {
34
+ const fileStat = await fs.lstat(filePath);
35
+ if (!fileStat.isFile()) {
36
+ continue;
37
+ }
38
+ fileHashMap[basename(filePath)] = await getFileHash(filePath);
39
+ }
40
+
41
+ return fileHashMap;
42
+ };
43
+
44
+ const getFileHashInfo = async () => {
45
+ const contentFiles = await findFiles(`${CONTENT_DIR}/**/*.@(${IMAGE_EXT_LIST.join('|')})`);
46
+ const filesHashMap = await getFilesHashMap(contentFiles);
47
+ const filesGroupByHash = Object.entries(filesHashMap).reduce(
48
+ (entryMap, [filePath, hash]) => entryMap.set(hash, [...(entryMap.get(hash) || []), filePath]),
49
+ new Map(),
50
+ );
51
+
52
+ filesGroupByHash.forEach((value) => value.sort());
53
+
54
+ return [filesHashMap, filesGroupByHash];
55
+ };
56
+
57
+ const [filesHashMap, filesGroupByHash] = await getFileHashInfo();
58
+
59
+ const isObject = (value) => {
60
+ return !!(value && typeof value === 'object' && !Array.isArray(value));
61
+ };
62
+
63
+ const replaceImgSrcRecursive = (node) => {
64
+ if (isObject(node)) {
65
+ const entries = Object.entries(node);
66
+
67
+ for (let i = 0; i < entries.length; i += 1) {
68
+ const [key, childNode] = entries[i];
69
+
70
+ if (IMAGE_FIELD_KEYS.includes(key) && childNode.src) {
71
+ const fileHash = filesHashMap[childNode.src];
72
+ const filesGroup = filesGroupByHash.get(fileHash);
73
+ const baseFileSrc = filesGroup ? filesGroup[0] : null;
74
+ if (baseFileSrc) {
75
+ childNode.src = baseFileSrc;
76
+ }
77
+ } else {
78
+ replaceImgSrcRecursive(childNode);
79
+ }
80
+ }
81
+ } else if (Array.isArray(node)) {
82
+ node.forEach((childNode) => {
83
+ replaceImgSrcRecursive(childNode);
84
+ });
85
+ }
86
+ };