@extrahorizon/exh-cli 1.6.0 → 1.6.1-dev-45-24bd931
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
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Extra Horizon CLI changelog
|
|
2
2
|
|
|
3
|
+
### v1.6.1
|
|
4
|
+
* No longer logging the full schemas when syncing
|
|
5
|
+
* Fixed `exh data schemas sync` not being able to traverse an object definition with only `additionalProperties` set
|
|
6
|
+
|
|
3
7
|
### v1.6.0
|
|
4
8
|
* Fixed some security vulnerabilities in the dependencies (Thanks @tran-simon)
|
|
5
9
|
* Removed the update notifier. The version of the package we used had security vulnerabilities and we're unable to migrate to the latest version right now. We'll look into this again in the future.
|
|
@@ -111,7 +111,7 @@ _SchemaVerify_instances = new WeakSet(), _SchemaVerify_verifyMetaSchema = functi
|
|
|
111
111
|
if (!this.ajv.validateSchema(tmpSchema)) {
|
|
112
112
|
return { ok: false, errors: transformAjvErrors('', this.ajv.errors) };
|
|
113
113
|
}
|
|
114
|
-
const errors = getIdInObjectArrayErrors(this.schema
|
|
114
|
+
const errors = getIdInObjectArrayErrors(this.schema);
|
|
115
115
|
if (errors.length > 0) {
|
|
116
116
|
return { ok: false, errors: errors.map(path => `The following id property is not allowed: ${path}`) };
|
|
117
117
|
}
|
|
@@ -179,24 +179,29 @@ _SchemaVerify_instances = new WeakSet(), _SchemaVerify_verifyMetaSchema = functi
|
|
|
179
179
|
}
|
|
180
180
|
return { ok, errors };
|
|
181
181
|
};
|
|
182
|
-
function getIdInObjectArrayErrors(
|
|
182
|
+
function getIdInObjectArrayErrors(configuration, pathPrefix = '') {
|
|
183
|
+
if (!configuration) {
|
|
184
|
+
return [];
|
|
185
|
+
}
|
|
183
186
|
const pathsWithIdInArray = [];
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
value = value.items;
|
|
189
|
-
name = `${name}.items`;
|
|
190
|
-
}
|
|
191
|
-
if (value.type === 'array' && value.items.type === 'object') {
|
|
192
|
-
if ('id' in value.items.properties) {
|
|
193
|
-
pathsWithIdInArray.push([...path, `${name}.items.properties`, 'id'].join('.'));
|
|
187
|
+
if (configuration.type === 'object' || isSchemaConfiguration(configuration)) {
|
|
188
|
+
if (configuration.properties) {
|
|
189
|
+
for (const [name, value] of Object.entries(configuration.properties)) {
|
|
190
|
+
pathsWithIdInArray.push(...getIdInObjectArrayErrors(value, `${pathPrefix}properties.${name}.`));
|
|
194
191
|
}
|
|
195
|
-
pathsWithIdInArray.push(...getIdInObjectArrayErrors(value.items.properties, [...path, `${name}.items.properties`]));
|
|
196
192
|
}
|
|
197
|
-
if (
|
|
198
|
-
pathsWithIdInArray.push(...getIdInObjectArrayErrors(
|
|
193
|
+
if (configuration.additionalProperties) {
|
|
194
|
+
pathsWithIdInArray.push(...getIdInObjectArrayErrors(configuration.additionalProperties, `${pathPrefix}additionalProperties.`));
|
|
199
195
|
}
|
|
200
196
|
}
|
|
197
|
+
if (configuration.type === 'array') {
|
|
198
|
+
if (configuration.items.type === 'object' && configuration.items.properties?.id) {
|
|
199
|
+
pathsWithIdInArray.push(`${pathPrefix}items.properties.id`);
|
|
200
|
+
}
|
|
201
|
+
pathsWithIdInArray.push(...getIdInObjectArrayErrors(configuration.items, `${pathPrefix}items.`));
|
|
202
|
+
}
|
|
201
203
|
return pathsWithIdInArray;
|
|
202
204
|
}
|
|
205
|
+
function isSchemaConfiguration(configuration) {
|
|
206
|
+
return configuration && configuration.properties;
|
|
207
|
+
}
|
|
@@ -57,7 +57,6 @@ _SyncSchema_instances = new WeakSet(), _SyncSchema_syncRootAttributes = async fu
|
|
|
57
57
|
await schemaRepository.updateSchema(this.sdk, this.cloudSchema.id, diff);
|
|
58
58
|
}
|
|
59
59
|
}, _SyncSchema_syncProperties = async function _SyncSchema_syncProperties() {
|
|
60
|
-
console.log(JSON.stringify({ local: this.localSchema, cloud: this.cloudSchema }, null, 2));
|
|
61
60
|
const propertiesDiff = compareSchemaKey(this.localSchema, this.cloudSchema, 'properties');
|
|
62
61
|
if (this.dry) {
|
|
63
62
|
reportSchemaChanges(`Schema ${this.cloudSchema.name} - Properties`, propertiesDiff);
|