Upgrade dependent version: github.com/open-policy-agent/opa v0.18.0 -> v0.45.0 Signed-off-by: hongzhouzi <hongzhouzi@kubesphere.io> Signed-off-by: hongzhouzi <hongzhouzi@kubesphere.io>
152 lines
4.1 KiB
Go
152 lines
4.1 KiB
Go
// Copyright 2015 xeipuuv ( https://github.com/xeipuuv )
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
// author xeipuuv
|
|
// author-github https://github.com/xeipuuv
|
|
// author-mail xeipuuv@gmail.com
|
|
//
|
|
// repository-name gojsonschema
|
|
// repository-desc An implementation of JSON Schema, based on IETF's draft v4 - Go language.
|
|
//
|
|
// description Defines the structure of a sub-SubSchema.
|
|
// A sub-SubSchema can contain other sub-schemas.
|
|
//
|
|
// created 27-02-2013
|
|
|
|
package gojsonschema
|
|
|
|
import (
|
|
"math/big"
|
|
"regexp"
|
|
|
|
"github.com/xeipuuv/gojsonreference"
|
|
)
|
|
|
|
// Constants
|
|
const (
|
|
KeySchema = "$schema"
|
|
KeyID = "id"
|
|
KeyIDNew = "$id"
|
|
KeyRef = "$ref"
|
|
KeyTitle = "title"
|
|
KeyDescription = "description"
|
|
KeyType = "type"
|
|
KeyItems = "items"
|
|
KeyAdditionalItems = "additionalItems"
|
|
KeyProperties = "properties"
|
|
KeyPatternProperties = "patternProperties"
|
|
KeyAdditionalProperties = "additionalProperties"
|
|
KeyPropertyNames = "propertyNames"
|
|
KeyDefinitions = "definitions"
|
|
KeyMultipleOf = "multipleOf"
|
|
KeyMinimum = "minimum"
|
|
KeyMaximum = "maximum"
|
|
KeyExclusiveMinimum = "exclusiveMinimum"
|
|
KeyExclusiveMaximum = "exclusiveMaximum"
|
|
KeyMinLength = "minLength"
|
|
KeyMaxLength = "maxLength"
|
|
KeyPattern = "pattern"
|
|
KeyFormat = "format"
|
|
KeyMinProperties = "minProperties"
|
|
KeyMaxProperties = "maxProperties"
|
|
KeyDependencies = "dependencies"
|
|
KeyRequired = "required"
|
|
KeyMinItems = "minItems"
|
|
KeyMaxItems = "maxItems"
|
|
KeyUniqueItems = "uniqueItems"
|
|
KeyContains = "contains"
|
|
KeyConst = "const"
|
|
KeyEnum = "enum"
|
|
KeyOneOf = "oneOf"
|
|
KeyAnyOf = "anyOf"
|
|
KeyAllOf = "allOf"
|
|
KeyNot = "not"
|
|
KeyIf = "if"
|
|
KeyThen = "then"
|
|
KeyElse = "else"
|
|
)
|
|
|
|
// SubSchema holds a sub schema
|
|
type SubSchema struct {
|
|
Draft *Draft
|
|
|
|
// basic SubSchema meta properties
|
|
ID *gojsonreference.JsonReference
|
|
title *string
|
|
description *string
|
|
|
|
Property string
|
|
|
|
// Quick pass/fail for boolean schemas
|
|
pass *bool
|
|
|
|
// Types associated with the SubSchema
|
|
Types jsonSchemaType
|
|
|
|
// Reference url
|
|
Ref *gojsonreference.JsonReference
|
|
// Schema referenced
|
|
RefSchema *SubSchema
|
|
|
|
// hierarchy
|
|
Parent *SubSchema
|
|
ItemsChildren []*SubSchema
|
|
ItemsChildrenIsSingleSchema bool
|
|
PropertiesChildren []*SubSchema
|
|
|
|
// validation : number / integer
|
|
multipleOf *big.Rat
|
|
maximum *big.Rat
|
|
exclusiveMaximum *big.Rat
|
|
minimum *big.Rat
|
|
exclusiveMinimum *big.Rat
|
|
|
|
// validation : string
|
|
minLength *int
|
|
maxLength *int
|
|
pattern *regexp.Regexp
|
|
format string
|
|
|
|
// validation : object
|
|
minProperties *int
|
|
maxProperties *int
|
|
required []string
|
|
|
|
dependencies map[string]interface{}
|
|
additionalProperties interface{}
|
|
patternProperties map[string]*SubSchema
|
|
propertyNames *SubSchema
|
|
|
|
// validation : array
|
|
minItems *int
|
|
maxItems *int
|
|
uniqueItems bool
|
|
contains *SubSchema
|
|
|
|
additionalItems interface{}
|
|
|
|
// validation : all
|
|
_const *string //const is a golang keyword
|
|
enum []string
|
|
|
|
// validation : SubSchema
|
|
oneOf []*SubSchema
|
|
AnyOf []*SubSchema
|
|
AllOf []*SubSchema
|
|
not *SubSchema
|
|
_if *SubSchema // if/else are golang keywords
|
|
_then *SubSchema
|
|
_else *SubSchema
|
|
}
|