@packtory/cli 0.0.14 → 0.0.16

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 (140) hide show
  1. package/command-line-interface/config-loader.js +3 -6
  2. package/command-line-interface/config-loader.js.map +1 -1
  3. package/command-line-interface/preview-io/preview-io-shared.js +32 -0
  4. package/command-line-interface/preview-io/preview-io-shared.js.map +1 -0
  5. package/command-line-interface/preview-io/preview-io.js +16 -0
  6. package/command-line-interface/preview-io/preview-io.js.map +1 -0
  7. package/command-line-interface/preview-io/preview-spawn.js +27 -0
  8. package/command-line-interface/preview-io/preview-spawn.js.map +1 -0
  9. package/command-line-interface/runner/command-parsing.js +11 -0
  10. package/command-line-interface/runner/command-parsing.js.map +1 -0
  11. package/command-line-interface/runner/failure-printing.js +42 -0
  12. package/command-line-interface/runner/failure-printing.js.map +1 -0
  13. package/command-line-interface/runner/pack-handler.js +107 -0
  14. package/command-line-interface/runner/pack-handler.js.map +1 -0
  15. package/command-line-interface/runner/preview-handler.js +47 -0
  16. package/command-line-interface/runner/preview-handler.js.map +1 -0
  17. package/command-line-interface/runner/progress-wiring.js +27 -0
  18. package/command-line-interface/runner/progress-wiring.js.map +1 -0
  19. package/command-line-interface/runner/publish-handler.js +34 -0
  20. package/command-line-interface/runner/publish-handler.js.map +1 -0
  21. package/command-line-interface/runner/release-diff-handler.js +37 -0
  22. package/command-line-interface/runner/release-diff-handler.js.map +1 -0
  23. package/command-line-interface/runner/report-persistence.js +25 -0
  24. package/command-line-interface/runner/report-persistence.js.map +1 -0
  25. package/command-line-interface/runner/runner-symbols.js +11 -0
  26. package/command-line-interface/runner/runner-symbols.js.map +1 -0
  27. package/command-line-interface/runner/runner.js +108 -0
  28. package/command-line-interface/runner/runner.js.map +1 -0
  29. package/command-line-interface/spinner/line-spinner-renderer.js +44 -0
  30. package/command-line-interface/spinner/line-spinner-renderer.js.map +1 -0
  31. package/command-line-interface/{spinner-boot.js → spinner/spinner-boot.js} +2 -1
  32. package/command-line-interface/spinner/spinner-boot.js.map +1 -0
  33. package/command-line-interface/spinner/spinner-glyphs.js +31 -0
  34. package/command-line-interface/spinner/spinner-glyphs.js.map +1 -0
  35. package/command-line-interface/spinner/spinner-render-sequence.js +31 -0
  36. package/command-line-interface/spinner/spinner-render-sequence.js.map +1 -0
  37. package/command-line-interface/spinner/spinner-runtime.js +31 -0
  38. package/command-line-interface/spinner/spinner-runtime.js.map +1 -0
  39. package/command-line-interface/{spinner-shared-state.js → spinner/spinner-shared-state.js} +73 -10
  40. package/command-line-interface/spinner/spinner-shared-state.js.map +1 -0
  41. package/command-line-interface/spinner/spinner-snapshots.js +12 -0
  42. package/command-line-interface/spinner/spinner-snapshots.js.map +1 -0
  43. package/command-line-interface/spinner/spinner-worker-backend.js +38 -0
  44. package/command-line-interface/spinner/spinner-worker-backend.js.map +1 -0
  45. package/command-line-interface/spinner/spinner-worker-loop.js +38 -0
  46. package/command-line-interface/spinner/spinner-worker-loop.js.map +1 -0
  47. package/command-line-interface/spinner/terminal-spinner-renderer.js.map +1 -0
  48. package/common/path-tree.js +79 -0
  49. package/common/path-tree.js.map +1 -0
  50. package/package.json +3 -4
  51. package/packages/command-line-interface/command-line-interface.entry-point.d.ts +2 -2
  52. package/packages/command-line-interface/command-line-interface.entry-point.d.ts.map +1 -1
  53. package/packages/command-line-interface/command-line-interface.entry-point.js +34 -14
  54. package/packages/command-line-interface/command-line-interface.entry-point.js.map +1 -1
  55. package/packages/command-line-interface/spinner-boot.entry-point.js +12 -6
  56. package/packages/command-line-interface/spinner-boot.entry-point.js.map +1 -1
  57. package/packages/command-line-interface/spinner-worker.entry-point.js +1 -1
  58. package/packages/command-line-interface/spinner-worker.entry-point.js.map +1 -1
  59. package/readme.md +34 -0
  60. package/report/html-renderer/artifact-tree-renderer.js +25 -0
  61. package/report/html-renderer/artifact-tree-renderer.js.map +1 -0
  62. package/report/html-renderer/diagnostics-renderer.js +26 -0
  63. package/report/html-renderer/diagnostics-renderer.js.map +1 -0
  64. package/report/html-renderer/diff-renderer.js +31 -0
  65. package/report/html-renderer/diff-renderer.js.map +1 -0
  66. package/report/html-renderer/eliminated-files-renderer.js +16 -0
  67. package/report/html-renderer/eliminated-files-renderer.js.map +1 -0
  68. package/report/html-renderer/html-escaping.js.map +1 -0
  69. package/report/html-renderer/html-primitives.js +25 -0
  70. package/report/html-renderer/html-primitives.js.map +1 -0
  71. package/report/html-renderer/html-renderer.js +57 -0
  72. package/report/html-renderer/html-renderer.js.map +1 -0
  73. package/report/html-renderer/html-styles.js +177 -0
  74. package/report/html-renderer/html-styles.js.map +1 -0
  75. package/report/html-renderer/package-renderer.js +26 -0
  76. package/report/html-renderer/package-renderer.js.map +1 -0
  77. package/report/preview/artifact-diff-builder.js +20 -0
  78. package/report/preview/artifact-diff-builder.js.map +1 -0
  79. package/report/preview/artifact-tree-builder.js +19 -0
  80. package/report/preview/artifact-tree-builder.js.map +1 -0
  81. package/report/preview/bundle-artifact-index.js +15 -0
  82. package/report/preview/bundle-artifact-index.js.map +1 -0
  83. package/report/preview/changed-artifacts.js.map +1 -0
  84. package/report/preview/preview-document-helpers.js +19 -0
  85. package/report/preview/preview-document-helpers.js.map +1 -0
  86. package/report/preview/preview-document.js +62 -0
  87. package/report/preview/preview-document.js.map +1 -0
  88. package/report/preview/preview-result-inspectors.js +30 -0
  89. package/report/preview/preview-result-inspectors.js.map +1 -0
  90. package/report/preview/preview-summary.js +52 -0
  91. package/report/preview/preview-summary.js.map +1 -0
  92. package/report/release-diff/release-diff-document.js +22 -0
  93. package/report/release-diff/release-diff-document.js.map +1 -0
  94. package/report/release-diff/release-diff-summary.js +39 -0
  95. package/report/release-diff/release-diff-summary.js.map +1 -0
  96. package/report/terminal-renderer/terminal-artifact-renderer.js +20 -0
  97. package/report/terminal-renderer/terminal-artifact-renderer.js.map +1 -0
  98. package/report/terminal-renderer/terminal-package-renderer.js +36 -0
  99. package/report/terminal-renderer/terminal-package-renderer.js.map +1 -0
  100. package/report/{terminal-preview-renderer-shared.js → terminal-renderer/terminal-preview-renderer-shared.js} +16 -0
  101. package/report/terminal-renderer/terminal-preview-renderer-shared.js.map +1 -0
  102. package/report/terminal-renderer/terminal-preview-renderer.js +33 -0
  103. package/report/terminal-renderer/terminal-preview-renderer.js.map +1 -0
  104. package/report/terminal-renderer/terminal-release-diff-package-renderer.js +125 -0
  105. package/report/terminal-renderer/terminal-release-diff-package-renderer.js.map +1 -0
  106. package/report/terminal-renderer/terminal-release-diff-renderer.js +53 -0
  107. package/report/terminal-renderer/terminal-release-diff-renderer.js.map +1 -0
  108. package/command-line-interface/preview-io-shared.js +0 -75
  109. package/command-line-interface/preview-io-shared.js.map +0 -1
  110. package/command-line-interface/preview-io.js +0 -15
  111. package/command-line-interface/preview-io.js.map +0 -1
  112. package/command-line-interface/runner.js +0 -244
  113. package/command-line-interface/runner.js.map +0 -1
  114. package/command-line-interface/spinner-boot.js.map +0 -1
  115. package/command-line-interface/spinner-shared-state.js.map +0 -1
  116. package/command-line-interface/spinner-worker-backend.js +0 -62
  117. package/command-line-interface/spinner-worker-backend.js.map +0 -1
  118. package/command-line-interface/spinner-worker-loop.js +0 -94
  119. package/command-line-interface/spinner-worker-loop.js.map +0 -1
  120. package/command-line-interface/terminal-spinner-renderer.js.map +0 -1
  121. package/common/typed-diff.js +0 -5
  122. package/common/typed-diff.js.map +0 -1
  123. package/report/changed-artifacts.js.map +0 -1
  124. package/report/html-escaping.js.map +0 -1
  125. package/report/html-renderer.js +0 -337
  126. package/report/html-renderer.js.map +0 -1
  127. package/report/preview-document-diff.js +0 -17
  128. package/report/preview-document-diff.js.map +0 -1
  129. package/report/preview-document-helpers.js +0 -173
  130. package/report/preview-document-helpers.js.map +0 -1
  131. package/report/preview-document-tree.js +0 -13
  132. package/report/preview-document-tree.js.map +0 -1
  133. package/report/preview-document.js +0 -97
  134. package/report/preview-document.js.map +0 -1
  135. package/report/terminal-preview-renderer-shared.js.map +0 -1
  136. package/report/terminal-preview-renderer.js +0 -94
  137. package/report/terminal-preview-renderer.js.map +0 -1
  138. /package/command-line-interface/{terminal-spinner-renderer.js → spinner/terminal-spinner-renderer.js} +0 -0
  139. /package/report/{html-escaping.js → html-renderer/html-escaping.js} +0 -0
  140. /package/report/{changed-artifacts.js → preview/changed-artifacts.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/runner/runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { bold, green, red } from 'yoctocolors';
2
+ function getErrorSymbol() {
3
+ return bold(red('✖'));
4
+ }
5
+ function getSuccessSymbol() {
6
+ return bold(green('✔'));
7
+ }
8
+ function renderProgressLine(label, message) {
9
+ return `${label}: ${message}`;
10
+ }
11
+ function renderStopLine(status, label, message) {
12
+ const symbol = status === 'success' ? getSuccessSymbol() : getErrorSymbol();
13
+ return `${symbol} ${renderProgressLine(label, message)}`;
14
+ }
15
+ export function createLineSpinnerRenderer(dependencies) {
16
+ const { log } = dependencies;
17
+ const labelsById = new Map();
18
+ function getLabel(id) {
19
+ const label = labelsById.get(id);
20
+ if (label !== undefined) {
21
+ return label;
22
+ }
23
+ throw new Error(`Spinner with id ${id} does not exist`);
24
+ }
25
+ return {
26
+ add(id, label, message) {
27
+ if (labelsById.has(id)) {
28
+ throw new Error(`Spinner with id ${id} already exists`);
29
+ }
30
+ labelsById.set(id, label);
31
+ log(renderProgressLine(label, message));
32
+ },
33
+ updateMessage(id, message) {
34
+ log(renderProgressLine(getLabel(id), message));
35
+ },
36
+ stop(id, status, message) {
37
+ log(renderStopLine(status, getLabel(id), message));
38
+ },
39
+ stopAll() {
40
+ labelsById.clear();
41
+ }
42
+ };
43
+ }
44
+ //# sourceMappingURL=line-spinner-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"line-spinner-renderer.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/spinner/line-spinner-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAS/C,SAAS,cAAc;IACnB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,gBAAgB;IACrB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,OAAe;IACtD,OAAO,GAAG,KAAK,KAAK,OAAO,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,cAAc,CAAC,MAAc,EAAE,KAAa,EAAE,OAAe;IAClE,MAAM,MAAM,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;IAC5E,OAAO,GAAG,MAAM,IAAI,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,YAA6C;IACnF,MAAM,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC;IAC7B,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE7C,SAAS,QAAQ,CAAC,EAAU;QACxB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO;QACH,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO;YAClB,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;YAC5D,CAAC;YACD,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC1B,GAAG,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5C,CAAC;QAED,aAAa,CAAC,EAAE,EAAE,OAAO;YACrB,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO;YACpB,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACvD,CAAC;QAED,OAAO;YACH,UAAU,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;KACJ,CAAC;AACN,CAAC"}
@@ -1,9 +1,10 @@
1
- import { createSpinnerRuntime } from "./spinner-worker-backend.js";
1
+ import { createSpinnerRuntime } from "./spinner-runtime.js";
2
2
  const bootSlotIndex = 0;
3
3
  export function bootSpinnerRuntime(options) {
4
4
  const runtime = createSpinnerRuntime(options);
5
5
  runtime.accessors.writeSlot(bootSlotIndex, 'running', options.initialLabel, options.initialMessage);
6
6
  runtime.accessors.bumpSlotGeneration(bootSlotIndex);
7
+ runtime.accessors.markMutation();
7
8
  return runtime;
8
9
  }
9
10
  //# sourceMappingURL=spinner-boot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner-boot.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/spinner/spinner-boot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAmD,MAAM,sBAAsB,CAAC;AAE7G,MAAM,aAAa,GAAG,CAAC,CAAC;AAOxB,MAAM,UAAU,kBAAkB,CAAC,OAA2B;IAC1D,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9C,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACpG,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACpD,OAAO,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;IACjC,OAAO,OAAO,CAAC;AACnB,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { bold, green, red } from 'yoctocolors';
2
+ const spinnerFrames = '⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏';
3
+ const successSymbol = bold(green('✔'));
4
+ const failureSymbol = bold(red('✖'));
5
+ const escapeSequence = '';
6
+ export const cursorToColumnZero = '\r';
7
+ export const clearEntireLine = `${escapeSequence}[2K`;
8
+ export function cursorUp(lines) {
9
+ return `${escapeSequence}[${lines}A`;
10
+ }
11
+ function selectGlyph(state, frameIndex) {
12
+ if (state === 'succeeded') {
13
+ return successSymbol;
14
+ }
15
+ if (state === 'failed' || state === 'canceled') {
16
+ return failureSymbol;
17
+ }
18
+ return spinnerFrames.charAt(frameIndex % spinnerFrames.length);
19
+ }
20
+ function truncateToColumns(line, columns) {
21
+ if (columns <= 0) {
22
+ return line;
23
+ }
24
+ return line.slice(0, columns);
25
+ }
26
+ export function formatLine(snapshot, frameIndex, columns) {
27
+ const glyph = selectGlyph(snapshot.state, frameIndex);
28
+ const composed = `${glyph} ${snapshot.label}: ${snapshot.message}`;
29
+ return truncateToColumns(composed, columns);
30
+ }
31
+ //# sourceMappingURL=spinner-glyphs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner-glyphs.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/spinner/spinner-glyphs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,aAAa,GAAG,YAAY,CAAC;AACnC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAErC,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AACvC,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,cAAc,KAAK,CAAC;AAEtD,MAAM,UAAU,QAAQ,CAAC,KAAa;IAClC,OAAO,GAAG,cAAc,IAAI,KAAK,GAAG,CAAC;AACzC,CAAC;AAED,SAAS,WAAW,CAAC,KAAgB,EAAE,UAAkB;IACrD,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;QACxB,OAAO,aAAa,CAAC;IACzB,CAAC;IACD,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QAC7C,OAAO,aAAa,CAAC;IACzB,CAAC;IACD,OAAO,aAAa,CAAC,MAAM,CAAC,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,OAAe;IACpD,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,UAAU,CACtB,QAAyF,EACzF,UAAkB,EAClB,OAAe;IAEf,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,GAAG,KAAK,IAAI,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnE,OAAO,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { clearEntireLine, cursorToColumnZero, cursorUp, formatLine } from "./spinner-glyphs.js";
2
+ import { findHighestActiveSlotIndex, readAllSnapshots } from "./spinner-snapshots.js";
3
+ function buildRedrawSequence(state, columns, expectedLineCount) {
4
+ let output = '';
5
+ if (state.renderedLineCount > 0) {
6
+ output += cursorUp(state.renderedLineCount);
7
+ }
8
+ const visibleSnapshots = state.snapshots.slice(0, expectedLineCount);
9
+ for (const snapshot of visibleSnapshots) {
10
+ const line = formatLine(snapshot, state.frameIndex, columns);
11
+ output += `${clearEntireLine + cursorToColumnZero + line}\n`;
12
+ }
13
+ return output;
14
+ }
15
+ export function buildRenderTickOutput(accessors, state) {
16
+ const targetMutation = accessors.getLatestMutation();
17
+ const snapshots = readAllSnapshots(accessors);
18
+ const highestActive = findHighestActiveSlotIndex(snapshots);
19
+ const shouldSkipWrite = highestActive < 0 && state.renderedLineCount === 0;
20
+ if (shouldSkipWrite) {
21
+ return { expectedLineCount: 0, snapshots, sequence: undefined, targetMutation };
22
+ }
23
+ const expectedLineCount = Math.max(state.renderedLineCount, highestActive + 1);
24
+ return {
25
+ expectedLineCount,
26
+ snapshots,
27
+ sequence: buildRedrawSequence({ ...state, snapshots }, accessors.getColumns(), expectedLineCount),
28
+ targetMutation
29
+ };
30
+ }
31
+ //# sourceMappingURL=spinner-render-sequence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner-render-sequence.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/spinner/spinner-render-sequence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAE,0BAA0B,EAAE,gBAAgB,EAAqB,MAAM,wBAAwB,CAAC;AAgBzG,SAAS,mBAAmB,CAAC,KAAkB,EAAE,OAAe,EAAE,iBAAyB;IACvF,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,gBAAgB,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;IACrE,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,eAAe,GAAG,kBAAkB,GAAG,IAAI,IAAI,CAAC;IACjE,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,SAAiC,EAAE,KAAkB;IACvF,MAAM,cAAc,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC;IACrD,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,0BAA0B,CAAC,SAAS,CAAC,CAAC;IAC5D,MAAM,eAAe,GAAG,aAAa,GAAG,CAAC,IAAI,KAAK,CAAC,iBAAiB,KAAK,CAAC,CAAC;IAC3E,IAAI,eAAe,EAAE,CAAC;QAClB,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;IACpF,CAAC;IAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC;IAC/E,OAAO;QACH,iBAAiB;QACjB,SAAS;QACT,QAAQ,EAAE,mBAAmB,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,EAAE,SAAS,CAAC,UAAU,EAAE,EAAE,iBAAiB,CAAC;QACjG,cAAc;KACjB,CAAC;AACN,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { createSpinnerSharedAccessors, createSpinnerSharedLayout } from "./spinner-shared-state.js";
2
+ const defaultSlotCount = 64;
3
+ const defaultIntervalMs = 80;
4
+ function resolveOptions(options) {
5
+ return {
6
+ slotCount: options.slotCount ?? defaultSlotCount,
7
+ intervalMs: options.intervalMs ?? defaultIntervalMs,
8
+ stdoutFileDescriptor: options.stdoutFileDescriptor,
9
+ stdoutColumns: options.stdoutColumns,
10
+ spawnWorker: options.spawnWorker
11
+ };
12
+ }
13
+ function setupSharedBuffer(resolved) {
14
+ const layout = createSpinnerSharedLayout(resolved.slotCount);
15
+ const buffer = new SharedArrayBuffer(layout.bufferByteLength);
16
+ const accessors = createSpinnerSharedAccessors(buffer, layout);
17
+ accessors.setIntervalMs(resolved.intervalMs);
18
+ accessors.setColumns(resolved.stdoutColumns);
19
+ return accessors;
20
+ }
21
+ export function createSpinnerRuntime(options) {
22
+ const resolved = resolveOptions(options);
23
+ const accessors = setupSharedBuffer(resolved);
24
+ resolved.spawnWorker({
25
+ buffer: accessors.buffer,
26
+ slotCount: accessors.layout.slotCount,
27
+ stdoutFileDescriptor: resolved.stdoutFileDescriptor
28
+ });
29
+ return { accessors, slotCount: resolved.slotCount };
30
+ }
31
+ //# sourceMappingURL=spinner-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner-runtime.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/spinner/spinner-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,4BAA4B,EAC5B,yBAAyB,EAE5B,MAAM,2BAA2B,CAAC;AAEnC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,MAAM,iBAAiB,GAAG,EAAE,CAAC;AA+B7B,SAAS,cAAc,CAAC,OAA8B;IAClD,OAAO;QACH,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,gBAAgB;QAChD,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,iBAAiB;QACnD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;QAClD,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,WAAW,EAAE,OAAO,CAAC,WAAW;KACnC,CAAC;AACN,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAyB;IAChD,MAAM,MAAM,GAAG,yBAAyB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/D,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC7C,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC7C,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAA8B;IAC/D,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC9C,QAAQ,CAAC,WAAW,CAAC;QACjB,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,SAAS;QACrC,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB;KACtD,CAAC,CAAC;IACH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;AACxD,CAAC"}
@@ -1,4 +1,4 @@
1
- const headerByteLength = 16;
1
+ const headerByteLength = 24;
2
2
  const slotByteLength = 384;
3
3
  const labelByteLength = 64;
4
4
  const messageByteLength = 256;
@@ -10,10 +10,13 @@ const slotMessageOffset = slotLabelOffset + labelByteLength;
10
10
  const headerControlIndex = 0;
11
11
  const headerColumnsIndex = 1;
12
12
  const headerIntervalIndex = 2;
13
+ const headerMutationIndex = 3;
14
+ const headerRenderedMutationIndex = 4;
13
15
  const slotGenerationIndex = 0;
14
16
  const controlShutdownValue = 1;
15
17
  const controlIdleValue = 0;
16
18
  const maximumReadSlotAttempts = 1024;
19
+ const maximumRenderedMutationWaitAttempts = 256;
17
20
  const slotStateEmpty = 0;
18
21
  const slotStateRunning = 1;
19
22
  const slotStateSucceeded = 2;
@@ -43,6 +46,9 @@ export function createSpinnerSharedLayout(slotCount) {
43
46
  headerByteLength
44
47
  };
45
48
  }
