Shared canonical export-name converter (camelCase to snake_case with override table)
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 68/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- typescript
- Domain
- tooling
Research direction
Start by locating the raster-shared export surface, its existing tests, and the package release configuration; also inspect Overseer's private convertObjectKeysToSnakeCase and the polygon-parts-worker consumer. Add the shared converter and one documented override table, cover general, acronym/number, and override cases, then verify a new raster-shared version can be released for downstream use.
Written by the indexing model from the issue text.
Description
What to build
Add a shared canonical export-name converter to raster-shared that maps camelCase property keys to the snake_case column names used when writing GeoPackage export tables. It wraps change-case's snakeCase for the general case and consults a small override table for naming exceptions.
The override table's only entry today is resolutionDegree → resolution_deg (the per-part resolution field). Note the aggregate fields maxResolutionDeg/minResolutionDeg already abbreviate, so they need no override. The override table is the single, documented place where export-naming exceptions are declared.
Name the function to reflect that it is the canonical export-column-name mapping (e.g. an export-column-name converter), not a generic snake_case utility, so future consumers understand it carries overrides. This converter is intended to replace Overseer's private convertObjectKeysToSnakeCase and to be consumed by polygon-parts-worker.
No snake_case TypeScript type is produced — snake_case is derived at runtime only; the camelCase Zod schemas in raster-shared remain the source of truth for field names.
Release a new raster-shared version so downstream repos can consume it.
Acceptance criteria
- A converter exported from
raster-sharedmaps an object's camelCase keys to snake_case keys, usingchange-casefor the general case. - Acronym/number tokens convert correctly:
horizontalAccuracyCE90 -> horizontal_accuracy_ce90,imagingTimeBeginUTC -> imaging_time_begin_utc. - An override table is consulted before the general rule;
resolutionDegreemaps toresolution_deg. - Adding or removing an override is a single-location change.
- Unit tests cover the general conversion, the acronym/number cases, and every override entry.
- A new
raster-sharedversion is released and publishable for downstream consumption.
Blocked by
- None - can start immediately.
- Dominant language
- TypeScript
- Stars
- 1
- Forks
- 0
- Avg merge
- 2h 51m
- Merged PRs (30d)
- 7
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Similar issues
-
bot:ai-assisted status:untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
midnightntwrk/midnight-js#1424 ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
mksglu/context-mode#1268 ·
Maintainers usually reply within 5 days
-
Edit:Opencheck:failed streams:edit
Difficulty 2/5 1-3 hours Newbie friendliness 60/100
iptv-org/iptv#54352 · 1 comment ·
Maintainers usually reply within 1 day
-
[Table] reserveSelectedRowOnPaginate=false 时表头全选包含其他页数据Possibly taken @dvd233 claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Tencent/tdesign-react#4416 · 2 comments ·
Maintainers usually reply within 1 day
-
area:widget bug
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
interledger/publisher-tools#894 ·
Maintainers usually reply within 1 day