Neurological Phenomenon Multiplexer

    @luxuryescapes/lib-voucher-code
    TypeScript icon, indicating that this package has built-in type declarations

    2.0.0 • Public • Published

    Coupon Code Generator

    Generate unique, hard to guess coupon, voucher codes.

    Use cases: promo codes, loyalty coupons, gift vouchers, in-app purchases

    This library originates from Voucherify.

    Installation

    In Node.js

    Install with npm:

    $ npm install --save voucher-code-generator
    

    Include with require:

    var voucher_codes = require('voucher-code-generator');
    

    In a browser

    <script src="voucher_codes.js"></script>
    

    Usage

    Generate 5 codes, each 8 characters long:

    voucher_codes.generate({
        length: 8,
        count: 5
    });
    

    Sample result: ["FR6bwx1q", "ByamOdWV", "7roFwfQs", "rmWlwvll", "pgih5eAB"]

    Charset

    Default charset is alphanumeric (numbers and letters). However, you can specify your own charset:

    voucher_codes.generate({
        length: 6,
        count: 3,
        charset: "0123456789"
    });
    

    Sample result: ["386525", "676442", "019075"]

    You can also use one of the predefined charsets by calling voucher_codes.charset(name).

    name charset
    "numbers" "0123456789"
    "alphabetic" "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    "alphanumeric" "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

    For example:

    voucher_codes.generate({
        length: 5,
        count: 4,
        charset: voucher_codes.charset("alphabetic")
    });
    

    Result: ["odghy", "kZEYc", "eOTCl", "wVCzD"]

    Prefix and Postfix

    You can optionally surround each generated code with a prefix and/or postfix.

    For instance:

    voucher_codes.generate({
        prefix: "promo-",
        postfix: "-2015"
    });
    

    Result: ["promo-WZ4x1t3U-2015"]

    Pattern

    Codes may follow a specified pattern. Use hash (#) as a placeholder for random characters. Notice that if pattern is specified then length is ignored.

    Example:

    voucher_codes.generate({
        pattern: "##-###-##",
    });
    

    Result: ["P7-ofW-Ka"]

    Infeasible configs

    There exist some configs that are not feasible. For example it's not possible to generate 1000 codes if you want your codes to be 2 characters long and consisting only of numbers. Voucher code generator detects such cases and throws an error "Not possible to generate requested number of codes.".

    try {
        voucher_codes.generate({
            count: 1000,
            length: 2,
            charset: "0123456789"
        })
    catch (e) {
        console.log("Sorry, not possible.");
    }
    

    Config reference

    attribute default value description
    length 8 Number of characters in a generated code (excluding prefix and postfix)
    count 1 Number of codes generated.
    charset alphanumeric Characters that can appear in the code.
    prefix "" A text appended before the code.
    postfix "" A text appended after the code.
    pattern "########" A pattern for codes where hashes (#) will be replaced with random characters.

    Testing

    Install dependencies:

    npm install
    

    Run tests:

    npm run test
    

    License

    Code released under the MIT license.

    Keywords

    none

    Install

    npm i @luxuryescapes/lib-voucher-code

    DownloadsWeekly Downloads

    10

    Version

    2.0.0

    License

    MIT

    Unpacked Size

    11 kB

    Total Files

    9

    Last publish

    Collaborators

    • aarontoomey-le
    • sergio.costa.luxuryescapes
    • mzilio-lux
    • jeanbiezus
    • francesca-dellanno
    • tiagotraca
    • michael-reid-le
    • matthewdelaneyatluxuryescapes
    • ricardobalbinot
    • luke-chadwick-le
    • maico-dalponte-le
    • callmekev
    • lee-borkman-le
    • semeer-acheerithodi-le
    • roman-yakobnyuk-le
    • krishanii12
    • deepakini
    • sahil-sharma-le
    • andrey-tryapitsin-le
    • quan.tang
    • william-li-le
    • alexander.yakovenko
    • greg-cumming-le
    • anton-fiveiskiy-le
    • jerry.huang-le
    • dan-wanigasekera-le
    • shrabanee.mishra
    • will-cullen-le
    • adriano-luxex
    • stanislav.davydenko
    • viniciusluxury
    • henrique.aron
    • dunedayl
    • arminmon-le
    • roshinlux
    • udarab-le
    • rufus_post_le
    • kanishka-mw
    • mdluxuryescapes
    • mattswansonlux
    • cleberricardi
    • felipefeal.lux
    • mukeshbishnoi
    • tracymu
    • chris.nguyen.lux
    • marhalpert
    • reb2020
    • zediah
    • sonyque
    • joshuacullenlux
    • shawn-cx-li
    • colins44
    • diegogadens
    • felixivanov
    • joshua.paling.le
    • operations.luxgroup
    • sergey.dyachok
    • eddiemcleanlux
    • robert.harris.lux
    • manojlux
    • kostya-luxuryescapes
    • nizhuluxlux
    • eugene.tareev
    • alexb.pi
    • salman971
    • kaustuva
    • guilherme.guimaraes
    • luizcarraro
    • ryan.tian
    • bevhatzl
    • le_tyang
    • richardbiddle
    • henryshen-le
    • sameera.chandrasena.luxuryescapes
    • michael-malarchuk
    • nuwandarshika
    • lasanthalakmal93
    • jamesly
    • mlaiprasert
    • jamesz96