jostraca 0.31.0 → 0.31.1

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 (66) hide show
  1. package/dist/build/BuildContext.d.ts +1 -0
  2. package/dist/build/BuildContext.js +10 -0
  3. package/dist/build/BuildContext.js.map +1 -1
  4. package/dist/build/BuildMeta.js +21 -4
  5. package/dist/build/BuildMeta.js.map +1 -1
  6. package/dist/build/FileHandler.d.ts +11 -4
  7. package/dist/build/FileHandler.js +468 -92
  8. package/dist/build/FileHandler.js.map +1 -1
  9. package/dist/cmp/Content.js.map +1 -1
  10. package/dist/cmp/Copy.js +5 -1
  11. package/dist/cmp/Copy.js.map +1 -1
  12. package/dist/cmp/File.js +2 -0
  13. package/dist/cmp/File.js.map +1 -1
  14. package/dist/cmp/Folder.js.map +1 -1
  15. package/dist/cmp/Fragment.js +36 -7
  16. package/dist/cmp/Fragment.js.map +1 -1
  17. package/dist/cmp/Inject.js +30 -1
  18. package/dist/cmp/Inject.js.map +1 -1
  19. package/dist/cmp/Line.js.map +1 -1
  20. package/dist/cmp/List.js.map +1 -1
  21. package/dist/cmp/None.js.map +1 -1
  22. package/dist/cmp/Project.js.map +1 -1
  23. package/dist/cmp/Slot.js.map +1 -1
  24. package/dist/diff.d.ts +36 -0
  25. package/dist/diff.js +446 -0
  26. package/dist/diff.js.map +1 -0
  27. package/dist/jostraca.d.ts +19 -18
  28. package/dist/jostraca.js +83 -24
  29. package/dist/jostraca.js.map +1 -1
  30. package/dist/op/ContentOp.js.map +1 -1
  31. package/dist/op/CopyOp.js +158 -22
  32. package/dist/op/CopyOp.js.map +1 -1
  33. package/dist/op/FileOp.js +26 -27
  34. package/dist/op/FileOp.js.map +1 -1
  35. package/dist/op/FolderOp.js +3 -0
  36. package/dist/op/FolderOp.js.map +1 -1
  37. package/dist/op/FragmentOp.js.map +1 -1
  38. package/dist/op/InjectOp.js +29 -7
  39. package/dist/op/InjectOp.js.map +1 -1
  40. package/dist/op/NoneOp.js.map +1 -1
  41. package/dist/op/ProjectOp.js.map +1 -1
  42. package/dist/op/SlotOp.js.map +1 -1
  43. package/dist/tsconfig.tsbuildinfo +1 -1
  44. package/dist/types.d.ts +1 -0
  45. package/dist/util/basic.d.ts +5 -1
  46. package/dist/util/basic.js +218 -9
  47. package/dist/util/basic.js.map +1 -1
  48. package/dist/util/point.d.ts +8 -7
  49. package/dist/util/point.js.map +1 -1
  50. package/package.json +18 -11
  51. package/src/build/BuildContext.ts +12 -0
  52. package/src/build/BuildMeta.ts +24 -5
  53. package/src/build/FileHandler.ts +489 -121
  54. package/src/cmp/Copy.ts +5 -1
  55. package/src/cmp/File.ts +3 -0
  56. package/src/cmp/Fragment.ts +41 -7
  57. package/src/cmp/Inject.ts +38 -1
  58. package/src/diff.ts +657 -0
  59. package/src/jostraca.ts +83 -20
  60. package/src/op/CopyOp.ts +173 -22
  61. package/src/op/FileOp.ts +29 -31
  62. package/src/op/FolderOp.ts +6 -0
  63. package/src/op/InjectOp.ts +39 -7
  64. package/src/tsconfig.json +3 -1
  65. package/src/types.ts +5 -0
  66. package/src/util/basic.ts +250 -10
@@ -34,6 +34,7 @@ declare class BuildContext {
34
34
  version: boolean;
35
35
  }, fs: () => FST, now: () => number);
36
36
  addmeta(file: string, meta: any): void;
37
+ folderPath(): string;
37
38
  duplicateFolder(): string;
38
39
  }
39
40
  export { BuildContext };
