mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-04-04 14:29:45 +00:00
fix: Properties (#1175)
This commit is contained in:
@@ -10,7 +10,7 @@ function has<Obj extends {}, K extends string>(obj: Obj, key: K): obj is (Obj &
|
|||||||
|
|
||||||
|
|
||||||
const ajv = new Ajv({ jsonPointers: true, allErrors: true, nullable: true })
|
const ajv = new Ajv({ jsonPointers: true, allErrors: true, nullable: true })
|
||||||
const ajvWithDefaults = new Ajv({ jsonPointers: true, allErrors: true, useDefaults: true, nullable: true, removeAdditional: 'failing' })
|
const ajvWithDefaults = new Ajv({ jsonPointers: true, allErrors: true, useDefaults: true, nullable: true, removeAdditional:true })
|
||||||
|
|
||||||
const schemaV1 = {
|
const schemaV1 = {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
@@ -28,7 +28,10 @@ const schemaV1Compiled = ajv.compile(schemaV1)
|
|||||||
function isSchemaV1(properties: unknown): properties is PropertiesV1 {
|
function isSchemaV1(properties: unknown): properties is PropertiesV1 {
|
||||||
return schemaV1Compiled(properties) as any
|
return schemaV1Compiled(properties) as any
|
||||||
}
|
}
|
||||||
const schemaV1CompiledWithDefaults = ajvWithDefaults.compile(schemaV1)
|
const _schemaV1CompiledWithDefaults = ajvWithDefaults.compile(schemaV1)
|
||||||
|
function schemaV1CompiledWithDefaults(properties: unknown): properties is PropertiesV1 {
|
||||||
|
return _schemaV1CompiledWithDefaults(properties) as any
|
||||||
|
}
|
||||||
const schemaV2 = {
|
const schemaV2 = {
|
||||||
'anyOf': [
|
'anyOf': [
|
||||||
{
|
{
|
||||||
@@ -117,9 +120,11 @@ function parsePropertiesV1Permissive (properties: unknown, errorCallback: (err:
|
|||||||
errorCallback(new TypeError(`${properties} is not an array`))
|
errorCallback(new TypeError(`${properties} is not an array`))
|
||||||
return {}
|
return {}
|
||||||
}
|
}
|
||||||
return properties.reduce((prev: PackagePropertiesV2, cur: unknown, idx: number) => {
|
const parsedProperties : PackagePropertiesV2 = {};
|
||||||
|
for(const idx in properties) {
|
||||||
|
const cur:unknown = properties[idx]
|
||||||
if(isSchemaV1(cur)) {
|
if(isSchemaV1(cur)) {
|
||||||
prev[cur.name] = {
|
parsedProperties[cur.name] = {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
value: cur.value,
|
value: cur.value,
|
||||||
description: cur.description,
|
description: cur.description,
|
||||||
@@ -136,14 +141,24 @@ function parsePropertiesV1Permissive (properties: unknown, errorCallback: (err:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!schemaV1CompiledWithDefaults(cur)) {
|
if (!schemaV1CompiledWithDefaults(cur)) {
|
||||||
for (let err of schemaV1CompiledWithDefaults.errors) {
|
for (let err of _schemaV1CompiledWithDefaults.errors) {
|
||||||
errorCallback(new Error(`/data/${idx}${err.dataPath}: ${err.message}`))
|
errorCallback(new Error(`/data/${idx}${err.dataPath}: ${err.message}`))
|
||||||
}
|
}
|
||||||
return prev
|
continue
|
||||||
|
}
|
||||||
|
parsedProperties[cur.name] = {
|
||||||
|
|
||||||
|
type: 'string',
|
||||||
|
value: cur.value,
|
||||||
|
description: cur.description,
|
||||||
|
copyable: cur.copyable,
|
||||||
|
qr: cur.qr,
|
||||||
|
masked: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return prev
|
|
||||||
}, { })
|
}
|
||||||
|
return parsedProperties
|
||||||
}
|
}
|
||||||
function parsePropertiesV2Permissive (properties: unknown, errorCallback: (err: Error) => any): PackageProperties {
|
function parsePropertiesV2Permissive (properties: unknown, errorCallback: (err: Error) => any): PackageProperties {
|
||||||
if (typeof properties !== 'object' || properties === null) {
|
if (typeof properties !== 'object' || properties === null) {
|
||||||
@@ -212,4 +227,5 @@ interface PackagePropertyString extends PackagePropertyBase {
|
|||||||
interface PackagePropertyObject extends PackagePropertyBase {
|
interface PackagePropertyObject extends PackagePropertyBase {
|
||||||
type: 'object'
|
type: 'object'
|
||||||
value: PackagePropertiesV2
|
value: PackagePropertiesV2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user