@ev1lc0rp/n8n-nodes-ninjaone
Version:
Professional NinjaOne RMM integration for n8n with complete ticketing and device management
58 lines (45 loc) • 2.54 kB
Markdown
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Common Development Commands
### Build and Development
- `npm run build` - Clean dist, compile TypeScript, and copy icons
- `npm run dev` - Start TypeScript compiler in watch mode
- `tsc` - Direct TypeScript compilation to dist/
### Code Quality
- `npm run lint` - Run ESLint on nodes, credentials, and package.json
- `npm run lintfix` - Auto-fix ESLint issues
- `npm run format` - Format code with Prettier
### Pre-publish
- `npm run prepublishOnly` - Build and lint with stricter rules (.eslintrc.prepublish.js)
## Project Architecture
This is an n8n community node package providing NinjaOne RMM platform integration. The project follows n8n's community node conventions and implements OAuth2 authentication.
### Key Structure
- **Main entry point**: `dist/nodes/NinjaOne/NinjaOne.node.js` (compiled from `nodes/NinjaOne/NinjaOne.node.ts`)
- **Credentials**: OAuth2 implementation in `credentials/NinjaOneOAuth2Api.credentials.ts`
- **Operations**: Modular operation definitions in `nodes/NinjaOne/operations/` (device.ts, ticket.ts)
- **Icons**: SVG files copied from nodes/ to dist/nodes/ during build via gulpfile.js
### Node Implementation Pattern
- Resources (device, ticket) are defined in separate operation files
- Each operation exports arrays of properties and execution logic
- Main node class imports and combines all operations
- Uses n8n's requestDefaults pattern for OAuth2 authentication
### Authentication Flow
- Primary: OAuth2 Client Credentials Flow (`NinjaOneOAuth2Api`)
- Legacy: HMAC-based authentication (`NinjaOneLegacyApi`) for older endpoints
- Base URL configurable per region (default: https://api.ninjaone.com)
### TypeScript Configuration
- Target: ES2019 with strict mode enabled
- Compiled to CommonJS modules in dist/
- Source maps and declarations generated
- Includes credentials/, nodes/, and package.json
### ESLint Rules
- Uses `eslint-plugin-n8n-nodes-base` with specific rulesets for:
- Community package.json validation
- Credential class conventions
- Node class conventions and parameter validation
- Separate prepublish configuration with stricter rules
### Development Notes
- Icons (SVG/PNG) are automatically copied from source to dist during build
- The `new-node-feature-docs/` directory contains API reference documentation for future features
- Package follows n8n community node naming conventions (@username/n8n-nodes-*)
- Node.js 20.15+ required