Skip to content

split csv

awekrx edited this page May 29, 2026 · 1 revision

split-csv

Import

import { splitCsv } from '@dev-suite/decorators/split-csv'

Category

  • parameter

Use Case

Split CSV parameter into normalized array.

Replaces

  • Inline `split(
  • )` + trim/filter code

Example 1

Without decorator

class SegmentService {
  add(tagsCsv: string) {
    const tags = tagsCsv.split(',').map((t) => t.trim()).filter(Boolean);
    return this.repo.add(tags);
  }
}

With decorator

import { splitCsv } from '@dev-suite/decorators/split-csv';

class SegmentService {
  add(@splitCsv({ trimItems: true, filterEmpty: true }) tagsCsv: string[]) {
    return this.repo.add(tagsCsv);
  }
}

Why better

  • Centralizes cross-cutting behavior.
  • Method/class/property code stays focused on domain logic.

Example 2

Without decorator

class NotifyService {
  send(recipientsCsv: string) {
    const recipients = recipientsCsv.split(';').map((v) => v.trim()).filter(Boolean);
    return this.mail.sendMany(recipients);
  }
}

With decorator

import { splitCsv } from '@dev-suite/decorators/split-csv';

class NotifyService {
  send(@splitCsv({ separator: ';', trimItems: true, filterEmpty: true }) recipientsCsv: string[]) {
    return this.mail.sendMany(recipientsCsv);
  }
}

Why better

  • Second scenario reuses same policy without duplication.
  • Behavior is more consistent and easier to audit.

Clone this wiki locally