@packtory/cli 0.0.8 → 0.0.10

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 (51) hide show
  1. package/command-line-interface/config-loader.js +7 -5
  2. package/command-line-interface/config-loader.js.map +1 -1
  3. package/command-line-interface/one-time-password-prompt.js +29 -0
  4. package/command-line-interface/one-time-password-prompt.js.map +1 -0
  5. package/command-line-interface/preview-io-shared.js +75 -0
  6. package/command-line-interface/preview-io-shared.js.map +1 -0
  7. package/command-line-interface/preview-io.js +15 -0
  8. package/command-line-interface/preview-io.js.map +1 -0
  9. package/command-line-interface/runner.js +211 -76
  10. package/command-line-interface/runner.js.map +1 -1
  11. package/command-line-interface/spinner-boot.js +9 -0
  12. package/command-line-interface/spinner-boot.js.map +1 -0
  13. package/command-line-interface/spinner-shared-state.js +167 -0
  14. package/command-line-interface/spinner-shared-state.js.map +1 -0
  15. package/command-line-interface/spinner-worker-backend.js +62 -0
  16. package/command-line-interface/spinner-worker-backend.js.map +1 -0
  17. package/command-line-interface/spinner-worker-loop.js +94 -0
  18. package/command-line-interface/spinner-worker-loop.js.map +1 -0
  19. package/command-line-interface/terminal-spinner-renderer.js +21 -15
  20. package/command-line-interface/terminal-spinner-renderer.js.map +1 -1
  21. package/common/typed-diff.js +5 -0
  22. package/common/typed-diff.js.map +1 -0
  23. package/package.json +14 -9
  24. package/packages/command-line-interface/command-line-interface.entry-point.d.ts +1 -1
  25. package/packages/command-line-interface/command-line-interface.entry-point.d.ts.map +1 -1
  26. package/packages/command-line-interface/command-line-interface.entry-point.js +61 -7
  27. package/packages/command-line-interface/command-line-interface.entry-point.js.map +1 -1
  28. package/packages/command-line-interface/spinner-boot.entry-point.js +25 -0
  29. package/packages/command-line-interface/spinner-boot.entry-point.js.map +1 -0
  30. package/packages/command-line-interface/spinner-worker.entry-point.js +16 -0
  31. package/packages/command-line-interface/spinner-worker.entry-point.js.map +1 -0
  32. package/readme.md +33 -1
  33. package/report/changed-artifacts.js +10 -0
  34. package/report/changed-artifacts.js.map +1 -0
  35. package/report/html-escaping.js +9 -0
  36. package/report/html-escaping.js.map +1 -0
  37. package/report/html-renderer.js +337 -0
  38. package/report/html-renderer.js.map +1 -0
  39. package/report/preview-document-diff.js +17 -0
  40. package/report/preview-document-diff.js.map +1 -0
  41. package/report/preview-document-helpers.js +173 -0
  42. package/report/preview-document-helpers.js.map +1 -0
  43. package/report/preview-document-tree.js +13 -0
  44. package/report/preview-document-tree.js.map +1 -0
  45. package/report/preview-document.js +97 -0
  46. package/report/preview-document.js.map +1 -0
  47. package/report/terminal-preview-renderer-shared.js +41 -0
  48. package/report/terminal-preview-renderer-shared.js.map +1 -0
  49. package/report/terminal-preview-renderer.js +94 -0
  50. package/report/terminal-preview-renderer.js.map +1 -0
  51. package/sbom.cdx.json +118 -0
