@alevnyacow/nzmt 0.3.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/bin/cli.js +70 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# NZMT - Next Zod Modules Toolkit
|
|
2
2
|
|
|
3
|
+
[](https://badge.fury.io/js/@alevnyacow%2Fnzmt)
|
|
4
|
+

|
|
5
|
+

|
|
6
|
+
|
|
3
7
|
## Structure
|
|
4
8
|
|
|
5
9
|
- [Module](#module)
|
package/bin/cli.js
CHANGED
|
@@ -439,7 +439,7 @@ if (command.toLowerCase() === 'store' || command === 's') {
|
|
|
439
439
|
|
|
440
440
|
function generateEntity(upperCase) {
|
|
441
441
|
const folder = config?.paths?.entities ? path.resolve(process.cwd(), config?.paths?.entities, entityName) : path.resolve(process.cwd(), entityName);
|
|
442
|
-
const fields = options.filter(x => x.startsWith('f:')).flatMap(x => x.split(':')[1]).join(',').split(',').map(x => x.split('-'))
|
|
442
|
+
const fields = options.filter(x => x.startsWith('f:')).flatMap(x => x.split(':')[1]).join(',').split(',').map(x => x.split('-')).filter(x => x.length === 2)
|
|
443
443
|
|
|
444
444
|
fs.mkdirSync(folder, { recursive: true })
|
|
445
445
|
|
|
@@ -484,7 +484,7 @@ if (command.toLowerCase() === 'entity' || command === 'e') {
|
|
|
484
484
|
|
|
485
485
|
function generateValueObject(upperCase) {
|
|
486
486
|
const folder = config?.paths?.valueObjects ? path.resolve(process.cwd(), config?.paths?.valueObjects, entityName) : path.resolve(process.cwd(), entityName);
|
|
487
|
-
const fields = options.filter(x => x.startsWith('f:')).flatMap(x => x.split(':')[1]).join(',').split(',').map(x => x.split('-'))
|
|
487
|
+
const fields = options.filter(x => x.startsWith('f:')).flatMap(x => x.split(':')[1]).join(',').split(',').map(x => x.split('-')).filter(x => x.length === 2)
|
|
488
488
|
|
|
489
489
|
fs.mkdirSync(folder, { recursive: true })
|
|
490
490
|
|
|
@@ -525,6 +525,74 @@ if (command.toLowerCase() === 'value-object' || command === 'vo') {
|
|
|
525
525
|
process.exit(0)
|
|
526
526
|
}
|
|
527
527
|
|
|
528
|
+
function generateProvider(lowerCase, upperCase) {
|
|
529
|
+
const folder = config?.paths?.providers ? path.resolve(process.cwd(), config?.paths?.providers, entityName) : path.resolve(process.cwd(), entityName);
|
|
530
|
+
const providerType = options.find(x => x.startsWith('pt:'))?.split(':')?.at(1) ?? 'API'
|
|
531
|
+
|
|
532
|
+
fs.mkdirSync(folder, { recursive: true })
|
|
533
|
+
|
|
534
|
+
// Base
|
|
535
|
+
fs.writeFileSync(path.resolve(folder, `${entityName}.provider.ts`), [
|
|
536
|
+
`import { Module } from '@alevnyacow/nzmt'`,
|
|
537
|
+
'',
|
|
538
|
+
`export const ${lowerCase}ProviderMetadata = {`,
|
|
539
|
+
`\tname: '${upperCase}Provider'`,
|
|
540
|
+
`\tschemas: {}`,
|
|
541
|
+
`} satisfies Module.Metadata`,
|
|
542
|
+
``,
|
|
543
|
+
`type Methods = Module.Methods<typeof ${lowerCase}ProviderMetadata>;`,
|
|
544
|
+
``,
|
|
545
|
+
`export abstract class ${upperCase}Provider {`,
|
|
546
|
+
`\t`,
|
|
547
|
+
`}`
|
|
548
|
+
].join('\n'))
|
|
549
|
+
|
|
550
|
+
// Mock
|
|
551
|
+
fs.writeFileSync(path.resolve(folder, `${entityName}.provider.mock.ts`), [
|
|
552
|
+
`import { ${upperCase}Provider } from './${entityName}.provider'`,
|
|
553
|
+
'',
|
|
554
|
+
`export class ${upperCase}MockProvider extends ${upperCase}Provider {`,
|
|
555
|
+
`\t`,
|
|
556
|
+
`}`
|
|
557
|
+
].join('\n'))
|
|
558
|
+
|
|
559
|
+
// Provider
|
|
560
|
+
fs.writeFileSync(path.resolve(folder, `${entityName}.provider.${providerType.toLowerCase()}.ts`), [
|
|
561
|
+
`import { ${upperCase}Provider } from './${entityName}.provider'`,
|
|
562
|
+
'',
|
|
563
|
+
`export class ${upperCase}${providerType}Provider extends ${upperCase}Provider {`,
|
|
564
|
+
`\t`,
|
|
565
|
+
`}`
|
|
566
|
+
].join('\n'))
|
|
567
|
+
|
|
568
|
+
// Barrel
|
|
569
|
+
fs.writeFileSync(path.resolve(folder, `index.ts`), [
|
|
570
|
+
`export * from './${entityName}.provider'`,
|
|
571
|
+
`export * from './${entityName}.provider.${providerType.toLowerCase()}'`
|
|
572
|
+
].join('\n'))
|
|
573
|
+
|
|
574
|
+
// Update DI
|
|
575
|
+
const diEntriesPath = path.resolve(process.cwd(), config?.paths?.di, 'entries.di.ts')
|
|
576
|
+
|
|
577
|
+
insertBeforeLineInFile(
|
|
578
|
+
diEntriesPath,
|
|
579
|
+
'type DIEntries =',
|
|
580
|
+
`import { ${upperCase}MockProvider, ${upperCase}${providerType}Provider } from '${config?.paths?.providers.replace('./src', '@')}/${entityName}}'\n`
|
|
581
|
+
)
|
|
582
|
+
|
|
583
|
+
insertAfterLineInFile(
|
|
584
|
+
diEntriesPath,
|
|
585
|
+
'// Providers',
|
|
586
|
+
`\t${upperCase}Provider: { test: ${upperCase}MockProvider, prod: ${upperCase}${providerType}Provider, dev: ${upperCase}${providerType}Provider },`,
|
|
587
|
+
)
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
if (command.toLowerCase() === 'provider' || command === 'p') {
|
|
591
|
+
var [lowerCase, upperCase] = camelizeVariants(entityName)
|
|
592
|
+
generateProvider(lowerCase, upperCase)
|
|
593
|
+
process.exit(0)
|
|
594
|
+
}
|
|
595
|
+
|
|
528
596
|
|
|
529
597
|
function generateService(lowerCase, upperCase, withCrud) {
|
|
530
598
|
const folder = config?.paths?.services ? path.resolve(process.cwd(), config?.paths?.services, entityName) : path.resolve(process.cwd(), entityName);
|