@famgia/omnify-old 0.12.9
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/CHANGELOG.md +129 -0
- package/README.md +136 -0
- package/dist/__tests__/generators/contextGenerator.test.d.ts +2 -0
- package/dist/__tests__/generators/contextGenerator.test.d.ts.map +1 -0
- package/dist/__tests__/generators/contextGenerator.test.js +109 -0
- package/dist/__tests__/generators/contextGenerator.test.js.map +1 -0
- package/dist/__tests__/generators/enumGenerator.test.d.ts +2 -0
- package/dist/__tests__/generators/enumGenerator.test.d.ts.map +1 -0
- package/dist/__tests__/generators/enumGenerator.test.js +151 -0
- package/dist/__tests__/generators/enumGenerator.test.js.map +1 -0
- package/dist/__tests__/generators/modelGenerator.test.d.ts +2 -0
- package/dist/__tests__/generators/modelGenerator.test.d.ts.map +1 -0
- package/dist/__tests__/generators/modelGenerator.test.js +329 -0
- package/dist/__tests__/generators/modelGenerator.test.js.map +1 -0
- package/dist/__tests__/utils/pascalCase.test.d.ts +1 -0
- package/dist/__tests__/utils/pascalCase.test.d.ts.map +1 -0
- package/dist/__tests__/utils/pascalCase.test.js +75 -0
- package/dist/__tests__/utils/pascalCase.test.js.map +1 -0
- package/dist/__tests__/utils/typeMapper.test.d.ts +2 -0
- package/dist/__tests__/utils/typeMapper.test.d.ts.map +1 -0
- package/dist/__tests__/utils/typeMapper.test.js +41 -0
- package/dist/__tests__/utils/typeMapper.test.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +248 -0
- package/dist/cli.js.map +1 -0
- package/dist/generators/commonTypesGenerator.d.ts +5 -0
- package/dist/generators/commonTypesGenerator.d.ts.map +1 -0
- package/dist/generators/commonTypesGenerator.js +37 -0
- package/dist/generators/commonTypesGenerator.js.map +1 -0
- package/dist/generators/contextGenerator.d.ts +3 -0
- package/dist/generators/contextGenerator.d.ts.map +1 -0
- package/dist/generators/contextGenerator.js +248 -0
- package/dist/generators/contextGenerator.js.map +1 -0
- package/dist/generators/enumGenerator.d.ts +13 -0
- package/dist/generators/enumGenerator.d.ts.map +1 -0
- package/dist/generators/enumGenerator.js +83 -0
- package/dist/generators/enumGenerator.js.map +1 -0
- package/dist/generators/hooksGenerator.d.ts +4 -0
- package/dist/generators/hooksGenerator.d.ts.map +1 -0
- package/dist/generators/hooksGenerator.js +265 -0
- package/dist/generators/hooksGenerator.js.map +1 -0
- package/dist/generators/modelGenerator.d.ts +13 -0
- package/dist/generators/modelGenerator.d.ts.map +1 -0
- package/dist/generators/modelGenerator.js +262 -0
- package/dist/generators/modelGenerator.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime/hooks/useFormSubmit.d.ts +36 -0
- package/dist/runtime/hooks/useFormSubmit.d.ts.map +1 -0
- package/dist/runtime/hooks/useFormSubmit.js +86 -0
- package/dist/runtime/hooks/useFormSubmit.js.map +1 -0
- package/dist/runtime/index.d.ts +5 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +21 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/lib/axios.d.ts +7 -0
- package/dist/runtime/lib/axios.d.ts.map +1 -0
- package/dist/runtime/lib/axios.js +54 -0
- package/dist/runtime/lib/axios.js.map +1 -0
- package/dist/runtime/lib/validation.d.ts +50 -0
- package/dist/runtime/lib/validation.d.ts.map +1 -0
- package/dist/runtime/lib/validation.js +85 -0
- package/dist/runtime/lib/validation.js.map +1 -0
- package/dist/types.d.ts +54 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/typeMapper.d.ts +10 -0
- package/dist/utils/typeMapper.d.ts.map +1 -0
- package/dist/utils/typeMapper.js +119 -0
- package/dist/utils/typeMapper.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateModelFile = generateModelFile;
|
|
4
|
+
exports.generateAllModels = generateAllModels;
|
|
5
|
+
exports.generateExtendedModelFile = generateExtendedModelFile;
|
|
6
|
+
exports.generateModelsIndexFile = generateModelsIndexFile;
|
|
7
|
+
const typeMapper_1 = require("../utils/typeMapper");
|
|
8
|
+
function toPascalCase(str) {
|
|
9
|
+
// Preserve case for already uppercase words like "ApplicationForm"
|
|
10
|
+
// Just capitalize first letter of each underscore-separated part
|
|
11
|
+
return str
|
|
12
|
+
.split('_')
|
|
13
|
+
.map(word => {
|
|
14
|
+
// If word is already mixed case (e.g. "ApplicationForm"), keep it
|
|
15
|
+
if (word !== word.toUpperCase() && word !== word.toLowerCase()) {
|
|
16
|
+
return word;
|
|
17
|
+
}
|
|
18
|
+
// Otherwise capitalize first letter
|
|
19
|
+
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
|
|
20
|
+
})
|
|
21
|
+
.join('');
|
|
22
|
+
}
|
|
23
|
+
function expandCompositeFields(prop) {
|
|
24
|
+
if (!prop.fields)
|
|
25
|
+
return [];
|
|
26
|
+
const fields = [];
|
|
27
|
+
for (const [fieldName, field] of Object.entries(prop.fields)) {
|
|
28
|
+
const tsType = (0, typeMapper_1.mapOmnifyTypeToTypeScript)(field.type, field.nullable);
|
|
29
|
+
const optional = field.nullable ? '?' : '';
|
|
30
|
+
const comment = field.displayName ? ` // ${field.displayName}` : '';
|
|
31
|
+
fields.push({
|
|
32
|
+
name: field.propertyName,
|
|
33
|
+
type: tsType,
|
|
34
|
+
optional,
|
|
35
|
+
comment,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return fields;
|
|
39
|
+
}
|
|
40
|
+
function generateModelFile(objectName, object, useBasePrefix = true) {
|
|
41
|
+
const lines = [];
|
|
42
|
+
lines.push('// Auto-generated by @famgia/omnify');
|
|
43
|
+
lines.push('// Do not edit this file manually');
|
|
44
|
+
lines.push('');
|
|
45
|
+
const interfaceName = useBasePrefix ? `Base${objectName}` : objectName;
|
|
46
|
+
// Generate interface
|
|
47
|
+
lines.push(`export interface ${interfaceName} {`);
|
|
48
|
+
for (const [propName, prop] of Object.entries(object.properties)) {
|
|
49
|
+
// Skip relations for now (they're complex)
|
|
50
|
+
if (prop.type === 'Association' || prop.type === 'Polymorphic') {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
// Handle composite types - expand fields
|
|
54
|
+
if (prop.fields) {
|
|
55
|
+
const expandedFields = expandCompositeFields(prop);
|
|
56
|
+
for (const field of expandedFields) {
|
|
57
|
+
lines.push(` ${field.name}${field.optional}: ${field.type};${field.comment}`);
|
|
58
|
+
}
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
let propType;
|
|
62
|
+
if (prop.type === 'Enum' && prop.enum) {
|
|
63
|
+
propType = `${toPascalCase(objectName)}${toPascalCase(propName)}`;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
propType = (0, typeMapper_1.mapOmnifyTypeToTypeScript)(prop.type, prop.nullable);
|
|
67
|
+
}
|
|
68
|
+
const optional = prop.nullable ? '?' : '';
|
|
69
|
+
const comment = prop.displayName ? ` // ${prop.displayName}` : '';
|
|
70
|
+
lines.push(` ${propName}${optional}: ${propType};${comment}`);
|
|
71
|
+
}
|
|
72
|
+
lines.push('}');
|
|
73
|
+
lines.push('');
|
|
74
|
+
return lines.join('\n');
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Generate pivot interface for ManyToMany relationship with pivot fields
|
|
78
|
+
*/
|
|
79
|
+
function generatePivotInterface(objectName, propName, targetName, pivotFields) {
|
|
80
|
+
const lines = [];
|
|
81
|
+
const pivotInterfaceName = `${toPascalCase(objectName)}${toPascalCase(propName)}Pivot`;
|
|
82
|
+
lines.push(`// Pivot data for ${objectName}.${propName} -> ${targetName}`);
|
|
83
|
+
lines.push(`export interface ${pivotInterfaceName} {`);
|
|
84
|
+
for (const [fieldName, field] of Object.entries(pivotFields)) {
|
|
85
|
+
const tsType = (0, typeMapper_1.mapPivotFieldTypeToTypeScript)(field.type, field.nullable);
|
|
86
|
+
const optional = field.nullable ? '?' : '';
|
|
87
|
+
const comment = field.displayName ? ` // ${field.displayName}` : '';
|
|
88
|
+
lines.push(` ${fieldName}${optional}: ${tsType};${comment}`);
|
|
89
|
+
}
|
|
90
|
+
lines.push('}');
|
|
91
|
+
lines.push('');
|
|
92
|
+
return lines;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Generate interface for ManyToMany relation item with pivot data
|
|
96
|
+
*/
|
|
97
|
+
function generateManyToManyWithPivotInterface(objectName, propName, targetName) {
|
|
98
|
+
const pivotInterfaceName = `${toPascalCase(objectName)}${toPascalCase(propName)}Pivot`;
|
|
99
|
+
return `${targetName} & { pivot: ${pivotInterfaceName} }`;
|
|
100
|
+
}
|
|
101
|
+
function generateAllModels(schema) {
|
|
102
|
+
const lines = [];
|
|
103
|
+
lines.push('// Auto-generated by @famgia/omnify');
|
|
104
|
+
lines.push('// Do not edit this file manually');
|
|
105
|
+
lines.push('// These are BASE models - DO NOT EDIT');
|
|
106
|
+
lines.push('// Use models/ directory for customizable extended models');
|
|
107
|
+
lines.push('');
|
|
108
|
+
lines.push('import * as Enums from \'./enums\';');
|
|
109
|
+
lines.push('');
|
|
110
|
+
// Collect all model names for import
|
|
111
|
+
const modelNames = Object.keys(schema).filter(key => schema[key] && typeof schema[key] === 'object' && schema[key].objectName);
|
|
112
|
+
// Import extended models from ../models
|
|
113
|
+
if (modelNames.length > 0) {
|
|
114
|
+
lines.push('// Import extended models for relations');
|
|
115
|
+
lines.push(`import type { ${modelNames.join(', ')} } from '../models';`);
|
|
116
|
+
lines.push('');
|
|
117
|
+
}
|
|
118
|
+
// PHASE 0: Generate pivot interfaces for ManyToMany with pivotFields
|
|
119
|
+
const pivotInterfaces = [];
|
|
120
|
+
for (const [objectName, object] of Object.entries(schema)) {
|
|
121
|
+
for (const [propName, prop] of Object.entries(object.properties)) {
|
|
122
|
+
if (prop.type === 'Association' &&
|
|
123
|
+
prop.relation === 'ManyToMany' &&
|
|
124
|
+
prop.pivotFields &&
|
|
125
|
+
Object.keys(prop.pivotFields).length > 0) {
|
|
126
|
+
const pivotLines = generatePivotInterface(objectName, propName, prop.target || 'unknown', prop.pivotFields);
|
|
127
|
+
pivotInterfaces.push(...pivotLines);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (pivotInterfaces.length > 0) {
|
|
132
|
+
lines.push('// ==========================================');
|
|
133
|
+
lines.push('// Pivot Interfaces for ManyToMany Relations');
|
|
134
|
+
lines.push('// ==========================================');
|
|
135
|
+
lines.push('');
|
|
136
|
+
lines.push(...pivotInterfaces);
|
|
137
|
+
}
|
|
138
|
+
// Generate models
|
|
139
|
+
for (const [objectName, object] of Object.entries(schema)) {
|
|
140
|
+
lines.push(`// ${object.displayName}`);
|
|
141
|
+
lines.push(`export interface Base${objectName} {`);
|
|
142
|
+
// Track processed properties to avoid duplicates from composite fields
|
|
143
|
+
const processedProps = new Set();
|
|
144
|
+
// PHASE 1: Add foreign keys for ManyToOne associations first
|
|
145
|
+
for (const [propName, prop] of Object.entries(object.properties)) {
|
|
146
|
+
if (prop.type === 'Association' && prop.relation === 'ManyToOne') {
|
|
147
|
+
const foreignKeyName = prop.foreignKey || `${propName}_id`;
|
|
148
|
+
if (!processedProps.has(foreignKeyName)) {
|
|
149
|
+
const comment = ` // Foreign key for ${prop.displayName || propName}`;
|
|
150
|
+
lines.push(` ${foreignKeyName}?: number | null;${comment}`);
|
|
151
|
+
processedProps.add(foreignKeyName);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// PHASE 2: Add all other properties
|
|
156
|
+
for (const [propName, prop] of Object.entries(object.properties)) {
|
|
157
|
+
// Skip if already processed
|
|
158
|
+
if (processedProps.has(propName)) {
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
// Handle Association types
|
|
162
|
+
if (prop.type === 'Association') {
|
|
163
|
+
const comment = prop.displayName ? ` // ${prop.displayName}` : '';
|
|
164
|
+
// Use extended models (imported from ../models) for relations
|
|
165
|
+
const target = prop.target;
|
|
166
|
+
switch (prop.relation) {
|
|
167
|
+
case 'ManyToOne':
|
|
168
|
+
lines.push(` ${propName}?: ${target} | null;${comment}`);
|
|
169
|
+
break;
|
|
170
|
+
case 'OneToOne':
|
|
171
|
+
lines.push(` ${propName}?: ${target} | null;${comment}`);
|
|
172
|
+
break;
|
|
173
|
+
case 'OneToMany':
|
|
174
|
+
lines.push(` ${propName}?: ${target}[];${comment}`);
|
|
175
|
+
break;
|
|
176
|
+
case 'ManyToMany':
|
|
177
|
+
// Check if pivot fields are defined
|
|
178
|
+
if (prop.pivotFields && Object.keys(prop.pivotFields).length > 0) {
|
|
179
|
+
const pivotType = generateManyToManyWithPivotInterface(objectName, propName, target || 'any');
|
|
180
|
+
lines.push(` ${propName}?: (${pivotType})[];${comment}`);
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
lines.push(` ${propName}?: ${target}[];${comment}`);
|
|
184
|
+
}
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
processedProps.add(propName);
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
// Skip Polymorphic for now (too complex)
|
|
191
|
+
if (prop.type === 'Polymorphic') {
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
// Handle composite types - expand fields and mark them as processed
|
|
195
|
+
if (prop.fields) {
|
|
196
|
+
const expandedFields = expandCompositeFields(prop);
|
|
197
|
+
for (const field of expandedFields) {
|
|
198
|
+
if (!processedProps.has(field.name)) {
|
|
199
|
+
lines.push(` ${field.name}${field.optional}: ${field.type};${field.comment}`);
|
|
200
|
+
processedProps.add(field.name);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
205
|
+
let propType;
|
|
206
|
+
if (prop.type === 'Enum' && prop.enum) {
|
|
207
|
+
propType = `Enums.${toPascalCase(objectName)}${toPascalCase(propName)}`;
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
propType = (0, typeMapper_1.mapOmnifyTypeToTypeScript)(prop.type, prop.nullable);
|
|
211
|
+
}
|
|
212
|
+
const optional = prop.nullable ? '?' : '';
|
|
213
|
+
const comment = prop.displayName ? ` // ${prop.displayName}` : '';
|
|
214
|
+
lines.push(` ${propName}${optional}: ${propType};${comment}`);
|
|
215
|
+
processedProps.add(propName);
|
|
216
|
+
}
|
|
217
|
+
lines.push('}');
|
|
218
|
+
lines.push('');
|
|
219
|
+
}
|
|
220
|
+
return lines.join('\n');
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Generate extended model file that users can customize
|
|
224
|
+
* This file won't be overwritten on rebuild
|
|
225
|
+
*/
|
|
226
|
+
function generateExtendedModelFile(objectName) {
|
|
227
|
+
const lines = [];
|
|
228
|
+
lines.push(`// Extended model for ${objectName}`);
|
|
229
|
+
lines.push('// You can customize this file - it will not be overwritten');
|
|
230
|
+
lines.push('');
|
|
231
|
+
lines.push(`import { Base${objectName} } from '../types/models';`);
|
|
232
|
+
lines.push('');
|
|
233
|
+
lines.push(`// Extend the base model with your custom fields/methods`);
|
|
234
|
+
lines.push(`export interface ${objectName} extends Base${objectName} {`);
|
|
235
|
+
lines.push(' // Add your custom fields here');
|
|
236
|
+
lines.push(' // Example:');
|
|
237
|
+
lines.push(' // customField?: string;');
|
|
238
|
+
lines.push('}');
|
|
239
|
+
lines.push('');
|
|
240
|
+
lines.push('// You can also add helper functions or methods here');
|
|
241
|
+
lines.push(`// Example:`);
|
|
242
|
+
lines.push(`// export function create${objectName}(data: Partial<${objectName}>): ${objectName} {`);
|
|
243
|
+
lines.push(`// return { ...data } as ${objectName};`);
|
|
244
|
+
lines.push(`// }`);
|
|
245
|
+
lines.push('');
|
|
246
|
+
return lines.join('\n');
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Generate models index file that exports all extended models
|
|
250
|
+
*/
|
|
251
|
+
function generateModelsIndexFile(objectNames) {
|
|
252
|
+
const lines = [];
|
|
253
|
+
lines.push('// Auto-generated by @famgia/omnify');
|
|
254
|
+
lines.push('// Extended models for customization');
|
|
255
|
+
lines.push('');
|
|
256
|
+
for (const objectName of objectNames) {
|
|
257
|
+
lines.push(`export * from './${objectName}';`);
|
|
258
|
+
}
|
|
259
|
+
lines.push('');
|
|
260
|
+
return lines.join('\n');
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=modelGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelGenerator.js","sourceRoot":"","sources":["../../src/generators/modelGenerator.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './types';
|
|
2
|
+
export * from './runtime';
|
|
3
|
+
export * from './generators/enumGenerator';
|
|
4
|
+
export * from './generators/modelGenerator';
|
|
5
|
+
export * from './generators/contextGenerator';
|
|
6
|
+
export * from './utils/typeMapper';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AAGxB,cAAc,WAAW,CAAC;AAC1B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./types"), exports);
|
|
18
|
+
// Runtime helpers (for use in app)
|
|
19
|
+
__exportStar(require("./runtime"), exports);
|
|
20
|
+
__exportStar(require("./generators/enumGenerator"), exports);
|
|
21
|
+
__exportStar(require("./generators/modelGenerator"), exports);
|
|
22
|
+
__exportStar(require("./generators/contextGenerator"), exports);
|
|
23
|
+
__exportStar(require("./utils/typeMapper"), exports);
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AAExB,mCAAmC;AACnC,4CAA0B;AAC1B,6DAA2C;AAC3C,8DAA4C;AAC5C,gEAA8C;AAC9C,qDAAmC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { FormInstance } from 'antd';
|
|
2
|
+
export interface UseFormSubmitOptions<TResponse = any> {
|
|
3
|
+
form: FormInstance;
|
|
4
|
+
submitFn: (values: any) => Promise<TResponse>;
|
|
5
|
+
onSuccess?: (response: TResponse, values: any) => void | Promise<void>;
|
|
6
|
+
onError?: (error: any, values: any) => void | Promise<void>;
|
|
7
|
+
getCsrfToken?: () => Promise<void>;
|
|
8
|
+
errorMessages?: {
|
|
9
|
+
500?: string;
|
|
10
|
+
401?: string;
|
|
11
|
+
403?: string;
|
|
12
|
+
default?: string;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export interface UseFormSubmitResult {
|
|
16
|
+
handleSubmit: (values: any) => Promise<void>;
|
|
17
|
+
loading: boolean;
|
|
18
|
+
setLoading: (loading: boolean) => void;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Custom hook for handling form submission with automatic Laravel validation error mapping
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```tsx
|
|
25
|
+
* const { handleSubmit, loading } = useFormSubmit({
|
|
26
|
+
* form,
|
|
27
|
+
* submitFn: createUser,
|
|
28
|
+
* getCsrfToken: () => getCsrfCookie(apiUrl),
|
|
29
|
+
* onSuccess: (response) => {
|
|
30
|
+
* message.success('Success!');
|
|
31
|
+
* },
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare function useFormSubmit<TResponse = any>(options: UseFormSubmitOptions<TResponse>): UseFormSubmitResult;
|
|
36
|
+
//# sourceMappingURL=useFormSubmit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormSubmit.d.ts","sourceRoot":"","sources":["../../../src/runtime/hooks/useFormSubmit.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAO,MAAM,MAAM,CAAC;AAEzC,MAAM,WAAW,oBAAoB,CAAC,SAAS,GAAG,GAAG;IACjD,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9C,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,aAAa,CAAC,EAAE;QACZ,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACL;AAED,MAAM,WAAW,mBAAmB;IAChC,YAAY,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,SAAS,GAAG,GAAG,EACzC,OAAO,EAAE,oBAAoB,CAAC,SAAS,CAAC,GACzC,mBAAmB,CAsFrB"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useFormSubmit = useFormSubmit;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const antd_1 = require("antd");
|
|
6
|
+
/**
|
|
7
|
+
* Custom hook for handling form submission with automatic Laravel validation error mapping
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```tsx
|
|
11
|
+
* const { handleSubmit, loading } = useFormSubmit({
|
|
12
|
+
* form,
|
|
13
|
+
* submitFn: createUser,
|
|
14
|
+
* getCsrfToken: () => getCsrfCookie(apiUrl),
|
|
15
|
+
* onSuccess: (response) => {
|
|
16
|
+
* message.success('Success!');
|
|
17
|
+
* },
|
|
18
|
+
* });
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
function useFormSubmit(options) {
|
|
22
|
+
const { form, submitFn, onSuccess, onError, getCsrfToken, errorMessages = {}, } = options;
|
|
23
|
+
const [loading, setLoading] = (0, react_1.useState)(false);
|
|
24
|
+
const { message: messageApi } = antd_1.App.useApp();
|
|
25
|
+
const handleSubmit = async (values) => {
|
|
26
|
+
setLoading(true);
|
|
27
|
+
try {
|
|
28
|
+
if (getCsrfToken) {
|
|
29
|
+
await getCsrfToken();
|
|
30
|
+
}
|
|
31
|
+
const response = await submitFn(values);
|
|
32
|
+
if (onSuccess) {
|
|
33
|
+
await onSuccess(response, values);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
console.error('Form submission error:', error);
|
|
38
|
+
if (onError) {
|
|
39
|
+
await onError(error, values);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
// Handle validation errors (422)
|
|
43
|
+
if (error.response?.status === 422 && error.response?.data?.errors) {
|
|
44
|
+
const errors = error.response.data.errors;
|
|
45
|
+
// Set field errors
|
|
46
|
+
const formErrors = Object.keys(errors).map((field) => ({
|
|
47
|
+
name: field,
|
|
48
|
+
errors: errors[field],
|
|
49
|
+
}));
|
|
50
|
+
form.setFields(formErrors);
|
|
51
|
+
// Show error message
|
|
52
|
+
const errorCount = Object.keys(errors).length;
|
|
53
|
+
const errorList = Object.values(errors)
|
|
54
|
+
.map((msgs) => msgs[0])
|
|
55
|
+
.join(' / ');
|
|
56
|
+
messageApi.error({
|
|
57
|
+
content: `入力内容にエラーがあります(${errorCount}件): ${errorList}`,
|
|
58
|
+
duration: 8,
|
|
59
|
+
});
|
|
60
|
+
console.error('Validation errors:', errors);
|
|
61
|
+
}
|
|
62
|
+
// Handle server errors
|
|
63
|
+
else if (error.response?.status >= 500) {
|
|
64
|
+
messageApi.error(errorMessages[500] || 'サーバーエラーが発生しました。しばらくしてから再度お試しください。');
|
|
65
|
+
}
|
|
66
|
+
// Handle auth errors
|
|
67
|
+
else if (error.response?.status === 401 || error.response?.status === 403) {
|
|
68
|
+
const status = error.response.status;
|
|
69
|
+
messageApi.error(errorMessages[status] || '認証エラーが発生しました。再度ログインしてください。');
|
|
70
|
+
}
|
|
71
|
+
// Handle generic errors
|
|
72
|
+
else {
|
|
73
|
+
messageApi.error(error.response?.data?.message || errorMessages.default || '送信に失敗しました');
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
setLoading(false);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
return {
|
|
81
|
+
handleSubmit,
|
|
82
|
+
loading,
|
|
83
|
+
setLoading,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=useFormSubmit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormSubmit.js","sourceRoot":"","sources":["../../../src/runtime/hooks/useFormSubmit.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { useFormSubmit } from './hooks/useFormSubmit';
|
|
2
|
+
export type { UseFormSubmitOptions, UseFormSubmitResult } from './hooks/useFormSubmit';
|
|
3
|
+
export { createLaravelAxios, getCsrfCookie } from './lib/axios';
|
|
4
|
+
export { VALIDATION_PATTERNS, katakanaRule, kanaWithNumbersRule, hiraganaRule, kanaRule, halfWidthKatakanaRule, isKatakana, isHiragana, isKana, isHalfWidthKatakana, } from './lib/validation';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEvF,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,EACH,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,QAAQ,EACR,qBAAqB,EACrB,UAAU,EACV,UAAU,EACV,MAAM,EACN,mBAAmB,GACtB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isHalfWidthKatakana = exports.isKana = exports.isHiragana = exports.isKatakana = exports.halfWidthKatakanaRule = exports.kanaRule = exports.hiraganaRule = exports.kanaWithNumbersRule = exports.katakanaRule = exports.VALIDATION_PATTERNS = exports.getCsrfCookie = exports.createLaravelAxios = exports.useFormSubmit = void 0;
|
|
4
|
+
// Runtime helpers for React + Laravel + Ant Design
|
|
5
|
+
var useFormSubmit_1 = require("./hooks/useFormSubmit");
|
|
6
|
+
Object.defineProperty(exports, "useFormSubmit", { enumerable: true, get: function () { return useFormSubmit_1.useFormSubmit; } });
|
|
7
|
+
var axios_1 = require("./lib/axios");
|
|
8
|
+
Object.defineProperty(exports, "createLaravelAxios", { enumerable: true, get: function () { return axios_1.createLaravelAxios; } });
|
|
9
|
+
Object.defineProperty(exports, "getCsrfCookie", { enumerable: true, get: function () { return axios_1.getCsrfCookie; } });
|
|
10
|
+
var validation_1 = require("./lib/validation");
|
|
11
|
+
Object.defineProperty(exports, "VALIDATION_PATTERNS", { enumerable: true, get: function () { return validation_1.VALIDATION_PATTERNS; } });
|
|
12
|
+
Object.defineProperty(exports, "katakanaRule", { enumerable: true, get: function () { return validation_1.katakanaRule; } });
|
|
13
|
+
Object.defineProperty(exports, "kanaWithNumbersRule", { enumerable: true, get: function () { return validation_1.kanaWithNumbersRule; } });
|
|
14
|
+
Object.defineProperty(exports, "hiraganaRule", { enumerable: true, get: function () { return validation_1.hiraganaRule; } });
|
|
15
|
+
Object.defineProperty(exports, "kanaRule", { enumerable: true, get: function () { return validation_1.kanaRule; } });
|
|
16
|
+
Object.defineProperty(exports, "halfWidthKatakanaRule", { enumerable: true, get: function () { return validation_1.halfWidthKatakanaRule; } });
|
|
17
|
+
Object.defineProperty(exports, "isKatakana", { enumerable: true, get: function () { return validation_1.isKatakana; } });
|
|
18
|
+
Object.defineProperty(exports, "isHiragana", { enumerable: true, get: function () { return validation_1.isHiragana; } });
|
|
19
|
+
Object.defineProperty(exports, "isKana", { enumerable: true, get: function () { return validation_1.isKana; } });
|
|
20
|
+
Object.defineProperty(exports, "isHalfWidthKatakana", { enumerable: true, get: function () { return validation_1.isHalfWidthKatakana; } });
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":";;;AAAA,mDAAmD;AACnD,uDAAsD;AAA7C,8GAAA,aAAa,OAAA;AAGtB,qCAAgE;AAAvD,2GAAA,kBAAkB,OAAA;AAAE,sGAAA,aAAa,OAAA;AAE1C,+CAW0B;AAVtB,iHAAA,mBAAmB,OAAA;AACnB,0GAAA,YAAY,OAAA;AACZ,iHAAA,mBAAmB,OAAA;AACnB,0GAAA,YAAY,OAAA;AACZ,sGAAA,QAAQ,OAAA;AACR,mHAAA,qBAAqB,OAAA;AACrB,wGAAA,UAAU,OAAA;AACV,wGAAA,UAAU,OAAA;AACV,oGAAA,MAAM,OAAA;AACN,iHAAA,mBAAmB,OAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const createLaravelAxios: (baseURL: string) => import("axios").AxiosInstance;
|
|
2
|
+
/**
|
|
3
|
+
* Get CSRF cookie before making authenticated requests
|
|
4
|
+
* Required for Laravel Sanctum cookie-based authentication
|
|
5
|
+
*/
|
|
6
|
+
export declare const getCsrfCookie: (baseURL: string) => Promise<void>;
|
|
7
|
+
//# sourceMappingURL=axios.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"axios.d.ts","sourceRoot":"","sources":["../../../src/runtime/lib/axios.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,kBAAkB,GAAI,SAAS,MAAM,kCAqCjD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAU,SAAS,MAAM,KAAG,OAAO,CAAC,IAAI,CAIjE,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getCsrfCookie = exports.createLaravelAxios = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
// Create axios instance for Laravel API
|
|
9
|
+
const createLaravelAxios = (baseURL) => {
|
|
10
|
+
const axiosInstance = axios_1.default.create({
|
|
11
|
+
baseURL,
|
|
12
|
+
timeout: 30000,
|
|
13
|
+
withCredentials: true,
|
|
14
|
+
headers: {
|
|
15
|
+
'Accept': 'application/json',
|
|
16
|
+
'Content-Type': 'application/json',
|
|
17
|
+
},
|
|
18
|
+
xsrfCookieName: 'XSRF-TOKEN',
|
|
19
|
+
xsrfHeaderName: 'X-XSRF-TOKEN',
|
|
20
|
+
});
|
|
21
|
+
// Helper to get cookie value by name
|
|
22
|
+
function getCookie(name) {
|
|
23
|
+
if (typeof document === 'undefined')
|
|
24
|
+
return null;
|
|
25
|
+
const value = `; ${document.cookie}`;
|
|
26
|
+
const parts = value.split(`; ${name}=`);
|
|
27
|
+
if (parts.length === 2)
|
|
28
|
+
return parts.pop()?.split(';').shift() || null;
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
// Request interceptor
|
|
32
|
+
axiosInstance.interceptors.request.use((config) => {
|
|
33
|
+
const token = getCookie('XSRF-TOKEN');
|
|
34
|
+
if (token) {
|
|
35
|
+
config.headers['X-XSRF-TOKEN'] = decodeURIComponent(token);
|
|
36
|
+
}
|
|
37
|
+
return config;
|
|
38
|
+
}, (error) => {
|
|
39
|
+
return Promise.reject(error);
|
|
40
|
+
});
|
|
41
|
+
return axiosInstance;
|
|
42
|
+
};
|
|
43
|
+
exports.createLaravelAxios = createLaravelAxios;
|
|
44
|
+
/**
|
|
45
|
+
* Get CSRF cookie before making authenticated requests
|
|
46
|
+
* Required for Laravel Sanctum cookie-based authentication
|
|
47
|
+
*/
|
|
48
|
+
const getCsrfCookie = async (baseURL) => {
|
|
49
|
+
await axios_1.default.get(`${baseURL}/sanctum/csrf-cookie`, {
|
|
50
|
+
withCredentials: true,
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
exports.getCsrfCookie = getCsrfCookie;
|
|
54
|
+
//# sourceMappingURL=axios.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"axios.js","sourceRoot":"","sources":["../../../src/runtime/lib/axios.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAsE;AAEtE,wCAAwC;AACjC,MAAM,kBAAkB,GAAG,CAAC,OAAe,EAAE,EAAE;IAClD,MAAM,aAAa,GAAG,eAAK,CAAC,MAAM,CAAC;QAC/B,OAAO;QACP,OAAO,EAAE,KAAK;QACd,eAAe,EAAE,IAAI;QACrB,OAAO,EAAE;YACL,QAAQ,EAAE,kBAAkB;YAC5B,cAAc,EAAE,kBAAkB;SACrC;QACD,cAAc,EAAE,YAAY;QAC5B,cAAc,EAAE,cAAc;KACjC,CAAC,CAAC;IAEH,qCAAqC;IACrC,SAAS,SAAS,CAAC,IAAY;QAC3B,IAAI,OAAO,QAAQ,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC;QACjD,MAAM,KAAK,GAAG,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;QACvE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,sBAAsB;IACtB,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAClC,CAAC,MAAkC,EAAE,EAAE;QACnC,MAAM,KAAK,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;QACtC,IAAI,KAAK,EAAE,CAAC;YACR,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC,EACD,CAAC,KAAiB,EAAE,EAAE;QAClB,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC,CACJ,CAAC;IAEF,OAAO,aAAa,CAAC;AACzB,CAAC,CAAC;AArCW,QAAA,kBAAkB,sBAqC7B;AAEF;;;GAGG;AACI,MAAM,aAAa,GAAG,KAAK,EAAE,OAAe,EAAiB,EAAE;IAClE,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,sBAAsB,EAAE;QAC9C,eAAe,EAAE,IAAI;KACxB,CAAC,CAAC;AACP,CAAC,CAAC;AAJW,QAAA,aAAa,iBAIxB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { Rule } from 'antd/es/form';
|
|
2
|
+
/**
|
|
3
|
+
* Regular expression patterns for Japanese character validation
|
|
4
|
+
*/
|
|
5
|
+
export declare const VALIDATION_PATTERNS: {
|
|
6
|
+
readonly KATAKANA: RegExp;
|
|
7
|
+
readonly HIRAGANA: RegExp;
|
|
8
|
+
readonly KANA: RegExp;
|
|
9
|
+
readonly HALF_WIDTH_KATAKANA: RegExp;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Ant Design validation rule for full-width katakana (includes numbers)
|
|
13
|
+
* Accepts: Katakana + full-width numbers (0-9) + half-width numbers (0-9)
|
|
14
|
+
*/
|
|
15
|
+
export declare const katakanaRule: (message?: string) => Rule;
|
|
16
|
+
/**
|
|
17
|
+
* Ant Design validation rule for katakana with numbers
|
|
18
|
+
* Alias for katakanaRule with clearer naming
|
|
19
|
+
* Use for: company name kana, shop name kana, address kana, etc.
|
|
20
|
+
*/
|
|
21
|
+
export declare const kanaWithNumbersRule: (message?: string) => Rule;
|
|
22
|
+
/**
|
|
23
|
+
* Ant Design validation rule for hiragana
|
|
24
|
+
*/
|
|
25
|
+
export declare const hiraganaRule: (message?: string) => Rule;
|
|
26
|
+
/**
|
|
27
|
+
* Ant Design validation rule for kana (katakana or hiragana)
|
|
28
|
+
*/
|
|
29
|
+
export declare const kanaRule: (message?: string) => Rule;
|
|
30
|
+
/**
|
|
31
|
+
* Ant Design validation rule for half-width katakana
|
|
32
|
+
*/
|
|
33
|
+
export declare const halfWidthKatakanaRule: (message?: string) => Rule;
|
|
34
|
+
/**
|
|
35
|
+
* Validator function that checks if a string contains only full-width katakana
|
|
36
|
+
*/
|
|
37
|
+
export declare const isKatakana: (value: string) => boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Validator function that checks if a string contains only hiragana
|
|
40
|
+
*/
|
|
41
|
+
export declare const isHiragana: (value: string) => boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Validator function that checks if a string contains only kana (katakana or hiragana)
|
|
44
|
+
*/
|
|
45
|
+
export declare const isKana: (value: string) => boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Validator function that checks if a string contains only half-width katakana
|
|
48
|
+
*/
|
|
49
|
+
export declare const isHalfWidthKatakana: (value: string) => boolean;
|
|
50
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/runtime/lib/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;CAatB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,UAAU,MAAM,KAAG,IAG9C,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,aAVO,MAAM,KAAG,IAUD,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,UAAU,MAAM,KAAG,IAG9C,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,UAAU,MAAM,KAAG,IAG1C,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,UAAU,MAAM,KAAG,IAGvD,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,OAE1C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,OAE1C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM,GAAI,OAAO,MAAM,KAAG,OAEtC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,OAAO,MAAM,KAAG,OAEnD,CAAC"}
|