{"_id":"@bokic/cfrds","_rev":"6-219ad7870becbf27f420a92d2912846f","name":"@bokic/cfrds","dist-tags":{"latest":"1.1.2"},"versions":{"1.0.8":{"name":"@bokic/cfrds","version":"1.0.8","keywords":["coldfusion","rds","cfml","cfrds"],"license":"MIT","_id":"@bokic/cfrds@1.0.8","maintainers":[{"name":"bokic","email":"bbarbulovski@gmail.com"}],"dist":{"shasum":"11ed34b4a35bbf959d913d386080d7bfb99008ea","tarball":"https://registry.npmjs.org/@bokic/cfrds/-/cfrds-1.0.8.tgz","fileCount":39,"integrity":"sha512-pPDjoAoUiK+6g3lgdJCMTru5FvNcAIp6Ccz/w266zw2Xk4CbVb3VkQPv0PN51o6jNFi4o+T/u4Vuig5jkPJV2g==","signatures":[{"sig":"MEUCIG2U56qioNqytnmkhmSPPrH2ySxVtqjlOHj0YF7quqGNAiEAt/tZHdRmmvGs1zd8sK12ALyqkKmt5XBKoR85BqRLEV0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":155000},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"ce4b9a5c5fa9bb9e6fbf6f5a6a78cad830e15fc3","scripts":{"test":"npm run build:test && node dist/test.js","build":"tsc","clean":"rm -rf dist","version":"node scripts/version.js","prebuild":"npm run version","build:test":"tsc --project tsconfig.test.json","publish:npm":"node scripts/publish.js","prebuild:test":"npm run version"},"_npmUser":{"name":"bokic","email":"bbarbulovski@gmail.com"},"_npmVersion":"12.0.1","description":"Pure TypeScript implementation of the ColdFusion RDS (Remote Development Service) protocol","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cfrds_1.0.8_1784506174368_0.43817483001039914","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@bokic/cfrds","version":"1.0.9","keywords":["coldfusion","rds","cfml","cfrds"],"license":"MIT","_id":"@bokic/cfrds@1.0.9","maintainers":[{"name":"bokic","email":"bbarbulovski@gmail.com"}],"dist":{"shasum":"da1ceb820e122840d13252bb62f904b421af15cb","tarball":"https://registry.npmjs.org/@bokic/cfrds/-/cfrds-1.0.9.tgz","fileCount":40,"integrity":"sha512-cyk5eeg7gtj2/hozyuHj6UooanM4mxXhPU6UN4+StAeoa8VudmVbUwzWCWtzg0W6gYCWsCdY2RQnp6y0z9o6WQ==","signatures":[{"sig":"MEQCIEAuKYQWBdY7hgLU0qyjG2UO6CHuiit9kXu4cuvkpxonAiBd/Pz60C3XuCCJkSlX+e95oWyOr0Hxwy6xsEaLEzO4mg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":164359},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"d0a62487a0e89611aa9d01fd61d3897c377d6dc4","scripts":{"test":"npm run build:test && node dist/test.js","build":"tsc","clean":"rm -rf dist","version":"node scripts/version.js","prebuild":"npm run version","build:test":"tsc --project tsconfig.test.json","publish:npm":"node scripts/publish.js","prebuild:test":"npm run version"},"_npmUser":{"name":"bokic","email":"bbarbulovski@gmail.com"},"_npmVersion":"12.0.1","description":"Pure TypeScript implementation of the ColdFusion RDS (Remote Development Service) protocol","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cfrds_1.0.9_1784547878481_0.7939895050853187","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@bokic/cfrds","version":"1.0.10","keywords":["coldfusion","rds","cfml","cfrds"],"license":"MIT","_id":"@bokic/cfrds@1.0.10","maintainers":[{"name":"bokic","email":"bbarbulovski@gmail.com"}],"dist":{"shasum":"37373a4e7ac5561bbf6116f3d1315c875279af28","tarball":"https://registry.npmjs.org/@bokic/cfrds/-/cfrds-1.0.10.tgz","fileCount":40,"integrity":"sha512-7sSB5lAsyD79x4uaA6syv3dtsuWTtve5j9Ztq7zHEUdhe5pMEmkNSzi1eDZjRNOImKdiaWFm1M8SOCEQjdtycw==","signatures":[{"sig":"MEUCIQDsRtJOPhutqlz8TdAzuqgDRLqMETJnX/wgFwOx0naMBQIgR07fK9PP/5W81qP/Too12J+aBj5NWH38jduKCsvIusI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":209513},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"efd09a5f6a57094cfb8e9a7655905ea7d84ff965","scripts":{"test":"npm run build:test && node dist/test.js","build":"tsc","clean":"rm -rf dist","version":"node scripts/version.js","prebuild":"npm run version","build:test":"tsc","publish:npm":"node scripts/publish.js","prebuild:test":"npm run version"},"_npmUser":{"name":"bokic","email":"bbarbulovski@gmail.com"},"_npmVersion":"12.0.1","description":"Pure TypeScript implementation of the ColdFusion RDS (Remote Development Service) protocol","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cfrds_1.0.10_1784600507670_0.33815718765567837","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@bokic/cfrds","version":"1.1.0","keywords":["coldfusion","rds","cfml","cfrds"],"license":"MIT","_id":"@bokic/cfrds@1.1.0","maintainers":[{"name":"bokic","email":"bbarbulovski@gmail.com"}],"dist":{"shasum":"0ac993042f37362e2d0babafa4ee0ef136d708cf","tarball":"https://registry.npmjs.org/@bokic/cfrds/-/cfrds-1.1.0.tgz","fileCount":40,"integrity":"sha512-kTK++k39FszQiwvXpdaTw2H7CHmCFuY6HpQU1HDxQejq9bt5KINL20xGDBpV5RJ84PGnO2RpuzxIOp/spge5mg==","signatures":[{"sig":"MEUCIDgaskKVMfcT7Ttbce5FqW39xIKo+DMVTqGebU9BC388AiEAozcuSIwnFIMckl0voQMlSNUsOv8r61HwK6y+K+JEX78=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":209540},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"ef3b396810e0f2776e37905e5d384fae0bfbfe77","scripts":{"test":"npm run build:test && node dist/test.js","build":"tsc","clean":"rm -rf dist","version":"node scripts/version.js","prebuild":"npm run version","build:test":"tsc","publish:npm":"node scripts/publish.js","prebuild:test":"npm run version"},"_npmUser":{"name":"bokic","email":"bbarbulovski@gmail.com"},"_npmVersion":"12.0.1","description":"Pure TypeScript implementation of the ColdFusion RDS (Remote Development Service) protocol","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cfrds_1.1.0_1784681049986_0.44862801564172705","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@bokic/cfrds","version":"1.1.1","keywords":["coldfusion","rds","cfml","cfrds"],"license":"MIT","_id":"@bokic/cfrds@1.1.1","maintainers":[{"name":"bokic","email":"bbarbulovski@gmail.com"}],"dist":{"shasum":"b552e2369642a80e2ad15f869cae04cabaebfc29","tarball":"https://registry.npmjs.org/@bokic/cfrds/-/cfrds-1.1.1.tgz","fileCount":40,"integrity":"sha512-3EVuHx9u1cfWFs2kYeBYUusNBA48IEZ8cNI6pE/d5uoudjEdB7b9pBb26r1awWiKicnmGaPYgy1skTgN2EyKkw==","signatures":[{"sig":"MEYCIQD7rch0hswm4mZb9xoM5ElRioFDvhi3Pft4gp79UnaUigIhAJqjS1qA+2Dpx7wTWjkgt3OWyJgN1l9KnpvCxP3AcXGq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":310293},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"378331b88acb8e8ee47c840ba1e6a1d83edf4418","scripts":{"test":"npm run build:test && node dist/test.js","build":"tsc","clean":"rm -rf dist","version":"node scripts/version.js","prebuild":"npm run version","build:test":"tsc","publish:npm":"node scripts/publish.js","prebuild:test":"npm run version"},"_npmUser":{"name":"bokic","email":"bbarbulovski@gmail.com"},"_npmVersion":"12.0.1","description":"Pure TypeScript implementation of the ColdFusion RDS (Remote Development Service) protocol","directories":{},"_nodeVersion":"26.4.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cfrds_1.1.1_1784747551346_0.08202944063109929","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@bokic/cfrds","version":"1.1.2","description":"Pure TypeScript implementation of the ColdFusion RDS (Remote Development Service) protocol","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"version":"node scripts/version.js","prebuild":"npm run version","build":"tsc","prebuild:test":"npm run version","build:test":"tsc","test":"npm run build:test && node dist/test.js","clean":"rm -rf dist","publish:npm":"node scripts/publish.js"},"keywords":["coldfusion","rds","cfml","cfrds"],"license":"MIT","devDependencies":{"typescript":"^5.4.0","@types/node":"^20.0.0"},"gitHead":"19683bad7558b9e9d72d4224dbe539c2e558657d","_id":"@bokic/cfrds@1.1.2","_nodeVersion":"26.5.0","_npmVersion":"12.0.1","dist":{"integrity":"sha512-fcWn5gyqeavsoSDbo2ve3+mCEBga1d+Y5PkaMmzNltJyFSc6dpola+9qE5tMG37fiUCBRXxKS8uy6DmBe8EcPQ==","shasum":"f0eecbce4a9d7d0e4e606898096c4a77e37d822d","tarball":"https://registry.npmjs.org/@bokic/cfrds/-/cfrds-1.1.2.tgz","fileCount":40,"unpackedSize":310568,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCfg2YijriZr0Ec2XhYif0lzlXnGVU6a1mBE4KroUjkTAIgfkkfX0zJzDyKEyDvmvWkCSrNIqLSIkZv44ec0C66300="}]},"_npmUser":{"name":"bokic","email":"bbarbulovski@gmail.com"},"directories":{},"maintainers":[{"name":"bokic","email":"bbarbulovski@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cfrds_1.1.2_1784901042083_0.24784014776990104"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-20T00:09:34.166Z","modified":"2026-07-24T13:50:42.343Z","1.0.8":"2026-07-20T00:09:34.507Z","1.0.9":"2026-07-20T11:44:38.641Z","1.0.10":"2026-07-21T02:21:47.808Z","1.1.0":"2026-07-22T00:44:10.168Z","1.1.1":"2026-07-22T19:12:31.482Z","1.1.2":"2026-07-24T13:50:42.220Z"},"license":"MIT","keywords":["coldfusion","rds","cfml","cfrds"],"description":"Pure TypeScript implementation of the ColdFusion RDS (Remote Development Service) protocol","maintainers":[{"name":"bokic","email":"bbarbulovski@gmail.com"}],"readme":"# @bokic/cfrds\n\n> Pure TypeScript client implementation of the ColdFusion RDS (Remote Development Service) protocol for Node.js and modern JavaScript runtimes. Zero runtime dependencies.\n\n[![npm version](https://img.shields.io/npm/v/@bokic/cfrds.svg)](https://www.npmjs.com/package/@bokic/cfrds)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n---\n\n## Features\n\n- **File System Operations**: Browse remote server directories, read, upload, download, move, rename, delete files, and create/remove directories.\n- **Database Services**: Enumerate data sources (DSNs), inspect tables, columns, primary & foreign keys, execute SQL queries, and inspect SQL metadata.\n- **Remote Debugger**: Connect to ColdFusion remote debugger, control execution (step into, step over, resume), set breakpoints, and listen to events.\n- **Admin API & Server Info**: Fetch ColdFusion installation directory (`cfroot`), inspect server info, retrieve custom tag paths, and manage CF mappings.\n- **Security Analyzer**: Run remote CFML security analyzer scans.\n- **Zero External Dependencies**: Pure TypeScript, built on native Node.js HTTP/HTTPS primitives.\n\n---\n\n## Installation\n\n```bash\nnpm install @bokic/cfrds\n```\n\n---\n\n## Quick Start\n\n```typescript\nimport { Server } from \"@bokic/cfrds\";\n\nasync function main() {\n  // Initialize server connection\n  const server = new Server(\"127.0.0.1\", 8500, \"admin\", \"your_rds_password\");\n\n  try {\n    // 1. Get ColdFusion installation directory\n    const cfRoot = await server.getCFRoot();\n    console.log(`ColdFusion Root: ${cfRoot}`);\n\n    // 2. Browse directory contents\n    const items = await server.browseDir(\"/\");\n    console.log(\"Directory listing:\", items);\n\n    // 3. Read a remote file\n    const fileContent = await server.cat(\"/index.cfm\");\n    console.log(\"File size:\", fileContent.size, \"bytes\");\n    console.log(\"Content:\\n\", fileContent.content.toString(\"utf-8\"));\n\n    // 4. Query Data Sources\n    const dsns = await server.getDsnInfo();\n    console.log(\"Available DSNs:\", dsns);\n  } catch (err) {\n    console.error(\"RDS Error:\", err);\n  }\n}\n\nmain();\n```\n\n---\n\n## Usage Examples\n\n### File Operations\n\n```typescript\n// Browse directory\nconst files = await server.browseDir(\"/var/www/html\");\n\n// Read remote file as Buffer\nconst file = await server.cat(\"/var/www/html/app.cfm\");\n\n// Upload local file to remote server\nconst localBuffer = Buffer.from(\"<cfoutput>Hello World</cfoutput>\");\nawait server.uploadFile(\"/var/www/html/hello.cfm\", localBuffer);\n\n// Download remote file\nconst content = await server.downloadFile(\"/var/www/html/hello.cfm\");\n\n// Move / Rename\nawait server.renameFile(\"/var/www/html/hello.cfm\", \"/var/www/html/index.cfm\");\n\n// Create / Delete directory\nawait server.mkdir(\"/var/www/html/uploads\");\nawait server.rmdir(\"/var/www/html/uploads\");\n\n// Delete file\nawait server.removeFile(\"/var/www/html/index.cfm\");\n```\n\n### Database Operations\n\n```typescript\n// List data sources\nconst dsns = await server.getDsnInfo();\n\n// Get tables in DSN\nconst tables = await server.getTableInfo(\"my_dsn\");\n\n// Get columns in table\nconst columns = await server.getColumnInfo(\"my_dsn\", \"users\");\n\n// Execute SQL query\nconst resultSet = await server.execSql(\"my_dsn\", \"SELECT * FROM users WHERE active = 1\");\nconsole.log(\"Columns:\", resultSet.columns);\nconsole.log(\"Rows:\", resultSet.data);\n```\n\n### Remote Debugger\n\n```typescript\n// Start debugging session\nconst session = await server.debuggerStart();\nconsole.log(\"Debug session ID:\", session.sessionId);\n\n// Set breakpoint\nawait server.debuggerSetBreakpoint(session.sessionId, \"/var/www/html/index.cfm\", 15);\n\n// Stop debugging session\nawait server.debuggerStop(session.sessionId);\n```\n\n---\n\n## API Summary\n\n| Category | Method | Description |\n|---|---|---|\n| **System** | `getCFRoot()` | Get ColdFusion root installation folder |\n| **System** | `ideDefault(version)` | Get CF server info |\n| **Files** | `browseDir(path)` | List directory items |\n| **Files** | `cat(path)` | Read file content |\n| **Files** | `uploadFile(path, content)` | Upload file content |\n| **Files** | `downloadFile(path)` | Download file content |\n| **Files** | `renameFile(oldPath, newPath)` | Move or rename file |\n| **Files** | `removeFile(path)` | Delete remote file |\n| **Files** | `mkdir(path)` | Create remote directory |\n| **Files** | `rmdir(path)` | Delete remote directory |\n| **Database** | `getDsnInfo()` | Enumerate data sources |\n| **Database** | `getTableInfo(dsn)` | Enumerate tables |\n| **Database** | `getColumnInfo(dsn, table)` | Enumerate table columns |\n| **Database** | `execSql(dsn, sql)` | Execute SQL query |\n| **Admin API** | `getCustomTagPaths()` | Fetch custom tag paths |\n| **Admin API** | `getMappings()` | Fetch server mappings |\n\n---\n\n## License\n\n[MIT](LICENSE)\n","readmeFilename":"README.md"}