adminforth 2.34.0 → 2.35.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 (40) hide show
  1. package/commands/createApp/templates/api.ts.hbs +25 -16
  2. package/commands/createApp/templates/package.json.hbs +2 -1
  3. package/dist/basePlugin.js +1 -1
  4. package/dist/basePlugin.js.map +1 -1
  5. package/dist/index.d.ts +2 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +4 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/modules/restApi.d.ts.map +1 -1
  10. package/dist/modules/restApi.js +495 -4
  11. package/dist/modules/restApi.js.map +1 -1
  12. package/dist/modules/utils.d.ts +1 -1
  13. package/dist/modules/utils.d.ts.map +1 -1
  14. package/dist/modules/utils.js +3 -5
  15. package/dist/modules/utils.js.map +1 -1
  16. package/dist/servers/express.d.ts +18 -7
  17. package/dist/servers/express.d.ts.map +1 -1
  18. package/dist/servers/express.js +137 -1
  19. package/dist/servers/express.js.map +1 -1
  20. package/dist/servers/openapi.d.ts +25 -0
  21. package/dist/servers/openapi.d.ts.map +1 -0
  22. package/dist/servers/openapi.js +92 -0
  23. package/dist/servers/openapi.js.map +1 -0
  24. package/dist/servers/openapiDocument.d.ts +12 -0
  25. package/dist/servers/openapiDocument.d.ts.map +1 -0
  26. package/dist/servers/openapiDocument.js +313 -0
  27. package/dist/servers/openapiDocument.js.map +1 -0
  28. package/dist/spa/package.json +1 -0
  29. package/dist/spa/pnpm-lock.yaml +346 -310
  30. package/dist/spa/pnpm-workspace.yaml +4 -0
  31. package/dist/spa/src/App.vue +1 -0
  32. package/dist/spa/src/stores/core.ts +15 -1
  33. package/dist/spa/src/types/Back.ts +109 -23
  34. package/dist/spa/src/types/adapters/CompletionAdapter.ts +10 -0
  35. package/dist/types/Back.d.ts +113 -18
  36. package/dist/types/Back.d.ts.map +1 -1
  37. package/dist/types/Back.js.map +1 -1
  38. package/dist/types/adapters/CompletionAdapter.d.ts +8 -1
  39. package/dist/types/adapters/CompletionAdapter.d.ts.map +1 -1
  40. package/package.json +5 -2
