@quenty/nevermore-cli 4.50.1 → 4.52.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 (116) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/commands/batch-command/batch-bundle-command.d.ts +15 -0
  3. package/dist/commands/batch-command/batch-bundle-command.d.ts.map +1 -0
  4. package/dist/commands/batch-command/batch-bundle-command.js +168 -0
  5. package/dist/commands/batch-command/batch-bundle-command.js.map +1 -0
  6. package/dist/commands/batch-command/batch-deploy-command.d.ts +2 -0
  7. package/dist/commands/batch-command/batch-deploy-command.d.ts.map +1 -1
  8. package/dist/commands/batch-command/batch-deploy-command.js +115 -16
  9. package/dist/commands/batch-command/batch-deploy-command.js.map +1 -1
  10. package/dist/commands/batch-command/batch-test-command.d.ts +1 -0
  11. package/dist/commands/batch-command/batch-test-command.d.ts.map +1 -1
  12. package/dist/commands/batch-command/batch-test-command.js +109 -17
  13. package/dist/commands/batch-command/batch-test-command.js.map +1 -1
  14. package/dist/commands/batch-command/index.d.ts.map +1 -1
  15. package/dist/commands/batch-command/index.js +2 -0
  16. package/dist/commands/batch-command/index.js.map +1 -1
  17. package/dist/commands/deploy-command/index.d.ts.map +1 -1
  18. package/dist/commands/deploy-command/index.js +7 -0
  19. package/dist/commands/deploy-command/index.js.map +1 -1
  20. package/dist/commands/test-command/test-command.d.ts +1 -0
  21. package/dist/commands/test-command/test-command.d.ts.map +1 -1
  22. package/dist/commands/test-command/test-command.js +19 -3
  23. package/dist/commands/test-command/test-command.js.map +1 -1
  24. package/dist/commands/tools-command/ci-post-deploy-results.d.ts.map +1 -1
  25. package/dist/commands/tools-command/ci-post-deploy-results.js +6 -2
  26. package/dist/commands/tools-command/ci-post-deploy-results.js.map +1 -1
  27. package/dist/commands/tools-command/ci-post-test-results.d.ts +1 -0
  28. package/dist/commands/tools-command/ci-post-test-results.d.ts.map +1 -1
  29. package/dist/commands/tools-command/ci-post-test-results.js +12 -3
  30. package/dist/commands/tools-command/ci-post-test-results.js.map +1 -1
  31. package/dist/utils/batch/changed-packages-utils.d.ts +11 -0
  32. package/dist/utils/batch/changed-packages-utils.d.ts.map +1 -1
  33. package/dist/utils/batch/changed-packages-utils.js +14 -0
  34. package/dist/utils/batch/changed-packages-utils.js.map +1 -1
  35. package/dist/utils/build/build.d.ts +7 -0
  36. package/dist/utils/build/build.d.ts.map +1 -1
  37. package/dist/utils/build/build.js.map +1 -1
  38. package/dist/utils/bundle/untrusted-tar.d.ts +28 -0
  39. package/dist/utils/bundle/untrusted-tar.d.ts.map +1 -0
  40. package/dist/utils/bundle/untrusted-tar.js +116 -0
  41. package/dist/utils/bundle/untrusted-tar.js.map +1 -0
  42. package/dist/utils/deploy/deploy-github-columns.d.ts +8 -1
  43. package/dist/utils/deploy/deploy-github-columns.d.ts.map +1 -1
  44. package/dist/utils/deploy/deploy-github-columns.js.map +1 -1
  45. package/dist/utils/deploy/deploy-metadata.d.ts +5 -0
  46. package/dist/utils/deploy/deploy-metadata.d.ts.map +1 -1
  47. package/dist/utils/deploy/deploy-metadata.js +36 -0
  48. package/dist/utils/deploy/deploy-metadata.js.map +1 -1
  49. package/dist/utils/deploy/deploy-metadata.test.js +35 -2
  50. package/dist/utils/deploy/deploy-metadata.test.js.map +1 -1
  51. package/dist/utils/deploy/prebuilt-deploy-bundle.d.ts +38 -0
  52. package/dist/utils/deploy/prebuilt-deploy-bundle.d.ts.map +1 -0
  53. package/dist/utils/deploy/prebuilt-deploy-bundle.js +209 -0
  54. package/dist/utils/deploy/prebuilt-deploy-bundle.js.map +1 -0
  55. package/dist/utils/deploy/prebuilt-deploy-bundle.test.d.ts +2 -0
  56. package/dist/utils/deploy/prebuilt-deploy-bundle.test.d.ts.map +1 -0
  57. package/dist/utils/deploy/prebuilt-deploy-bundle.test.js +194 -0
  58. package/dist/utils/deploy/prebuilt-deploy-bundle.test.js.map +1 -0
  59. package/dist/utils/job-context/base-job-context.d.ts.map +1 -1
  60. package/dist/utils/job-context/base-job-context.js +3 -2
  61. package/dist/utils/job-context/base-job-context.js.map +1 -1
  62. package/dist/utils/job-context/batch-script-job-context.d.ts +12 -0
  63. package/dist/utils/job-context/batch-script-job-context.d.ts.map +1 -1
  64. package/dist/utils/job-context/batch-script-job-context.js +19 -0
  65. package/dist/utils/job-context/batch-script-job-context.js.map +1 -1
  66. package/dist/utils/open-cloud/open-cloud-client.d.ts +1 -0
  67. package/dist/utils/open-cloud/open-cloud-client.d.ts.map +1 -1
  68. package/dist/utils/open-cloud/open-cloud-client.js +5 -0
  69. package/dist/utils/open-cloud/open-cloud-client.js.map +1 -1
  70. package/dist/utils/open-cloud/open-cloud-client.test.js +11 -0
  71. package/dist/utils/open-cloud/open-cloud-client.test.js.map +1 -1
  72. package/dist/utils/sourcemap/sourcemap-loader.d.ts +3 -3
  73. package/dist/utils/sourcemap/sourcemap-loader.d.ts.map +1 -1
  74. package/dist/utils/sourcemap/sourcemap-loader.js +6 -7
  75. package/dist/utils/sourcemap/sourcemap-loader.js.map +1 -1
  76. package/dist/utils/testing/batch-run.e2e.test.js +36 -0
  77. package/dist/utils/testing/batch-run.e2e.test.js.map +1 -1
  78. package/dist/utils/testing/runner/prebuilt-batch-bundle.d.ts +26 -0
  79. package/dist/utils/testing/runner/prebuilt-batch-bundle.d.ts.map +1 -0
  80. package/dist/utils/testing/runner/prebuilt-batch-bundle.js +145 -0
  81. package/dist/utils/testing/runner/prebuilt-batch-bundle.js.map +1 -0
  82. package/dist/utils/testing/runner/prebuilt-batch-bundle.test.d.ts +2 -0
  83. package/dist/utils/testing/runner/prebuilt-batch-bundle.test.d.ts.map +1 -0
  84. package/dist/utils/testing/runner/prebuilt-batch-bundle.test.js +197 -0
  85. package/dist/utils/testing/runner/prebuilt-batch-bundle.test.js.map +1 -0
  86. package/dist/utils/testing/runner/test-runner.d.ts +8 -1
  87. package/dist/utils/testing/runner/test-runner.d.ts.map +1 -1
  88. package/dist/utils/testing/runner/test-runner.js +19 -6
  89. package/dist/utils/testing/runner/test-runner.js.map +1 -1
  90. package/package.json +7 -6
  91. package/src/commands/batch-command/batch-bundle-command.ts +236 -0
  92. package/src/commands/batch-command/batch-deploy-command.ts +160 -16
  93. package/src/commands/batch-command/batch-test-command.ts +162 -18
  94. package/src/commands/batch-command/index.ts +2 -0
  95. package/src/commands/deploy-command/index.ts +7 -0
  96. package/src/commands/test-command/test-command.ts +20 -3
  97. package/src/commands/tools-command/ci-post-deploy-results.ts +9 -2
  98. package/src/commands/tools-command/ci-post-test-results.ts +20 -3
  99. package/src/utils/batch/changed-packages-utils.ts +23 -0
  100. package/src/utils/build/build.ts +7 -0
  101. package/src/utils/bundle/untrusted-tar.ts +160 -0
  102. package/src/utils/deploy/deploy-github-columns.ts +8 -1
  103. package/src/utils/deploy/deploy-metadata.test.ts +50 -1
  104. package/src/utils/deploy/deploy-metadata.ts +39 -0
  105. package/src/utils/deploy/prebuilt-deploy-bundle.test.ts +265 -0
  106. package/src/utils/deploy/prebuilt-deploy-bundle.ts +297 -0
  107. package/src/utils/job-context/base-job-context.ts +4 -2
  108. package/src/utils/job-context/batch-script-job-context.ts +34 -3
  109. package/src/utils/open-cloud/open-cloud-client.test.ts +15 -0
  110. package/src/utils/open-cloud/open-cloud-client.ts +11 -0
  111. package/src/utils/sourcemap/sourcemap-loader.ts +7 -9
  112. package/src/utils/testing/batch-run.e2e.test.ts +42 -0
  113. package/src/utils/testing/runner/prebuilt-batch-bundle.test.ts +272 -0
  114. package/src/utils/testing/runner/prebuilt-batch-bundle.ts +204 -0
  115. package/src/utils/testing/runner/test-runner.ts +43 -13
  116. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,145 @@
