jostraca 0.13.0 → 0.15.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.
Files changed (61) hide show
  1. package/dist/cmp/Content.js +1 -0
  2. package/dist/cmp/Content.js.map +1 -1
  3. package/dist/cmp/Copy.js +14 -1
  4. package/dist/cmp/Copy.js.map +1 -1
  5. package/dist/cmp/Fragment.js +12 -2
  6. package/dist/cmp/Fragment.js.map +1 -1
  7. package/dist/cmp/Line.js +1 -0
  8. package/dist/cmp/Line.js.map +1 -1
  9. package/dist/cmp/List.d.ts +2 -0
  10. package/dist/cmp/List.js +29 -0
  11. package/dist/cmp/List.js.map +1 -0
  12. package/dist/jostraca.d.ts +138 -5
  13. package/dist/jostraca.js +157 -22
  14. package/dist/jostraca.js.map +1 -1
  15. package/dist/op/ContentOp.d.ts +3 -3
  16. package/dist/op/ContentOp.js +8 -2
  17. package/dist/op/ContentOp.js.map +1 -1
  18. package/dist/op/CopyOp.d.ts +2 -2
  19. package/dist/op/CopyOp.js +41 -51
  20. package/dist/op/CopyOp.js.map +1 -1
  21. package/dist/op/FileOp.d.ts +3 -3
  22. package/dist/op/FileOp.js +15 -12
  23. package/dist/op/FileOp.js.map +1 -1
  24. package/dist/op/FolderOp.d.ts +1 -1
  25. package/dist/op/FolderOp.js +5 -3
  26. package/dist/op/FolderOp.js.map +1 -1
  27. package/dist/op/FragmentOp.js +4 -3
  28. package/dist/op/FragmentOp.js.map +1 -1
  29. package/dist/op/InjectOp.js +6 -9
  30. package/dist/op/InjectOp.js.map +1 -1
  31. package/dist/op/NoneOp.d.ts +3 -3
  32. package/dist/op/NoneOp.js +2 -2
  33. package/dist/op/NoneOp.js.map +1 -1
  34. package/dist/op/ProjectOp.d.ts +2 -2
  35. package/dist/op/ProjectOp.js +3 -7
  36. package/dist/op/ProjectOp.js.map +1 -1
  37. package/dist/tsconfig.tsbuildinfo +1 -1
  38. package/dist/types.d.ts +42 -5
  39. package/dist/utility.d.ts +3 -1
  40. package/dist/utility.js +87 -367
  41. package/dist/utility.js.map +1 -1
  42. package/package.json +8 -4
  43. package/src/cmp/Content.ts +3 -0
  44. package/src/cmp/Copy.ts +28 -2
  45. package/src/cmp/Fragment.ts +22 -3
  46. package/src/cmp/Line.ts +1 -0
  47. package/src/cmp/List.ts +43 -0
  48. package/src/jostraca.ts +203 -29
  49. package/src/op/ContentOp.ts +13 -4
  50. package/src/op/CopyOp.ts +50 -61
  51. package/src/op/FileOp.ts +14 -17
  52. package/src/op/FolderOp.ts +6 -3
  53. package/src/op/FragmentOp.ts +5 -3
  54. package/src/op/InjectOp.ts +6 -13
  55. package/src/op/NoneOp.ts +3 -3
  56. package/src/op/ProjectOp.ts +5 -12
  57. package/src/types.ts +45 -4
  58. package/src/utility.ts +104 -365
  59. package/src/cmp/Line.ts~ +0 -23
  60. package/src/cmp/Slot.ts~ +0 -24
  61. package/src/op/SlotOp.ts~ +0 -31
