contrib: Metadata V3 types + JSON Schema

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/2726
Co-authored-by: BenoitRanque <25712958+BenoitRanque@users.noreply.github.com>
GitOrigin-RevId: 0a7a0452ad6dc4790fb2a745b905d4ad30e35836
This commit is contained in:
Gavin Ray 2021-11-10 00:36:14 -05:00 committed by hasura-bot
parent 95be515a60
commit 1d228db305
16 changed files with 14624 additions and 103 deletions

View File

@ -5,6 +5,7 @@
- server: log locking DB queries during source catalog migration
- server: fix to allow remote schema response to contain an "extensions" field (#7143)
- console: add comments to tracked functions
- metadata SDK: add type definitions for config v3
### Bug fixes and improvements
(Add entries below in the order of server, console, cli, docs, others)

View File

@ -5,11 +5,11 @@ selected_input_language: Typescript
# Glob patterns for the target input files of selected language
input_files:
# Paths can be either a string, or an array of strings
JsonSchema: './src/types/**.schema.json'
Typescript: './src/types/**.ts'
# JsonSchema: './src/types/**.schema.json'
Typescript: "./src/types/**.ts"
# Output file directory
output_directory: './generated'
output_directory: "./generated"
# Quicktype config per-language
# Config is an object of type "rendererOptions"
@ -32,10 +32,10 @@ quicktype_config:
# objective-c: ~
# pike: ~
python:
python-version: '3.7'
python-version: "3.7"
# ruby: ~
# rust: ~
schema: ~
# swift: ~
typescript:
# just-types: true
# typescript:
# just-types: true

View File

@ -988,15 +988,15 @@ type ObjectField struct {
//
// https://hasura.io/docs/latest/graphql/core/api-reference/schema-metadata-api/manage-metadata.html#replace-metadata
type HasuraMetadataV2 struct {
Actions []Action `json:"actions"`
Allowlist []AllowList `json:"allowlist"`
CronTriggers []CronTrigger `json:"cron_triggers"`
CustomTypes *CustomTypes `json:"custom_types,omitempty"`
Functions []CustomFunction `json:"functions"`
QueryCollections []QueryCollectionEntry `json:"query_collections"`
RemoteSchemas []RemoteSchema `json:"remote_schemas"`
Tables []TableEntry `json:"tables"`
Version float64 `json:"version"`
Actions []Action `json:"actions,omitempty"`
Allowlist []AllowList `json:"allowlist,omitempty"`
CronTriggers []CronTrigger `json:"cron_triggers,omitempty"`
CustomTypes *CustomTypes `json:"custom_types,omitempty"`
Functions []CustomFunction `json:"functions,omitempty"`
QueryCollections []QueryCollectionEntry `json:"query_collections,omitempty"`
RemoteSchemas []RemoteSchema `json:"remote_schemas,omitempty"`
Tables []TableEntry `json:"tables"`
Version float64 `json:"version"`
}
//
@ -1005,7 +1005,7 @@ type Action struct {
Comment *string `json:"comment,omitempty"` // Comment
Definition ActionDefinition `json:"definition"` // Definition of the action
Name string `json:"name"` // Name of the action
Permissions *Permissions `json:"permissions,omitempty"`// Permissions of the action
Permissions []Permission `json:"permissions,omitempty"`// Permissions of the action
}
// Definition of the action
@ -1013,10 +1013,10 @@ type Action struct {
//
// https://hasura.io/docs/latest/graphql/core/api-reference/schema-metadata-api/actions.html#actiondefinition
type ActionDefinition struct {
Arguments []InputArgument `json:"arguments"`
Arguments []InputArgument `json:"arguments,omitempty"`
ForwardClientHeaders *bool `json:"forward_client_headers,omitempty"`
Handler string `json:"handler"` // A String value which supports templating environment variables enclosed in {{ and }}.; Template example: https://{{ACTION_API_DOMAIN}}/create-user
Headers []Header `json:"headers"`
Headers []Header `json:"headers,omitempty"`
Kind *string `json:"kind,omitempty"`
OutputType *string `json:"output_type,omitempty"`
Type *ActionDefinitionType `json:"type,omitempty"`
@ -1040,8 +1040,7 @@ type Header struct {
ValueFromEnv *string `json:"value_from_env,omitempty"`// Name of the environment variable which holds the value of the header
}
// Permissions of the action
type Permissions struct {
type Permission struct {
Role string `json:"role"`
}
@ -1076,10 +1075,10 @@ type RetryConfST struct {
}
type CustomTypes struct {
Enums []EnumType `json:"enums"`
InputObjects []InputObjectType `json:"input_objects"`
Objects []ObjectType `json:"objects"`
Scalars []ScalarType `json:"scalars"`
Enums []EnumType `json:"enums,omitempty"`
InputObjects []InputObjectType `json:"input_objects,omitempty"`
Objects []ObjectType `json:"objects,omitempty"`
Scalars []ScalarType `json:"scalars,omitempty"`
}
//
@ -1117,10 +1116,10 @@ type InputObjectField struct {
//
// https://hasura.io/docs/latest/graphql/core/api-reference/schema-metadata-api/custom-types.html#objecttype
type ObjectType struct {
Description *string `json:"description,omitempty"`// Description of the Input object type
Fields []InputObjectField `json:"fields"` // Fields of the Input object type
Name string `json:"name"` // Name of the Input object type
Relationships []CustomTypeObjectRelationship `json:"relationships"` // Relationships of the Object type to tables
Description *string `json:"description,omitempty"` // Description of the Input object type
Fields []InputObjectField `json:"fields"` // Fields of the Input object type
Name string `json:"name"` // Name of the Input object type
Relationships []CustomTypeObjectRelationship `json:"relationships,omitempty"`// Relationships of the Object type to tables
}
//
@ -1200,7 +1199,7 @@ type RemoteSchema struct {
// https://hasura.io/docs/latest/graphql/core/api-reference/schema-metadata-api/syntax-defs.html#remoteschemadef
type RemoteSchemaDef struct {
ForwardClientHeaders *bool `json:"forward_client_headers,omitempty"`
Headers []Header `json:"headers"`
Headers []Header `json:"headers,omitempty"`
TimeoutSeconds *float64 `json:"timeout_seconds,omitempty"`
URL *string `json:"url,omitempty"`
URLFromEnv *string `json:"url_from_env,omitempty"`
@ -1208,18 +1207,18 @@ type RemoteSchemaDef struct {
// Representation of a table in metadata, 'tables.yaml' and 'metadata.json'
type TableEntry struct {
ArrayRelationships []ArrayRelationship `json:"array_relationships"`
ComputedFields []ComputedField `json:"computed_fields"`
Configuration *TableConfig `json:"configuration,omitempty"`// Configuration for the table/view; ; https://hasura.io/docs/latest/graphql/core/api-reference/schema-metadata-api/table-view.html#table-config
DeletePermissions []DeletePermissionEntry `json:"delete_permissions"`
EventTriggers []EventTrigger `json:"event_triggers"`
InsertPermissions []InsertPermissionEntry `json:"insert_permissions"`
IsEnum *bool `json:"is_enum,omitempty"`
ObjectRelationships []ObjectRelationship `json:"object_relationships"`
RemoteRelationships []RemoteRelationship `json:"remote_relationships"`
SelectPermissions []SelectPermissionEntry `json:"select_permissions"`
Table QualifiedTable `json:"table"`
UpdatePermissions []UpdatePermissionEntry `json:"update_permissions"`
ArrayRelationships []ArrayRelationship `json:"array_relationships,omitempty"`
ComputedFields []ComputedField `json:"computed_fields,omitempty"`
Configuration *TableConfig `json:"configuration,omitempty"` // Configuration for the table/view; ; https://hasura.io/docs/latest/graphql/core/api-reference/schema-metadata-api/table-view.html#table-config
DeletePermissions []DeletePermissionEntry `json:"delete_permissions,omitempty"`
EventTriggers []EventTrigger `json:"event_triggers,omitempty"`
InsertPermissions []InsertPermissionEntry `json:"insert_permissions,omitempty"`
IsEnum *bool `json:"is_enum,omitempty"`
ObjectRelationships []ObjectRelationship `json:"object_relationships,omitempty"`
RemoteRelationships []RemoteRelationship `json:"remote_relationships,omitempty"`
SelectPermissions []SelectPermissionEntry `json:"select_permissions,omitempty"`
Table QualifiedTable `json:"table"`
UpdatePermissions []UpdatePermissionEntry `json:"update_permissions,omitempty"`
}
//
@ -1283,6 +1282,7 @@ type ComputedFieldDefinition struct {
// https://hasura.io/docs/latest/graphql/core/api-reference/schema-metadata-api/table-view.html#table-config
type TableConfig struct {
CustomColumnNames map[string]string `json:"custom_column_names,omitempty"`// Customise the column names
CustomName *string `json:"custom_name,omitempty"` // Customise the table name
CustomRootFields *CustomRootFields `json:"custom_root_fields,omitempty"` // Customise the root fields
}
@ -1324,7 +1324,7 @@ type DeletePermission struct {
// https://hasura.io/docs/latest/graphql/core/api-reference/schema-metadata-api/event-triggers.html#create-event-trigger
type EventTrigger struct {
Definition EventTriggerDefinition `json:"definition"` // The SQL function
Headers []Header `json:"headers"` // The SQL function
Headers []Header `json:"headers,omitempty"` // The SQL function
Name string `json:"name"` // Name of the event trigger
RetryConf RetryConf `json:"retry_conf"` // The SQL function
Webhook *string `json:"webhook,omitempty"` // The SQL function
@ -1437,7 +1437,7 @@ type SelectPermissionEntry struct {
type SelectPermission struct {
AllowAggregations *bool `json:"allow_aggregations,omitempty"`// Toggle allowing aggregate queries
Columns *EventTriggerColumns `json:"columns"` // Only these columns are selectable (or all when '*' is specified)
ComputedFields []string `json:"computed_fields"` // Only these computed fields are selectable
ComputedFields []string `json:"computed_fields,omitempty"` // Only these computed fields are selectable
Filter map[string]*Filter `json:"filter,omitempty"` // Only the rows where this precondition holds true are selectable
Limit *int64 `json:"limit,omitempty"` // The maximum number of rows that can be returned
}

View File

@ -74,7 +74,7 @@ module QuickType
, InputArgument (..)
, HasuraMetadataV2 (..)
, Header (..)
, Permissions (..)
, Permission (..)
, Definition (..)
, RemoteFieldValue (..)
, ActionDefinitionType (..)
@ -204,7 +204,7 @@ data Action = Action
{ commentAction :: Maybe Text
, definitionAction :: ActionDefinition
, nameAction :: Text
, permissionsAction :: Maybe Permissions
, permissionsAction :: Maybe (Vector Permission)
} deriving (Show)
{-| Definition of the action
@ -260,9 +260,8 @@ data Header = Header
, valueFromEnvHeader :: Maybe Text
} deriving (Show)
{-| Permissions of the action -}
data Permissions = Permissions
{ rolePermissions :: Text
data Permission = Permission
{ rolePermission :: Text
} deriving (Show)
{-|
@ -734,11 +733,15 @@ https://hasura.io/docs/latest/graphql/core/api-reference/schema-metadata-api/tab
customColumnNames:
Customise the column names
customName:
Customise the table name
customRootFields:
Customise the root fields
-}
data TableConfig = TableConfig
{ customColumnNamesTableConfig :: Maybe (HashMap Text Text)
, customNameTableConfig :: Maybe Text
, customRootFieldsTableConfig :: Maybe CustomRootFields
} deriving (Show)
@ -1500,14 +1503,14 @@ instance FromJSON Header where
<*> v .:? "value"
<*> v .:? "value_from_env"
instance ToJSON Permissions where
toJSON (Permissions rolePermissions) =
instance ToJSON Permission where
toJSON (Permission rolePermission) =
object
[ "role" .= rolePermissions
[ "role" .= rolePermission
]
instance FromJSON Permissions where
parseJSON (Object v) = Permissions
instance FromJSON Permission where
parseJSON (Object v) = Permission
<$> v .: "role"
instance ToJSON AllowList where
@ -1927,15 +1930,17 @@ instance FromJSON ComputedFieldDefinition where
<*> v .:? "table_argument"
instance ToJSON TableConfig where
toJSON (TableConfig customColumnNamesTableConfig customRootFieldsTableConfig) =
toJSON (TableConfig customColumnNamesTableConfig customNameTableConfig customRootFieldsTableConfig) =
object
[ "custom_column_names" .= customColumnNamesTableConfig
, "custom_name" .= customNameTableConfig
, "custom_root_fields" .= customRootFieldsTableConfig
]
instance FromJSON TableConfig where
parseJSON (Object v) = TableConfig
<$> v .:? "custom_column_names"
<*> v .:? "custom_name"
<*> v .:? "custom_root_fields"
instance ToJSON CustomRootFields where

View File

@ -71,6 +71,11 @@
"title": "TableConfig",
"type": "object",
"properties": {
"custom_name": {
"description": "Customise the table name",
"type": "string",
"title": "custom_name"
},
"custom_root_fields": {
"description": "Customise the root fields",
"$ref": "#/definitions/CustomRootFields",
@ -1672,16 +1677,19 @@
},
"permissions": {
"description": "Permissions of the action",
"type": "object",
"properties": {
"role": {
"type": "string",
"title": "role"
}
"type": "array",
"items": {
"type": "object",
"properties": {
"role": {
"type": "string",
"title": "role"
}
},
"required": [
"role"
]
},
"required": [
"role"
],
"title": "permissions"
}
},

View File

@ -321,15 +321,14 @@ class ActionDefinition:
@dataclass
class Permissions:
"""Permissions of the action"""
class Permission:
role: str
@staticmethod
def from_dict(obj: Any) -> 'Permissions':
def from_dict(obj: Any) -> 'Permission':
assert isinstance(obj, dict)
role = from_str(obj.get("role"))
return Permissions(role)
return Permission(role)
def to_dict(self) -> dict:
result: dict = {}
@ -349,7 +348,7 @@ class Action:
"""Comment"""
comment: Optional[str] = None
"""Permissions of the action"""
permissions: Optional[Permissions] = None
permissions: Optional[List[Permission]] = None
@staticmethod
def from_dict(obj: Any) -> 'Action':
@ -357,7 +356,7 @@ class Action:
definition = ActionDefinition.from_dict(obj.get("definition"))
name = from_str(obj.get("name"))
comment = from_union([from_str, from_none], obj.get("comment"))
permissions = from_union([Permissions.from_dict, from_none], obj.get("permissions"))
permissions = from_union([lambda x: from_list(Permission.from_dict, x), from_none], obj.get("permissions"))
return Action(definition, name, comment, permissions)
def to_dict(self) -> dict:
@ -365,7 +364,7 @@ class Action:
result["definition"] = to_class(ActionDefinition, self.definition)
result["name"] = from_str(self.name)
result["comment"] = from_union([from_str, from_none], self.comment)
result["permissions"] = from_union([lambda x: to_class(Permissions, x), from_none], self.permissions)
result["permissions"] = from_union([lambda x: from_list(lambda x: to_class(Permission, x), x), from_none], self.permissions)
return result
@ -1166,6 +1165,8 @@ class TableConfig:
"""
"""Customise the column names"""
custom_column_names: Optional[Dict[str, str]] = None
"""Customise the table name"""
custom_name: Optional[str] = None
"""Customise the root fields"""
custom_root_fields: Optional[CustomRootFields] = None
@ -1173,12 +1174,14 @@ class TableConfig:
def from_dict(obj: Any) -> 'TableConfig':
assert isinstance(obj, dict)
custom_column_names = from_union([lambda x: from_dict(from_str, x), from_none], obj.get("custom_column_names"))
custom_name = from_union([from_str, from_none], obj.get("custom_name"))
custom_root_fields = from_union([CustomRootFields.from_dict, from_none], obj.get("custom_root_fields"))
return TableConfig(custom_column_names, custom_root_fields)
return TableConfig(custom_column_names, custom_name, custom_root_fields)
def to_dict(self) -> dict:
result: dict = {}
result["custom_column_names"] = from_union([lambda x: from_dict(from_str, x), from_none], self.custom_column_names)
result["custom_name"] = from_union([from_str, from_none], self.custom_name)
result["custom_root_fields"] = from_union([lambda x: to_class(CustomRootFields, x), from_none], self.custom_root_fields)
return result

View File

@ -54,6 +54,10 @@ definitions:
title: TableConfig
type: object
properties:
custom_name:
description: Customise the table name
type: string
title: custom_name
custom_root_fields:
description: Customise the root fields
$ref: '#/definitions/CustomRootFields'
@ -1334,13 +1338,15 @@ definitions:
title: comment
permissions:
description: Permissions of the action
type: object
properties:
role:
type: string
title: role
required:
- role
type: array
items:
type: object
properties:
role:
type: string
title: role
required:
- role
title: permissions
required:
- definition

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -18,17 +18,18 @@
},
"devDependencies": {
"@types/js-yaml": "^3.12.5",
"@types/node": "^14.0.14",
"fast-glob": "^3.2.4",
"@types/node": "^16.10.3",
"ava": "^3.9.0",
"ts-node": "^8.10.2",
"typescript": "^3.9.6",
"fast-glob": "^3.2.4",
"js-yaml": "^3.14.0",
"microbundle": "^0.12.3",
"quicktype": "^15.0.248",
"quicktype-core": "^6.0.66",
"prettier": "^2.4.1",
"quicktype": "^15.0.260",
"quicktype-core": "^6.0.70",
"quicktype-typescript-input": "^0.0.11",
"tsd": "^0.12.1"
"ts-node": "^10.2.1",
"tsd": "^0.12.1",
"typescript": "^4.4.3"
},
"ava": {
"extensions": [
@ -38,4 +39,4 @@
"ts-node/register"
]
}
}
}

View File

@ -785,7 +785,7 @@ export interface Action {
/** Comment */
comment?: string
/** Permissions of the action */
permissions?: { role: string }
permissions?: Array<{ role: string }>
}
/**

View File

@ -0,0 +1,233 @@
import {
Action,
AllowList,
CronTrigger,
CustomFunction,
CustomTypes,
QueryCollectionEntry,
RemoteSchema,
TableEntry,
} from "./HasuraMetadataV2"
/**
* https://hasura.io/docs/latest/graphql/core/api-reference/syntax-defs.html#fromenv
*/
export interface FromEnv {
/** Name of the environment variable */
from_env: string
}
/**
* https://hasura.io/docs/latest/graphql/core/api-reference/syntax-defs.html#pgconfiguration
*/
export interface PGConfiguration {
/** Connection parameters for the source */
connection_info: PGSourceConnectionInfo
/** Optional list of read replica configuration (supported only in cloud/enterprise versions) */
read_replicas?: PGSourceConnectionInfo[]
}
/**
* https://hasura.io/docs/latest/graphql/core/api-reference/syntax-defs.html#mssqlsourceconnectioninfo
*/
export interface MsSQLConfiguration {
/** Connection parameters for the source */
connection_info: MsSQLSourceConnectionInfo
}
/**
* https://hasura.io/docs/latest/graphql/core/api-reference/syntax-defs.html#bigqueryconfiguration
*/
export interface BigQueryConfiguration {
/** Service account for BigQuery database */
service_account: string | Record<string, any> | FromEnv
/** Project Id for BigQuery database */
project_id: string | FromEnv
/** List of BigQuery datasets */
datasets: string[] | FromEnv
}
/**
* https://hasura.io/docs/latest/graphql/core/api-reference/syntax-defs.html#pgsourceconnectioninfo
*/
export interface PGSourceConnectionInfo {
/** The database connection URL as a string, as an environment variable, or as connection parameters. */
database_url: string | FromEnv | PGConnectionParameters
/** Connection pool settings */
pool_settings?: PGPoolSettings
/** If set to true the server prepares statement before executing on the source database (default: false). For more details, refer to the Postgres docs */
use_prepared_statements?: boolean
/** The transaction isolation level in which the queries made to the source will be run with (default: read-committed). */
isolation_level?: "read-committed" | "repeatable-read" | "serializable"
/** The client SSL certificate settings for the database (Only available in Cloud). */
ssl_configuration?: PGCertSettings
}
/**
* https://hasura.io/docs/latest/graphql/core/api-reference/syntax-defs.html#mssqlsourceconnectioninfo
*/
export interface MsSQLSourceConnectionInfo {
/** The database connection string, or as an environment variable */
connection_string: string | FromEnv
/** Connection pool settings */
pool_settings?: MsSQLPoolSettings
}
/**
* https://hasura.io/docs/latest/graphql/core/api-reference/syntax-defs.html#pgconnectionparameters
*/
export interface PGConnectionParameters {
/**The Postgres user to be connected */
username: string
/** The Postgres users password */
password?: string
/** The database name */
database: string
/** The name of the host to connect to */
host: string
/** The port number to connect with, at the server host */
port: number
}
/**
* https://hasura.io/docs/latest/graphql/core/api-reference/syntax-defs.html#pgpoolsettings
*/
export interface PGPoolSettings {
/** Maximum number of connections to be kept in the pool (default: 50) */
max_connections?: number
/** The idle timeout (in seconds) per connection (default: 180) */
idle_timeout?: number
/** Number of retries to perform (default: 1) */
retries?: number
/** Maximum time to wait while acquiring a Postgres connection from the pool, in seconds (default: forever) */
pool_timeout?: number
/** Time from connection creation after which the connection should be destroyed and a new one created. A value of 0 indicates we should never destroy an active connection. If 0 is passed, memory from large query results may not be reclaimed. (default: 600 sec) */
connection_lifetime?: number
}
/**
* https://hasura.io/docs/latest/graphql/core/api-reference/syntax-defs.html#pgcertsettings
*/
export interface PGCertSettings {
/** The SSL connection mode. See the libpq ssl support docs <https://www.postgresql.org/docs/9.1/libpq-ssl.html> for more details. */
sslmode: string
/** Environment variable which stores trusted certificate authorities. */
sslrootcert: FromEnv
/** Environment variable which stores the client certificate. */
sslcert: FromEnv
/** Environment variable which stores the client private key. */
sslkey: FromEnv
/** Password in the case where the sslkey is encrypted. */
sslpassword?: string | FromEnv
}
/**
* https://hasura.io/docs/latest/graphql/core/api-reference/syntax-defs.html#mssqlpoolsettings
*/
export interface MsSQLPoolSettings {
/** Maximum number of connections to be kept in the pool (default: 50) */
max_connections?: number
/** The idle timeout (in seconds) per connection (default: 180) */
idle_timeout?: number
}
export enum BackendKind {
POSTGRES = "postgres",
MSSQL = "mssql",
CITUS = "citus",
BIGQUERY = "bigquery",
}
interface BaseSource {
name: string
tables: TableEntry[]
functions?: CustomFunction[]
}
interface PGSource extends BaseSource {
kind: BackendKind.POSTGRES | BackendKind.CITUS
configuration: PGConfiguration
}
interface MsSQLSource extends BaseSource {
kind: BackendKind.MSSQL
configuration: MsSQLConfiguration
}
interface BigQuerySource extends BaseSource {
kind: BackendKind.BIGQUERY
configuration: BigQueryConfiguration
}
export type Source = PGSource | MsSQLSource | BigQuerySource
export interface APILimits {
depth_limit?: DepthLimit;
disabled: boolean;
rate_limit?: RateLimit;
node_limit?: NodeLimit;
}
export interface DepthLimit {
global: number;
per_role: {
[role: string]: number;
};
}
export interface RateLimit {
global: RateLimitRule;
per_role: {
[role: string]: RateLimitRule;
};
}
export interface RateLimitRule {
unique_params: null | 'IP' | string[];
max_reqs_per_min: number;
}
export interface NodeLimit {
global: number;
per_role: {
[role: string]: number;
};
}
export interface RestEndpoint {
name: string;
url: string;
methods: ('POST' | 'PUT' | 'PATCH')[];
definition: RestEndpointDefinition;
comment?: string;
}
export interface RestEndpointDefinition {
query: {
query_name: string;
collection_name: string;
};
}
export interface InheritedRole {
role_name: string;
role_set: string[];
}
// quicktype code generator can't handle Typescript's "Omit<T>" type
export interface HasuraMetadataV3 {
version: 3
sources: Source[]
actions?: Action[]
custom_types?: CustomTypes
remote_schemas?: RemoteSchema[]
query_collections?: QueryCollectionEntry[]
allowlist?: AllowList[]
cron_triggers?: CronTrigger[]
api_limits?: APILimits
rest_endpoints: RestEndpoint[]
inherited_roles?: InheritedRole[]
}

View File

@ -907,6 +907,18 @@
dependencies:
arrify "^1.0.1"
"@cspotcode/source-map-consumer@0.8.0":
version "0.8.0"
resolved "https://registry.yarnpkg.com/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b"
integrity sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==
"@cspotcode/source-map-support@0.6.1":
version "0.6.1"
resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.6.1.tgz#118511f316e2e87ee4294761868e254d3da47960"
integrity sha512-DX3Z+T5dt1ockmPdobJS/FAsQPW4V4SrWEhD2iYQT2Cb2tQsiMnYxrcUH9By/Z3B+v0S5LMBkQtV/XOBbpLEOg==
dependencies:
"@cspotcode/source-map-consumer" "0.8.0"
"@mark.probst/typescript-json-schema@~0.32.0":
version "0.32.0"
resolved "https://registry.yarnpkg.com/@mark.probst/typescript-json-schema/-/typescript-json-schema-0.32.0.tgz#724d2de8baa2e46e5af4cfdeb9fe3758ced9b2a4"
@ -1013,6 +1025,26 @@
dependencies:
defer-to-connect "^1.0.1"
"@tsconfig/node10@^1.0.7":
version "1.0.8"
resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9"
integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==
"@tsconfig/node12@^1.0.7":
version "1.0.9"
resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c"
integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==
"@tsconfig/node14@^1.0.0":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2"
integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==
"@tsconfig/node16@^1.0.2":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e"
integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==
"@types/color-name@^1.1.1":
version "1.1.1"
resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
@ -1051,11 +1083,16 @@
resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6"
integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=
"@types/node@*", "@types/node@^14.0.14":
"@types/node@*":
version "14.6.0"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.0.tgz#7d4411bf5157339337d7cff864d9ff45f177b499"
integrity sha512-mikldZQitV94akrc4sCcSjtJfsTKt4p+e/s0AGscVA6XArQ9kFclP+ZiYUMnq987rc6QlYxXv/EivqlfSLxpKA==
"@types/node@^16.10.3":
version "16.10.3"
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.10.3.tgz#7a8f2838603ea314d1d22bb3171d899e15c57bd5"
integrity sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ==
"@types/normalize-package-data@^2.4.0":
version "2.4.0"
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
@ -1083,11 +1120,21 @@ acorn-walk@^7.2.0:
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
acorn-walk@^8.1.1:
version "8.2.0"
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
acorn@^7.1.0, acorn@^7.1.1, acorn@^7.3.1:
version "7.4.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c"
integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==
acorn@^8.4.1:
version "8.5.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2"
integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==
aggregate-error@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0"
@ -1823,6 +1870,11 @@ cosmiconfig@^6.0.0:
path-type "^4.0.0"
yaml "^1.7.2"
create-require@^1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
cross-spawn@^6.0.0:
version "6.0.5"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
@ -3575,7 +3627,7 @@ nice-try@^1.0.4:
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
node-fetch@^1.0.1, node-fetch@^1.7.1:
node-fetch@^1.0.1:
version "1.7.3"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==
@ -3583,6 +3635,11 @@ node-fetch@^1.0.1, node-fetch@^1.7.1:
encoding "^0.1.11"
is-stream "^1.0.1"
node-fetch@^2.6.1:
version "2.6.1"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
node-releases@^1.1.61:
version "1.1.61"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.61.tgz#707b0fca9ce4e11783612ba4a2fcba09047af16e"
@ -4305,6 +4362,11 @@ prepend-http@^2.0.0:
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
prettier@^2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.1.tgz#671e11c89c14a4cfc876ce564106c4a6726c9f5c"
integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==
pretty-bytes@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-3.0.1.tgz#27d0008d778063a0b4811bb35c79f1bd5d5fbccf"
@ -4364,7 +4426,7 @@ quick-lru@^4.0.1:
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f"
integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==
quicktype-core@^6.0.18, quicktype-core@^6.0.66:
quicktype-core@^6.0.18:
version "6.0.68"
resolved "https://registry.yarnpkg.com/quicktype-core/-/quicktype-core-6.0.68.tgz#bcb613c59eca68dac521e9b7854c073ee79a68c6"
integrity sha512-9or+dslvADdgXGVYMjGr1xehVvBYr0WLRSgQ7MjaQ+NmAvqSCub9Hsq9S2Bbqj5cyDkm2faulbH4yQ7ksckffw==
@ -4382,6 +4444,24 @@ quicktype-core@^6.0.18, quicktype-core@^6.0.66:
wordwrap "^1.0.0"
yaml "^1.5.0"
quicktype-core@^6.0.70:
version "6.0.70"
resolved "https://registry.yarnpkg.com/quicktype-core/-/quicktype-core-6.0.70.tgz#3be15eef505d356bc16fad01d2941d726c0a5700"
integrity sha512-BMoG1omvauNhgGFzz1AkFVIC0LPXPArE6cCGI5fTeHvXKQsVUCbHt+seee2TaqUkELX9Pk6yA0s8OW8vW3kllA==
dependencies:
"@mark.probst/unicode-properties" "~1.1.0"
browser-or-node "^1.2.1"
collection-utils "^1.0.1"
is-url "^1.2.4"
isomorphic-fetch "^2.2.1"
js-base64 "^2.4.3"
pako "^1.0.6"
pluralize "^7.0.0"
readable-stream "2.3.0"
urijs "^1.19.1"
wordwrap "^1.0.0"
yaml "^1.5.0"
quicktype-typescript-input@^0.0.11:
version "0.0.11"
resolved "https://registry.yarnpkg.com/quicktype-typescript-input/-/quicktype-typescript-input-0.0.11.tgz#b2682b77bb3c932a46fe0ae7524964be096c55f2"
@ -4391,10 +4471,10 @@ quicktype-typescript-input@^0.0.11:
quicktype-core "^6.0.18"
typescript "~3.2.1"
quicktype@^15.0.248:
version "15.0.256"
resolved "https://registry.yarnpkg.com/quicktype/-/quicktype-15.0.256.tgz#4d9afa15a3dab4f9728f70e15d8210472c7b54ae"
integrity sha512-GSMi0WDy9NLviujRT4ExrY3cIfDmw4o5RIbVBF/8Bzw7K4/qh46WDZSUdZ/DLIlF93hI4R3QHV2Q4ce0uXUvgg==
quicktype@^15.0.260:
version "15.0.260"
resolved "https://registry.yarnpkg.com/quicktype/-/quicktype-15.0.260.tgz#ee3f3cf2a2d39b5e7ec38d8d91b3a88f01d0fae0"
integrity sha512-OYP77enVz2UkcdDqVFc2AcFGYjk5/ENGYZHmSEY5Oy6Y2xVatlHUnrScddEkI+xJxSfYS6UXSH8oOTW7mEOiEw==
dependencies:
"@mark.probst/typescript-json-schema" "~0.32.0"
"@mark.probst/unicode-properties" "~1.1.0"
@ -4409,14 +4489,14 @@ quicktype@^15.0.248:
js-base64 "^2.4.3"
lodash "^4.17.19"
moment "^2.22.1"
node-fetch "^1.7.1"
node-fetch "^2.6.1"
pako "^1.0.6"
pluralize "^7.0.0"
readable-stream "2.3.0"
stream-json "1.1.3"
string-to-stream "^1.1.0"
typescript "~3.2.1"
urijs "^1.19.1"
urijs "^1.19.4"
uuid "^3.2.1"
wordwrap "^1.0.0"
yaml "^1.5.0"
@ -4866,7 +4946,7 @@ slice-ansi@^3.0.0:
astral-regex "^2.0.0"
is-fullwidth-code-point "^3.0.0"
source-map-support@^0.5.17, source-map-support@^0.5.19, source-map-support@~0.5.12:
source-map-support@^0.5.19, source-map-support@~0.5.12:
version "0.5.19"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
@ -5280,15 +5360,22 @@ trim-off-newlines@^1.0.1:
resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3"
integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM=
ts-node@^8.10.2:
version "8.10.2"
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.10.2.tgz#eee03764633b1234ddd37f8db9ec10b75ec7fb8d"
integrity sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==
ts-node@^10.2.1:
version "10.2.1"
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.2.1.tgz#4cc93bea0a7aba2179497e65bb08ddfc198b3ab5"
integrity sha512-hCnyOyuGmD5wHleOQX6NIjJtYVIO8bPP8F2acWkB4W06wdlkgyvJtubO/I9NkI88hCFECbsEgoLc0VNkYmcSfw==
dependencies:
"@cspotcode/source-map-support" "0.6.1"
"@tsconfig/node10" "^1.0.7"
"@tsconfig/node12" "^1.0.7"
"@tsconfig/node14" "^1.0.0"
"@tsconfig/node16" "^1.0.2"
acorn "^8.4.1"
acorn-walk "^8.1.1"
arg "^4.1.0"
create-require "^1.1.0"
diff "^4.0.1"
make-error "^1.1.1"
source-map-support "^0.5.17"
yn "3.1.1"
tsd@^0.12.1:
@ -5357,11 +5444,16 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
typescript@^3.9.5, typescript@^3.9.6:
typescript@^3.9.5:
version "3.9.7"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa"
integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==
typescript@^4.4.3:
version "4.4.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.3.tgz#bdc5407caa2b109efd4f82fe130656f977a29324"
integrity sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==
typescript@~3.2.1:
version "3.2.4"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.4.tgz#c585cb952912263d915b462726ce244ba510ef3d"
@ -5454,6 +5546,11 @@ urijs@^1.19.1:
resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.2.tgz#f9be09f00c4c5134b7cb3cf475c1dd394526265a"
integrity sha512-s/UIq9ap4JPZ7H1EB5ULo/aOUbWqfDi7FKzMC2Nz+0Si8GiT1rIEaprt8hy3Vy2Ex2aJPpOQv4P4DuOZ+K1c6w==
urijs@^1.19.4:
version "1.19.7"
resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.7.tgz#4f594e59113928fea63c00ce688fb395b1168ab9"
integrity sha512-Id+IKjdU0Hx+7Zx717jwLPsPeUqz7rAtuVBRLLs+qn+J2nf9NGITWVCxcijgYxBqe83C7sqsQPs6H1pyz3x9gA==
url-parse-lax@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c"