{"_id":"@anvil-and-loom/the-weave-core","name":"@anvil-and-loom/the-weave-core","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@anvil-and-loom/the-weave-core","version":"1.0.0","description":"Core engine for The Weave random table generator","type":"module","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"scripts":{"build":"tsc","dev":"tsc --watch"},"dependencies":{"seedrandom":"^3.0.5","uuid":"^13.0.0","zod":"^4.3.5"},"devDependencies":{"@types/seedrandom":"^3.0.8","@types/uuid":"^10.0.0","typescript":"~5.9.3"},"peerDependencies":{},"keywords":["random-table","ttrpg","tabletop","dice"],"license":"MIT","gitHead":"efc0c960a49d46df434b69afd34c84db43f4791d","_id":"@anvil-and-loom/the-weave-core@1.0.0","_nodeVersion":"24.11.0","_npmVersion":"11.6.1","dist":{"integrity":"sha512-q3SGILlCaZHBVS0yeNOmfNKGizdGn7DYPullgoxcLOtQB4q51xHwE5Vk/GPcZuUCXV/PKqts1QIfEXerZpHEnw==","shasum":"18f05f6f54aa10c79bacef940858aadf561c56f5","tarball":"https://registry.npmjs.org/@anvil-and-loom/the-weave-core/-/the-weave-core-1.0.0.tgz","fileCount":34,"unpackedSize":91141,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDn84Npez4TPnYBS6jo+QRkmOAGCQGCNjZkyOssBbV+sAIhALnp1upUBSN0l2Z4UR5kJs4r9xjUvn9VS5UpeKyLfI/b"}]},"_npmUser":{"name":"tguiles","email":"t.guiles@gmail.com"},"directories":{},"maintainers":[{"name":"tguiles","email":"t.guiles@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/the-weave-core_1.0.0_1768685756562_0.6256473129442395"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-17T21:35:56.371Z","1.0.0":"2026-01-17T21:35:56.711Z","modified":"2026-01-17T21:35:57.004Z"},"maintainers":[{"name":"tguiles","email":"t.guiles@gmail.com"}],"description":"Core engine for The Weave random table generator","keywords":["random-table","ttrpg","tabletop","dice"],"license":"MIT","readme":"# @the-weave/core\r\n\r\nCore engine for The Weave random table generator.\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @the-weave/core\r\n```\r\n\r\n## Usage\r\n\r\n```typescript\r\nimport { WeaveEngine } from '@the-weave/core';\r\n\r\n// Create an engine instance\r\nconst engine = new WeaveEngine();\r\n\r\n// Load tables\r\nengine.loadTables([\r\n  {\r\n    id: 'uuid-here',\r\n    name: 'Encounters',\r\n    tags: ['encounter', 'd20'],\r\n    maxRoll: 20,\r\n    headers: ['ROLL', 'RESULT'],\r\n    tableData: [\r\n      { floor: 1, ceiling: 5, resultType: 'text', result: 'Goblin' },\r\n      { floor: 6, ceiling: 15, resultType: 'text', result: 'Orc' },\r\n      { floor: 16, ceiling: 20, resultType: 'text', result: 'Dragon' },\r\n    ],\r\n    // ... other required fields\r\n  }\r\n]);\r\n\r\n// Roll on a table (internal RNG)\r\nconst result = engine.roll('encounter');\r\nconsole.log(result.result); // \"Goblin\", \"Orc\", or \"Dragon\"\r\n\r\n// Roll with external dice value\r\nconst info = engine.getTableInfo('encounter');\r\nconsole.log(info.diceNotation); // \"d20\"\r\n\r\n// Your dice engine rolls...\r\nconst myRoll = 17;\r\nconst result2 = engine.roll('encounter', myRoll);\r\nconsole.log(result2.result); // \"Dragon\"\r\n```\r\n\r\n## API\r\n\r\n### WeaveEngine\r\n\r\n| Method | Description |\r\n|--------|-------------|\r\n| `loadTables(tables)` | Load tables from array |\r\n| `getAllTables(filter?)` | Get all tables, optionally filtered |\r\n| `getTable(idOrTag)` | Get table by ID or tag |\r\n| `saveTable(table)` | Save a table (async) |\r\n| `deleteTable(id)` | Delete a table (async) |\r\n| `duplicateTable(id, newName)` | Clone a table |\r\n| `getTableInfo(idOrTag)` | Get table metadata |\r\n| `getAllTags()` | Get all unique tags |\r\n| `getTablesByTag(tag)` | Get tables with tag |\r\n| `roll(idOrTag, rollValue?)` | Roll on a table |\r\n| `rollByTag(tag, rollValue?)` | Roll by tag |\r\n| `validate(table)` | Validate a table |\r\n| `parseImport(text, options)` | Parse import text |\r\n| `exportTable(id, format)` | Export as JSON or CSV |\r\n| `exportTableToMarkdown(id)` | Export table as Markdown |\r\n| `exportAllTables()` | Export all tables as JSON |\r\n| `exportAllTablesToMarkdown()` | Export all tables as Markdown |\r\n| `onRoll(callback)` | Subscribe to roll events |\r\n| `onTableSaved(callback)` | Subscribe to save events |\r\n| `onTableDeleted(callback)` | Subscribe to delete events |\r\n| `onError(callback)` | Subscribe to error events |\r\n\r\n### Storage Adapters\r\n\r\n```typescript\r\nimport { WeaveEngine, FileSystemStorage } from '@the-weave/core';\r\n\r\n// Use file system storage (Node.js only)\r\nconst engine = new WeaveEngine({\r\n  storage: new FileSystemStorage('./data/tables')\r\n});\r\n\r\nawait engine.initialize(); // Loads tables from disk\r\n```\r\n\r\n## License\r\n\r\nMIT\r\n","readmeFilename":"README.md","_rev":"1-c06e6a54bffa864c9698b319e2750151"}