@volcanicminds/backend 2.2.5 → 2.2.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../lib/loader/schemas.ts"],"names":[],"mappings":"AAIA,wBAAsB,KAAK,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAyEtD"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../lib/loader/schemas.ts"],"names":[],"mappings":"AAKA,wBAAsB,KAAK,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CA0FtD"}
@@ -1,3 +1,4 @@
1
+ import _ from 'lodash';
1
2
  import { normalizePatterns } from '../util/path.js';
2
3
  import { globSync } from 'glob';
3
4
  import path from 'path';
@@ -13,7 +14,6 @@ export async function apply(server) {
13
14
  continue;
14
15
  try {
15
16
  const schemaModule = await import(f);
16
- const schemaClass = schemaModule.default || schemaModule;
17
17
  const schemaNames = Object.keys(schemaModule);
18
18
  schemaNames.forEach((name) => {
19
19
  const schema = schemaModule[name];
@@ -27,11 +27,6 @@ export async function apply(server) {
27
27
  log.w && log.warn(`Could not load custom schema file: ${f}`, e);
28
28
  }
29
29
  }
30
- customSchemas.forEach((schema) => {
31
- log.trace(`* Registering custom schema [${schema.$id}]`);
32
- server.addSchema(schema);
33
- schemaCount++;
34
- });
35
30
  log.t && log.trace('Looking for base schemas in ' + baseSchemaPath);
36
31
  const baseFiles = globSync(baseSchemaPath, { windowsPathsNoEscape: true });
37
32
  for (const f of baseFiles) {
@@ -42,20 +37,30 @@ export async function apply(server) {
42
37
  const schemaModule = await import(f);
43
38
  const schemaNames = Object.keys(schemaModule);
44
39
  schemaNames.forEach((name) => {
45
- const schema = schemaModule[name];
46
- if (schema && typeof schema === 'object' && schema.$id) {
47
- if (customSchemaIds.has(schema.$id)) {
48
- log.w &&
49
- log.warn(`* Base schema [${schema.$id}] from ${schemaFileName} is overridden by a custom schema and will be ignored.`);
40
+ const baseSchema = schemaModule[name];
41
+ if (baseSchema && typeof baseSchema === 'object' && baseSchema.$id) {
42
+ if (customSchemaIds.has(baseSchema.$id)) {
43
+ const customSchema = customSchemas.find((s) => s.$id === baseSchema.$id);
44
+ if (customSchema) {
45
+ const customRequired = Array.isArray(customSchema.required) ? customSchema.required : [];
46
+ const baseRequired = Array.isArray(baseSchema.required) ? baseSchema.required : [];
47
+ const mergedRequired = [...new Set([...customRequired, ...baseRequired])];
48
+ _.defaultsDeep(customSchema, baseSchema);
49
+ if (mergedRequired.length > 0) {
50
+ customSchema.required = mergedRequired;
51
+ }
52
+ log.d && log.debug(`* Schema [${baseSchema.$id}] deeply merged with core definition`);
53
+ log.w && log.warn(`* Schema [${baseSchema.$id}] overrided with custom definition`);
54
+ }
50
55
  }
51
56
  else {
52
- log.trace(`* Registering base schema [${schema.$id}] from ${schemaFileName}`);
53
- server.addSchema(schema);
57
+ log.trace(`* Schema [${baseSchema.$id}] from ${schemaFileName} registeerd`);
58
+ server.addSchema(baseSchema);
54
59
  schemaCount++;
55
60
  }
56
61
  }
57
62
  else if (name !== 'default') {
58
- log.w && log.warn(`* Schema with no $id found in ${schemaFileName} (export ${name}), cannot be registered.`);
63
+ log.w && log.warn(`* Schema with no $id found in ${schemaFileName} (export ${name}), cannot be registered`);
59
64
  }
60
65
  });
61
66
  }
@@ -63,6 +68,16 @@ export async function apply(server) {
63
68
  log.w && log.warn(`Could not load base schema file: ${f}`, e);
64
69
  }
65
70
  }
71
+ customSchemas.forEach((schema) => {
72
+ log.trace(`* Custom schema [${schema.$id}] registered`);
73
+ try {
74
+ server.addSchema(schema);
75
+ schemaCount++;
76
+ }
77
+ catch (e) {
78
+ log.e && log.error(`Error registering schema ${schema.$id}: ${e.message}`);
79
+ }
80
+ });
66
81
  log.d && log.debug(`Schemas loaded: ${schemaCount} referenceable by $ref`);
67
82
  }
68
83
  //# sourceMappingURL=schemas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../lib/loader/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../lib/loader/schemas.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import _ from 'lodash'
1
2
  import { normalizePatterns } from '../util/path.js'
2
3
  import { globSync } from 'glob'
3
4
  import path from 'path'
@@ -20,7 +21,6 @@ export async function apply(server: any): Promise<void> {
20
21
 
21
22
  try {
22
23
  const schemaModule = await import(f)
23
- const schemaClass = schemaModule.default || schemaModule
24
24
  const schemaNames = Object.keys(schemaModule)
25
25
 
26
26
  schemaNames.forEach((name) => {
@@ -35,12 +35,6 @@ export async function apply(server: any): Promise<void> {
35
35
  }
36
36
  }
37
37
 
38
- customSchemas.forEach((schema) => {
39
- log.trace(`* Registering custom schema [${schema.$id}]`)
40
- server.addSchema(schema)
41
- schemaCount++
42
- })
43
-
44
38
  log.t && log.trace('Looking for base schemas in ' + baseSchemaPath)
45
39
  const baseFiles = globSync(baseSchemaPath, { windowsPathsNoEscape: true })
46
40
 
@@ -53,20 +47,34 @@ export async function apply(server: any): Promise<void> {
53
47
  const schemaNames = Object.keys(schemaModule)
54
48
 
55
49
  schemaNames.forEach((name) => {
56
- const schema = schemaModule[name]
57
- if (schema && typeof schema === 'object' && schema.$id) {
58
- if (customSchemaIds.has(schema.$id)) {
59
- log.w &&
60
- log.warn(
61
- `* Base schema [${schema.$id}] from ${schemaFileName} is overridden by a custom schema and will be ignored.`
62
- )
50
+ const baseSchema = schemaModule[name]
51
+
52
+ if (baseSchema && typeof baseSchema === 'object' && baseSchema.$id) {
53
+ if (customSchemaIds.has(baseSchema.$id)) {
54
+ // SMART DEEP MERGE
55
+ const customSchema = customSchemas.find((s) => s.$id === baseSchema.$id)
56
+
57
+ if (customSchema) {
58
+ const customRequired = Array.isArray(customSchema.required) ? customSchema.required : []
59
+ const baseRequired = Array.isArray(baseSchema.required) ? baseSchema.required : []
60
+ const mergedRequired = [...new Set([...customRequired, ...baseRequired])]
61
+
62
+ _.defaultsDeep(customSchema, baseSchema)
63
+
64
+ if (mergedRequired.length > 0) {
65
+ customSchema.required = mergedRequired
66
+ }
67
+
68
+ log.d && log.debug(`* Schema [${baseSchema.$id}] deeply merged with core definition`)
69
+ log.w && log.warn(`* Schema [${baseSchema.$id}] overrided with custom definition`)
70
+ }
63
71
  } else {
64
- log.trace(`* Registering base schema [${schema.$id}] from ${schemaFileName}`)
65
- server.addSchema(schema)
72
+ log.trace(`* Schema [${baseSchema.$id}] from ${schemaFileName} registeerd`)
73
+ server.addSchema(baseSchema)
66
74
  schemaCount++
67
75
  }
68
76
  } else if (name !== 'default') {
69
- log.w && log.warn(`* Schema with no $id found in ${schemaFileName} (export ${name}), cannot be registered.`)
77
+ log.w && log.warn(`* Schema with no $id found in ${schemaFileName} (export ${name}), cannot be registered`)
70
78
  }
71
79
  })
72
80
  } catch (e) {
@@ -74,5 +82,15 @@ export async function apply(server: any): Promise<void> {
74
82
  }
75
83
  }
76
84
 
85
+ customSchemas.forEach((schema) => {
86
+ log.trace(`* Custom schema [${schema.$id}] registered`)
87
+ try {
88
+ server.addSchema(schema)
89
+ schemaCount++
90
+ } catch (e: any) {
91
+ log.e && log.error(`Error registering schema ${schema.$id}: ${e.message}`)
92
+ }
93
+ })
94
+
77
95
  log.d && log.debug(`Schemas loaded: ${schemaCount} referenceable by $ref`)
78
96
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volcanicminds/backend",
3
- "version": "2.2.5",
3
+ "version": "2.2.7",
4
4
  "type": "module",
5
5
  "codename": "rome",
6
6
  "license": "MIT",