@famgia/omnify 0.12.8 → 1.0.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.
Files changed (78) hide show
  1. package/README.md +68 -102
  2. package/dist/index.cjs +101 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.cts +4 -0
  5. package/dist/index.d.ts +4 -7
  6. package/dist/index.js +78 -22
  7. package/dist/index.js.map +1 -1
  8. package/package.json +34 -65
  9. package/CHANGELOG.md +0 -129
  10. package/dist/__tests__/generators/contextGenerator.test.d.ts +0 -2
  11. package/dist/__tests__/generators/contextGenerator.test.d.ts.map +0 -1
  12. package/dist/__tests__/generators/contextGenerator.test.js +0 -109
  13. package/dist/__tests__/generators/contextGenerator.test.js.map +0 -1
  14. package/dist/__tests__/generators/enumGenerator.test.d.ts +0 -2
  15. package/dist/__tests__/generators/enumGenerator.test.d.ts.map +0 -1
  16. package/dist/__tests__/generators/enumGenerator.test.js +0 -151
  17. package/dist/__tests__/generators/enumGenerator.test.js.map +0 -1
  18. package/dist/__tests__/generators/modelGenerator.test.d.ts +0 -2
  19. package/dist/__tests__/generators/modelGenerator.test.d.ts.map +0 -1
  20. package/dist/__tests__/generators/modelGenerator.test.js +0 -329
  21. package/dist/__tests__/generators/modelGenerator.test.js.map +0 -1
  22. package/dist/__tests__/utils/pascalCase.test.d.ts +0 -1
  23. package/dist/__tests__/utils/pascalCase.test.d.ts.map +0 -1
  24. package/dist/__tests__/utils/pascalCase.test.js +0 -75
  25. package/dist/__tests__/utils/pascalCase.test.js.map +0 -1
  26. package/dist/__tests__/utils/typeMapper.test.d.ts +0 -2
  27. package/dist/__tests__/utils/typeMapper.test.d.ts.map +0 -1
  28. package/dist/__tests__/utils/typeMapper.test.js +0 -41
  29. package/dist/__tests__/utils/typeMapper.test.js.map +0 -1
  30. package/dist/cli.d.ts +0 -3
  31. package/dist/cli.d.ts.map +0 -1
  32. package/dist/cli.js +0 -248
  33. package/dist/cli.js.map +0 -1
  34. package/dist/generators/commonTypesGenerator.d.ts +0 -5
  35. package/dist/generators/commonTypesGenerator.d.ts.map +0 -1
  36. package/dist/generators/commonTypesGenerator.js +0 -37
  37. package/dist/generators/commonTypesGenerator.js.map +0 -1
  38. package/dist/generators/contextGenerator.d.ts +0 -3
  39. package/dist/generators/contextGenerator.d.ts.map +0 -1
  40. package/dist/generators/contextGenerator.js +0 -248
  41. package/dist/generators/contextGenerator.js.map +0 -1
  42. package/dist/generators/enumGenerator.d.ts +0 -13
  43. package/dist/generators/enumGenerator.d.ts.map +0 -1
  44. package/dist/generators/enumGenerator.js +0 -83
  45. package/dist/generators/enumGenerator.js.map +0 -1
  46. package/dist/generators/hooksGenerator.d.ts +0 -4
  47. package/dist/generators/hooksGenerator.d.ts.map +0 -1
  48. package/dist/generators/hooksGenerator.js +0 -265
  49. package/dist/generators/hooksGenerator.js.map +0 -1
  50. package/dist/generators/modelGenerator.d.ts +0 -13
  51. package/dist/generators/modelGenerator.d.ts.map +0 -1
  52. package/dist/generators/modelGenerator.js +0 -208
  53. package/dist/generators/modelGenerator.js.map +0 -1
  54. package/dist/index.d.ts.map +0 -1
  55. package/dist/runtime/hooks/useFormSubmit.d.ts +0 -36
  56. package/dist/runtime/hooks/useFormSubmit.d.ts.map +0 -1
  57. package/dist/runtime/hooks/useFormSubmit.js +0 -86
  58. package/dist/runtime/hooks/useFormSubmit.js.map +0 -1
  59. package/dist/runtime/index.d.ts +0 -5
  60. package/dist/runtime/index.d.ts.map +0 -1
  61. package/dist/runtime/index.js +0 -21
  62. package/dist/runtime/index.js.map +0 -1
  63. package/dist/runtime/lib/axios.d.ts +0 -7
  64. package/dist/runtime/lib/axios.d.ts.map +0 -1
  65. package/dist/runtime/lib/axios.js +0 -54
  66. package/dist/runtime/lib/axios.js.map +0 -1
  67. package/dist/runtime/lib/validation.d.ts +0 -50
  68. package/dist/runtime/lib/validation.d.ts.map +0 -1
  69. package/dist/runtime/lib/validation.js +0 -85
  70. package/dist/runtime/lib/validation.js.map +0 -1
  71. package/dist/types.d.ts +0 -40
  72. package/dist/types.d.ts.map +0 -1
  73. package/dist/types.js +0 -3
  74. package/dist/types.js.map +0 -1
  75. package/dist/utils/typeMapper.d.ts +0 -6
  76. package/dist/utils/typeMapper.d.ts.map +0 -1
  77. package/dist/utils/typeMapper.js +0 -85
  78. package/dist/utils/typeMapper.js.map +0 -1