@@ -0,0 +1,167 @@
1
+ const headerByteLength = 16;
2
+ const slotByteLength = 384;
3
+ const labelByteLength = 64;
4
+ const messageByteLength = 256;
5
+ const slotStateOffset = 4;
6
+ const slotLabelLengthOffset = 8;
7
+ const slotMessageLengthOffset = 10;
8
+ const slotLabelOffset = 16;
9
+ const slotMessageOffset = slotLabelOffset + labelByteLength;
10
+ const headerControlIndex = 0;
11
+ const headerColumnsIndex = 1;
12
+ const headerIntervalIndex = 2;
13
+ const slotGenerationIndex = 0;
14
+ const controlShutdownValue = 1;
15
+ const controlIdleValue = 0;
16
+ const maximumReadSlotAttempts = 1024;
17
+ const slotStateEmpty = 0;
18
+ const slotStateRunning = 1;
19
+ const slotStateSucceeded = 2;
20
+ const slotStateFailed = 3;
21
+ const slotStateCanceled = 4;
22
+ const textEncoder = new TextEncoder();
23
+ const textDecoder = new TextDecoder();
24
+ const stateToByteMap = {
25
+ empty: slotStateEmpty,
26
+ running: slotStateRunning,
27
+ succeeded: slotStateSucceeded,
28
+ failed: slotStateFailed,
29
+ canceled: slotStateCanceled
30
+ };
31
+ const byteToStateMap = {
32
+ [slotStateEmpty]: 'empty',
33
+ [slotStateRunning]: 'running',
34
+ [slotStateSucceeded]: 'succeeded',
35
+ [slotStateFailed]: 'failed',
36
+ [slotStateCanceled]: 'canceled'
37
+ };
38
+ export function createSpinnerSharedLayout(slotCount) {
39
+ return {
40
+ bufferByteLength: headerByteLength + slotCount * slotByteLength,
41
+ slotCount,
42
+ slotByteLength,
43
+ headerByteLength
44
+ };
45
+ }
46
+ function stateToByte(state) {
47
+ return stateToByteMap[state];
48
+ }
49
+ function byteToState(byte) {
50
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- writers always go through stateToByteMap so the byte is one of the known state values
51
+ return byteToStateMap[byte];
52
+ }
53
+ const labelSlice = {
54
+ contentOffset: slotLabelOffset,
55
+ contentCapacity: labelByteLength,
56
+ lengthOffset: slotLabelLengthOffset
57
+ };
58
+ const messageSlice = {
59
+ contentOffset: slotMessageOffset,
60
+ contentCapacity: messageByteLength,
61
+ lengthOffset: slotMessageLengthOffset
62
+ };
63
+ function createViews(buffer, layout) {
64
+ const headerInt32 = new Int32Array(buffer);
65
+ const headerUint32 = new Uint32Array(buffer);
66
+ const slotOffset = (slotIndex) => {
67
+ return layout.headerByteLength + slotIndex * layout.slotByteLength;
68
+ };
69
+ return {
70
+ headerInt32,
71
+ headerUint32,
72
+ slotInt32: (slotIndex) => {
73
+ return new Int32Array(buffer, slotOffset(slotIndex), 1);
74
+ },
75
+ slotBytes: (slotIndex) => {
76
+ return new Uint8Array(buffer, slotOffset(slotIndex), layout.slotByteLength);
77
+ },
78
+ slotData: (slotIndex) => {
79
+ return new DataView(buffer, slotOffset(slotIndex), layout.slotByteLength);
80
+ }
81
+ };
82
+ }
83
+ function writeStringIntoSlot(views, slotIndex, slice, value) {
84
+ const target = views
85
+ .slotBytes(slotIndex)
86
+ .subarray(slice.contentOffset, slice.contentOffset + slice.contentCapacity);
87
+ target.fill(0);
88
+ const { written } = textEncoder.encodeInto(value, target);
89
+ views.slotData(slotIndex).setUint16(slice.lengthOffset, written, true);
90
+ }
91
+ function readStringFromSlot(views, slotIndex, slice) {
92
+ const length = views.slotData(slotIndex).getUint16(slice.lengthOffset, true);
93
+ return textDecoder.decode(views.slotBytes(slotIndex).subarray(slice.contentOffset, slice.contentOffset + length));
94
+ }
95
+ function readSlotContent(views, slotIndex) {
96
+ return {
97
+ state: byteToState(views.slotData(slotIndex).getUint8(slotStateOffset)),
98
+ label: readStringFromSlot(views, slotIndex, labelSlice),
99
+ message: readStringFromSlot(views, slotIndex, messageSlice)
100
+ };
101
+ }
102
+ export function createSpinnerSharedAccessors(buffer, layout) {
103
+ const views = createViews(buffer, layout);
104
+ function writeStateByte(slotIndex, stateByte) {
105
+ views.slotData(slotIndex).setUint8(slotStateOffset, stateByte);
106
+ }
107
+ function readSlotGeneration(slotIndex) {
108
+ return Atomics.load(views.slotInt32(slotIndex), slotGenerationIndex);
109
+ }
110
+ function readSlotAttempt(slotIndex) {
111
+ return {
112
+ slot: readSlotContent(views, slotIndex),
113
+ generationAfter: readSlotGeneration(slotIndex)
114
+ };
115
+ }
116
+ return {
117
+ layout,
118
+ buffer,
119
+ setColumns(columns) {
120
+ Atomics.store(views.headerUint32, headerColumnsIndex, columns);
121
+ },
122
+ getColumns() {
123
+ return Atomics.load(views.headerUint32, headerColumnsIndex);
124
+ },
125
+ setIntervalMs(intervalMs) {
126
+ Atomics.store(views.headerUint32, headerIntervalIndex, intervalMs);
127
+ },
128
+ getIntervalMs() {
129
+ return Atomics.load(views.headerUint32, headerIntervalIndex);
130
+ },
131
+ requestShutdown() {
132
+ Atomics.store(views.headerInt32, headerControlIndex, controlShutdownValue);
133
+ },
134
+ isShutdownRequested() {
135
+ return Atomics.load(views.headerInt32, headerControlIndex) !== controlIdleValue;
136
+ },
137
+ bumpSlotGeneration(slotIndex) {
138
+ Atomics.add(views.slotInt32(slotIndex), slotGenerationIndex, 1);
139
+ },
140
+ writeSlot(slotIndex, state, label, message) {
141
+ writeStateByte(slotIndex, stateToByte(state));
142
+ writeStringIntoSlot(views, slotIndex, labelSlice, label);
143
+ writeStringIntoSlot(views, slotIndex, messageSlice, message);
144
+ },
145
+ readSlot(slotIndex) {
146
+ // Seqlock retry: writers atomically bump the slot generation after
147
+ // updating the (non-atomic) label/message bytes; if the generation
148
+ // moves between the two reads we observed a torn write and retry.
149
+ let generationBefore = readSlotGeneration(slotIndex);
150
+ const attempts = Array.from({ length: maximumReadSlotAttempts + 1 }, (_value, index) => {
151
+ return maximumReadSlotAttempts - index;
152
+ });
153
+ for (const remainingAttempts of attempts) {
154
+ if (remainingAttempts === 0) {
155
+ break;
156
+ }
157
+ const attemptResult = readSlotAttempt(slotIndex);
158
+ if (attemptResult.generationAfter === generationBefore) {
159
+ return attemptResult.slot;
160
+ }
161
+ generationBefore = attemptResult.generationAfter;
162
+ }
163
+ throw new Error('Failed to read a stable spinner slot snapshot');
164
+ }
165
+ };
166
+ }
167
+ //# sourceMappingURL=spinner-shared-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner-shared-state.js","sourceRoot":"","sources":["../../../../source/command-line-interface/spinner-shared-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import { createSpinnerSharedAccessors, createSpinnerSharedLayout } from "./spinner-shared-state.js";
2
+ const defaultSlotCount = 64;
3
+ const defaultIntervalMs = 80;
4
+ const defaultColumns = 80;
5
+ function resolveOptions(options) {
6
+ return {
7
+ slotCount: options.slotCount ?? defaultSlotCount,
8
+ intervalMs: options.intervalMs ?? defaultIntervalMs,
9
+ stdoutFileDescriptor: options.stdoutFileDescriptor ?? process.stdout.fd,
10
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- process.stdout.columns is undefined at runtime when stdout is not a TTY, despite the type declaring it as number
11
+ stdoutColumns: options.stdoutColumns ?? process.stdout.columns ?? defaultColumns,
12
+ spawnWorker: options.spawnWorker
13
+ };
14
+ }
15
+ function setupSharedBuffer(resolved) {
16
+ const layout = createSpinnerSharedLayout(resolved.slotCount);
17
+ const buffer = new SharedArrayBuffer(layout.bufferByteLength);
18
+ const accessors = createSpinnerSharedAccessors(buffer, layout);
19
+ accessors.setIntervalMs(resolved.intervalMs);
20
+ accessors.setColumns(resolved.stdoutColumns);
21
+ return accessors;
22
+ }
23
+ export function createSpinnerRuntime(options) {
24
+ const resolved = resolveOptions(options);
25
+ const accessors = setupSharedBuffer(resolved);
26
+ resolved.spawnWorker({
27
+ buffer: accessors.buffer,
28
+ slotCount: accessors.layout.slotCount,
29
+ stdoutFileDescriptor: resolved.stdoutFileDescriptor
30
+ });
31
+ return { accessors, slotCount: resolved.slotCount };
32
+ }
33
+ function writeSlot(accessors, update) {
34
+ accessors.writeSlot(update.slotIndex, update.state, update.label, update.message);
35
+ accessors.bumpSlotGeneration(update.slotIndex);
36
+ }
37
+ export function createWorkerSpinnerBackend(dependencies) {
38
+ const { runtime } = dependencies;
39
+ function ensureSlotIndexFits(slotIndex) {
40
+ if (slotIndex >= runtime.slotCount) {
41
+ throw new RangeError(`Spinner slot index ${slotIndex} exceeds backend capacity ${runtime.slotCount}; increase slotCount`);
42
+ }
43
+ }
44
+ return {
45
+ add(slotIndex, label, message) {
46
+ ensureSlotIndexFits(slotIndex);
47
+ writeSlot(runtime.accessors, { slotIndex, state: 'running', label, message });
48
+ },
49
+ update(slotIndex, label, message) {
50
+ ensureSlotIndexFits(slotIndex);
51
+ writeSlot(runtime.accessors, { slotIndex, state: 'running', label, message });
52
+ },
53
+ finish(slotIndex, status, label, message) {
54
+ ensureSlotIndexFits(slotIndex);
55
+ writeSlot(runtime.accessors, { slotIndex, state: status, label, message });
56
+ },
57
+ shutdown() {
58
+ runtime.accessors.requestShutdown();
59
+ }
60
+ };
61
+ }
62
+ //# sourceMappingURL=spinner-worker-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner-worker-backend.js","sourceRoot":"","sources":["../../../../source/command-line-interface/spinner-worker-backend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ import { times } from 'remeda';
2
+ import { bold, green, red } from 'yoctocolors';
3
+ import { createSpinnerSharedAccessors, createSpinnerSharedLayout } from "./spinner-shared-state.js";
4
+ const spinnerFrames = '⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏';
5
+ const successSymbol = bold(green('✔'));
6
+ const failureSymbol = bold(red('✖'));
7
+ const cursorUp = (lines) => {
8
+ return `[${lines}A`;
9
+ };
10
+ const clearEntireLine = '';
11
+ const cursorToColumnZero = '\r';
12
+ function readSlotSnapshot(accessors, slotIndex) {
13
+ return accessors.readSlot(slotIndex);
14
+ }
15
+ function selectGlyph(state, frameIndex) {
16
+ if (state === 'succeeded') {
17
+ return successSymbol;
18
+ }
19
+ if (state === 'failed' || state === 'canceled') {
20
+ return failureSymbol;
21
+ }
22
+ return spinnerFrames.charAt(frameIndex % spinnerFrames.length);
23
+ }
24
+ function truncateToColumns(line, columns) {
25
+ if (columns <= 0) {
26
+ return line;
27
+ }
28
+ return line.slice(0, columns);
29
+ }
30
+ function formatLine(snapshot, frameIndex, columns) {
31
+ const glyph = selectGlyph(snapshot.state, frameIndex);
32
+ const composed = `${glyph} ${snapshot.label}: ${snapshot.message}`;
33
+ return truncateToColumns(composed, columns);
34
+ }
35
+ function readAllSnapshots(accessors) {
36
+ return times(accessors.layout.slotCount, (slotIndex) => {
37
+ return readSlotSnapshot(accessors, slotIndex);
38
+ });
39
+ }
40
+ function findHighestActiveSlotIndex(snapshots) {
41
+ return snapshots.findLastIndex((snapshot) => {
42
+ return snapshot.state !== 'empty';
43
+ });
44
+ }
45
+ function buildRedrawSequence(state, columns, expectedLineCount) {
46
+ let output = '';
47
+ if (state.renderedLineCount > 0) {
48
+ output += cursorUp(state.renderedLineCount);
49
+ }
50
+ const visibleSnapshots = state.snapshots.slice(0, expectedLineCount);
51
+ for (const snapshot of visibleSnapshots) {
52
+ const line = formatLine(snapshot, state.frameIndex, columns);
53
+ output += `${clearEntireLine + cursorToColumnZero + line}\n`;
54
+ }
55
+ return output;
56
+ }
57
+ export function startSpinnerWorker(input, dependencies) {
58
+ const layout = createSpinnerSharedLayout(input.slotCount);
59
+ const accessors = createSpinnerSharedAccessors(input.buffer, layout);
60
+ const state = {
61
+ snapshots: readAllSnapshots(accessors),
62
+ renderedLineCount: 0,
63
+ frameIndex: 0
64
+ };
65
+ function renderTick() {
66
+ const snapshots = readAllSnapshots(accessors);
67
+ const highestActive = findHighestActiveSlotIndex(snapshots);
68
+ if (highestActive < 0 && state.renderedLineCount === 0) {
69
+ return;
70
+ }
71
+ const expectedLineCount = Math.max(state.renderedLineCount, highestActive + 1);
72
+ state.snapshots = snapshots;
73
+ const sequence = buildRedrawSequence(state, accessors.getColumns(), expectedLineCount);
74
+ dependencies.write(input.stdoutFileDescriptor, sequence);
75
+ state.renderedLineCount = expectedLineCount;
76
+ state.frameIndex += 1;
77
+ }
78
+ const intervalMs = accessors.getIntervalMs();
79
+ const ticker = dependencies.setInterval(() => {
80
+ renderTick();
81
+ if (accessors.isShutdownRequested()) {
82
+ renderTick();
83
+ dependencies.clearInterval(ticker);
84
+ }
85
+ }, intervalMs);
86
+ }
87
+ export function isSpinnerWorkerInput(value) {
88
+ return (typeof value === 'object' &&
89
+ value !== null &&
90
+ Reflect.get(value, 'buffer') instanceof SharedArrayBuffer &&
91
+ typeof Reflect.get(value, 'slotCount') === 'number' &&
92
+ typeof Reflect.get(value, 'stdoutFileDescriptor') === 'number');
93
+ }
94
+ //# sourceMappingURL=spinner-worker-loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner-worker-loop.js","sourceRoot":"","sources":["../../../../source/command-line-interface/spinner-worker-loop.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,11 @@
1
+ const cancelMessage = 'Canceled …';
1
2
  export function createTerminalSpinnerRenderer(dependencies) {
2
- const { SpinnerClass } = dependencies;
3
+ const { backend } = dependencies;
3
4
  const spinners = new Map();
5
+ const usedSlots = new Set();
6
+ function nextFreeSlotIndex() {
7
+ return usedSlots.size;
8
+ }
4
9
  function getSpinnerById(id) {
5
10
  const spinner = spinners.get(id);
6
11
  if (spinner === undefined) {
@@ -16,31 +21,32 @@ export function createTerminalSpinnerRenderer(dependencies) {
16
21
  return {
17
22
  add(id, label, message) {
18
23
  ensureIdDoesNotExist(id);
19
- const spinner = new SpinnerClass({ name: 'dots' });
20
- spinners.set(id, { instance: spinner, isRunning: true });
21
- spinner.start(message, { withPrefix: `${label}: ` });
24
+ const slotIndex = nextFreeSlotIndex();
25
+ usedSlots.add(slotIndex);
26
+ spinners.set(id, { slotIndex, label, message, status: 'running' });
27
+ backend.add(slotIndex, label, message);
22
28
  },
23
29
  updateMessage(id, message) {
24
30
  const spinner = getSpinnerById(id);
25
- spinner.instance.text = message;
31
+ spinner.message = message;
32
+ backend.update(spinner.slotIndex, spinner.label, message);
26
33
  },
27
34
  stop(id, status, message) {
28
35
  const spinner = getSpinnerById(id);
29
- spinners.set(id, { instance: spinner.instance, isRunning: false });
30
- if (status === 'failure') {
31
- spinner.instance.failed(message);
32
- }
33
- else {
34
- spinner.instance.succeed(message);
35
- }
36
+ spinner.message = message;
37
+ spinner.status = status;
38
+ const finalState = status === 'success' ? 'succeeded' : 'failed';
39
+ backend.finish(spinner.slotIndex, finalState, spinner.label, message);
36
40
  },
37
41
  stopAll() {
38
42
  for (const spinner of spinners.values()) {
39
- if (spinner.isRunning) {
40
- spinner.instance.failed('Canceled …');
43
+ if (spinner.status === 'running') {
44
+ spinner.message = cancelMessage;
45
+ backend.finish(spinner.slotIndex, 'canceled', spinner.label, cancelMessage);
41
46
  }
42
47
  }
43
- SpinnerClass.reset();
48
+ spinners.clear();
49
+ backend.shutdown();
44
50
  }
45
51
  };
46
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-spinner-renderer.js","sourceRoot":"","sources":["../../../../source/command-line-interface/terminal-spinner-renderer.ts"],"names":[],"mappings":"AAoBA,MAAM,UAAU,6BAA6B,CACzC,YAAiD;IAEjD,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEpD,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,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACnD,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACzD,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,aAAa,CAAC,EAAE,EAAE,OAAO;YACrB,MAAM,OAAO,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;YACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO;YACpB,MAAM,OAAO,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;YAEnC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YAEnE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;QACL,CAAC;QAED,OAAO;YACH,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;gBACtC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;oBACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC1C,CAAC;YACL,CAAC;YACD,YAAY,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;KACJ,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"terminal-spinner-renderer.js","sourceRoot":"","sources":["../../../../source/command-line-interface/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,5 @@
1
+ import { structuredPatch } from 'diff';
2
+ export function createStructuredPatch(...args) {
3
+ return structuredPatch(...args);
4
+ }
5
+ //# sourceMappingURL=typed-diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-diff.js","sourceRoot":"","sources":["../../../../source/common/typed-diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAiE,MAAM,MAAM,CAAC;AAYtG,MAAM,UAAU,qBAAqB,CAAC,GAAG,IAAyB;IAC9D,OAAO,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC;AACpC,CAAC"}
package/package.json CHANGED
@@ -1,22 +1,23 @@
1
1
  {
2
2
  "author": "Mathias Schreck <schreck.mathias@gmail.com>",
3
3
  "bin": {
4
- "packtory": "packages/command-line-interface/command-line-interface.entry-point.js"
4
+ "packtory": "./packages/command-line-interface/command-line-interface.entry-point.js"
5
5
  },
6
6
  "contributors": [
7
7
  "Christian Rackerseder <github@echooff.de>"
8
8
  ],
9
9
  "dependencies": {
10
- "@topcli/spinner": "4.2.1",
11
10
  "cmd-ts": "0.15.0",
12
- "effect": "2.2.5",
13
- "kleur": "4.1.5",
14
- "packtory": "0.0.8"
11
+ "diff": "9.0.0",
12
+ "packtory": "0.0.10",
13
+ "remeda": "2.34.1",
14
+ "yoctocolors": "2.1.2"
15
15
  },
16
16
  "description": "Effortlessly bundle and publish npm packages from the command line with @packtory/cli.",
17
17
  "engines": {
18
- "node": "^22 || ^24"
18
+ "node": "^24 || ^26"
19
19
  },
20
+ "exports": {},
20
21
  "keywords": [
21
22
  "bundler",
22
23
  "bundling",
@@ -30,13 +31,17 @@
30
31
  "versioning"
31
32
  ],
32
33
  "license": "MIT",
33
- "main": "packages/command-line-interface/command-line-interface.entry-point.js",
34
34
  "name": "@packtory/cli",
35
35
  "repository": {
36
36
  "type": "git",
37
37
  "url": "git+ssh://git@github.com/enormora/packtory.git"
38
38
  },
39
+ "sideEffects": [
40
+ "./command-line-interface/preview-io.js",
41
+ "./packages/command-line-interface/command-line-interface.entry-point.js",
42
+ "./packages/command-line-interface/spinner-boot.entry-point.js",
43
+ "./packages/command-line-interface/spinner-worker.entry-point.js"
44
+ ],
39
45
  "type": "module",
40
- "types": "packages/command-line-interface/command-line-interface.entry-point.d.ts",
41
- "version": "0.0.8"
46
+ "version": "0.0.10"
42
47
  }
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
- import type * as configTypes from 'packtory/config/config.ts';
2
+ import type * as configTypes from 'packtory/config/config.d.ts';
3
3
  export type PacktoryConfig = configTypes.PacktoryConfig;
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":";AAGA,OAAO,KAAK,KAAK,WAAW,MAAM,wBAAwB,CAAC;AA+B3D,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,KAAK,WAAW,MAAM,wBAAwB,CAAC;AAsF3D,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC"}
@@ -7,25 +7,79 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
7
7
  }
8
8
  return path;
9
9
  };
10
- import { Spinner } from '@topcli/spinner';
10
+ import fs from 'node:fs/promises';
11
+ import readline from 'node:readline/promises';
12
+ import { createClock } from "packtory/common/clock.js";
13
+ import { bootedSpinnerRuntime } from "./spinner-boot.entry-point.js";
14
+ import { createOneTimePasswordPrompt } from "../../command-line-interface/one-time-password-prompt.js";
11
15
  import { createCommandLineInterfaceRunner } from "../../command-line-interface/runner.js";
12
16
  import { createTerminalSpinnerRenderer } from "../../command-line-interface/terminal-spinner-renderer.js";
17
+ import { createWorkerSpinnerBackend } from "../../command-line-interface/spinner-worker-backend.js";
13
18
  import { createConfigLoader } from "../../command-line-interface/config-loader.js";
14
- import { buildAndPublishAll, resolveAndLinkAll, progressBroadcastConsumer } from "packtory/packages/packtory/packtory.entry-point.js";
19
+ import { previewIo } from "../../command-line-interface/preview-io.js";
20
+ import { createPacktory } from "packtory/packtory/packtory.js";
21
+ import { createScheduler } from "packtory/packtory/scheduler.js";
22
+ import { readCiEnvironment } from "packtory/bundle-emitter/repository-coherence.js";
23
+ import { buildPackageProcessorComposition } from "packtory/packages/package-processor.composition.js";
15
24
  async function importModule(modulePath) {
16
25
  return import(__rewriteRelativeImportExtension(modulePath));
17
26
  }
27
+ const spinnerRenderer = createTerminalSpinnerRenderer({
28
+ backend: createWorkerSpinnerBackend({ runtime: bootedSpinnerRuntime })
29
+ });
30
+ const clock = createClock();
31
+ const promptForOneTimePassword = createOneTimePasswordPrompt({
32
+ clock,
33
+ isInteractiveTerminal: () => {
34
+ return process.stdin.isTTY && process.stdout.isTTY;
35
+ },
36
+ stopSpinner: () => {
37
+ spinnerRenderer.stopAll();
38
+ },
39
+ createInterface: () => {
40
+ return readline.createInterface({
41
+ input: process.stdin,
42
+ output: process.stdout
43
+ });
44
+ }
45
+ });
46
+ const { packageProcessor, progressBroadcaster, deadCodeEliminator } = buildPackageProcessorComposition({
47
+ promptForOneTimePassword,
48
+ ciEnvironment: readCiEnvironment(process.env)
49
+ });
50
+ const scheduler = createScheduler({
51
+ progressBroadcastProvider: progressBroadcaster.provider
52
+ });
53
+ const packtory = createPacktory({
54
+ scheduler,
55
+ packageProcessor,
56
+ deadCodeEliminator,
57
+ progressBroadcaster
58
+ });
18
59
  const commandLinerInterfaceRunner = createCommandLineInterfaceRunner({
19
- packtory: { buildAndPublishAll, resolveAndLinkAll },
20
- progressBroadcaster: progressBroadcastConsumer,
21
- spinnerRenderer: createTerminalSpinnerRenderer({ SpinnerClass: Spinner }),
60
+ packtory,
61
+ progressBroadcaster: progressBroadcaster.consumer,
62
+ spinnerRenderer,
22
63
  configLoader: createConfigLoader({ currentWorkingDirectory: process.cwd(), importModule }),
64
+ writeReportFile: async (filePath, content) => {
65
+ await fs.writeFile(filePath, content);
66
+ },
67
+ pageOutput: async (content) => {
68
+ const didPage = await previewIo.pagePreviewOutput(content);
69
+ if (!didPage) {
70
+ console.log(content);
71
+ }
72
+ },
73
+ openFile: previewIo.openPreviewFile,
74
+ createTemporaryFilePath: previewIo.createTemporaryPreviewHtmlPath,
23
75
  log: console.log
24
76
  });
77
+ function setExitCode(exitCode) {
78
+ process.exitCode = exitCode;
79
+ }
25
80
  async function main() {
26
81
  const exitCode = await commandLinerInterfaceRunner.run(process.argv);
27
- // eslint-disable-next-line require-atomic-updates -- we intentionally want to override the exitCode no matter what its current value is
28
- process.exitCode = exitCode;
82
+ setExitCode(exitCode);
29
83
  }
30
84
  function crash(error) {
31
85
  console.error(error);
@@ -1 +1 @@
1
- {"version":3,"file":"command-line-interface.entry-point.js","sourceRoot":"","sources":["../../../../../source/packages/command-line-interface/command-line-interface.entry-point.ts"],"names":[],"mappings":";;;;;;;;;AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAE,gCAAgC,EAAE,MAAM,wCAAwC,CAAC;AAC1F,OAAO,EAAE,6BAA6B,EAAE,MAAM,2DAA2D,CAAC;AAC1G,OAAO,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAEvH,KAAK,UAAU,YAAY,CAAC,UAAkB;IAC1C,OAAO,MAAM,kCAAC,UAAU,EAAC,CAAC;AAC9B,CAAC;AAED,MAAM,2BAA2B,GAAG,gCAAgC,CAAC;IACjE,QAAQ,EAAE,EAAE,kBAAkB,EAAE,iBAAiB,EAAE;IACnD,mBAAmB,EAAE,yBAAyB;IAC9C,eAAe,EAAE,6BAA6B,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;IACzE,YAAY,EAAE,kBAAkB,CAAC,EAAE,uBAAuB,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,CAAC;IAC1F,GAAG,EAAE,OAAO,CAAC,GAAG;CACnB,CAAC,CAAC;AAEH,KAAK,UAAU,IAAI;IACf,MAAM,QAAQ,GAAG,MAAM,2BAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,wIAAwI;IACxI,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAChC,CAAC;AAED,SAAS,KAAK,CAAC,KAAc;IACzB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"command-line-interface.entry-point.js","sourceRoot":"","sources":["../../../../../source/packages/command-line-interface/command-line-interface.entry-point.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import path from 'node:path';
2
+ import { fileURLToPath } from 'node:url';
3
+ import { Worker as WorkerThread } from 'node:worker_threads';
4
+ import { bootSpinnerRuntime } from "../../command-line-interface/spinner-boot.js";
5
+ const bootModulePath = fileURLToPath(import.meta.url);
6
+ const bootModuleExtension = path.extname(bootModulePath);
7
+ const workerModulePath = path.join(path.dirname(bootModulePath), `spinner-worker.entry-point${bootModuleExtension}`);
8
+ const workerExecArgv = bootModuleExtension === '.ts' ? ['--experimental-strip-types', '--enable-source-maps'] : ['--enable-source-maps'];
9
+ function spawnWorker(request) {
10
+ const worker = new WorkerThread(workerModulePath, {
11
+ workerData: {
12
+ buffer: request.buffer,
13
+ slotCount: request.slotCount,
14
+ stdoutFileDescriptor: request.stdoutFileDescriptor
15
+ },
16
+ execArgv: workerExecArgv
17
+ });
18
+ worker.unref();
19
+ }
20
+ export const bootedSpinnerRuntime = bootSpinnerRuntime({
21
+ spawnWorker,
22
+ initialLabel: 'packtory',
23
+ initialMessage: 'Starting …'
24
+ });
25
+ //# sourceMappingURL=spinner-boot.entry-point.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner-boot.entry-point.js","sourceRoot":"","sources":["../../../../../source/packages/command-line-interface/spinner-boot.entry-point.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAGlF,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtD,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACzD,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,6BAA6B,mBAAmB,EAAE,CAAC,CAAC;AACrH,MAAM,cAAc,GAChB,mBAAmB,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,4BAA4B,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;AAEtH,SAAS,WAAW,CAAC,OAA2B;IAC5C,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,gBAAgB,EAAE;QAC9C,UAAU,EAAE;YACR,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;SACrD;QACD,QAAQ,EAAE,cAAc;KAC3B,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAmB,kBAAkB,CAAC;IACnE,WAAW;IACX,YAAY,EAAE,UAAU;IACxB,cAAc,EAAE,YAAY;CAC/B,CAAC,CAAC"}