@@ -5,6 +5,7 @@ const jostraca_1 = require("../jostraca");
5
5
  const Content = (0, jostraca_1.cmp)(function Content(props, children) {
6
6
  const node = props.ctx$.node;
7
7
  node.kind = 'content';
8
+ node.indent = props.indent;
8
9
  let src = null != props.arg ? props.arg :
9
10
  null != props.src ? props.src :
10
11
  'string' === typeof children ? children : '';
@@ -1 +1 @@
1
- {"version":3,"file":"Content.js","sourceRoot":"","sources":["../../src/cmp/Content.ts"],"names":[],"mappings":";;;AAGA,0CAA2C;AAG3C,MAAM,OAAO,GAAG,IAAA,cAAG,EAAC,SAAS,OAAO,CAAC,KAAU,EAAE,QAAa;IAC5D,MAAM,IAAI,GAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA;IAClC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAA;IACrB,IAAI,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B,QAAQ,KAAK,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;IAEhD,GAAG,GAAG,IAAA,mBAAQ,EAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE;QACpC,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAA;IACF,IAAI,CAAC,OAAO,GAAG,GAAG,CAAA;IAClB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;AACxB,CAAC,CAAC,CAAA;AAKA,0BAAO"}
1
+ {"version":3,"file":"Content.js","sourceRoot":"","sources":["../../src/cmp/Content.ts"],"names":[],"mappings":";;;AAGA,0CAA2C;AAG3C,MAAM,OAAO,GAAG,IAAA,cAAG,EAAC,SAAS,OAAO,CAAC,KAAU,EAAE,QAAa;IAC5D,MAAM,IAAI,GAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA;IAClC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAA;IACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;IAE1B,IAAI,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B,QAAQ,KAAK,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;IAEhD,GAAG,GAAG,IAAA,mBAAQ,EAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE;QACpC,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAA;IAEF,IAAI,CAAC,OAAO,GAAG,GAAG,CAAA;IAClB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;AACxB,CAAC,CAAC,CAAA;AAKA,0BAAO"}
package/dist/cmp/Copy.js CHANGED
@@ -2,11 +2,24 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Copy = void 0;
4
4
  const jostraca_1 = require("../jostraca");
5
+ const gubu_1 = require("gubu");
6
+ const From = (from, _, s) => s.ctx.fs().statSync(from);
7
+ const CopyShape = (0, gubu_1.Gubu)({
8
+ ctx$: Object,
9
+ // The From path is independent of the project folder.
10
+ from: (0, gubu_1.Check)(From).String(),
11
+ // output folder is current folder, this is an optional subfolder,
12
+ // or if copying a file, the output filename, if different.
13
+ to: (0, gubu_1.Optional)(String),
14
+ exclude: (0, gubu_1.Optional)((0, gubu_1.One)(Boolean, [(0, gubu_1.One)(String, RegExp)]))
15
+ }, { name: 'Copy' });
5
16
  const Copy = (0, jostraca_1.cmp)(function Copy(props, _children) {
17
+ props = CopyShape(props, { fs: props.ctx$.fs });
6
18
  const node = props.ctx$.node;
7
19
  node.kind = 'copy';
8
- node.name = props.name;
9
20
  node.from = props.from;
21
+ // NOTE: props.to is used as the Node name
22
+ node.name = props.to;
10
23
  node.exclude = null == props.exclude ? node.exclude : props.exclude;
11
24
  });
12
25
  exports.Copy = Copy;
@@ -1 +1 @@
1
- {"version":3,"file":"Copy.js","sourceRoot":"","sources":["../../src/cmp/Copy.ts"],"names":[],"mappings":";;;AAGA,0CAAiC;AAGjC,MAAM,IAAI,GAAG,IAAA,cAAG,EAAC,SAAS,IAAI,CAAC,KAAU,EAAE,SAAc;IACvD,MAAM,IAAI,GAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA;IAClC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAA;IAClB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;IACtB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;IACtB,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAA;AACrE,CAAC,CAAC,CAAA;AAIA,oBAAI"}
1
+ {"version":3,"file":"Copy.js","sourceRoot":"","sources":["../../src/cmp/Copy.ts"],"names":[],"mappings":";;;AAGA,0CAAiC;AAEjC,+BAAiD;AAGjD,MAAM,IAAI,GAAG,CAAC,IAAS,EAAE,CAAM,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAErE,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC;IACrB,IAAI,EAAE,MAAM;IAEZ,sDAAsD;IACtD,IAAI,EAAE,IAAA,YAAK,EAAC,IAAI,CAAC,CAAC,MAAM,EAAuB;IAE/C,kEAAkE;IAClE,2DAA2D;IAC3D,EAAE,EAAE,IAAA,eAAQ,EAAC,MAAM,CAAsB;IAEzC,OAAO,EAAE,IAAA,eAAQ,EAAC,IAAA,UAAG,EAAC,OAAO,EAAE,CAAC,IAAA,UAAG,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAmB;CACzE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;AAKpB,MAAM,IAAI,GAAG,IAAA,cAAG,EAAC,SAAS,IAAI,CAAC,KAAgB,EAAE,SAAc;IAC7D,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;IAE/C,MAAM,IAAI,GAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA;IAElC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAA;IAClB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;IAEtB,2CAA2C;IAC3C,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAA;IAEpB,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAA;AACrE,CAAC,CAAC,CAAA;AAIA,oBAAI"}
@@ -6,14 +6,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Fragment = void 0;
7
7
  const node_path_1 = __importDefault(require("node:path"));
8
8
  const jostraca_1 = require("../jostraca");
9
+ const gubu_1 = require("gubu");
10
+ const From = (from, _, s) => s.ctx.fs().statSync(from);
11
+ const FragmentShape = (0, gubu_1.Gubu)({
12
+ ctx$: Object,
13
+ from: (0, gubu_1.Check)(From).String(),
14
+ exclude: (0, gubu_1.Optional)((0, gubu_1.One)(Boolean, [String])),
15
+ indent: (0, gubu_1.Optional)((0, gubu_1.One)(String, Number)),
16
+ replace: {},
17
+ }, { name: 'Fragment' });
9
18
  const Fragment = (0, jostraca_1.cmp)(function Fragment(props, children) {
19
+ props = FragmentShape(props, { fs: props.ctx$.fs });
10
20
  const node = props.ctx$.node;
11
21
  node.kind = 'fragment';
12
22
  node.from = props.from;
13
23
  node.indent = props.indent;
14
- // const replace = node.meta.replace = props.replace
15
24
  const replace = props.replace || {};
16
- const { fs, folder, model } = props.ctx$;
25
+ const { folder, model } = props.ctx$;
26
+ const fs = props.ctx$.fs();
17
27
  let frompath = node.from;
18
28
  // TODO: this is relative to the output - but that is just one case - provide more control?
19
29
  if (!node_path_1.default.isAbsolute(frompath)) {
@@ -1 +1 @@
1
- {"version":3,"file":"Fragment.js","sourceRoot":"","sources":["../../src/cmp/Fragment.ts"],"names":[],"mappings":";;;;;;AACA,0DAA4B;AAI5B,0CAAiE;AAGjE,MAAM,QAAQ,GAAG,IAAA,cAAG,EAAC,SAAS,QAAQ,CAAC,KAAU,EAAE,QAAa;IAC9D,MAAM,IAAI,GAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA;IAElC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAA;IACtB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;IACtB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;IAC1B,oDAAoD;IACpD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAA;IAGnC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,CAAA;IACxC,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAc,CAAA;IAElC,2FAA2F;IAC3F,IAAI,CAAC,mBAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACtD,CAAC;IAED,IAAI,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAG3C,MAAM,SAAS,GAA4B,EAAE,CAAA;IAE7C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,CACtC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAA;IAC7E,IAAA,eAAI,EAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IAC9B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;IAEvB,OAAO,CAAC,2DAA2D,CAAC;QAClE,GAAG,EAAE;YACH,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,CAAC,CAAA;YAC5D,IAAA,eAAI,EAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;YAC9B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;QACzB,CAAC,CAAA;IAEH,IAAA,eAAI,EAAC,SAAS,EAAE,CAAC,IAAS,EAAE,EAAE;QAC5B,OAAO,CACL,mCAAmC;YACnC,IAAA,gBAAK,EAAC,IAAI,CAAC,IAAI,CAAC;YAChB,2BAA2B,CAC5B,GAAG,GAAG,EAAE;YACP,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,CACtC,MAAM,KAAK,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAA;YACxD,IAAA,eAAI,EAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;YAC9B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;QACzB,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,IAAA,mBAAQ,EAAC,GAAG,EAAE,KAAK,EAAE;QACnB,OAAO;QACP,MAAM,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,kBAAO,EAAC,CAAC,CAAC;KACtD,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAIA,4BAAQ"}
1
+ {"version":3,"file":"Fragment.js","sourceRoot":"","sources":["../../src/cmp/Fragment.ts"],"names":[],"mappings":";;;;;;AACA,0DAA4B;AAI5B,0CAAiE;AAEjE,+BAAiD;AAGjD,MAAM,IAAI,GAAG,CAAC,IAAS,EAAE,CAAM,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAErE,MAAM,aAAa,GAAG,IAAA,WAAI,EAAC;IACzB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,IAAA,YAAK,EAAC,IAAI,CAAC,CAAC,MAAM,EAAuB;IAC/C,OAAO,EAAE,IAAA,eAAQ,EAAC,IAAA,UAAG,EAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAkC;IAC1E,MAAM,EAAE,IAAA,eAAQ,EAAC,IAAA,UAAG,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,EAAE,EAAS;CACnB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;AAMxB,MAAM,QAAQ,GAAG,IAAA,cAAG,EAAC,SAAS,QAAQ,CAAC,KAAoB,EAAE,QAAa;IACxE,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;IAEnD,MAAM,IAAI,GAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA;IAElC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAA;IACtB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;IACtB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;IAE1B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAA;IAGnC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,CAAA;IACpC,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAA;IAC1B,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAc,CAAA;IAElC,2FAA2F;IAC3F,IAAI,CAAC,mBAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACtD,CAAC;IAED,IAAI,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAG3C,MAAM,SAAS,GAA4B,EAAE,CAAA;IAE7C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,CACtC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAA;IAC7E,IAAA,eAAI,EAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IAC9B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;IAEvB,OAAO,CAAC,2DAA2D,CAAC;QAClE,GAAG,EAAE;YACH,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,CAAC,CAAA;YAC5D,IAAA,eAAI,EAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;YAC9B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;QACzB,CAAC,CAAA;IAEH,IAAA,eAAI,EAAC,SAAS,EAAE,CAAC,IAAS,EAAE,EAAE;QAC5B,OAAO,CACL,mCAAmC;YACnC,IAAA,gBAAK,EAAC,IAAI,CAAC,IAAI,CAAC;YAChB,2BAA2B,CAC5B,GAAG,GAAG,EAAE;YACP,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,CACtC,MAAM,KAAK,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAA;YACxD,IAAA,eAAI,EAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;YAC9B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;QACzB,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,IAAA,mBAAQ,EAAC,GAAG,EAAE,KAAK,EAAE;QACnB,OAAO;QACP,MAAM,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,kBAAO,EAAC,CAAC,CAAC;KACtD,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAIA,4BAAQ"}
package/dist/cmp/Line.js CHANGED
@@ -5,6 +5,7 @@ const jostraca_1 = require("../jostraca");
5
5
  const Line = (0, jostraca_1.cmp)(function Line(props, children) {
6
6
  const node = props.ctx$.node;
7
7
  node.kind = 'content';
8
+ node.indent = props.indent;
8
9
  let src = null != props.arg ? props.arg :
9
10
  null != props.src ? props.src :
10
11
  'string' === typeof children ? children : '';
@@ -1 +1 @@
1
- {"version":3,"file":"Line.js","sourceRoot":"","sources":["../../src/cmp/Line.ts"],"names":[],"mappings":";;;AAGA,0CAA2C;AAG3C,MAAM,IAAI,GAAG,IAAA,cAAG,EAAC,SAAS,IAAI,CAAC,KAAU,EAAE,QAAa;IACtD,MAAM,IAAI,GAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA;IAClC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAA;IAErB,IAAI,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B,QAAQ,KAAK,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;IAEhD,GAAG,IAAI,IAAI,CAAA;IAEX,GAAG,GAAG,IAAA,mBAAQ,EAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACrC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAA;IAClB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;AACxB,CAAC,CAAC,CAAA;AAKA,oBAAI"}
1
+ {"version":3,"file":"Line.js","sourceRoot":"","sources":["../../src/cmp/Line.ts"],"names":[],"mappings":";;;AAGA,0CAA2C;AAG3C,MAAM,IAAI,GAAG,IAAA,cAAG,EAAC,SAAS,IAAI,CAAC,KAAU,EAAE,QAAa;IACtD,MAAM,IAAI,GAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA;IAClC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAA;IACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;IAE1B,IAAI,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B,QAAQ,KAAK,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;IAEhD,GAAG,IAAI,IAAI,CAAA;IAEX,GAAG,GAAG,IAAA,mBAAQ,EAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACrC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAA;IAClB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;AACxB,CAAC,CAAC,CAAA;AAKA,oBAAI"}
@@ -0,0 +1,2 @@
1
+ declare const List: import("../types").Component;
2
+ export { List };
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.List = void 0;
4
+ const jostraca_1 = require("../jostraca");
5
+ const List = (0, jostraca_1.cmp)(function List(props, children) {
6
+ const node = props.ctx$.node;
7
+ node.kind = 'content';
8
+ const indent = node.indent = props.indent;
9
+ const item = props.item;
10
+ // TODO: after cmp processing children should ALWAYS be an array
11
+ children = Array.isArray(children) ? children : [children];
12
+ children = children.map((child) => 'string' === typeof child ?
13
+ ({ indent, replace }) => (0, jostraca_1.Content)({ indent, replace }) : child);
14
+ (0, jostraca_1.each)(item, (item) => (0, jostraca_1.each)(children, {
15
+ call: true, args: {
16
+ item,
17
+ indent,
18
+ // TODO: test!
19
+ replace: {
20
+ '/{item(\\.(?<path>[^}]+))?}/': ({ path }) => (0, jostraca_1.getx)(item, path)
21
+ }
22
+ }
23
+ }));
24
+ if (false !== props.line) {
25
+ (0, jostraca_1.Line)('');
26
+ }
27
+ });
28
+ exports.List = List;
29
+ //# sourceMappingURL=List.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"List.js","sourceRoot":"","sources":["../../src/cmp/List.ts"],"names":[],"mappings":";;;AAGA,0CAAsE;AAGtE,MAAM,IAAI,GAAG,IAAA,cAAG,EAAC,SAAS,IAAI,CAAC,KAAU,EAAE,QAAa;IACtD,MAAM,IAAI,GAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA;IAClC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAA;IACrB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;IAEzC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;IAEvB,gEAAgE;IAChE,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;IAE1D,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CACrC,QAAQ,KAAK,OAAO,KAAK,CAAC,CAAC;QACzB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAO,EAAE,EAAE,CAAC,IAAA,kBAAO,EAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAEvE,IAAA,eAAI,EAAC,IAAI,EAAE,CAAC,IAAS,EAAE,EAAE,CAAC,IAAA,eAAI,EAAC,QAAQ,EAAE;QACvC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;YAChB,IAAI;YACJ,MAAM;YAEN,cAAc;YACd,OAAO,EAAE;gBACP,8BAA8B,EAAE,CAAC,EAAE,IAAI,EAAO,EAAE,EAAE,CAAC,IAAA,eAAI,EAAC,IAAI,EAAE,IAAI,CAAC;aACpE;SACF;KACF,CAAC,CAAC,CAAA;IAEH,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QACzB,IAAA,eAAI,EAAC,EAAE,CAAC,CAAA;IACV,CAAC;AACH,CAAC,CAAC,CAAA;AAKA,oBAAI"}
@@ -1,5 +1,5 @@
1
- import type { JostracaOptions, Node, Component } from './types';
2
- import { each, select, get, getx, camelify, snakify, kebabify, cmap, vmap, names, template, escre } from './utility';
1
+ import type { Node, Component, BuildContext } from './types';
2
+ import { each, select, get, getx, camelify, snakify, kebabify, cmap, vmap, names, template, escre, indent, isbinext } from './utility';
3
3
  import { Content } from './cmp/Content';
4
4
  import { Line } from './cmp/Line';
5
5
  import { Slot } from './cmp/Slot';
@@ -9,10 +9,143 @@ import { Inject } from './cmp/Inject';
9
9
  import { Fragment } from './cmp/Fragment';
10
10
  import { Folder } from './cmp/Folder';
11
11
  import { Project } from './cmp/Project';
12
+ import { List } from './cmp/List';
12
13
  declare const deep: any;
13
- declare function Jostraca(gopts?: JostracaOptions): {
14
- generate: (opts: JostracaOptions, root: Function) => Promise<any>;
14
+ declare const OptionsShape: {
15
+ <V>(root?: V | undefined, ctx?: import("gubu").Context): V & {
16
+ folder: string;
17
+ meta: any;
18
+ fs: any;
19
+ log: any;
20
+ debug: string;
21
+ exclude: boolean;
22
+ existing: {
23
+ write: boolean;
24
+ preserve: boolean;
25
+ present: boolean;
26
+ merge: boolean;
27
+ };
28
+ existingBinary: {
29
+ write: boolean;
30
+ preserve: boolean;
31
+ present: boolean;
32
+ };
33
+ model: {};
34
+ build: boolean;
35
+ mem: boolean;
36
+ vol: {};
37
+ cmp: {
38
+ Copy: {
39
+ ignore: any[];
40
+ };
41
+ };
42
+ };
43
+ valid: <V>(root?: V | undefined, ctx?: import("gubu").Context) => root is V & {
44
+ folder: string;
45
+ meta: any;
46
+ fs: any;
47
+ log: any;
48
+ debug: string;
49
+ exclude: boolean;
50
+ existing: {
51
+ write: boolean;
52
+ preserve: boolean;
53
+ present: boolean;
54
+ merge: boolean;
55
+ };
56
+ existingBinary: {
57
+ write: boolean;
58
+ preserve: boolean;
59
+ present: boolean;
60
+ };
61
+ model: {};
62
+ build: boolean;
63
+ mem: boolean;
64
+ vol: {};
65
+ cmp: {
66
+ Copy: {
67
+ ignore: any[];
68
+ };
69
+ };
70
+ };
71
+ match(root?: any, ctx?: import("gubu").Context): boolean;
72
+ error(root?: any, ctx?: import("gubu").Context): {
73
+ gubu: boolean;
74
+ code: string;
75
+ gname: string;
76
+ props: ({
77
+ path: string;
78
+ type: string;
79
+ value: any;
80
+ }[]);
81
+ desc: () => ({
82
+ name: string;
83
+ code: string;
84
+ err: {
85
+ key: string;
86
+ type: string;
87
+ node: import("gubu").Node<any>;
88
+ value: any;
89
+ path: string;
90
+ why: string;
91
+ check: string;
92
+ args: Record<string, any>;
93
+ mark: number;
94
+ text: string;
95
+ use: any;
96
+ }[];
97
+ ctx: any;
98
+ });
99
+ toJSON(): /*elided*/ any & {
100
+ err: any;
101
+ name: string;
102
+ message: string;
103
+ };
104
+ name: string;
105
+ message: string;
106
+ stack?: string;
107
+ }[];
108
+ spec(): any;
109
+ node(): import("gubu").Node<{
110
+ folder: string;
111
+ meta: any;
112
+ fs: any;
113
+ log: any;
114
+ debug: string;
115
+ exclude: boolean;
116
+ existing: {
117
+ write: boolean;
118
+ preserve: boolean;
119
+ present: boolean;
120
+ merge: boolean;
121
+ };
122
+ existingBinary: {
123
+ write: boolean;
124
+ preserve: boolean;
125
+ present: boolean;
126
+ };
127
+ model: {};
128
+ build: boolean;
129
+ mem: boolean;
130
+ vol: {};
131
+ cmp: {
132
+ Copy: {
133
+ ignore: any[];
134
+ };
135
+ };
136
+ }>;
137
+ stringify(...rest: any[]): string;
138
+ jsonify(): any;
139
+ toString(this: any): string;
140
+ gubu: {
141
+ gubu$: symbol;
142
+ v$: string;
143
+ };
144
+ };
145
+ type JostracaOptions = ReturnType<typeof OptionsShape>;
146
+ declare function Jostraca(gopts_in?: JostracaOptions | {}): {
147
+ generate: (opts_in: JostracaOptions | {}, root: Function) => Promise<any>;
15
148
  };
16
149
  declare function cmp(component: Function): Component;
17
150
  export type { JostracaOptions, Component, Node, };
18
- export { Jostraca, cmp, each, select, get, getx, camelify, snakify, kebabify, cmap, vmap, names, template, escre, deep, Project, Content, File, Inject, Fragment, Folder, Copy, Line, Slot, };
151
+ export { Jostraca, BuildContext, cmp, each, select, get, getx, camelify, snakify, kebabify, cmap, vmap, names, template, escre, indent, deep, isbinext, Project, Content, File, Inject, Fragment, Folder, Copy, Line, Slot, List, };
package/dist/jostraca.js CHANGED
@@ -37,7 +37,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
37
37
  return (mod && mod.__esModule) ? mod : { "default": mod };
38
38
  };
39
39
  Object.defineProperty(exports, "__esModule", { value: true });
40
- exports.Slot = exports.Line = exports.Copy = exports.Folder = exports.Fragment = exports.Inject = exports.File = exports.Content = exports.Project = exports.deep = exports.escre = exports.template = exports.names = exports.vmap = exports.cmap = exports.kebabify = exports.snakify = exports.camelify = exports.getx = exports.get = exports.select = exports.each = void 0;
40
+ exports.List = exports.Slot = exports.Line = exports.Copy = exports.Folder = exports.Fragment = exports.Inject = exports.File = exports.Content = exports.Project = exports.isbinext = exports.deep = exports.indent = exports.escre = exports.template = exports.names = exports.vmap = exports.cmap = exports.kebabify = exports.snakify = exports.camelify = exports.getx = exports.get = exports.select = exports.each = void 0;
41
41
  exports.Jostraca = Jostraca;
42
42
  exports.cmp = cmp;
43
43
  // TODO:
@@ -47,6 +47,8 @@ const Fs = __importStar(require("node:fs"));
47
47
  const node_path_1 = __importDefault(require("node:path"));
48
48
  const node_async_hooks_1 = require("node:async_hooks");
49
49
  const jsonic_1 = require("jsonic");
50
+ const gubu_1 = require("gubu");
51
+ const Diff = require('diff');
50
52
  const memfs_1 = require("memfs");
51
53
  const utility_1 = require("./utility");
52
54
  Object.defineProperty(exports, "each", { enumerable: true, get: function () { return utility_1.each; } });
@@ -61,6 +63,8 @@ Object.defineProperty(exports, "vmap", { enumerable: true, get: function () { re
61
63
  Object.defineProperty(exports, "names", { enumerable: true, get: function () { return utility_1.names; } });
62
64
  Object.defineProperty(exports, "template", { enumerable: true, get: function () { return utility_1.template; } });
63
65
  Object.defineProperty(exports, "escre", { enumerable: true, get: function () { return utility_1.escre; } });
66
+ Object.defineProperty(exports, "indent", { enumerable: true, get: function () { return utility_1.indent; } });
67
+ Object.defineProperty(exports, "isbinext", { enumerable: true, get: function () { return utility_1.isbinext; } });
64
68
  const Content_1 = require("./cmp/Content");
65
69
  Object.defineProperty(exports, "Content", { enumerable: true, get: function () { return Content_1.Content; } });
66
70
  const Line_1 = require("./cmp/Line");
@@ -79,6 +83,8 @@ const Folder_1 = require("./cmp/Folder");
79
83
  Object.defineProperty(exports, "Folder", { enumerable: true, get: function () { return Folder_1.Folder; } });
80
84
  const Project_1 = require("./cmp/Project");
81
85
  Object.defineProperty(exports, "Project", { enumerable: true, get: function () { return Project_1.Project; } });
86
+ const List_1 = require("./cmp/List");
87
+ Object.defineProperty(exports, "List", { enumerable: true, get: function () { return List_1.List; } });
82
88
  const CopyOp_1 = require("./op/CopyOp");
83
89
  const ProjectOp_1 = require("./op/ProjectOp");
84
90
  const FolderOp_1 = require("./op/FolderOp");
@@ -99,12 +105,46 @@ const DEFAULT_LOGGER = {
99
105
  error: (...args) => console.error(new Date().toISOString(), 'ERROR', ...args),
100
106
  fatal: (...args) => console.error(new Date().toISOString(), 'FATAL', ...args),
101
107
  };
102
- function Jostraca(gopts) {
108
+ const OptionsShape = (0, gubu_1.Gubu)({
109
+ folder: '.', // Base output folder for generated files. Default: `.`.
110
+ meta: {}, // Provide meta data to the generation process. Default: `{}`
111
+ fs: (() => undefined), // File system API. Default: `node:fs`.
112
+ log: DEFAULT_LOGGER, // Logging interface.
113
+ debug: 'info', // Generate additional debugging information.
114
+ // TOOD: needs rethink
115
+ exclude: false, // Exclude modified output files. Default: `false`.
116
+ existing: {
117
+ write: true, // Overwrite existing files (unless present=true).
118
+ preserve: false, // Keep a backup copy (.old.) of overwritten files.
119
+ present: false, // Present the new file using .new. name annotation.
120
+ merge: false, // Annotated merge of new generate and existing file.
121
+ },
122
+ existingBinary: {
123
+ write: true, // Overwrite existing files (unless present=true).
124
+ preserve: false, // Keep a backup copy (.old.) of overwritten files.
125
+ present: false, // Present the new file using .new. name annotation.
126
+ // No merge of binary files
127
+ },
128
+ model: {},
129
+ build: true,
130
+ mem: false,
131
+ vol: {},
132
+ // Component specific options.
133
+ cmp: {
134
+ Copy: {
135
+ ignore: []
136
+ }
137
+ }
138
+ });
139
+ function Jostraca(gopts_in) {
103
140
  GLOBAL.jostraca = new node_async_hooks_1.AsyncLocalStorage();
104
- async function generate(opts, root) {
105
- const useMemFS = opts.mem || gopts?.mem;
106
- const memfs = useMemFS ? (0, memfs_1.memfs)(opts.vol || gopts?.vol || {}) : undefined;
107
- const fs = opts.fs || gopts?.fs || memfs?.fs || Fs;
141
+ const gopts = OptionsShape(gopts_in || {});
142
+ async function generate(opts_in, root) {
143
+ const opts = OptionsShape(opts_in);
144
+ const useMemFS = opts.mem || gopts.mem;
145
+ const vol = deep({}, gopts.vol, opts.vol);
146
+ const memfs = useMemFS ? (0, memfs_1.memfs)(vol) : undefined;
147
+ const fs = opts.fs() || gopts.fs() || memfs?.fs || Fs;
108
148
  const meta = {
109
149
  ...(gopts?.meta || {}),
110
150
  ...(opts.meta || {}),
@@ -112,8 +152,10 @@ function Jostraca(gopts) {
112
152
  const folder = opts.folder || gopts?.folder || '.';
113
153
  const log = opts.log || gopts?.log || DEFAULT_LOGGER;
114
154
  const debug = !!(null == opts.debug ? gopts?.debug : opts.debug);
155
+ const existing = deep(gopts.existing, opts.existing);
156
+ const existingBinary = deep(gopts.existingBinary, opts.existingBinary);
115
157
  const doBuild = null == gopts?.build ? false !== opts.build : false !== gopts?.build;
116
- const model = opts.model || gopts?.model || {};
158
+ const model = deep({}, gopts.model, opts.model);
117
159
  // Component defaults.
118
160
  opts.cmp = deep({
119
161
  Copy: {
@@ -121,13 +163,14 @@ function Jostraca(gopts) {
121
163
  }
122
164
  }, gopts?.cmp, opts.cmp);
123
165
  const ctx$ = {
166
+ fs: () => fs,
124
167
  folder,
125
168
  content: null,
126
169
  meta,
127
- fs,
128
170
  opts,
129
171
  log,
130
172
  debug,
173
+ existing,
131
174
  model,
132
175
  };
133
176
  return GLOBAL.jostraca.run(ctx$, async () => {
@@ -137,15 +180,34 @@ function Jostraca(gopts) {
137
180
  // Build phase
138
181
  const buildctx = {
139
182
  root: ctx$.root,
140
- fs,
183
+ when: Date.now(),
141
184
  vol: memfs?.vol,
142
185
  folder,
143
186
  current: {
187
+ project: {
188
+ node: makeNode(),
189
+ },
144
190
  folder: {
145
- parent: folder
146
- }
191
+ node: makeNode(),
192
+ parent: folder,
193
+ path: [],
194
+ },
195
+ // TODI: should be file.node
196
+ file: makeNode(),
197
+ content: undefined,
198
+ },
199
+ log: { exclude: [], last: -1 },
200
+ file: {
201
+ write: [],
202
+ preserve: [],
203
+ present: [],
204
+ merge: [],
205
+ },
206
+ util: {
207
+ save: () => null,
147
208
  }
148
209
  };
210
+ buildctx.util.save = makeSave(fs, existing, existingBinary, buildctx);
149
211
  if (doBuild) {
150
212
  await build(ctx$, buildctx);
151
213
  }
@@ -154,25 +216,21 @@ function Jostraca(gopts) {
154
216
  }
155
217
  async function build(ctx$, buildctx) {
156
218
  const topnode = ctx$.node;
157
- let log = { exclude: [], last: -1 };
158
219
  const logpath = node_path_1.default.join(buildctx.folder, '.jostraca', 'jostraca.json.log');
159
220
  try {
160
- log = JSON.parse(ctx$.fs.readFileSync(logpath, 'utf8'));
221
+ buildctx.log = JSON.parse(ctx$.fs().readFileSync(logpath, 'utf8'));
161
222
  }
162
223
  catch (err) {
163
- // console.log(err)
164
224
  // TODO: file not foound ignored, handle others!
165
225
  }
166
- buildctx.log = log;
167
- // console.log('B-LOG', buildctx.log)
168
226
  await step(topnode, ctx$, buildctx);
169
227
  try {
170
- ctx$.fs.mkdirSync(node_path_1.default.dirname(logpath), { recursive: true });
228
+ ctx$.fs().mkdirSync(node_path_1.default.dirname(logpath), { recursive: true });
171
229
  const log = {
172
230
  last: Date.now(),
173
231
  exclude: buildctx.log.exclude,
174
232
  };
175
- ctx$.fs.writeFileSync(logpath, JSON.stringify(log, null, 2), { flush: true });
233
+ ctx$.fs().writeFileSync(logpath, JSON.stringify(log, null, 2), { flush: true });
176
234
  }
177
235
  catch (err) {
178
236
  console.log(err);
@@ -193,7 +251,6 @@ function Jostraca(gopts) {
193
251
  await step(childnode, ctx$, buildctx);
194
252
  }
195
253
  catch (err) {
196
- console.log('JERR', childnode);
197
254
  if (childnode.meta.callsite) {
198
255
  err.callsite = childnode.meta.callsite;
199
256
  }
@@ -238,7 +295,6 @@ function cmp(component) {
238
295
  let parent = props.ctx$.node;
239
296
  // console.log('BBB', component, props, parent?.filter?.({ props }))
240
297
  if (parent?.filter && !parent.filter({ props, children, component })) {
241
- // console.log('PF', component, props)
242
298
  return undefined;
243
299
  }
244
300
  children = 'function' === typeof children ? [children] : children;
@@ -247,6 +303,7 @@ function cmp(component) {
247
303
  children: [],
248
304
  path: [],
249
305
  meta: {},
306
+ content: [],
250
307
  };
251
308
  props.ctx$.root = (props.ctx$.root || node);
252
309
  parent = props.ctx$.node || node;
@@ -261,8 +318,6 @@ function cmp(component) {
261
318
  node.path = parent.path.slice(0);
262
319
  if ('string' === typeof props.name) {
263
320
  node.path.push(props.name);
264
- // console.log('CMP-PATH', component.name, node.path)
265
- // console.trace()
266
321
  }
267
322
  let out = component(props, children);
268
323
  props.ctx$.children = siblings;
@@ -272,4 +327,84 @@ function cmp(component) {
272
327
  Object.defineProperty(cf, 'name', { value: component.name });
273
328
  return cf;
274
329
  }
330
+ function makeNode() {
331
+ return { kind: 'none', path: [], meta: {}, content: [] };
332
+ }
333
+ function makeSave(fs, existingText, existingBinary, buildctx) {
334
+ const JOSTRACA_PROTECT = 'JOSTRACA_PROTECT';
335
+ return function save(path, content, write = false) {
336
+ const existing = 'string' === typeof content ? existingText : existingBinary;
337
+ path = node_path_1.default.normalize(path);
338
+ const folder = node_path_1.default.dirname(path);
339
+ const exists = fs.existsSync(path);
340
+ write = write || !exists;
341
+ if (exists) {
342
+ let oldcontent = fs.readFileSync(path, 'utf8').toString();
343
+ const protect = 0 <= oldcontent.indexOf(JOSTRACA_PROTECT);
344
+ if (existing.preserve) {
345
+ if (protect) {
346
+ write = false;
347
+ }
348
+ else if (oldcontent.length !== content.length || oldcontent !== content) {
349
+ let oldpath = node_path_1.default.join(folder, node_path_1.default.basename(path).replace(/\.[^.]+$/, '') +
350
+ '.old' + node_path_1.default.extname(path));
351
+ copy(fs, path, oldpath);
352
+ buildctx.file.preserve.push({ path, action: 'preserve' });
353
+ }
354
+ }
355
+ if (existing.write && !protect) {
356
+ write = true;
357
+ }
358
+ else if (existing.present) {
359
+ if (oldcontent.length !== content.length || oldcontent !== content) {
360
+ let newpath = node_path_1.default.join(folder, node_path_1.default.basename(path).replace(/\.[^.]+$/, '') +
361
+ '.new' + node_path_1.default.extname(path));
362
+ fs.writeFileSync(newpath, content, 'utf8', { flush: true });
363
+ buildctx.file.preserve.push({ path, action: 'present' });
364
+ }
365
+ }
366
+ if (existing.merge && !protect) {
367
+ write = false;
368
+ if (oldcontent.length !== content.length || oldcontent !== content) {
369
+ merge(fs, buildctx.when, path, content, oldcontent);
370
+ buildctx.file.merge.push({ path, action: 'merge' });
371
+ }
372
+ }
373
+ }
374
+ if (write) {
375
+ fs.mkdirSync(folder, { recursive: true });
376
+ fs.writeFileSync(path, content, 'utf8', { flush: true });
377
+ buildctx.file.write.push({ path, action: 'write' });
378
+ }
379
+ };
380
+ }
381
+ function copy(fs, frompath, topath) {
382
+ // const isBinary = BINARY_EXT.includes(Path.extname(frompath))
383
+ const isBinary = (0, utility_1.isbinext)(frompath);
384
+ fs.mkdirSync(node_path_1.default.dirname(topath), { recursive: true });
385
+ const contents = fs.readFileSync(frompath, isBinary ? undefined : 'utf8');
386
+ fs.writeFileSync(topath, contents, { flush: true });
387
+ }
388
+ function merge(fs, when, path, oldcontent, newcontent) {
389
+ const diff = Diff.diffLines(newcontent, oldcontent);
390
+ const out = [];
391
+ const isowhen = new Date(when).toISOString();
392
+ diff.forEach((part) => {
393
+ if (part.added) {
394
+ out.push('<<<<<< GENERATED: ' + isowhen + '\n');
395
+ out.push(part.value);
396
+ out.push('>>>>>> GENERATED: ' + isowhen + '\n');
397
+ }
398
+ else if (part.removed) {
399
+ out.push('<<<<<< EXISTING: ' + isowhen + '\n');
400
+ out.push(part.value);
401
+ out.push('>>>>>> EXISTING: ' + isowhen + '\n');
402
+ }
403
+ else {
404
+ out.push(part.value);
405
+ }
406
+ });
407
+ const content = out.join('');
408
+ fs.writeFileSync(path, content, { flush: true });
409
+ }
275
410
  //# sourceMappingURL=jostraca.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"jostraca.js","sourceRoot":"","sources":["../src/jostraca.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jostraca.js","sourceRoot":"","sources":["../src/jostraca.ts"],"names":[],"mappings":"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"}