From 3f991ea9cabc825837656e546cfd0d125d127fa0 Mon Sep 17 00:00:00 2001 From: Shinigami92 Date: Sat, 15 Jan 2022 13:13:01 +0100 Subject: [PATCH] feat: support tree-shaking BREAKING CHANGE: importing of faker changes --- build/gulp-tasks/browser.js | 31 ++++---- .../node/generateMultiLevelMultiLocaleJSON.js | 70 +++++++++++-------- examples/node/generateSet.js | 27 ++++--- examples/node/generators.js | 9 +-- examples/node/minimal-usage.js | 14 ++-- examples/node/unique-values.js | 9 ++- index.d.ts | 3 - index.js | 5 -- index.ts | 4 -- package.json | 2 +- src/index.ts | 6 +- test/address.unit.js | 2 +- test/all.functional.js | 2 +- test/animal.unit.js | 2 +- test/commerce.unit.js | 6 +- test/company.unit.js | 2 +- test/database.unit.js | 2 +- test/datatype.unit.js | 2 +- test/date.unit.js | 2 +- test/fake.unit.js | 2 +- test/finance.unit.js | 2 +- test/finance_iban.unit.js | 2 +- test/git.unit.js | 2 +- test/helpers.unit.js | 2 +- test/image.unit.js | 2 +- test/internet.unit.js | 2 +- test/locales.unit.js | 2 +- test/lorem.unit.js | 4 +- test/music.unit.js | 2 +- test/name.unit.js | 2 +- test/phone_number.unit.js | 2 +- test/random.unit.js | 2 +- test/support/function-helpers.js | 2 +- test/system.unit.js | 2 +- test/time.unit.js | 2 +- test/unique.unit.js | 2 +- test/vehicle.unit.js | 2 +- test/word.unit.js | 2 +- 38 files changed, 120 insertions(+), 120 deletions(-) delete mode 100644 index.d.ts delete mode 100644 index.js delete mode 100644 index.ts diff --git a/build/gulp-tasks/browser.js b/build/gulp-tasks/browser.js index fb903cabf77..bace86172f0 100644 --- a/build/gulp-tasks/browser.js +++ b/build/gulp-tasks/browser.js @@ -6,30 +6,29 @@ */ const browserify = require('browserify'); -const source = require('vinyl-source-stream'); +const source = require('vinyl-source-stream'); const buffer = require('vinyl-buffer'); const uglify = require('gulp-uglify'); const rename = require('gulp-rename'); const { src, dest } = require('gulp'); const files = { - jsMain: './index.js', - jsOutput: 'faker.js' -} + jsMain: './lib/index.js', + jsOutput: 'faker.js', +}; -module.exports = function browser () { +module.exports = function browser() { return browserify(files.jsMain, { standalone: 'faker', - debug: true + debug: true, }) - .bundle() - .pipe(source(files.jsOutput)) - .pipe(buffer()) - .pipe(dest("examples/browser/js")) - .pipe(dest('dist/')) - .pipe(rename({ extname: ".min.js" })) - .pipe(uglify()) - .pipe(dest("examples/browser/js")) - .pipe(dest('dist/')); + .bundle() + .pipe(source(files.jsOutput)) + .pipe(buffer()) + .pipe(dest('examples/browser/js')) + .pipe(dest('dist/')) + .pipe(rename({ extname: '.min.js' })) + .pipe(uglify()) + .pipe(dest('examples/browser/js')) + .pipe(dest('dist/')); }; - diff --git a/examples/node/generateMultiLevelMultiLocaleJSON.js b/examples/node/generateMultiLevelMultiLocaleJSON.js index b4a067658d9..0603ad6b0fd 100644 --- a/examples/node/generateMultiLevelMultiLocaleJSON.js +++ b/examples/node/generateMultiLevelMultiLocaleJSON.js @@ -1,31 +1,39 @@ -// This example shows the generation of a multilevel object and JSON document using various faker.js features -// including name, address, company, date and commerce namespaces, moustache expressions and random element production -// Using the helper function arr, randomly sized collections of elements are produced in the document. - -var faker = require('../../index'); -var fs = require('fs'); -// produce array with random number of empty elements -const arr = (maxNumberOfElements) => new Array(faker.datatype.number({min: 1, max: maxNumberOfElements})).fill() - -const locales = ["nl","es","de","fr","en_AU"] -const company = - { "name" : faker.company.companyName() - , "country" : faker.address.country() - , "departments" : arr(8).map(() => { faker.locale = faker.random.arrayElement(locales) - return { "name" : faker.commerce.department() - , "location" : faker.fake("{{address.city}} ({{address.country}})") - , "employees": arr(20).map(() => { - return { "name" : faker.fake("{{name.firstName}} {{name.lastName}}") - , "job" : faker.name.jobTitle() - , "hiredate" : faker.date.past(12).toISOString().split('T')[0] - , "salary" : faker.datatype.number(700, 9000) - } - }) - } - }) - } - - console.log(JSON.stringify(company)) - fs.writeFile(__dirname + '/companyDataSet.json', JSON.stringify(company), function() { - console.log("dataSet generated successfully!"); - }); \ No newline at end of file +// This example shows the generation of a multilevel object and JSON document using various faker.js features +// including name, address, company, date and commerce namespaces, moustache expressions and random element production +// Using the helper function arr, randomly sized collections of elements are produced in the document. + +var faker = require('../../lib').faker; +var fs = require('fs'); +// produce array with random number of empty elements +const arr = (maxNumberOfElements) => + new Array(faker.datatype.number({ min: 1, max: maxNumberOfElements })).fill(); + +const locales = ['nl', 'es', 'de', 'fr', 'en_AU']; +const company = { + name: faker.company.companyName(), + country: faker.address.country(), + departments: arr(8).map(() => { + faker.locale = faker.random.arrayElement(locales); + return { + name: faker.commerce.department(), + location: faker.fake('{{address.city}} ({{address.country}})'), + employees: arr(20).map(() => { + return { + name: faker.fake('{{name.firstName}} {{name.lastName}}'), + job: faker.name.jobTitle(), + hiredate: faker.date.past(12).toISOString().split('T')[0], + salary: faker.datatype.number(700, 9000), + }; + }), + }; + }), +}; + +console.log(JSON.stringify(company)); +fs.writeFile( + __dirname + '/companyDataSet.json', + JSON.stringify(company), + function () { + console.log('dataSet generated successfully!'); + } +); diff --git a/examples/node/generateSet.js b/examples/node/generateSet.js index bd0be031ad9..b690cd7c423 100644 --- a/examples/node/generateSet.js +++ b/examples/node/generateSet.js @@ -1,19 +1,26 @@ var fs = require('fs'); -var faker = require('../../index'); - +var faker = require('../../lib').faker; // generate dataSet as example -fs.writeFile(__dirname + '/dataSet.json', JSON.stringify(faker.helpers.userCard()), function() { - console.log("dataSet generated successfully!"); -}); +fs.writeFile( + __dirname + '/dataSet.json', + JSON.stringify(faker.helpers.userCard()), + function () { + console.log('dataSet generated successfully!'); + } +); // generate bigDataSet as example var bigSet = []; -for(var i = 20; i >= 0; i--){ +for (var i = 20; i >= 0; i--) { bigSet.push(faker.helpers.userCard()); -}; +} -fs.writeFile(__dirname + '/bigDataSet.json', JSON.stringify(bigSet), function() { - console.log("bigDataSet generated successfully!"); -}); +fs.writeFile( + __dirname + '/bigDataSet.json', + JSON.stringify(bigSet), + function () { + console.log('bigDataSet generated successfully!'); + } +); diff --git a/examples/node/generators.js b/examples/node/generators.js index 03c991fedc0..d6c70a0c623 100644 --- a/examples/node/generators.js +++ b/examples/node/generators.js @@ -1,14 +1,11 @@ -var faker = require('../../index'); +var faker = require('../../lib').faker; -faker.locale = "en"; +faker.locale = 'en'; console.log(faker.fake('{{random.uuid}}, {{name.firstName}} {{name.suffix}}')); - return; - console.log(faker.fake('{{finance.currencyName}} - {{finance.amount}}')); - -console.log(faker.fake('{{name.firstName}} {{name.lastName}}')); \ No newline at end of file +console.log(faker.fake('{{name.firstName}} {{name.lastName}}')); diff --git a/examples/node/minimal-usage.js b/examples/node/minimal-usage.js index 9feeb8e99d6..e335abb0996 100755 --- a/examples/node/minimal-usage.js +++ b/examples/node/minimal-usage.js @@ -1,17 +1,17 @@ #!/usr/bin/env node -var faker = require('../../index'); -faker.locale = "fi"; +var faker = require('../../lib').faker; +faker.locale = 'fi'; //console.log(faker.lorem.sentences()) -console.log(faker.name.findName()) +console.log(faker.name.findName()); return; //console.log(faker.address) -console.log(faker.internet.email()) -console.log(faker.date.recent()) +console.log(faker.internet.email()); +console.log(faker.date.recent()); console.log(faker.helpers.contextualCard()); -faker.locale = "uk"; +faker.locale = 'uk'; -console.log(faker.helpers.contextualCard()); \ No newline at end of file +console.log(faker.helpers.contextualCard()); diff --git a/examples/node/unique-values.js b/examples/node/unique-values.js index 3c346612190..bdbf5edff68 100644 --- a/examples/node/unique-values.js +++ b/examples/node/unique-values.js @@ -1,19 +1,18 @@ -var faker = require('../../index'); +var faker = require('../../lib').faker; var emails = {}; var conflicts = 0; // emails estimated: 1,055,881 // full names estimated: 1,185,139 for (var i = 0; i < 100000; i++) { - // call function with no arguments var email = faker.unique(faker.internet.email); // or with function arguments as argument array - // var email = faker.unique(faker.internet.email, [null, null, 'marak.com']); + // var email = faker.unique(faker.internet.email, [null, null, 'marak.com']); // or with custom options for maxTime as milliseconds or maxRetries - // var email = faker.unique(faker.internet.email, [null, null, 'marak.com'], { maxRetries: 1, maxTime: 50 }); + // var email = faker.unique(faker.internet.email, [null, null, 'marak.com'], { maxRetries: 1, maxTime: 50 }); if (typeof emails[email] === 'undefined') { // found a unique new item @@ -26,4 +25,4 @@ for (var i = 0; i < 100000; i++) { console.log('total conflicts', conflicts); // should be zero using faker.unique() console.log('total uniques generated', Object.keys(emails).length); -// console.log(emails); \ No newline at end of file +// console.log(emails); diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index 9a883c7e9e7..00000000000 --- a/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Faker } from './lib'; -declare const faker: Faker; -export = faker; diff --git a/index.js b/index.js deleted file mode 100644 index 524ef7da0a7..00000000000 --- a/index.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict'; -// since we are requiring the top level of faker, load all locales by default -var Faker = require('./lib'); -var faker = new Faker({ locales: require('./lib/locales') }); -module.exports = faker; diff --git a/index.ts b/index.ts deleted file mode 100644 index fd90f2b270d..00000000000 --- a/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -// since we are requiring the top level of faker, load all locales by default -import { Faker } from './lib'; -const faker: Faker = new Faker({ locales: require('./lib/locales') }); -export = faker; diff --git a/package.json b/package.json index bab2f3f2e9d..7e4b90ef6d3 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "url": "https://github.com/faker-js/faker.git" }, "license": "MIT", - "main": "index.js", + "main": "lib/index.js", "scripts": { "browser": "gulp browser", "build": "tsc", diff --git a/src/index.ts b/src/index.ts index d864155cf83..38ea6cfa43c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -271,5 +271,7 @@ export class Faker { } } -export default Faker; -module.exports = Faker; +// since we are requiring the top level of faker, load all locales by default +export const faker: Faker = new Faker({ + locales: require('./locales'), +}); diff --git a/test/address.unit.js b/test/address.unit.js index 93582e8fd73..95334a61025 100644 --- a/test/address.unit.js +++ b/test/address.unit.js @@ -1,7 +1,7 @@ if (typeof module !== 'undefined') { var assert = require('assert'); var sinon = require('sinon'); - var faker = require('../index'); + var faker = require('../lib').faker; } describe('address.js', function () { diff --git a/test/all.functional.js b/test/all.functional.js index 2c42790d397..36ddad42c21 100644 --- a/test/all.functional.js +++ b/test/all.functional.js @@ -1,7 +1,7 @@ if (typeof module !== 'undefined') { var assert = require('assert'); var sinon = require('sinon'); - var faker = require('../index'); + var faker = require('../lib').faker; } var functionalHelpers = require('./support/function-helpers.js'); diff --git a/test/animal.unit.js b/test/animal.unit.js index 14da123bdf9..17d7aa8a910 100644 --- a/test/animal.unit.js +++ b/test/animal.unit.js @@ -1,7 +1,7 @@ if (typeof module !== 'undefined') { var assert = require('assert'); var sinon = require('sinon'); - var faker = require('../index'); + var faker = require('../lib').faker; } describe('animal.js', function () { diff --git a/test/commerce.unit.js b/test/commerce.unit.js index fd065a3a1dd..5df8d400644 100644 --- a/test/commerce.unit.js +++ b/test/commerce.unit.js @@ -1,7 +1,7 @@ if (typeof module !== 'undefined') { - var assert = require('assert'), - sinon = require('sinon'), - faker = require('../index'); + var assert = require('assert'); + var sinon = require('sinon'); + var faker = require('../lib').faker; } describe('commerce.js', function () { diff --git a/test/company.unit.js b/test/company.unit.js index 16147dea40e..eccadb9f4b1 100644 --- a/test/company.unit.js +++ b/test/company.unit.js @@ -1,7 +1,7 @@ if (typeof module !== 'undefined') { var assert = require('assert'); var sinon = require('sinon'); - var faker = require('../index'); + var faker = require('../lib').faker; } describe('company.js', function () { diff --git a/test/database.unit.js b/test/database.unit.js index 48321d3f966..78420fcb4f9 100644 --- a/test/database.unit.js +++ b/test/database.unit.js @@ -1,7 +1,7 @@ if (typeof module !== 'undefined') { var assert = require('assert'); var sinon = require('sinon'); - var faker = require('../index'); + var faker = require('../lib').faker; } describe('database.js', function () { diff --git a/test/datatype.unit.js b/test/datatype.unit.js index a48f3141fec..3efa6b39da3 100644 --- a/test/datatype.unit.js +++ b/test/datatype.unit.js @@ -2,7 +2,7 @@ if (typeof module !== 'undefined') { var assert = require('assert'); var sinon = require('sinon'); var _ = require('lodash'); - var faker = require('../index'); + var faker = require('../lib').faker; var mersenne = require('../vendor/mersenne'); } diff --git a/test/date.unit.js b/test/date.unit.js index 9a014e288ed..88bbcac38ad 100644 --- a/test/date.unit.js +++ b/test/date.unit.js @@ -1,7 +1,7 @@ if (typeof module !== 'undefined') { var assert = require('assert'); var sinon = require('sinon'); - var faker = require('../index'); + var faker = require('../lib').faker; } describe('date.js', function () { diff --git a/test/fake.unit.js b/test/fake.unit.js index 65ea1c7c7ad..75741e61346 100644 --- a/test/fake.unit.js +++ b/test/fake.unit.js @@ -1,7 +1,7 @@ if (typeof module !== 'undefined') { var assert = require('assert'); var sinon = require('sinon'); - var faker = require('../index'); + var faker = require('../lib').faker; } describe('fake.js', function () { diff --git a/test/finance.unit.js b/test/finance.unit.js index f1ae94a2041..117a3a809f8 100644 --- a/test/finance.unit.js +++ b/test/finance.unit.js @@ -1,7 +1,7 @@ if (typeof module !== 'undefined') { var assert = require('assert'); var sinon = require('sinon'); - var faker = require('../index'); + var faker = require('../lib').faker; } faker.seed(1234); diff --git a/test/finance_iban.unit.js b/test/finance_iban.unit.js index 76979d52d23..df3141eda88 100644 --- a/test/finance_iban.unit.js +++ b/test/finance_iban.unit.js @@ -1,6 +1,6 @@ if (typeof module !== 'undefined') { var assert = require('assert'); - var faker = require('../index'); + var faker = require('../lib').faker; } function getAnIbanByCountry(countryCode) { diff --git a/test/git.unit.js b/test/git.unit.js index ac3cd82843b..e5603befdfb 100644 --- a/test/git.unit.js +++ b/test/git.unit.js @@ -1,7 +1,7 @@ if (typeof module !== 'undefined') { var assert = require('assert'); var sinon = require('sinon'); - var faker = require('../index'); + var faker = require('../lib').faker; } describe('git.js', function () { diff --git a/test/helpers.unit.js b/test/helpers.unit.js index 47bae5bb83b..b25daa224a1 100644 --- a/test/helpers.unit.js +++ b/test/helpers.unit.js @@ -1,7 +1,7 @@ if (typeof module !== 'undefined') { var assert = require('assert'); var sinon = require('sinon'); - var faker = require('../index'); + var faker = require('../lib').faker; } describe('helpers.js', function () { diff --git a/test/image.unit.js b/test/image.unit.js index 0c43a98a395..46678db8cb4 100644 --- a/test/image.unit.js +++ b/test/image.unit.js @@ -1,7 +1,7 @@ if (typeof module !== 'undefined') { var assert = require('assert'); var sinon = require('sinon'); - var faker = require('../index'); + var faker = require('../lib').faker; } describe('image.js', function () { diff --git a/test/internet.unit.js b/test/internet.unit.js index a73699f1f86..12333067dbb 100644 --- a/test/internet.unit.js +++ b/test/internet.unit.js @@ -1,7 +1,7 @@ if (typeof module !== 'undefined') { var assert = require('assert'); var sinon = require('sinon'); - var faker = require('../index'); + var faker = require('../lib').faker; } describe('internet.js', function () { diff --git a/test/locales.unit.js b/test/locales.unit.js index c107d1685bc..d81386fc6d4 100644 --- a/test/locales.unit.js +++ b/test/locales.unit.js @@ -1,7 +1,7 @@ if (typeof module !== 'undefined') { var assert = require('assert'); var sinon = require('sinon'); - var faker = require('../index'); + var faker = require('../lib').faker; } // TODO: make some tests for getting / setting locales diff --git a/test/lorem.unit.js b/test/lorem.unit.js index d04d8d29926..e3c9f0ef587 100644 --- a/test/lorem.unit.js +++ b/test/lorem.unit.js @@ -1,7 +1,7 @@ if (typeof module !== 'undefined') { var assert = require('assert'); var sinon = require('sinon'); - var faker = require('../index'); + var faker = require('../lib').faker; } describe('lorem.js', function () { @@ -123,7 +123,7 @@ describe('lorem.js', function () { assert.ok(typeof sentence === 'string'); var parts = sentence.split(' '); assert.strictEqual(parts.length, 14); // requested 10 plus stubbed 4. - assert.ok(faker.random.number.calledWith(4)); // random.number should be called with the 'range' we passed. + assert.ok(faker.random.number.calledWith(4)); // random.number should be called with the 'range' we passed. assert.ok(faker.lorem.words.calledWith(14)); faker.lorem.words.restore(); diff --git a/test/music.unit.js b/test/music.unit.js index 2a947c00173..e7d1d97bb6b 100644 --- a/test/music.unit.js +++ b/test/music.unit.js @@ -1,7 +1,7 @@ if (typeof module !== 'undefined') { var assert = require('assert'); var sinon = require('sinon'); - var faker = require('../index'); + var faker = require('../lib').faker; } describe('music.js', function () { diff --git a/test/name.unit.js b/test/name.unit.js index 529ea7db37b..040cac47727 100644 --- a/test/name.unit.js +++ b/test/name.unit.js @@ -1,7 +1,7 @@ if (typeof module !== 'undefined') { var assert = require('assert'); var sinon = require('sinon'); - var faker = require('../index'); + var faker = require('../lib').faker; } function assertInArray(value, array) { diff --git a/test/phone_number.unit.js b/test/phone_number.unit.js index cfafdc5f21b..7cb3af41525 100644 --- a/test/phone_number.unit.js +++ b/test/phone_number.unit.js @@ -1,7 +1,7 @@ if (typeof module !== 'undefined') { var assert = require('assert'); var sinon = require('sinon'); - var faker = require('../index'); + var faker = require('../lib').faker; } describe('phone_number.js', function () { diff --git a/test/random.unit.js b/test/random.unit.js index c6312025b5a..c57a8dbcdd4 100644 --- a/test/random.unit.js +++ b/test/random.unit.js @@ -2,7 +2,7 @@ if (typeof module !== 'undefined') { var assert = require('assert'); var sinon = require('sinon'); var _ = require('lodash'); - var faker = require('../index'); + var faker = require('../lib').faker; var mersenne = new (require('../lib/mersenne').Mersenne)(); } diff --git a/test/support/function-helpers.js b/test/support/function-helpers.js index 0e2e4d3955a..f8dfe68e193 100644 --- a/test/support/function-helpers.js +++ b/test/support/function-helpers.js @@ -1,7 +1,7 @@ if (typeof module !== 'undefined') { var assert = require('assert'); var sinon = require('sinon'); - var faker = require('../../index'); + var faker = require('../../lib').faker; } var functionHelpers = {}; diff --git a/test/system.unit.js b/test/system.unit.js index 388b11da74f..ee279750596 100644 --- a/test/system.unit.js +++ b/test/system.unit.js @@ -1,7 +1,7 @@ if (typeof module !== 'undefined') { var assert = require('assert'); var sinon = require('sinon'); - var faker = require('../index'); + var faker = require('../lib').faker; } describe('system.js', function () { diff --git a/test/time.unit.js b/test/time.unit.js index 02f2add8883..3c4a0650dac 100644 --- a/test/time.unit.js +++ b/test/time.unit.js @@ -1,7 +1,7 @@ if (typeof module !== 'undefined') { var assert = require('assert'); var sinon = require('sinon'); - var faker = require('../index'); + var faker = require('../lib').faker; } faker.seed(1234); diff --git a/test/unique.unit.js b/test/unique.unit.js index 35531d422b1..d500243eb9c 100644 --- a/test/unique.unit.js +++ b/test/unique.unit.js @@ -1,7 +1,7 @@ if (typeof module !== 'undefined') { var assert = require('assert'); var sinon = require('sinon'); - var faker = require('../index'); + var faker = require('../lib').faker; } describe('unique.js', function () { diff --git a/test/vehicle.unit.js b/test/vehicle.unit.js index dff7f465220..8a065e6860d 100644 --- a/test/vehicle.unit.js +++ b/test/vehicle.unit.js @@ -1,7 +1,7 @@ if (typeof module !== 'undefined') { var assert = require('assert'); var sinon = require('sinon'); - var faker = require('../index'); + var faker = require('../lib').faker; } describe('vehicle.js', function () { diff --git a/test/word.unit.js b/test/word.unit.js index 7f8a80a8214..9dc4755cab9 100644 --- a/test/word.unit.js +++ b/test/word.unit.js @@ -1,6 +1,6 @@ if (typeof module !== 'undefined') { var assert = require('assert'); - var faker = require('../index'); + var faker = require('../lib').faker; } describe('word.js', function () {