Release: CLI@1.39.0 next worker@1.27.3#1490
Open
josephjclark wants to merge 3 commits into
Open
Conversation
* enable writing to stdout * remove log file
* cli: add openfn compile --test for unit testing job code
- Add --test flag: compiles job expressions for unit testing, writing
output to tests/ by default (reads dirs.tests from openfn.yaml)
- Add --strip (default on with --test): tree-shakes compiled output,
keeping only export const/function declarations and their transitive
dependencies; use --no-strip to keep all compiled code
- Add --watch flag: watches source files and recompiles on change
(uses chokidar)
- Strip mode removes injected _defer import when operations are stripped
- Skip writing files with no exportable code after stripping; log when
skipping
- Auto-clean stale step files in tests/ that were skipped in the current
run without touching user-added files at other paths
- Fix --test --no-strip skipping pure-operation jobs (hasExportableCode
guard now only applies when strip is active)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* chore: update pnpm-lock.yaml
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* cli: refine compile --test behaviour
- remove export default [] from strip mode output (not needed for unit testing)
- add --no-strip flag to keep full compiled output including operations
- remove --strip standalone flag (stripping is always on with --test by default)
- auto-derive output path for single-file --test using tests/ dir
- skip writing files with no exportable code in strip mode
- auto-clean stale step files in tests/ after project-wide strip runs
- fix --test --no-strip skipping pure-operation jobs
- update help examples and option descriptions
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* docs: reference unit-testing-jobs.md in additional documentation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* docs: add unit-testing-jobs.md guide for openfn compile --test
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* compiler/cli: replace --test with --exports-only, add project-wide compile
- Drop --test and --strip/--no-strip flags from openfn compile
- Add --exports-only flag (opt-in) to strip operation calls, keeping only
exported constants and functions for unit testing
- openfn compile (no args) now compiles the whole project to compiled/ by default
- openfn compile <workflow-name> looks up a workflow by name/id and compiles it
- Extract stripping logic into a new exports-only transformer (order: 0) that
runs before all others; remove strip option from top-level-operations
- Update unit-testing-jobs.md to document the new workflow
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* prettier format
* chore: trim noisy comments from compile and transformer files
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* pnpm test:format
* compiler/cli: simplify exports-only transformer, rewrite tests as source strings
- Strip exports-only transformer down to a simple filter (imports + named exports only) — removes collectRefs/buildDeclMap/collectDeps dep-tracking
- Rewrite exports-only tests using before/after source strings instead of AST builders
- Extract runCompile helper in handler.ts to remove duplicated watch/non-watch logic
- Clean up (step as any) casts in compile.ts now that step types are correct
- Update unit-testing-jobs.md to drop the non-exported dependency note
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* compiler/cli: move hasExportableCode to compiler, simplify compileProject loop
- hasExportableCode now lives in exports-only.ts and is exported from @openfn/compiler — the compiler decides what's exportable, not the CLI
- Simplified regex: only match explicit export declarations (non-exported helpers are stripped by exports-only, so they'll never appear in the output)
- Flatten nested workflow/step loops into a flat allSteps array in compileProject
- Downgrade skipped-step log from info to debug
- Remove hasExportableCode tests from CLI (now covered in compiler's exports-only test suite)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* remove all changes
* chore: restore top-level-operations test to match main
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* cli: remove stale file cleanup from compileProject
Just skip steps with no exportable code — don't track or delete old output files.
The compiled dir is a dist folder; cleanup can be a future --clean flag if needed.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* cli: add --clean and --workspace to compile, output .mjs to dist/
- Add --clean to remove the output folder before compiling (off by default)
- Add --workspace support, as in execute and project commands
- Default output dir is now dist/ (or dirs.compiled from openfn.yaml)
- Compiled files use the .mjs extension
- Simplify runCompile routing: file paths compile directly, anything else
compiles the checked-out project
- Watch mode respects the configured workflows dir and workspace root,
and ignores the resolved output dir
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* lexicon/project: add dirs.compiled to WorkspaceConfig
Type the compiled output dir key used by openfn compile. buildConfig
passes it through without a default so it is only serialized into
openfn.yaml when the user sets it; the CLI defaults it to dist/ at
point of use.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* docs: update unit-testing guide for dist/.mjs output; add changeset
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* compiler: keep export-list deps in exports-only, rewrite tests against transform
- hasExportableCode now matches any non-default export (export lists,
export *, async functions) instead of enumerating declaration keywords
- exports-only keeps top-level declarations referenced by bare export
lists (export { x }) so compiled output is importable, and preserves
export * re-exports
- tests call transform() directly with parsed source instead of a local
compile() wrapper, matching lazy-state.test.ts
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* cli: trim low-value comments in compile handler
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* compiler/cli: drop hasExportableCode, skip empty output with a trim check
The exports-only transform already strips everything non-exportable, so
"nothing to test" is just empty compiled output. Replace the exported
regex helper (and its 11 tests) with an inline !code.trim() check in
compileProject. Skip behavior is unchanged.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* cli/compiler: test cleanup from review feedback
- rename compileProject tests to "compile from project" and move them up
as peers of the other compile-from-x tests
- use the shared mockFs helper instead of repeating the pnpm mock
boilerplate in every project test
- import fs statically instead of dynamic await import
- add real compile handler tests (stdout, outputPath, workflow, project
mode, missing file) replacing the placeholder
- exports-only: lead with basic strip behaviour, then no-op inverses
over the same source
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* remove comments
* Change how ensureExports gets fed into the compiler (#1489)
* Change how ensureExports gets fed into the compiler
Let the CLI only the transforms rather than toggling off options
* update tests
* fix types
* remove test
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Joe Clark <joe@openfn.org>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
CLI improvements for Plan International
Includes a shallow worker version change (worker is totally unaffected but dependencies need updating)