{"_id":"@a-company/portal-core","name":"@a-company/portal-core","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@a-company/portal-core","version":"0.1.0","description":"Portal configuration parsing and validation","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsup src/index.ts --format esm --dts --clean","dev":"tsup src/index.ts --format esm --dts --watch","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"dependencies":{"js-yaml":"^4.1.0","glob":"^13.0.0"},"devDependencies":{"@types/js-yaml":"^4.0.9","@types/node":"^20.10.0","tsup":"^8.0.1","typescript":"^5.3.3"},"publishConfig":{"access":"public"},"author":{"name":"ascend42"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/ascend42/a-paradigm.git","directory":"packages/portal/core"},"bugs":{"url":"https://github.com/ascend42/a-paradigm/issues"},"homepage":"https://github.com/ascend42/a-paradigm#readme","keywords":["paradigm","portal","authorization","access-control","yaml"],"engines":{"node":">=18.0.0"},"gitHead":"c0c9c22fa3d85db8b3f314c5c8edef44a5d3eb25","_id":"@a-company/portal-core@0.1.0","_nodeVersion":"24.12.0","_npmVersion":"11.7.0","dist":{"integrity":"sha512-isXZGWM6gJrIB7/mEWiiXu+wDTjO2sLWlTulc0MzJFlnpdRvwBHoVu18VMMOnvyvgkMY09/RXP6ypb0RZVfUXw==","shasum":"9cfd9e78703e55e1012def0a324b8c6623ba137b","tarball":"https://registry.npmjs.org/@a-company/portal-core/-/portal-core-0.1.0.tgz","fileCount":4,"unpackedSize":19011,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBJM1KuTe5aoX3Ib0TO772CfBWvuDR/n1HqPdpy0t4wwAiAt9jSZeMt+5h2GatN3jw4iISNW/+SNrQcOf3e2TiRXeQ=="}]},"_npmUser":{"name":"ascend42","email":"ascend@a-company.org"},"directories":{},"maintainers":[{"name":"ascend42","email":"ascend@a-company.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/portal-core_0.1.0_1771872373790_0.09287282550351095"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-23T18:46:13.704Z","0.1.0":"2026-02-23T18:46:13.931Z","modified":"2026-02-23T18:46:14.178Z"},"maintainers":[{"name":"ascend42","email":"ascend@a-company.org"}],"description":"Portal configuration parsing and validation","homepage":"https://github.com/ascend42/a-paradigm#readme","keywords":["paradigm","portal","authorization","access-control","yaml"],"repository":{"type":"git","url":"git+https://github.com/ascend42/a-paradigm.git","directory":"packages/portal/core"},"author":{"name":"ascend42"},"bugs":{"url":"https://github.com/ascend42/a-paradigm/issues"},"license":"MIT","readme":"# @a-company/portal-core\n\n> Portal configuration parsing and validation\n\nCore library for working with `portal.yaml` files - the authorization topology format for defining access control rules.\n\n## Installation\n\n```bash\nnpm install @a-company/portal-core\n```\n\n## Usage\n\n```typescript\nimport { \n  parsePortalConfig, \n  validatePortalConfig,\n  findPortalFiles \n} from '@a-company/portal-core';\n\n// Find portal.yaml files\nconst files = await findPortalFiles('./');\n\n// Parse a portal configuration\nconst config = await parsePortalConfig('./portal.yaml');\n\n// Validate the configuration\nconst result = validatePortalConfig(config);\nif (!result.valid) {\n  console.error(result.errors);\n}\n```\n\n## Portal File Format\n\n```yaml\ngates:\n  checkout:\n    description: Checkout flow access\n    requires:\n      - authenticated\n      - has_cart_items\n    signals:\n      - \"!checkout-started\"\n      - \"!checkout-completed\"\n\n  admin-panel:\n    description: Admin dashboard access\n    requires:\n      - authenticated\n      - role:admin\n```\n\n## Documentation\n\nSee the [main repository](https://github.com/ascend42/a-paradigm) for full documentation.\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-beef5195e96bf45e385bb825f839b475"}