1
+ import * as fs from 'fs/promises';
2
+ import * as path from 'path';
3
+ import * as tar from 'tar';
4
+ import { BuildContext } from '@quenty/nevermore-template-helpers';
5
+ import { PLACE_UPLOAD_MAX_BYTES } from '../../open-cloud/open-cloud-client.js';
6
+ import { PACKAGE_NAME_PATTERN, readUntrustedTarAsync, } from '../../bundle/untrusted-tar.js';
7
+ /** Suggested file suffix, following `deploy.nevermore.json`. */
8
+ export const BUNDLE_FILE_SUFFIX = '.nevermore.tests.tar';
9
+ const MANIFEST_FILE_NAME = 'manifest.json';
10
+ const FORMAT_VERSION = 1;
11
+ const MAX_CHUNKS = 32;
12
+ const MAX_PACKAGES = 1000;
13
+ const MAX_MANIFEST_BYTES = 1024 * 1024;
14
+ const CHUNK_FILE_PATTERN = /^place-\d{1,3}\.rbxl$/;
15
+ const SLUG_PATTERN = /^[A-Za-z0-9_.-]{1,100}$/;
16
+ export async function writePrebuiltBatchBundleAsync(file, chunks, hasJestConfig) {
17
+ const stage = await BuildContext.createAsync({ prefix: 'test-bundle-' });
18
+ const stageDir = stage.buildDir;
19
+ try {
20
+ const manifest = {
21
+ formatVersion: FORMAT_VERSION,
22
+ kind: 'tests',
23
+ chunks: [],
24
+ };
25
+ for (const [index, chunk] of chunks.entries()) {
26
+ const placeFile = `place-${index + 1}.rbxl`;
27
+ await fs.copyFile(chunk.rbxlPath, path.join(stageDir, placeFile));
28
+ manifest.chunks.push({
29
+ file: placeFile,
30
+ packages: [...chunk.slugMap].map(([name, slug]) => ({
31
+ name,
32
+ slug,
33
+ hasJestConfig: hasJestConfig.get(name) ?? false,
34
+ })),
35
+ });
36
+ }
37
+ await fs.writeFile(path.join(stageDir, MANIFEST_FILE_NAME), JSON.stringify(manifest, null, 2));
38
+ await fs.mkdir(path.dirname(path.resolve(file)), { recursive: true });
39
+ await tar.c({ file, cwd: stageDir, portable: true }, [
40
+ MANIFEST_FILE_NAME,
41
+ ...manifest.chunks.map((c) => c.file),
42
+ ]);
43
+ }
44
+ finally {
45
+ await stage.cleanupAsync();
46
+ }
47
+ }
48
+ /**
49
+ * Read a bundle file. It is untrusted: entries are read from the archive, never
50
+ * extracted by it, and only `manifest.json` and `place-N.rbxl` regular files
51
+ * are accepted.
52
+ */
53
+ export async function readPrebuiltBatchBundleAsync(file) {
54
+ let stat;
55
+ try {
56
+ stat = await fs.lstat(file);
57
+ }
58
+ catch {
59
+ throw new Error(`Bundle file not found: ${file}`);
60
+ }
61
+ if (!stat.isFile()) {
62
+ throw new Error(`Bundle ${file} is not a regular file`);
63
+ }
64
+ const buildContext = await BuildContext.createAsync({
65
+ prefix: 'test-bundle-',
66
+ });
67
+ const dir = buildContext.buildDir;
68
+ try {
69
+ const { manifestText, entrySizes: placeSizes } = await readUntrustedTarAsync(file, dir, {
70
+ kind: 'tests',
71
+ manifestName: MANIFEST_FILE_NAME,
72
+ maxManifestBytes: MAX_MANIFEST_BYTES,
73
+ isEntryAllowed: (name) => CHUNK_FILE_PATTERN.test(name),
74
+ maxEntries: MAX_CHUNKS,
75
+ maxEntriesMessage: `Bundle must hold at most ${MAX_CHUNKS} places`,
76
+ checkEntrySize: (name, size) => size > PLACE_UPLOAD_MAX_BYTES
77
+ ? `${name} is over the place upload limit`
78
+ : undefined,
79
+ });
80
+ return { ..._parseManifest(manifestText, dir, placeSizes), buildContext };
81
+ }
82
+ catch (err) {
83
+ await buildContext.cleanupAsync();
84
+ throw err;
85
+ }
86
+ }
87
+ function _parseManifest(manifestText, dir, placeSizes) {
88
+ let parsed;
89
+ try {
90
+ parsed = JSON.parse(manifestText);
91
+ }
92
+ catch {
93
+ throw new Error('Bundle manifest is not valid JSON');
94
+ }
95
+ const manifest = parsed;
96
+ if (manifest?.formatVersion !== FORMAT_VERSION) {
97
+ throw new Error(`Unsupported bundle format ${String(manifest?.formatVersion)} ` +
98
+ `(expected ${FORMAT_VERSION})`);
99
+ }
100
+ if (!Array.isArray(manifest.chunks) || manifest.chunks.length > MAX_CHUNKS) {
101
+ throw new Error(`Bundle must list at most ${MAX_CHUNKS} places`);
102
+ }
103
+ if (manifest.chunks.length !== placeSizes.size) {
104
+ throw new Error('Bundle manifest does not list every place it holds');
105
+ }
106
+ const seenNames = new Set();
107
+ const seenSlugs = new Set();
108
+ const seenFiles = new Set();
109
+ const chunks = [];
110
+ const packages = [];
111
+ for (const entry of manifest.chunks) {
112
+ const file = entry?.file;
113
+ const sizeBytes = typeof file === 'string' ? placeSizes.get(file) : undefined;
114
+ if (sizeBytes === undefined || seenFiles.has(file)) {
115
+ throw new Error(`Bundle lists an invalid place file: ${String(file)}`);
116
+ }
117
+ seenFiles.add(file);
118
+ if (!Array.isArray(entry.packages) || entry.packages.length === 0) {
119
+ throw new Error(`${file} lists no packages`);
120
+ }
121
+ const slugMap = new Map();
122
+ for (const pkg of entry.packages) {
123
+ const { name, slug, hasJestConfig } = pkg ?? {};
124
+ if (typeof name !== 'string' || !PACKAGE_NAME_PATTERN.test(name)) {
125
+ throw new Error(`Bundle lists an invalid package name: ${String(name)}`);
126
+ }
127
+ if (typeof slug !== 'string' || !SLUG_PATTERN.test(slug)) {
128
+ throw new Error(`Bundle lists an invalid slug for ${name}`);
129
+ }
130
+ if (seenNames.has(name) || seenSlugs.has(slug)) {
131
+ throw new Error(`Bundle lists ${name} (${slug}) more than once`);
132
+ }
133
+ seenNames.add(name);
134
+ seenSlugs.add(slug);
135
+ slugMap.set(name, slug);
136
+ packages.push({ name, hasJestConfig: hasJestConfig === true });
137
+ }
138
+ chunks.push({ rbxlPath: path.join(dir, file), slugMap, sizeBytes });
139
+ }
140
+ if (packages.length > MAX_PACKAGES) {
141
+ throw new Error(`Bundle lists more than ${MAX_PACKAGES} packages`);
142
+ }
143
+ return { chunks, packages };
144
+ }
145
+ //# sourceMappingURL=prebuilt-batch-bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prebuilt-batch-bundle.js","sourceRoot":"","sources":["../../../../src/utils/testing/runner/prebuilt-batch-bundle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=prebuilt-batch-bundle.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prebuilt-batch-bundle.test.d.ts","sourceRoot":"","sources":["../../../../src/utils/testing/runner/prebuilt-batch-bundle.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,197 @@
1
+ import * as fs from 'fs/promises';
2
+ import * as os from 'os';
3
+ import * as path from 'path';
4
+ import { Header } from 'tar';
5
+ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
6
+ import { readPrebuiltBatchBundleAsync, writePrebuiltBatchBundleAsync, } from './prebuilt-batch-bundle.js';
7
+ function rawTar(entries) {
8
+ const blocks = [];
9
+ for (const entry of entries) {
10
+ const body = Buffer.from(entry.body ?? '');
11
+ const header = new Header({
12
+ path: entry.path,
13
+ type: entry.type ?? 'File',
14
+ linkpath: entry.linkpath,
15
+ size: entry.type && entry.type !== 'File' ? 0 : body.length,
16
+ mode: 0o644,
17
+ mtime: new Date(0),
18
+ });
19
+ header.encode();
20
+ blocks.push(header.block);
21
+ if (!entry.type || entry.type === 'File') {
22
+ const padded = Buffer.alloc(Math.ceil(body.length / 512) * 512);
23
+ body.copy(padded);
24
+ blocks.push(padded);
25
+ }
26
+ }
27
+ blocks.push(Buffer.alloc(1024));
28
+ return Buffer.concat(blocks);
29
+ }
30
+ function validManifest() {
31
+ return {
32
+ formatVersion: 1,
33
+ chunks: [
34
+ {
35
+ file: 'place-1.rbxl',
36
+ packages: [
37
+ { name: '@quenty/rx', slug: 'rx', hasJestConfig: true },
38
+ { name: '@quenty/maid', slug: 'maid', hasJestConfig: false },
39
+ ],
40
+ },
41
+ ],
42
+ };
43
+ }
44
+ describe('prebuilt batch bundle', () => {
45
+ let workDir;
46
+ const opened = [];
47
+ beforeEach(async () => {
48
+ workDir = await fs.mkdtemp(path.join(os.tmpdir(), 'prebuilt-bundle-'));
49
+ });
50
+ afterEach(async () => {
51
+ for (const bundle of opened.splice(0)) {
52
+ await bundle.buildContext.cleanupAsync();
53
+ }
54
+ await fs.rm(workDir, { recursive: true, force: true });
55
+ });
56
+ async function readAsync(file) {
57
+ const bundle = await readPrebuiltBatchBundleAsync(file);
58
+ opened.push(bundle);
59
+ return bundle;
60
+ }
61
+ async function writeRawAsync(entries) {
62
+ const file = path.join(workDir, 'raw.nevermore.tests.tar');
63
+ await fs.writeFile(file, rawTar(entries));
64
+ return file;
65
+ }
66
+ async function writeManifestAsync(manifest) {
67
+ return writeRawAsync([
68
+ { path: 'manifest.json', body: JSON.stringify(manifest) },
69
+ { path: 'place-1.rbxl', body: 'place bytes' },
70
+ ]);
71
+ }
72
+ it('round-trips places, slugs and jest.config flags through one file', async () => {
73
+ const source = path.join(workDir, 'source.rbxl');
74
+ await fs.writeFile(source, 'place bytes');
75
+ const file = path.join(workDir, 'out', 'pr-1.nevermore.tests.tar');
76
+ await writePrebuiltBatchBundleAsync(file, [
77
+ {
78
+ rbxlPath: source,
79
+ slugMap: new Map([
80
+ ['@quenty/rx', 'rx'],
81
+ ['@quenty/maid', 'maid'],
82
+ ]),
83
+ sizeBytes: 11,
84
+ },
85
+ ], new Map([['@quenty/rx', true]]));
86
+ const bundle = await readAsync(file);
87
+ expect(bundle.packages).toEqual([
88
+ { name: '@quenty/rx', hasJestConfig: true },
89
+ { name: '@quenty/maid', hasJestConfig: false },
90
+ ]);
91
+ expect(bundle.chunks).toHaveLength(1);
92
+ expect(bundle.chunks[0].sizeBytes).toBe(11);
93
+ expect([...bundle.chunks[0].slugMap]).toEqual([
94
+ ['@quenty/rx', 'rx'],
95
+ ['@quenty/maid', 'maid'],
96
+ ]);
97
+ expect(await fs.readFile(bundle.chunks[0].rbxlPath, 'utf-8')).toBe('place bytes');
98
+ });
99
+ it('reads an empty bundle as no packages', async () => {
100
+ const file = path.join(workDir, 'empty.nevermore.tests.tar');
101
+ await writePrebuiltBatchBundleAsync(file, [], new Map());
102
+ const bundle = await readAsync(file);
103
+ expect(bundle.packages).toEqual([]);
104
+ expect(bundle.chunks).toEqual([]);
105
+ });
106
+ it('removes the unpacked places on cleanup', async () => {
107
+ const bundle = await readPrebuiltBatchBundleAsync(await writeManifestAsync(validManifest()));
108
+ const placePath = bundle.chunks[0].rbxlPath;
109
+ await bundle.buildContext.cleanupAsync();
110
+ await expect(fs.stat(placePath)).rejects.toThrow();
111
+ });
112
+ it('never writes outside its own directory for an entry that escapes', async () => {
113
+ const file = await writeRawAsync([
114
+ { path: 'manifest.json', body: JSON.stringify(validManifest()) },
115
+ { path: 'place-1.rbxl', body: 'place bytes' },
116
+ { path: '../escaped.rbxl', body: 'evil' },
117
+ ]);
118
+ await expect(readAsync(file)).rejects.toThrow('unexpected entry');
119
+ await expect(fs.stat(path.join(os.tmpdir(), 'escaped.rbxl'))).rejects.toThrow();
120
+ });
121
+ it('rejects a symlink entry', async () => {
122
+ const file = await writeRawAsync([
123
+ { path: 'manifest.json', body: JSON.stringify(validManifest()) },
124
+ { path: 'place-1.rbxl', type: 'SymbolicLink', linkpath: '/etc/passwd' },
125
+ ]);
126
+ await expect(readAsync(file)).rejects.toThrow('not a regular file');
127
+ });
128
+ it('rejects a place the manifest does not list', async () => {
129
+ const file = await writeRawAsync([
130
+ { path: 'manifest.json', body: JSON.stringify(validManifest()) },
131
+ { path: 'place-1.rbxl', body: 'place bytes' },
132
+ { path: 'place-2.rbxl', body: 'extra' },
133
+ ]);
134
+ await expect(readAsync(file)).rejects.toThrow('every place it holds');
135
+ });
136
+ it('rejects a manifest that lists a place the bundle does not hold', async () => {
137
+ const manifest = validManifest();
138
+ manifest.chunks[0].file = 'place-2.rbxl';
139
+ await expect(readAsync(await writeManifestAsync(manifest))).rejects.toThrow('invalid place file');
140
+ });
141
+ it('rejects a file that is not a tar', async () => {
142
+ const file = path.join(workDir, 'junk.nevermore.tests.tar');
143
+ await fs.writeFile(file, 'not a tar at all');
144
+ await expect(readAsync(file)).rejects.toThrow();
145
+ });
146
+ it('rejects a slug that could break out of the batch script', async () => {
147
+ const manifest = validManifest();
148
+ manifest.chunks[0].packages[0].slug = 'rx"]] print("hi") --';
149
+ await expect(readAsync(await writeManifestAsync(manifest))).rejects.toThrow('invalid slug');
150
+ });
151
+ it('accepts a multi-place target name with a free-form place name', async () => {
152
+ const manifest = validManifest();
153
+ manifest.chunks[0].packages[0].name = '@quenty/rx - Hub (Test) + Lobby é';
154
+ const bundle = await readAsync(await writeManifestAsync(manifest));
155
+ expect(bundle.packages[0].name).toBe('@quenty/rx - Hub (Test) + Lobby é');
156
+ });
157
+ it.each([
158
+ '@quenty/rx | injected',
159
+ '@quenty/rx<img>',
160
+ '@quenty/rx\nline',
161
+ '@quenty/rx [Approved](https://evil.example)',
162
+ '@quenty/rx ![x](p.png)',
163
+ '@quenty/rx cc @someuser',
164
+ '@quenty/rx https://evil.example',
165
+ ])('rejects a package name that could break the PR comment: %j', async (name) => {
166
+ const manifest = validManifest();
167
+ manifest.chunks[0].packages[0].name = name;
168
+ await expect(readAsync(await writeManifestAsync(manifest))).rejects.toThrow('invalid package name');
169
+ });
170
+ it('rejects a package listed twice', async () => {
171
+ const manifest = validManifest();
172
+ manifest.chunks[0].packages[1].name = '@quenty/rx';
173
+ await expect(readAsync(await writeManifestAsync(manifest))).rejects.toThrow('more than once');
174
+ });
175
+ it('rejects an unknown format version', async () => {
176
+ const manifest = validManifest();
177
+ manifest.formatVersion = 2;
178
+ await expect(readAsync(await writeManifestAsync(manifest))).rejects.toThrow('Unsupported bundle format');
179
+ });
180
+ it('names the right command for a deploy bundle, before its unexpected entries', async () => {
181
+ const file = await writeRawAsync([
182
+ {
183
+ path: 'manifest.json',
184
+ body: JSON.stringify({
185
+ formatVersion: 1,
186
+ kind: 'deploy',
187
+ target: 'integration',
188
+ places: [],
189
+ }),
190
+ },
191
+ { path: 'place-1.rbxl', body: 'place bytes' },
192
+ { path: 'project-1.json', body: '{}' },
193
+ ]);
194
+ await expect(readAsync(file)).rejects.toThrow('This is a deploy bundle, not a tests bundle. Run it with "nevermore batch deploy --bundle <file>".');
195
+ });
196
+ });
197
+ //# sourceMappingURL=prebuilt-batch-bundle.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prebuilt-batch-bundle.test.js","sourceRoot":"","sources":["../../../../src/utils/testing/runner/prebuilt-batch-bundle.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type DeployTarget } from '@quenty/nevermore-deploy';
2
- import { type JobContext } from '../../job-context/job-context.js';
2
+ import { type BuiltPlace, type JobContext } from '../../job-context/job-context.js';
3
3
  import { type DeployOverrides } from '../../build/build.js';
