{"_id":"@dymo-print-suite/core","name":"@dymo-print-suite/core","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@dymo-print-suite/core","version":"1.0.0","description":"Core TypeScript library for DYMO Label Web Service","keywords":["dymo","label","printer","labelwriter","web-service","typescript"],"homepage":"https://github.com/apenab/dymo-print-suite/tree/master/packages/core#readme","repository":{"type":"git","url":"git+https://github.com/apenab/dymo-print-suite.git","directory":"packages/core"},"bugs":{"url":"https://github.com/apenab/dymo-print-suite/issues"},"license":"MIT","author":{"name":"apenab"},"type":"module","main":"./dist/index.cjs.js","module":"./dist/index.modern.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.modern.js","require":"./dist/index.cjs.js"}},"dependencies":{"fast-xml-parser":"^4.5.1"},"devDependencies":{"@types/node":"^25.0.9","jsdom":"^27.4.0","typescript":"^5.9.3","vite":"^7.3.1","vite-plugin-dts":"^4.5.4","vitest":"^4.0.17"},"scripts":{"build":"vite build","test":"vitest run","test:watch":"vitest"},"_id":"@dymo-print-suite/core@1.0.0","_integrity":"sha512-LRTGvGBIZ7WMfaM7n9q9yZh9pye2tTAdMoYuuUj2T4vEqA4cd2dK0CLbt/elM2w9ZjzdbnkFyHdF2ZiIwWXyBw==","_resolved":"/tmp/f19569b70937c8ec4cec329b37157e8a/dymo-print-suite-core-1.0.0.tgz","_from":"file:dymo-print-suite-core-1.0.0.tgz","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-LRTGvGBIZ7WMfaM7n9q9yZh9pye2tTAdMoYuuUj2T4vEqA4cd2dK0CLbt/elM2w9ZjzdbnkFyHdF2ZiIwWXyBw==","shasum":"1d86ff847cee34add032b90dd8b7c0d24761c514","tarball":"https://registry.npmjs.org/@dymo-print-suite/core/-/core-1.0.0.tgz","fileCount":7,"unpackedSize":48943,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFosvorr6ADfTeDos1pSAOm9sbkj9B/zPJ9ogka+0DiQAiEA2qOSAicc9T+k61gnf+qBZ4AJlorLjtL6LloeRCsf6UE="}]},"_npmUser":{"name":"apenab","email":"apenab1995@gmail.com"},"directories":{},"maintainers":[{"name":"apenab","email":"apenab1995@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core_1.0.0_1769606726201_0.31739988373346684"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-28T13:25:26.076Z","1.0.0":"2026-01-28T13:25:26.362Z","modified":"2026-01-28T13:25:26.608Z"},"maintainers":[{"name":"apenab","email":"apenab1995@gmail.com"}],"description":"Core TypeScript library for DYMO Label Web Service","homepage":"https://github.com/apenab/dymo-print-suite/tree/master/packages/core#readme","keywords":["dymo","label","printer","labelwriter","web-service","typescript"],"repository":{"type":"git","url":"git+https://github.com/apenab/dymo-print-suite.git","directory":"packages/core"},"author":{"name":"apenab"},"bugs":{"url":"https://github.com/apenab/dymo-print-suite/issues"},"license":"MIT","readme":"# @dymo-print-suite/core\n\nCore TypeScript library for interacting with DYMO Label Web Service.\nUse this package when you want the DYMO helpers without React.\n\n> **Using React?** Check out [@dymo-print-suite/react](https://www.npmjs.com/package/@dymo-print-suite/react) for ready-to-use hooks.\n\n## Installation\n\n```bash\nnpm install @dymo-print-suite/core\n# or\npnpm add @dymo-print-suite/core\n# or\nyarn add @dymo-print-suite/core\n```\n\n## Usage\n\n> **Note:** Examples use async/await syntax. For CommonJS or environments without top-level await, wrap calls in an async function.\n\n### Print a Label\n\n```typescript\nimport { printLabel } from \"@dymo-print-suite/core\";\n\nasync function print() {\n  const labelXml = `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<DieCutLabel Version=\"8.0\" Units=\"twips\">\n  <!-- Your label XML -->\n</DieCutLabel>`;\n\n  await printLabel(\"DYMO LabelWriter 450\", labelXml);\n}\n\nprint();\n```\n\n### Build Custom Requests\n\n```typescript\nimport { dymoRequestBuilder } from \"@dymo-print-suite/core\";\n\nasync function fetchPrinters() {\n  const response = await dymoRequestBuilder({\n    method: \"GET\",\n    wsAction: \"getPrinters\",\n  });\n\n  console.log(response.data);\n}\n\nfetchPrinters();\n```\n\n### Parse Printer List from XML\n\n```typescript\nimport { getDymoPrintersFromXml } from \"@dymo-print-suite/core\";\n\nconst printers = getDymoPrintersFromXml(xmlResponse, \"LabelWriterPrinter\");\n\nprinters.forEach((printer) => {\n  console.log(`${printer.name}: ${printer.isConnected ? \"Online\" : \"Offline\"}`);\n});\n```\n\n### Request Cancellation\n\n```typescript\nimport { dymoRequestBuilder, isRequestCancelled } from \"@dymo-print-suite/core\";\n\nasync function fetchWithCancellation() {\n  const controller = new AbortController();\n\n  // Cancel after 5 seconds\n  setTimeout(() => controller.abort(), 5000);\n\n  try {\n    const response = await dymoRequestBuilder({\n      method: \"GET\",\n      wsAction: \"status\",\n      signal: controller.signal,\n    });\n    console.log(response.data);\n  } catch (error) {\n    if (isRequestCancelled(error)) {\n      console.log(\"Request was cancelled\");\n    }\n  }\n}\n\nfetchWithCancellation();\n```\n\n## API\n\n### `printLabel(printerName, labelXml, labelSetXml?)`\n\nPrint a label to a DYMO printer.\n\n- `printerName` - Name of the DYMO printer\n- `labelXml` - Label XML content\n- `labelSetXml` - Optional. LabelSet XML for printing multiple labels\n\n### `dymoRequestBuilder(config)`\n\nBuild and execute requests to the DYMO web service.\n\n```typescript\ninterface DymoRequestConfig {\n  wsProtocol?: string;\n  wsPath?: string;\n  wsAction: WsAction;\n  method: \"GET\" | \"POST\";\n  signal?: AbortSignal;\n  fetchOptions?: RequestInit;\n}\n```\n\n### `dymoUrlBuilder(protocol, host, port, path, action)`\n\nBuild a URL for the DYMO web service.\n\n### `getDymoPrintersFromXml(xml, modelPrinter)`\n\nParse XML response from GetPrinters endpoint into typed printer objects.\n\n### `isRequestCancelled(error)`\n\nCheck if an error is a cancellation error.\n\n### `localStore(key, data, timeout?)` / `localRetrieve(key, defaultValue?)`\n\nStorage utilities with optional expiration.\n\n## Types\n\n```typescript\ninterface DymoPrinter {\n  name: string;\n  modelName: string;\n  isLocal: boolean;\n  isTwinTurbo: boolean;\n  isConnected: boolean;\n}\n\ninterface DymoResponse<T = any> {\n  data: T;\n  status: number;\n  statusText: string;\n  url: string;\n}\n\ntype WsAction =\n  | \"status\"\n  | \"getPrinters\"\n  | \"openLabel\"\n  | \"printLabel\"\n  | \"printLabel2\"\n  | \"renderLabel\"\n  | \"loadImage\"\n  | \"getJobStatus\";\n```\n\n## Requirements\n\n- [DYMO Label Web Service](https://www.dymo.com/support?cfid=online-support-sdk) must be installed and running\n- Supported browsers: Chrome, Firefox, Edge, Safari\n\n## Related\n\n- [@dymo-print-suite/react](https://www.npmjs.com/package/@dymo-print-suite/react) - React hooks for DYMO printing\n- [GitHub Repository](https://github.com/apenab/dymo-print-suite)\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-b531566f39ae6c5c18a1e1ad8e6cead4"}