{"_id":"@elchinabilov/nestjs-reorder","_rev":"6-6200dfb1415557c8c26ceba672f3b7b3","name":"@elchinabilov/nestjs-reorder","dist-tags":{"latest":"1.1.1"},"versions":{"1.0.2":{"name":"@elchinabilov/nestjs-reorder","version":"1.0.2","keywords":["nestjs","reorder","npm","package"],"author":{"name":"Elchin Abilov","email":"abilovelchin@gmail.com"},"license":"ISC","_id":"@elchinabilov/nestjs-reorder@1.0.2","maintainers":[{"name":"abilov","email":"abilovelchin@gmail.com"}],"dist":{"shasum":"3f57aa61ab4476201ddb0496af34ef1e227931b6","tarball":"https://registry.npmjs.org/@elchinabilov/nestjs-reorder/-/nestjs-reorder-1.0.2.tgz","fileCount":18,"integrity":"sha512-9PlOuteCCe0BjXNqOLThjCYIYybSK4p3QIpkw6qMVsxOhkgpGUgvzyp3Nqhehb/kF7bTNNace2XdV+gR1/HfWw==","signatures":[{"sig":"MEYCIQDEwYanT4JValciQRIlX5+TX/r2ijHD/pTWewmUXl0mhgIhAKkIgHRz5nsJBkT+cPMJqzhAHqnQARI+oPH4+Yv1uhr/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":394355},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6bce24042e4498ac508d9245cf8293e5e6a3cda5","scripts":{"lint":"eslint \"src/**/*.ts\" --fix","test":"jest","build":"tsc","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","prepublish":"npm run build","test:watch":"jest --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"abilov","email":"abilovelchin@gmail.com"},"_npmVersion":"10.9.3","description":"A NestJS package created with nestjs-packager","directories":{},"_nodeVersion":"22.19.0","dependencies":{"rxjs":"latest","typeorm":"^0.3.27","@nestjs/core":"latest","@nestjs/common":"latest","class-validator":"latest","reflect-metadata":"latest","class-transformer":"latest","@nestjs/platform-express":"latest"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.17.0+sha512.fce8a3dd29a4ed2ec566fb53efbb04d8c44a0f05bc6f24a73046910fb9c3ce7afa35a0980500668fa3573345bd644644fa98338fa168235c80f4aa17aa17fbef","devDependencies":{"jest":"latest","ts-jest":"latest","ts-node":"latest","supertest":"latest","ts-loader":"latest","typescript":"latest","@nestjs/cli":"latest","@types/jest":"latest","@types/node":"latest","@types/express":"latest","tsconfig-paths":"latest","@nestjs/testing":"latest","class-validator":"latest","@types/supertest":"latest","class-transformer":"latest","@nestjs/schematics":"latest","source-map-support":"latest"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-reorder_1.0.2_1763011885797_0.6318893852551264","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@elchinabilov/nestjs-reorder","version":"1.0.3","keywords":["nestjs","reorder","npm","package"],"author":{"name":"Elchin Abilov","email":"abilovelchin@gmail.com"},"license":"ISC","_id":"@elchinabilov/nestjs-reorder@1.0.3","maintainers":[{"name":"abilov","email":"abilovelchin@gmail.com"}],"dist":{"shasum":"fcdc3dbe3afb07d33050b42fa407588c3d154c8a","tarball":"https://registry.npmjs.org/@elchinabilov/nestjs-reorder/-/nestjs-reorder-1.0.3.tgz","fileCount":18,"integrity":"sha512-tH0AMabKDYEktgWMbhdtbvDSZWvDkpxay7yixsJpXs342FXWcpH+svaSiA4O0n5OnC/YNTCKLSKJm3Hp3e/icw==","signatures":[{"sig":"MEQCIETsmxSzGJuLQufxkZeUaSyy24S6Y9fCn10aNNpXj/JfAiA5J4eMul/4SvXjmWeW4tpJfWIMvCqC9PG9ZuRx9TYzHg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":395703},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"abb18e282e10f1e6aefec738e9daaeeb080e535f","scripts":{"lint":"eslint \"src/**/*.ts\" --fix","test":"jest","build":"tsc","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","prepublish":"npm run build","test:watch":"jest --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"abilov","email":"abilovelchin@gmail.com"},"_npmVersion":"10.9.3","description":"A NestJS package created with nestjs-packager","directories":{},"_nodeVersion":"22.19.0","dependencies":{"rxjs":"latest","typeorm":"^0.3.27","@nestjs/core":"latest","@nestjs/common":"latest","class-validator":"latest","reflect-metadata":"latest","class-transformer":"latest","@nestjs/platform-express":"latest"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.17.0+sha512.fce8a3dd29a4ed2ec566fb53efbb04d8c44a0f05bc6f24a73046910fb9c3ce7afa35a0980500668fa3573345bd644644fa98338fa168235c80f4aa17aa17fbef","devDependencies":{"jest":"latest","ts-jest":"latest","ts-node":"latest","supertest":"latest","ts-loader":"latest","typescript":"latest","@nestjs/cli":"latest","@types/jest":"latest","@types/node":"latest","@types/express":"latest","tsconfig-paths":"latest","@nestjs/testing":"latest","class-validator":"latest","@types/supertest":"latest","class-transformer":"latest","@nestjs/schematics":"latest","source-map-support":"latest"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-reorder_1.0.3_1763041640317_0.8756507422565927","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@elchinabilov/nestjs-reorder","version":"1.0.4","keywords":["nestjs","reorder","npm","package"],"author":{"name":"Elchin Abilov","email":"abilovelchin@gmail.com"},"license":"ISC","_id":"@elchinabilov/nestjs-reorder@1.0.4","maintainers":[{"name":"abilov","email":"abilovelchin@gmail.com"}],"dist":{"shasum":"ddd4d3dca0fcb6017c9389bbd5e7da2e3719029d","tarball":"https://registry.npmjs.org/@elchinabilov/nestjs-reorder/-/nestjs-reorder-1.0.4.tgz","fileCount":18,"integrity":"sha512-sidJGABEaDqmtnGfDG6sx8UtmRmyLbNqppSHzc3ZN5saDYKhHjWobHed6czLMN9btquhv84HnQWbzybPp7urJA==","signatures":[{"sig":"MEYCIQDQwmwoig7vUpiOz5afhQpH0KZv8k5OmISpjIebMEiVNgIhAPGg5ZVJr6AHxgZf2SeIoULxaIw/ridholq37g/K1nlA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":393855},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c00327aa910612a12740d9b8137b99987fee8616","scripts":{"lint":"eslint \"src/**/*.ts\" --fix","test":"jest","build":"tsc","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","prepublish":"npm run build","test:watch":"jest --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"abilov","email":"abilovelchin@gmail.com"},"_npmVersion":"10.9.3","description":"A NestJS package created with nestjs-packager","directories":{},"_nodeVersion":"22.19.0","dependencies":{"rxjs":"latest","typeorm":"^0.3.27","@nestjs/core":"latest","@nestjs/common":"latest","class-validator":"latest","reflect-metadata":"latest","class-transformer":"latest","@nestjs/platform-express":"latest"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.17.0+sha512.fce8a3dd29a4ed2ec566fb53efbb04d8c44a0f05bc6f24a73046910fb9c3ce7afa35a0980500668fa3573345bd644644fa98338fa168235c80f4aa17aa17fbef","devDependencies":{"jest":"latest","ts-jest":"latest","ts-node":"latest","supertest":"latest","ts-loader":"latest","typescript":"latest","@nestjs/cli":"latest","@types/jest":"latest","@types/node":"latest","@types/express":"latest","tsconfig-paths":"latest","@nestjs/testing":"latest","class-validator":"latest","@types/supertest":"latest","class-transformer":"latest","@nestjs/schematics":"latest","source-map-support":"latest"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-reorder_1.0.4_1763041877298_0.4886253451907283","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@elchinabilov/nestjs-reorder","version":"1.0.5","keywords":["nestjs","reorder","npm","package"],"author":{"name":"Elchin Abilov","email":"abilovelchin@gmail.com"},"license":"ISC","_id":"@elchinabilov/nestjs-reorder@1.0.5","maintainers":[{"name":"abilov","email":"abilovelchin@gmail.com"}],"dist":{"shasum":"0d9eada801cd5c5961abad6d1a903a26d8b0e034","tarball":"https://registry.npmjs.org/@elchinabilov/nestjs-reorder/-/nestjs-reorder-1.0.5.tgz","fileCount":18,"integrity":"sha512-UtgDU1Z5utlZKb2zIWO3ahc1DcHqjA9nlHxcadkVaYIzrqp6D9CzK1v1irwHS2o93ko5n2x/d7uWKv7OoVp2zQ==","signatures":[{"sig":"MEYCIQCZCSR+YrYyegMowmOBChJoBmJ44r0s9M/XmI7bZxxZjAIhAJXofzvchW+VZbOb4KGDpmfV6EhQlFd+Dt5CGlWc3pK0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":393940},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"12a8bd0961329ac132ceccc610c4a16cab2d712c","scripts":{"lint":"eslint \"src/**/*.ts\" --fix","test":"jest","build":"tsc","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","prepublish":"npm run build","test:watch":"jest --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"abilov","email":"abilovelchin@gmail.com"},"_npmVersion":"10.9.3","description":"A NestJS package created with nestjs-packager","directories":{},"_nodeVersion":"22.19.0","dependencies":{"rxjs":"latest","typeorm":"^0.3.27","@nestjs/core":"latest","@nestjs/common":"latest","class-validator":"latest","reflect-metadata":"latest","class-transformer":"latest","@nestjs/platform-express":"latest"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.17.0+sha512.fce8a3dd29a4ed2ec566fb53efbb04d8c44a0f05bc6f24a73046910fb9c3ce7afa35a0980500668fa3573345bd644644fa98338fa168235c80f4aa17aa17fbef","devDependencies":{"jest":"latest","ts-jest":"latest","ts-node":"latest","supertest":"latest","ts-loader":"latest","typescript":"latest","@nestjs/cli":"latest","@types/jest":"latest","@types/node":"latest","@types/express":"latest","tsconfig-paths":"latest","@nestjs/testing":"latest","class-validator":"latest","@types/supertest":"latest","class-transformer":"latest","@nestjs/schematics":"latest","source-map-support":"latest"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-reorder_1.0.5_1763049950149_0.026264051507638664","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@elchinabilov/nestjs-reorder","version":"1.1.0","keywords":["nestjs","reorder","npm","package"],"author":{"name":"Elchin Abilov","email":"abilovelchin@gmail.com"},"license":"ISC","_id":"@elchinabilov/nestjs-reorder@1.1.0","maintainers":[{"name":"abilov","email":"abilovelchin@gmail.com"}],"dist":{"shasum":"407ab31eed01cb834647c2d30eb9a2ad675abbe4","tarball":"https://registry.npmjs.org/@elchinabilov/nestjs-reorder/-/nestjs-reorder-1.1.0.tgz","fileCount":18,"integrity":"sha512-IE9eqJkxZAl8AlpWtP2f5M57KuUJ7t+/xLUg5uhBPuEjg+HOYDz/SRiay9Vt9QbxPaASubX8X6B6A9ZsITPhHA==","signatures":[{"sig":"MEYCIQCZcbnbsD7OSqCpwDH5h15QzjVpa3vheevc8oNSlsMruAIhALkRYQVE7E/4XJeYebKiRenvi1lVrlxRx2ALJN+8tedN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":393669},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9e2565a93398894e6d6be292da94ccbfa8c0bed3","scripts":{"lint":"eslint \"src/**/*.ts\" --fix","test":"jest","build":"tsc","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","prepublish":"npm run build","test:watch":"jest --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"abilov","email":"abilovelchin@gmail.com"},"_npmVersion":"10.9.3","description":"A NestJS package created with nestjs-packager","directories":{},"_nodeVersion":"22.19.0","dependencies":{"rxjs":"latest","typeorm":"^0.3.27","@nestjs/core":"latest","@nestjs/common":"latest","class-validator":"latest","reflect-metadata":"latest","class-transformer":"latest","@nestjs/platform-express":"latest"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.17.0+sha512.fce8a3dd29a4ed2ec566fb53efbb04d8c44a0f05bc6f24a73046910fb9c3ce7afa35a0980500668fa3573345bd644644fa98338fa168235c80f4aa17aa17fbef","devDependencies":{"jest":"latest","ts-jest":"latest","ts-node":"latest","supertest":"latest","ts-loader":"latest","typescript":"latest","@nestjs/cli":"latest","@types/jest":"latest","@types/node":"latest","@types/express":"latest","tsconfig-paths":"latest","@nestjs/testing":"latest","class-validator":"latest","@types/supertest":"latest","class-transformer":"latest","@nestjs/schematics":"latest","source-map-support":"latest"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-reorder_1.1.0_1767891362918_0.8369348941571801","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"_id":"@elchinabilov/nestjs-reorder@1.1.1","dist":{"shasum":"78fe6d9b4ebc28ef336754241701cf0cb34d2bb8","tarball":"https://registry.npmjs.org/@elchinabilov/nestjs-reorder/-/nestjs-reorder-1.1.1.tgz","fileCount":18,"integrity":"sha512-hMQXNtp6wH9gro99cp1EhUVFBHkXd/rnGYPTxtN5TWa7ljwDmNpXz92Dr92cE/pUOk+xvVKuReIyOKYj0xA+fQ==","signatures":[{"sig":"MEYCIQDJbtM/nWBhrBx73FQBjc1K7mZrXhaxSNmhVDqO9/5NpwIhAPsfErgGuB5Qevk+8zUeLnnYXdkCAoSUHencLrcYk/8M","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDlTO2CwKGs5jj1QbUwU4bW4W/eJNw/H0NzKMS6kR+N5gIhALJz6IELhH4M1e49lw2I1+Md3VM0y4BpPs1txBwcxzae"}],"unpackedSize":394184},"main":"dist/index.js","name":"@elchinabilov/nestjs-reorder","types":"dist/index.d.ts","author":{"name":"Elchin Abilov","email":"abilovelchin@gmail.com"},"engines":{"node":">=18.0.0"},"gitHead":"63b7596dcfe5ac03faed5b1b7cf75d3539fb6026","license":"ISC","scripts":{"lint":"eslint \"src/**/*.ts\" --fix","test":"jest","build":"tsc","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","prepublish":"npm run build","test:watch":"jest --watch","prepublishOnly":"npm run build"},"version":"1.1.1","_npmUser":{"name":"abilov","email":"abilovelchin@gmail.com"},"keywords":["nestjs","reorder","npm","package"],"_npmVersion":"11.7.0","description":"A NestJS package created with nestjs-packager","directories":{},"maintainers":[{"name":"abilov","email":"abilovelchin@gmail.com"}],"_nodeVersion":"22.19.0","dependencies":{"rxjs":"latest","typeorm":"^0.3.27","@nestjs/core":"latest","@nestjs/common":"latest","class-validator":"latest","reflect-metadata":"latest","class-transformer":"latest","@nestjs/platform-express":"latest"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.17.0+sha512.fce8a3dd29a4ed2ec566fb53efbb04d8c44a0f05bc6f24a73046910fb9c3ce7afa35a0980500668fa3573345bd644644fa98338fa168235c80f4aa17aa17fbef","devDependencies":{"jest":"latest","ts-jest":"latest","ts-node":"latest","supertest":"latest","ts-loader":"latest","typescript":"latest","@nestjs/cli":"latest","@types/jest":"latest","@types/node":"latest","@types/express":"latest","tsconfig-paths":"latest","@nestjs/testing":"latest","class-validator":"latest","@types/supertest":"latest","class-transformer":"latest","@nestjs/schematics":"latest","source-map-support":"latest"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nestjs-reorder_1.1.1_1791035589912_0.8264361619768072"}}},"time":{"created":"2025-11-13T05:31:25.679Z","modified":"2026-10-03T13:53:10.212Z","1.0.2":"2025-11-13T05:31:25.973Z","1.0.3":"2025-11-13T13:47:20.524Z","1.0.4":"2025-11-13T13:51:17.523Z","1.0.5":"2025-11-13T16:05:50.406Z","1.1.0":"2026-01-08T16:56:03.060Z","1.1.1":"2026-10-03T13:53:10.016Z"},"author":{"name":"Elchin Abilov","email":"abilovelchin@gmail.com"},"license":"ISC","keywords":["nestjs","reorder","npm","package"],"description":"A NestJS package created with nestjs-packager","maintainers":[{"name":"abilov","email":"abilovelchin@gmail.com"}],"readme":"# @elchinabilov/nestjs-reorder\n\nA NestJS package that provides reorder functionality for TypeORM entities.\n\n## Features\n\n- ✅ Universal reorder functionality\n- ✅ Automatic sortOrder assignment (via subscriber)\n- ✅ Group-based sorting support\n- ✅ Full TypeORM integration\n- ✅ TypeScript support\n\n## Installation\n\n```bash\nnpm install @elchinabilov/nestjs-reorder\n# or\npnpm add @elchinabilov/nestjs-reorder\n# or\nyarn add @elchinabilov/nestjs-reorder\n```\n\n## Requirements\n\n- Node.js >= 18.0.0\n- NestJS\n- TypeORM ^0.3.27\n\n## Usage\n\n### 1. Import the module\n\n```typescript\nimport { Module } from \"@nestjs/common\";\nimport { ReorderModule } from \"@elchinabilov/nestjs-reorder\";\n\n@Module({\n  imports: [ReorderModule.forRoot()],\n})\nexport class AppModule {}\n```\n\n### 2. Define static fields in your entity\n\n```typescript\nimport { Entity, Column, PrimaryGeneratedColumn } from \"typeorm\";\n\n@Entity()\nexport class Task {\n  static reorderGroupField = \"projectId\"; // Group field\n  static reorderOrderField = \"sortOrder\"; // Order field (default: 'sortOrder')\n\n  @PrimaryGeneratedColumn(\"uuid\")\n  id: string;\n\n  @Column()\n  projectId: string;\n\n  @Column({ default: 0 })\n  sortOrder: number;\n\n  @Column()\n  title: string;\n}\n```\n\n### 3. Use in your service\n\n```typescript\nimport { Injectable } from \"@nestjs/common\";\nimport { InjectRepository } from \"@nestjs/typeorm\";\nimport { Repository } from \"typeorm\";\nimport { ReorderService, ReorderDto } from \"@elchinabilov/nestjs-reorder\";\nimport { Task } from \"./task.entity\";\n\n@Injectable()\nexport class TaskService {\n  constructor(\n    @InjectRepository(Task)\n    private readonly taskRepository: Repository<Task>,\n    private readonly reorderService: ReorderService\n  ) {}\n\n  async reorderTask(dto: ReorderDto): Promise<void> {\n    await this.reorderService.reorder(this.taskRepository, dto);\n  }\n}\n```\n\n### 4. Create an endpoint in your controller\n\n```typescript\nimport { Controller, Post, Body } from \"@nestjs/common\";\nimport { ReorderDto } from \"@elchinabilov/nestjs-reorder\";\nimport { TaskService } from \"./task.service\";\n\n@Controller(\"tasks\")\nexport class TaskController {\n  constructor(private readonly taskService: TaskService) {}\n\n  @Post(\"reorder\")\n  async reorder(@Body() dto: ReorderDto) {\n    await this.taskService.reorderTask(dto);\n    return { success: true };\n  }\n}\n```\n\n## API\n\n### ReorderDto\n\n```typescript\n{\n  itemId: string; // ID of the item being moved\n  overId: string; // ID of the item it's being moved over\n}\n```\n\n### ReorderService\n\n#### `reorder<T>(repo: Repository<T>, dto: ReorderDto): Promise<number>`\n\nReorders an item and returns the new sortOrder value.\n\n## Automatic sortOrder\n\nWhen a new entity is created, `ReorderSubscriber` automatically assigns the `sortOrder` value. If `sortOrder` is already set, the subscriber will not modify it.\n\n## Notes\n\n- `reorderGroupField` and `reorderOrderField` static fields must be defined in the entity\n- `reorderGroupField` can be an array (for priority selection)\n- Sorting works with a step of 1000 (STEP)\n- All operations are performed within a transaction\n\n## Author\n\n**Elchin Abilov**\n\n- Email: abilovelchin@gmail.com\n\n## License\n\nISC\n","readmeFilename":"README.md"}