package/CHANGELOG.md DELETED
@@ -1,129 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to this project will be documented in this file.
4
-
5
- ## [0.4.0] - 2025-11-09
6
-
7
- ### Added
8
- - **Base Models + Extended Models pattern**: Base models are now auto-generated with `Base` prefix and should not be edited
9
- - **Extended models directory**: `models/` directory with customizable model files that extend base models
10
- - Extended model files are generated once and never overwritten, allowing full customization
11
- - `generateExtendedModelFile()` function to create customizable model templates
12
- - `generateModelsIndexFile()` to export all extended models
13
-
14
- ### Changed
15
- - Base models now use `Base` prefix (e.g., `BaseUser`, `BaseCompany`)
16
- - Frontend code should import from `models/` instead of `types/models`
17
- - Main `index.ts` now exports from `models/` directory
18
-
19
- ### Structure
20
- ```
21
- omnify/
22
- ├── types/
23
- │ ├── models.ts # BaseUser, BaseCompany, etc (auto-generated, DO NOT EDIT)
24
- │ └── enums.ts
25
- ├── models/
26
- │ ├── User.ts # extends BaseUser (SAFE TO CUSTOMIZE)
27
- │ ├── Company.ts # extends BaseCompany (SAFE TO CUSTOMIZE)
28
- │ └── index.ts # exports all
29
- └── contexts/
30
- └── EnumsContext.tsx
31
- ```
32
-
33
- ### Example
34
- ```typescript
35
- // Auto-generated base model (DO NOT EDIT)
36
- // types/models.ts
37
- export interface BaseUser {
38
- id: number;
39
- name: string;
40
- }
41
-
42
- // Customizable extended model (SAFE TO EDIT)
43
- // models/User.ts
44
- import { BaseUser } from '../types/models';
45
-
46
- export interface User extends BaseUser {
47
- // Add your custom fields here
48
- fullName?: string;
49
- avatarUrl?: string;
50
- }
51
-
52
- // Use in your app
53
- import { User } from '@/omnify';
54
- ```
55
-
56
- ## [0.3.0] - 2025-11-09
57
-
58
- ### Added
59
- - **Type-safe enum keys**: Exported `EnumKey` type for better TypeScript autocomplete and type checking
60
- - JSDoc comments for all helper methods (`getLabel`, `getValue`, `getOptions`) with usage examples
61
- - Exported `EnumsContextType` interface for better type inference
62
-
63
- ### Changed
64
- - All helper methods now use `EnumKey` type instead of `keyof EnumOptions` for cleaner API
65
- - Improved IntelliSense support - now you get autocomplete for enum keys like `'account_type'`, `'company_type'`, etc.
66
-
67
- ## [0.2.3] - 2025-11-09
68
-
69
- ### Fixed
70
- - Fixed `npm pkg fix` warning about bin script path
71
-
72
- ## [0.2.2] - 2025-11-09
73
-
74
- ### Changed
75
- - Merged `enums.ts` and `enumOptions.ts` into single `enums.ts` file
76
- - Updated `types/index.ts` to only export `enums` and `models`
77
-
78
- ## [0.2.1] - 2025-11-09
79
-
80
- ### Added
81
- - Comprehensive test suite using Jest
82
- - Test coverage for all generators and utilities
83
- - PascalCase naming for enum types (e.g., `ApplicationFormEntityType` instead of `ApplicationForm_entity_type`)
84
- - Mixed-case word preservation in PascalCase conversion
85
-
86
- ### Changed
87
- - Enum type names now use PascalCase for better TypeScript conventions
88
- - Improved code quality with test coverage
89
-
90
- ## [0.2.0] - 2025-11-09
91
-
92
- ### Added
93
- - Helper methods in `EnumsContext.tsx`:
94
- - `getLabel(enumKey, value)` - convert value to label
95
- - `getValue(enumKey, label)` - convert label to value
96
- - `getOptions(enumKey)` - get options for Select components
97
- - Prefectures support in enum context (all 47 Japanese prefectures)
98
-
99
- ### Changed
100
- - Updated package name to `@famgia/omnify`
101
- - Improved documentation in README
102
-
103
- ## [0.1.3] - 2025-11-09
104
-
105
- ### Fixed
106
- - Fixed model generation to handle composite types correctly
107
- - Added support for ManyToOne, OneToMany, OneToOne, ManyToMany relations
108
- - Fixed duplicate fields in generated models
109
-
110
- ## [0.1.2] - 2025-11-09
111
-
112
- ### Fixed
113
- - Fixed npm registry indexing issue
114
- - Package now available on npm
115
-
116
- ## [0.1.1] - 2025-11-09
117
-
118
- ### Fixed
119
- - Fixed npm publish issues
120
-
121
- ## [0.1.0] - 2025-11-09
122
-
123
- ### Added
124
- - Initial release
125
- - Generate TypeScript models from `schema-lock.json`
126
- - Generate enum types and options
127
- - Generate React Context for enums
128
- - CLI tool `omnify-build` with watch mode
129
- - Auto-detect `schema-lock.json` from common paths
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=contextGenerator.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contextGenerator.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/generators/contextGenerator.test.ts"],"names":[],"mappings":""}
@@ -1,109 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const contextGenerator_1 = require("../../generators/contextGenerator");
4
- describe('contextGenerator', () => {
5
- describe('generateEnumContextFile', () => {
6
- const mockEnums = [
7
- {
8
- objectName: 'User',
9
- propertyName: 'status',
10
- values: [
11
- { value: 'ACTIVE', label: 'Active' },
12
- { value: 'INACTIVE', label: 'Inactive' },
13
- ],
14
- },
15
- {
16
- objectName: 'User',
17
- propertyName: 'role',
18
- values: [
19
- { value: 'ADMIN', label: 'Administrator' },
20
- { value: 'USER', label: 'User' },
21
- ],
22
- },
23
- ];
24
- it('should generate context with nested EnumOptions interface', () => {
25
- const output = (0, contextGenerator_1.generateEnumContextFile)(mockEnums);
26
- expect(output).toContain("'use client';");
27
- expect(output).toContain('// Auto-generated by @famgia/omnify');
28
- expect(output).toContain('export interface EnumOptions {');
29
- expect(output).toContain('User: {');
30
- expect(output).toContain('status: Record<string, string>;');
31
- expect(output).toContain('role: Record<string, string>;');
32
- });
33
- it('should generate EnumObjectName type for IDE autocomplete', () => {
34
- const output = (0, contextGenerator_1.generateEnumContextFile)(mockEnums);
35
- expect(output).toContain('// Type-safe keys for IDE autocomplete');
36
- expect(output).toContain("export type EnumObjectName = 'User';");
37
- expect(output).toContain("export type UserEnumProperty = 'status' | 'role';");
38
- });
39
- it('should generate nested STATIC_ENUMS object', () => {
40
- const output = (0, contextGenerator_1.generateEnumContextFile)(mockEnums);
41
- expect(output).toContain('const STATIC_ENUMS: EnumOptions = {');
42
- expect(output).toContain('User: {');
43
- expect(output).toContain('status: {');
44
- expect(output).toContain("ACTIVE: 'Active'");
45
- expect(output).toContain("INACTIVE: 'Inactive'");
46
- expect(output).toContain('role: {');
47
- expect(output).toContain("ADMIN: 'Administrator'");
48
- expect(output).toContain("USER: 'User'");
49
- });
50
- it('should include all 47 prefectures in separate const', () => {
51
- const output = (0, contextGenerator_1.generateEnumContextFile)(mockEnums);
52
- expect(output).toContain('const PREFECTURES: Record<string, string> = {');
53
- expect(output).toContain("'1': '北海道'");
54
- expect(output).toContain("'13': '東京都'");
55
- expect(output).toContain("'47': '沖縄県'");
56
- });
57
- it('should generate EnumsContextType with helper methods', () => {
58
- const output = (0, contextGenerator_1.generateEnumContextFile)(mockEnums);
59
- expect(output).toContain('export interface EnumsContextType {');
60
- expect(output).toContain('enums: EnumOptions | null;');
61
- expect(output).toContain('loading: boolean;');
62
- expect(output).toContain('error: Error | null;');
63
- expect(output).toContain('getLabel: <T extends EnumObjectName>(objectName: T, propertyName: EnumPropertyName<T>, value: string | number) => string | undefined;');
64
- expect(output).toContain('getValue: <T extends EnumObjectName>(objectName: T, propertyName: EnumPropertyName<T>, label: string) => string | undefined;');
65
- expect(output).toContain('getOptions: <T extends EnumObjectName>(objectName: T, propertyName: EnumPropertyName<T>) => { value: string; label: string }[];');
66
- expect(output).toContain('getPrefectures: () => { value: string; label: string }[];');
67
- expect(output).toContain('getPrefecturesAsNumbers: () => { value: number; label: string }[];');
68
- });
69
- it('should generate EnumsProvider component', () => {
70
- const output = (0, contextGenerator_1.generateEnumContextFile)(mockEnums);
71
- expect(output).toContain('export function EnumsProvider({ children }: { children: ReactNode })');
72
- expect(output).toContain('const [enums] = useState<EnumOptions>(STATIC_ENUMS);');
73
- expect(output).toContain('<EnumsContext.Provider');
74
- });
75
- it('should generate getLabel helper method with 2-param signature', () => {
76
- const output = (0, contextGenerator_1.generateEnumContextFile)(mockEnums);
77
- expect(output).toContain('const getLabel = useCallback(<T extends EnumObjectName>(objectName: T, propertyName: EnumPropertyName<T>, value: string | number): string | undefined => {');
78
- expect(output).toContain('}, [enums]);');
79
- expect(output).toContain('if (!enums) return undefined;');
80
- expect(output).toContain('const enumData = enums[objectName]?.[propertyName] as Record<string, string> | undefined;');
81
- });
82
- it('should generate getValue helper method with 2-param signature', () => {
83
- const output = (0, contextGenerator_1.generateEnumContextFile)(mockEnums);
84
- expect(output).toContain('const getValue = useCallback(<T extends EnumObjectName>(objectName: T, propertyName: EnumPropertyName<T>, label: string): string | undefined => {');
85
- expect(output).toContain('}, [enums]);');
86
- expect(output).toContain('return Object.entries(enumData).find(([_, l]) => l === label)?.[0];');
87
- });
88
- it('should generate getOptions helper method with 2-param signature', () => {
89
- const output = (0, contextGenerator_1.generateEnumContextFile)(mockEnums);
90
- expect(output).toContain('const getOptions = useCallback(<T extends EnumObjectName>(objectName: T, propertyName: EnumPropertyName<T>): { value: string; label: string }[] => {');
91
- expect(output).toContain('}, []);');
92
- expect(output).toContain('return (STATIC_OPTIONS as any)[objectName]?.[propertyName] || [];');
93
- expect(output).toContain('const STATIC_OPTIONS:');
94
- });
95
- it('should generate useEnums hook', () => {
96
- const output = (0, contextGenerator_1.generateEnumContextFile)(mockEnums);
97
- expect(output).toContain('export function useEnums(): EnumsContextType {');
98
- expect(output).toContain('const context = useContext(EnumsContext);');
99
- expect(output).toContain("throw new Error('useEnums must be used within an EnumsProvider');");
100
- });
101
- it('should handle empty enums array', () => {
102
- const output = (0, contextGenerator_1.generateEnumContextFile)([]);
103
- expect(output).toContain('export interface EnumOptions {');
104
- expect(output).toContain('const PREFECTURES: Record<string, string> = {');
105
- expect(output).toContain('const STATIC_ENUMS: EnumOptions = {');
106
- });
107
- });
108
- });
109
- //# sourceMappingURL=contextGenerator.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contextGenerator.test.js","sourceRoot":"","sources":["../../../src/__tests__/generators/contextGenerator.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=enumGenerator.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enumGenerator.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/generators/enumGenerator.test.ts"],"names":[],"mappings":""}
@@ -1,151 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const enumGenerator_1 = require("../../generators/enumGenerator");
4
- describe('enumGenerator', () => {
5
- const mockSchema = {
6
- User: {
7
- name: 'User',
8
- table: 'users',
9
- properties: {
10
- id: {
11
- type: 'Id',
12
- objectName: 'User',
13
- propertyName: 'id',
14
- displayName: 'ID',
15
- description: null,
16
- primary: true,
17
- },
18
- status: {
19
- type: 'Enum',
20
- enum: [
21
- { value: 'ACTIVE', label: 'Active' },
22
- { value: 'INACTIVE', label: 'Inactive' },
23
- ],
24
- objectName: 'User',
25
- propertyName: 'status',
26
- displayName: 'Status',
27
- description: null,
28
- },
29
- role: {
30
- type: 'Enum',
31
- enum: [
32
- { value: 'ADMIN', label: 'Administrator' },
33
- { value: 'USER', label: 'User' },
34
- ],
35
- objectName: 'User',
36
- propertyName: 'role',
37
- displayName: 'Role',
38
- description: null,
39
- },
40
- },
41
- },
42
- };
43
- describe('extractEnums', () => {
44
- it('should extract all enums from schema', () => {
45
- const enums = (0, enumGenerator_1.extractEnums)(mockSchema);
46
- expect(enums).toHaveLength(2);
47
- expect(enums[0].objectName).toBe('User');
48
- expect(enums[0].propertyName).toBe('status');
49
- expect(enums[0].values).toHaveLength(2);
50
- expect(enums[1].propertyName).toBe('role');
51
- });
52
- it('should handle schema with no enums', () => {
53
- const schemaWithoutEnums = {
54
- User: {
55
- name: 'User',
56
- table: 'users',
57
- properties: {
58
- id: {
59
- type: 'Id',
60
- objectName: 'User',
61
- propertyName: 'id',
62
- displayName: 'ID',
63
- description: null,
64
- },
65
- name: {
66
- type: 'String',
67
- objectName: 'User',
68
- propertyName: 'name',
69
- displayName: 'Name',
70
- description: null,
71
- },
72
- },
73
- },
74
- };
75
- const enums = (0, enumGenerator_1.extractEnums)(schemaWithoutEnums);
76
- expect(enums).toHaveLength(0);
77
- });
78
- });
79
- describe('generateEnumsFile', () => {
80
- it('should generate enums file with types and options', () => {
81
- const enums = (0, enumGenerator_1.extractEnums)(mockSchema);
82
- const output = (0, enumGenerator_1.generateEnumsFile)(enums);
83
- expect(output).toContain('// Auto-generated by @omnifyjp/omnify');
84
- // Check enum types (PascalCase)
85
- expect(output).toContain('export type UserStatus');
86
- expect(output).toContain("| 'ACTIVE'");
87
- expect(output).toContain("| 'INACTIVE'");
88
- expect(output).toContain('export type UserRole');
89
- expect(output).toContain("| 'ADMIN'");
90
- expect(output).toContain("| 'USER'");
91
- // Check enum options with full keys
92
- expect(output).toContain('export const User_statusOptions = {');
93
- expect(output).toContain("ACTIVE: 'Active'");
94
- expect(output).toContain("INACTIVE: 'Inactive'");
95
- expect(output).toContain('export const User_roleOptions = {');
96
- expect(output).toContain("ADMIN: 'Administrator'");
97
- expect(output).toContain("USER: 'User'");
98
- });
99
- it('should preserve mixed-case words in PascalCase conversion', () => {
100
- const mixedCaseSchema = {
101
- ApplicationForm: {
102
- name: 'ApplicationForm',
103
- table: 'application_forms',
104
- properties: {
105
- id: {
106
- type: 'Id',
107
- objectName: 'ApplicationForm',
108
- propertyName: 'id',
109
- displayName: 'ID',
110
- description: null,
111
- },
112
- entity_type: {
113
- type: 'Enum',
114
- enum: [
115
- { value: 'CORPORATION', label: 'Corporation' },
116
- ],
117
- objectName: 'ApplicationForm',
118
- propertyName: 'entity_type',
119
- displayName: 'Entity Type',
120
- description: null,
121
- },
122
- },
123
- },
124
- };
125
- const enums = (0, enumGenerator_1.extractEnums)(mixedCaseSchema);
126
- const output = (0, enumGenerator_1.generateEnumsFile)(enums);
127
- // Should preserve "ApplicationForm" not convert to "Applicationform"
128
- expect(output).toContain('export type ApplicationFormEntityType');
129
- expect(output).not.toContain('ApplicationformEntityType');
130
- });
131
- it('should have clear section separators', () => {
132
- const enums = (0, enumGenerator_1.extractEnums)(mockSchema);
133
- const output = (0, enumGenerator_1.generateEnumsFile)(enums);
134
- expect(output).toContain('// ============================================');
135
- expect(output).toContain('// Enum Types');
136
- expect(output).toContain('// Enum Options (Value -> Label mappings)');
137
- });
138
- it('should use "as const" for enum options', () => {
139
- const enums = (0, enumGenerator_1.extractEnums)(mockSchema);
140
- const output = (0, enumGenerator_1.generateEnumsFile)(enums);
141
- expect(output).toContain('} as const;');
142
- });
143
- it('should generate empty file for no enums', () => {
144
- const output = (0, enumGenerator_1.generateEnumsFile)([]);
145
- expect(output).toContain('// Auto-generated by @omnifyjp/omnify');
146
- expect(output).not.toContain('export type');
147
- expect(output).not.toContain('export const');
148
- });
149
- });
150
- });
151
- //# sourceMappingURL=enumGenerator.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enumGenerator.test.js","sourceRoot":"","sources":["../../../src/__tests__/generators/enumGenerator.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=modelGenerator.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"modelGenerator.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/generators/modelGenerator.test.ts"],"names":[],"mappings":""}