jostraca 0.31.0 → 0.31.2

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 (67) hide show
  1. package/README.md +355 -0
  2. package/dist/build/BuildContext.d.ts +1 -0
  3. package/dist/build/BuildContext.js +10 -0
  4. package/dist/build/BuildContext.js.map +1 -1
  5. package/dist/build/BuildMeta.js +21 -4
  6. package/dist/build/BuildMeta.js.map +1 -1
  7. package/dist/build/FileHandler.d.ts +11 -4
  8. package/dist/build/FileHandler.js +468 -92
  9. package/dist/build/FileHandler.js.map +1 -1
  10. package/dist/cmp/Content.js.map +1 -1
  11. package/dist/cmp/Copy.js +5 -1
  12. package/dist/cmp/Copy.js.map +1 -1
  13. package/dist/cmp/File.js +2 -0
  14. package/dist/cmp/File.js.map +1 -1
  15. package/dist/cmp/Folder.js.map +1 -1
  16. package/dist/cmp/Fragment.js +36 -7
  17. package/dist/cmp/Fragment.js.map +1 -1
  18. package/dist/cmp/Inject.js +30 -1
  19. package/dist/cmp/Inject.js.map +1 -1
  20. package/dist/cmp/Line.js.map +1 -1
  21. package/dist/cmp/List.js.map +1 -1
  22. package/dist/cmp/None.js.map +1 -1
  23. package/dist/cmp/Project.js.map +1 -1
  24. package/dist/cmp/Slot.js.map +1 -1
  25. package/dist/diff.d.ts +36 -0
  26. package/dist/diff.js +446 -0
  27. package/dist/diff.js.map +1 -0
  28. package/dist/jostraca.d.ts +19 -18
  29. package/dist/jostraca.js +83 -24
  30. package/dist/jostraca.js.map +1 -1
  31. package/dist/op/ContentOp.js.map +1 -1
  32. package/dist/op/CopyOp.js +158 -22
  33. package/dist/op/CopyOp.js.map +1 -1
  34. package/dist/op/FileOp.js +26 -27
  35. package/dist/op/FileOp.js.map +1 -1
  36. package/dist/op/FolderOp.js +3 -0
  37. package/dist/op/FolderOp.js.map +1 -1
  38. package/dist/op/FragmentOp.js.map +1 -1
  39. package/dist/op/InjectOp.js +29 -7
  40. package/dist/op/InjectOp.js.map +1 -1
  41. package/dist/op/NoneOp.js.map +1 -1
  42. package/dist/op/ProjectOp.js.map +1 -1
  43. package/dist/op/SlotOp.js.map +1 -1
  44. package/dist/tsconfig.tsbuildinfo +1 -1
  45. package/dist/types.d.ts +1 -0
  46. package/dist/util/basic.d.ts +5 -1
  47. package/dist/util/basic.js +218 -9
  48. package/dist/util/basic.js.map +1 -1
  49. package/dist/util/point.d.ts +8 -7
  50. package/dist/util/point.js.map +1 -1
  51. package/package.json +19 -11
  52. package/src/build/BuildContext.ts +12 -0
  53. package/src/build/BuildMeta.ts +24 -5
  54. package/src/build/FileHandler.ts +489 -121
  55. package/src/cmp/Copy.ts +5 -1
  56. package/src/cmp/File.ts +3 -0
  57. package/src/cmp/Fragment.ts +41 -7
  58. package/src/cmp/Inject.ts +38 -1
  59. package/src/diff.ts +657 -0
  60. package/src/jostraca.ts +83 -20
  61. package/src/op/CopyOp.ts +173 -22
  62. package/src/op/FileOp.ts +29 -31
  63. package/src/op/FolderOp.ts +6 -0
  64. package/src/op/InjectOp.ts +39 -7
  65. package/src/tsconfig.json +3 -1
  66. package/src/types.ts +5 -0
  67. package/src/util/basic.ts +250 -10
@@ -3,7 +3,11 @@ import Path from 'node:path'
3
3
 
4
4
  import { FileHandler } from './FileHandler'
5
5
 
6
- import { humanify } from '../util/basic'
6
+ import { humanify, getdlog } from '../util/basic'
7
+
8
+
9
+ // Log non-fatal weirdness.
10
+ const dlog = getdlog('jostraca', __filename)
7
11
 
8
12
 
9
13
  type FileMetaData = {
@@ -94,10 +98,25 @@ function loadMetaData(fh: FileHandler, bmeta: BuildMetaData) {
94
98
  // directly and no longer re-join `this.folder`.
95
99
  const metapath = Path.join(fh.folder, bmeta.foldername, bmeta.filename)
96
100
  if (fh.existsFile(metapath)) {
97
- const json = fh.loadJSON(metapath)
98
- bmeta.last = json.last
99
- bmeta.hlast = json.hlast
100
- bmeta.files = json.files
101
+ try {
102
+ const json = fh.loadJSON(metapath)
103
+ bmeta.last = null == json?.last ? -1 : json.last
104
+ bmeta.hlast = null == json?.hlast ? -1 : json.hlast
105
+ bmeta.files = json?.files || {}
106
+ }
107
+ catch (err: any) {
108
+ // A truncated or hand-edited meta log used to throw straight out of
109
+ // the BuildMeta constructor, so a corrupt bookkeeping file blocked
110
+ // generation entirely — with a JSON parse error that says nothing
111
+ // about how to recover. The log is regenerated on every run, so
112
+ // starting from empty state is safe: the only cost is that merge
113
+ // baselines look absent for one run.
114
+ dlog('meta', 'unreadable meta log, continuing with empty state: ' +
115
+ metapath + ' err=' + err.message)
116
+ bmeta.last = -1
117
+ bmeta.hlast = -1
118
+ bmeta.files = {}
119
+ }
101
120
  }
102
121
  return bmeta
103
122
  }