@@ -50,6 +50,16 @@ class BuildContext {
50
50
  addmeta(file, meta) {
51
51
  this.bmeta.add(file, meta);
52
52
  }
53
+ // Folder path segments for the current build position, as a canonical
54
+ // (forward-slash) prefix. When neither a Project nor a Folder has seeded
55
+ // the path, fall back to the base output folder — otherwise a top-level
56
+ // File would join onto '' and resolve to '/<name>' at the filesystem
57
+ // root, ignoring the configured output folder entirely. FolderOp.before
58
+ // applies the same fallback when seeding the path.
59
+ folderPath() {
60
+ const { path, parent } = this.current.folder;
61
+ return 0 < path.length ? path.join('/') : parent;
62
+ }
53
63
  duplicateFolder() {
54
64
  if (null == this.dfolder) {
55
65
  this.dfolder =
@@ -1 +1 @@
1
- {"version":3,"file":"BuildContext.js","sourceRoot":"","sources":["../../src/build/BuildContext.ts"],"names":[],"mappings":";;;;;;AACA,0DAA4B;AAS5B,+CAEsB;AAEtB,2CAEoB;AAapB,MAAM,EAAE,GAAG,eAAe,CAAA;AAG1B,4DAA4D;AAC5D,MAAM,YAAY;IAEhB,EAAE,CAAW;IACb,GAAG,CAAc;IAEjB,KAAK,CAAW;IAChB,EAAE,CAAa;IACf,KAAK,CAAO;IACZ,IAAI,CAAQ;IACZ,GAAG,CAAK;IACR,MAAM,CAAQ;IACd,OAAO,CASN;IACD,GAAG,CAGF;IAED,OAAO,CAAS;IAGhB,YACE,MAAc,EACd,QAAkB,EAClB,OAIC,EACD,EAAa,EACb,GAAiB;QAEjB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;QACZ,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QAEd,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,EAAE,GAAG,iCAAiC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;QACrE,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;QACf,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,CAAA;QAEjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG;YACb,OAAO,EAAE;gBACP,IAAI,EAAE,SAAS,EAAE;aAClB;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,SAAS,EAAE;gBACjB,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,EAAE;aACT;YACD,4BAA4B;YAC5B,IAAI,EAAE,SAAS,EAAE;YACjB,OAAO,EAAE,SAAS;SACnB,CAAA;QACD,IAAI,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAA;QAEpC,IAAI,CAAC,EAAE,GAAG,IAAI,yBAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;QAClD,IAAI,CAAC,KAAK,GAAG,IAAI,qBAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACrC,CAAC;IAGD,OAAO,CAAC,IAAY,EAAE,IAAS;QAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC5B,CAAC;IAGD,eAAe;QACb,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO;gBACV,mBAAI,CAAC,SAAS,CACZ,mBAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAA;QACtE,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;CACF;AAUC,oCAAY;AAPd,SAAS,SAAS;IAChB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;AAC1D,CAAC"}
1
+ {"version":3,"file":"BuildContext.js","sourceRoot":"","sources":["../../src/build/BuildContext.ts"],"names":[],"mappings":";;;;;;AACA,0DAA4B;AAS5B,+CAEsB;AAEtB,2CAEoB;AAapB,MAAM,EAAE,GAAG,eAAe,CAAA;AAG1B,4DAA4D;AAC5D,MAAM,YAAY;IAEhB,EAAE,CAAW;IACb,GAAG,CAAc;IAEjB,KAAK,CAAW;IAChB,EAAE,CAAa;IACf,KAAK,CAAO;IACZ,IAAI,CAAQ;IACZ,GAAG,CAAK;IACR,MAAM,CAAQ;IACd,OAAO,CASN;IACD,GAAG,CAGF;IAED,OAAO,CAAS;IAGhB,YACE,MAAc,EACd,QAAkB,EAClB,OAIC,EACD,EAAa,EACb,GAAiB;QAEjB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;QACZ,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QAEd,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,EAAE,GAAG,iCAAiC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;QACrE,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;QACf,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,CAAA;QAEjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG;YACb,OAAO,EAAE;gBACP,IAAI,EAAE,SAAS,EAAE;aAClB;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,SAAS,EAAE;gBACjB,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,EAAE;aACT;YACD,4BAA4B;YAC5B,IAAI,EAAE,SAAS,EAAE;YACjB,OAAO,EAAE,SAAS;SACnB,CAAA;QACD,IAAI,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAA;QAEpC,IAAI,CAAC,EAAE,GAAG,IAAI,yBAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;QAClD,IAAI,CAAC,KAAK,GAAG,IAAI,qBAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACrC,CAAC;IAGD,OAAO,CAAC,IAAY,EAAE,IAAS;QAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC5B,CAAC;IAGD,sEAAsE;IACtE,yEAAyE;IACzE,wEAAwE;IACxE,qEAAqE;IACrE,wEAAwE;IACxE,mDAAmD;IACnD,UAAU;QACR,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA;QAC5C,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAClD,CAAC;IAGD,eAAe;QACb,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO;gBACV,mBAAI,CAAC,SAAS,CACZ,mBAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAA;QACtE,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;CACF;QAUC,YAAY;AAPd,SAAS,SAAS;IAChB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;AAC1D,CAAC"}
@@ -6,6 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.BuildMeta = void 0;
7
7
  const node_path_1 = __importDefault(require("node:path"));
8
8
  const basic_1 = require("../util/basic");
9
+ // Log non-fatal weirdness.
10
+ const dlog = (0, basic_1.getdlog)('jostraca', __filename);
9
11
  // Handle loading, recording,and saving of build meta data
10
12
  class BuildMeta {
11
13
  fh;
@@ -58,10 +60,25 @@ function loadMetaData(fh, bmeta) {
58
60
  // directly and no longer re-join `this.folder`.
59
61
  const metapath = node_path_1.default.join(fh.folder, bmeta.foldername, bmeta.filename);
60
62
  if (fh.existsFile(metapath)) {
61
- const json = fh.loadJSON(metapath);
62
- bmeta.last = json.last;
63
- bmeta.hlast = json.hlast;
64
- bmeta.files = json.files;
63
+ try {
64
+ const json = fh.loadJSON(metapath);
65
+ bmeta.last = null == json?.last ? -1 : json.last;
66
+ bmeta.hlast = null == json?.hlast ? -1 : json.hlast;
67
+ bmeta.files = json?.files || {};
68
+ }
69
+ catch (err) {
70
+ // A truncated or hand-edited meta log used to throw straight out of
71
+ // the BuildMeta constructor, so a corrupt bookkeeping file blocked
72
+ // generation entirely — with a JSON parse error that says nothing
73
+ // about how to recover. The log is regenerated on every run, so
74
+ // starting from empty state is safe: the only cost is that merge
75
+ // baselines look absent for one run.
76
+ dlog('meta', 'unreadable meta log, continuing with empty state: ' +
77
+ metapath + ' err=' + err.message);
78
+ bmeta.last = -1;
79
+ bmeta.hlast = -1;
80
+ bmeta.files = {};
81
+ }
65
82
  }
66
83
  return bmeta;
67
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BuildMeta.js","sourceRoot":"","sources":["../../src/build/BuildMeta.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BuildMeta.js","sourceRoot":"","sources":["../../src/build/BuildMeta.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,7 @@ declare class FileHandler {
30
30
  unchanged: string[];
31
31
  };
32
32
  createdDirs: Set<string>;
33
+ savedPaths: Set<string>;
33
34
  constructor(bctx: BuildContext, existing: {
34
35
  txt: any;
35
36
  bin: any;
@@ -39,13 +40,15 @@ declare class FileHandler {
39
40
  version: boolean;
40
41
  });
41
42
  relative(path: string, whence?: string): string;
42
- save(path: string, newContentSource: string | Buffer, write?: boolean | string, whence?: string): void;
43
+ withinFolder(path: string): boolean;
44
+ saveBinary(path: string, newContentSource: string | Buffer, whence?: string): void;
45
+ save(path: string, newContentSource: string | Buffer, write?: boolean | string, whence?: string, mode?: number, isText?: boolean): void;
43
46
  copy(frompath: string, topath: string, write?: boolean | string, whence?: string): void;
44
- merge(editA: string, orig: string, editB: string, why: string[]): {
47
+ merge(generated: string, baseline: string, existing: string, why: string[]): {
45
48
  content: string;
46
49
  conflict: boolean;
47
50
  };
48
- diff(oldcontent: string, newcontent: string): string;
51
+ diff(generated: string, existing: string): string;
49
52
  existsFile(path: string, whence?: string): boolean;
50
53
  copyFile(frompath: string, topath: string, whence?: string): void;
51
54
  loadJSON(path: string, opts?: any | string, whence?: string): any;
@@ -53,8 +56,12 @@ declare class FileHandler {
53
56
  loadFile(path: string, opts?: any | string, whence?: string): string | Buffer;
54
57
  ensureFolder(path: string): void;
55
58
  private ensureDir;
59
+ private chmodUnchanged;
60
+ private writeFileAtomic;
56
61
  saveFile(path: string, content: string | Buffer, opts?: any | string, whence?: string): void;
57
62
  filelog(kind: string, path: string): void;
58
63
  }
64
+ declare function annotatedPath(target: string, kind: string): string;
65
+ declare function validName(name: any, kind: string, errmark: string): void;
59
66
  declare function validPath(path: string, maxdepth: number, errmark: string): void;
60
- export { validPath, FileHandler };
67
+ export { annotatedPath, validName, validPath, FileHandler };