UNPKG

gen-jhipster

Version:

Spring Boot + Angular/React/Vue in one handy generator

64 lines (63 loc) 2.45 kB
/** * Copyright 2013-2024 the original author or authors from the JHipster project. * * This file is part of the JHipster project, see https://www.jhipster.tech/ * for more information. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { Faker, base, en } from '@faker-js/faker'; import Randexp from 'randexp'; import { languageToJavaLanguage } from '../../languages/support/index.js'; class RandexpWithFaker extends Randexp { faker; constructor(regexp, flags, faker) { super(regexp, flags); this.max = 5; this.faker = faker; if (this.faker === undefined) { throw new Error('Faker is required'); } // In order to have consistent results with RandExp, the RNG is seeded. this.randInt = (from, to) => faker.number.int({ min: from, max: to }); } } export class FakerWithRandexp extends Faker { createRandexp(regexp, flags) { return new RandexpWithFaker(regexp, flags, this); } } /** * Create a faker instance. * @param nativeLanguage - native language * @returns Faker instance */ export async function createFaker(nativeLanguage = 'en') { nativeLanguage = languageToJavaLanguage(nativeLanguage); let locale; // Faker >=6 doesn't exports locales by itself, it exports a faker instance with the locale. // We need a Faker instance for each entity, to build additional fake instances, use the locale from the exported localized faker instance. // See https://github.com/faker-js/faker/pull/642 try { locale = (await import(`@faker-js/faker`))[nativeLanguage]; } catch { // Faker not implemented for the native language, fallback to en. locale = (await import('@faker-js/faker')).en; } const faker = new FakerWithRandexp({ locale: [locale, base, en], }); faker.createRandexp = (pattern, m) => new RandexpWithFaker(pattern, m, faker); return faker; }