pipework 0.8.14 → 0.8.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 (64) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/cli/commands/check.d.ts +1 -0
  3. package/dist/cli/commands/check.d.ts.map +1 -1
  4. package/dist/cli/commands/check.js +78 -33
  5. package/dist/cli/commands/check.js.map +1 -1
  6. package/dist/cli/commands/scope.d.ts +4 -0
  7. package/dist/cli/commands/scope.d.ts.map +1 -1
  8. package/dist/cli/commands/scope.js +12 -2
  9. package/dist/cli/commands/scope.js.map +1 -1
  10. package/dist/cli/commands/test.d.ts +2 -0
  11. package/dist/cli/commands/test.d.ts.map +1 -1
  12. package/dist/cli/commands/test.js +11 -1
  13. package/dist/cli/commands/test.js.map +1 -1
  14. package/dist/cli/index.d.ts.map +1 -1
  15. package/dist/cli/index.js +8 -3
  16. package/dist/cli/index.js.map +1 -1
  17. package/dist/core/config/namespace.d.ts +10 -0
  18. package/dist/core/config/namespace.d.ts.map +1 -1
  19. package/dist/core/config/schema.d.ts +21 -0
  20. package/dist/core/config/schema.d.ts.map +1 -1
  21. package/dist/core/config/schema.js +10 -0
  22. package/dist/core/config/schema.js.map +1 -1
  23. package/dist/data/migrate/apply.d.ts +15 -0
  24. package/dist/data/migrate/apply.d.ts.map +1 -1
  25. package/dist/data/migrate/apply.js +14 -0
  26. package/dist/data/migrate/apply.js.map +1 -1
  27. package/dist/data/migrate/diff.d.ts +2 -0
  28. package/dist/data/migrate/diff.d.ts.map +1 -1
  29. package/dist/data/migrate/diff.js +4 -0
  30. package/dist/data/migrate/diff.js.map +1 -1
  31. package/dist/data/migrate/generate.d.ts.map +1 -1
  32. package/dist/data/migrate/generate.js +9 -2
  33. package/dist/data/migrate/generate.js.map +1 -1
  34. package/dist/data/migrate/provision-framework.d.ts +14 -0
  35. package/dist/data/migrate/provision-framework.d.ts.map +1 -0
  36. package/dist/data/migrate/provision-framework.js +39 -0
  37. package/dist/data/migrate/provision-framework.js.map +1 -0
  38. package/dist/test/setup.d.ts +2 -1
  39. package/dist/test/setup.d.ts.map +1 -1
  40. package/dist/test/setup.js +115 -65
  41. package/dist/test/setup.js.map +1 -1
  42. package/dist/trace/check/coverage-check.d.ts.map +1 -1
  43. package/dist/trace/check/coverage-check.js +4 -2
  44. package/dist/trace/check/coverage-check.js.map +1 -1
  45. package/dist/trace/check/flow-step-site.d.ts +4 -0
  46. package/dist/trace/check/flow-step-site.d.ts.map +1 -1
  47. package/dist/trace/check/flow-step-site.js +13 -0
  48. package/dist/trace/check/flow-step-site.js.map +1 -1
  49. package/dist/trace/partition/sync.d.ts.map +1 -1
  50. package/dist/trace/partition/sync.js +23 -2
  51. package/dist/trace/partition/sync.js.map +1 -1
  52. package/dist/trace/partition/tables.d.ts +7 -0
  53. package/dist/trace/partition/tables.d.ts.map +1 -1
  54. package/dist/trace/partition/tables.js +7 -0
  55. package/dist/trace/partition/tables.js.map +1 -1
  56. package/dist/workspace/affected.d.ts +6 -0
  57. package/dist/workspace/affected.d.ts.map +1 -1
  58. package/dist/workspace/affected.js +5 -0
  59. package/dist/workspace/affected.js.map +1 -1
  60. package/dist/workspace/changed-files.d.ts +14 -2
  61. package/dist/workspace/changed-files.d.ts.map +1 -1
  62. package/dist/workspace/changed-files.js +50 -4
  63. package/dist/workspace/changed-files.js.map +1 -1
  64. package/package.json +1 -1
@@ -1,20 +1,66 @@
1
1
  import { execSync } from 'node:child_process';
2
2
  import { scrubGitEnv } from './scrub-git-env.js';