@@ -0,0 +1,313 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ const COMPONENT_REF_PREFIX = '#/components/schemas/';
13
+ const JSON_SCHEMA_DIALECT = 'https://json-schema.org/draft/2020-12/schema';
14
+ const CONDITIONAL_NOTE = 'Runtime applies additional conditional validation rules that are documented in descriptions instead of nested schema conditionals.';
15
+ const SINGLE_OR_ARRAY_NOTE = 'Runtime also accepts a single object here, but the documented shape uses the array form because it is more stable for API reference UIs and generated clients.';
16
+ function isSchemaObject(value) {
17
+ return !!value && typeof value === 'object' && !Array.isArray(value);
18
+ }
19
+ function toPascalCase(value) {
20
+ return value
21
+ .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
22
+ .split(/[^a-zA-Z0-9]+/)
23
+ .filter(Boolean)
24
+ .map((segment) => segment.charAt(0).toUpperCase() + segment.slice(1))
25
+ .join('');
26
+ }
27
+ function sanitizeComponentName(value) {
28
+ const normalized = toPascalCase(value);
29
+ if (!normalized) {
30
+ return 'SchemaComponent';
31
+ }
32
+ return /^[A-Za-z_]/.test(normalized) ? normalized : `Schema${normalized}`;
33
+ }
34
+ function createRouteComponentName(route, kind) {
35
+ return sanitizeComponentName(`${route.method} ${route.path} ${kind}`);
36
+ }
37
+ function appendDescription(existing, note) {
38
+ return existing ? `${existing}\n\n${note}` : note;
39
+ }
40
+ function extractLocalRefKey(ref) {
41
+ if (!ref.startsWith('#/$defs/')) {
42
+ return undefined;
43
+ }
44
+ return ref.slice('#/$defs/'.length);
45
+ }
46
+ function hasCompositeKeywords(schema) {
47
+ return Array.isArray(schema.anyOf)
48
+ || Array.isArray(schema.oneOf)
49
+ || Array.isArray(schema.allOf)
50
+ || Array.isArray(schema.prefixItems)
51
+ || '$defs' in schema
52
+ || 'if' in schema
53
+ || 'then' in schema
54
+ || 'else' in schema;
55
+ }
56
+ function shouldHoistSchema(schema) {
57
+ if (typeof schema.$ref === 'string' && Object.keys(schema).length === 1) {
58
+ return false;
59
+ }
60
+ if (typeof schema.title === 'string' && schema.title.trim().length > 0) {
61
+ return true;
62
+ }
63
+ if (hasCompositeKeywords(schema)) {
64
+ return true;
65
+ }
66
+ return schema.type === 'object'
67
+ && isSchemaObject(schema.properties)
68
+ && Object.keys(schema.properties).length > 1;
69
+ }
70
+ function createSchemaSignature(schema) {
71
+ return Object.fromEntries(Object.entries(schema)
72
+ .filter(([key]) => key !== 'description' && key !== 'examples' && key !== 'title')
73
+ .map(([key, value]) => {
74
+ if (isSchemaObject(value)) {
75
+ return [key, createSchemaSignature(value)];
76
+ }
77
+ if (Array.isArray(value)) {
78
+ return [
79
+ key,
80
+ value.map((item) => isSchemaObject(item) ? createSchemaSignature(item) : item),
81
+ ];
82
+ }
83
+ return [key, value];
84
+ }));
85
+ }
86
+ function schemasMatch(left, right) {
87
+ if (typeof left.$ref === 'string' || typeof right.$ref === 'string') {
88
+ return left.$ref === right.$ref;
89
+ }
90
+ return JSON.stringify(createSchemaSignature(left)) === JSON.stringify(createSchemaSignature(right));
91
+ }
92
+ function simplifyRequestSchema(schema) {
93
+ const simplifiedSchema = Object.assign({}, schema);
94
+ const notes = [];
95
+ const variants = Array.isArray(simplifiedSchema.oneOf)
96
+ ? simplifiedSchema.oneOf
97
+ : Array.isArray(simplifiedSchema.anyOf)
98
+ ? simplifiedSchema.anyOf
99
+ : null;
100
+ if (variants && variants.length === 2) {
101
+ const arrayVariant = variants.find((option) => isSchemaObject(option) && option.type === 'array' && isSchemaObject(option.items));
102
+ const singleVariant = variants.find((option) => option !== arrayVariant);
103
+ if (arrayVariant
104
+ && singleVariant
105
+ && isSchemaObject(singleVariant)
106
+ && isSchemaObject(arrayVariant.items)
107
+ && schemasMatch(arrayVariant.items, singleVariant)) {
108
+ const { anyOf, oneOf } = simplifiedSchema, rest = __rest(simplifiedSchema, ["anyOf", "oneOf"]);
109
+ Object.assign(simplifiedSchema, rest, {
110
+ type: 'array',
111
+ items: arrayVariant.items,
112
+ });
113
+ delete simplifiedSchema.anyOf;
114
+ delete simplifiedSchema.oneOf;
115
+ notes.push(SINGLE_OR_ARRAY_NOTE);
116
+ }
117
+ }
118
+ if ('if' in simplifiedSchema || 'then' in simplifiedSchema || 'else' in simplifiedSchema) {
119
+ delete simplifiedSchema.if;
120
+ delete simplifiedSchema.then;
121
+ delete simplifiedSchema.else;
122
+ notes.push(CONDITIONAL_NOTE);
123
+ }
124
+ if (Array.isArray(simplifiedSchema.allOf)) {
125
+ const remainingSchemas = simplifiedSchema.allOf.filter((option) => {
126
+ return !(isSchemaObject(option) && ('if' in option || 'then' in option || 'else' in option));
127
+ });
128
+ if (remainingSchemas.length !== simplifiedSchema.allOf.length) {
129
+ if (remainingSchemas.length > 0) {
130
+ simplifiedSchema.allOf = remainingSchemas;
131
+ }
132
+ else {
133
+ delete simplifiedSchema.allOf;
134
+ }
135
+ notes.push(CONDITIONAL_NOTE);
136
+ }
137
+ }
138
+ return { schema: simplifiedSchema, notes };
139
+ }
140
+ function createChildOptions(options, suffix) {
141
+ return Object.assign(Object.assign({}, options), { componentName: `${options.componentName}${toPascalCase(suffix)}` });
142
+ }
143
+ function resolveComponentName(state, schema, preferredName) {
144
+ const existingName = state.componentNames.get(schema);
145
+ if (existingName) {
146
+ return existingName;
147
+ }
148
+ const titledName = typeof schema.title === 'string' && schema.title.trim().length > 0
149
+ ? schema.title
150
+ : preferredName;
151
+ const baseName = sanitizeComponentName(titledName);
152
+ let candidate = baseName;
153
+ let suffix = 2;
154
+ while (state.usedNames.has(candidate)) {
155
+ candidate = `${baseName}${suffix}`;
156
+ suffix += 1;
157
+ }
158
+ state.usedNames.add(candidate);
159
+ state.componentNames.set(schema, candidate);
160
+ return candidate;
161
+ }
162
+ function registerComponent(state, schema, options) {
163
+ const componentName = resolveComponentName(state, schema, options.componentName);
164
+ if (!state.components[componentName]) {
165
+ state.components[componentName] = {};
166
+ state.components[componentName] = normalizeSchema(state, schema, Object.assign(Object.assign({}, options), { componentName }));
167
+ }
168
+ return { $ref: `${COMPONENT_REF_PREFIX}${componentName}` };
169
+ }
170
+ function hoistLocalDefinitions(state, schema, options) {
171
+ const localDefs = new Map(options.localDefs);
172
+ const definitions = isSchemaObject(schema.$defs) ? schema.$defs : undefined;
173
+ if (!definitions) {
174
+ return localDefs;
175
+ }
176
+ const entries = Object.entries(definitions).filter(([, definitionSchema]) => isSchemaObject(definitionSchema));
177
+ entries.forEach(([definitionKey, definitionSchema]) => {
178
+ const preferredName = typeof definitionSchema.title === 'string' && definitionSchema.title.trim().length > 0
179
+ ? definitionSchema.title
180
+ : `${options.componentName}${toPascalCase(definitionKey)}`;
181
+ const componentName = resolveComponentName(state, definitionSchema, preferredName);
182
+ localDefs.set(definitionKey, componentName);
183
+ });
184
+ entries.forEach(([, definitionSchema]) => {
185
+ const componentName = state.componentNames.get(definitionSchema);
186
+ if (!componentName || state.components[componentName]) {
187
+ return;
188
+ }
189
+ state.components[componentName] = {};
190
+ state.components[componentName] = normalizeSchema(state, definitionSchema, Object.assign(Object.assign({}, options), { componentName,
191
+ localDefs }));
192
+ });
193
+ return localDefs;
194
+ }
195
+ function normalizeNestedSchema(state, schema, options) {
196
+ if (typeof schema.$ref === 'string' && Object.keys(schema).length === 1) {
197
+ return normalizeSchema(state, schema, options);
198
+ }
199
+ if (shouldHoistSchema(schema)) {
200
+ return registerComponent(state, schema, options);
201
+ }
202
+ return normalizeSchema(state, schema, options);
203
+ }
204
+ function normalizeSchema(state, schema, options) {
205
+ const localDefs = hoistLocalDefinitions(state, schema, options);
206
+ const { schema: simplifiedSchema, notes } = options.requestMode
207
+ ? simplifyRequestSchema(schema)
208
+ : { schema, notes: [] };
209
+ const normalized = {};
210
+ Object.entries(simplifiedSchema).forEach(([key, value]) => {
211
+ if (key === '$defs' || key === '$schema' || key === '$id') {
212
+ return;
213
+ }
214
+ if (key === '$ref' && typeof value === 'string') {
215
+ const localRefKey = extractLocalRefKey(value);
216
+ normalized.$ref = localRefKey && localDefs.has(localRefKey)
217
+ ? `${COMPONENT_REF_PREFIX}${localDefs.get(localRefKey)}`
218
+ : value;
219
+ return;
220
+ }
221
+ if ((key === 'properties' || key === 'patternProperties' || key === 'dependentSchemas') && isSchemaObject(value)) {
222
+ normalized[key] = Object.fromEntries(Object.entries(value).map(([propertyName, propertySchema]) => {
223
+ if (!isSchemaObject(propertySchema)) {
224
+ return [propertyName, propertySchema];
225
+ }
226
+ return [
227
+ propertyName,
228
+ normalizeNestedSchema(state, propertySchema, Object.assign(Object.assign({}, createChildOptions(options, propertyName)), { localDefs })),
229
+ ];
230
+ }));
231
+ return;
232
+ }
233
+ if ((key === 'items' || key === 'contains' || key === 'additionalProperties' || key === 'propertyNames' || key === 'not' || key === 'unevaluatedProperties' || key === 'unevaluatedItems' || key === 'contentSchema') && isSchemaObject(value)) {
234
+ normalized[key] = normalizeNestedSchema(state, value, Object.assign(Object.assign({}, createChildOptions(options, key === 'additionalProperties' ? 'value' : key === 'propertyNames' ? 'propertyName' : key)), { localDefs }));
235
+ return;
236
+ }
237
+ if ((key === 'anyOf' || key === 'oneOf' || key === 'allOf' || key === 'prefixItems') && Array.isArray(value)) {
238
+ normalized[key] = value.map((option, index) => {
239
+ if (!isSchemaObject(option)) {
240
+ return option;
241
+ }
242
+ return normalizeNestedSchema(state, option, Object.assign(Object.assign({}, createChildOptions(options, `${key}Option${index + 1}`)), { localDefs }));
243
+ });
244
+ return;
245
+ }
246
+ normalized[key] = value;
247
+ });
248
+ if (notes.length > 0) {
249
+ normalized.description = appendDescription(typeof normalized.description === 'string' ? normalized.description : undefined, notes.join(' '));
250
+ }
251
+ return normalized;
252
+ }
253
+ export function buildOpenApiDocument(options) {
254
+ const state = {
255
+ components: {},
256
+ componentNames: new WeakMap(),
257
+ usedNames: new Set(),
258
+ };
259
+ const paths = {};
260
+ options.routes.forEach((route) => {
261
+ if (!route.request_schema && !route.response_schema) {
262
+ return;
263
+ }
264
+ if (!paths[route.path]) {
265
+ paths[route.path] = {};
266
+ }
267
+ paths[route.path][route.method] = Object.assign(Object.assign(Object.assign({}, (route.description ? {
268
+ description: route.description,
269
+ } : {})), (route.request_schema ? {
270
+ requestBody: {
271
+ required: true,
272
+ content: {
273
+ 'application/json': {
274
+ schema: registerComponent(state, route.request_schema, {
275
+ componentName: createRouteComponentName(route, 'request'),
276
+ requestMode: true,
277
+ localDefs: new Map(),
278
+ }),
279
+ },
280
+ },
281
+ },
282
+ } : {})), { responses: {
283
+ 200: route.response_schema ? {
284
+ description: 'Successful response',
285
+ content: {
286
+ 'application/json': {
287
+ schema: registerComponent(state, route.response_schema, {
288
+ componentName: createRouteComponentName(route, 'response'),
289
+ requestMode: false,
290
+ localDefs: new Map(),
291
+ }),
292
+ },
293
+ },
294
+ } : {
295
+ description: 'Successful response',
296
+ },
297
+ } });
298
+ });
299
+ return {
300
+ openapi: '3.1.0',
301
+ jsonSchemaDialect: JSON_SCHEMA_DIALECT,
302
+ info: {
303
+ title: options.title,
304
+ version: options.version,
305
+ description: options.description,
306
+ },
307
+ paths,
308
+ components: {
309
+ schemas: state.components,
310
+ },
311
+ };
312
+ }
313
+ //# sourceMappingURL=openapiDocument.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapiDocument.js","sourceRoot":"","sources":["../../servers/openapiDocument.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,7 @@
36
36
  "vue3-json-viewer": "^2.2.2"
37
37
  },
38
38
  "devDependencies": {
39
+ "ajv": "^8.18.0",
39
40
  "@rushstack/eslint-patch": "^1.8.0",
40
41
  "@tailwindcss/typography": "^0.5.19",
41
42
  "@tsconfig/node20": "^20.1.4",