4
4
  import { type ParsedTestCounts } from '../test-log-parser.js';
5
5
  export interface SingleTestResult {
@@ -51,6 +51,11 @@ export interface SingleTestOptions {
51
51
  */
52
52
  suppressCountsProvenance?: boolean;
53
53
  }
54
+ export interface PreparedTest {
55
+ builtPlace: BuiltPlace;
56
+ scriptContent: string;
57
+ hasJestConfig: boolean;
58
+ }
54
59
  /**
55
60
  * Build, deploy, and run a test for a single package using the provided
56
61
  * JobContext. The context determines the execution environment (cloud or local).
@@ -58,6 +63,8 @@ export interface SingleTestOptions {
58
63
  * Creates and releases its own deployment handle — the caller owns the context lifetime.
59
64
  */
60
65
  export declare function runSingleTestAsync(context: JobContext, options: SingleTestOptions): Promise<SingleTestResult>;
66
+ export declare function prepareTestAsync(context: JobContext, options: SingleTestOptions): Promise<PreparedTest>;
67
+ export declare function executePreparedTestAsync(context: JobContext, prepared: PreparedTest, options: SingleTestOptions): Promise<SingleTestResult>;
61
68
  /**
62
69
  * Whether this package ships a jest.config, i.e. whether it has specs to run.
63
70
  *
@@ -1 +1 @@
1
- {"version":3,"file":"test-runner.d.ts","sourceRoot":"","sources":["../../../../src/utils/testing/runner/test-runner.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EACL,KAAK,gBAAgB,EAGtB,MAAM,uBAAuB,CAAC;AAkB/B,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,YAAY,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACtC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,UAAU,EAAE,MAAM,EAAE,GACnB,MAAM,EAAE,CAOV;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,MAAM,EAAE,YAAY,CAAC;IACrB,kFAAkF;IAClF,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CA2J3B;AA4ED;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAmClB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,OAAO,CAAC,MAAM,CAAC,CAajB"}
1
+ {"version":3,"file":"test-runner.d.ts","sourceRoot":"","sources":["../../../../src/utils/testing/runner/test-runner.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,KAAK,UAAU,EACf,KAAK,UAAU,EAChB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EACL,KAAK,gBAAgB,EAGtB,MAAM,uBAAuB,CAAC;AAkB/B,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,YAAY,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACtC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,UAAU,EAAE,MAAM,EAAE,GACnB,MAAM,EAAE,CAOV;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,MAAM,EAAE,YAAY,CAAC;IACrB,kFAAkF;IAClF,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAG3B;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,YAAY,CAAC,CAsCvB;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CA4H3B;AA4ED;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAmClB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,OAAO,CAAC,MAAM,CAAC,CAajB"}
@@ -29,11 +29,11 @@ export function mergeFailureReasons(contextError, logReasons) {
29
29
  * Creates and releases its own deployment handle — the caller owns the context lifetime.
30
30
  */
31
31
  export async function runSingleTestAsync(context, options) {
32
- const { packagePath, packageName,
33
- // 300s is the Open Cloud maximum. The old 120s default failed real suites
34
- // with no jest summary at all, so "--timeout 300" had become folklore
35
- // everyone had to know before their first useful run.
36
- timeoutMs = 300_000, scriptText, target, overrides, } = options;
32
+ const prepared = await prepareTestAsync(context, options);
33
+ return executePreparedTestAsync(context, prepared, options);
34
+ }
35
+ export async function prepareTestAsync(context, options) {
36
+ const { packagePath, packageName, scriptText, target, overrides } = options;
37
37
  const sessionId = randomUUID();
38
38
  const builtPlace = await context.buildPlaceAsync({
39
39
  target,
@@ -57,6 +57,19 @@ export async function runSingleTestAsync(context, options) {
57
57
  }
58
58
  const scriptContent = scriptText ??
59
59
  (await readTestScriptAsync(packagePath, builtPlace.target.scriptTemplate));
60
+ return {
61
+ builtPlace,
62
+ scriptContent,
63
+ hasJestConfig: await packageHasJestConfigAsync(packagePath),
64
+ };
65
+ }
66
+ export async function executePreparedTestAsync(context, prepared, options) {
67
+ const { packagePath, packageName,
68
+ // 300s is the Open Cloud maximum. The old 120s default failed real suites
69
+ // with no jest summary at all, so "--timeout 300" had become folklore
70
+ // everyone had to know before their first useful run.
71
+ timeoutMs = 300_000, scriptText, } = options;
72
+ const { builtPlace, scriptContent, hasJestConfig } = prepared;
60
73
  const deployment = await context.deployBuiltPlaceAsync({
61
74
  builtPlace,
62
75
  packageName,
@@ -95,7 +108,7 @@ export async function runSingleTestAsync(context, options) {
95
108
  const smokeTestedWithSpecs = structured !== undefined &&
96
109
  !structured.ranJest &&
97
110
  scriptText === undefined &&
98
- (await packageHasJestConfigAsync(packagePath));
111
+ hasJestConfig;
99
112
  const reasons = mergeFailureReasons(result.errorMessage, [
100
113
  ...(smokeTestedWithSpecs
101
114
  ? [
@@ -1 +1 @@
1
- {"version":3,"file":"test-runner.js","sourceRoot":"","sources":["../../../../src/utils/testing/runner/test-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAIpC,OAAO,EAEL,aAAa,EACb,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAEL,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EACL,6BAA6B,EAC7B,mBAAmB,EACnB,gCAAgC,EAChC,wBAAwB,GACzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAwBvE;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,YAAgC,EAChC,UAAoB;IAEpB,OAAO;QACL,GAAG,IAAI,GAAG,CAAC;YACT,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,GAAG,UAAU;SACd,CAAC;KACH,CAAC;AACJ,CAAC;AAuBD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAmB,EACnB,OAA0B;IAE1B,MAAM,EACJ,WAAW,EACX,WAAW;IACX,0EAA0E;IAC1E,sEAAsE;IACtE,sDAAsD;IACtD,SAAS,GAAG,OAAO,EACnB,UAAU,EACV,MAAM,EACN,SAAS,GACV,GAAG,OAAO,CAAC;IAEZ,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAC/B,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC;QAC/C,MAAM;QACN,cAAc,EAAE,QAAQ,SAAS,OAAO;QACxC,WAAW;QACX,WAAW;QACX,SAAS;KACV,CAAC,CAAC;IAEH,8EAA8E;IAC9E,4EAA4E;IAC5E,0EAA0E;IAC1E,IAAI,MAAM,wBAAwB,CAAC,WAAW,CAAC,EAAE,CAAC;QAChD,MAAM,gCAAgC,CACpC,UAAU,CAAC,QAAQ,EACnB,6BAA6B,CAAC,mBAAmB,EAAE,EAAE;YACnD,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,KAAK;YAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO;YAClC,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,UAAU;YACxC,cAAc,EAAE,MAAM,uBAAuB,CAAC,WAAW,CAAC;SAC3D,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GACjB,UAAU;QACV,CAAC,MAAM,mBAAmB,CAAC,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;IAE7E,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,qBAAqB,CAAC;QACrD,UAAU;QACV,WAAW;QACX,WAAW;KACZ,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,UAAU,EAAE;YACtD,aAAa;YACb,WAAW;YACX,SAAS;SACV,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QAC1B,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAEzD,4EAA4E;QAC5E,2EAA2E;QAC3E,2EAA2E;QAC3E,0BAA0B;QAC1B,EAAE;QACF,2EAA2E;QAC3E,yEAAyE;QACzE,sEAAsE;QACtE,MAAM,UAAU,GACd,MAAM,CAAC,WAAW,IAAI,yBAAyB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAEvE,2EAA2E;QAC3E,0EAA0E;QAC1E,yEAAyE;QACzE,2DAA2D;QAC3D,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE;YACpC,iBAAiB,EAAE,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS;SACxE,CAAC,CAAC;QAEH,qEAAqE;QACrE,wEAAwE;QACxE,6EAA6E;QAC7E,wEAAwE;QACxE,8CAA8C;QAC9C,MAAM,oBAAoB,GACxB,UAAU,KAAK,SAAS;YACxB,CAAC,UAAU,CAAC,OAAO;YACnB,UAAU,KAAK,SAAS;YACxB,CAAC,MAAM,yBAAyB,CAAC,WAAW,CAAC,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,YAAY,EAAE;YACvD,GAAG,CAAC,oBAAoB;gBACtB,CAAC,CAAC;oBACE,qEAAqE;wBACnE,8CAA8C;iBACjD;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,MAAM,CAAC,cAAc;YACxB,wEAAwE;YACxE,wEAAwE;YACxE,0EAA0E;YAC1E,sEAAsE;YACtE,sEAAsE;YACtE,6BAA6B;YAC7B,GAAG,CAAC,UAAU,KAAK,SAAS;gBAC5B,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;gBAChC,OAAO,CAAC,MAAM,GAAG,CAAC;gBAChB,CAAC,CAAC,CAAC,qCAAqC,SAAS,GAAG,CAAC;gBACrD,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;QAEH,kEAAkE;QAClE,0CAA0C;QAC1C,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,UAAU;YAC3B,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC;YAChC,CAAC,CAAC,aAAa,CAAC;QAElB,sBAAsB,CAAC;YACrB,WAAW;YACX,UAAU;YACV,aAAa;YACb,SAAS;YACT,yEAAyE;YACzE,yEAAyE;YACzE,yEAAyE;YACzE,sCAAsC;YACtC,MAAM,EACJ,UAAU,KAAK,SAAS;gBACxB,MAAM,CAAC,WAAW,KAAK,SAAS;gBAChC,CAAC,OAAO,CAAC,wBAAwB,IAAI,KAAK,CAAC;YAC7C,gBAAgB,EAAE,MAAM,CAAC,YAAY,KAAK,SAAS;SACpD,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EACL,MAAM,CAAC,OAAO;gBACd,MAAM,CAAC,OAAO;gBACd,CAAC,UAAU,EAAE,OAAO,IAAI,IAAI,CAAC;gBAC7B,CAAC,oBAAoB;YACvB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,UAAU;YACV,YAAY,EAAE,UAAU;gBACtB,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,aAAa;oBACf,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,SAAS;YACb,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,KAAK,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;YAC1D,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,sBAAsB,CAAC,OAQ/B;IACC,MAAM,EACJ,WAAW,EACX,UAAU,EACV,aAAa,EACb,MAAM,EACN,gBAAgB,EAChB,SAAS,GACV,GAAG,OAAO,CAAC;IAEZ,IAAI,MAAM,EAAE,CAAC;QACX,OAAO;IACT,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,YAAY,CAAC,IAAI,CACf,GAAG,WAAW,iCAAiC;YAC7C,GAAG,UAAU,CAAC,MAAM,YAAY,UAAU,CAAC,MAAM,WAAW;YAC5D,GAAG,UAAU,CAAC,KAAK,SAAS,CAC/B,CAAC;QAEF,MAAM,WAAW,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,WAAW,EAAE,CAAC;YAChB,YAAY,CAAC,IAAI,CAAC,GAAG,WAAW,KAAK,WAAW,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,2EAA2E;QAC3E,IAAI,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACjD,YAAY,CAAC,IAAI,CACf,GAAG,WAAW,4DAA4D;gBACxE,8CAA8C,CACjD,CAAC;QACJ,CAAC;QAED,2EAA2E;QAC3E,6CAA6C;QAC7C,IAAI,aAAa,IAAI,aAAa,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,EAAE,CAAC;YAC9D,YAAY,CAAC,IAAI,CACf,GAAG,WAAW,6DAA6D;gBACzE,GAAG,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,KAAK,GAAG;gBAChE,8CAA8C;gBAC9C,GAAG,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,KAAK,IAAI;gBAC1E,kEAAkE,CACrE,CAAC;QACJ,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,aAAa;QAC1B,CAAC,CAAC,gEAAgE;QAClE,CAAC,CAAC,yDAAyD,CAAC;IAC9D,MAAM,MAAM,GAAG,gBAAgB;QAC7B,CAAC,CAAC,wFAAwF;QAC1F,CAAC,CAAC,2CAA2C,CAAC;IAChD,YAAY,CAAC,IAAI,CAAC,GAAG,WAAW,KAAK,MAAM,KAAK,MAAM,EAAE,CAAC,CAAC;IAC1D,YAAY,CAAC,OAAO,CAAC,GAAG,WAAW,gBAAgB,SAAS,EAAE,CAAC,CAAC;AAClE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,WAAmB;IAEnB,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,KAAa;QACjD,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC3D,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACzB,SAAS;YACX,CAAC;YACD,+DAA+D;YAC/D,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC3D,SAAS;YACX,CAAC;YACD,IAAI,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC3D,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,WAAmB,EACnB,UAA8B;IAE9B,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,mDAAmD,WAAW,2EAA2E,CAC1I,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACvD,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;IACxD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"test-runner.js","sourceRoot":"","sources":["../../../../src/utils/testing/runner/test-runner.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quenty/nevermore-cli",
3
- "version": "4.50.1",
3
+ "version": "4.52.0",
4
4
  "description": "CLI interface for Nevermore",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -25,15 +25,16 @@
25
25
  "Quenty"
26
26
  ],
27
27
  "dependencies": {
28
- "@quenty/cli-output-helpers": "1.19.1",
29
- "@quenty/nevermore-cli-helpers": "1.20.1",
28
+ "@quenty/cli-output-helpers": "1.20.0",
29
+ "@quenty/nevermore-cli-helpers": "1.21.0",
30
30
  "@quenty/nevermore-deploy": "1.1.1",
31
- "@quenty/nevermore-template-helpers": "1.21.1",
32
- "@quenty/studio-bridge": "0.22.1",
31
+ "@quenty/nevermore-template-helpers": "1.22.0",
32
+ "@quenty/studio-bridge": "0.24.0",
33
33
  "execa": "^9.6.1",
34
34
  "find-git-root": "^1.0.4",
35
35
  "inquirer": "^13.2.0",
36
36
  "node-fetch": "^3.3.2",
37
+ "tar": "^7.5.11",
37
38
  "typescript-memoize": "^1.1.1",
38
39
  "ws": "^8.18.0",
39
40
  "yargs": "^18.0.0"
@@ -60,5 +61,5 @@
60
61
  "engines": {
61
62
  "node": ">=16"
62
63
  },
63
- "gitHead": "e663d6c2e0577e2831040d2a922a3c636fb62007"
64
+ "gitHead": "2d4d5cbd9339e7be7e36d30aa91f7146225cb500"
64
65
  }