{"id":27988,"library":"node-iso11649","title":"node-iso11649","description":"ISO 11649:2009 RF creditor reference generation, validation, and parsing library for Node.js. Version 3.0.0, pure ESM with TypeScript types. No dependencies, 4 KB (1.2 KB gzipped). Key differentiators: lightweight, zero-dependency, supports pretty formatting, and includes a fallback random generation when no base reference is provided. The library handles the complete RF reference lifecycle including checksum calculation (MOD97-10) and formatting.","status":"active","version":"3.0.0","language":"javascript","source_language":"en","source_url":"https://github.com/nruotsal/node-iso11649","tags":["javascript","ISO 11649:2009","creditor reference","RF creditor reference","finance","banking","typescript"],"install":[{"cmd":"npm install node-iso11649","lang":"bash","label":"npm"},{"cmd":"yarn add node-iso11649","lang":"bash","label":"yarn"},{"cmd":"pnpm add node-iso11649","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"ESM-only since v3; CommonJS require is not supported.","wrong":"const generate = require('node-iso11649').generate","symbol":"generate","correct":"import { generate } from 'node-iso11649'"},{"note":"Named export, not default export.","wrong":"import Validate from 'node-iso11649'","symbol":"validate","correct":"import { validate } from 'node-iso11649'"},{"note":"Named export.","wrong":null,"symbol":"parse","correct":"import { parse } from 'node-iso11649'"},{"note":"TypeScript type export for the options parameter in generate().","wrong":null,"symbol":"type GenerateOptions","correct":"import type { GenerateOptions } from 'node-iso11649'"}],"quickstart":{"code":"import { generate, validate, parse } from 'node-iso11649';\n\nconst ref = generate('12345 12345');\nconsole.log(ref); // RF451234512345\n\nconst prettyRef = generate('12345 12345', { pretty: true });\nconsole.log(prettyRef); // RF45 1234 5123 45\n\nconst randomRef = generate();\nconsole.log(randomRef); // e.g., RF4714508655422864\n\nconsole.log(validate('RF451234512345')); // true\nconsole.log(validate('RF00TEST')); // false\n\nconst parsed = parse('RF47 1450 8655 4228 64');\nconsole.log(parsed); // 14508655422864\n\nconst invalid = parse('RF00TEST');\nconsole.log(invalid); // null","lang":"typescript","description":"Demonstrates generating RF creditor references from an existing reference, with pretty formatting, random generation, validation, and parsing."},"warnings":[{"fix":"Switch to ESM imports: import { generate } from 'node-iso11649'","message":"v3.0.0 drops CommonJS support. The package is ESM-only and cannot be required with require().","severity":"breaking","affected_versions":"=3.0.0"},{"fix":"In production, provide a base reference or use cryptographically secure random values as part of the input.","message":"generate() without arguments uses Date.now() and Math.random() which are not cryptographically secure. Uniqueness is not guaranteed.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Sanitize input to ensure it matches the allowed characters and length.","message":"The input to generate() must contain only digits 0-9 and letters A-Z (case-insensitive), spaces are allowed but stripped. Max length 21 characters before RF prefix.","severity":"gotcha","affected_versions":">=0.0.0"}],"env_vars":null,"last_verified":"2026-05-09T00:00:00.000Z","next_check":"2026-08-07T00:00:00.000Z","problems":[{"fix":"Use ESM import syntax: import { generate } from 'node-iso11649'","cause":"Using CommonJS require() with an ESM-only package.","error":"Cannot find module 'node-iso11649'"},{"fix":"Correct import: import { generate } from 'node-iso11649'","cause":"Incorrect import style, e.g. import * as iso11649 from 'node-iso11649' then iso11649.generate()? The package uses named exports.","error":"TypeError: generate is not a function"},{"fix":"Ensure the reference string contains only digits 0-9 and letters A-Z (case-insensitive), max 21 characters before adding RF.","cause":"Input to generate() or validate() contains characters other than 0-9 and A-Z, or exceeds 21 characters.","error":"ValidationError: Invalid reference format"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}