@forzalabs/remora 1.1.15 → 1.2.2
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.
- package/CHANGELOG.md +113 -0
- package/index.js +381 -124
- package/json_schemas/consumer-schema.json +107 -21
- package/package.json +1 -1
- package/workers/ExecutorWorker.js +371 -114
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
|
|
6
|
+
|
|
7
|
+
## Unreleased
|
|
8
|
+
|
|
9
|
+
## V 1.2.2 - 2026-04-10
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
- Added field-level consumer validations with support for multiple rules per field and per-rule failure actions: `fail`, `skip`, `warn`, and `set_default`
|
|
13
|
+
- Added dataset-level consumer validations for `unique_fields`, `min_rows`, `max_rows`, `no_duplicates`, and `not_empty`
|
|
14
|
+
- Added `DataValidationEngine` to centralize field and dataset validation logic
|
|
15
|
+
- Added validation result type definitions to the definitions package for shared use across engines and executors
|
|
16
|
+
- Added `warn()` logging support for non-fatal validation outcomes
|
|
17
|
+
- Added canary consumer coverage for field-level and dataset-level validations with passing, warning, skipped, defaulted, and failing scenarios
|
|
18
|
+
- Added `verify:local` to the canary package to build the local CLI and run the canary suite against it instead of the published package
|
|
19
|
+
- Added canary coverage for `sample` and `discover` against gzipped local producer inputs
|
|
20
|
+
- Added compressed CSV and JSONL canary fixtures plus matching producer definitions for gzip-based CLI verification
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
- Updated consumer field validation configuration from a single flat validation object to an ordered array of validation rules with explicit `onFail` behavior
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
- Fixed the consumer JSON schema to support the new field-level and dataset-level validation configuration
|
|
27
|
+
- Fixed AJV strict-mode compatibility for validation `in` and `not_in` rule arrays by replacing union `type` declarations with `oneOf`
|
|
28
|
+
- Fixed CLI `sample` and `discover` commands so they can read producers configured with compressed local files by reusing the existing decompression logic during sampling
|
|
29
|
+
- Fixed conflict in export with unique values and split by max size
|
|
30
|
+
|
|
31
|
+
## V 1.1.15 - 2026-03-26
|
|
32
|
+
|
|
33
|
+
### Added
|
|
34
|
+
- Added validation that consumer field keys exist in the referenced producer's dimensions/measures
|
|
35
|
+
- Added validation that every consumer field defines the required `key` property
|
|
36
|
+
- Added validation that `copyFrom` references a field that appears earlier in the consumer's field list
|
|
37
|
+
- Added validation that `distinctOn` keys and `orderBy` reference fields present in the consumer
|
|
38
|
+
- Added validation that join SQL `${P.field}` and `${producer.field}` references point to valid fields
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
- Fixed environment variable not exposed to front-end
|
|
42
|
+
- Fixed database endpoint selector
|
|
43
|
+
- Fixed worker image volume usage in a cloud environment
|
|
44
|
+
- Fixed worker-thread execution errors being logged only to the terminal by propagating them back to the orchestrator file logger
|
|
45
|
+
- Fixed `ConsumerExecutor.processRecord` error reporting to log step-specific failures for field resolution, aliasing, transformations, and filter evaluation
|
|
46
|
+
|
|
47
|
+
## V 1.1.11 - 2026-02-05
|
|
48
|
+
|
|
49
|
+
### Added
|
|
50
|
+
- Added `startRow` and `startColumn` settings for Excel producers (.xls/.xlsx), allowing users to specify the 1-indexed row and column from which to begin reading data
|
|
51
|
+
|
|
52
|
+
### Fixed
|
|
53
|
+
- Fixed `MaxListenersExceededWarning` on `WriteStream` during consumer execution by replacing shared stream merge with per-file append pipelines
|
|
54
|
+
- Fixed CLI `run` command always exiting with code 1 even on successful runs
|
|
55
|
+
- Fixed incomplete file logging caused by `process.exit()` terminating before winston could flush buffered writes; added `logger.flush()` to worker threads, orchestrator, and CLI exit paths
|
|
56
|
+
- Added `logger.flush()` before `process.exit()` in all data-processing CLI actions (sample, mock, automap, discover, debug) and worker startup
|
|
57
|
+
- Fixed CLI `discover` command exiting with code 1 on success instead of code 0
|
|
58
|
+
- Fixed per-worker `WriteStream` in `Executor.ts` never being closed, risking data loss before distinct/distinctOn post-processing passes
|
|
59
|
+
- Fixed `Dataset.ts` stream await pattern where `resolve` was never called in the `finish` handler (5 sites: transformStream, sort batches, k-way merge, append), causing promises to hang indefinitely
|
|
60
|
+
- Fixed `ExecutorWriter.ts` not awaiting intermediate stream flush during file-size-based rotation
|
|
61
|
+
- Fixed `DriverHelper.appendObjectsToUnifiedFile` and `LocalDestinationDriver.transformAndMove` not awaiting stream flush before returning
|
|
62
|
+
|
|
63
|
+
## V 1.1.9 - 2026-02-04
|
|
64
|
+
|
|
65
|
+
### Added
|
|
66
|
+
- Added `switch_case` transformation for mapping specific values to other values (similar to a switch/case statement)
|
|
67
|
+
- Added validation to detect multiple consumer fields reading from the same producer dimension (suggests using `copyFrom` instead)
|
|
68
|
+
- Added detailed logging to the executor orchestrator with usage ID tracing throughout the execution lifecycle
|
|
69
|
+
|
|
70
|
+
### Changed
|
|
71
|
+
- Cleaned up CLI execution error output to show concise messages in console while preserving full stack traces in internal logs
|
|
72
|
+
|
|
73
|
+
## V 1.1.8 - 2026-02-03
|
|
74
|
+
|
|
75
|
+
### Added
|
|
76
|
+
- Added `pivot` option to consumers, enabling row-to-column transformation with aggregation (sum, count, avg, min, max)
|
|
77
|
+
- Added `copyFrom` property to consumer fields, allowing a field to be a value copy of another field in the dataset
|
|
78
|
+
|
|
79
|
+
## V 1.1.7 - 2026-02-02
|
|
80
|
+
|
|
81
|
+
### Changed
|
|
82
|
+
- Improved the mock engine
|
|
83
|
+
- Improved logging
|
|
84
|
+
|
|
85
|
+
## V 1.1.6 - 2026-02-02
|
|
86
|
+
|
|
87
|
+
### Added
|
|
88
|
+
- Added `--limit` option to `remora run` command to process only the first N records
|
|
89
|
+
- Added descriptive error messages for failed field transformations with full stack trace preservation
|
|
90
|
+
- Added file logging with rotation (enabled via `REMORA_DEBUG_MODE=true` in production)
|
|
91
|
+
- Added structured logging across key application areas
|
|
92
|
+
|
|
93
|
+
### Changed
|
|
94
|
+
- Moved `DEBUG_MODE` from project.json settings to `REMORA_DEBUG_MODE` environment variable
|
|
95
|
+
|
|
96
|
+
## V 1.1.5 - 2026-02-01
|
|
97
|
+
|
|
98
|
+
### Added
|
|
99
|
+
- Refactored for monorepository
|
|
100
|
+
- Added output maximum file size definable from consumer
|
|
101
|
+
- Added support for nested subfolders inside remora configuration directories (sources, producers, consumers, schemas)
|
|
102
|
+
|
|
103
|
+
### Fixed
|
|
104
|
+
- Bug in parsing via GZ file
|
|
105
|
+
- Issues with concurrent requests
|
|
106
|
+
|
|
107
|
+
### Changed
|
|
108
|
+
- Dockerfile for apps in a monorepo build
|
|
109
|
+
- Package.json to workspaces compliance
|
|
110
|
+
- Refactored internal module structure
|
|
111
|
+
- Removed the _file annotations for environment variables
|
|
112
|
+
|
|
113
|
+
## V 1.0.18
|