3
+ // Base branches a `branch`-mode diff is taken against, in priority order — the
4
+ // working branch first.
5
+ const BASE_BRANCHES = ['integration', 'main'];
6
+ /**
7
+ * Files changed under `mode`.
8
+ *
9
+ * `branch` mode (the `--fast` path) returns `null` — never an empty array —
10
+ * when the set cannot be computed (no base branch, unrelated history, no git):
11
+ * the caller must fail open on `null`, widening to everything, never silently
12
+ * scoping to nothing. Issue #325.
13
+ *
14
+ * `uncommitted` / `staged` modes return `[]` on a non-git or empty tree — a
15
+ * clean tree genuinely has nothing to do, and the caller exits 0 (#266). An
16
+ * empty array always means "computed cleanly, nothing changed".
17
+ */
3
18
  export function changedFiles(cwd, mode) {
4
19
  const env = scrubGitEnv();
20
+ if (mode === 'branch') {
21
+ try {
22
+ const base = baseBranch(cwd, env);
23
+ if (base === null)
24
+ return null;
25
+ const mergeBase = git(cwd, env, `git merge-base ${base} HEAD`).trim();
26
+ if (mergeBase === '')
27
+ return null;
28
+ const committed = parseLines(git(cwd, env, `git diff --name-only ${mergeBase}`));
29
+ const untracked = parseLines(git(cwd, env, 'git ls-files --others --exclude-standard'));
30
+ return [...new Set([...committed, ...untracked])];
31
+ }
32
+ catch {
33
+ return null;
34
+ }
35
+ }
5
36
  try {
6
37
  if (mode === 'staged') {
7
- const raw = execSync('git diff --name-only --cached', { cwd, env, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] });
8
- return parseLines(raw);
38
+ return parseLines(git(cwd, env, 'git diff --name-only --cached'));
9
39
  }
10
- const diffRaw = execSync('git diff --name-only HEAD', { cwd, env, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] });
11
- const untrackedRaw = execSync('git ls-files --others --exclude-standard', { cwd, env, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] });
40
+ const diffRaw = git(cwd, env, 'git diff --name-only HEAD');
41
+ const untrackedRaw = git(cwd, env, 'git ls-files --others --exclude-standard');
12
42
  return [...new Set([...parseLines(diffRaw), ...parseLines(untrackedRaw)])];
13
43
  }
14
44
  catch {
15
45
  return [];
16
46
  }
17
47
  }
48
+ function git(cwd, env, cmd) {
49
+ return execSync(cmd, { cwd, env, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] });
50
+ }
51
+ /** The first base branch that exists locally, or `null` when none does. */
52
+ function baseBranch(cwd, env) {
53
+ for (const branch of BASE_BRANCHES) {
54
+ try {
55
+ git(cwd, env, `git rev-parse --verify --quiet refs/heads/${branch}`);
56
+ return branch;
57
+ }
58
+ catch {
59
+ // Not this one — try the next.
60
+ }
61
+ }
62
+ return null;
63
+ }
18
64
  export function filesToModules(files, modulePaths) {
19
65
  const sorted = [...modulePaths].sort((a, b) => b.length - a.length);
20
66
  const modules = new Set();
@@ -1 +1 @@
1
- {"version":3,"file":"changed-files.js","sourceRoot":"","sources":["../../src/workspace/changed-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAIhD,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,IAAc;IACtD,MAAM,GAAG,GAAG,WAAW,EAAE,CAAA;IACzB,IAAI,CAAC;QACH,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,QAAQ,CAAC,+BAA+B,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;YACvH,OAAO,UAAU,CAAC,GAAG,CAAC,CAAA;QACxB,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,2BAA2B,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;QACvH,MAAM,YAAY,GAAG,QAAQ,CAAC,0CAA0C,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;QAC3I,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,KAAwB,EACxB,WAA8B;IAE9B,MAAM,MAAM,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;IACnE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;IACjC,IAAI,WAAW,GAAG,KAAK,CAAA;IAEvB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;YAC7B,wEAAwE;YACxE,kEAAkE;YAClE,sEAAsE;YACtE,8BAA8B;YAC9B,IAAI,OAAO,KAAK,GAAG,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC;gBAC1E,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;gBACpB,OAAO,GAAG,IAAI,CAAA;gBACd,MAAK;YACP,CAAC;QACH,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,WAAW,GAAG,IAAI,CAAA;QACpB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAA;AACjC,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AACxD,CAAC"}
1
+ {"version":3,"file":"changed-files.js","sourceRoot":"","sources":["../../src/workspace/changed-files.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pipework",
3
- "version": "0.8.14",
3
+ "version": "0.8.16",
4
4
  "description": "TypeScript framework for multi-tenant SaaS applications. PostgreSQL-only.",
5
5
  "type": "module",
6
6
  "license": "MIT",