49
+ function getCurrentTimeInMilliseconds() {
50
+ return Date.now();
51
+ }
46
52
  function stateToByte(state) {
47
53
  return stateToByteMap[state];
48
54
  }
@@ -60,6 +66,29 @@ const messageSlice = {
60
66
  contentCapacity: messageByteLength,
61
67
  lengthOffset: slotMessageLengthOffset
62
68
  };
69
+ function waitForRenderedMutationStep(args) {
70
+ const waitResult = args.atomics.wait(args.headerInt32, headerRenderedMutationIndex, args.expectedMutation, args.timeoutMs);
71
+ const current = args.atomics.load(args.headerInt32, headerRenderedMutationIndex);
72
+ return {
73
+ current,
74
+ remainingMs: args.readRemainingMs(),
75
+ timedOutWithoutProgress: waitResult === 'timed-out' && current === args.expectedMutation
76
+ };
77
+ }
78
+ function readRenderedMutationState(atomics, headerInt32, readRemainingMs) {
79
+ return {
80
+ current: atomics.load(headerInt32, headerRenderedMutationIndex),
81
+ remainingMs: readRemainingMs()
82
+ };
83
+ }
84
+ function shouldContinueWaitingForRenderedMutation(state, mutation) {
85
+ return state.current < mutation && state.remainingMs > 0;
86
+ }
87
+ function shouldAbortWaitingForRenderedMutation(state, step, mutation) {
88
+ return ((step.current === state.current && step.remainingMs > state.remainingMs) ||
89
+ step.current >= mutation ||
90
+ step.timedOutWithoutProgress);
91
+ }
63
92
  function createViews(buffer, layout) {
64
93
  const headerInt32 = new Int32Array(buffer);
65
94
  const headerUint32 = new Uint32Array(buffer);
@@ -99,13 +128,15 @@ function readSlotContent(views, slotIndex) {
99
128
  message: readStringFromSlot(views, slotIndex, messageSlice)
100
129
  };
101
130
  }
