{"_id":"@ai-path/lattica-io","_rev":"2-aa9d04b1531a9be3e732ff30a2d17870","name":"@ai-path/lattica-io","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@ai-path/lattica-io","version":"0.1.0","license":"MIT","_id":"@ai-path/lattica-io@0.1.0","maintainers":[{"name":"fsakurai","email":"f-sakurai@ai-path.jp"}],"dist":{"shasum":"8adfdbd6a4c55fae2b6534c190fe7f946498899d","tarball":"https://registry.npmjs.org/@ai-path/lattica-io/-/lattica-io-0.1.0.tgz","fileCount":9,"integrity":"sha512-OWSWCP0036JxB3UcY4XrRUBZ/2cm7aW84M3NlYbWI/4q42R19QYG+TATAlrXmtin7eIs8RGJX62xexf+1fXjHQ==","signatures":[{"sig":"MEUCIB+T9/lINtt1UseL/ThiX4MlbieaHu4+nW0f3+bC9dT0AiEA9YTS7uGSVImuE3DTApc/XcBfr37mw27dGGM5oclnkGE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":318994},"main":"./dist/index.cjs","type":"module","_from":"file:ai-path-lattica-io-0.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fsakurai","email":"f-sakurai@ai-path.jp"},"_resolved":"/private/var/folders/tf/0c43660d4k1dg4ssxq0n63ww0000gn/T/6c2259abb1ef3f15324249534d26befc/ai-path-lattica-io-0.1.0.tgz","_integrity":"sha512-OWSWCP0036JxB3UcY4XrRUBZ/2cm7aW84M3NlYbWI/4q42R19QYG+TATAlrXmtin7eIs8RGJX62xexf+1fXjHQ==","_npmVersion":"10.9.3","description":"Import/export for Lattica: CSV/TSV parsing & serialization, clipboard (TSV + HTML) interop, and dependency-free XLSX (OOXML) export.","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","dependencies":{"@ai-path/lattica-core":"0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lattica-io_0.1.0_1783177108345_0.7263958725515591","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Renamed to @ai-path/tb-io (product: Taible). Install @ai-path/tb-io instead."}},"time":{"created":"2026-07-04T14:58:28.229Z","modified":"2026-07-04T16:08:47.315Z","0.1.0":"2026-07-04T14:58:28.486Z"},"license":"MIT","description":"Import/export for Lattica: CSV/TSV parsing & serialization, clipboard (TSV + HTML) interop, and dependency-free XLSX (OOXML) export.","maintainers":[{"name":"fsakurai","email":"f-sakurai@ai-path.jp"}],"readme":"# @ai-path/lattica-io\n\nImport/export and clipboard interop for Lattica, with no runtime dependencies.\nIt includes an RFC 4180 delimited-text (CSV/TSV) codec, clipboard text/HTML\nhelpers, and a from-scratch XLSX reader and writer (built on an embedded\nZIP/deflate implementation). Everything operates on plain string/value matrices\nso it stays decoupled from the grid models.\n\n## Install\n\n```sh\npnpm add @ai-path/lattica-io\n```\n\n## API overview\n\n### CSV / TSV\n\n`parseDelimited` / `serializeDelimited` follow RFC 4180 quoting; `parseTsv` /\n`serializeTsv` are tab-delimited shortcuts.\n\n```ts\nimport { parseDelimited, serializeDelimited, parseTsv } from '@ai-path/lattica-io';\n\nconst rows = parseDelimited('name,age\\n\"Doe, J\",42'); // [['name','age'],['Doe, J','42']]\nconst csv = serializeDelimited(rows);                  // back to a CSV string\nconst tsv = parseTsv('a\\tb\\nc\\td');\n```\n\n`DelimitedOptions` lets you override the `delimiter` and `quote` characters.\n\n### Clipboard\n\n```ts\nimport { toClipboardText, toClipboardHtml, parseClipboard } from '@ai-path/lattica-io';\n\nconst text = toClipboardText([['a', 'b'], ['c', 'd']]); // TSV for the clipboard\nconst html = toClipboardHtml([['a', 'b']]);             // an HTML <table>\nconst matrix = parseClipboard({ text, html });          // prefers HTML when present\n```\n\n### XLSX write\n\nBuild a workbook from cell matrices (`XlsxCell` = `string | number | boolean | null`).\n\n```ts\nimport { writeXlsx, matrixToXlsx, type XlsxWorkbook } from '@ai-path/lattica-io';\n\nconst bytes = matrixToXlsx([['Name', 'Qty'], ['Widget', 3]], 'Sheet1');\n\nconst workbook: XlsxWorkbook = {\n  sheets: [{ name: 'Data', rows: [['a', 1], ['b', 2]] }],\n};\nconst wbBytes = writeXlsx(workbook); // Uint8Array\n```\n\n### XLSX read\n\n```ts\nimport { readXlsx, type ReadWorkbook } from '@ai-path/lattica-io';\n\nconst wb: ReadWorkbook = readXlsx(bytes);\nwb.sheets[0]?.name;\nwb.sheets[0]?.rows; // (string | number | boolean | null)[][]\n```\n\nLow-level building blocks (`crc32`, `buildZip`, `inflateRaw`, `parseHtmlTable`)\nare also exported for advanced use.\n","readmeFilename":"README.md"}