diff --git a/.gitignore b/.gitignore index 1a07c4f3..59722856 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,7 @@ cmake_install.cmake install_manifest.txt CTestTestfile.cmake .editorconfig +.DS_Store +/zip/* +!/zip/*.docx +!/zip/*.zip diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 00000000..3aa40700 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,5 @@ +# OData Specification Drafts + +This repository contains working drafts for OData specifications: + +* [OData Vocabularies Version 4.0 - Committee Specification Draft 02 / Public Review Draft 02](odata-vocabularies/odata-vocabularies.html) diff --git a/docs/odata-vocabularies/odata-vocabularies.html b/docs/odata-vocabularies/odata-vocabularies.html new file mode 100644 index 00000000..7e9bdb43 --- /dev/null +++ b/docs/odata-vocabularies/odata-vocabularies.html @@ -0,0 +1,4666 @@ + + + + + + + + OData Vocabularies Version 4.0 + + + + + + + +

OASIS Logo

+
+

OData Vocabularies Version 4.0

+

Committee Specification Draft 02 / Public Review Draft 02

+

28 February 2024

+

\(\hbox{}\)

+

This stage:

+

https://docs.oasis-open.org/odata/odata-json-format/v4.0/csprd02/odata-vocabularies-v4.0-csprd02.md (Authoritative)
+https://docs.oasis-open.org/odata/odata-json-format/v4.0/csprd02/odata-vocabularies-v4.0-csprd02.html
+https://docs.oasis-open.org/odata/odata-json-format/v4.0/csprd02/odata-vocabularies-v4.0-csprd02.pdf

+

Previous stage:

+

https://docs.oasis-open.org/odata/odata-json-format/v4.0/csprd01/odata-vocabularies-v4.0-csprd01.md (Authoritative)
+https://docs.oasis-open.org/odata/odata-json-format/v4.0/csprd01/odata-vocabularies-v4.0-csprd01.html
+https://docs.oasis-open.org/odata/odata-json-format/v4.0/csprd01/odata-vocabularies-v4.0-csprd01.pdf

+

Latest stage:

+

https://docs.oasis-open.org/odata/odata-json-format/v4.0/odata-vocabularies-v4.0.md (Authoritative)
+https://docs.oasis-open.org/odata/odata-json-format/v4.0/odata-vocabularies-v4.0.html
+https://docs.oasis-open.org/odata/odata-json-format/v4.0/odata-vocabularies-v4.0.pdf

+

Technical Committee:

+

OASIS Open Data Protocol (OData) TC

+

Chairs:

+

Ralf Handl (ralf.handl@sap.com), SAP SE
+Michael Pizzo (mikep@microsoft.com), Microsoft

+

Editors:

+

Ralf Handl (ralf.handl@sap.com), SAP SE
+Michael Pizzo (mikep@microsoft.com), Microsoft
+Heiko Theißen (heiko.theissen@sap.com), SAP SE

+ +

This specification replaces or supersedes: OData Vocabularies Version 4.0. Edited by Ralf Handl, Michael Pizzo, and Ram Jeyaraman. 08 December 2016. OASIS Committee Specification Draft 01 / Public Review Draft 01. http://docs.oasis-open.org/odata/odata-vocabularies/v4.0/csprd01/odata-vocabularies-v4.0-csprd01.html. Latest version: http://docs.oasis-open.org/odata/odata-vocabularies/v4.0/odata-vocabularies-v4.0.html.

+

This specification is related to:

+ +

Abstract:

+

This prose specification describes a set of OData vocabularies maintained by the OASIS OData Technical Committee. These vocabulary components are continuously evolved. The latest work-in-progress revisions are available at the odata-vocabularies OASIS TC GitHub repository: https://github.com/oasis-tcs/odata-vocabularies.

+

Status:

+

This document was last revised or approved by the OASIS Open Data Protocol (OData) TC on the above date. The level of approval is also listed above. Check the “Latest stage” location noted above for possible later revisions of this document. Any other numbered Versions and other technical work produced by the Technical Committee (TC) are listed at https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=odata#technical.

+

TC members should send comments on this specification to the TC’s email list. Others should send comments to the TC’s public comment list, after subscribing to it by following the instructions at the “Send A Comment” button on the TC’s web page at https://www.oasis-open.org/committees/odata/.

+

This specification is provided under the RF on RAND Terms Mode of the OASIS IPR Policy, the mode chosen when the Technical Committee was established. For information on whether any patents have been disclosed that may be essential to implementing this specification, and any offers of patent licensing terms, please refer to the Intellectual Property Rights section of the TC’s web page (https://www.oasis-open.org/committees/odata/ipr.php).

+

Note that any machine-readable content (Computer Language Definitions) declared Normative for this Work Product is provided in separate plain text files. In the event of a discrepancy between any such plain text file and display content in the Work Product’s prose narrative document(s), the content in the separate plain text file prevails.

+

Key words:

+

The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in BCP 14 RFC2119 and RFC8174 when, and only when, they appear in all capitals, as shown here.

+

Citation format:

+

When referencing this specification the following citation format should be used:

+

[OData-Vocabularies-v4.0]

+

OData Vocabularies Version 4.0. Edited by Ralf Handl, Michael Pizzo, and Heiko Theißen. 28 February 2024. OASIS Committee Specification Draft 02 / Public Review Draft 02. https://docs.oasis-open.org/odata/odata-vocabularies/v4.0/csprd02/odata-vocabularies-v4.0-csprd02.html. Latest stage: https://docs.oasis-open.org/odata/odata-vocabularies/v4.0/odata-vocabularies-v4.0.html.

+

Notices

+

Copyright © OASIS Open 2024. All Rights Reserved.

+

Distributed under the terms of the OASIS IPR Policy.

+

The name “OASIS” is a trademark of OASIS, the owner and developer of this specification, and should be used only to refer to the organization and its official outputs.

+

For complete copyright information please see the full Notices section in an Appendix below.

+
+

Table of Contents

+
+ +
+
+

1 Core Vocabulary

+

Namespace: Org.OData.Core.V1

+

Core terms needed to write vocabularies

+

Terms

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TermTypeDescription
ODataVersionsStringA space-separated list of supported versions of the OData Protocol. Note that 4.0 is implied by 4.01 and does not need to be separately listed.
SchemaVersionStringService-defined value representing the version of the schema. Services MAY use semantic versioning, but clients MUST NOT assume this is the case.
Revisions[RevisionType]List of revisions of a model element
DescriptionString?A brief description of a model element
LongDescriptionString?A long description of a model element
Links[Link]Link to related information
ExampleExampleValueExample for an instance of the annotated model element (Example)
Messages[MessageType]Instance annotation for warning and info messages
ValueExceptionValueExceptionTypeThe annotated value is problematic
ResourceExceptionResourceExceptionTypeThe annotated instance within a success payload is problematic
DataModificationExceptionDataModificationExceptionTypeA modification operation failed on the annotated instance or collection within a success payload
IsLanguageDependentTagProperties and terms annotated with this term are language-dependent
RequiresTypeStringTerms annotated with this term can only be applied to elements that have a type that is identical to or derived from the given type name
AppliesViaContainerTagThe target path of an annotation with the tagged term MUST start with an entity container or the annotation MUST be embedded within an entity container, entity set or singleton
Services MAY additionally annotate a container-independent model element (entity type, property, navigation property) if allowed by the AppliesTo property of the term and the annotation applies to all uses of that model element.
ResourcePathURLResource path for entity container child, can be relative to xml:base and the request URL
DereferenceableIDsTagEntity-ids are URLs that locate the identified entity
ConventionalIDsTagEntity-ids follow OData URL conventions
PermissionsPermissionPermissions for accessing a resource
ContentIDStringA unique identifier for nested entities within a request.
DefaultNamespaceTagFunctions, actions and types in this namespace can be referenced in URLs with or without namespace- or alias- qualification.
Data Modelers should ensure uniqueness of schema children across all default namespaces, and should avoid naming bound functions, actions, or derived types with the same name as a structural or navigational property of the type.
ImmutableTagA value for this non-key property can be provided by the client on insert and remains unchanged on update
ComputedTagA value for this property is generated on both insert and update
ComputedDefaultValueTagA value for this property can be provided by the client on insert and update. If no value is provided on insert, a non-static default value is generated
IsURLTagProperties and terms annotated with this term MUST contain a valid URL
AcceptableMediaTypes[MediaType]Lists the MIME types acceptable for the annotated entity type marked with HasStream=“true” or the annotated binary, stream, or string property or term
The annotation of a TypeDefinition propagates to the model elements having this type
MediaTypeMediaType?The media type of the media stream of the annotated entity type marked with HasStream=“true” or the annotated binary, stream, or string property or term
The annotation of a TypeDefinition propagates to the model elements having this type
IsMediaTypeTagProperties and terms annotated with this term MUST contain a valid MIME type
ContentDispositionContentDispositionTypeThe content disposition of the media stream of the annotated entity type marked with HasStream=“true” or the annotated binary, stream, or string property or term
OptimisticConcurrency[PropertyPath]Data modification requires the use of ETags. A non-empty collection contains the set of properties that are used to compute the ETag. An empty collection means that the service won’t tell how it computes the ETag
AdditionalPropertiesTagInstances of this type may contain properties in addition to those declared in $metadata
If specified as false clients can assume that instances will not contain dynamic properties, irrespective of the value of the OpenType attribute.
AutoExpandTagThe service will automatically expand this stream property, navigation property, or the media stream of this media entity type even if not requested with $expand
AutoExpandReferencesTagThe service will automatically expand this navigation property as entity references even if not requested with \(expand=.../\)ref
MayImplement[QualifiedTypeName]A collection of qualified type names outside of the type hierarchy that instances of this type might be addressable as by using a type-cast segment.
OrderedTagCollection has a stable order. Ordered collections of primitive or complex types can be indexed by ordinal.
PositionalInsertTagItems can be inserted at a given ordinal index.
AlternateKeys[AlternateKey]Communicates available alternate keys
OptionalParameterOptionalParameterTypeSupplying a value for the action or function parameter is optional.
All parameters marked as optional must come after any parameters not marked as optional. The binding parameter must not be marked as optional.
OperationAvailableBoolean?Action or function is available
The annotation value will usually be an expression, e.g. using properties of the binding parameter type for instance-dependent availability, or using properties of a singleton for global availability. The static value null means that availability cannot be determined upfront and is instead expressed as an operation advertisement.
RequiresExplicitBindingTag?This bound action or function is only available on model elements annotated with the ExplicitOperationBindings term.
ExplicitOperationBindings[QualifiedBoundOperationName]The qualified names of explicitly bound operations that are supported on the target model element. These operations are in addition to any operations not annotated with RequiresExplicitBinding that are bound to the type of the target model element.
SymbolicNameSimpleIdentifierA symbolic name for a model element
GeometryFeatureGeometryFeatureType?A Feature Object represents a spatially bounded thing
AnyStructureTagInstances of a type are annotated with this tag if they have no common structure in a given response payload
The select-list of a context URL MUST be (@Core.AnyStructure) if it would otherwise be empty, but this instance annotation SHOULD be omitted from the response value.
+

+

RevisionType

+ + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
VersionString?The schema version with which this revision was first published
KindRevisionKindThe kind of revision
DescriptionStringText describing the reason for the revision
+

+

RevisionKind

+ + + + + + + + + + + + + + + + + + + + + + + + + +
MemberValueDescription
Added0Model element was added
Modified1Model element was modified
Deprecated2Model element was deprecated
+

+ +

The Link term is inspired by the atom:link element, see RFC4287, and the Link HTTP header, see RFC5988

+ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
relStringLink relation type, see IANA Link Relations
hrefURLURL of related information
+

+

ExampleValue

+

Derived Types:

+ + + + + + + + + + + + + + + + +
PropertyTypeDescription
DescriptionString?Description of the example value
+

+

PrimitiveExampleValue: ExampleValue

+ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
DescriptionString?Description of the example value
ValuePrimitiveTypeExample value for the custom parameter
+

+

ComplexExampleValue: ExampleValue

+ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
DescriptionString?Description of the example value
ValueComplexTypeExample value for the custom parameter
+

+

EntityExampleValue: ExampleValue

+ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
DescriptionString?Description of the example value
ValueEntityTypeExample value for the custom parameter
+

+

ExternalExampleValue: ExampleValue

+ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
DescriptionString?Description of the example value
ExternalValueURLUrl reference to the value in its literal format
+

+

MessageType

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
codeStringMachine-readable, language-independent message code
messageStringHuman-readable, language-dependent message text
severityMessageSeveritySeverity of the message
targetString?A path to the target of the message detail, relative to the annotated instance
details[MessageType]List of detail messages
+

+

MessageSeverity

+

Type: String

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Allowed ValueDescription
successPositive feedback - no action required
infoAdditional information - no action required
warningWarning - action may be required
errorError - action is required
+

+

ExceptionType

+

Derived Types:

+ + + + + + + + + + + + + + + + +
PropertyTypeDescription
infoMessageType?Information about the exception
+

+

ValueExceptionType: ExceptionType

+ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
infoMessageType?Information about the exception
valueString?String representation of the exact value
+

+

ResourceExceptionType: ExceptionType

+ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
infoMessageType?Information about the exception
retryLinkURL?A GET request to this URL retries retrieving the problematic instance
+

+

DataModificationExceptionType: ExceptionType

+ + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
infoMessageType?Information about the exception
failedOperationDataModificationOperationKindThe kind of modification operation that failed
responseCodeInt16?Response code of the failed operation, e.g. 424 for a failed dependency
+

+

DataModificationOperationKind

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MemberValueDescription
insert0Insert new instance
update1Update existing instance
upsert2Insert new instance or update it if it already exists
delete3Delete existing instance
invoke4Invoke action or function
link5Add link between entities
unlink6Remove link between entities
+

+

Tag

+

Type: Boolean

+

This is the type to use for all tagging terms

+

+

Permission

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Flag MemberValueDescription
None0No permissions
Read1Read permission
Write2Write permission
ReadWrite3Read and write permission
Invoke4Permission to invoke actions
+

+

ContentDispositionType

+ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
TypeStringThe disposition type of the binary or stream value, see RFC 6266, Disposition Type
FilenameString?The proposed filename for downloading the binary or stream value, see RFC 6266, Disposition Parameter: ‘Filename’
+

+

QualifiedTermName

+

Type: String

+

The qualified name of a term in scope.

+

+

QualifiedTypeName

+

Type: String

+

The qualified name of a type in scope.

+

+

QualifiedActionName

+

Type: String

+

The qualified name of an action in scope.

+

+

QualifiedBoundOperationName

+

Type: String

+

The qualified name of a bound action or function in scope.

+

Either

+ +

+

AlternateKey

+ + + + + + + + + + + + + + + +
PropertyTypeDescription
Key[PropertyRef]The set of properties that make up this key
+

+

PropertyRef

+ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
NamePropertyPathA path expression resolving to a primitive property of the entity type itself or to a primitive property of a complex or navigation property (recursively) of the entity type. The names of the properties in the path are joined together by forward slashes.
AliasStringA SimpleIdentifier that MUST be unique within the set of aliases, structural and navigation properties of the containing entity type that MUST be used in the key predicate of URLs
+

+

Dictionary

+

A dictionary of name-value pairs. Names must be valid property names, values may be restricted to a list of types via an annotation with term Validation.OpenPropertyTypeConstraint.

+ + + + + + + + + + + + + +
PropertyType
Any simple identifierAny type listed in Validation.OpenPropertyTypeConstraint, or any type if there is no constraint
+

+

OptionalParameterType

+ + + + + + + + + + + + + + + +
PropertyTypeDescription
DefaultValueString?Default value for an optional parameter of primitive or enumeration type, using the same rules as the cast function in URLs.
If no explicit DefaultValue is specified, the service is free on how to interpret omitting the parameter from the request. For example, a service might interpret an omitted optional parameter KeyDate as having the current date.
+

+

LocalDateTime

+

Type: String

+

A string representing a Local Date-Time value with no offset.

+

+

SimpleIdentifier

+

Type: String

+

A simple identifier

+

+

GeometryFeatureType

+

A Feature Object represents a spatially bounded thing

+ + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
geometryGeometry?Location of the Feature
propertiesDictionary?Properties of the Feature
idString?Commonly used identifer for a Feature
+
+

2 Capabilities Vocabulary

+

Namespace: Org.OData.Capabilities.V1

+

Terms describing capabilities of a service

+

There are some capabilities which are strongly recommended for services to support even though they are optional. Support for $top and $skip is a good example as supporting these query options helps with performance of a service and are essential. Such capabilities are assumed to be default capabilities of an OData service even in the case that a capabilities annotation doesn’t exist. Capabilities annotations are mainly expected to be used to explicitly specify that a service doesn’t support such capabilities. Capabilities annotations can as well be used to declaratively specify the support of such capabilities.

+

On the other hand, there are some capabilities that a service may choose to support or not support and in varying degrees. $filter and $orderby are such good examples. This vocabulary aims to define terms to specify support or no support for such capabilities.

+

A service is assumed to support by default the following capabilities even though an annotation doesn’t exist:

+ +

A service is expected to support the following capabilities. If not supported, the service is expected to call out the restrictions using annotations:

+ +

A client cannot assume that a service supports certain capabilities. A client can try, but it needs to be prepared to handle an error in case the following capabilities are not supported:

+ +

Terms

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TermTypeDescription
ConformanceLevelConformanceLevelTypeThe conformance level achieved by this service
SupportedFormats[MediaType]Media types of supported formats, including format parameters
SupportedMetadataFormats[MediaType]Media types of supported formats for $metadata, including format parameters
AcceptableEncodings[String]List of acceptable compression methods for ($batch) requests, e.g. gzip
AsynchronousRequestsSupportedTagService supports the asynchronous request preference
BatchContinueOnErrorSupportedTagService supports the continue on error preference. Supports $batch requests. Services that apply the BatchContinueOnErrorSupported term should also specify the ContinueOnErrorSupported property from the BatchSupport term.
IsolationSupportedIsolationLevelSupported odata.isolation levels
CrossJoinSupportedTagSupports cross joins for the entity sets in this container
CallbackSupportedCallbackTypeSupports callbacks for the specified protocols
ChangeTrackingChangeTrackingTypeChange tracking capabilities of this service or entity set
CountRestrictionsCountRestrictionsTypeRestrictions on /$count path suffix and $count=true system query option
NavigationRestrictionsNavigationRestrictionsTypeRestrictions on navigating properties according to OData URL conventions
Restrictions specified on an entity set are valid whether the request is directly to the entity set or through a navigation property bound to that entity set. Services can specify a different set of restrictions specific to a path, in which case the more specific restrictions take precedence.
IndexableByKeyTagSupports key values according to OData URL conventions
TopSupportedTagSupports $top
SkipSupportedTagSupports $skip
ComputeSupportedTagSupports $compute
SelectSupportSelectSupportTypeSupport for $select and nested query options within $select
BatchSupportedTagSupports $batch requests. Services that apply the BatchSupported term should also apply the more comprehensive BatchSupport term.
BatchSupportBatchSupportTypeBatch Support for the service
FilterFunctions[String]List of functions and operators supported in filter expressions
If not specified, null, or empty, all functions and operators may be attempted.
FilterRestrictionsFilterRestrictionsTypeRestrictions on filter expressions
SortRestrictionsSortRestrictionsTypeRestrictions on orderby expressions
ExpandRestrictionsExpandRestrictionsTypeRestrictions on expand expressions
SearchRestrictionsSearchRestrictionsTypeRestrictions on search expressions
KeyAsSegmentSupportedTagSupports key-as-segment convention for addressing entities within a collection
QuerySegmentSupportedTagSupports passing query options in the request body
InsertRestrictionsInsertRestrictionsTypeRestrictions on insert operations
DeepInsertSupportDeepInsertSupportType?Deep Insert Support of the annotated resource (the whole service, an entity set, or a collection-valued resource)
UpdateRestrictionsUpdateRestrictionsTypeRestrictions on update operations
DeepUpdateSupportDeepUpdateSupportTypeDeep Update Support of the annotated resource (the whole service, an entity set, or a collection-valued resource)
DeleteRestrictionsDeleteRestrictionsTypeRestrictions on delete operations
CollectionPropertyRestrictions[CollectionPropertyRestrictionsType]Describes restrictions on operations applied to collection-valued structural properties
OperationRestrictionsOperationRestrictionsTypeRestrictions for function or action operation
AnnotationValuesInQuerySupportedTagSupports annotation values within system query options
ModificationQueryOptionsModificationQueryOptionsTypeSupport for query options with modification requests (insert, update, action invocation)
ReadRestrictionsReadRestrictionsTypeRestrictions for retrieving a collection of entities, retrieving a singleton instance.
CustomHeaders[CustomParameter]Custom headers that are supported/required for the annotated resource (Example)
CustomQueryOptions[CustomParameter]Custom query options that are supported/required for the annotated resource (Example)
If the entity container is annotated, the query option is supported/required by all resources in that container.
MediaLocationUpdateSupportedTagStream property or media stream supports update of its media edit URL and/or media read URL
DefaultCapabilitiesDefaultCapabilitiesTypeDefault capability settings for all collection-valued resources in the container

Annotating a specific capability term, which is included as property in DefaultCapabilitiesType, for a specific collection-valued resource overrides the default capability with the specified properties using PATCH semantics:

  • Primitive or collection-valued properties specified in the specific capability term replace the corresponding properties specified in DefaultCapabilities
  • Complex-valued properties specified in the specific capability term override the corresponding properties specified in DefaultCapabilities using PATCH semantics recursively
  • Properties specified neither in the specific term nor in DefaultCapabilities have their default value
+

+

ConformanceLevelType

+ + + + + + + + + + + + + + + + + + + + + + + + + +
MemberValueDescription
Minimal0Minimal conformance level
Intermediate1Intermediate conformance level
Advanced2Advanced conformance level
+

+

IsolationLevel

+ + + + + + + + + + + + + + + +
Flag MemberValueDescription
Snapshot1All data returned for a request, including multiple requests within a batch or results retrieved across multiple pages, will be consistent as of a single point in time
+

+

CallbackType

+

A non-empty collection lists the full set of supported protocols. A empty collection means ‘only HTTP is supported’

+ + + + + + + + + + + + + + + +
PropertyTypeDescription
CallbackProtocols[CallbackProtocol]List of supported callback protocols, e.g. http or wss
+

+

CallbackProtocol

+ + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
IdString?Protocol Identifier
UrlTemplateString?URL Template including parameters. Parameters are enclosed in curly braces {} as defined in RFC6570
DocumentationUrlURL?Human readable description of the meaning of the URL Template parameters
+

+

ChangeTrackingBase

+

Derived Types:

+ + + + + + + + + + + + + + + + +
PropertyTypeDescription
SupportedBooleanodata.track-changes preference is supported
+

+

ChangeTrackingType: ChangeTrackingBase

+ + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
SupportedBooleanodata.track-changes preference is supported
FilterableProperties[PropertyPath]Change tracking supports filters on these properties
If no properties are specified or FilterableProperties is omitted, clients cannot assume support for filtering on any properties in combination with change tracking.
ExpandableProperties[NavigationPropertyPath]Change tracking supports these properties expanded
If no properties are specified or ExpandableProperties is omitted, clients cannot assume support for expanding any properties in combination with change tracking.
+

+

CountRestrictionsBase

+

Derived Types:

+ + + + + + + + + + + + + + + + +
PropertyTypeDescription
CountableBooleanInstances can be counted in requests targeting a collection
+

+

CountRestrictionsType: CountRestrictionsBase

+ + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
CountableBooleanInstances can be counted in requests targeting a collection
NonCountableProperties[PropertyPath]Members of these collection properties cannot be counted
NonCountableNavigationProperties[NavigationPropertyPath]Members of these navigation properties cannot be counted
+

+ + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
NavigabilityNavigationType?Default navigability for all navigation properties of the annotation target. Individual navigation properties can override this value via RestrictedProperties/Navigability.
RestrictedProperties[NavigationPropertyRestriction]List of navigation properties with restrictions
+

+ +

Using a property of NavigationPropertyRestriction in a NavigationRestrictions annotation is discouraged in favor of using an annotation with the corresponding term from this vocabulary and a target path starting with a container and ending in the NavigationProperty, unless the favored alternative is impossible because a dynamic expression requires an instance path whose evaluation starts at the target of the NavigationRestrictions annotation. See this example.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
NavigationPropertyNavigationPropertyPathNavigation properties can be navigated
The target path of a NavigationRestrictions annotation followed by this navigation property path addresses the resource to which the other properties of NavigationPropertyRestriction apply. Instance paths that occur in dynamic expressions are evaluated starting at the boundary between both paths, which must therefore be chosen accordingly.
NavigabilityNavigationType?Supported navigability of this navigation property
FilterFunctions[String]List of functions and operators supported in filter expressions
If not specified, null, or empty, all functions and operators may be attempted.
FilterRestrictionsFilterRestrictionsType?Restrictions on filter expressions
SearchRestrictionsSearchRestrictionsType?Restrictions on search expressions
SortRestrictionsSortRestrictionsType?Restrictions on orderby expressions
TopSupportedBooleanSupports $top
SkipSupportedBooleanSupports $skip
SelectSupportSelectSupportType?Support for $select
IndexableByKeyBooleanSupports key values according to OData URL conventions
InsertRestrictionsInsertRestrictionsType?Restrictions on insert operations
DeepInsertSupportDeepInsertSupportType?Deep Insert Support of the annotated resource (the whole service, an entity set, or a collection-valued resource)
UpdateRestrictionsUpdateRestrictionsType?Restrictions on update operations
DeepUpdateSupportDeepUpdateSupportType?Deep Update Support of the annotated resource (the whole service, an entity set, or a collection-valued resource)
DeleteRestrictionsDeleteRestrictionsType?Restrictions on delete operations
OptimisticConcurrencyControlBooleanData modification (including insert) along this navigation property requires the use of ETags
ReadRestrictionsReadRestrictionsType?Restrictions for retrieving entities
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
MemberValueDescription
Recursive0Navigation properties can be recursively navigated
Single1Navigation properties can be navigated to a single level
None2Navigation properties are not navigable
+

+

SelectSupportType

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
SupportedBooleanSupports $select
InstanceAnnotationsSupportedBooleanSupports instance annotations in $select list
ExpandableBoolean$expand within $select is supported
FilterableBoolean$filter within $select is supported
SearchableBoolean$search within $select is supported
TopSupportedBoolean$top within $select is supported
SkipSupportedBoolean$skip within $select is supported
ComputeSupportedBoolean$compute within $select is supported
CountableBoolean$count within $select is supported
SortableBoolean$orderby within $select is supported
+

+

BatchSupportType

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
SupportedBooleanService supports requests to $batch
ContinueOnErrorSupportedBooleanService supports the continue on error preference
ReferencesInRequestBodiesSupportedBooleanService supports Content-ID referencing in request bodies
ReferencesAcrossChangeSetsSupportedBooleanService supports Content-ID referencing across change sets
EtagReferencesSupportedBooleanService supports referencing Etags from previous requests
RequestDependencyConditionsSupportedBooleanService supports the if member in JSON batch requests
SupportedFormats[MediaType]Media types of supported formats for $batch
Allowed values:
multipart/mixed
Multipart Batch Format
application/json
JSON Batch Format
+

Applicable Annotation Terms:

+ +

+

FilterRestrictionsBase

+

Derived Types:

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
FilterableBoolean$filter is supported
RequiresFilterBoolean$filter is required
MaxLevelsInt32The maximum number of levels (including recursion) that can be traversed in a filter expression. A value of -1 indicates there is no restriction.
+

Applicable Annotation Terms:

+ +

+

FilterRestrictionsType: FilterRestrictionsBase

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
FilterableBoolean$filter is supported
RequiresFilterBoolean$filter is required
MaxLevelsInt32The maximum number of levels (including recursion) that can be traversed in a filter expression. A value of -1 indicates there is no restriction.
RequiredProperties[PropertyPath]These properties must be specified in the $filter clause (properties of derived types are not allowed here)
NonFilterableProperties[PropertyPath]These structural properties cannot be used in filter expressions
FilterExpressionRestrictions[FilterExpressionRestrictionType]These properties only allow a subset of filter expressions. A valid filter expression for a single property can be enclosed in parentheses and combined by and with valid expressions for other properties.
+

Applicable Annotation Terms:

+ +

+

FilterExpressionRestrictionType

+ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
PropertyPropertyPath?Path to the restricted property
AllowedExpressionsFilterExpressionType?Allowed subset of expressions
+

+

FilterExpressionType

+

Type: String

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Allowed ValueDescription
SingleValueProperty can be used in a single eq clause
MultiValueProperty can be used in multiple eq and in clauses, combined by or (which is logically equivalent to a single in clause)
SingleRangeProperty can be used in at most one ge and/or one le clause, separated by and
MultiRangeProperty can be compared to a union of one or more closed, half-open, or open intervals
The filter expression for this property consists of one or more interval expressions combined by or. A single interval expression is either a single comparison of the property and a literal value with eq, le, lt, ge, or gt, or pair of boundaries combined by and and enclosed in parentheses. The lower boundary is either ge or gt, the upper boundary either le or lt.
SearchExpressionString property can be used as first operand in startswith, endswith, and contains clauses
MultiRangeOrSearchExpressionProperty can be compared to a union of zero or more closed, half-open, or open intervals plus zero or more simple string patterns
The filter expression for this property consists of one or more interval expressions or string comparison functions combined by or. See MultiRange for a definition of an interval expression. See SearchExpression for the allowed string comparison functions.
+

+

SortRestrictionsBase

+

Derived Types:

+ + + + + + + + + + + + + + + + +
PropertyTypeDescription
SortableBoolean$orderby is supported
+

Applicable Annotation Terms:

+ +

+

SortRestrictionsType: SortRestrictionsBase

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
SortableBoolean$orderby is supported
AscendingOnlyProperties[PropertyPath]These properties can only be used for sorting in Ascending order
DescendingOnlyProperties[PropertyPath]These properties can only be used for sorting in Descending order
NonSortableProperties[PropertyPath]These structural properties cannot be used in orderby expressions
+

Applicable Annotation Terms:

+ +

+

ExpandRestrictionsBase

+

Derived Types:

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
ExpandableBoolean$expand is supported
StreamsExpandableBoolean$expand is supported for stream properties and media streams
MaxLevelsInt32The maximum number of levels that can be expanded in a expand expression. A value of -1 indicates there is no restriction.
+

Applicable Annotation Terms:

+ +

+

ExpandRestrictionsType: ExpandRestrictionsBase

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
ExpandableBoolean$expand is supported
StreamsExpandableBoolean$expand is supported for stream properties and media streams
MaxLevelsInt32The maximum number of levels that can be expanded in a expand expression. A value of -1 indicates there is no restriction.
NonExpandableProperties[NavigationPropertyPath]These properties cannot be used in expand expressions
NonExpandableStreamProperties[PropertyPath]These stream properties cannot be used in expand expressions
+

Applicable Annotation Terms:

+ +

+

SearchRestrictionsType

+ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
SearchableBoolean$search is supported
UnsupportedExpressionsSearchExpressionsExpressions not supported in $search
+

Applicable Annotation Terms:

+ +

+

SearchExpressions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Flag MemberValueDescription
none0Single search term
AND1Multiple search terms, optionally separated by AND
OR2Multiple search terms separated by OR
NOT4Search terms preceded by NOT
phrase8Search phrases enclosed in double quotes
group16Precedence grouping of search expressions with parentheses
+

+

InsertRestrictionsBase

+

Derived Types:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
InsertableBooleanEntities can be inserted
MaxLevelsInt32The maximum number of navigation properties that can be traversed when addressing the collection to insert into. A value of -1 indicates there is no restriction.
TypecastSegmentSupportedBooleanEntities of a specific derived type can be created by specifying a type-cast segment
QueryOptionsModificationQueryOptionsType?Support for query options with insert requests
CustomHeaders[CustomParameter]Supported or required custom headers
CustomQueryOptions[CustomParameter]Supported or required custom query options
DescriptionString?A brief description of the request
LongDescriptionString?A long description of the request
ErrorResponses[HttpResponse]Possible error responses returned by the request.
+

+

InsertRestrictionsType: InsertRestrictionsBase

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
InsertableBooleanEntities can be inserted
MaxLevelsInt32The maximum number of navigation properties that can be traversed when addressing the collection to insert into. A value of -1 indicates there is no restriction.
TypecastSegmentSupportedBooleanEntities of a specific derived type can be created by specifying a type-cast segment
QueryOptionsModificationQueryOptionsType?Support for query options with insert requests
CustomHeaders[CustomParameter]Supported or required custom headers
CustomQueryOptions[CustomParameter]Supported or required custom query options
DescriptionString?A brief description of the request
LongDescriptionString?A long description of the request
ErrorResponses[HttpResponse]Possible error responses returned by the request.
NonInsertableProperties[PropertyPath]These structural properties cannot be specified on insert
NonInsertableNavigationProperties[NavigationPropertyPath]These navigation properties do not allow deep inserts
RequiredProperties[PropertyPath]These structural properties must be specified on insert
Permissions[PermissionType?]Required permissions. One of the specified sets of scopes is required to perform the insert.
+

+

PermissionType

+ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
SchemeNameSchemeNameAuthorization flow scheme name
Scopes[ScopeType]List of scopes that can provide access to the resource
+

+

ScopeType

+ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
ScopeStringName of the scope.
RestrictedPropertiesString?Comma-separated string value of all properties that will be included or excluded when using the scope.
Possible string value identifiers when specifying properties are *, PropertyName, -PropertyName.
* denotes all properties are accessible.
-PropertyName excludes that specific property.
PropertyName explicitly provides access to the specific property.
The absence of RestrictedProperties denotes all properties are accessible using that scope.
+

+

DeepInsertSupportType

+ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
SupportedBooleanAnnotation target supports deep inserts
ContentIDSupportedBooleanAnnotation target supports accepting and returning nested entities annotated with the Core.ContentID instance annotation.
+

+

UpdateRestrictionsBase

+

Derived Types:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
UpdatableBooleanEntities can be updated
UpsertableBooleanEntities can be upserted
DeltaUpdateSupportedBooleanEntities can be inserted, updated, and deleted via a PATCH request with a delta payload
UpdateMethodHttpMethod?Supported HTTP Methods (PUT or PATCH) for updating an entity. If null, PATCH SHOULD be supported and PUT MAY be supported.
FilterSegmentSupportedBooleanMembers of collections can be updated via a PATCH request with a /$filter(...)/$each segment
TypecastSegmentSupportedBooleanMembers of collections can be updated via a PATCH request with a type-cast segment and a /$each segment
MaxLevelsInt32The maximum number of navigation properties that can be traversed when addressing the collection or entity to update. A value of -1 indicates there is no restriction.
Permissions[PermissionType?]Required permissions. One of the specified sets of scopes is required to perform the update.
QueryOptionsModificationQueryOptionsType?Support for query options with update requests
CustomHeaders[CustomParameter]Supported or required custom headers
CustomQueryOptions[CustomParameter]Supported or required custom query options
DescriptionString?A brief description of the request
LongDescriptionString?A long description of the request
ErrorResponses[HttpResponse]Possible error responses returned by the request.
+

+

UpdateRestrictionsType: UpdateRestrictionsBase

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
UpdatableBooleanEntities can be updated
UpsertableBooleanEntities can be upserted
DeltaUpdateSupportedBooleanEntities can be inserted, updated, and deleted via a PATCH request with a delta payload
UpdateMethodHttpMethod?Supported HTTP Methods (PUT or PATCH) for updating an entity. If null, PATCH SHOULD be supported and PUT MAY be supported.
FilterSegmentSupportedBooleanMembers of collections can be updated via a PATCH request with a /$filter(...)/$each segment
TypecastSegmentSupportedBooleanMembers of collections can be updated via a PATCH request with a type-cast segment and a /$each segment
MaxLevelsInt32The maximum number of navigation properties that can be traversed when addressing the collection or entity to update. A value of -1 indicates there is no restriction.
Permissions[PermissionType?]Required permissions. One of the specified sets of scopes is required to perform the update.
QueryOptionsModificationQueryOptionsType?Support for query options with update requests
CustomHeaders[CustomParameter]Supported or required custom headers
CustomQueryOptions[CustomParameter]Supported or required custom query options
DescriptionString?A brief description of the request
LongDescriptionString?A long description of the request
ErrorResponses[HttpResponse]Possible error responses returned by the request.
NonUpdatableProperties[PropertyPath]These structural properties cannot be specified on update
NonUpdatableNavigationProperties[NavigationPropertyPath]These navigation properties do not allow rebinding
RequiredProperties[PropertyPath]These structural properties must be specified on update
+

+

HttpMethod

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Flag MemberValueDescription
GET1The HTTP GET Method
PATCH2The HTTP PATCH Method
PUT4The HTTP PUT Method
POST8The HTTP POST Method
DELETE16The HTTP DELETE Method
OPTIONS32The HTTP OPTIONS Method
HEAD64The HTTP HEAD Method
+

+

DeepUpdateSupportType

+ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
SupportedBooleanAnnotation target supports deep updates
ContentIDSupportedBooleanAnnotation target supports accepting and returning nested entities annotated with the Core.ContentID instance annotation.
+

+

DeleteRestrictionsBase

+

Derived Types:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
DeletableBooleanEntities can be deleted
MaxLevelsInt32The maximum number of navigation properties that can be traversed when addressing the collection to delete from or the entity to delete. A value of -1 indicates there is no restriction.
FilterSegmentSupportedBooleanMembers of collections can be deleted via a DELETE request with a /$filter(...)/$each segment
TypecastSegmentSupportedBooleanMembers of collections can be deleted via a DELETE request with a type-cast segment and a /$each segment
Permissions[PermissionType?]Required permissions. One of the specified sets of scopes is required to perform the delete.
CustomHeaders[CustomParameter]Supported or required custom headers
CustomQueryOptions[CustomParameter]Supported or required custom query options
DescriptionString?A brief description of the request
LongDescriptionString?A long description of the request
ErrorResponses[HttpResponse]Possible error responses returned by the request.
+

+

DeleteRestrictionsType: DeleteRestrictionsBase

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
DeletableBooleanEntities can be deleted
MaxLevelsInt32The maximum number of navigation properties that can be traversed when addressing the collection to delete from or the entity to delete. A value of -1 indicates there is no restriction.
FilterSegmentSupportedBooleanMembers of collections can be deleted via a DELETE request with a /$filter(...)/$each segment
TypecastSegmentSupportedBooleanMembers of collections can be deleted via a DELETE request with a type-cast segment and a /$each segment
Permissions[PermissionType?]Required permissions. One of the specified sets of scopes is required to perform the delete.
CustomHeaders[CustomParameter]Supported or required custom headers
CustomQueryOptions[CustomParameter]Supported or required custom query options
DescriptionString?A brief description of the request
LongDescriptionString?A long description of the request
ErrorResponses[HttpResponse]Possible error responses returned by the request.
NonDeletableNavigationProperties[NavigationPropertyPath]These navigation properties do not allow DeleteLink requests
+

+

CollectionPropertyRestrictionsType

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
CollectionPropertyPropertyPath?Restricted Collection-valued property
FilterFunctions[String]List of functions and operators supported in filter expressions
If not specified, null, or empty, all functions and operators may be attempted.
FilterRestrictionsFilterRestrictionsType?Restrictions on filter expressions
SearchRestrictionsSearchRestrictionsType?Restrictions on search expressions
SortRestrictionsSortRestrictionsType?Restrictions on orderby expressions
TopSupportedBooleanSupports $top
SkipSupportedBooleanSupports $skip
SelectSupportSelectSupportType?Support for $select
InsertableBooleanMembers can be inserted into this collection
If additionally annotated with Core.PositionalInsert, members can be inserted at a specific position
UpdatableBooleanMembers of this ordered collection can be updated by ordinal
DeletableBooleanMembers of this ordered collection can be deleted by ordinal
+

+

OperationRestrictionsType

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
FilterSegmentSupportedBooleanBound action or function can be invoked on a collection-valued binding parameter path with a /$filter(...) segment
Permissions[PermissionType?]Required permissions. One of the specified sets of scopes is required to invoke an action or function
CustomHeaders[CustomParameter]Supported or required custom headers
CustomQueryOptions[CustomParameter]Supported or required custom query options
ErrorResponses[HttpResponse]Possible error responses returned by the request.
+

+

ModificationQueryOptionsType

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
ExpandSupportedBooleanSupports $expand with modification requests
SelectSupportedBooleanSupports $select with modification requests
ComputeSupportedBooleanSupports $compute with modification requests
FilterSupportedBooleanSupports $filter with modification requests
SearchSupportedBooleanSupports $search with modification requests
SortSupportedBooleanSupports $orderby with modification requests
+

+

ReadRestrictionsBase

+

Derived Types:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
ReadableBooleanEntities can be retrieved
Permissions[PermissionType?]Required permissions. One of the specified sets of scopes is required to read.
CustomHeaders[CustomParameter]Supported or required custom headers
CustomQueryOptions[CustomParameter]Supported or required custom query options
DescriptionString?A brief description of the request
LongDescriptionString?A long description of the request
ErrorResponses[HttpResponse]Possible error responses returned by the request.
+

+

ReadByKeyRestrictionsType: ReadRestrictionsBase

+

Restrictions for retrieving an entity by key

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
ReadableBooleanEntities can be retrieved
Permissions[PermissionType?]Required permissions. One of the specified sets of scopes is required to read.
CustomHeaders[CustomParameter]Supported or required custom headers
CustomQueryOptions[CustomParameter]Supported or required custom query options
DescriptionString?A brief description of the request
LongDescriptionString?A long description of the request
ErrorResponses[HttpResponse]Possible error responses returned by the request.
+

+

ReadRestrictionsType: ReadRestrictionsBase

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
ReadableBooleanEntities can be retrieved
Permissions[PermissionType?]Required permissions. One of the specified sets of scopes is required to read.
CustomHeaders[CustomParameter]Supported or required custom headers
CustomQueryOptions[CustomParameter]Supported or required custom query options
DescriptionString?A brief description of the request
LongDescriptionString?A long description of the request
ErrorResponses[HttpResponse]Possible error responses returned by the request.
TypecastSegmentSupportedBooleanEntities of a specific derived type can be read by specifying a type-cast segment
ReadByKeyRestrictionsReadByKeyRestrictionsType?Restrictions for retrieving an entity by key
Only valid when applied to a collection. If a property of ReadByKeyRestrictions is not specified, the corresponding property value of ReadRestrictions applies.
+

+

CustomParameter

+

A custom parameter is either a header or a query option

+

The type of a custom parameter is always a string. Restrictions on the parameter values can be expressed by annotating the record expression describing the parameter with terms from the Validation vocabulary, e.g. Validation.Pattern or Validation.AllowedValues.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
NameStringName of the custom parameter
DescriptionString?Description of the custom parameter
DocumentationURLURL?URL of related documentation
RequiredBooleantrue: parameter is required, false or not specified: parameter is optional
ExampleValues[PrimitiveExampleValue]Example values for the custom parameter
+

+

DefaultCapabilitiesType

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
ChangeTrackingChangeTrackingBase?Change tracking capabilities
CountRestrictionsCountRestrictionsBase?Restrictions on /$count path suffix and $count=true system query option
IndexableByKeyTag?Supports key values according to OData URL conventions
TopSupportedTag?Supports $top
SkipSupportedTag?Supports $skip
ComputeSupportedTag?Supports $compute
SelectSupportSelectSupportType?Support for $select and nested query options within $select
FilterRestrictionsFilterRestrictionsBase?Restrictions on filter expressions
SortRestrictionsSortRestrictionsBase?Restrictions on orderby expressions
ExpandRestrictionsExpandRestrictionsBase?Restrictions on expand expressions
SearchRestrictionsSearchRestrictionsType?Restrictions on search expressions
InsertRestrictionsInsertRestrictionsBase?Restrictions on insert operations
UpdateRestrictionsUpdateRestrictionsBase?Restrictions on update operations
DeleteRestrictionsDeleteRestrictionsBase?Restrictions on delete operations
OperationRestrictionsOperationRestrictionsType?Restrictions for function or action operations
ReadRestrictionsReadRestrictionsType?Restrictions for retrieving a collection of entities, retrieving a singleton instance
+

+

HttpResponse

+ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
StatusCodeStringHTTP response status code, for example 400, 403, 501
DescriptionStringHuman-readable description of the response
+
+

3 Measures Vocabulary

+

Namespace: Org.OData.Measures.V1

+

Terms describing monetary amounts and measured quantities

+

Terms

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TermTypeDescription
ISOCurrencyStringThe currency for this monetary amount as an ISO 4217 currency code
ScaleByteThe number of significant decimal places in the scale part (less than or equal to the number declared in the Scale facet)
UnitStringThe unit of measure for this measured quantity, e.g. cm for centimeters or % for percentages
UNECEUnitStringThe unit of measure for this measured quantity, according to the UN/CEFACT Recommendation 20
DurationGranularityDurationGranularityTypeThe minimum granularity of duration values.
Absence of this annotation means a granularity of seconds with sub-seconds according to the Precision facet.
+

+

DurationGranularityType

+

Type: String

+ + + + + + + + + + + + + + + + + + + + + +
Allowed ValueDescription
daysDuration in days, e.g. P1D
hoursDuration in days and hours, e.g. P1DT23H
minutesDuration in days, hours, and minutes, e.g. P1DT23H59M
+
+

4 Validation Vocabulary

+

Namespace: Org.OData.Validation.V1

+

Terms describing validation rules

+

Terms

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TermTypeDescription
PatternStringThe pattern that a string property, parameter, or term must match. This SHOULD be a valid regular expression, according to the ECMA 262 regular expression dialect.
MinimumPrimitiveTypeMinimum value that a property, parameter, or term can have.
Can be annotated with:
MaximumPrimitiveTypeMaximum value that a property, parameter, or term can have.
Can be annotated with:
ExclusiveTagTags a Minimum or Maximum as exclusive, i.e. an open interval boundary.
AllowedValues[AllowedValue]A collection of valid values for the annotated property, parameter, or type definition
MultipleOfDecimalThe value of the annotated property, parameter, or term must be an integer multiple of this positive value. For temporal types, the value is measured in seconds.
ConstraintConstraintTypeCondition that the annotation target has to fulfill
ItemsOf[ItemsOfType]A list of constraints describing that entities related via one navigation property MUST also be related via another, collection-valued navigation property. The same path value MUST NOT occur more than once.
Example: entity type Customer has navigation properties AllOrders, OpenOrders, and ClosedOrders. The term allows to express that items of OpenOrders and ClosedOrders are also items of the AllOrders navigation property, even though they are defined in an Orders entity set.
OpenPropertyTypeConstraint[SingleOrCollectionType]Dynamic properties added to the annotated open structured type are restricted to the listed types.
DerivedTypeConstraint[SingleOrCollectionType]Values are restricted to types that are both identical to or derived from the declared type and a type listed in this collection.
This allows restricting values to certain sub-trees of an inheritance hierarchy, including hierarchies starting at the Built-In Abstract Types. Types listed in this collection are ignored if they are not derived from the declared type of the annotated model element or would not be allowed as declared type of the annotated model element.
When applied to a collection-valued element, this annotation specifies the types allowed for members of the collection without mentioning the Collection() wrapper. The SingleOrCollectionType may only include the Collection() wrapper if the annotation is applied to an element with declared type Edm.Untyped.
AllowedTerms[QualifiedTermName]Annotate a term of type Edm.AnnotationPath, or a property of type Edm.AnnotationPath that is used within a structured term, to restrict the terms that can be targeted by the path.
The annotation path expression is intended to end in a path segment with one of the listed terms. For forward compatibility, clients should be prepared for the annotation to reference terms besides those listed.
ApplicableTerms[QualifiedTermName]Names of specific terms that are applicable and may be applied in the current context. This annotation does not restrict the use of other terms.
MaxItemsInt64The annotated collection must have at most the specified number of items.
MinItemsInt64The annotated collection must have at least the specified number of items.
+

+

AllowedValue

+ + + + + + + + + + + + + + + +
PropertyTypeDescription
ValuePrimitiveType?An allowed value for the property, parameter, or type definition
+

Applicable Annotation Terms:

+ +

+

ConstraintType

+ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
FailureMessageString?Human-readable message that can be shown to end users if the constraint is not fulfilled
ConditionBooleanValue MUST be a dynamic expression that evaluates to true if and only if the constraint is fulfilled
+

+

ItemsOfType

+

Entities related via the single- or collection-valued navigation property identified by path are also related via the collection-valued navigation property identified by target.

+ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
pathNavigationPropertyPathA path to a single- or collection-valued navigation property
targetNavigationPropertyPathA path to a collection-valued navigation property
+

+

SingleOrCollectionType

+

Type: String

+

The qualified name of a type in scope, optionally wrapped in Collection() to denote a collection of instances of the type

+
+

5 Aggregation Vocabulary

+

Namespace: Org.OData.Aggregation.V1

+

Terms to describe which data in a given entity model can be aggregated, and how.

+

Related to the specification document OData-Data-Agg-v4.0.

+

Terms

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TermTypeDescription
ApplySupportedApplySupportedTypeThis entity set or collection supports the $apply system query option
ApplySupportedDefaultsApplySupportedBaseDefault support of the $apply system query option for all collection-valued resources in the container

Annotating term ApplySupported for a specific collection-valued resource overrides the default support with the specified properties using PATCH semantics:

  • Primitive or collection-valued properties specified in ApplySupported replace the corresponding properties specified in ApplySupportedDefaults
  • Complex-valued properties specified in ApplySupported override the corresponding properties specified in ApplySupportedDefaults using PATCH semantics recursively
  • Properties specified neither in ApplySupported nor in ApplySupportedDefaults have their default value
Groupable (Deprecated)TagDeprecated in favor of ApplySupported/GroupableProperties
Aggregatable (Deprecated)TagDeprecated in favor of ApplySupported/AggregatableProperties
CustomAggregateStringDynamic property that can be used in the aggregate transformation
This term MUST be applied with a Qualifier, the Qualifier value is the name of the dynamic property. The value of the annotation MUST be the qualified name of a primitive type. The aggregated value will be of that type.
ContextDefiningProperties[PropertyPath]The annotated property or custom aggregate is only well-defined in the context of these properties
The context-defining properties need either be part of the result entities, or be restricted to a single value by a pre-filter operation. Examples are postal codes within a country, or monetary amounts whose context is the unit of currency.
LeveledHierarchy[PropertyPath]Defines a leveled hierarchy (OData-Data-Agg-v4.0, section 5.5.1)
RecursiveHierarchyRecursiveHierarchyTypeDefines a recursive hierarchy (OData-Data-Agg-v4.0, section 5.5.2)
UpPath[String]The string values of the node identifiers in a path from the annotated node to a start node in a traversal of a recursive hierarchy
This instance annotation occurs in the result set after a traverse transformation (OData-Data-Agg-v4.0, section 6.2.2.2). A use case for this is traversal with multiple parents, when this annotation takes as value one parent node identifier followed by one grandparent node identifier and so on.
AvailableOnAggregatesAvailableOnAggregatesTypeThis function is available on aggregated entities if the RequiredProperties are still defined
+

Functions

+

+

isnode

+

Is the entity a node of the hierarchy specified by the parameter pair (HierarchyNodes, HierarchyQualifier)? (See OData-Data-Agg-v4.0, section 5.5.2.1)

+

If a node identifier passed to the function is null, the function returns null.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeDescription
HierarchyNodes[EntityType]A collection, given through a $root expression
HierarchyQualifierHierarchyQualifier
NodePrimitiveType?Node identifier of the putative node
Boolean?
+

+

isroot

+

Is the entity a root node of the hierarchy specified by the parameter pair (HierarchyNodes, HierarchyQualifier)?

+

If a node identifier passed to the function is null, the function returns null.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeDescription
HierarchyNodes[EntityType]A collection, given through a $root expression
HierarchyQualifierHierarchyQualifier
NodePrimitiveType?Node identifier of the putative root
Boolean?
+

+

isdescendant

+

Is the entity a descendant node of the ancestor node in the hierarchy specified by the parameter pair (HierarchyNodes, HierarchyQualifier) with at most the specified distance? (See OData-Data-Agg-v4.0, section 5.5.2.1)

+

If a node identifier passed to the function is null, the function returns null.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeDescription
HierarchyNodes[EntityType]A collection, given through a $root expression
HierarchyQualifierHierarchyQualifier
NodePrimitiveType?Node identifier of the putative descendant
AncestorPrimitiveType?Node identifier of the ancestor node
MaxDistanceInt16Optional parameter
IncludeSelfBooleanOptional parameter: Whether to include the node itself in the result
Boolean?
+

+

isancestor

+

Is the entity an ancestor node of the descendant node in the hierarchy specified by the parameter pair (HierarchyNodes, HierarchyQualifier) with at most the specified distance? (See OData-Data-Agg-v4.0, section 5.5.2.1)

+

If a node identifier passed to the function is null, the function returns null.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeDescription
HierarchyNodes[EntityType]A collection, given through a $root expression
HierarchyQualifierHierarchyQualifier
NodePrimitiveType?Node identifier of the putative ancestor
DescendantPrimitiveType?Node identifier of the descendant node
MaxDistanceInt16Optional parameter
IncludeSelfBooleanOptional parameter: Whether to include the node itself in the result
Boolean?
+

+

issibling

+

Is the entity a sibling node of the other node in the hierarchy specified by the parameter pair (HierarchyNodes, HierarchyQualifier)? (See OData-Data-Agg-v4.0, section 5.5.2.1)

+

A node is not a sibling of itself. If a node identifier passed to the function is null, the function returns null.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeDescription
HierarchyNodes[EntityType]A collection, given through a $root expression
HierarchyQualifierHierarchyQualifier
NodePrimitiveType?Node identifier of the putative sibling
OtherPrimitiveType?Node identifier of the other node
Boolean?
+

+

isleaf

+

Is the entity a leaf node in the hierarchy specified by the parameter pair (HierarchyNodes, HierarchyQualifier)? (See OData-Data-Agg-v4.0, section 5.5.2.1)

+

If a node identifier passed to the function is null, the function returns null.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeDescription
HierarchyNodes[EntityType]A collection, given through a $root expression
HierarchyQualifierHierarchyQualifier
NodePrimitiveType?Node identifier of the putative leaf
Boolean?
+

+

rollupnode

+

During rolluprecursive for a hierarchy node, this function returns the node

+

This function may only occur in the second parameter of a groupby transformation whose first parameter contains rolluprecursive(...). It is evaluated as part of the transformation R(x) in the “rolluprecursive algorithm” (OData-Data-Agg-v4.0, section 6.3). Its behavior is undefined outside of this algorithm.

+
Sales?$apply=groupby((rolluprecursive(...)), filter(SalesOrganization eq Aggregation.rollupnode())/aggregate(...))
+

constructs a rollup that contains aggregates per hierarchy node while excluding descendants from the aggregation.

+ + + + + + + + + + + + + + + + + + + + +
ParameterTypeDescription
PositionInt16Optional parameter: Position N among the rolluprecursive operators in the first argument of groupby
Every instance in the output set of a groupby transformation with M rolluprecursive operators has M relationships to M nodes in M recursive hierarchies. This function returns the node x with path r to the root in relationship number N. If several such groupby transformations are nested, this function refers to the innermost one.
EntityType
+

+

ApplySupportedBase

+

Services that do not fully implement a certain aggregation-related functionality may document this by annotating the ApplySupported or ApplySupportedDefaults annotation with a description.

+

Derived Types:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
Transformations[Transformation]Transformations that can be used in $apply
CustomAggregationMethods[String]Qualified names of custom aggregation methods that can be used in aggregate(...with...)
RollupRollupTypeThe service supports rollup hierarchies in a groupby transformation
FromBooleanThe service supports the from keyword in an aggregate transformation
+

+

ApplySupportedType: ApplySupportedBase

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
Transformations[Transformation]Transformations that can be used in $apply
CustomAggregationMethods[String]Qualified names of custom aggregation methods that can be used in aggregate(...with...)
RollupRollupTypeThe service supports rollup hierarchies in a groupby transformation
FromBooleanThe service supports the from keyword in an aggregate transformation
PropertyRestrictions (Deprecated)BooleanDeprecated since Groupable and Aggregatable are deprecated
GroupableProperties[AnyPropertyPath]A non-empty collection indicates that only the listed properties of the annotated target are supported by the groupby transformation
AggregatableProperties[AggregatablePropertyType]A non-empty collection indicates that only the listed properties of the annotated target can be used in the aggregate transformation, optionally restricted to the specified aggregation methods
+

+

AggregatablePropertyType

+ + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
PropertyPropertyPathAggregatable property
SupportedAggregationMethods[AggregationMethod]Standard and custom aggregation methods that can be applied to the property. If omitted, all aggregation methods can be applied
RecommendedAggregationMethodAggregationMethod?Recommended method for aggregating values of the property
+

+

Transformation

+

Type: String

+

A transformation that can be used in $apply

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Allowed ValueDescription
aggregateOData-Data-Agg-v4.0, section 3.2.1
groupbyOData-Data-Agg-v4.0, section 3.2.3
concatOData-Data-Agg-v4.0, section 3.2.2
identityOData-Data-Agg-v4.0, section 3.4.1
filterOData-Data-Agg-v4.0, section 3.3.2
searchOData-Data-Agg-v4.0, section 3.3.4
nestOData-Data-Agg-v4.0, section 3.5.2
addnestedOData-Data-Agg-v4.0, section 3.4.3
joinOData-Data-Agg-v4.0, section 3.5.1
outerjoinOData-Data-Agg-v4.0, section 3.5.1
computeOData-Data-Agg-v4.0, section 3.4.2
bottomcountOData-Data-Agg-v4.0, section 3.3.1.1
bottomsumOData-Data-Agg-v4.0, section 3.3.1.3
bottompercentOData-Data-Agg-v4.0, section 3.3.1.2
topcountOData-Data-Agg-v4.0, section 3.3.1.1
topsumOData-Data-Agg-v4.0, section 3.3.1.3
toppercentOData-Data-Agg-v4.0, section 3.3.1.2
orderbyOData-Data-Agg-v4.0, section 3.3.3
topOData-Data-Agg-v4.0, section 3.3.6
skipOData-Data-Agg-v4.0, section 3.3.5
ancestorsOData-Data-Agg-v4.0, section 6.2.1
descendantsOData-Data-Agg-v4.0, section 6.2.1
traverseOData-Data-Agg-v4.0, section 6.2.2
+

+

AggregationMethod

+

Type: String

+

Standard or custom aggregation method

+

Custom aggregation methods MUST use a namespace-qualified name, that is contain at least one dot.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Allowed ValueDescription
sumCan be applied to numeric values to return the sum of the non-null values, or null if there are no non-null values or the input set is empty
minCan be applied to values with a totally ordered domain to return the smallest of the non-null values, or null if there are no non-null values or the input set is empty
maxCan be applied to values with a totally ordered domain to return the largest of the non-null values, or null if there are no non-null values or the input set is empty
averageCan be applied to numeric values to return the sum of the non-null values divided by the count of the non-null values, or null if there are no non-null values or the input set is empty
countdistinctCounts the distinct values, omitting any null values
For navigation properties, it counts the distinct entities in the union of all entities related to entities in the input set. For collection-valued primitive properties, it counts the distinct items in the union of all collection values in the input set.
+

+

RollupType

+

The number of rollup or rolluprecursive operators allowed in a groupby transformation

+ + + + + + + + + + + + + + + + + + + + + + + + + +
MemberValueDescription
None0No support for rollup or rolluprecursive
SingleHierarchy1Only one rollup or rolluprecursive operator per groupby
MultipleHierarchies2Full support for rollup and rolluprecursive
+

+

RecursiveHierarchyType

+ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
NodePropertyPropertyPathPrimitive property holding the node identifier
ParentNavigationPropertyNavigationPropertyPathProperty for navigating to the parent node(s). Its type MUST be the entity type annotated with this term, and it MUST be collection-valued or nullable single-valued.
+

+

HierarchyQualifier

+

Type: String

+

Qualifier of a RecursiveHierarchy annotation

+

Every recursive hierarchy function defined in this vocabulary has

+ +

HierarchyQualifier is the qualifier of a RecursiveHierarchy annotation on the entity type of the collection given by the HierarchyNodes parameter. This specifies a recursive hierarchy that is evaluated by the function.

+

+

AvailableOnAggregatesType

+ + + + + + + + + + + + + + + +
PropertyTypeDescription
RequiredProperties[PropertyPath]Properties required to apply this function
+

+ +

Capabilities.NavigationRestrictions that make use of the additional properties in this subtype are deprecated in favor of ApplySupported and CustomAggregate

+

+

CustomAggregateType (Deprecated)

+

Deprecated since NavigationPropertyAggregationCapabilities is also deprecated

+
+

6 Authorization Vocabulary

+

Namespace: Org.OData.Authorization.V1

+

The Authorization Vocabulary provides terms for describing authorization requirements of the service

+

Terms

+ + + + + + + + + + + + + + + + + + + + +
TermTypeDescription
SecuritySchemes[SecurityScheme]At least one of the specified security schemes are required to make a request against the service
Authorizations[Authorization]Lists the methods supported by the service to authorize access
+

+

SecurityScheme

+ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
AuthorizationSchemeNameThe name of a required authorization scheme
RequiredScopes[String]The names of scopes required from this authorization scheme
+

+

Authorization

+

Base type for all Authorization types

+

Derived Types:

+ + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
NameStringName that can be used to reference the authorization scheme
DescriptionString?Description of the authorization scheme
+

+

OpenIDConnect: Authorization

+ + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
NameStringName that can be used to reference the authorization scheme
DescriptionString?Description of the authorization scheme
IssuerUrlURLIssuer location for the OpenID Provider. Configuration information can be obtained by appending /.well-known/openid-configuration to this Url.
+

+

Http: Authorization

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
NameStringName that can be used to reference the authorization scheme
DescriptionString?Description of the authorization scheme
SchemeStringHTTP Authorization scheme to be used in the Authorization header, as per RFC7235
BearerFormatString?Format of the bearer token
+

+

OAuthAuthorization: Authorization

+

Derived Types:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
NameStringName that can be used to reference the authorization scheme
DescriptionString?Description of the authorization scheme
Scopes[AuthorizationScope]Available scopes
RefreshUrlURL?Refresh Url
+

+

OAuth2ClientCredentials: OAuthAuthorization

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
NameStringName that can be used to reference the authorization scheme
DescriptionString?Description of the authorization scheme
Scopes[AuthorizationScope]Available scopes
RefreshUrlURL?Refresh Url
TokenUrlURLToken Url
+

+

OAuth2Implicit: OAuthAuthorization

+

Security note: OAuth2 implicit grant is considered to be not secure and should not be used by clients, see OAuth 2.0 Security Best Current Practice.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
NameStringName that can be used to reference the authorization scheme
DescriptionString?Description of the authorization scheme
Scopes[AuthorizationScope]Available scopes
RefreshUrlURL?Refresh Url
AuthorizationUrlURLAuthorization URL
+

+

OAuth2Password: OAuthAuthorization

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
NameStringName that can be used to reference the authorization scheme
DescriptionString?Description of the authorization scheme
Scopes[AuthorizationScope]Available scopes
RefreshUrlURL?Refresh Url
TokenUrlURLToken Url
+

+

OAuth2AuthCode: OAuthAuthorization

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
NameStringName that can be used to reference the authorization scheme
DescriptionString?Description of the authorization scheme
Scopes[AuthorizationScope]Available scopes
RefreshUrlURL?Refresh Url
AuthorizationUrlURLAuthorization URL
TokenUrlURLToken Url
+

+

AuthorizationScope

+ + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
ScopeStringScope name
GrantString?Identity that has access to the scope or can grant access to the scope.
DescriptionStringDescription of the scope
+

+

ApiKey: Authorization

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
NameStringName that can be used to reference the authorization scheme
DescriptionString?Description of the authorization scheme
KeyNameStringThe name of the header or query parameter
LocationKeyLocationWhether the API Key is passed in the header or as a query option
+

+

KeyLocation

+ + + + + + + + + + + + + + + + + + + + + + + + + +
MemberValueDescription
Header0API Key is passed in the header
QueryOption1API Key is passed as a query option
Cookie2API Key is passed as a cookie
+

+

SchemeName

+

Type: String

+

The name of the authorization scheme.

+
+

7 Temporal Vocabulary

+

Namespace: Org.OData.Temporal.V1

+

Terms for describing time-dependent data

+

Terms

+ + + + + + + + + + + + + + + +
TermTypeDescription
ApplicationTimeSupportApplicationTimeSupportTypeThis collection supports temporal requests
+

Actions

+

+

Update

+

Updates existing time slices with values from delta time slices whose object keys match and whose periods overlap

+

The update behavior for a given object key is known from the SQL statement UPDATE ... FOR PORTION OF BUSINESS_TIME ... WHERE ....

+

deltaTimeslices with non-matching object keys and non-overlapping sub-periods of deltaTimeslices are disregarded.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeDescription
timeslices[EntityType]Binding parameter: Time slices to modify
deltaTimeslices[TimesliceWithPeriod]New time slices whose property values are used to update the timeslices collection
The delta time slices need not contain all properties, but at least the boundary values of the period to change. An absent object key property matches any key property value. New time slices are processed in the order of the collection, which especially matters if some of the specified change periods overlap.
[TimesliceWithPeriod]Modified time slices
+

+

Upsert

+

Like Update, but additionally inserts those (sub-periods of) deltaTimeslices that Update disregards

+ + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeDescription
timeslices[EntityType]Binding parameter: Time slices to modify
deltaTimeslices[TimesliceWithPeriod]New time slices to be merged into the timeslices collection
The delta time slices must contain all properties that are needed for insertion. New time slices are processed in the order of the collection, which especially matters if some of the specified change periods overlap.
[TimesliceWithPeriod]Modified time slices
+

+

Delete

+

Deletes (sub-periods of) existing time slices whose object keys match and whose periods overlap deltaTimeslices

+

The deletion behavior for a given object key is known from the SQL statement DELETE ... FOR PORTION OF BUSINESS_TIME ... WHERE .... The sub-period of an existing time slice that lies outside a given instance of deltaTimeslices is kept, effectively shortening the time slice.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeDescription
timeslices[EntityType]Binding parameter: Time slices to modify
deltaTimeslices[TimesliceWithPeriod]Time slices to be deleted from the timeslices collection
The delta time slices contain only the boundary values of the period to delete and (parts of) the object key. An absent object key property matches any key property value.
[TimesliceWithPeriod]Deleted (sub-periods of) time slices
+

+

ApplicationTimeSupportType

+ + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
UnitOfTimeUnitOfTimeUnit of time and other properties of a time period
TimelineTimelineDescribes how the history and future of the data are represented
SupportedActions[QualifiedActionName]List of supported temporal actions
+

+

UnitOfTime

+

Unit of time and other properties of a time period

+

Derived Types:

+ +

+

UnitOfTimeDateTimeOffset: UnitOfTime

+

Period start and end are of type Edm.DateTimeOffset

+ + + + + + + + + + + + + + + +
PropertyTypeDescription
PrecisionBytePrecision of Edm.DateTimeOffset values for period start and end
+

+

UnitOfTimeDate: UnitOfTime

+

Period start and end are of type Edm.Date

+

The period is a contiguous set of days and does not consider the time of the day.

+ + + + + + + + + + + + + + + +
PropertyTypeDescription
ClosedClosedPeriodsBooleanIf true, the period end is the last day in the period; if false, the period end is the first day after the period
+

+

Timeline

+

Describes how the history and future of the data are represented

+

Derived Types:

+ +

+

TimelineSnapshot: Timeline

+

Each OData entity maps each point in application time to an instance of the entity type

+

To address an entity in a resource path or path to related resources, a point in application time must be specified as described in [OData-Temporal, section 4.2.1]. The addressed entity is then a snapshot of the data at the given point in time. When an action defined in this vocabulary is applied to a collection of this entity type, the entity key plays the role of object key.

+

+

TimelineVisible: Timeline

+

Each OData entity represents data during a period of application time

+

The temporal collection MUST NOT contain two entities with the same object key as defined by their ObjectKey properties and with overlapping application-time periods as defined by their PeriodStart and PeriodEnd properties. The temporal collection always contains all entities (with consecutive time periods) for a given object key.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
PeriodStartPropertyPathProperty containing lower boundary of a period
PeriodEndPropertyPathProperty containing upper boundary of a period
If an upper boundary property does not specify a default value, a default value of max is assumed.
ObjectKey[PropertyPath]The set of primitive properties that identify a temporal object
A temporal object is a set of facts whose changes over application time are tracked by the service. The entities in the annotated collection belong to potentially multiple temporal objects, and each temporal object is uniquely identified by the values of the specified object key properties. Object key properties follow the same rules as entity key properties. If no object key is specified, only a single temporal object belongs to the annotated collection.
+

+

TimesliceWithPeriod

+

Delta time slices with validity period

+

The properties PeriodStart and PeriodEnd MUST NOT be present if the entity type of the Timeslice already contains period start and end, that is, if the collection on which the action is invoked has visible timeline. If present, they MUST have the same type, either Edm.Date or Edm.DateTimeOffset, and they are interpreted according to the ApplicationTimeSupport/UnitOfTime of the collection. In particular, ApplicationTimeSupport/UnitOfTime/ClosedClosedPeriods governs whether a PeriodEnd of type Edm.Date is the last day in the period or the first day after the period. If PeriodStart is present and PeriodEnd is absent, a default value of max is assumed for PeriodEnd.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
PeriodStartPrimitiveType?Lower boundary of the time slice
PeriodEndPrimitiveType?Upper boundary of the time slice
TimesliceEntityTypeA time slice with the same entity type as the binding parameter of the action
When it appears in the return type of an action in this vocabulary, the time slice has the same entity set as the binding parameter value.
+ + diff --git a/docs/odata-vocabularies/odata-vocabularies.md b/docs/odata-vocabularies/odata-vocabularies.md new file mode 100644 index 00000000..df4f00f5 --- /dev/null +++ b/docs/odata-vocabularies/odata-vocabularies.md @@ -0,0 +1,1844 @@ + +![OASIS Logo](https://docs.oasis-open.org/templates/OASISLogo-v3.0.png) + +------- + +# OData Vocabularies Version 4.0 + +## Committee Specification Draft 02 / Public Review Draft 02 + +## 28 February 2024 + +$\hbox{}$ + +#### This stage: +https://docs.oasis-open.org/odata/odata-json-format/v4.0/csprd02/odata-vocabularies-v4.0-csprd02.md (Authoritative) \ +https://docs.oasis-open.org/odata/odata-json-format/v4.0/csprd02/odata-vocabularies-v4.0-csprd02.html \ +https://docs.oasis-open.org/odata/odata-json-format/v4.0/csprd02/odata-vocabularies-v4.0-csprd02.pdf + +#### Previous stage: +https://docs.oasis-open.org/odata/odata-json-format/v4.0/csprd01/odata-vocabularies-v4.0-csprd01.md (Authoritative) \ +https://docs.oasis-open.org/odata/odata-json-format/v4.0/csprd01/odata-vocabularies-v4.0-csprd01.html \ +https://docs.oasis-open.org/odata/odata-json-format/v4.0/csprd01/odata-vocabularies-v4.0-csprd01.pdf + +#### Latest stage: +https://docs.oasis-open.org/odata/odata-json-format/v4.0/odata-vocabularies-v4.0.md (Authoritative) \ +https://docs.oasis-open.org/odata/odata-json-format/v4.0/odata-vocabularies-v4.0.html \ +https://docs.oasis-open.org/odata/odata-json-format/v4.0/odata-vocabularies-v4.0.pdf + +#### Technical Committee: +[OASIS Open Data Protocol (OData) TC](https://www.oasis-open.org/committees/odata/) + +#### Chairs: + +Ralf Handl (ralf.handl@sap.com), [SAP SE](http://www.sap.com/) \ +Michael Pizzo (mikep@microsoft.com), [Microsoft](http://www.microsoft.com/) + +#### Editors: + +Ralf Handl (ralf.handl@sap.com), [SAP SE](http://www.sap.com/) \ +Michael Pizzo (mikep@microsoft.com), [Microsoft](http://www.microsoft.com/) \ +Heiko Theißen (heiko.theissen@sap.com), [SAP SE](http://www.sap.com/) + +#### Related work: +This specification replaces or supersedes: +OData Vocabularies Version 4.0. Edited by Ralf Handl, Michael Pizzo, and Ram Jeyaraman. 08 December 2016. OASIS Committee Specification Draft 01 / Public Review Draft 01. http://docs.oasis-open.org/odata/odata-vocabularies/v4.0/csprd01/odata-vocabularies-v4.0-csprd01.html. Latest version: http://docs.oasis-open.org/odata/odata-vocabularies/v4.0/odata-vocabularies-v4.0.html. + +This specification is related to: +* _OData Version 4.02_. Edited by Michael Pizzo, Ralf Handl, and Heiko Theißen. A multi-part Work Product that includes: + * _OData Version 4.02 Part 1: Protocol_. Latest stage. https://docs.oasis-open.org/odata/odata/v4.02/odata-v4.02-part1-protocol.html + * _OData Version 4.02 Part 2: URL Conventions_. Latest stage. https://docs.oasis-open.org/odata/odata/v4.02/odata-v4.02-part2-url-conventions.html + * _ABNF components: OData ABNF Construction Rules Version 4.02 and OData ABNF Test Cases_. https://docs.oasis-open.org/odata/odata/v4.02/csprd02/abnf/ +* _OData Vocabularies Version 4.0_. Edited by Michael Pizzo, Ralf Handl, and Ram Jeyaraman. Latest stage: https://docs.oasis-open.org/odata/odata-vocabularies/v4.0/odata-vocabularies-v4.0.html +* _OData Common Schema Definition Language (CSDL) JSON Representation Version 4.02_. Edited by Michael Pizzo, Ralf Handl, and Heiko Theißen. Latest stage: https://docs.oasis-open.org/odata/odata-csdl-json/v4.02/odata-csdl-json-v4.02.html +* _OData Common Schema Definition Language (CSDL) XML Representation Version 4.02_. Edited by Michael Pizzo, Ralf Handl, and Heiko Theißen. Latest stage: https://docs.oasis-open.org/odata/odata-csdl-xml/v4.02/odata-csdl-xml-v4.02.html + +#### Abstract: +This prose specification describes a set of OData vocabularies maintained by the OASIS OData Technical Committee. These vocabulary components are continuously evolved. The latest work-in-progress revisions are available at the odata-vocabularies OASIS TC GitHub repository: https://github.com/oasis-tcs/odata-vocabularies. + +#### Status: +This document was last revised or approved by the OASIS Open Data Protocol (OData) TC on the above date. The level of approval is also listed above. Check the "Latest stage" location noted above for possible later revisions of this document. Any other numbered Versions and other technical work produced by the Technical Committee (TC) are listed at https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=odata#technical. + +TC members should send comments on this specification to the TC's email list. Others should send comments to the TC's public comment list, after subscribing to it by following the instructions at the "Send A Comment" button on the TC's web page at https://www.oasis-open.org/committees/odata/. + +This specification is provided under the [RF on RAND Terms Mode](https://www.oasis-open.org/policies-guidelines/ipr/#RF-on-RAND-Mode) of the [OASIS IPR Policy](https://www.oasis-open.org/policies-guidelines/ipr/), the mode chosen when the Technical Committee was established. For information on whether any patents have been disclosed that may be essential to implementing this specification, and any offers of patent licensing terms, please refer to the Intellectual Property Rights section of the TC's web page (https://www.oasis-open.org/committees/odata/ipr.php). + +Note that any machine-readable content ([Computer Language Definitions](https://www.oasis-open.org/policies-guidelines/tc-process-2017-05-26/#wpComponentsCompLang)) declared Normative for this Work Product is provided in separate plain text files. In the event of a discrepancy between any such plain text file and display content in the Work Product's prose narrative document(s), the content in the separate plain text file prevails. + +#### Key words: +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119](#rfc2119) and [RFC8174](#rfc8174) when, and only when, they appear in all capitals, as shown here. + +#### Citation format: +When referencing this specification the following citation format should be used: + +**[OData-Vocabularies-v4.0]** + +_OData Vocabularies Version 4.0_. +Edited by Ralf Handl, Michael Pizzo, and Heiko Theißen. 28 February 2024. OASIS Committee Specification Draft 02 / Public Review Draft 02. +https://docs.oasis-open.org/odata/odata-vocabularies/v4.0/csprd02/odata-vocabularies-v4.0-csprd02.html. +Latest stage: https://docs.oasis-open.org/odata/odata-vocabularies/v4.0/odata-vocabularies-v4.0.html. + +#### Notices +Copyright © OASIS Open 2024. All Rights Reserved. + +Distributed under the terms of the OASIS [IPR Policy](https://www.oasis-open.org/policies-guidelines/ipr/). + +The name "OASIS" is a trademark of [OASIS](https://www.oasis-open.org/), the owner and developer of this specification, and should be used only to refer to the organization and its official outputs. + +For complete copyright information please see the full Notices section in an Appendix [below](#Notices). + +------- + +# Table of Contents + +::: toc +- [1 Core Vocabulary](#CoreVocabulary) +- [2 Capabilities Vocabulary](#CapabilitiesVocabulary) +- [3 Measures Vocabulary](#MeasuresVocabulary) +- [4 Validation Vocabulary](#ValidationVocabulary) +- [5 Aggregation Vocabulary](#AggregationVocabulary) +- [6 Authorization Vocabulary](#AuthorizationVocabulary) +- [7 Temporal Vocabulary](#TemporalVocabulary) +::: + + +------- + +# 1 Core Vocabulary + +**Namespace: [Org.OData.Core.V1](Org.OData.Core.V1.xml)** + +Core terms needed to write vocabularies + + +## Terms + +Term|Type|Description +:---|:---|:---------- +[ODataVersions](./Org.OData.Core.V1.xml#L69:~:text=A space-separated list of supported versions of the OData Protocol. Note that 4.0 is implied by 4.01 and does not need to be separately listed. +[SchemaVersion](./Org.OData.Core.V1.xml#L73:~:text=Service-defined value representing the version of the schema. Services MAY use semantic versioning, but clients MUST NOT assume this is the case. +[Revisions](./Org.OData.Core.V1.xml#L77:~:text=List of revisions of a model element +[Description](./Org.OData.Core.V1.xml#L105:~:text=A brief description of a model element +[LongDescription](./Org.OData.Core.V1.xml#L110:~:text=A long description of a model element +[Links](./Org.OData.Core.V1.xml#L115:~:text=Link to related information +[Example](./Org.OData.Core.V1.xml#L129:~:text=Example for an instance of the annotated model element ([Example](./Org.OData.Core.V1.xml#L131)) +[Messages](./Org.OData.Core.V1.xml#L198:~:text=Instance annotation for warning and info messages +[ValueException](./Org.OData.Core.V1.xml#L242:~:text=The annotated value is problematic +[ResourceException](./Org.OData.Core.V1.xml#L256:~:text=The annotated instance within a success payload is problematic +[DataModificationException](./Org.OData.Core.V1.xml#L266:~:text=A modification operation failed on the annotated instance or collection within a success payload +[IsLanguageDependent](./Org.OData.Core.V1.xml#L306:~:text=Properties and terms annotated with this term are language-dependent +[RequiresType](./Org.OData.Core.V1.xml#L317:~:text=Terms annotated with this term can only be applied to elements that have a type that is identical to or derived from the given type name +[AppliesViaContainer](./Org.OData.Core.V1.xml#L321:~:text=The target path of an annotation with the tagged term MUST start with an entity container or the annotation MUST be embedded within an entity container, entity set or singleton
Services MAY additionally annotate a container-independent model element (entity type, property, navigation property) if allowed by the `AppliesTo` property of the term and the annotation applies to all uses of that model element. +[ResourcePath](./Org.OData.Core.V1.xml#L331:~:text=Resource path for entity container child, can be relative to xml:base and the request URL +[DereferenceableIDs](./Org.OData.Core.V1.xml#L336:~:text=Entity-ids are URLs that locate the identified entity +[ConventionalIDs](./Org.OData.Core.V1.xml#L340:~:text=Entity-ids follow OData URL conventions +[Permissions](./Org.OData.Core.V1.xml#L346:~:text=Permissions for accessing a resource +[ContentID](./Org.OData.Core.V1.xml#L369:~:text=A unique identifier for nested entities within a request. +[DefaultNamespace](./Org.OData.Core.V1.xml#L375:~:text=Functions, actions and types in this namespace can be referenced in URLs with or without namespace- or alias- qualification.
Data Modelers should ensure uniqueness of schema children across all default namespaces, and should avoid naming bound functions, actions, or derived types with the same name as a structural or navigational property of the type. +[Immutable](./Org.OData.Core.V1.xml#L380:~:text=A value for this non-key property can be provided by the client on insert and remains unchanged on update +[Computed](./Org.OData.Core.V1.xml#L384:~:text=A value for this property is generated on both insert and update +[ComputedDefaultValue](./Org.OData.Core.V1.xml#L388:~:text=A value for this property can be provided by the client on insert and update. If no value is provided on insert, a non-static default value is generated +[IsURL](./Org.OData.Core.V1.xml#L392:~:text=Properties and terms annotated with this term MUST contain a valid URL +[AcceptableMediaTypes](./Org.OData.Core.V1.xml#L397:~:text=Lists the MIME types acceptable for the annotated entity type marked with HasStream="true" or the annotated binary, stream, or string property or term
The annotation of a TypeDefinition propagates to the model elements having this type +[MediaType](./Org.OData.Core.V1.xml#L403:~:text=The media type of the media stream of the annotated entity type marked with HasStream="true" or the annotated binary, stream, or string property or term
The annotation of a TypeDefinition propagates to the model elements having this type +[IsMediaType](./Org.OData.Core.V1.xml#L409:~:text=Properties and terms annotated with this term MUST contain a valid MIME type +[ContentDisposition](./Org.OData.Core.V1.xml#L414:~:text=The content disposition of the media stream of the annotated entity type marked with HasStream="true" or the annotated binary, stream, or string property or term +[OptimisticConcurrency](./Org.OData.Core.V1.xml#L427:~:text=Data modification requires the use of ETags. A non-empty collection contains the set of properties that are used to compute the ETag. An empty collection means that the service won't tell how it computes the ETag +[AdditionalProperties](./Org.OData.Core.V1.xml#L431:~:text=Instances of this type may contain properties in addition to those declared in $metadata
If specified as false clients can assume that instances will not contain dynamic properties, irrespective of the value of the OpenType attribute. +[AutoExpand](./Org.OData.Core.V1.xml#L436:~:text=The service will automatically expand this stream property, navigation property, or the media stream of this media entity type even if not requested with $expand +[AutoExpandReferences](./Org.OData.Core.V1.xml#L440:~:text=The service will automatically expand this navigation property as entity references even if not requested with $expand=.../$ref +[MayImplement](./Org.OData.Core.V1.xml#L444:~:text=A collection of qualified type names outside of the type hierarchy that instances of this type might be addressable as by using a type-cast segment. +[Ordered](./Org.OData.Core.V1.xml#L471:~:text=Collection has a stable order. Ordered collections of primitive or complex types can be indexed by ordinal. +[PositionalInsert](./Org.OData.Core.V1.xml#L475:~:text=Items can be inserted at a given ordinal index. +[AlternateKeys](./Org.OData.Core.V1.xml#L479:~:text=Communicates available alternate keys +[OptionalParameter](./Org.OData.Core.V1.xml#L507:~:text=Supplying a value for the action or function parameter is optional.
All parameters marked as optional must come after any parameters not marked as optional. The binding parameter must not be marked as optional. +[OperationAvailable](./Org.OData.Core.V1.xml#L518:~:text=Action or function is available
The annotation value will usually be an expression, e.g. using properties of the binding parameter type for instance-dependent availability, or using properties of a singleton for global availability. The static value `null` means that availability cannot be determined upfront and is instead expressed as an operation advertisement. +[RequiresExplicitBinding](./Org.OData.Core.V1.xml#L523:~:text=This bound action or function is only available on model elements annotated with the ExplicitOperationBindings term. +[ExplicitOperationBindings](./Org.OData.Core.V1.xml#L527:~:text=The qualified names of explicitly bound operations that are supported on the target model element. These operations are in addition to any operations not annotated with RequiresExplicitBinding that are bound to the type of the target model element. +[SymbolicName](./Org.OData.Core.V1.xml#L536:~:text=A symbolic name for a model element +[GeometryFeature](./Org.OData.Core.V1.xml#L545:~:text=A [Feature Object](https://datatracker.ietf.org/doc/html/rfc7946#section-3.2) represents a spatially bounded thing +[AnyStructure](./Org.OData.Core.V1.xml#L561:~:text=Instances of a type are annotated with this tag if they have no common structure in a given response payload
The select-list of a context URL MUST be `(@Core.AnyStructure)` if it would otherwise be empty, but this instance annotation SHOULD be omitted from the response value. + + +## [RevisionType](./Org.OData.Core.V1.xml#L80:~:text= +## [RevisionKind](./Org.OData.Core.V1.xml#L91:~:text= +## [Link](./Org.OData.Core.V1.xml#L118:~:text= +## [ExampleValue](./Org.OData.Core.V1.xml#L169:~:text= +## [PrimitiveExampleValue](./Org.OData.Core.V1.xml#L174:~:text= +## [ComplexExampleValue](./Org.OData.Core.V1.xml#L179:~:text= +## [EntityExampleValue](./Org.OData.Core.V1.xml#L184:~:text= +## [ExternalExampleValue](./Org.OData.Core.V1.xml#L189:~:text= +## [MessageType](./Org.OData.Core.V1.xml#L201:~:text= +## [MessageSeverity](./Org.OData.Core.V1.xml#L219:~:text= +## [*ExceptionType*](./Org.OData.Core.V1.xml#L245:~:text= +## [ValueExceptionType](./Org.OData.Core.V1.xml#L250:~:text= +## [ResourceExceptionType](./Org.OData.Core.V1.xml#L259:~:text= +## [DataModificationExceptionType](./Org.OData.Core.V1.xml#L269:~:text= +## [DataModificationOperationKind](./Org.OData.Core.V1.xml#L279:~:text= +## [Tag](./Org.OData.Core.V1.xml#L311:~:text= +## [Permission](./Org.OData.Core.V1.xml#L349:~:text= +## [ContentDispositionType](./Org.OData.Core.V1.xml#L418:~:text= +## [QualifiedTermName](./Org.OData.Core.V1.xml#L448:~:text= +## [QualifiedTypeName](./Org.OData.Core.V1.xml#L452:~:text= +## [QualifiedActionName](./Org.OData.Core.V1.xml#L456:~:text= +## [QualifiedBoundOperationName](./Org.OData.Core.V1.xml#L460:~:text= +## [AlternateKey](./Org.OData.Core.V1.xml#L482:~:text= +## [PropertyRef](./Org.OData.Core.V1.xml#L487:~:text= +## [Dictionary](./Org.OData.Core.V1.xml#L496:~:text= +## [OptionalParameterType](./Org.OData.Core.V1.xml#L511:~:text=If no explicit DefaultValue is specified, the service is free on how to interpret omitting the parameter from the request. For example, a service might interpret an omitted optional parameter `KeyDate` as having the current date. + + +## [LocalDateTime](./Org.OData.Core.V1.xml#L531:~:text= +## [SimpleIdentifier](./Org.OData.Core.V1.xml#L540:~:text= +## [GeometryFeatureType](./Org.OData.Core.V1.xml#L548:~:text=2 Capabilities Vocabulary + +**Namespace: [Org.OData.Capabilities.V1](Org.OData.Capabilities.V1.xml)** + +Terms describing capabilities of a service + + +There are some capabilities which are strongly recommended for services to support even +though they are optional. Support for $top and $skip is a good example as +supporting these query options helps with performance of a service and are essential. Such +capabilities are assumed to be default capabilities of an OData service even in +the case that a capabilities annotation doesn’t exist. Capabilities annotations are +mainly expected to be used to explicitly specify that a service doesn’t support such +capabilities. Capabilities annotations can as well be used to declaratively +specify the support of such capabilities. + +On the other hand, there are some capabilities that a service may choose to support or +not support and in varying degrees. $filter and $orderby are such good examples. +This vocabulary aims to define terms to specify support or no support for such +capabilities. + +A service is assumed to support by default the following capabilities even though an +annotation doesn’t exist: +- Countability ($count) +- Client pageability ($top, $skip) +- Expandability ($expand) +- Indexability by key +- Batch support ($batch) +- Navigability of navigation properties + +A service is expected to support the following capabilities. If not supported, the +service is expected to call out the restrictions using annotations: +- Filterability ($filter) +- Sortability ($orderby) +- Queryability of top level entity sets +- Query functions + +A client cannot assume that a service supports certain capabilities. A client can try, but +it needs to be prepared to handle an error in case the following capabilities are not +supported: +- Insertability +- Updatability +- Deletability + + + +## Terms + +Term|Type|Description +:---|:---|:---------- +[ConformanceLevel](./Org.OData.Capabilities.V1.xml#L115:~:text=The conformance level achieved by this service +[SupportedFormats](./Org.OData.Capabilities.V1.xml#L132:~:text=Media types of supported formats, including format parameters +[SupportedMetadataFormats](./Org.OData.Capabilities.V1.xml#L137:~:text=Media types of supported formats for $metadata, including format parameters +[AcceptableEncodings](./Org.OData.Capabilities.V1.xml#L142:~:text=List of acceptable compression methods for ($batch) requests, e.g. gzip +[AsynchronousRequestsSupported](./Org.OData.Capabilities.V1.xml#L148:~:text=Service supports the asynchronous request preference +[BatchContinueOnErrorSupported](./Org.OData.Capabilities.V1.xml#L152:~:text=Service supports the continue on error preference. Supports $batch requests. Services that apply the BatchContinueOnErrorSupported term should also specify the ContinueOnErrorSupported property from the BatchSupport term. +[IsolationSupported](./Org.OData.Capabilities.V1.xml#L156:~:text=Supported odata.isolation levels +[CrossJoinSupported](./Org.OData.Capabilities.V1.xml#L165:~:text=Supports cross joins for the entity sets in this container +[CallbackSupported](./Org.OData.Capabilities.V1.xml#L169:~:text=Supports callbacks for the specified protocols +[ChangeTracking](./Org.OData.Capabilities.V1.xml#L191:~:text=Change tracking capabilities of this service or entity set +[CountRestrictions](./Org.OData.Capabilities.V1.xml#L212:~:text=Restrictions on /$count path suffix and $count=true system query option +[NavigationRestrictions](./Org.OData.Capabilities.V1.xml#L230:~:text=Restrictions on navigating properties according to OData URL conventions
Restrictions specified on an entity set are valid whether the request is directly to the entity set or through a navigation property bound to that entity set. Services can specify a different set of restrictions specific to a path, in which case the more specific restrictions take precedence. +[IndexableByKey](./Org.OData.Capabilities.V1.xml#L321:~:text=Supports key values according to OData URL conventions +[TopSupported](./Org.OData.Capabilities.V1.xml#L326:~:text=Supports $top +[SkipSupported](./Org.OData.Capabilities.V1.xml#L331:~:text=Supports $skip +[ComputeSupported](./Org.OData.Capabilities.V1.xml#L336:~:text=Supports $compute +[SelectSupport](./Org.OData.Capabilities.V1.xml#L341:~:text=Support for $select and nested query options within $select +[BatchSupported](./Org.OData.Capabilities.V1.xml#L378:~:text=Supports $batch requests. Services that apply the BatchSupported term should also apply the more comprehensive BatchSupport term. +[BatchSupport](./Org.OData.Capabilities.V1.xml#L382:~:text=Batch Support for the service +[FilterFunctions](./Org.OData.Capabilities.V1.xml#L428:~:text=List of functions and operators supported in filter expressions
If not specified, null, or empty, all functions and operators may be attempted. +[FilterRestrictions](./Org.OData.Capabilities.V1.xml#L434:~:text=Restrictions on filter expressions +[SortRestrictions](./Org.OData.Capabilities.V1.xml#L506:~:text=Restrictions on orderby expressions +[ExpandRestrictions](./Org.OData.Capabilities.V1.xml#L532:~:text=Restrictions on expand expressions +[SearchRestrictions](./Org.OData.Capabilities.V1.xml#L562:~:text=Restrictions on search expressions +[KeyAsSegmentSupported](./Org.OData.Capabilities.V1.xml#L600:~:text=Supports [key-as-segment convention](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#sec_KeyasSegmentConvention) for addressing entities within a collection +[QuerySegmentSupported](./Org.OData.Capabilities.V1.xml#L604:~:text=Supports [passing query options in the request body](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#sec_PassingQueryOptionsintheRequestBody) +[InsertRestrictions](./Org.OData.Capabilities.V1.xml#L610:~:text=Restrictions on insert operations +[DeepInsertSupport](./Org.OData.Capabilities.V1.xml#L689:~:text=Deep Insert Support of the annotated resource (the whole service, an entity set, or a collection-valued resource) +[UpdateRestrictions](./Org.OData.Capabilities.V1.xml#L702:~:text=Restrictions on update operations +[DeepUpdateSupport](./Org.OData.Capabilities.V1.xml#L788:~:text=Deep Update Support of the annotated resource (the whole service, an entity set, or a collection-valued resource) +[DeleteRestrictions](./Org.OData.Capabilities.V1.xml#L801:~:text=Restrictions on delete operations +[CollectionPropertyRestrictions](./Org.OData.Capabilities.V1.xml#L845:~:text=Describes restrictions on operations applied to collection-valued structural properties +[OperationRestrictions](./Org.OData.Capabilities.V1.xml#L886:~:text=Restrictions for function or action operation +[AnnotationValuesInQuerySupported](./Org.OData.Capabilities.V1.xml#L906:~:text=Supports annotation values within system query options +[ModificationQueryOptions](./Org.OData.Capabilities.V1.xml#L910:~:text=Support for query options with modification requests (insert, update, action invocation) +[ReadRestrictions](./Org.OData.Capabilities.V1.xml#L934:~:text=Restrictions for retrieving a collection of entities, retrieving a singleton instance. +[CustomHeaders](./Org.OData.Capabilities.V1.xml#L976:~:text=Custom headers that are supported/required for the annotated resource ([Example](./Org.OData.Capabilities.V1.xml#L978)) +[CustomQueryOptions](./Org.OData.Capabilities.V1.xml#L1002:~:text=Custom query options that are supported/required for the annotated resource ([Example](./Org.OData.Capabilities.V1.xml#L1005))
If the entity container is annotated, the query option is supported/required by all resources in that container. +[MediaLocationUpdateSupported](./Org.OData.Capabilities.V1.xml#L1054:~:text=Stream property or media stream supports update of its media edit URL and/or media read URL +[DefaultCapabilities](./Org.OData.Capabilities.V1.xml#L1059:~:text=Default capability settings for all collection-valued resources in the container

Annotating a specific capability term, which is included as property in DefaultCapabilitiesType, for a specific collection-valued resource overrides the default capability with the specified properties using PATCH semantics:

  • Primitive or collection-valued properties specified in the specific capability term replace the corresponding properties specified in DefaultCapabilities
  • Complex-valued properties specified in the specific capability term override the corresponding properties specified in DefaultCapabilities using PATCH semantics recursively
  • Properties specified neither in the specific term nor in DefaultCapabilities have their default value
+ + +## [ConformanceLevelType](./Org.OData.Capabilities.V1.xml#L118:~:text= +## [IsolationLevel](./Org.OData.Capabilities.V1.xml#L159:~:text= +## [CallbackType](./Org.OData.Capabilities.V1.xml#L172:~:text= +## [CallbackProtocol](./Org.OData.Capabilities.V1.xml#L178:~:text= +## [ChangeTrackingBase](./Org.OData.Capabilities.V1.xml#L194:~:text= +## [ChangeTrackingType](./Org.OData.Capabilities.V1.xml#L199:~:text=If no properties are specified or FilterableProperties is omitted, clients cannot assume support for filtering on any properties in combination with change tracking. +[ExpandableProperties](./Org.OData.Capabilities.V1.xml#L204:~:text=If no properties are specified or ExpandableProperties is omitted, clients cannot assume support for expanding any properties in combination with change tracking. + + +## [CountRestrictionsBase](./Org.OData.Capabilities.V1.xml#L216:~:text= +## [CountRestrictionsType](./Org.OData.Capabilities.V1.xml#L221:~:text= +## [NavigationRestrictionsType](./Org.OData.Capabilities.V1.xml#L235:~:text= +## [NavigationPropertyRestriction](./Org.OData.Capabilities.V1.xml#L243:~:text=The target path of a [`NavigationRestrictions`](#NavigationRestrictions) annotation followed by this navigation property path addresses the resource to which the other properties of `NavigationPropertyRestriction` apply. Instance paths that occur in dynamic expressions are evaluated starting at the boundary between both paths, which must therefore be chosen accordingly. +[Navigability](./Org.OData.Capabilities.V1.xml#L259:~:text=If not specified, null, or empty, all functions and operators may be attempted. +[FilterRestrictions](./Org.OData.Capabilities.V1.xml#L266:~:text= +## [NavigationType](./Org.OData.Capabilities.V1.xml#L309:~:text= +## [SelectSupportType](./Org.OData.Capabilities.V1.xml#L345:~:text= +## [BatchSupportType](./Org.OData.Capabilities.V1.xml#L385:~:text=Allowed values:
[multipart/mixed](./Org.OData.Capabilities.V1.xml#L415)
[Multipart Batch Format](http://docs.oasis-open.org/odata/odata/v4.01/cs01/part1-protocol/odata-v4.01-cs01-part1-protocol.html#sec_MultipartBatchFormat)
[application/json](./Org.OData.Capabilities.V1.xml#L419)
[JSON Batch Format](http://docs.oasis-open.org/odata/odata-json-format/v4.01/cs01/odata-json-format-v4.01-cs01.html#sec_BatchRequestsandResponses) + +**Applicable Annotation Terms:** + +- [Description](Org.OData.Core.V1.md#Description) +- [LongDescription](Org.OData.Core.V1.md#LongDescription) + + +## [FilterRestrictionsBase](./Org.OData.Capabilities.V1.xml#L438:~:text= +## [FilterRestrictionsType](./Org.OData.Capabilities.V1.xml#L454:~:text= +## [FilterExpressionRestrictionType](./Org.OData.Capabilities.V1.xml#L465:~:text= +## [FilterExpressionType](./Org.OData.Capabilities.V1.xml#L473:~:text=The filter expression for this property consists of one or more interval expressions combined by `or`. A single interval expression is either a single comparison of the property and a literal value with `eq`, `le`, `lt`, `ge`, or `gt`, or pair of boundaries combined by `and` and enclosed in parentheses. The lower boundary is either `ge` or `gt`, the upper boundary either `le` or `lt`. +[SearchExpression](./Org.OData.Capabilities.V1.xml#L493:~:text=The filter expression for this property consists of one or more interval expressions or string comparison functions combined by `or`. See MultiRange for a definition of an interval expression. See SearchExpression for the allowed string comparison functions. + + +## [SortRestrictionsBase](./Org.OData.Capabilities.V1.xml#L510:~:text= +## [SortRestrictionsType](./Org.OData.Capabilities.V1.xml#L520:~:text= +## [ExpandRestrictionsBase](./Org.OData.Capabilities.V1.xml#L536:~:text= +## [ExpandRestrictionsType](./Org.OData.Capabilities.V1.xml#L552:~:text= +## [SearchRestrictionsType](./Org.OData.Capabilities.V1.xml#L566:~:text= +## [SearchExpressions](./Org.OData.Capabilities.V1.xml#L579:~:text= +## [InsertRestrictionsBase](./Org.OData.Capabilities.V1.xml#L614:~:text= +## [InsertRestrictionsType](./Org.OData.Capabilities.V1.xml#L645:~:text= +## [PermissionType](./Org.OData.Capabilities.V1.xml#L660:~:text= +## [ScopeType](./Org.OData.Capabilities.V1.xml#L669:~:text=Possible string value identifiers when specifying properties are `*`, _PropertyName_, `-`_PropertyName_.
`*` denotes all properties are accessible.
`-`_PropertyName_ excludes that specific property.
_PropertyName_ explicitly provides access to the specific property.
The absence of `RestrictedProperties` denotes all properties are accessible using that scope. + + +## [DeepInsertSupportType](./Org.OData.Capabilities.V1.xml#L693:~:text= +## [UpdateRestrictionsBase](./Org.OData.Capabilities.V1.xml#L706:~:text= +## [UpdateRestrictionsType](./Org.OData.Capabilities.V1.xml#L752:~:text= +## [HttpMethod](./Org.OData.Capabilities.V1.xml#L764:~:text= +## [DeepUpdateSupportType](./Org.OData.Capabilities.V1.xml#L792:~:text= +## [DeleteRestrictionsBase](./Org.OData.Capabilities.V1.xml#L805:~:text= +## [DeleteRestrictionsType](./Org.OData.Capabilities.V1.xml#L839:~:text= +## [CollectionPropertyRestrictionsType](./Org.OData.Capabilities.V1.xml#L848:~:text=If not specified, null, or empty, all functions and operators may be attempted. +[FilterRestrictions](./Org.OData.Capabilities.V1.xml#L856:~:text=If additionally annotated with [Core.PositionalInsert](Org.OData.Core.V1.md#PositionalInsert), members can be inserted at a specific position +[Updatable](./Org.OData.Capabilities.V1.xml#L878:~:text= +## [OperationRestrictionsType](./Org.OData.Capabilities.V1.xml#L889:~:text= +## [ModificationQueryOptionsType](./Org.OData.Capabilities.V1.xml#L913:~:text= +## [*ReadRestrictionsBase*](./Org.OData.Capabilities.V1.xml#L938:~:text= +## [ReadByKeyRestrictionsType](./Org.OData.Capabilities.V1.xml#L963:~:text= +## [ReadRestrictionsType](./Org.OData.Capabilities.V1.xml#L966:~:text=Only valid when applied to a collection. If a property of `ReadByKeyRestrictions` is not specified, the corresponding property value of `ReadRestrictions` applies. + + +## [CustomParameter](./Org.OData.Capabilities.V1.xml#L1033:~:text= +## [DefaultCapabilitiesType](./Org.OData.Capabilities.V1.xml#L1068:~:text= +## [HttpResponse](./Org.OData.Capabilities.V1.xml#L1119:~:text=3 Measures Vocabulary + +**Namespace: [Org.OData.Measures.V1](Org.OData.Measures.V1.xml)** + +Terms describing monetary amounts and measured quantities + + +## Terms + +Term|Type|Description +:---|:---|:---------- +[ISOCurrency](./Org.OData.Measures.V1.xml#L70:~:text=The currency for this monetary amount as an ISO 4217 currency code +[Scale](./Org.OData.Measures.V1.xml#L74:~:text=The number of significant decimal places in the scale part (less than or equal to the number declared in the Scale facet) +[Unit](./Org.OData.Measures.V1.xml#L79:~:text=The unit of measure for this measured quantity, e.g. cm for centimeters or % for percentages +[UNECEUnit](./Org.OData.Measures.V1.xml#L83:~:text=The unit of measure for this measured quantity, according to the [UN/CEFACT Recommendation 20](http://tfig.unece.org/contents/recommendation-20.htm) +[DurationGranularity](./Org.OData.Measures.V1.xml#L87:~:text=The minimum granularity of duration values.
Absence of this annotation means a granularity of seconds with sub-seconds according to the Precision facet. + + +## [DurationGranularityType](./Org.OData.Measures.V1.xml#L92:~:text=4 Validation Vocabulary + +**Namespace: [Org.OData.Validation.V1](Org.OData.Validation.V1.xml)** + +Terms describing validation rules + + +## Terms + +Term|Type|Description +:---|:---|:---------- +[Pattern](./Org.OData.Validation.V1.xml#L67:~:text=The pattern that a string property, parameter, or term must match. This SHOULD be a valid regular expression, according to the ECMA 262 regular expression dialect. +[Minimum](./Org.OData.Validation.V1.xml#L72:~:text=Minimum value that a property, parameter, or term can have.
Can be annotated with:
  • [Exclusive](#Exclusive)
+[Maximum](./Org.OData.Validation.V1.xml#L81:~:text=Maximum value that a property, parameter, or term can have.
Can be annotated with:
  • [Exclusive](#Exclusive)
+[Exclusive](./Org.OData.Validation.V1.xml#L90:~:text=Tags a Minimum or Maximum as exclusive, i.e. an open interval boundary. +[AllowedValues](./Org.OData.Validation.V1.xml#L94:~:text=A collection of valid values for the annotated property, parameter, or type definition +[MultipleOf](./Org.OData.Validation.V1.xml#L108:~:text=The value of the annotated property, parameter, or term must be an integer multiple of this positive value. For temporal types, the value is measured in seconds. +[Constraint](./Org.OData.Validation.V1.xml#L112:~:text=Condition that the annotation target has to fulfill +[ItemsOf](./Org.OData.Validation.V1.xml#L125:~:text=A list of constraints describing that entities related via one navigation property MUST also be related via another, collection-valued navigation property. The same `path` value MUST NOT occur more than once.
Example: entity type `Customer` has navigation properties `AllOrders`, `OpenOrders`, and `ClosedOrders`. The term allows to express that items of `OpenOrders` and `ClosedOrders` are also items of the `AllOrders` navigation property, even though they are defined in an `Orders` entity set. +[OpenPropertyTypeConstraint](./Org.OData.Validation.V1.xml#L143:~:text=Dynamic properties added to the annotated open structured type are restricted to the listed types. +[DerivedTypeConstraint](./Org.OData.Validation.V1.xml#L147:~:text=Values are restricted to types that are both identical to or derived from the declared type and a type listed in this collection.
This allows restricting values to certain sub-trees of an inheritance hierarchy, including hierarchies starting at the [Built-In Abstract Types](https://docs.oasis-open.org/odata/odata-csdl-json/v4.01/odata-csdl-json-v4.01.html#sec_BuiltInAbstractTypes). Types listed in this collection are ignored if they are not derived from the declared type of the annotated model element or would not be allowed as declared type of the annotated model element.
When applied to a collection-valued element, this annotation specifies the types allowed for members of the collection without mentioning the `Collection()` wrapper. The SingleOrCollectionType may only include the `Collection()` wrapper if the annotation is applied to an element with declared type `Edm.Untyped`. +[AllowedTerms](./Org.OData.Validation.V1.xml#L166:~:text=Annotate a term of type Edm.AnnotationPath, or a property of type Edm.AnnotationPath that is used within a structured term, to restrict the terms that can be targeted by the path.
The annotation path expression is intended to end in a path segment with one of the listed terms. For forward compatibility, clients should be prepared for the annotation to reference terms besides those listed. +[ApplicableTerms](./Org.OData.Validation.V1.xml#L172:~:text=Names of specific terms that are applicable and may be applied in the current context. This annotation does not restrict the use of other terms. +[MaxItems](./Org.OData.Validation.V1.xml#L176:~:text=The annotated collection must have at most the specified number of items. +[MinItems](./Org.OData.Validation.V1.xml#L180:~:text=The annotated collection must have at least the specified number of items. + + +## [AllowedValue](./Org.OData.Validation.V1.xml#L97:~:text= +## [ConstraintType](./Org.OData.Validation.V1.xml#L115:~:text= +## [ItemsOfType](./Org.OData.Validation.V1.xml#L133:~:text= +## [SingleOrCollectionType](./Org.OData.Validation.V1.xml#L162:~:text=5 Aggregation Vocabulary + +**Namespace: [Org.OData.Aggregation.V1](Org.OData.Aggregation.V1.xml)** + +Terms to describe which data in a given entity model can be aggregated, and how. + +Related to the specification document [OData-Data-Agg-v4.0](http://docs.oasis-open.org/odata/odata-data-aggregation-ext/v4.0/odata-data-aggregation-ext-v4.0.html). + + +## Terms + +Term|Type|Description +:---|:---|:---------- +[ApplySupported](./Org.OData.Aggregation.V1.xml#L82:~:text=This entity set or collection supports the `$apply` system query option +[ApplySupportedDefaults](./Org.OData.Aggregation.V1.xml#L88:~:text=Default support of the `$apply` system query option for all collection-valued resources in the container

Annotating term ApplySupported for a specific collection-valued resource overrides the default support with the specified properties using PATCH semantics:

  • Primitive or collection-valued properties specified in ApplySupported replace the corresponding properties specified in ApplySupportedDefaults
  • Complex-valued properties specified in ApplySupported override the corresponding properties specified in ApplySupportedDefaults using PATCH semantics recursively
  • Properties specified neither in ApplySupported nor in ApplySupportedDefaults have their default value
+[Groupable](./Org.OData.Aggregation.V1.xml#L305:~:text=Deprecated in favor of [`ApplySupported/GroupableProperties`](#ApplySupported) +[Aggregatable](./Org.OData.Aggregation.V1.xml#L317:~:text=Deprecated in favor of [`ApplySupported/AggregatableProperties`](#ApplySupported) +[CustomAggregate](./Org.OData.Aggregation.V1.xml#L329:~:text=Dynamic property that can be used in the `aggregate` transformation
This term MUST be applied with a Qualifier, the Qualifier value is the name of the dynamic property. The value of the annotation MUST be the qualified name of a primitive type. The aggregated value will be of that type. +[ContextDefiningProperties](./Org.OData.Aggregation.V1.xml#L335:~:text=The annotated property or custom aggregate is only well-defined in the context of these properties
The context-defining properties need either be part of the result entities, or be restricted to a single value by a pre-filter operation. Examples are postal codes within a country, or monetary amounts whose context is the unit of currency. +[LeveledHierarchy](./Org.OData.Aggregation.V1.xml#L342:~:text=Defines a leveled hierarchy (OData-Data-Agg-v4.0, section 5.5.1) +[RecursiveHierarchy](./Org.OData.Aggregation.V1.xml#L346:~:text=Defines a recursive hierarchy (OData-Data-Agg-v4.0, section 5.5.2) +[UpPath](./Org.OData.Aggregation.V1.xml#L519:~:text=The string values of the node identifiers in a path from the annotated node to a start node in a traversal of a recursive hierarchy
This instance annotation occurs in the result set after a `traverse` transformation (OData-Data-Agg-v4.0, section 6.2.2.2). A use case for this is traversal with multiple parents, when this annotation takes as value one parent node identifier followed by one grandparent node identifier and so on. +[AvailableOnAggregates](./Org.OData.Aggregation.V1.xml#L528:~:text=This function is available on aggregated entities if the `RequiredProperties` are still defined + + +## Functions + + +### [isnode](./Org.OData.Aggregation.V1.xml#L371:~:text= +### [isroot](./Org.OData.Aggregation.V1.xml#L384:~:text= +### [isdescendant](./Org.OData.Aggregation.V1.xml#L397:~:text= +### [isancestor](./Org.OData.Aggregation.V1.xml#L429:~:text= +### [issibling](./Org.OData.Aggregation.V1.xml#L461:~:text= +### [isleaf](./Org.OData.Aggregation.V1.xml#L477:~:text= +### [rollupnode](./Org.OData.Aggregation.V1.xml#L490:~:text=Every instance in the output set of a `groupby` transformation with M `rolluprecursive` operators has M relationships to M nodes in M recursive hierarchies. This function returns the node x with path r to the root in relationship number N. If several such `groupby` transformations are nested, this function refers to the innermost one. +[→](./Org.OData.Aggregation.V1.xml#L516:~:text= +## [ApplySupportedBase](./Org.OData.Aggregation.V1.xml#L99:~:text= +## [ApplySupportedType](./Org.OData.Aggregation.V1.xml#L118:~:text= +## [AggregatablePropertyType](./Org.OData.Aggregation.V1.xml#L137:~:text= +## [Transformation](./Org.OData.Aggregation.V1.xml#L155:~:text= +## [AggregationMethod](./Org.OData.Aggregation.V1.xml#L255:~:text=For navigation properties, it counts the distinct entities in the union of all entities related to entities in the input set. For collection-valued primitive properties, it counts the distinct items in the union of all collection values in the input set. + + +## [RollupType](./Org.OData.Aggregation.V1.xml#L292:~:text= +## [RecursiveHierarchyType](./Org.OData.Aggregation.V1.xml#L350:~:text= +## [HierarchyQualifier](./Org.OData.Aggregation.V1.xml#L359:~:text= +## [AvailableOnAggregatesType](./Org.OData.Aggregation.V1.xml#L531:~:text= +## [NavigationPropertyAggregationCapabilities](./Org.OData.Aggregation.V1.xml#L537:~:text= +## [CustomAggregateType](./Org.OData.Aggregation.V1.xml#L555:~:text=6 Authorization Vocabulary + +**Namespace: [Org.OData.Authorization.V1](Org.OData.Authorization.V1.xml)** + +The Authorization Vocabulary provides terms for describing authorization requirements of the service + + +## Terms + +Term|Type|Description +:---|:---|:---------- +[SecuritySchemes](./Org.OData.Authorization.V1.xml#L65:~:text=At least one of the specified security schemes are required to make a request against the service +[Authorizations](./Org.OData.Authorization.V1.xml#L78:~:text=Lists the methods supported by the service to authorize access + + +## [SecurityScheme](./Org.OData.Authorization.V1.xml#L69:~:text= +## [*Authorization*](./Org.OData.Authorization.V1.xml#L82:~:text= +## [OpenIDConnect](./Org.OData.Authorization.V1.xml#L92:~:text= +## [Http](./Org.OData.Authorization.V1.xml#L99:~:text= +## [*OAuthAuthorization*](./Org.OData.Authorization.V1.xml#L108:~:text= +## [OAuth2ClientCredentials](./Org.OData.Authorization.V1.xml#L118:~:text= +## [OAuth2Implicit](./Org.OData.Authorization.V1.xml#L125:~:text= +## [OAuth2Password](./Org.OData.Authorization.V1.xml#L133:~:text= +## [OAuth2AuthCode](./Org.OData.Authorization.V1.xml#L140:~:text= +## [AuthorizationScope](./Org.OData.Authorization.V1.xml#L151:~:text= +## [ApiKey](./Org.OData.Authorization.V1.xml#L164:~:text= +## [KeyLocation](./Org.OData.Authorization.V1.xml#L173:~:text= +## [SchemeName](./Org.OData.Authorization.V1.xml#L185:~:text=7 Temporal Vocabulary + +**Namespace: [Org.OData.Temporal.V1](Org.OData.Temporal.V1.xml)** + +Terms for describing time-dependent data + + +## Terms + +Term|Type|Description +:---|:---|:---------- +[ApplicationTimeSupport](./Org.OData.Temporal.V1.xml#L68:~:text=This collection supports temporal requests + + +## Actions + + +### [Update](./Org.OData.Temporal.V1.xml#L172:~:text=The delta time slices need not contain all properties, but at least the boundary values of the period to change. An absent object key property matches any key property value. New time slices are processed in the order of the collection, which especially matters if some of the specified change periods overlap. +[→](./Org.OData.Temporal.V1.xml#L191:~:text= +### [Upsert](./Org.OData.Temporal.V1.xml#L196:~:text=The delta time slices must contain all properties that are needed for insertion. New time slices are processed in the order of the collection, which especially matters if some of the specified change periods overlap. +[→](./Org.OData.Temporal.V1.xml#L208:~:text= +### [Delete](./Org.OData.Temporal.V1.xml#L213:~:text=The delta time slices contain only the boundary values of the period to delete and (parts of) the object key. An absent object key property matches any key property value. +[→](./Org.OData.Temporal.V1.xml#L231:~:text= +## [ApplicationTimeSupportType](./Org.OData.Temporal.V1.xml#L75:~:text= +## [*UnitOfTime*](./Org.OData.Temporal.V1.xml#L87:~:text= +## [UnitOfTimeDateTimeOffset](./Org.OData.Temporal.V1.xml#L91:~:text= +## [UnitOfTimeDate](./Org.OData.Temporal.V1.xml#L98:~:text= +## [*Timeline*](./Org.OData.Temporal.V1.xml#L107:~:text= +## [TimelineSnapshot](./Org.OData.Temporal.V1.xml#L111:~:text= +## [TimelineVisible](./Org.OData.Temporal.V1.xml#L121:~:text=If an upper boundary property does not specify a default value, a default value of `max` is assumed. +[ObjectKey](./Org.OData.Temporal.V1.xml#L137:~:text=A temporal object is a set of facts whose changes over application time are tracked by the service. The entities in the annotated collection belong to potentially multiple temporal objects, and each temporal object is uniquely identified by the values of the specified object key properties. Object key properties follow the same rules as entity key properties. If no object key is specified, only a single temporal object belongs to the annotated collection. + + +## [TimesliceWithPeriod](./Org.OData.Temporal.V1.xml#L143:~:text=When it appears in the return type of an action in this vocabulary, the time slice has the same entity set as the binding parameter value. + diff --git a/docs/odata-vocabularies/styles/markdown-styles-v1.7.3b.css b/docs/odata-vocabularies/styles/markdown-styles-v1.7.3b.css new file mode 100644 index 00000000..f102f0ac --- /dev/null +++ b/docs/odata-vocabularies/styles/markdown-styles-v1.7.3b.css @@ -0,0 +1,91 @@ +/* OASIS specification styles for HTML generated from Markdown or similar sources */ +/* usually used after basic w3.css */ +/* Paul Knight 2018-09-27 */ +/* pk 2018-10-01 - v1.2 reduced section header and title (h*) font sizes */ +/* pk 2018-10-02 - v1.3 added right margin; allowed text wrapping in code blocks and scrolling for overflowing text */ +/* pk 2018-10-19 - v1.4 added display:inline to avoid page-wide background coloring */ +/* pk 2018-10-25 - v1.5 added use of
as citation tag for References section or elsewhere */ +/* pk 2018-10-26 - v1.5.1 (experimental) and v1.6 added use of
as a page break when generating PDF from the HTML */ +/* pk 2018-11-14 - v1.6.1 - lighter gray background color for code blocks */ +/* pk 2019-02-18 - v1.7 - Use Liberation Sans and Liberation Mono fonts if possible */ +/* pk 2019-02-18 - v1.7.1 (experimental) changed px to pt (and reduced numbers) for fonts and tables; added bigtitle style */ +/* pk 2019-05-23 - v1.7.2 (based on 1.7.1) changed monospace "code" font to Courier New */ +/* pk 2019-08-01 - v1.7.3 substitute PostScript name for fonts (LiberationSans for "Liberation Sans" and CourierNew for "Courier New") to address a flaw in "wkhtmltopdf" which rendered all text as bold. Changed "bigtitle" to "h1big"*/ +/* dk 2020-10-21 - v1.7.3a (unofficial for jadn, based on 1.7.3) update block quotes and code blocks */ +/* Heiko Theißen 2023-06-02 - v1.7.3b (unofficial for odata-data-aggregation-ext, based on v1.7.3a) include local font names "Liberation Sans" and "Courier New" */ + +body { + margin-left: 3pc; + margin-right: 3pc; + font-family: LiberationSans, "Liberation Sans", Arial, Helvetica, sans-serif; + font-size:12pt; + line-height:1.2; + } + +html{overflow-x:auto} + + /* styles for section headings - levels 1-5 (maybe include heading1, etc. later) */ +h1{font-size:18pt}h2{font-size:14pt}h3{font-size:13pt}h4{font-size:12pt}h5{font-size:11pt} +h1big{font-size: 24pt} +h1,h2,h3,h4,h5,h1big{font-family: LiberationSans, "Liberation Sans", Arial, Helvetica, sans-serif;font-weight: bold;margin:8pt 0;color: #446CAA} + /* style for h6, for use as Reference tag */ +h6{font-size:12pt; line-height:1.0} +h6{font-family: LiberationSans, "Liberation Sans", Arial, Helvetica, sans-serif;font-weight: bold;margin:0pt;} + /* not needed - can just use brackets in the label itself */ + /* h6::before {content: "["} */ + /* h6::after {content: "]"} */ + + /* style for hr to insert a page break before each ruled line (generated in markdown by 3 or more hyphens alone on a line) */ +hr{page-break-before: always;} + + +/* Table styles - bordered with option for striped */ +table { + border-collapse: collapse; +} + +table { + border-collapse:collapse; + border-spacing:0; + width:100%; + display:table; + font-size:12pt; + margin-top: 6pt; + } + +table, th, td { + border: 1pt solid black; + padding:6pt 6pt; + text-align:left; + vertical-align:top; +} +th { + color:#ffffff; + background-color: #446CAA; + } + /* "table-striped" tag is not generated by pandoc - add manually in HTML if wanted */ +.table-striped tbody tr:nth-child(even){background-color:#d6f3ff} + +/* style for code blocks */ +pre { + background-color:#f0f0f0; + padding: 6px; +} + +code,kbd,samp{ + font-family:CourierNew, "Courier New", monospace; + white-space: pre-wrap; + font-size: 10pt; +} + +/* offset block quote */ +blockquote { + background-color:#f0f0f0; + padding-left: 10px; + border-left: solid lightgray 6px; +} + +/* space bullets a bit */ +li { + margin: 3px 0; +} diff --git a/docs/odata-vocabularies/styles/odata.css b/docs/odata-vocabularies/styles/odata.css new file mode 100644 index 00000000..6eaedb85 --- /dev/null +++ b/docs/odata-vocabularies/styles/odata.css @@ -0,0 +1,232 @@ +a:target { + background-color: yellow; +} + +a[href^="#_"], +a[href^="#OData"]:not(a[href^="#OData4"]), +a[href^="#rfc"], +a[href^="#XML-"] { + font-weight: bold; +} + +a[href^="#_"]::before, +a[href^="#OData"]:not(a[href^="#OData4"])::before, +a[href^="#rfc"]::before, +a[href^="#XML-"]::before { + content: "["; + font-weight: bold; +} + +a[href^="#_"]::after, +a[href^="#OData"]:not(a[href^="#OData4"])::after, +a[href^="#rfc"]::after, +a[href^="#XML-"]::after { + content: "]"; + font-weight: bold; +} + +.toc li { + list-style-type: none; +} + +.example, +.example table { + font-size: smaller; +} + +.example p, +.example li { + font-style: italic; +} + +.rep { + border-left: solid windowtext 1pt; + padding-left: 8pt; +} + +table { + width: auto; +} + +.example table, +.example th, +.example td { + padding: 2pt 6pt; + white-space: nowrap; +} + +.example td em { + font-weight: bold; + color: blue; +} + +.example td[rowspan] { + text-align: right; + vertical-align: middle; + border-style: dotted; +} + +.example th[colspan] { + text-align: center; +} + +.example-data { + position: relative; +} + +.example-data div { + position: absolute; +} + +.example-data p { + font-style: unset !important; +} + +.example-data svg { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; +} + +.cross tbody tr:first-of-type, +.cross tbody tr:nth-of-type(2), +.cross td:first-of-type, +.cross td:nth-of-type(2) { + font-weight: bold; + color: white; + background-color: #446CAA +} + +.cross tbody tr:first-of-type td:first-of-type, +.cross tbody tr:nth-of-type(2) td:first-of-type, +.cross tbody tr:first-of-type td:nth-of-type(2), +.cross tbody tr:nth-of-type(2) td:nth-of-type(2) { + border: none; + background-color: white; +} + +.example-data th:first-of-type:not(:last-of-type), +.legend tbody tr:first-of-type { + background-color: green; +} + +.nav-2 th:nth-of-type(2), +.nav-3 th:nth-of-type(3), +.nav-4 th:nth-of-type(4), +.nav-5 th:nth-of-type(5), +.nav-6 th:nth-of-type(6), +.legend tbody tr:last-of-type { + background-color: rgb(255, 128, 0); +} + +.key-1 th:first-of-type { + background-color: olive; +} + +.obj-1 th:first-of-type, +.obj-2 th:nth-of-type(2), +.obj-3 th:nth-of-type(3) { + background-color: green; +} + +.temp-2 th:nth-of-type(2), +.temp-4 th:nth-of-type(4) { + background-color: mediumseagreen; +} + +.legend td { + font-weight: bold; + color: white; +} + +.example-data svg>path { + fill: none; + stroke: black; + stroke-width: 2; +} + +p code, +li code, +h1 code, +h2 code, +h3 code, +h4 code, +h5 code, +h6 code, +td>code { + font-family: MJXZERO, MJXTEX-T; + font-size: 1em; + line-height: 0; +} + +.example p code, +.example li code { + font-style: initial; +} + +.example pre, +.rep { + margin-left: 40px; +} + +.indent { + margin-left: 40px; +} + +td pre { + padding: 0; + margin: 0; +} + +h1 code, +h2 code, +h3 code, +h4 code, +h5 code, +h6 code { + font-size: unset; +} + +mjx-container { + font-size: unset !important; +} + +mjx-container[display=true] { + text-align: left !important; + margin-left: 40px !important; +} + +/* The following rule enables typewriter single quotes in maths, like $\hbox{\tt{'$Q$'}}$ */ +mjx-c.mjx-c2019::before { + content: "\27" !important; + padding-right: 0.525em !important; + font-family: MJXZERO, MJXTEX-T; +} + +code .er { + color: unset !important; + font-weight: unset !important; +} + +hr:first-of-type { + page-break-before: avoid; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + page-break-after: avoid; +} + +td { + page-break-inside: avoid; +} + +h2[id="22-example-data"] { + page-break-before: always; +} diff --git a/odata-vocabularies/0 frontmatter.md b/odata-vocabularies/0 frontmatter.md new file mode 100644 index 00000000..638ba4bb --- /dev/null +++ b/odata-vocabularies/0 frontmatter.md @@ -0,0 +1,90 @@ + +![OASIS Logo](https://docs.oasis-open.org/templates/OASISLogo-v3.0.png) + +------- + +# $$$pagetitle$$$ + +## $$$subtitle$$$ + +## $$$pubdate$$$ + +$\hbox{}$ + +#### This stage: +https://docs.oasis-open.org/odata/odata-json-format/v4.0/$$$stage$$$/$$$filename$$$.md (Authoritative) \ +https://docs.oasis-open.org/odata/odata-json-format/v4.0/$$$stage$$$/$$$filename$$$.html \ +https://docs.oasis-open.org/odata/odata-json-format/v4.0/$$$stage$$$/$$$filename$$$.pdf + +#### Previous stage: +https://docs.oasis-open.org/odata/odata-json-format/v4.0/$$$previousStage$$$/odata-vocabularies-v4.0-$$$previousStage$$$.md (Authoritative) \ +https://docs.oasis-open.org/odata/odata-json-format/v4.0/$$$previousStage$$$/odata-vocabularies-v4.0-$$$previousStage$$$.html \ +https://docs.oasis-open.org/odata/odata-json-format/v4.0/$$$previousStage$$$/odata-vocabularies-v4.0-$$$previousStage$$$.pdf + +#### Latest stage: +https://docs.oasis-open.org/odata/odata-json-format/v4.0/odata-vocabularies-v4.0.md (Authoritative) \ +https://docs.oasis-open.org/odata/odata-json-format/v4.0/odata-vocabularies-v4.0.html \ +https://docs.oasis-open.org/odata/odata-json-format/v4.0/odata-vocabularies-v4.0.pdf + +#### Technical Committee: +[OASIS Open Data Protocol (OData) TC](https://www.oasis-open.org/committees/odata/) + +#### Chairs: + +Ralf Handl (ralf.handl@sap.com), [SAP SE](http://www.sap.com/) \ +Michael Pizzo (mikep@microsoft.com), [Microsoft](http://www.microsoft.com/) + +#### Editors: + +Ralf Handl (ralf.handl@sap.com), [SAP SE](http://www.sap.com/) \ +Michael Pizzo (mikep@microsoft.com), [Microsoft](http://www.microsoft.com/) \ +Heiko Theißen (heiko.theissen@sap.com), [SAP SE](http://www.sap.com/) + +#### Related work: +This specification replaces or supersedes: +OData Vocabularies Version 4.0. Edited by Ralf Handl, Michael Pizzo, and Ram Jeyaraman. 08 December 2016. OASIS Committee Specification Draft 01 / Public Review Draft 01. http://docs.oasis-open.org/odata/odata-vocabularies/v4.0/csprd01/odata-vocabularies-v4.0-csprd01.html. Latest version: http://docs.oasis-open.org/odata/odata-vocabularies/v4.0/odata-vocabularies-v4.0.html. + +This specification is related to: +* _OData Version 4.02_. Edited by Michael Pizzo, Ralf Handl, and Heiko Theißen. A multi-part Work Product that includes: + * _OData Version 4.02 Part 1: Protocol_. Latest stage. https://docs.oasis-open.org/odata/odata/v4.02/odata-v4.02-part1-protocol.html + * _OData Version 4.02 Part 2: URL Conventions_. Latest stage. https://docs.oasis-open.org/odata/odata/v4.02/odata-v4.02-part2-url-conventions.html + * _ABNF components: OData ABNF Construction Rules Version 4.02 and OData ABNF Test Cases_. https://docs.oasis-open.org/odata/odata/v4.02/$$$stage$$$/abnf/ +* _OData Vocabularies Version 4.0_. Edited by Michael Pizzo, Ralf Handl, and Ram Jeyaraman. Latest stage: https://docs.oasis-open.org/odata/odata-vocabularies/v4.0/odata-vocabularies-v4.0.html +* _OData Common Schema Definition Language (CSDL) JSON Representation Version 4.02_. Edited by Michael Pizzo, Ralf Handl, and Heiko Theißen. Latest stage: https://docs.oasis-open.org/odata/odata-csdl-json/v4.02/odata-csdl-json-v4.02.html +* _OData Common Schema Definition Language (CSDL) XML Representation Version 4.02_. Edited by Michael Pizzo, Ralf Handl, and Heiko Theißen. Latest stage: https://docs.oasis-open.org/odata/odata-csdl-xml/v4.02/odata-csdl-xml-v4.02.html + +#### Abstract: +$$$description$$$ + +#### Status: +This document was last revised or approved by the OASIS Open Data Protocol (OData) TC on the above date. The level of approval is also listed above. Check the "Latest stage" location noted above for possible later revisions of this document. Any other numbered Versions and other technical work produced by the Technical Committee (TC) are listed at https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=odata#technical. + +TC members should send comments on this specification to the TC's email list. Others should send comments to the TC's public comment list, after subscribing to it by following the instructions at the "Send A Comment" button on the TC's web page at https://www.oasis-open.org/committees/odata/. + +This specification is provided under the [RF on RAND Terms Mode](https://www.oasis-open.org/policies-guidelines/ipr/#RF-on-RAND-Mode) of the [OASIS IPR Policy](https://www.oasis-open.org/policies-guidelines/ipr/), the mode chosen when the Technical Committee was established. For information on whether any patents have been disclosed that may be essential to implementing this specification, and any offers of patent licensing terms, please refer to the Intellectual Property Rights section of the TC's web page (https://www.oasis-open.org/committees/odata/ipr.php). + +Note that any machine-readable content ([Computer Language Definitions](https://www.oasis-open.org/policies-guidelines/tc-process-2017-05-26/#wpComponentsCompLang)) declared Normative for this Work Product is provided in separate plain text files. In the event of a discrepancy between any such plain text file and display content in the Work Product's prose narrative document(s), the content in the separate plain text file prevails. + +#### Key words: +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119](#rfc2119) and [RFC8174](#rfc8174) when, and only when, they appear in all capitals, as shown here. + +#### Citation format: +When referencing this specification the following citation format should be used: + +**[OData-Vocabularies-v4.0]** + +_$$$pagetitle$$$_. +Edited by Ralf Handl, Michael Pizzo, and Heiko Theißen. $$$pubdate$$$. OASIS $$$subtitle$$$. +https://docs.oasis-open.org/odata/odata-vocabularies/v4.0/$$$stage$$$/$$$filename$$$.html. +Latest stage: https://docs.oasis-open.org/odata/odata-vocabularies/v4.0/odata-vocabularies-v4.0.html. + +#### Notices +Copyright $$$copyright$$$. All Rights Reserved. + +Distributed under the terms of the OASIS [IPR Policy](https://www.oasis-open.org/policies-guidelines/ipr/). + +The name "OASIS" is a trademark of [OASIS](https://www.oasis-open.org/), the owner and developer of this specification, and should be used only to refer to the organization and its official outputs. + +For complete copyright information please see the full Notices section in an Appendix [below](#Notices). + +------- diff --git a/odata-vocabularies/2 vocabularies.md b/odata-vocabularies/2 vocabularies.md new file mode 100644 index 00000000..40bedb24 --- /dev/null +++ b/odata-vocabularies/2 vocabularies.md @@ -0,0 +1,42 @@ + +------- + +# ##sec Core Vocabulary + +$$$include-body ../../odata-vocabularies/vocabularies/Org.OData.Core.V1.md$$$ + +------- + +# ##sec Capabilities Vocabulary + +$$$include-body ../../odata-vocabularies/vocabularies/Org.OData.Capabilities.V1.md$$$ + +------- + +# ##sec Measures Vocabulary + +$$$include-body ../../odata-vocabularies/vocabularies/Org.OData.Measures.V1.md$$$ + +------- + +# ##sec Validation Vocabulary + +$$$include-body ../../odata-vocabularies/vocabularies/Org.OData.Validation.V1.md$$$ + +------- + +# ##sec Aggregation Vocabulary + +$$$include-body ../../odata-vocabularies/vocabularies/Org.OData.Aggregation.V1.md$$$ + +------- + +# ##sec Authorization Vocabulary + +$$$include-body ../../odata-vocabularies/vocabularies/Org.OData.Authorization.V1.md$$$ + +------- + +# ##sec Temporal Vocabulary + +$$$include-body ../../odata-vocabularies/vocabularies/Org.OData.Temporal.V1.md$$$ diff --git a/odata-vocabularies/meta.yaml b/odata-vocabularies/meta.yaml new file mode 100644 index 00000000..88d75f49 --- /dev/null +++ b/odata-vocabularies/meta.yaml @@ -0,0 +1,14 @@ +pagetitle: OData Vocabularies Version 4.0 +subtitle: Committee Specification Draft 02 / Public Review Draft 02 +filename: odata-vocabularies-v4.0-csprd02 +stage: csprd02 +previousStage: csprd01 +pubdate: 28 February 2024 +pubdateISO: '2024-02-28' +copyright: © OASIS Open 2024 +description: > + This prose specification describes a set of OData vocabularies maintained + by the OASIS OData Technical Committee. + These vocabulary components are continuously evolved. + The latest work-in-progress revisions are available at the odata-vocabularies + OASIS TC GitHub repository: https://github.com/oasis-tcs/odata-vocabularies. \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index aab3227e..8a482a8f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "colors": "^1.4.0", "odata-csdl": "^0.9.5", + "odata-specs": "github:oasis-tcs/odata-specs", "pandoc-filter": "^2.2.0" }, "bin": { @@ -32,11 +33,108 @@ "node": ">=0.10.0" } }, + "node_modules/@babel/code-frame": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "dependencies": { + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", + "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", + "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.5", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", @@ -127,11 +225,99 @@ "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, "engines": { "node": ">=8" } @@ -140,7 +326,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -148,14 +333,12 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.22", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", - "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -196,11 +379,62 @@ "node": ">= 8" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@puppeteer/browsers": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.9.1.tgz", + "integrity": "sha512-PuvK6xZzGhKPvlx3fpfdM2kYY3P/hB1URtK8wA7XUJ6prn6pp22zvJHu48th0SGcHL9SutbPHrFuQgfXTFobWA==", + "dependencies": { + "debug": "4.3.4", + "extract-zip": "2.0.1", + "progress": "2.0.3", + "proxy-agent": "6.3.1", + "tar-fs": "3.0.4", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.2" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=16.3.0" + } + }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==" + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==" + }, + "node_modules/@types/node": { + "version": "20.12.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", + "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", + "optional": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "optional": true, + "dependencies": { + "@types/node": "*" + } }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", @@ -208,11 +442,21 @@ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "dev": true }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -242,6 +486,17 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -262,7 +517,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, "engines": { "node": ">=6" } @@ -271,7 +525,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -280,7 +533,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -295,7 +547,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -304,29 +555,156 @@ "node": ">= 8" } }, + "node_modules/archiver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", + "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", + "dependencies": { + "archiver-utils": "^5.0.2", + "async": "^3.2.4", + "buffer-crc32": "^1.0.0", + "readable-stream": "^4.0.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^3.0.0", + "zip-stream": "^6.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/archiver-utils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", + "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", + "dependencies": { + "glob": "^10.0.0", + "graceful-fs": "^4.2.0", + "is-stream": "^2.0.1", + "lazystream": "^1.0.0", + "lodash": "^4.17.15", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/archiver-utils/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/archiver-utils/node_modules/glob": { + "version": "10.3.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz", + "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.11.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/archiver-utils/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" + }, + "node_modules/b4a": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==" }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/bare-events": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.2.tgz", + "integrity": "sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==", + "optional": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/basic-ftp": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "engines": { + "node": ">=10.0.0" + } }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, "engines": { "node": ">=8" } @@ -335,7 +713,6 @@ "version": "1.20.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", - "dev": true, "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -359,7 +736,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, "dependencies": { "ms": "2.0.0" } @@ -367,14 +743,12 @@ "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -384,7 +758,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -395,14 +768,43 @@ "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-crc32": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "engines": { + "node": ">=8.0.0" + } }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, "engines": { "node": ">= 0.8" } @@ -436,7 +838,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dev": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -455,7 +856,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, "engines": { "node": ">=6" } @@ -464,7 +864,6 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, "engines": { "node": ">=10" }, @@ -476,7 +875,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -492,7 +890,6 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, "funding": [ { "type": "individual", @@ -519,7 +916,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -527,11 +923,22 @@ "node": ">= 6" } }, + "node_modules/chromium-bidi": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.5.8.tgz", + "integrity": "sha512-blqh+1cEQbHBKmok3rVJkBlBxt9beKBgOsxbFgs7UJcoVbbeZ+K7+6liAsjgpc8l1Xd55cQUy14fXZdGSb4zIw==", + "dependencies": { + "mitt": "3.0.1", + "urlpattern-polyfill": "10.0.0" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -545,7 +952,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -556,8 +962,7 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/colors": { "version": "1.4.0", @@ -567,17 +972,30 @@ "node": ">=0.1.90" } }, + "node_modules/compress-commons": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", + "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", + "dependencies": { + "crc-32": "^1.2.0", + "crc32-stream": "^6.0.0", + "is-stream": "^2.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, "dependencies": { "safe-buffer": "5.2.1" }, @@ -589,7 +1007,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -597,14 +1014,12 @@ "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, "node_modules/cookie": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -612,14 +1027,73 @@ "node_modules/cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", + "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "dependencies": { + "node-fetch": "^2.6.12" + } }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -629,11 +1103,18 @@ "node": ">= 8" } }, + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "engines": { + "node": ">= 14" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -650,7 +1131,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, "engines": { "node": ">=10" }, @@ -668,7 +1148,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -681,11 +1160,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, "engines": { "node": ">= 0.8" } @@ -694,17 +1185,20 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/devtools-protocol": { + "version": "0.0.1232444", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1232444.tgz", + "integrity": "sha512-pM27vqEfxSxRkTMnF+XCmxSEb6duO5R+t8A9DEEJgy4Wz2RVanje2mmj99B6A3zv2r/qGfYlOvYznUhuokizmg==" + }, "node_modules/diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, "engines": { "node": ">=0.3.1" } @@ -721,32 +1215,57 @@ "node": ">=6.0.0" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, "engines": { "node": ">= 0.8" } }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, "node_modules/es-define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dev": true, "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -758,7 +1277,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, "engines": { "node": ">= 0.4" } @@ -767,7 +1285,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, "engines": { "node": ">=6" } @@ -775,14 +1292,12 @@ "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, "engines": { "node": ">=10" }, @@ -790,6 +1305,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, "node_modules/eslint": { "version": "8.56.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", @@ -890,6 +1425,18 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/esquery": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", @@ -918,7 +1465,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, "engines": { "node": ">=4.0" } @@ -927,7 +1473,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -936,16 +1481,30 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, "engines": { "node": ">= 0.6" } }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, "node_modules/express": { "version": "4.19.2", "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", - "dev": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -987,7 +1546,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, "dependencies": { "ms": "2.0.0" } @@ -995,8 +1553,26 @@ "node_modules/express/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } }, "node_modules/fast-deep-equal": { "version": "3.1.3", @@ -1004,6 +1580,11 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -1025,6 +1606,14 @@ "reusify": "^1.0.4" } }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dependencies": { + "pend": "~1.2.0" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -1041,7 +1630,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -1053,7 +1641,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dev": true, "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -1071,7 +1658,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, "dependencies": { "ms": "2.0.0" } @@ -1079,14 +1665,12 @@ "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -1102,7 +1686,6 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, "bin": { "flat": "cli.js" } @@ -1131,7 +1714,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -1147,7 +1729,6 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -1156,22 +1737,32 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, "engines": { "node": ">= 0.6" } }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -1185,7 +1776,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1194,7 +1784,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -1203,7 +1792,6 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dev": true, "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -1226,11 +1814,38 @@ "node": ">=8" } }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-uri": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4", + "fs-extra": "^11.2.0" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/glob": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -1261,7 +1876,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -1270,7 +1884,6 @@ "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -1297,7 +1910,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -1305,6 +1917,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -1315,7 +1932,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -1324,7 +1940,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, "dependencies": { "es-define-property": "^1.0.0" }, @@ -1336,7 +1951,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -1348,7 +1962,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -1360,7 +1973,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -1372,7 +1984,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, "bin": { "he": "bin/he" } @@ -1380,14 +1991,12 @@ "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -1399,11 +2008,34 @@ "node": ">= 0.8" } }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -1411,6 +2043,25 @@ "node": ">=0.10.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/ignore": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", @@ -1424,7 +2075,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -1449,7 +2099,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -1458,23 +2107,37 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, "engines": { "node": ">= 0.10" } }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -1486,7 +2149,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -1495,7 +2157,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "engines": { "node": ">=8" } @@ -1504,7 +2165,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -1516,7 +2176,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { "node": ">=0.12.0" } @@ -1534,16 +2193,25 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, "engines": { "node": ">=8" } }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, "engines": { "node": ">=10" }, @@ -1551,17 +2219,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, "engines": { "node": ">=8" } @@ -1570,7 +2241,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", @@ -1584,7 +2254,6 @@ "version": "3.1.6", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", - "dev": true, "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -1593,11 +2262,32 @@ "node": ">=8" } }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "dependencies": { "argparse": "^2.0.1" }, @@ -1605,12 +2295,22 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -1623,6 +2323,17 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -1632,6 +2343,44 @@ "json-buffer": "3.0.1" } }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -1645,11 +2394,15 @@ "node": ">= 0.8.0" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, "dependencies": { "p-locate": "^5.0.0" }, @@ -1660,6 +2413,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -1670,7 +2428,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -1686,7 +2443,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -1698,7 +2454,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, "dependencies": { "semver": "^7.5.3" }, @@ -1713,7 +2468,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -1721,14 +2475,12 @@ "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -1737,7 +2489,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, "bin": { "mime": "cli.js" }, @@ -1749,7 +2500,6 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -1758,7 +2508,6 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -1770,7 +2519,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1778,11 +2526,28 @@ "node": "*" } }, + "node_modules/minipass": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", + "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, "node_modules/mocha": { "version": "10.3.0", "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.3.0.tgz", "integrity": "sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg==", - "dev": true, "dependencies": { "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", @@ -1817,7 +2582,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -1826,7 +2590,6 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -1837,7 +2600,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -1848,14 +2610,12 @@ "node_modules/mocha/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -1870,7 +2630,6 @@ "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -1888,7 +2647,6 @@ "version": "20.2.4", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, "engines": { "node": ">=10" } @@ -1896,8 +2654,7 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/natural-compare": { "version": "1.4.0", @@ -1909,16 +2666,41 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, "engines": { "node": ">= 0.6" } }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -1927,7 +2709,6 @@ "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1944,11 +2725,64 @@ "odata-csdl-xml2json": "lib/cli.js" } }, + "node_modules/odata-specs": { + "version": "1.0.0", + "resolved": "git+ssh://git@github.com/oasis-tcs/odata-specs.git#3c21464ae2d32dcf698e8a56d62f1d58a044d9a2", + "dependencies": { + "archiver": "^7.0.0", + "c8": "^8.0.0", + "express": "^4", + "js-yaml": "^4.1.0", + "mocha": "^10.2.0", + "puppeteer": "^21.11.0" + } + }, + "node_modules/odata-specs/node_modules/c8": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/c8/-/c8-8.0.1.tgz", + "integrity": "sha512-EINpopxZNH1mETuI0DzRA4MZpAUH+IFiRhnmFD3vFr3vdrgxqi3VfE3KL0AIL+zDq8rC9bZqwM/VDmmoe04y7w==", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^2.0.0", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.1.6", + "rimraf": "^3.0.2", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1" + }, + "bin": { + "c8": "bin/c8.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/odata-specs/node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/odata-specs/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, "dependencies": { "ee-first": "1.1.1" }, @@ -1960,7 +2794,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } @@ -1986,7 +2819,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, "dependencies": { "yocto-queue": "^0.1.0" }, @@ -2001,7 +2833,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, "dependencies": { "p-limit": "^3.0.2" }, @@ -2012,6 +2843,36 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pac-proxy-agent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz", + "integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "pac-resolver": "^7.0.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/pandoc-filter": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/pandoc-filter/-/pandoc-filter-2.2.0.tgz", @@ -2027,7 +2888,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "dependencies": { "callsites": "^3.0.0" }, @@ -2035,11 +2895,27 @@ "node": ">=6" } }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, "engines": { "node": ">= 0.8" } @@ -2048,7 +2924,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, "engines": { "node": ">=8" } @@ -2057,7 +2932,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2066,22 +2940,52 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, "engines": { - "node": ">=8" + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "engines": { + "node": "14 || >=16.14" } }, "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "engines": { "node": ">=8.6" }, @@ -2098,11 +3002,31 @@ "node": ">= 0.8.0" } }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -2111,6 +3035,46 @@ "node": ">= 0.10" } }, + "node_modules/proxy-agent": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.1.tgz", + "integrity": "sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -2120,11 +3084,43 @@ "node": ">=6" } }, + "node_modules/puppeteer": { + "version": "21.11.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-21.11.0.tgz", + "integrity": "sha512-9jTHuYe22TD3sNxy0nEIzC7ZrlRnDgeX3xPkbS7PnbdwYjl2o/z/YuCrRBwezdKpbTDTJ4VqIggzNyeRcKq3cg==", + "hasInstallScript": true, + "dependencies": { + "@puppeteer/browsers": "1.9.1", + "cosmiconfig": "9.0.0", + "puppeteer-core": "21.11.0" + }, + "bin": { + "puppeteer": "lib/esm/puppeteer/node/cli.js" + }, + "engines": { + "node": ">=16.13.2" + } + }, + "node_modules/puppeteer-core": { + "version": "21.11.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-21.11.0.tgz", + "integrity": "sha512-ArbnyA3U5SGHokEvkfWjW+O8hOxV1RSJxOgriX/3A4xZRqixt9ZFHD0yPgZQF05Qj0oAqi8H/7stDorjoHY90Q==", + "dependencies": { + "@puppeteer/browsers": "1.9.1", + "chromium-bidi": "0.5.8", + "cross-fetch": "4.0.0", + "debug": "4.3.4", + "devtools-protocol": "0.0.1232444", + "ws": "8.16.0" + }, + "engines": { + "node": ">=16.13.2" + } + }, "node_modules/qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, "dependencies": { "side-channel": "^1.0.4" }, @@ -2155,11 +3151,15 @@ } ] }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, "dependencies": { "safe-buffer": "^5.1.0" } @@ -2168,7 +3168,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -2177,7 +3176,6 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dev": true, "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -2188,11 +3186,52 @@ "node": ">= 0.8" } }, + "node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -2204,7 +3243,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2213,7 +3251,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, "engines": { "node": ">=4" } @@ -2232,7 +3269,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, "dependencies": { "glob": "^7.1.3" }, @@ -2247,7 +3283,6 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2290,7 +3325,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, "funding": [ { "type": "github", @@ -2309,8 +3343,7 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sax": { "version": "1.3.0", @@ -2321,7 +3354,6 @@ "version": "7.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -2336,7 +3368,6 @@ "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -2360,7 +3391,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, "dependencies": { "ms": "2.0.0" } @@ -2368,20 +3398,17 @@ "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/send/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/serialize-javascript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, "dependencies": { "randombytes": "^2.1.0" } @@ -2390,7 +3417,6 @@ "version": "1.15.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dev": true, "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -2405,7 +3431,6 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -2421,14 +3446,12 @@ "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -2440,7 +3463,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, "engines": { "node": ">=8" } @@ -2449,7 +3471,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dev": true, "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -2467,7 +3488,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, "engines": { "node": ">=14" }, @@ -2475,20 +3495,101 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz", + "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==", + "dependencies": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, "engines": { "node": ">= 0.8" } }, + "node_modules/streamx": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz", + "integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==", + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -2502,7 +3603,18 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -2514,7 +3626,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, "engines": { "node": ">=8" }, @@ -2526,7 +3637,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -2534,11 +3644,30 @@ "node": ">=8" } }, + "node_modules/tar-fs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", + "dependencies": { + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + } + }, + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -2552,7 +3681,6 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2574,11 +3702,15 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -2590,11 +3722,20 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, "engines": { "node": ">=0.6" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -2623,7 +3764,6 @@ "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -2632,11 +3772,56 @@ "node": ">= 0.6" } }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/unbzip2-stream/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "optional": true + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, "engines": { "node": ">= 0.8" } @@ -2650,11 +3835,20 @@ "punycode": "^2.1.0" } }, + "node_modules/urlpattern-polyfill": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", + "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, "engines": { "node": ">= 0.4.0" } @@ -2663,7 +3857,6 @@ "version": "9.2.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", - "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", @@ -2677,16 +3870,28 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, "engines": { "node": ">= 0.8" } }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -2700,14 +3905,29 @@ "node_modules/workerpool": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==" }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -2723,14 +3943,32 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, "engines": { "node": ">=10" } @@ -2738,14 +3976,12 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -2763,7 +3999,6 @@ "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, "engines": { "node": ">=12" } @@ -2772,7 +4007,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", @@ -2783,17 +4017,46 @@ "node": ">=10" } }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yauzl/node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "engines": { + "node": "*" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zip-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", + "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", + "dependencies": { + "archiver-utils": "^5.0.0", + "compress-commons": "^6.0.2", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } } } } diff --git a/package.json b/package.json index 1cfd5621..d4cd4cff 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "dependencies": { "colors": "^1.4.0", "odata-csdl": "^0.9.5", + "odata-specs": "github:oasis-tcs/odata-specs", "pandoc-filter": "^2.2.0" }, "devDependencies": { @@ -38,7 +39,10 @@ "pages": "node lib/pages.js \"OASIS OData TC\"", "serve-pages": "node lib/serve-pages.js", "test": "c8 -r html -r text mocha", - "watch": "mocha --watch" + "watch": "mocha --watch", + "build-spec": "node -e \"require('odata-specs/build')\"", + "build-pdf": "node -e \"require('odata-specs/build-pdf')\"", + "build-zip": "node -e \"require('odata-specs/zip')\"" }, "author": "", "license": "SEE LICENSE IN LICENSE.md"