102
- export function createSpinnerSharedAccessors(buffer, layout) {
131
+ export function createSpinnerSharedAccessors(buffer, layout, dependencies = {}) {
132
+ const atomics = dependencies.atomics ?? Atomics;
133
+ const now = dependencies.now ?? getCurrentTimeInMilliseconds;
103
134
  const views = createViews(buffer, layout);
104
135
  function writeStateByte(slotIndex, stateByte) {
105
136
  views.slotData(slotIndex).setUint8(slotStateOffset, stateByte);
106
137
  }
107
138
  function readSlotGeneration(slotIndex) {
108
- return Atomics.load(views.slotInt32(slotIndex), slotGenerationIndex);
139
+ return atomics.load(views.slotInt32(slotIndex), slotGenerationIndex);
109
140
  }
110
141
  function readSlotAttempt(slotIndex) {
111
142
  return {
@@ -117,25 +148,57 @@ export function createSpinnerSharedAccessors(buffer, layout) {
117
148
  layout,
118
149
  buffer,
119
150
  setColumns(columns) {
120
- Atomics.store(views.headerUint32, headerColumnsIndex, columns);
151
+ atomics.store(views.headerUint32, headerColumnsIndex, columns);
121
152
  },
122
153
  getColumns() {
123
- return Atomics.load(views.headerUint32, headerColumnsIndex);
154
+ return atomics.load(views.headerUint32, headerColumnsIndex);
124
155
  },
125
156
  setIntervalMs(intervalMs) {
126
- Atomics.store(views.headerUint32, headerIntervalIndex, intervalMs);
157
+ atomics.store(views.headerUint32, headerIntervalIndex, intervalMs);
127
158
  },
128
159
  getIntervalMs() {
129
- return Atomics.load(views.headerUint32, headerIntervalIndex);
160
+ return atomics.load(views.headerUint32, headerIntervalIndex);
161
+ },
162
+ markMutation() {
163
+ return atomics.add(views.headerInt32, headerMutationIndex, 1) + 1;
164
+ },
165
+ getLatestMutation() {
166
+ return atomics.load(views.headerInt32, headerMutationIndex);
167
+ },
168
+ acknowledgeRender(mutation) {
169
+ atomics.store(views.headerInt32, headerRenderedMutationIndex, mutation);
170
+ atomics.notify(views.headerInt32, headerRenderedMutationIndex);
171
+ },
172
+ waitForRenderedMutation(mutation, timeoutMs) {
173
+ const deadline = now() + timeoutMs;
174
+ const readRemainingMs = () => {
175
+ return deadline - now();
176
+ };
177
+ let state = readRenderedMutationState(atomics, views.headerInt32, readRemainingMs);
178
+ let remainingAttempts = Math.min(maximumRenderedMutationWaitAttempts, Math.max(Math.ceil(timeoutMs), 1));
179
+ for (; shouldContinueWaitingForRenderedMutation(state, mutation) && remainingAttempts > 0; state = readRenderedMutationState(atomics, views.headerInt32, readRemainingMs), remainingAttempts -= 1) {
180
+ const waitTimeoutMs = Math.min(state.remainingMs, timeoutMs);
181
+ const step = waitForRenderedMutationStep({
182
+ atomics,
183
+ headerInt32: views.headerInt32,
184
+ expectedMutation: state.current,
185
+ timeoutMs: waitTimeoutMs,
186
+ readRemainingMs
187
+ });
188
+ if (shouldAbortWaitingForRenderedMutation(state, step, mutation)) {
189
+ return step.current >= mutation;
190
+ }
191
+ }
192
+ return state.current >= mutation;
130
193
  },
131
194
  requestShutdown() {
132
- Atomics.store(views.headerInt32, headerControlIndex, controlShutdownValue);
195
+ atomics.store(views.headerInt32, headerControlIndex, controlShutdownValue);
133
196
  },
134
197
  isShutdownRequested() {
135
- return Atomics.load(views.headerInt32, headerControlIndex) !== controlIdleValue;
198
+ return atomics.load(views.headerInt32, headerControlIndex) !== controlIdleValue;
136
199
  },
137
200
  bumpSlotGeneration(slotIndex) {
138
- Atomics.add(views.slotInt32(slotIndex), slotGenerationIndex, 1);
201
+ atomics.add(views.slotInt32(slotIndex), slotGenerationIndex, 1);
139
202
  },
140
203
  writeSlot(slotIndex, state, label, message) {
141
204
  writeStateByte(slotIndex, stateToByte(state));
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner-shared-state.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/spinner/spinner-shared-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { times } from 'remeda';
2
+ export function readAllSnapshots(accessors) {
3
+ return times(accessors.layout.slotCount, (slotIndex) => {
4
+ return accessors.readSlot(slotIndex);
5
+ });
6
+ }
7
+ export function findHighestActiveSlotIndex(snapshots) {
8
+ return snapshots.findLastIndex((snapshot) => {
9
+ return snapshot.state !== 'empty';
10
+ });
11
+ }
12
+ //# sourceMappingURL=spinner-snapshots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner-snapshots.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/spinner/spinner-snapshots.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAS/B,MAAM,UAAU,gBAAgB,CAAC,SAAiC;IAC9D,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,EAAE;QACnD,OAAO,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,SAAkC;IACzE,OAAO,SAAS,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,EAAE;QACxC,OAAO,QAAQ,CAAC,KAAK,KAAK,OAAO,CAAC;IACtC,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,38 @@
1
+ const shutdownFlushIntervals = 4;
2
+ const minimumShutdownFlushTimeoutMs = 100;
3
+ function writeSlot(accessors, update) {
4
+ accessors.writeSlot(update.slotIndex, update.state, update.label, update.message);
5
+ accessors.bumpSlotGeneration(update.slotIndex);
6
+ accessors.markMutation();
7
+ }
8
+ export function createWorkerSpinnerBackend(dependencies) {
9
+ const { runtime } = dependencies;
10
+ const shutdownFlushTimeoutMs = Math.max(runtime.accessors.getIntervalMs() * shutdownFlushIntervals, minimumShutdownFlushTimeoutMs);
11
+ function ensureSlotIndexFits(slotIndex) {
12
+ if (slotIndex >= runtime.slotCount) {
13
+ throw new RangeError(`Spinner slot index ${slotIndex} exceeds backend capacity ${runtime.slotCount}; increase slotCount`);
14
+ }
15
+ }
16
+ return {
17
+ add(slotIndex, label, message) {
18
+ ensureSlotIndexFits(slotIndex);
19
+ writeSlot(runtime.accessors, { slotIndex, state: 'running', label, message });
20
+ },
21
+ update(slotIndex, label, message) {
22
+ ensureSlotIndexFits(slotIndex);
23
+ writeSlot(runtime.accessors, { slotIndex, state: 'running', label, message });
24
+ },
25
+ finish(slotIndex, status, label, message) {
26
+ ensureSlotIndexFits(slotIndex);
27
+ writeSlot(runtime.accessors, { slotIndex, state: status, label, message });
28
+ },
29
+ shutdown() {
30
+ runtime.accessors.requestShutdown();
31
+ const shutdownMutation = runtime.accessors.markMutation();
32
+ if (runtime.accessors.getIntervalMs() > 0) {
33
+ runtime.accessors.waitForRenderedMutation(shutdownMutation, shutdownFlushTimeoutMs);
34
+ }
35
+ }
36
+ };
37
+ }
38
+ //# sourceMappingURL=spinner-worker-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner-worker-backend.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/spinner/spinner-worker-backend.ts"],"names":[],"mappings":"AAIA,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,6BAA6B,GAAG,GAAG,CAAC;AAS1C,SAAS,SAAS,CAAC,SAAiC,EAAE,MAAkB;IACpE,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAClF,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/C,SAAS,CAAC,YAAY,EAAE,CAAC;AAC7B,CAAC;AAMD,MAAM,UAAU,0BAA0B,CAAC,YAA8C;IACrF,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC;IACjC,MAAM,sBAAsB,GAAG,IAAI,CAAC,GAAG,CACnC,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE,GAAG,sBAAsB,EAC1D,6BAA6B,CAChC,CAAC;IAEF,SAAS,mBAAmB,CAAC,SAAiB;QAC1C,IAAI,SAAS,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,UAAU,CAChB,sBAAsB,SAAS,6BAA6B,OAAO,CAAC,SAAS,sBAAsB,CACtG,CAAC;QACN,CAAC;IACL,CAAC;IAED,OAAO;QACH,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO;YACzB,mBAAmB,CAAC,SAAS,CAAC,CAAC;YAC/B,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO;YAC5B,mBAAmB,CAAC,SAAS,CAAC,CAAC;YAC/B,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;YACpC,mBAAmB,CAAC,SAAS,CAAC,CAAC;YAC/B,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,QAAQ;YACJ,OAAO,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;YACpC,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;YAC1D,IAAI,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE,CAAC;gBACxC,OAAO,CAAC,SAAS,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,CAAC;YACxF,CAAC;QACL,CAAC;KACJ,CAAC;AACN,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { buildRenderTickOutput } from "./spinner-render-sequence.js";
2
+ import { createSpinnerSharedAccessors, createSpinnerSharedLayout } from "./spinner-shared-state.js";
3
+ import { readAllSnapshots } from "./spinner-snapshots.js";
4
+ export function startSpinnerWorker(input, dependencies) {
5
+ const layout = createSpinnerSharedLayout(input.slotCount);
6
+ const accessors = createSpinnerSharedAccessors(input.buffer, layout);
7
+ const state = {
8
+ snapshots: readAllSnapshots(accessors),
9
+ renderedLineCount: 0,
10
+ frameIndex: 0
11
+ };
12
+ function renderTick() {
13
+ const output = buildRenderTickOutput(accessors, state);
14
+ state.snapshots = output.snapshots;
15
+ if (output.sequence !== undefined) {
16
+ dependencies.write(input.stdoutFileDescriptor, output.sequence);
17
+ state.renderedLineCount = output.expectedLineCount;
18
+ state.frameIndex += 1;
19
+ }
20
+ accessors.acknowledgeRender(output.targetMutation);
21
+ }
22
+ const intervalMs = accessors.getIntervalMs();
23
+ const ticker = dependencies.setInterval(() => {
24
+ renderTick();
25
+ if (accessors.isShutdownRequested()) {
26
+ renderTick();
27
+ dependencies.clearInterval(ticker);
28
+ }
29
+ }, intervalMs);
30
+ }
31
+ export function isSpinnerWorkerInput(value) {
32
+ return (typeof value === 'object' &&
33
+ value !== null &&
34
+ Reflect.get(value, 'buffer') instanceof SharedArrayBuffer &&
35
+ typeof Reflect.get(value, 'slotCount') === 'number' &&
36
+ typeof Reflect.get(value, 'stdoutFileDescriptor') === 'number');
37
+ }
38
+ //# sourceMappingURL=spinner-worker-loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner-worker-loop.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/spinner/spinner-worker-loop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAoB,MAAM,8BAA8B,CAAC;AACvF,OAAO,EAAE,4BAA4B,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAc1D,MAAM,UAAU,kBAAkB,CAC9B,KAAyB,EACzB,YAA+C;IAE/C,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,4BAA4B,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrE,MAAM,KAAK,GAAgB;QACvB,SAAS,EAAE,gBAAgB,CAAC,SAAS,CAAC;QACtC,iBAAiB,EAAE,CAAC;QACpB,UAAU,EAAE,CAAC;KAChB,CAAC;IAEF,SAAS,UAAU;QACf,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACvD,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACnC,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YAChE,KAAK,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;YACnD,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;IAC7C,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE;QACzC,UAAU,EAAE,CAAC;QACb,IAAI,SAAS,CAAC,mBAAmB,EAAE,EAAE,CAAC;YAClC,UAAU,EAAE,CAAC;YACb,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;IACL,CAAC,EAAE,UAAU,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAc;IAC/C,OAAO,CACH,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,iBAAiB;QACzD,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,QAAQ;QACnD,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAC,KAAK,QAAQ,CACjE,CAAC;AACN,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-spinner-renderer.js","sourceRoot":"","sources":["../../../../../source/command-line-interface/spinner/terminal-spinner-renderer.ts"],"names":[],"mappings":"AAgCA,MAAM,aAAa,GAAG,YAAY,CAAC;AAEnC,MAAM,UAAU,6BAA6B,CACzC,YAAiD;IAEjD,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAuB,CAAC;IAChD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpC,SAAS,iBAAiB;QACtB,OAAO,SAAS,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED,SAAS,cAAc,CAAC,EAAU;QAC9B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,SAAS,oBAAoB,CAAC,EAAU;QACpC,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;QAC5D,CAAC;IACL,CAAC;IAED,OAAO;QACH,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO;YAClB,oBAAoB,CAAC,EAAE,CAAC,CAAC;YAEzB,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;YACtC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;QAED,aAAa,CAAC,EAAE,EAAE,OAAO;YACrB,MAAM,OAAO,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;YACnC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;YAC1B,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO;YACpB,MAAM,OAAO,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;YACnC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;YAC1B,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;YACxB,MAAM,UAAU,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;YACjE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO;YACH,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;gBACtC,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC/B,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC;oBAChC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;gBAChF,CAAC;YACL,CAAC;YACD,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,CAAC,QAAQ,EAAE,CAAC;QACvB,CAAC;KACJ,CAAC;AACN,CAAC"}
@@ -0,0 +1,79 @@
1
+ import path from 'node:path';
2
+ const manifestFilePriority = 0;
3
+ const directoryPriority = 1;
4
+ const regularFilePriority = 2;
5
+ function priorityOf(node) {
6
+ if (node.type === 'file' && node.name === 'package.json') {
7
+ return manifestFilePriority;
8
+ }
9
+ if (node.type === 'directory') {
10
+ return directoryPriority;
11
+ }
12
+ return regularFilePriority;
13
+ }
14
+ function comparePathNodes(left, right) {
15
+ const priorityDifference = priorityOf(left) - priorityOf(right);
16
+ if (priorityDifference !== 0) {
17
+ return priorityDifference;
18
+ }
19
+ return left.name.localeCompare(right.name);
20
+ }
21
+ function createDirectory(pathname, name, depth) {
22
+ return { name, path: pathname, depth, directories: new Map(), files: [] };
23
+ }
24
+ function insertItem(root, item, itemPath) {
25
+ const parts = itemPath.split('/');
26
+ let current = root;
27
+ for (const part of parts.slice(0, -1)) {
28
+ const nextPath = path.posix.join(current.path, part);
29
+ const next = current.directories.get(part) ?? createDirectory(nextPath, part, current.depth + 1);
30
+ current.directories.set(part, next);
31
+ current = next;
32
+ }
33
+ current.files.push(item);
34
+ }
35
+ function toDirectoryChildren(directory) {
36
+ return Array.from(directory.directories.values(), (entry) => {
37
+ const node = {
38
+ type: 'directory',
39
+ path: entry.path,
40
+ name: entry.name,
41
+ depth: entry.depth
42
+ };
43
+ return { node, directory: entry };
44
+ });
45
+ }
46
+ function toFileChildren(directory, getPath) {
47
+ return directory.files.map((item) => {
48
+ const itemPath = getPath(item);
49
+ const node = {
50
+ type: 'file',
51
+ path: itemPath,
52
+ name: path.posix.basename(itemPath),
53
+ depth: directory.depth,
54
+ item
55
+ };
56
+ return { node };
57
+ });
58
+ }
59
+ function flattenTree(directory, getPath) {
60
+ const nodes = [];
61
+ const children = [...toDirectoryChildren(directory), ...toFileChildren(directory, getPath)].toSorted((left, right) => {
62
+ return comparePathNodes(left.node, right.node);
63
+ });
64
+ for (const child of children) {
65
+ nodes.push(child.node);
66
+ if (child.directory !== undefined) {
67
+ nodes.push(...flattenTree(child.directory, getPath));
68
+ }
69
+ }
70
+ return nodes;
71
+ }
72
+ export function buildPathTree(items, getPath) {
73
+ const root = { path: '', depth: 0, directories: new Map(), files: [] };
74
+ for (const item of items) {
75
+ insertItem(root, item, getPath(item));
76
+ }
77
+ return flattenTree(root, getPath);
78
+ }
79
+ //# sourceMappingURL=path-tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-tree.js","sourceRoot":"","sources":["../../../../source/common/path-tree.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -8,8 +8,8 @@
8
8
  ],
9
9
  "dependencies": {
10
10
  "cmd-ts": "0.15.0",
11
- "diff": "9.0.0",
12
- "packtory": "0.0.14",
11
+ "open": "11.0.0",
12
+ "packtory": "0.0.16",
13
13
  "remeda": "2.34.1",
14
14
  "yoctocolors": "2.1.2"
15
15
  },
@@ -39,11 +39,10 @@
39
39
  "url": "git+ssh://git@github.com/enormora/packtory.git"
40
40
  },
41
41
  "sideEffects": [
42
- "./command-line-interface/preview-io.js",
43
42
  "./packages/command-line-interface/command-line-interface.entry-point.js",
44
43
  "./packages/command-line-interface/spinner-boot.entry-point.js",
45
44
  "./packages/command-line-interface/spinner-worker.entry-point.js"
46
45
  ],
47
46
  "type": "module",
48
- "version": "0.0.14"
47
+ "version": "0.0.16"
49
48
  }
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
- import type * as configTypes from 'packtory/config/config.d.ts';
3
- export type PacktoryConfig = configTypes.PacktoryConfig;
2
+ import type { PacktoryConfig as PublicPacktoryConfig } from 'packtory/config/config.d.ts';
3
+ export type PacktoryConfig = PublicPacktoryConfig;
4
4
  //# sourceMappingURL=command-line-interface.entry-point.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"command-line-interface.entry-point.d.ts","sourceRoot":"","sources":["../../../../../source/packages/command-line-interface/command-line-interface.entry-point.ts"],"names":[],"mappings":";AAMA,OAAO,KAAK,KAAK,WAAW,MAAM,wBAAwB,CAAC;AAuF3D,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC"}
1
+ {"version":3,"file":"command-line-interface.entry-point.d.ts","sourceRoot":"","sources":["../../../../../source/packages/command-line-interface/command-line-interface.entry-point.ts"],"names":[],"mappings":";AAOA,OAAO,KAAK,EAAE,cAAc,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAuHrF,MAAM,MAAM,cAAc,GAAG,oBAAoB,CAAC"}