{"_id":"@almaobservatory/model","_rev":"2-2ee6fbbd46fd82c5511b0097403f117c","name":"@almaobservatory/model","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@almaobservatory/model","version":"1.0.0","_id":"@almaobservatory/model@1.0.0","maintainers":[{"name":"rkurowsk","email":"rkurowsk@eso.org"},{"name":"achalevin","email":"achalevi@partner.eso.org"},{"name":"amchavan","email":"amchavan@eso.org"},{"name":"andreeafarago","email":"farago_a@fev.com"},{"name":"stefancuriban27","email":"Stefan.Curiban@partner.eso.org"},{"name":"algoman","email":"amanning@eso.org"}],"dist":{"shasum":"4972ff55aec37b894a1c6d64ede038d4b2023d00","tarball":"https://registry.npmjs.org/@almaobservatory/model/-/model-1.0.0.tgz","fileCount":5,"integrity":"sha512-da6/dLscpEGVTQK6lQ5ZUPu+1sbsugv5UKdlA2TIXPk23Fhgkvi/aUOJbskI0w7S8U665lVYr6FrhbvOUHgCJA==","signatures":[{"sig":"MEUCIQCzdy4YsJa89rBssHASTDfhz92hXWpS2nejpU/cHvo17gIgXNRm3X3Fp01yVFPaMT1jXLc2XMUGPuqAw5Vp4Qw9YPI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":263178},"module":"fesm2022/almaobservatory-model.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/almaobservatory-model.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"2e3f4b1a501f8305967f03ec99a11e352ea61c3e","typings":"index.d.ts","_npmUser":{"name":"andreeafarago","email":"farago_a@fev.com"},"_npmVersion":"11.6.2","description":"ALMA observation tool data models: APDM types, value wrappers (DoubleWithUnit, Frequency, SkyCoordinates, etc.), and concurrent-access support.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"uuid":"^11.0.0","tslib":"^2.3.0","@stomp/rx-stomp":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^19.0.0 || ^20.0.0","@angular/common":"^19.0.0 || ^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/model_1.0.0_1782290783435_0.7460062341929834","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@almaobservatory/model","version":"1.0.1","description":"ALMA observation tool data models: APDM types, value wrappers (DoubleWithUnit, Frequency, SkyCoordinates, etc.), and concurrent-access support.","peerDependencies":{"@angular/common":"^19.0.0 || ^20.0.0","@angular/core":"^19.0.0 || ^20.0.0"},"dependencies":{"tslib":"^2.3.0","@stomp/rx-stomp":"^2.3.0","uuid":"^11.0.0"},"sideEffects":false,"module":"fesm2022/almaobservatory-model.mjs","typings":"index.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./index.d.ts","default":"./fesm2022/almaobservatory-model.mjs"}},"gitHead":"f03b6a8725c903430cdf29c439c95ffb7deddf45","_id":"@almaobservatory/model@1.0.1","_nodeVersion":"24.11.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-6SrL01aXEZO29IapFqVhhMWH0SWWsmjuIzczH1MqKuBKG7rjjGzR8RPq+tJKtAonpTPWIRrytrliSSuSVQSBMQ==","shasum":"8d0770d357686498d79d622792e39df0700b1207","tarball":"https://registry.npmjs.org/@almaobservatory/model/-/model-1.0.1.tgz","fileCount":5,"unpackedSize":266076,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDPisXBPal/JLEmQI1P4C7I9NsaI+mIjRTIh/7pJPfKpQIhANRPHP4GIxUIcnDYv3v1+Z83Aokkb/9poxxgn5MieW+I"}]},"_npmUser":{"name":"andreeafarago","email":"farago_a@fev.com"},"directories":{},"maintainers":[{"name":"rkurowsk","email":"rkurowsk@eso.org"},{"name":"achalevin","email":"achalevi@partner.eso.org"},{"name":"amchavan","email":"amchavan@eso.org"},{"name":"andreeafarago","email":"farago_a@fev.com"},{"name":"stefancuriban27","email":"Stefan.Curiban@partner.eso.org"},{"name":"algoman","email":"amanning@eso.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/model_1.0.1_1782379912641_0.5633408460403757"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-24T08:46:23.286Z","modified":"2026-06-25T09:31:53.091Z","1.0.0":"2026-06-24T08:46:23.563Z","1.0.1":"2026-06-25T09:31:52.817Z"},"description":"ALMA observation tool data models: APDM types, value wrappers (DoubleWithUnit, Frequency, SkyCoordinates, etc.), and concurrent-access support.","maintainers":[{"name":"rkurowsk","email":"rkurowsk@eso.org"},{"name":"achalevin","email":"achalevi@partner.eso.org"},{"name":"amchavan","email":"amchavan@eso.org"},{"name":"andreeafarago","email":"farago_a@fev.com"},{"name":"stefancuriban27","email":"Stefan.Curiban@partner.eso.org"},{"name":"algoman","email":"amanning@eso.org"}],"readme":"# @almaobservatory/model\n\nAn **Angular library** of TypeScript interfaces and helper builders for the\nALMA observation-tool data model. The shapes mirror the APDM (ALMA Project\nData Model) class structure described at\n[https://www.roe.ac.uk/ukatc/projects/alma/APDM-Cycle10/](https://www.roe.ac.uk/ukatc/projects/alma/APDM-Cycle10/Indexs/indexLeft.html).\n\nThe interfaces were generated by fetching json from the NGOT backend and using [typescript-generator](https://github.com/vojtechhabarta/typescript-generator).\n\nShared between **ngOT** and **SnooPI**, and consumed transitively by\n[`@almaobservatory/astro`](https://www.npmjs.com/package/@almaobservatory/astro).\n\n---\n\n## What's inside\n\n- **APDM domain types** — `ObsProject`, `ScienceGoal`, `TargetParameters`,\n  `SpectralSetupParameters`, `Rectangle`, `SinglePoint`, etc.\n- **Value wrappers** — `DoubleWithUnit`, `Frequency`, `Velocity`, `Angle`,\n  `SkyCoordinates`, `Latitude`, `Longitude`\n- **Spectral-setup model** — `ReceiverBand`, `ReceiverBands` table, science /\n  expected / overlaid spectral-line shapes\n- **Configuration types** — control-and-performance, time estimates, calibration\n- **Concurrent-access support** — STOMP / WebSocket helpers used by ngOT's\n  real-time collaboration features\n\nThe full public surface is in [`src/public-api.ts`](src/public-api.ts).\n\n---\n\n## Installation\n\n```bash\nnpm install @almaobservatory/model\n```\n\nIf you're installing `@almaobservatory/astro`, this package is pulled in as\na peer dependency automatically.\n\nThe `@stomp/rx-stomp` and `uuid` packages are runtime dependencies and will\nbe installed alongside.\n\n---\n\n## Usage\n\n```ts\nimport { SkyCoordinates, Frequency, Field, buildField } from '@almaobservatory/model';\n\nconst coords: SkyCoordinates = {\n  longitude: { value: 86.8, unit: 'deg' },\n  latitude: { value: -70.7, unit: 'deg' },\n  type: 'ABSOLUTE'\n};\n\nconst freq: Frequency = { value: 230.5, unit: 'GHz' };\n\n// Builder for a default SinglePoint Field\nconst field = buildField('ICRS');\n```\n\nMost consumers use these types alongside the converters in\n`@almaobservatory/astro`.\n\n---\n\n## Development\n\nThe library lives under `projects/model/` in the ngOT workspace. From the\nworkspace root:\n\n```bash\n# Build the library to dist/model\nng build model\n\n# Full workspace rebuild\nnpm run build-all\n```\n\nngOT's own code imports from `model` (path-mapped to `dist/model`); you do\n**not** need to publish to npm in order to consume changes inside ngOT.\n\n---\n\n## Publishing a new version\n\nWhen the data model changes and external consumers (SnooPI, etc.) need to\npick up the new version, publish a new release.\n\n```bash\n# 1. Bump the version in projects/model/package.json\n#    (patch / minor / major per semver)\n\n# 2. From the workspace root:\nnpm run publish-model\n\n# 3. Verify\nnpm view @almaobservatory/model\n```\n\nWhen making **breaking** changes — renaming or removing types,\nrestructuring an interface — bump the major version. Note that\n`@almaobservatory/astro` declares `@almaobservatory/model: ^1.0.0` as a\npeer dependency, so a `2.0.0` of model requires a coordinated bump in astro.\n\nRequires npm credentials for the `@almaobservatory` org.\n\n---\n\n## License\n\nALMA Observatory.\n","readmeFilename":"README.md"}