{"_id":"@aliaksandarpratashchyk/ie","name":"@aliaksandarpratashchyk/ie","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@aliaksandarpratashchyk/ie","version":"1.0.0","description":"Runtime type definitions with conversion, decorators, and snapshots for TypeScript.","main":"./dist/bundle.js","module":"./dist/bundle.js","types":"./dist/bundle.d.ts","author":{"name":"Aliaksandar Pratashchyk","email":"aliaksandarpratashchyk@gmail.com"},"license":"MIT","keywords":["runtime","runtime-types","type-definition","validation","conversion","snapshot","metadata","decorator","typescript"],"repository":{"type":"git","url":"git+https://github.com/aliaksandarpratashchyk/ie.git"},"bugs":{"url":"https://github.com/aliaksandarpratashchyk/ie/issues"},"homepage":"https://github.com/aliaksandarpratashchyk/ie#readme","scripts":{"build":"webpack && api-extractor run --local && api-documenter markdown -i ./dist/temp -o ./docs && rimraf ./dist/temp","test":"jest > COVERAGE.md && coverage-badges-cli -s ./coverage/coverage-summary.json -o ./coverage.svg --label Coverage","format":"npx prettier . --write","lint":"cross-env ESLINT_ENV=cli npx eslint . --fix"},"devDependencies":{"@eslint/js":"^9.39.0","@microsoft/api-documenter":"^7.28.2","@microsoft/api-extractor":"^7.54.0","@types/base-64":"^1.0.2","@types/jest":"^30.0.0","@types/node":"^24.6.2","coverage-badges-cli":"^2.2.0","cpx":"^1.2.1","cross-env":"^10.1.0","eslint":"^9.39.0","eslint-config-prettier":"^10.1.8","eslint-import-resolver-typescript":"^4.4.4","eslint-plugin-import-x":"^4.16.1","eslint-plugin-jest":"^29.0.1","eslint-plugin-perfectionist":"^4.15.1","fork-ts-checker-webpack-plugin":"^9.1.0","jest":"^30.1.3","prettier":"3.6.2","rimraf":"^6.1.0","terser-webpack-plugin":"^5.3.14","ts-jest":"^29.4.4","ts-loader":"^9.5.4","ts-node":"^10.9.2","typescript":"^5.9.2","typescript-eslint":"^8.46.2","webpack":"^5.102.1","webpack-cli":"^6.0.1"},"dependencies":{"@aliaksandarpratashchyk/metattron":"^1.0.0","base-64":"^1.0.0"},"_id":"@aliaksandarpratashchyk/ie@1.0.0","gitHead":"84480ae274d860798d1edbc30aaa32d5967610cb","_nodeVersion":"20.20.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-3oK/1bQYs/K2Cz8795tyE3kb3yqkfeFqODeJvnzYgkcK+2EHyMgt5EYJZ1EbKXRnZoYV1ku94FeRvwMJRaSYAw==","shasum":"78255400bda6b9ef61783981f0b6d5785d573b47","tarball":"https://registry.npmjs.org/@aliaksandarpratashchyk/ie/-/ie-1.0.0.tgz","fileCount":7,"unpackedSize":227528,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIErdJfFvpBNk7bv5+5+sCnRP/I5aWpn1F85SJYP8XZplAiAlVoU78r11rUjjuOoK2cjivrBM2og2xRc5m1q9W10zSg=="}]},"_npmUser":{"name":"aliaksandarpratashchyk","email":"aliaksandarpratashchyk@gmail.com"},"directories":{},"maintainers":[{"name":"aliaksandarpratashchyk","email":"aliaksandarpratashchyk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ie_1.0.0_1769214981542_0.7759319640060147"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-24T00:36:21.329Z","1.0.0":"2026-01-24T00:36:21.711Z","modified":"2026-01-24T00:36:21.893Z"},"maintainers":[{"name":"aliaksandarpratashchyk","email":"aliaksandarpratashchyk@gmail.com"}],"description":"Runtime type definitions with conversion, decorators, and snapshots for TypeScript.","homepage":"https://github.com/aliaksandarpratashchyk/ie#readme","keywords":["runtime","runtime-types","type-definition","validation","conversion","snapshot","metadata","decorator","typescript"],"repository":{"type":"git","url":"git+https://github.com/aliaksandarpratashchyk/ie.git"},"author":{"name":"Aliaksandar Pratashchyk","email":"aliaksandarpratashchyk@gmail.com"},"bugs":{"url":"https://github.com/aliaksandarpratashchyk/ie/issues"},"license":"MIT","readme":"﻿# I.E. (Id Est)\n\n![Tests](https://github.com/aliaksandarpratashchyk/id/actions/workflows/test.yml/badge.svg)\n[![Coverage](./coverage.svg)](./COVERAGE.md)\n\nRuntime type definitions for TypeScript with validation, target-based conversions, and decorator-powered metadata.\n\n## Features\n\n- Runtime types for primitives, objects, tuples, unions, literals, enumerations, arrays, binary data, dates, and constructable classes.\n- Validate unknown values at runtime via `type.is(value)`.\n- Convert values to/from well-known targets (for example `json` and `shallowSnapshot`) via `type.to.<target>` / `type.from.<target>`.\n- Decorate class properties/parameters with runtime types and build a `constructable` type from metadata.\n\n## Installation\n\n```bash\nnpm install @aliaksandarpratashchyk/ie\n```\n\n## Quick start\n\n```ts\nimport ie from '@aliaksandarpratashchyk/ie';\n\nconst userType = ie.object({\n  id: ie.string,\n  age: ie.optional.number,\n  tags: ie.array.string,\n});\n\nconst user = {\n  id: '42',\n  age: undefined,\n  tags: ['admin'],\n};\n\nif (!userType.is(user)) throw new Error('Invalid user');\n\nconst jsonSnapshot = userType.to.json(user);\nconst rehydrated = userType.from.json(jsonSnapshot);\n```\n\n## Conversions\n\nEach built-in type lists which targets it supports (for example, `ie.number.from.string('42')` or `ie.bigint.to.string(42n)`):\n\n```ts\nimport ie from '@aliaksandarpratashchyk/ie';\n\nconst n = ie.number.from.string('42');\nconst s = ie.bigint.to.string(42n);\n```\n\n## Decorators\n\nAttribute helpers let you attach runtime types to class properties or parameters:\n\n```ts\nimport ie from '@aliaksandarpratashchyk/ie';\nimport { number, optional, string } from '@aliaksandarpratashchyk/ie/attributes';\n\nclass User {\n  @string\n  name!: string;\n\n  @number\n  score!: number;\n\n  @optional.string\n  bio?: string;\n}\n\nconst userType = ie.constructable(User);\n```\n\n## Built-in types\n\n- Primitives: `ie.string`, `ie.number`, `ie.boolean`, `ie.bigint`, `ie.date`, `ie.null`, `ie.undefined`\n- Binary: `ie.binary` (a `Uint8Array` / Node.js `Buffer`; `ie.binary.to.json` uses base64)\n- Wrappers: `ie.optional(type)` / `ie.nullable(type)` (also available as `ie.optional.string`, `ie.nullable.number`, ...)\n- Collections: `ie.array(type)`, `ie.tuple(...)`, `ie.union(...)`, `ie.object(schema)`\n- Literals/enumerations: `ie.literal(value)`, `ie.enumeration(...)`\n- Classes: `ie.constructable(SomeClass)`\n\nSee `ie.api.md` for the full public surface (generated by API Extractor).\n\n## Scripts\n\n- `npm test` — run the Jest suite, regenerate `COVERAGE.md`, and update `coverage.svg`.\n- `npm run build` — bundle the library and regenerate API docs (`docs/`).\n- `npm run lint` / `npm run format` — lint and format the codebase.\n\n## Publishing\n\nGitHub Actions runs tests on pushes/PRs and publishes to npm when the version in `package.json` changes on `main`. Set `NPM_TOKEN` in repository secrets to enable publishing.\n","readmeFilename":"README.md","_rev":"1-b96a337304d3f2f76685434ca34af597"}