diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..c12296f9 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,67 @@ +/* eslint-disable no-undef */ +module.exports = { + ignorePatterns: ['dtslint/', 'lib/', 'es6/', 'build/', 'react/demo/'], + parser: '@typescript-eslint/parser', + parserOptions: { + ecmaVersion: 2018, + sourceType: 'module' + }, + env: { + browser: true, + node: true, + jasmine: true, + jest: true, + 'jest/globals': true + }, + settings: { + 'import/parsers': { + '@typescript-eslint/parser': ['.ts', '.tsx'] + }, + 'import/resolver': { + typescript: { + alwaysTryTypes: true + } + } + }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/eslint-recommended', + 'plugin:@typescript-eslint/recommended', + 'prettier/@typescript-eslint', // Uses eslint-config-prettier to disable ESLint rules from @typescript-eslint/eslint-plugin that would conflict with prettier + 'plugin:prettier/recommended' // Enables eslint-plugin-prettier and displays prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array. + ], + plugins: ['import', 'sort-destructure-keys', 'simple-import-sort', 'jest'], // , 'codegen'], + rules: { + // codegen + // 'codegen/codegen': 'error', + + // eslint built-in rules, sorted alphabetically + 'no-fallthrough': 'off', + 'no-irregular-whitespace': 'off', + 'object-shorthand': 'error', + 'prefer-destructuring': 'off', + 'sort-imports': 'off', + + // all other rules, sorted alphabetically + '@typescript-eslint/no-var-requires': 'off', + '@typescript-eslint/ban-ts-comment': 'off', + '@typescript-eslint/ban-types': 'off', + '@typescript-eslint/camelcase': 'off', + '@typescript-eslint/consistent-type-imports': 'error', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/interface-name-prefix': 'off', + '@typescript-eslint/no-empty-interface': 'off', + '@typescript-eslint/no-empty-function': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-unused-vars': 'off', + '@typescript-eslint/no-use-before-define': 'off', + 'import/first': 'error', + 'import/newline-after-import': 'error', + 'import/no-duplicates': 'error', + 'import/no-unresolved': 'error', + 'import/order': 'off', + 'simple-import-sort/imports': 'error', + 'sort-destructure-keys/sort-destructure-keys': 'error' + } +} diff --git a/.vscode/settings.json b/.vscode/settings.json index c81b0192..a3c1dc1c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,5 +2,86 @@ "typescript.tsdk": "./node_modules/typescript/lib", "prettier.configPath": "./prettier.config.js", "editor.tabCompletion": "onlySnippets", - "cSpell.words": ["ADTs", "Greenkeeper", "Morphic's", "Reinterpreter", "combinator", "combinators"] + "cSpell.words": [ + "ADTs", + "Greenkeeper", + "Morphic's", + "Reinterpreter", + "combinator", + "combinators" + ], + "editor.defaultFormatter": "dbaeumer.vscode-eslint", + + "editor.cursorStyle": "block", + "editor.tabSize": 2, + "editor.insertSpaces": true, + "editor.detectIndentation": false, + "editor.formatOnType": true, + "editor.autoIndent": "full", + "workbench.editor.showIcons": true, + "search.exclude": { + "**/node_modules": false, + "**/bower_components": true, + "**/build": true, + ".tmp": true + }, + "files.watcherExclude": { + "**/.git/objects/**": true, + "**/node_modules/**": true, + "**/.temp/**": true, + "**/.tmp/**": true, + "**/build/**": true, + "**/.tmp": true, + ".tmp": true, + "**/target": true + }, + "files.exclude": { + "**/.git": true, + "**/.svn": true, + "**/.hg": true, + "**/.DS_Store": true, + "**/.git/objects": true, + "**/node_modules": false, + "**/.temp/**": true, + "**/.tmp/**": true, + "**/build/**": false, + "**/.tmp": true, + ".tmp": true + }, + "extensions.autoUpdate": true, + "tslint.packageManager": "npm", + "javascript.updateImportsOnFileMove.enabled": "always", + "editor.formatOnSave": true, + "eslint.format.enable": true, + + "[javascript]": { + "editor.defaultFormatter": "dbaeumer.vscode-eslint" + }, + "[javascriptreact]": { + "editor.defaultFormatter": "dbaeumer.vscode-eslint" + }, + "[typescript]": { + "editor.defaultFormatter": "dbaeumer.vscode-eslint" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "dbaeumer.vscode-eslint" + }, + "prettier.disableLanguages": [ + "javascript", + "javascriptreact", + "typescript", + "typescriptreact" + ], + "eslint.validate": ["markdown", "javascript", "typescript"], + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + }, + "editor.quickSuggestions": { + "other": true, + "comments": false, + "strings": false + }, + "eslint.alwaysShowStatus": true, + "eslint.run": "onSave", + "eslint.packageManager": "yarn" } diff --git a/package.json b/package.json index ce05e5d9..2e85da82 100644 --- a/package.json +++ b/package.json @@ -5,9 +5,12 @@ "workspaces": [ "packages/*" ], + "scripts": { + "fix-eslint": "eslint --fix --ext .ts ./packages" + }, "devDependencies": { "@types/chai": "4.2.11", - "@types/jest": "25.2.3", + "@types/jest": "^26.0.19", "@types/node": "13.13.3", "chai": "4.2.0", "docs-ts": "^0.2.1", @@ -19,7 +22,7 @@ "import-path-rewrite": "github:mikearnaldi/import-path-rewrite", "io-ts": "^2.1.3", "io-ts-types": "^0.5.6", - "jest": "^25.1.0", + "jest": "^26.6.3", "lerna": "^3.20.2", "mocha": "^7.0.0", "monocle-ts": "^2.0.1", @@ -31,7 +34,18 @@ "tslint": "6.1.2", "tslint-config-standard": "^9.0.0", "typescript": "^4.1.3", - "yarn-deduplicate": "2.0.0" + "yarn-deduplicate": "2.0.0", + "eslint": "^7.15.0", + "@typescript-eslint/eslint-plugin":"^4.10.0", + "@typescript-eslint/parser": "^4.10.0", + "eslint-config-prettier": "^7.0.0", + "eslint-import-resolver-typescript": "^2.3.0", + "eslint-plugin-codegen": "^0.14.0", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-jest": "^24.1.3", + "eslint-plugin-prettier": "^3.1.4", + "eslint-plugin-simple-import-sort": "^7.0.0", + "eslint-plugin-sort-destructure-keys": "^1.3.5" }, "husky": { "hooks": { diff --git a/packages/morphic-adt/package.json b/packages/morphic-adt/package.json index a9b78522..8a66934f 100644 --- a/packages/morphic-adt/package.json +++ b/packages/morphic-adt/package.json @@ -1,6 +1,6 @@ { "name": "@morphic-ts/adt", - "version": "3.0.0-alpha.0", + "version": "3.0.0-alpha.1", "description": "Morphic ADT provides Algebraic Data Type manipulation in Typescript", "author": "Stéphane Le Dorze ", "homepage": "", diff --git a/packages/morphic-adt/src/ctors.ts b/packages/morphic-adt/src/ctors.ts index 0ff2d7c0..b64c0d8c 100644 --- a/packages/morphic-adt/src/ctors.ts +++ b/packages/morphic-adt/src/ctors.ts @@ -1,7 +1,8 @@ -import type { Remove, ExtractUnion } from './utils' -import type { KeysDefinition, Tagged } from '.' import { mapWithIndex } from 'fp-ts/Record' +import type { KeysDefinition, Tagged } from '.' +import type { ExtractUnion, Remove } from './utils' + /** * @since 0.0.1 */ diff --git a/packages/morphic-adt/src/index.ts b/packages/morphic-adt/src/index.ts index a132cdd9..a0ac190e 100644 --- a/packages/morphic-adt/src/index.ts +++ b/packages/morphic-adt/src/index.ts @@ -1,13 +1,13 @@ -import type { ElemType, ExtractUnion, ExcludeUnion } from './utils' -import * as M from './monocle' -import * as Ma from './matcher' -import * as PU from './predicates' -import * as CU from './ctors' -import { intersection, difference, reduceRight } from 'fp-ts/ReadonlyArray' -import { array } from 'fp-ts/Array' +import { array, difference, intersection, reduceRight } from 'fp-ts/Array' import { eqString } from 'fp-ts/Eq' +import { identity, tuple } from 'fp-ts/function' import { fromFoldable } from 'fp-ts/Record' -import { tuple, identity } from 'fp-ts/function' + +import * as CU from './ctors' +import * as Ma from './matcher' +import * as M from './monocle' +import * as PU from './predicates' +import type { ElemType, ExcludeUnion, ExtractUnion } from './utils' /** * @since 0.0.1 diff --git a/packages/morphic-adt/src/matcher.ts b/packages/morphic-adt/src/matcher.ts index b51f8a58..2f9b09a2 100644 --- a/packages/morphic-adt/src/matcher.ts +++ b/packages/morphic-adt/src/matcher.ts @@ -1,5 +1,6 @@ import { none } from 'fp-ts/Option' import { Lens, Optional } from 'monocle-ts' + import type { KeysDefinition } from '.' type ValueByKeyByTag, Tags extends keyof Union = keyof Union> = { diff --git a/packages/morphic-adt/src/monocle.ts b/packages/morphic-adt/src/monocle.ts index 4e43ab37..c482ed8b 100644 --- a/packages/morphic-adt/src/monocle.ts +++ b/packages/morphic-adt/src/monocle.ts @@ -1,7 +1,7 @@ -import type { Option } from 'fp-ts/Option' import type { Predicate, Refinement } from 'fp-ts/function' +import type { Option } from 'fp-ts/Option' import type { At, LensFromPath } from 'monocle-ts' -import { Lens, Optional, Prism, Index } from 'monocle-ts' +import { Index, Lens, Optional, Prism } from 'monocle-ts' interface LensFromProp {

(prop: P): Lens diff --git a/packages/morphic-adt/src/predicates.ts b/packages/morphic-adt/src/predicates.ts index 20a4f49b..f0e82b39 100644 --- a/packages/morphic-adt/src/predicates.ts +++ b/packages/morphic-adt/src/predicates.ts @@ -1,7 +1,8 @@ -import type { ExtractUnion, ElemType } from './utils' -import type { KeysDefinition } from '.' import { mapWithIndex } from 'fp-ts/Record' +import type { KeysDefinition } from '.' +import type { ElemType, ExtractUnion } from './utils' + /** * @since 0.0.1 */ diff --git a/packages/morphic-adt/test/adt.spec.ts b/packages/morphic-adt/test/adt.spec.ts index 318c04a7..e8c0fabe 100644 --- a/packages/morphic-adt/test/adt.spec.ts +++ b/packages/morphic-adt/test/adt.spec.ts @@ -1,7 +1,8 @@ +import * as chai from 'chai' import * as O from 'fp-ts/Option' import * as M from 'monocle-ts' -import * as chai from 'chai' -import { unionADT, intersectADT, makeADT, ofType } from '../src' + +import { intersectADT, makeADT, ofType, unionADT } from '../src' describe('Builder', () => { interface Foo { @@ -43,7 +44,7 @@ describe('Builder', () => { bar: ofType() }) - const { fold, match, createReducer, createPartialReducer, transform, strict, matchLens, matchOptional } = fooBar + const { createPartialReducer, createReducer, fold, match, matchLens, matchOptional, strict, transform } = fooBar const fooA = fooBar.of.foo({ a: 'a', b: 12 }) const barA = fooBar.of.bar({ c: 'a', d: 12 }) const barB = fooBar.of.bar({ c: 'b', d: 13 }) diff --git a/packages/morphic-algebras/docs/modules/core.ts.md b/packages/morphic-algebras/docs/modules/core.ts.md index e891220e..120ae27b 100644 --- a/packages/morphic-algebras/docs/modules/core.ts.md +++ b/packages/morphic-algebras/docs/modules/core.ts.md @@ -9,8 +9,6 @@ parent: Modules

Table of contents

- [Algebra (type alias)](#algebra-type-alias) -- [Algebra1 (type alias)](#algebra1-type-alias) -- [Algebra2 (type alias)](#algebra2-type-alias) - [GetAlgebra (type alias)](#getalgebra-type-alias) --- @@ -20,37 +18,13 @@ parent: Modules **Signature** ```ts -export type Algebra = UnionToIntersection< +export type Algebra = UnionToIntersection< AlgAlgebra[AllAlgebra] > ``` Added in v0.0.1 -# Algebra1 (type alias) - -**Signature** - -```ts -export type Algebra1 = UnionToIntersection< - AlgAlgebra1[AllAlgebra] -> -``` - -Added in v0.0.1 - -# Algebra2 (type alias) - -**Signature** - -```ts -export type Algebra2 = UnionToIntersection< - AlgAlgebra2[AllAlgebra] -> -``` - -Added in v0.0.1 - # GetAlgebra (type alias) **Signature** diff --git a/packages/morphic-algebras/docs/modules/hkt.ts.md b/packages/morphic-algebras/docs/modules/hkt.ts.md index 0ade35ef..9bc79109 100644 --- a/packages/morphic-algebras/docs/modules/hkt.ts.md +++ b/packages/morphic-algebras/docs/modules/hkt.ts.md @@ -9,8 +9,6 @@ parent: Modules

Table of contents

- [Algebra (interface)](#algebra-interface) -- [Algebra1 (interface)](#algebra1-interface) -- [Algebra2 (interface)](#algebra2-interface) - [AlgebraURIS (type alias)](#algebrauris-type-alias) --- @@ -20,33 +18,7 @@ parent: Modules **Signature** ```ts -export interface Algebra { - _AF: F - _ENV: Env -} -``` - -Added in v0.0.1 - -# Algebra1 (interface) - -**Signature** - -```ts -export interface Algebra1 { - _AF: F - _ENV: Env -} -``` - -Added in v0.0.1 - -# Algebra2 (interface) - -**Signature** - -```ts -export interface Algebra2 { +export interface Algebra { _AF: F _ENV: Env } diff --git a/packages/morphic-algebras/package.json b/packages/morphic-algebras/package.json index 343dadc2..c9aced32 100644 --- a/packages/morphic-algebras/package.json +++ b/packages/morphic-algebras/package.json @@ -1,6 +1,6 @@ { "name": "@morphic-ts/algebras", - "version": "3.0.0-alpha.0", + "version": "3.0.0-alpha.2", "description": "Morphic core Algebra package", "author": "Stéphane Le Dorze ", "homepage": "", @@ -21,7 +21,7 @@ "es6" ], "dependencies": { - "@morphic-ts/common": "^3.0.0-alpha.0" + "@morphic-ts/common": "^3.0.0-alpha.2" }, "scripts": { "lint": "tslint -p tsconfig.tslint.json src/**/*.ts test/**/*.ts", diff --git a/packages/morphic-algebras/src/core.ts b/packages/morphic-algebras/src/core.ts index be6068e4..ced755a6 100644 --- a/packages/morphic-algebras/src/core.ts +++ b/packages/morphic-algebras/src/core.ts @@ -1,8 +1,8 @@ -import type { URIS, URIS2 } from '@morphic-ts/common/lib/HKT' -import type { Algebra as AlgAlgebra, Algebra1 as AlgAlgebra1, Algebra2 as AlgAlgebra2, AlgebraURIS } from './hkt' - -import type { UnionToIntersection } from '@morphic-ts/common/lib/core' import type { AnyEnv } from '@morphic-ts/common/lib/config' +import type { UnionToIntersection } from '@morphic-ts/common/lib/core' +import type { URIS } from '@morphic-ts/common/lib/HKT' + +import type { Algebra as AlgAlgebra, AlgebraURIS } from './hkt' /** * @since 0.0.1 @@ -12,20 +12,6 @@ export type GetAlgebra = A /** * @since 0.0.1 */ -export type Algebra = UnionToIntersection< +export type Algebra = UnionToIntersection< AlgAlgebra[AllAlgebra] > - -/** - * @since 0.0.1 - */ -export type Algebra1 = UnionToIntersection< - AlgAlgebra1[AllAlgebra] -> - -/** - * @since 0.0.1 - */ -export type Algebra2 = UnionToIntersection< - AlgAlgebra2[AllAlgebra] -> diff --git a/packages/morphic-algebras/src/hkt.ts b/packages/morphic-algebras/src/hkt.ts index 2800d8ec..50224b3d 100644 --- a/packages/morphic-algebras/src/hkt.ts +++ b/packages/morphic-algebras/src/hkt.ts @@ -1,24 +1,10 @@ -import type { URIS, URIS2 } from '@morphic-ts/common/lib/HKT' import type { AnyEnv } from '@morphic-ts/common/lib/config' +import type { URIS } from '@morphic-ts/common/lib/HKT' /** * @since 0.0.1 */ -export interface Algebra { - _AF: F - _ENV: Env -} -/** - * @since 0.0.1 - */ -export interface Algebra1 { - _AF: F - _ENV: Env -} -/** - * @since 0.0.1 - */ -export interface Algebra2 { +export interface Algebra { _AF: F _ENV: Env } diff --git a/packages/morphic-batteries/docs/modules/program-no-union.ts.md b/packages/morphic-batteries/docs/modules/program-no-union.ts.md index ba3ee221..e9e1ab89 100644 --- a/packages/morphic-batteries/docs/modules/program-no-union.ts.md +++ b/packages/morphic-batteries/docs/modules/program-no-union.ts.md @@ -20,7 +20,7 @@ parent: Modules **Signature** ```ts -export interface AlgebraNoUnion extends InferredAlgebra {} +export interface AlgebraNoUnion extends InferredAlgebra {} ``` Added in v0.0.1 diff --git a/packages/morphic-batteries/docs/modules/program-orderable.ts.md b/packages/morphic-batteries/docs/modules/program-orderable.ts.md index f11180be..8ee2ea77 100644 --- a/packages/morphic-batteries/docs/modules/program-orderable.ts.md +++ b/packages/morphic-batteries/docs/modules/program-orderable.ts.md @@ -20,7 +20,7 @@ parent: Modules **Signature** ```ts -export interface AlgebraNoUnion extends InferredAlgebra {} +export interface AlgebraNoUnion extends InferredAlgebra {} ``` Added in v0.0.1 diff --git a/packages/morphic-batteries/docs/modules/program.ts.md b/packages/morphic-batteries/docs/modules/program.ts.md index 81fa6ccf..0a37e0fd 100644 --- a/packages/morphic-batteries/docs/modules/program.ts.md +++ b/packages/morphic-batteries/docs/modules/program.ts.md @@ -20,7 +20,7 @@ parent: Modules **Signature** ```ts -export interface AlgebraUnion extends InferredAlgebra {} +export interface AlgebraUnion extends InferredAlgebra {} ``` Added in v0.0.1 diff --git a/packages/morphic-batteries/package.json b/packages/morphic-batteries/package.json index 6c7c0b08..4d62d536 100644 --- a/packages/morphic-batteries/package.json +++ b/packages/morphic-batteries/package.json @@ -1,6 +1,6 @@ { "name": "@morphic-ts/batteries", - "version": "3.0.0-alpha.0", + "version": "3.0.0-alpha.2", "description": "Morphic batteries package to bootstrap projects", "author": "Stéphane Le Dorze ", "homepage": "", @@ -37,17 +37,17 @@ "newtype-ts": "^0.3.3" }, "dependencies": { - "@morphic-ts/adt": "^3.0.0-alpha.0", - "@morphic-ts/algebras": "^3.0.0-alpha.0", - "@morphic-ts/common": "^3.0.0-alpha.0", - "@morphic-ts/eq-interpreters": "^3.0.0-alpha.0", - "@morphic-ts/fastcheck-interpreters": "^3.0.0-alpha.0", - "@morphic-ts/io-ts-interpreters": "^3.0.0-alpha.0", - "@morphic-ts/json-schema-interpreters": "^3.0.0-alpha.0", - "@morphic-ts/model-algebras": "^3.0.0-alpha.0", - "@morphic-ts/ord-interpreters": "^3.0.0-alpha.0", - "@morphic-ts/show-interpreters": "^3.0.0-alpha.0", - "@morphic-ts/summoners": "^3.0.0-alpha.0" + "@morphic-ts/adt": "^3.0.0-alpha.1", + "@morphic-ts/algebras": "^3.0.0-alpha.2", + "@morphic-ts/common": "^3.0.0-alpha.2", + "@morphic-ts/eq-interpreters": "^3.0.0-alpha.2", + "@morphic-ts/fastcheck-interpreters": "^3.0.0-alpha.2", + "@morphic-ts/io-ts-interpreters": "^3.0.0-alpha.2", + "@morphic-ts/json-schema-interpreters": "^3.0.0-alpha.2", + "@morphic-ts/model-algebras": "^3.0.0-alpha.2", + "@morphic-ts/ord-interpreters": "^3.0.0-alpha.2", + "@morphic-ts/show-interpreters": "^3.0.0-alpha.2", + "@morphic-ts/summoners": "^3.0.0-alpha.2" }, "scripts": { "lint": "tslint -p tsconfig.tslint.json src/**/*.ts test/**/*.ts", diff --git a/packages/morphic-batteries/src/interpreters-BASTJ.ts b/packages/morphic-batteries/src/interpreters-BASTJ.ts index 3683b2c1..8d4e0b2d 100644 --- a/packages/morphic-batteries/src/interpreters-BASTJ.ts +++ b/packages/morphic-batteries/src/interpreters-BASTJ.ts @@ -1,11 +1,11 @@ -import type { Arbitrary } from 'fast-check' -import type { Type } from 'io-ts' -import type { JSONSchema } from '@morphic-ts/json-schema-interpreters/lib/json-schema/json-schema' -import type { NonEmptyArray } from 'fp-ts/NonEmptyArray' +import type { Create } from '@morphic-ts/io-ts-interpreters/lib/create' import type { NamedSchemas } from '@morphic-ts/json-schema-interpreters/lib/index' +import type { JSONSchema } from '@morphic-ts/json-schema-interpreters/lib/json-schema/json-schema' import type { JsonSchemaError } from '@morphic-ts/json-schema-interpreters/lib/json-schema/json-schema-ctors' +import type { Arbitrary } from 'fast-check' import type { Either } from 'fp-ts/Either' -import type { Create } from '@morphic-ts/io-ts-interpreters/lib/create' +import type { NonEmptyArray } from 'fp-ts/NonEmptyArray' +import type { Type } from 'io-ts' /** * @since 0.0.1 diff --git a/packages/morphic-batteries/src/interpreters-ESBAST.ts b/packages/morphic-batteries/src/interpreters-ESBAST.ts index 3b9f1976..35f203ed 100644 --- a/packages/morphic-batteries/src/interpreters-ESBAST.ts +++ b/packages/morphic-batteries/src/interpreters-ESBAST.ts @@ -1,8 +1,8 @@ +import type { Create } from '@morphic-ts/io-ts-interpreters/lib/create' +import type { Arbitrary } from 'fast-check' import type { Eq } from 'fp-ts/Eq' import type { Show } from 'fp-ts/Show' -import type { Arbitrary } from 'fast-check' import type { Type } from 'io-ts' -import type { Create } from '@morphic-ts/io-ts-interpreters/lib/create' /** * @since 0.0.1 diff --git a/packages/morphic-batteries/src/interpreters-ESBASTJ.ts b/packages/morphic-batteries/src/interpreters-ESBASTJ.ts index 91b8ec7f..cb621ae1 100644 --- a/packages/morphic-batteries/src/interpreters-ESBASTJ.ts +++ b/packages/morphic-batteries/src/interpreters-ESBASTJ.ts @@ -1,14 +1,13 @@ -import type { Eq } from 'fp-ts/Eq' -import type { Show } from 'fp-ts/Show' -import type { Arbitrary } from 'fast-check' -import type { Type } from 'io-ts' - -import type { JSONSchema } from '@morphic-ts/json-schema-interpreters/lib/json-schema/json-schema' -import type { NonEmptyArray } from 'fp-ts/NonEmptyArray' +import type { Create } from '@morphic-ts/io-ts-interpreters/lib/create' import type { NamedSchemas } from '@morphic-ts/json-schema-interpreters/lib/index' +import type { JSONSchema } from '@morphic-ts/json-schema-interpreters/lib/json-schema/json-schema' import type { JsonSchemaError } from '@morphic-ts/json-schema-interpreters/lib/json-schema/json-schema-ctors' -import type { Create } from '@morphic-ts/io-ts-interpreters/lib/create' +import type { Arbitrary } from 'fast-check' import type { Either } from 'fp-ts/Either' +import type { Eq } from 'fp-ts/Eq' +import type { NonEmptyArray } from 'fp-ts/NonEmptyArray' +import type { Show } from 'fp-ts/Show' +import type { Type } from 'io-ts' /** * @since 0.0.1 diff --git a/packages/morphic-batteries/src/interpreters-ESBST.ts b/packages/morphic-batteries/src/interpreters-ESBST.ts index be461a6d..33068523 100644 --- a/packages/morphic-batteries/src/interpreters-ESBST.ts +++ b/packages/morphic-batteries/src/interpreters-ESBST.ts @@ -1,7 +1,7 @@ +import type { Create } from '@morphic-ts/io-ts-interpreters/lib/create' import type { Eq } from 'fp-ts/Eq' import type { Show } from 'fp-ts/Show' import type { Type } from 'io-ts' -import type { Create } from '@morphic-ts/io-ts-interpreters/lib/create' /** * @since 0.0.1 diff --git a/packages/morphic-batteries/src/program-no-union.ts b/packages/morphic-batteries/src/program-no-union.ts index 12c575bc..de38859f 100644 --- a/packages/morphic-batteries/src/program-no-union.ts +++ b/packages/morphic-batteries/src/program-no-union.ts @@ -1,17 +1,16 @@ -import type { InferredAlgebra, InferredProgram } from '@morphic-ts/summoners' import type { GetAlgebra } from '@morphic-ts/algebras/lib/core' - +import type { URIS } from '@morphic-ts/common/lib/HKT' import type { IntersectionURI } from '@morphic-ts/model-algebras/lib/intersections' +import type { NewtypeURI } from '@morphic-ts/model-algebras/lib/newtype' import type { ObjectURI } from '@morphic-ts/model-algebras/lib/object' import type { PrimitiveURI } from '@morphic-ts/model-algebras/lib/primitives' import type { RecursiveURI } from '@morphic-ts/model-algebras/lib/recursive' +import type { RefinedURI } from '@morphic-ts/model-algebras/lib/refined' import type { SetURI } from '@morphic-ts/model-algebras/lib/set' import type { StrMapURI } from '@morphic-ts/model-algebras/lib/str-map' import type { TaggedUnionsURI } from '@morphic-ts/model-algebras/lib/tagged-unions' import type { UnknownURI } from '@morphic-ts/model-algebras/lib/unknown' -import type { NewtypeURI } from '@morphic-ts/model-algebras/lib/newtype' -import type { RefinedURI } from '@morphic-ts/model-algebras/lib/refined' -import type { AnyConfigEnv } from '@morphic-ts/summoners' +import type { AnyConfigEnv, InferredAlgebra, InferredProgram } from '@morphic-ts/summoners' /** * @since 0.0.1 @@ -25,7 +24,7 @@ export type ProgramNoUnionURI = typeof ProgramNoUnionURI /** * @since 0.0.1 */ -export interface AlgebraNoUnion extends InferredAlgebra {} +export interface AlgebraNoUnion extends InferredAlgebra {} /** * @since 0.0.1 */ @@ -47,7 +46,7 @@ declare module '@morphic-ts/summoners/lib/ProgramType' { > } - interface ProgramAlgebra { + interface ProgramAlgebra { [ProgramNoUnionURI]: AlgebraNoUnion } diff --git a/packages/morphic-batteries/src/program-orderable.ts b/packages/morphic-batteries/src/program-orderable.ts index a78aa248..39d4d4b0 100644 --- a/packages/morphic-batteries/src/program-orderable.ts +++ b/packages/morphic-batteries/src/program-orderable.ts @@ -1,14 +1,13 @@ -import type { InferredAlgebra, InferredProgram } from '@morphic-ts/summoners' import type { GetAlgebra } from '@morphic-ts/algebras/lib/core' - +import type { URIS } from '@morphic-ts/common/lib/HKT' import type { IntersectionURI } from '@morphic-ts/model-algebras/lib/intersections' +import type { NewtypeURI } from '@morphic-ts/model-algebras/lib/newtype' import type { PrimitiveURI } from '@morphic-ts/model-algebras/lib/primitives' +import type { RefinedURI } from '@morphic-ts/model-algebras/lib/refined' import type { SetURI } from '@morphic-ts/model-algebras/lib/set' import type { StrMapURI } from '@morphic-ts/model-algebras/lib/str-map' import type { TaggedUnionsURI } from '@morphic-ts/model-algebras/lib/tagged-unions' -import type { NewtypeURI } from '@morphic-ts/model-algebras/lib/newtype' -import type { RefinedURI } from '@morphic-ts/model-algebras/lib/refined' -import type { AnyConfigEnv } from '@morphic-ts/summoners' +import type { AnyConfigEnv, InferredAlgebra, InferredProgram } from '@morphic-ts/summoners' /** * @since 0.0.1 @@ -22,7 +21,7 @@ export type ProgramOrderableURI = typeof ProgramOrderableURI /** * @since 0.0.1 */ -export interface AlgebraNoUnion extends InferredAlgebra {} +export interface AlgebraNoUnion extends InferredAlgebra {} /** * @since 0.0.1 */ diff --git a/packages/morphic-batteries/src/program.ts b/packages/morphic-batteries/src/program.ts index 39934ec4..7a8109d8 100644 --- a/packages/morphic-batteries/src/program.ts +++ b/packages/morphic-batteries/src/program.ts @@ -1,18 +1,17 @@ -import type { InferredAlgebra, InferredProgram } from '@morphic-ts/summoners' import type { GetAlgebra } from '@morphic-ts/algebras/lib/core' - +import type { URIS } from '@morphic-ts/common/lib/HKT' import type { IntersectionURI } from '@morphic-ts/model-algebras/lib/intersections' +import type { NewtypeURI } from '@morphic-ts/model-algebras/lib/newtype' import type { ObjectURI } from '@morphic-ts/model-algebras/lib/object' import type { PrimitiveURI } from '@morphic-ts/model-algebras/lib/primitives' import type { RecursiveURI } from '@morphic-ts/model-algebras/lib/recursive' +import type { RefinedURI } from '@morphic-ts/model-algebras/lib/refined' import type { SetURI } from '@morphic-ts/model-algebras/lib/set' import type { StrMapURI } from '@morphic-ts/model-algebras/lib/str-map' import type { TaggedUnionsURI } from '@morphic-ts/model-algebras/lib/tagged-unions' import type { UnionsURI } from '@morphic-ts/model-algebras/lib/unions' import type { UnknownURI } from '@morphic-ts/model-algebras/lib/unknown' -import type { NewtypeURI } from '@morphic-ts/model-algebras/lib/newtype' -import type { RefinedURI } from '@morphic-ts/model-algebras/lib/refined' -import type { AnyConfigEnv } from '@morphic-ts/summoners' +import type { AnyConfigEnv, InferredAlgebra, InferredProgram } from '@morphic-ts/summoners' /** * @since 0.0.1 @@ -26,7 +25,7 @@ export type ProgramUnionURI = typeof ProgramUnionURI /** * @since 0.0.1 */ -export interface AlgebraUnion extends InferredAlgebra {} +export interface AlgebraUnion extends InferredAlgebra {} /** * @since 0.0.1 */ @@ -48,7 +47,7 @@ declare module '@morphic-ts/summoners/lib/ProgramType' { | RefinedURI > } - interface ProgramAlgebra { + interface ProgramAlgebra { [ProgramUnionURI]: AlgebraUnion } interface ProgramType { diff --git a/packages/morphic-batteries/src/summoner-BASTJ.ts b/packages/morphic-batteries/src/summoner-BASTJ.ts index 1fc430f0..ab9a12a4 100644 --- a/packages/morphic-batteries/src/summoner-BASTJ.ts +++ b/packages/morphic-batteries/src/summoner-BASTJ.ts @@ -1,25 +1,25 @@ +import type { AnyEnv } from '@morphic-ts/common/lib/config' import { cacheUnaryFunction } from '@morphic-ts/common/lib/core' -import { pipe } from 'fp-ts/pipeable' - -import type * as U from '@morphic-ts/summoners' - -import type { BASTJInterpreterURI } from './interpreters-BASTJ' -import type { ProgramUnionURI } from './program' - -import { modelFastCheckInterpreter } from '@morphic-ts/fastcheck-interpreters/lib/interpreters' import type { FastCheckURI } from '@morphic-ts/fastcheck-interpreters/lib/interpreters' +import { modelFastCheckInterpreter } from '@morphic-ts/fastcheck-interpreters/lib/interpreters' import type { IoTsURI } from '@morphic-ts/io-ts-interpreters/lib/interpreters' import { - modelIoTsStrictInterpreter, - modelIoTsNonStrictInterpreter + modelIoTsNonStrictInterpreter, + modelIoTsStrictInterpreter } from '@morphic-ts/io-ts-interpreters/lib/interpreters' -import { modelJsonSchemaInterpreter } from '@morphic-ts/json-schema-interpreters/lib' import type { JsonSchemaURI } from '@morphic-ts/json-schema-interpreters/lib' +import { modelJsonSchemaInterpreter } from '@morphic-ts/json-schema-interpreters/lib' import { resolveSchema } from '@morphic-ts/json-schema-interpreters/lib/utils' +// eslint-disable-next-line import/no-duplicates +import type * as U from '@morphic-ts/summoners' +// eslint-disable-next-line import/no-duplicates import type { AnyConfigEnv, ExtractEnv, SummonerOps } from '@morphic-ts/summoners' import { makeSummoner } from '@morphic-ts/summoners' -import type { AnyEnv } from '@morphic-ts/common/lib/config' import { chain as Echain } from 'fp-ts/Either' +import { pipe } from 'fp-ts/pipeable' + +import type { BASTJInterpreterURI } from './interpreters-BASTJ' +import type { ProgramUnionURI } from './program' /** Type level override to keep Morph type name short */ /** @@ -56,7 +56,7 @@ export const summonFor: ( env: ExtractEnv ) => makeSummoner>(cacheUnaryFunction, program => { - const { type, create } = program(modelIoTsNonStrictInterpreter>())(env) + const { create, type } = program(modelIoTsNonStrictInterpreter>())(env) return { build: a => a, arb: program(modelFastCheckInterpreter>())(env).arb, diff --git a/packages/morphic-batteries/src/summoner-ESBAST.ts b/packages/morphic-batteries/src/summoner-ESBAST.ts index 65fc1c72..ad404a55 100644 --- a/packages/morphic-batteries/src/summoner-ESBAST.ts +++ b/packages/morphic-batteries/src/summoner-ESBAST.ts @@ -1,9 +1,7 @@ +import type { AnyEnv } from '@morphic-ts/common/lib/config' import { cacheUnaryFunction } from '@morphic-ts/common/lib/core' - import type { EqURI } from '@morphic-ts/eq-interpreters/lib/interpreters' import { modelEqInterpreter } from '@morphic-ts/eq-interpreters/lib/interpreters' -import type { ShowURI } from '@morphic-ts/show-interpreters/lib/interpreters' -import { modelShowInterpreter } from '@morphic-ts/show-interpreters/lib/interpreters' import type { FastCheckURI } from '@morphic-ts/fastcheck-interpreters/lib/interpreters' import { modelFastCheckInterpreter } from '@morphic-ts/fastcheck-interpreters/lib/interpreters' import type { IoTsURI } from '@morphic-ts/io-ts-interpreters/lib/interpreters' @@ -11,14 +9,16 @@ import { modelIoTsNonStrictInterpreter, modelIoTsStrictInterpreter } from '@morphic-ts/io-ts-interpreters/lib/interpreters' - +import type { ShowURI } from '@morphic-ts/show-interpreters/lib/interpreters' +import { modelShowInterpreter } from '@morphic-ts/show-interpreters/lib/interpreters' +// eslint-disable-next-line import/no-duplicates import type * as U from '@morphic-ts/summoners' - -import type { ProgramNoUnionURI } from './program-no-union' -import type { ESBASTInterpreterURI } from './interpreters-ESBAST' +// eslint-disable-next-line import/no-duplicates import type { AnyConfigEnv, ExtractEnv, SummonerOps } from '@morphic-ts/summoners' import { makeSummoner } from '@morphic-ts/summoners' -import type { AnyEnv } from '@morphic-ts/common/lib/config' + +import type { ESBASTInterpreterURI } from './interpreters-ESBAST' +import type { ProgramNoUnionURI } from './program-no-union' /** Type level override to keep Morph type name short */ /** @@ -55,7 +55,7 @@ export const summonFor: ( env: ExtractEnv ) => makeSummoner>(cacheUnaryFunction, program => { - const { type, create } = program(modelIoTsNonStrictInterpreter>())(env) + const { create, type } = program(modelIoTsNonStrictInterpreter>())(env) return { build: a => a, eq: program(modelEqInterpreter>())(env).eq, diff --git a/packages/morphic-batteries/src/summoner-ESBASTJ.ts b/packages/morphic-batteries/src/summoner-ESBASTJ.ts index 3a5c1550..3ba93e61 100644 --- a/packages/morphic-batteries/src/summoner-ESBASTJ.ts +++ b/packages/morphic-batteries/src/summoner-ESBASTJ.ts @@ -1,31 +1,29 @@ +import type { AnyEnv } from '@morphic-ts/common/lib/config' import { cacheUnaryFunction } from '@morphic-ts/common/lib/core' - import type { EqURI } from '@morphic-ts/eq-interpreters/lib/interpreters' import { modelEqInterpreter } from '@morphic-ts/eq-interpreters/lib/interpreters' -import type { ShowURI } from '@morphic-ts/show-interpreters/lib/interpreters' -import { modelShowInterpreter } from '@morphic-ts/show-interpreters/lib/interpreters' import type { FastCheckURI } from '@morphic-ts/fastcheck-interpreters/lib/interpreters' import { modelFastCheckInterpreter } from '@morphic-ts/fastcheck-interpreters/lib/interpreters' -import type { JsonSchemaURI } from '@morphic-ts/json-schema-interpreters/lib/interpreters' -import { modelJsonSchemaInterpreter } from '@morphic-ts/json-schema-interpreters/lib/interpreters' - -import type { ProgramNoUnionURI } from './program-no-union' - -import { chain as EChain } from 'fp-ts/Either' -import { pipe } from 'fp-ts/pipeable' -import { resolveSchema } from '@morphic-ts/json-schema-interpreters/lib/utils' import type { IoTsURI } from '@morphic-ts/io-ts-interpreters/lib/interpreters' import { modelIoTsNonStrictInterpreter, modelIoTsStrictInterpreter } from '@morphic-ts/io-ts-interpreters/lib/interpreters' - +import type { JsonSchemaURI } from '@morphic-ts/json-schema-interpreters/lib/interpreters' +import { modelJsonSchemaInterpreter } from '@morphic-ts/json-schema-interpreters/lib/interpreters' +import { resolveSchema } from '@morphic-ts/json-schema-interpreters/lib/utils' +import type { ShowURI } from '@morphic-ts/show-interpreters/lib/interpreters' +import { modelShowInterpreter } from '@morphic-ts/show-interpreters/lib/interpreters' +// eslint-disable-next-line import/no-duplicates import type * as U from '@morphic-ts/summoners' - -import type { ESBASTJInterpreterURI } from './interpreters-ESBASTJ' +// eslint-disable-next-line import/no-duplicates import type { AnyConfigEnv, ExtractEnv, SummonerOps } from '@morphic-ts/summoners' import { makeSummoner } from '@morphic-ts/summoners' -import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { chain as EChain } from 'fp-ts/Either' +import { pipe } from 'fp-ts/pipeable' + +import type { ESBASTJInterpreterURI } from './interpreters-ESBASTJ' +import type { ProgramNoUnionURI } from './program-no-union' /** Type level override to keep Morph type name short */ /** @@ -62,7 +60,7 @@ export const summonFor: ( env: ExtractEnv ) => makeSummoner>(cacheUnaryFunction, program => { - const { type, create } = program(modelIoTsNonStrictInterpreter>())(env) + const { create, type } = program(modelIoTsNonStrictInterpreter>())(env) return { build: a => a, eq: program(modelEqInterpreter>())(env).eq, diff --git a/packages/morphic-batteries/src/summoner-ESBST.ts b/packages/morphic-batteries/src/summoner-ESBST.ts index a6a3aa1f..202df3fe 100644 --- a/packages/morphic-batteries/src/summoner-ESBST.ts +++ b/packages/morphic-batteries/src/summoner-ESBST.ts @@ -1,22 +1,20 @@ +import type { AnyEnv } from '@morphic-ts/common/lib/config' import { cacheUnaryFunction } from '@morphic-ts/common/lib/core' - import type { EqURI } from '@morphic-ts/eq-interpreters/lib/interpreters' import { modelEqInterpreter } from '@morphic-ts/eq-interpreters/lib/interpreters' -import type { ShowURI } from '@morphic-ts/show-interpreters/lib/interpreters' -import { modelShowInterpreter } from '@morphic-ts/show-interpreters/lib/interpreters' import type { IoTsURI } from '@morphic-ts/io-ts-interpreters/lib/interpreters' import { modelIoTsNonStrictInterpreter, modelIoTsStrictInterpreter } from '@morphic-ts/io-ts-interpreters/lib/interpreters' - +import type { ShowURI } from '@morphic-ts/show-interpreters/lib/interpreters' +import { modelShowInterpreter } from '@morphic-ts/show-interpreters/lib/interpreters' import type * as U from '@morphic-ts/summoners' - -import type { ProgramNoUnionURI } from './program-no-union' -import type { ESBSTInterpreterURI } from './interpreters-ESBST' import type { AnyConfigEnv, ExtractEnv, SummonerOps } from '@morphic-ts/summoners' import { makeSummoner } from '@morphic-ts/summoners' -import type { AnyEnv } from '@morphic-ts/common/lib/config' + +import type { ESBSTInterpreterURI } from './interpreters-ESBST' +import type { ProgramNoUnionURI } from './program-no-union' /** Type level override to keep Morph type name short */ /** @@ -51,7 +49,7 @@ export const summonFor: ( env: ExtractEnv ) => SummonerOps> = (env: ExtractEnv) => makeSummoner>(cacheUnaryFunction, program => { - const { type, create } = program(modelIoTsNonStrictInterpreter>())(env) + const { create, type } = program(modelIoTsNonStrictInterpreter>())(env) return { build: a => a, eq: program(modelEqInterpreter>())(env).eq, diff --git a/packages/morphic-batteries/src/summoner-Empty.ts b/packages/morphic-batteries/src/summoner-Empty.ts index 2f764ece..fc0d8dc2 100644 --- a/packages/morphic-batteries/src/summoner-Empty.ts +++ b/packages/morphic-batteries/src/summoner-Empty.ts @@ -1,14 +1,14 @@ +import type { AnyEnv } from '@morphic-ts/common/lib/config' import { cacheUnaryFunction } from '@morphic-ts/common/lib/core' - +// eslint-disable-next-line import/no-duplicates import type * as U from '@morphic-ts/summoners' +// eslint-disable-next-line import/no-duplicates +import type { AnyConfigEnv, ExtractEnv, SummonerOps } from '@morphic-ts/summoners' +import { makeSummoner } from '@morphic-ts/summoners' import type { EmptyInterpreterURI } from './interpreters-Empty' import type { ProgramNoUnionURI } from './program-no-union' -import type { AnyConfigEnv, ExtractEnv, SummonerOps } from '@morphic-ts/summoners' -import { makeSummoner } from '@morphic-ts/summoners' -import type { AnyEnv } from '@morphic-ts/common/lib/config' - /** Type level override to keep Morph type name short */ /** * @since 0.0.1 diff --git a/packages/morphic-batteries/test/BASTJ.spec.ts b/packages/morphic-batteries/test/BASTJ.spec.ts index ba9f9391..5da723c3 100644 --- a/packages/morphic-batteries/test/BASTJ.spec.ts +++ b/packages/morphic-batteries/test/BASTJ.spec.ts @@ -1,11 +1,11 @@ import * as chai from 'chai' +import { either, right as Eright } from 'fp-ts/Either' +import type { Type } from 'io-ts' +import { failure, success } from 'io-ts' +import { PathReporter } from 'io-ts/lib/PathReporter' +import { withValidate } from 'io-ts-types/lib/withValidate' import { summonFor } from '../src/summoner-BASTJ' -import { withValidate } from 'io-ts-types/lib/withValidate' -import { PathReporter } from 'io-ts/lib/PathReporter' -import { failure, success } from 'io-ts' -import type { Type } from 'io-ts' -import { right as Eright, either } from 'fp-ts/Either' const { summon } = summonFor<{}>({}) diff --git a/packages/morphic-batteries/test/Empty.spec.ts b/packages/morphic-batteries/test/Empty.spec.ts index d30e8d67..b02ac37e 100644 --- a/packages/morphic-batteries/test/Empty.spec.ts +++ b/packages/morphic-batteries/test/Empty.spec.ts @@ -1,15 +1,15 @@ -import * as chai from 'chai' - -import { summonFor } from '../src/summoner-Empty' -import { withValidate } from 'io-ts-types/lib/withValidate' -import { PathReporter } from 'io-ts/lib/PathReporter' -import { failure, success } from 'io-ts' -import type { Type } from 'io-ts' import { - modelIoTsStrictInterpreter, - modelIoTsNonStrictInterpreter + modelIoTsNonStrictInterpreter, + modelIoTsStrictInterpreter } from '@morphic-ts/io-ts-interpreters/lib/interpreters' +import * as chai from 'chai' import { either, right } from 'fp-ts/Either' +import type { Type } from 'io-ts' +import { failure, success } from 'io-ts' +import { PathReporter } from 'io-ts/lib/PathReporter' +import { withValidate } from 'io-ts-types/lib/withValidate' + +import { summonFor } from '../src/summoner-Empty' const { summon } = summonFor<{}>({}) diff --git a/packages/morphic-batteries/test/config-env.spec.ts b/packages/morphic-batteries/test/config-env.spec.ts index 01b4a09c..8755b4f2 100644 --- a/packages/morphic-batteries/test/config-env.spec.ts +++ b/packages/morphic-batteries/test/config-env.spec.ts @@ -1,13 +1,13 @@ -import * as chai from 'chai' -import { summonFor as summonESBSTFor } from '../src/summoner-ESBST' - -import { summonFor as summonESBASTJFor } from '../src/summoner-ESBASTJ' -import { modelFastCheckInterpreter } from '@morphic-ts/fastcheck-interpreters/lib/interpreters' import type { FastCheckURI } from '@morphic-ts/fastcheck-interpreters/lib/interpreters' +import { modelFastCheckInterpreter } from '@morphic-ts/fastcheck-interpreters/lib/interpreters' +import * as chai from 'chai' import * as fc from 'fast-check' -import * as WM from 'io-ts-types/lib/withMessage' -import { PathReporter } from 'io-ts/lib/PathReporter' import { right } from 'fp-ts/Either' +import { PathReporter } from 'io-ts/lib/PathReporter' +import * as WM from 'io-ts-types/lib/withMessage' + +import { summonFor as summonESBASTJFor } from '../src/summoner-ESBASTJ' +import { summonFor as summonESBSTFor } from '../src/summoner-ESBST' describe('Morph Config Env', () => { interface FastCheckEnv { diff --git a/packages/morphic-batteries/test/makeDefined.spec.ts b/packages/morphic-batteries/test/makeDefined.spec.ts index f3ad09ac..77d99ea2 100644 --- a/packages/morphic-batteries/test/makeDefined.spec.ts +++ b/packages/morphic-batteries/test/makeDefined.spec.ts @@ -1,10 +1,11 @@ -import { summonFor } from '../src/summoner-BASTJ' +import type { FastCheckURI } from '@morphic-ts/fastcheck-interpreters/lib/hkt' import { defineFor } from '@morphic-ts/summoners' -import { ProgramUnionURI } from '../src/program' import * as fc from 'fast-check' -import type { FastCheckURI } from '@morphic-ts/fastcheck-interpreters/lib/hkt' import { isRight } from 'fp-ts/Either' +import { ProgramUnionURI } from '../src/program' +import { summonFor } from '../src/summoner-BASTJ' + interface FastCheck { fc: typeof fc } @@ -32,7 +33,7 @@ describe('defineFor', () => { }) describe('define', () => { - const { summon, define } = summonFor({ + const { define, summon } = summonFor({ FastCheckURI: { fc } diff --git a/packages/morphic-batteries/test/tagged-union.ts b/packages/morphic-batteries/test/tagged-union.ts index f791bc17..7fab5203 100644 --- a/packages/morphic-batteries/test/tagged-union.ts +++ b/packages/morphic-batteries/test/tagged-union.ts @@ -1,9 +1,10 @@ -import * as chai from 'chai' -import { summonFor, AsOpaque } from '../src/summoner-BASTJ' +import { intersectADT, unionADT } from '@morphic-ts/adt' import type { AType, EType } from '@morphic-ts/summoners' -import { unionADT, intersectADT } from '@morphic-ts/adt' +import * as chai from 'chai' import { right } from 'fp-ts/lib/Either' +import { AsOpaque, summonFor } from '../src/summoner-BASTJ' + const { summon, tagged } = summonFor<{}>({}) const ObjA_ = summon(F => F.interface({ type: F.stringLiteral('ObjA') }, 'ObjA')) diff --git a/packages/morphic-batteries/test/usage.spec.ts b/packages/morphic-batteries/test/usage.spec.ts index a02ff4f8..20459b12 100644 --- a/packages/morphic-batteries/test/usage.spec.ts +++ b/packages/morphic-batteries/test/usage.spec.ts @@ -1,17 +1,16 @@ +import { modelFastCheckInterpreter } from '@morphic-ts/fastcheck-interpreters/lib/interpreters' +import { modelShowInterpreter } from '@morphic-ts/show-interpreters/lib/interpreters' +import { interpretable, makeTagged } from '@morphic-ts/summoners' import * as chai from 'chai' +import { assert as FCassert, property } from 'fast-check' +import { isRight, right } from 'fp-ts/Either' +import type { Newtype } from 'newtype-ts' +import { iso } from 'newtype-ts' + import type { M as MBASTJ } from '../src/summoner-BASTJ' import { summonFor as summonBASTJFor } from '../src/summoner-BASTJ' -import { summonFor as summonESBSTFor } from '../src/summoner-ESBST' - -import { makeTagged } from '@morphic-ts/summoners' import { summonFor as summonESBASTJFor } from '../src/summoner-ESBASTJ' -import { interpretable } from '@morphic-ts/summoners' -import { modelShowInterpreter } from '@morphic-ts/show-interpreters/lib/interpreters' -import { iso } from 'newtype-ts' -import type { Newtype } from 'newtype-ts' -import { modelFastCheckInterpreter } from '@morphic-ts/fastcheck-interpreters/lib/interpreters' -import { assert as FCassert, property } from 'fast-check' -import { isRight, right } from 'fp-ts/Either' +import { summonFor as summonESBSTFor } from '../src/summoner-ESBST' const { summon: summonBASTJ } = summonBASTJFor<{}>({}) const { summon: summonESBASTJ } = summonESBASTJFor<{}>({}) diff --git a/packages/morphic-common/docs/modules/HKT.ts.md b/packages/morphic-common/docs/modules/HKT.ts.md index 4789bc90..4ad2be7c 100644 --- a/packages/morphic-common/docs/modules/HKT.ts.md +++ b/packages/morphic-common/docs/modules/HKT.ts.md @@ -13,13 +13,10 @@ Pattern stolen from fp-ts. Type defunctionalization (as describe in [Lightweight

Table of contents

- [HKT (interface)](#hkt-interface) -- [HKT2 (interface)](#hkt2-interface) - [URItoKind (interface)](#uritokind-interface) -- [URItoKind2 (interface)](#uritokind2-interface) - [Kind (type alias)](#kind-type-alias) -- [Kind2 (type alias)](#kind2-type-alias) - [URIS (type alias)](#uris-type-alias) -- [URIS2 (type alias)](#uris2-type-alias) +- [URIS\_ (type alias)](#uris_-type-alias) --- @@ -28,23 +25,9 @@ Pattern stolen from fp-ts. Type defunctionalization (as describe in [Lightweight **Signature** ```ts -export interface HKT { - readonly _URI: URI - (_R: R): void +export interface HKT { + readonly _R: (_: R) => void readonly _A: A -} -``` - -Added in v0.0.1 - -# HKT2 (interface) - -`* -> * -> *` constructors - -**Signature** - -```ts -export interface HKT2 extends HKT { readonly _E: E } ``` @@ -53,30 +36,17 @@ Added in v0.0.1 # URItoKind (interface) -`* -> *` constructors - -**Signature** - -```ts -export interface URItoKind { - _R: R - _A: A -} -``` - -Added in v0.0.1 - -# URItoKind2 (interface) - `* -> * -> *` constructors **Signature** ```ts -export interface URItoKind2 { - _R: R - _A: A - _E: E +export interface URItoKind { + readonly _R: (_: R) => void + readonly _A: A + readonly _E: E + + readonly ['HKT']: HKT } ``` @@ -84,48 +54,36 @@ Added in v0.0.1 # Kind (type alias) -`* -> *` constructors - -**Signature** - -```ts -export declare type Kind = URI extends URIS ? URItoKind[URI] : any -``` - -Added in v0.0.1 - -# Kind2 (type alias) - `* -> * -> *` constructors **Signature** ```ts -export declare type Kind2 = URI extends URIS2 ? URItoKind2[URI] : any +export declare type Kind = URItoKind[URI] ``` Added in v0.0.1 # URIS (type alias) -`* -> *` constructors +`* -> * -> *` constructors **Signature** ```ts -export declare type URIS = Exclude, '_A' | '_R'> +export declare type URIS = Exclude, '_A' | '_E' | '_R'> ``` Added in v0.0.1 -# URIS2 (type alias) +# URIS\_ (type alias) `* -> * -> *` constructors **Signature** ```ts -export declare type URIS2 = Exclude, '_A' | '_E' | '_R'> +export declare type URIS_ = Exclude ``` Added in v0.0.1 diff --git a/packages/morphic-common/docs/modules/config.ts.md b/packages/morphic-common/docs/modules/config.ts.md index 5dda0de1..93b4d5d1 100644 --- a/packages/morphic-common/docs/modules/config.ts.md +++ b/packages/morphic-common/docs/modules/config.ts.md @@ -17,7 +17,6 @@ parent: Modules - [URISIndexedAny (type alias)](#urisindexedany-type-alias) - [getApplyConfig (function)](#getapplyconfig-function) - [Kind (export)](#kind-export) -- [Kind2 (export)](#kind2-export) --- @@ -29,6 +28,7 @@ parent: Modules export interface ConfigType { _E: E _A: A + readonly ['HKT']: never } ``` @@ -72,7 +72,7 @@ Added in v0.0.1 ```ts export type MapToGenConfig = { - [k in URIS | URIS2]?: GenConfig + [k in URIS_]?: GenConfig } ``` @@ -93,7 +93,7 @@ Added in v0.0.1 **Signature** ```ts -export type URISIndexedAny = Record +export type URISIndexedAny = Readonly> ``` Added in v0.0.1 @@ -103,7 +103,7 @@ Added in v0.0.1 **Signature** ```ts -export const getApplyConfig: ( +export const getApplyConfig: ( uri: Uri ) => >( config?: { [k in Uri]?: GenConfig[Uri], R> } @@ -122,13 +122,3 @@ any ``` Added in v0.0.1 - -# Kind2 (export) - -**Signature** - -```ts -any -``` - -Added in v0.0.1 diff --git a/packages/morphic-common/docs/modules/core.ts.md b/packages/morphic-common/docs/modules/core.ts.md index f606c4b7..259291cf 100644 --- a/packages/morphic-common/docs/modules/core.ts.md +++ b/packages/morphic-common/docs/modules/core.ts.md @@ -11,7 +11,6 @@ parent: Modules - [CacheType (type alias)](#cachetype-type-alias) - [Compact (type alias)](#compact-type-alias) - [OfType (type alias)](#oftype-type-alias) -- [OfType2 (type alias)](#oftype2-type-alias) - [UnionToIntersection (type alias)](#uniontointersection-type-alias) - [cacheUnaryFunction (function)](#cacheunaryfunction-function) @@ -44,17 +43,7 @@ Added in v0.0.1 **Signature** ```ts -export type OfType = Kind -``` - -Added in v0.0.1 - -# OfType2 (type alias) - -**Signature** - -```ts -export type OfType2 = Kind2 +export type OfType = Kind ``` Added in v0.0.1 diff --git a/packages/morphic-common/dtslint/ts3.8/config.ts b/packages/morphic-common/dtslint/ts3.8/config.ts index 6bef8865..5cc3bc3f 100644 --- a/packages/morphic-common/dtslint/ts3.8/config.ts +++ b/packages/morphic-common/dtslint/ts3.8/config.ts @@ -1,18 +1,18 @@ import type { ConfigsForType, AnyEnv } from '../../src/config' -import type { URIS, HKT, URIS2 } from '../../src/HKT' +import type { URIS, HKT } from '../../src/HKT' import type { Ord } from 'fp-ts/Ord' import type { Eq } from 'fp-ts/Eq' import type { Type } from 'io-ts' declare module '../../src/HKT' { - interface URItoKind { + interface URItoKind { ['Eq']: (env: R) => TypeEq
} - interface URItoKind { + interface URItoKind { ['Ord']: (env: R) => TypeOrd } - interface URItoKind2 { + interface URItoKind { ['IOTs']: (env: R) => TypeIOTs } } @@ -54,17 +54,17 @@ declare module '../../src/config' { } // Algebra -interface Foo { +interface Foo { myFunc: (t: HKT) => (a: ConfigsForType) => HKT term: () => HKT } // Program -const doIt = () => (f: (x: Foo) => undefined) => f +const doIt = () => (f: (x: Foo) => undefined) => f doIt<{ Ord: { x: string } }>()(F => { - // $ExpectType HKT<"Eq" | "Ord" | "IOTs", { Ord: { x: string; }; }, string> + // $ExpectType HKT<"HKT" | "Eq" | "Ord" | "IOTs", { Ord: { x: string; }; }, string> F.myFunc(F.term())({ Ord: // $ExpectType (x: Ord, e: { x: string; }) => Ord @@ -76,7 +76,7 @@ doIt<{ Ord: { x: string } }>()(F => { }) doIt<{ Ord: { b: number } }>()(F => { - // $ExpectType HKT<"Eq" | "Ord" | "IOTs", { Ord: { b: number; }; }, string> + // $ExpectType HKT<"HKT" | "Eq" | "Ord" | "IOTs", { Ord: { b: number; }; }, string> F.myFunc(F.term())({ Ord: // $ExpectType (x: Ord, e: { b: number; }) => Ord @@ -98,7 +98,7 @@ doIt<{ Ord: { b: number } }>()(F => { }) doIt<{ Eq: { a: string } } & { Ord: { b: number } }>()(F => { - // $ExpectType HKT<"Eq" | "Ord" | "IOTs", { Eq: { a: string; }; } & { Ord: { b: number; }; }, string> + // $ExpectType HKT<"HKT" | "Eq" | "Ord" | "IOTs", { Eq: { a: string; }; } & { Ord: { b: number; }; }, string> F.myFunc(F.term())({ Ord: // $ExpectType (x: Ord, e: { b: number; }) => Ord @@ -123,7 +123,7 @@ doIt<{ Eq: { a: string } } & { Ord: { b: number } }>()(F => { }) doIt<{ Eq: { a: string } }>()(F => { - // $ExpectType HKT<"Eq" | "Ord" | "IOTs", { Eq: { a: string; }; }, string> + // $ExpectType HKT<"HKT" | "Eq" | "Ord" | "IOTs", { Eq: { a: string; }; }, string> F.myFunc(F.term())({ Ord: // $ExpectType (x: Ord, e: unknown) => Ord @@ -140,7 +140,7 @@ doIt<{ Eq: { a: string } }>()(F => { }) doIt<{ IOTs: { c: string } } & { Eq: { a: string } } & { Ord: { b: number } }>()(F => { - // $ExpectType HKT<"Eq" | "Ord" | "IOTs", { IOTs: { c: string; }; } & { Eq: { a: string; }; } & { Ord: { b: number; }; }, string> + // $ExpectType HKT<"HKT" | "Eq" | "Ord" | "IOTs", { IOTs: { c: string; }; } & { Eq: { a: string; }; } & { Ord: { b: number; }; }, string> F.myFunc(F.term())({ Ord: // $ExpectType (x: Ord, e: { b: number; }) => Ord @@ -173,12 +173,12 @@ doIt<{ IOTs: { c: string } } & { Eq: { a: string } } & { Ord: { b: number } }>() return undefined }) -interface Foo2 { +interface Foo2 { myFunc: (t: HKT) => (a: ConfigsForType) => HKT term: () => HKT } -const doIt2 = () => (f: (x: Foo2) => undefined) => f +const doIt2 = () => (f: (x: Foo2) => undefined) => f doIt2<{ Eq: { a: string } }>()(F => { F.myFunc(F.term<{}, string>())({ diff --git a/packages/morphic-common/package.json b/packages/morphic-common/package.json index ed731dcf..5bf752a5 100644 --- a/packages/morphic-common/package.json +++ b/packages/morphic-common/package.json @@ -1,6 +1,6 @@ { "name": "@morphic-ts/common", - "version": "3.0.0-alpha.0", + "version": "3.0.0-alpha.2", "description": "Morphic core common package", "author": "Stéphane Le Dorze ", "homepage": "", diff --git a/packages/morphic-common/src/HKT.ts b/packages/morphic-common/src/HKT.ts index 29a30127..044ead2a 100644 --- a/packages/morphic-common/src/HKT.ts +++ b/packages/morphic-common/src/HKT.ts @@ -1,60 +1,42 @@ /** * @file Pattern stolen from fp-ts. Type defunctionalization (as describe in [Lightweight higher-kinded polymorphism](https://www.cl.cam.ac.uk/~jdy22/papers/lightweight-higher-kinded-polymorphism.pdf)) */ -/** - * `* -> *` constructors - * @since 0.0.1 - */ -export interface HKT { - readonly _URI: URI - (_R: R): void - readonly _A: A -} /** * `* -> * -> *` constructors * @since 0.0.1 */ -export interface HKT2 extends HKT { +export interface HKT { + readonly _R: (_: R) => void + readonly _A: A readonly _E: E } -/** - * `* -> *` constructors - * @since 0.0.1 - */ -export interface URItoKind { - _R: R - _A: A -} /** * `* -> * -> *` constructors * @since 0.0.1 */ -export interface URItoKind2 { - _R: R - _A: A - _E: E +export interface URItoKind { + readonly _R: (_: R) => void + readonly _A: A + readonly _E: E + + readonly ['HKT']: HKT } -/** - * `* -> *` constructors - * @since 0.0.1 - */ -export declare type URIS = Exclude, '_A' | '_R'> /** * `* -> * -> *` constructors * @since 0.0.1 */ -export declare type URIS2 = Exclude, '_A' | '_E' | '_R'> +export declare type URIS = Exclude, '_A' | '_E' | '_R'> /** - * `* -> *` constructors + * `* -> * -> *` constructors * @since 0.0.1 */ -export declare type Kind = URI extends URIS ? URItoKind[URI] : any +export declare type URIS_ = Exclude /** * `* -> * -> *` constructors * @since 0.0.1 */ -export declare type Kind2 = URI extends URIS2 ? URItoKind2[URI] : any +export declare type Kind = URItoKind[URI] diff --git a/packages/morphic-common/src/config.ts b/packages/morphic-common/src/config.ts index fee9a99d..a8abb38b 100644 --- a/packages/morphic-common/src/config.ts +++ b/packages/morphic-common/src/config.ts @@ -1,20 +1,17 @@ -import type { URIS, URIS2, Kind, Kind2 } from './HKT' +import type { Kind, URIS_ } from './HKT' + export { /** * @since 0.0.1 */ - Kind, - /** - * @since 0.0.1 - */ - Kind2 + Kind } /** * @since 0.0.1 */ -export type URISIndexedAny = Record +export type URISIndexedAny = Readonly> /** * @since 0.0.1 @@ -38,7 +35,7 @@ export type NoEnv = unknown * @since 0.0.1 */ export type MapToGenConfig = { - [k in URIS | URIS2]?: GenConfig + [k in URIS_]?: GenConfig } /** @@ -47,6 +44,7 @@ export type MapToGenConfig = { export interface ConfigType { _E: E _A: A + readonly ['HKT']: never } /** @@ -57,7 +55,7 @@ export type ConfigsForType = MapToGenConfig( +export const getApplyConfig: ( uri: Uri ) => >( config?: { [k in Uri]?: GenConfig[Uri], R> } diff --git a/packages/morphic-common/src/core.ts b/packages/morphic-common/src/core.ts index 3cc6142f..6d5f7246 100644 --- a/packages/morphic-common/src/core.ts +++ b/packages/morphic-common/src/core.ts @@ -1,14 +1,9 @@ -import type { Kind, URIS, URIS2, Kind2 } from './HKT' +import type { Kind, URIS } from './HKT' /** * @since 0.0.1 */ -export type OfType = Kind - -/** - * @since 0.0.1 - */ -export type OfType2 = Kind2 +export type OfType = Kind type Function1 = (a: any) => any diff --git a/packages/morphic-common/src/utils.ts b/packages/morphic-common/src/utils.ts index 03094c66..0e57c92a 100644 --- a/packages/morphic-common/src/utils.ts +++ b/packages/morphic-common/src/utils.ts @@ -1,4 +1,4 @@ -import { record, collect as Rcollect } from 'fp-ts/Record' +import { collect as Rcollect, record } from 'fp-ts/Record' /** * @since 0.0.1 diff --git a/packages/morphic-common/test/core.spec.ts b/packages/morphic-common/test/core.spec.ts index 3a14c014..13d2a961 100644 --- a/packages/morphic-common/test/core.spec.ts +++ b/packages/morphic-common/test/core.spec.ts @@ -1,4 +1,5 @@ import * as chai from 'chai' + import { cacheUnaryFunction } from '../src/core' describe('cacheUnaryFunction', () => { diff --git a/packages/morphic-eq-interpreters/docs/modules/interpreters.ts.md b/packages/morphic-eq-interpreters/docs/modules/interpreters.ts.md index 9a06cc7f..d8b4f084 100644 --- a/packages/morphic-eq-interpreters/docs/modules/interpreters.ts.md +++ b/packages/morphic-eq-interpreters/docs/modules/interpreters.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const modelEqInterpreter: >>() => ModelAlgebraRefined1<"EqURI", Env> & ModelAlgebraNewtype1<"EqURI", Env> & ModelAlgebraUnknown1<"EqURI", Env> & ModelAlgebraPrimitive1<"EqURI", Env> & ModelAlgebraIntersection1<"EqURI", Env> & ModelAlgebraObject1<"EqURI", Env> & ModelAlgebraTaggedUnions1<"EqURI", Env> & ModelAlgebraRecursive1<"EqURI", Env> & ModelAlgebraStrMap1<"EqURI", Env> & ModelAlgebraSet1<"EqURI", Env> = ... +export const modelEqInterpreter: >>>() => ModelAlgebraRefined<"EqURI", Env> & ModelAlgebraNewtype<"EqURI", Env> & ModelAlgebraUnknown<"EqURI", Env> & ModelAlgebraPrimitive<"EqURI", Env> & ModelAlgebraIntersection<"EqURI", Env> & ModelAlgebraObject<"EqURI", Env> & ModelAlgebraTaggedUnions<"EqURI", Env> & ModelAlgebraRecursive<"EqURI", Env> & ModelAlgebraStrMap<"EqURI", Env> & ModelAlgebraSet<"EqURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-eq-interpreters/docs/modules/model/intersections.ts.md b/packages/morphic-eq-interpreters/docs/modules/model/intersections.ts.md index b2d81122..2aedb523 100644 --- a/packages/morphic-eq-interpreters/docs/modules/model/intersections.ts.md +++ b/packages/morphic-eq-interpreters/docs/modules/model/intersections.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const eqIntersectionInterpreter: >>() => ModelAlgebraIntersection1<"EqURI", Env> = ... +export const eqIntersectionInterpreter: >>>() => ModelAlgebraIntersection<"EqURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-eq-interpreters/docs/modules/model/newtype.ts.md b/packages/morphic-eq-interpreters/docs/modules/model/newtype.ts.md index f3e51c27..e0d690b0 100644 --- a/packages/morphic-eq-interpreters/docs/modules/model/newtype.ts.md +++ b/packages/morphic-eq-interpreters/docs/modules/model/newtype.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const eqNewtypeInterpreter: >>() => ModelAlgebraNewtype1<"EqURI", Env> = ... +export const eqNewtypeInterpreter: >>>() => ModelAlgebraNewtype<"EqURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-eq-interpreters/docs/modules/model/object.ts.md b/packages/morphic-eq-interpreters/docs/modules/model/object.ts.md index 220ba4db..cdea741a 100644 --- a/packages/morphic-eq-interpreters/docs/modules/model/object.ts.md +++ b/packages/morphic-eq-interpreters/docs/modules/model/object.ts.md @@ -18,7 +18,7 @@ parent: Modules **Signature** ```ts -export const eqObjectInterpreter: >>() => ModelAlgebraObject1<"EqURI", Env> = ... +export const eqObjectInterpreter: >>>() => ModelAlgebraObject<"EqURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-eq-interpreters/docs/modules/model/primitives.ts.md b/packages/morphic-eq-interpreters/docs/modules/model/primitives.ts.md index c66ed91f..afa7c661 100644 --- a/packages/morphic-eq-interpreters/docs/modules/model/primitives.ts.md +++ b/packages/morphic-eq-interpreters/docs/modules/model/primitives.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const eqPrimitiveInterpreter: >>() => ModelAlgebraPrimitive1<"EqURI", Env> = ... +export const eqPrimitiveInterpreter: >>>() => ModelAlgebraPrimitive<"EqURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-eq-interpreters/docs/modules/model/recursive.ts.md b/packages/morphic-eq-interpreters/docs/modules/model/recursive.ts.md index d603611b..7e8df0b9 100644 --- a/packages/morphic-eq-interpreters/docs/modules/model/recursive.ts.md +++ b/packages/morphic-eq-interpreters/docs/modules/model/recursive.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const eqRecursiveInterpreter: >>() => ModelAlgebraRecursive1<"EqURI", Env> = ... +export const eqRecursiveInterpreter: >>>() => ModelAlgebraRecursive<"EqURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-eq-interpreters/docs/modules/model/refined.ts.md b/packages/morphic-eq-interpreters/docs/modules/model/refined.ts.md index 1c9d7971..cf46ba11 100644 --- a/packages/morphic-eq-interpreters/docs/modules/model/refined.ts.md +++ b/packages/morphic-eq-interpreters/docs/modules/model/refined.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const eqRefinedInterpreter: >>() => ModelAlgebraRefined1<"EqURI", Env> = ... +export const eqRefinedInterpreter: >>>() => ModelAlgebraRefined<"EqURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-eq-interpreters/docs/modules/model/set.ts.md b/packages/morphic-eq-interpreters/docs/modules/model/set.ts.md index ac9e278b..fa61fb87 100644 --- a/packages/morphic-eq-interpreters/docs/modules/model/set.ts.md +++ b/packages/morphic-eq-interpreters/docs/modules/model/set.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const eqSetInterpreter: >>() => ModelAlgebraSet1<"EqURI", Env> = ... +export const eqSetInterpreter: >>>() => ModelAlgebraSet<"EqURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-eq-interpreters/docs/modules/model/str-map.ts.md b/packages/morphic-eq-interpreters/docs/modules/model/str-map.ts.md index 2fd546a6..8f0fcb22 100644 --- a/packages/morphic-eq-interpreters/docs/modules/model/str-map.ts.md +++ b/packages/morphic-eq-interpreters/docs/modules/model/str-map.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const eqStrMapInterpreter: >>() => ModelAlgebraStrMap1<"EqURI", Env> = ... +export const eqStrMapInterpreter: >>>() => ModelAlgebraStrMap<"EqURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-eq-interpreters/docs/modules/model/tagged-unions.ts.md b/packages/morphic-eq-interpreters/docs/modules/model/tagged-unions.ts.md index 23cb0c5d..be2c3f8a 100644 --- a/packages/morphic-eq-interpreters/docs/modules/model/tagged-unions.ts.md +++ b/packages/morphic-eq-interpreters/docs/modules/model/tagged-unions.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const eqTaggedUnionInterpreter: >>() => ModelAlgebraTaggedUnions1<"EqURI", Env> = ... +export const eqTaggedUnionInterpreter: >>>() => ModelAlgebraTaggedUnions<"EqURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-eq-interpreters/docs/modules/model/unknown.ts.md b/packages/morphic-eq-interpreters/docs/modules/model/unknown.ts.md index 866e0c9b..7c738b25 100644 --- a/packages/morphic-eq-interpreters/docs/modules/model/unknown.ts.md +++ b/packages/morphic-eq-interpreters/docs/modules/model/unknown.ts.md @@ -30,7 +30,7 @@ Added in v0.0.1 **Signature** ```ts -export const eqUnknownInterpreter: >>() => ModelAlgebraUnknown1<"EqURI", Env> = ... +export const eqUnknownInterpreter: >>>() => ModelAlgebraUnknown<"EqURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-eq-interpreters/package.json b/packages/morphic-eq-interpreters/package.json index 5eeb583e..e581aeb6 100644 --- a/packages/morphic-eq-interpreters/package.json +++ b/packages/morphic-eq-interpreters/package.json @@ -1,6 +1,6 @@ { "name": "@morphic-ts/eq-interpreters", - "version": "3.0.0-alpha.0", + "version": "3.0.0-alpha.2", "description": "Morphic Eq (fp-ts) package for equality", "author": "Stéphane Le Dorze ", "homepage": "", @@ -21,13 +21,13 @@ "es6" ], "dependencies": { - "@morphic-ts/algebras": "^3.0.0-alpha.0", - "@morphic-ts/common": "^3.0.0-alpha.0", - "@morphic-ts/model-algebras": "^3.0.0-alpha.0", + "@morphic-ts/algebras": "^3.0.0-alpha.2", + "@morphic-ts/common": "^3.0.0-alpha.2", + "@morphic-ts/model-algebras": "^3.0.0-alpha.2", "fast-equals": "^2.0.0" }, "devDependencies": { - "@morphic-ts/summoners": "^3.0.0-alpha.0", + "@morphic-ts/summoners": "^3.0.0-alpha.2", "fp-ts": "^2.5.3", "io-ts": "^2.1.3", "io-ts-types": "^0.5.6", diff --git a/packages/morphic-eq-interpreters/src/config.ts b/packages/morphic-eq-interpreters/src/config.ts index 7588e6bb..2bfb6962 100644 --- a/packages/morphic-eq-interpreters/src/config.ts +++ b/packages/morphic-eq-interpreters/src/config.ts @@ -1,5 +1,7 @@ import { getApplyConfig } from '@morphic-ts/common/lib/config' + import { EqURI } from './hkt' + export * from './model' // to thread type level augmentations export { /** diff --git a/packages/morphic-eq-interpreters/src/hkt.ts b/packages/morphic-eq-interpreters/src/hkt.ts index 215c5822..7f5e9e2a 100644 --- a/packages/morphic-eq-interpreters/src/hkt.ts +++ b/packages/morphic-eq-interpreters/src/hkt.ts @@ -25,7 +25,7 @@ export class EqType { } declare module '@morphic-ts/common/lib/HKT' { - interface URItoKind { + interface URItoKind { [EqURI]: (env: R) => EqType } } diff --git a/packages/morphic-eq-interpreters/src/interpreters.ts b/packages/morphic-eq-interpreters/src/interpreters.ts index 1269946d..83160734 100644 --- a/packages/morphic-eq-interpreters/src/interpreters.ts +++ b/packages/morphic-eq-interpreters/src/interpreters.ts @@ -1,15 +1,17 @@ -import { merge, memo } from '@morphic-ts/common/lib/utils' -import { eqRefinedInterpreter } from './model/refined' -import { eqNewtypeInterpreter } from './model/newtype' -import { eqUnknownInterpreter } from './model/unknown' -import { eqPrimitiveInterpreter } from './model/primitives' +import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { memo, merge } from '@morphic-ts/common/lib/utils' + import { eqIntersectionInterpreter } from './model/intersections' +import { eqNewtypeInterpreter } from './model/newtype' import { eqObjectInterpreter } from './model/object' -import { eqTaggedUnionInterpreter } from './model/tagged-unions' +import { eqPrimitiveInterpreter } from './model/primitives' import { eqRecursiveInterpreter } from './model/recursive' -import { eqStrMapInterpreter } from './model/str-map' +import { eqRefinedInterpreter } from './model/refined' import { eqSetInterpreter } from './model/set' -import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { eqStrMapInterpreter } from './model/str-map' +import { eqTaggedUnionInterpreter } from './model/tagged-unions' +import { eqUnknownInterpreter } from './model/unknown' + export * from './hkt' /** diff --git a/packages/morphic-eq-interpreters/src/model/intersections.ts b/packages/morphic-eq-interpreters/src/model/intersections.ts index f4689d14..bafd3e05 100644 --- a/packages/morphic-eq-interpreters/src/model/intersections.ts +++ b/packages/morphic-eq-interpreters/src/model/intersections.ts @@ -1,14 +1,15 @@ -import type { ModelAlgebraIntersection1 } from '@morphic-ts/model-algebras/lib/intersections' import type { AnyEnv } from '@morphic-ts/common/lib/config' -import { monoidAll, fold } from 'fp-ts/Monoid' -import { EqType, EqURI } from '../hkt' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraIntersection } from '@morphic-ts/model-algebras/lib/intersections' +import { fold, monoidAll } from 'fp-ts/Monoid' + +import { EqType, EqURI } from '../hkt' /** * @since 0.0.1 */ export const eqIntersectionInterpreter = memo( - (): ModelAlgebraIntersection1 => ({ + (): ModelAlgebraIntersection => ({ _F: EqURI, intersection: (types: ((env: Env) => EqType)[]) => (env: Env) => { const equals = types.map(getEq => getEq(env).eq.equals) diff --git a/packages/morphic-eq-interpreters/src/model/newtype.ts b/packages/morphic-eq-interpreters/src/model/newtype.ts index 56410639..998ca45f 100644 --- a/packages/morphic-eq-interpreters/src/model/newtype.ts +++ b/packages/morphic-eq-interpreters/src/model/newtype.ts @@ -1,15 +1,18 @@ -import type { ModelAlgebraNewtype1 } from '@morphic-ts/model-algebras/lib/newtype' import type { AnyEnv } from '@morphic-ts/common/lib/config' -import { EqURI, EqType } from '../hkt' -import { eqApplyConfig } from '../config' import { memo } from '@morphic-ts/common/lib/utils' +import type { AnyNewtype, ModelAlgebraNewtype, NewtypeA } from '@morphic-ts/model-algebras/lib/newtype' +import type { Eq } from 'fp-ts/lib/Eq' + +import { eqApplyConfig } from '../config' +import { EqType, EqURI } from '../hkt' +const coerce = (e: Eq>): Eq => e as Eq /** * @since 0.0.1 */ export const eqNewtypeInterpreter = memo( - (): ModelAlgebraNewtype1 => ({ + (): ModelAlgebraNewtype => ({ _F: EqURI, - newtype: () => (getEq, config) => env => new EqType(eqApplyConfig(config)(getEq(env).eq, env)) + newtype: () => (getEq, config) => env => new EqType(eqApplyConfig(config)(coerce(getEq(env).eq), env)) }) ) diff --git a/packages/morphic-eq-interpreters/src/model/object.ts b/packages/morphic-eq-interpreters/src/model/object.ts index 25dfcf8e..193b38e5 100644 --- a/packages/morphic-eq-interpreters/src/model/object.ts +++ b/packages/morphic-eq-interpreters/src/model/object.ts @@ -1,10 +1,11 @@ -import type { ModelAlgebraObject1 } from '@morphic-ts/model-algebras/lib/object' -import { EqType, EqURI } from '../hkt' -import { projectFieldWithEnv, memo, mapRecord } from '@morphic-ts/common/lib/utils' -import { getStructEq } from 'fp-ts/Eq' +import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { mapRecord, memo, projectFieldWithEnv } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraObject } from '@morphic-ts/model-algebras/lib/object' import type { Eq } from 'fp-ts/Eq' +import { getStructEq } from 'fp-ts/Eq' + import { eqApplyConfig } from '../config' -import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { EqType, EqURI } from '../hkt' const asPartialEq = (x: Eq): Eq> => x as any @@ -18,15 +19,15 @@ export const eqOrUndefined = (eq: Eq): Eq => ({ * @since 0.0.1 */ export const eqObjectInterpreter = memo( - (): ModelAlgebraObject1 => ({ + (): ModelAlgebraObject => ({ _F: EqURI, interface: (props, _name, config) => env => - new EqType(eqApplyConfig(config)(getStructEq(projectFieldWithEnv(props, env)('eq')), env)), + new EqType(eqApplyConfig(config)(getStructEq(projectFieldWithEnv(props as any, env)('eq')), env)), // relies on Eq whereas we need Eq> (but works - covered by tests) partial: (props, _name, config) => env => new EqType( eqApplyConfig(config)( - asPartialEq(getStructEq(mapRecord(projectFieldWithEnv(props, env)('eq'), eqOrUndefined))), + asPartialEq(getStructEq(mapRecord(projectFieldWithEnv(props as any, env)('eq'), eqOrUndefined))), env ) ), diff --git a/packages/morphic-eq-interpreters/src/model/primitives.ts b/packages/morphic-eq-interpreters/src/model/primitives.ts index 632edbd1..1a60a72c 100644 --- a/packages/morphic-eq-interpreters/src/model/primitives.ts +++ b/packages/morphic-eq-interpreters/src/model/primitives.ts @@ -1,20 +1,21 @@ +import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraPrimitive } from '@morphic-ts/model-algebras/lib/primitives' +import { getEq as EgetEq } from 'fp-ts/Either' +import { eq, eqBoolean, eqNumber, eqStrict, eqString } from 'fp-ts/Eq' import { getEq as OgetEq } from 'fp-ts/Option' import { getEq as AgetEq } from 'fp-ts/ReadonlyArray' import { getEq as NEAgetEq } from 'fp-ts/ReadonlyNonEmptyArray' -import { getEq as EgetEq } from 'fp-ts/Either' -import { eq, eqNumber, eqString, eqBoolean, eqStrict } from 'fp-ts/Eq' -import type { ModelAlgebraPrimitive1 } from '@morphic-ts/model-algebras/lib/primitives' -import { EqType, EqURI } from '../hkt' -import { eqApplyConfig } from '../config' -import type { AnyEnv } from '@morphic-ts/common/lib/config' -import { memo } from '@morphic-ts/common/lib/utils' import type { UUID } from 'io-ts-types/lib/UUID' +import { eqApplyConfig } from '../config' +import { EqType, EqURI } from '../hkt' + /** * @since 0.0.1 */ export const eqPrimitiveInterpreter = memo( - (): ModelAlgebraPrimitive1 => ({ + (): ModelAlgebraPrimitive => ({ _F: EqURI, date: config => env => new EqType( diff --git a/packages/morphic-eq-interpreters/src/model/recursive.ts b/packages/morphic-eq-interpreters/src/model/recursive.ts index 6f9ab657..f56ab834 100644 --- a/packages/morphic-eq-interpreters/src/model/recursive.ts +++ b/packages/morphic-eq-interpreters/src/model/recursive.ts @@ -1,13 +1,14 @@ -import { EqType, EqURI } from '../hkt' -import type { ModelAlgebraRecursive1 } from '@morphic-ts/model-algebras/lib/recursive' -import { memo } from '@morphic-ts/common/lib/utils' import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraRecursive } from '@morphic-ts/model-algebras/lib/recursive' + +import { EqType, EqURI } from '../hkt' /** * @since 0.0.1 */ export const eqRecursiveInterpreter = memo( - (): ModelAlgebraRecursive1 => ({ + (): ModelAlgebraRecursive => ({ _F: EqURI, recursive: a => { const get = memo(() => a(res)) diff --git a/packages/morphic-eq-interpreters/src/model/refined.ts b/packages/morphic-eq-interpreters/src/model/refined.ts index c62218d1..cf918b4f 100644 --- a/packages/morphic-eq-interpreters/src/model/refined.ts +++ b/packages/morphic-eq-interpreters/src/model/refined.ts @@ -1,14 +1,15 @@ -import type { ModelAlgebraRefined1 } from '@morphic-ts/model-algebras/lib/refined' -import { EqURI, EqType } from '../hkt' -import { eqApplyConfig } from '../config' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraRefined } from '@morphic-ts/model-algebras/lib/refined' + +import { eqApplyConfig } from '../config' +import { EqType, EqURI } from '../hkt' /** * @since 0.0.1 */ export const eqRefinedInterpreter = memo( - (): ModelAlgebraRefined1 => ({ + (): ModelAlgebraRefined => ({ _F: EqURI, refined: (getEq, _ref, _name, config) => env => new EqType(eqApplyConfig(config)(getEq(env).eq, env)) }) diff --git a/packages/morphic-eq-interpreters/src/model/set.ts b/packages/morphic-eq-interpreters/src/model/set.ts index da633bed..0c6356fa 100644 --- a/packages/morphic-eq-interpreters/src/model/set.ts +++ b/packages/morphic-eq-interpreters/src/model/set.ts @@ -1,14 +1,15 @@ -import { getEq as SgetEq } from 'fp-ts/Set' -import type { ModelAlgebraSet1 } from '@morphic-ts/model-algebras/lib/set' -import { EqType, EqURI } from '../hkt' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraSet } from '@morphic-ts/model-algebras/lib/set' +import { getEq as SgetEq } from 'fp-ts/Set' + +import { EqType, EqURI } from '../hkt' /** * @since 0.0.1 */ export const eqSetInterpreter = memo( - (): ModelAlgebraSet1 => ({ + (): ModelAlgebraSet => ({ _F: EqURI, set: getEq => env => new EqType(SgetEq(getEq(env).eq)) }) diff --git a/packages/morphic-eq-interpreters/src/model/str-map.ts b/packages/morphic-eq-interpreters/src/model/str-map.ts index 3593aabb..cb5967a9 100644 --- a/packages/morphic-eq-interpreters/src/model/str-map.ts +++ b/packages/morphic-eq-interpreters/src/model/str-map.ts @@ -1,15 +1,16 @@ -import { getEq as RgetEq } from 'fp-ts/Record' -import type { ModelAlgebraStrMap1 } from '@morphic-ts/model-algebras/lib/str-map' -import { EqType, EqURI } from '../hkt' -import { eqApplyConfig } from '../config' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraStrMap } from '@morphic-ts/model-algebras/lib/str-map' +import { getEq as RgetEq } from 'fp-ts/Record' + +import { eqApplyConfig } from '../config' +import { EqType, EqURI } from '../hkt' /** * @since 0.0.1 */ export const eqStrMapInterpreter = memo( - (): ModelAlgebraStrMap1 => ({ + (): ModelAlgebraStrMap => ({ _F: EqURI, strMap: (getCodomain, config) => env => new EqType(eqApplyConfig(config)(RgetEq(getCodomain(env).eq), env)), record: (_getDomain, getCodomain, config) => env => diff --git a/packages/morphic-eq-interpreters/src/model/tagged-unions.ts b/packages/morphic-eq-interpreters/src/model/tagged-unions.ts index 7975870c..34331b34 100644 --- a/packages/morphic-eq-interpreters/src/model/tagged-unions.ts +++ b/packages/morphic-eq-interpreters/src/model/tagged-unions.ts @@ -1,24 +1,25 @@ -import type { ModelAlgebraTaggedUnions1 } from '@morphic-ts/model-algebras/lib/tagged-unions' -import { EqType, EqURI } from '../hkt' -import { mapRecord, memo } from '@morphic-ts/common/lib/utils' import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { mapRecord, memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraTaggedUnions } from '@morphic-ts/model-algebras/lib/tagged-unions' + +import { EqType, EqURI } from '../hkt' /** * @since 0.0.1 */ export const eqTaggedUnionInterpreter = memo( - (): ModelAlgebraTaggedUnions1 => ({ + (): ModelAlgebraTaggedUnions => ({ _F: EqURI, taggedUnion: (tag, types, _name, _config) => env => { // TODO: add customize - const equals = mapRecord(types, a => a(env).eq.equals) + const equals = mapRecord(types, a => (a as any)(env).eq.equals) return new EqType({ equals: (a, b): boolean => { if (a === b) { return true } else { - const aTag = a[tag] - return aTag === b[tag] ? equals[aTag](a, b) : false + const aTag = (a as any)[tag] + return aTag === (b as any)[tag] ? (equals as any)[aTag](a, b) : false } } }) diff --git a/packages/morphic-eq-interpreters/src/model/unknown.ts b/packages/morphic-eq-interpreters/src/model/unknown.ts index 67a4fdee..4c215148 100644 --- a/packages/morphic-eq-interpreters/src/model/unknown.ts +++ b/packages/morphic-eq-interpreters/src/model/unknown.ts @@ -1,10 +1,11 @@ -import type { ModelAlgebraUnknown1 } from '@morphic-ts/model-algebras/lib/unknown' -import { EqType, EqURI } from '../hkt' -import type { Eq } from 'fp-ts/Eq' -import { circularDeepEqual } from 'fast-equals' -import { eqApplyConfig } from '../config' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraUnknown } from '@morphic-ts/model-algebras/lib/unknown' +import { circularDeepEqual } from 'fast-equals' +import type { Eq } from 'fp-ts/Eq' + +import { eqApplyConfig } from '../config' +import { EqType, EqURI } from '../hkt' /** * @since 0.0.1 @@ -17,7 +18,7 @@ export interface CustomizeUnknown { * @since 0.0.1 */ export const eqUnknownInterpreter = memo( - (): ModelAlgebraUnknown1 => ({ + (): ModelAlgebraUnknown => ({ _F: EqURI, unknown: cfg => env => { const config = eqApplyConfig(cfg) diff --git a/packages/morphic-eq-interpreters/test/eq-interpreter.spec.ts b/packages/morphic-eq-interpreters/test/eq-interpreter.spec.ts index 0e9eacde..2ecb05f8 100644 --- a/packages/morphic-eq-interpreters/test/eq-interpreter.spec.ts +++ b/packages/morphic-eq-interpreters/test/eq-interpreter.spec.ts @@ -1,11 +1,12 @@ import * as chai from 'chai' - +import type { Either } from 'fp-ts/Either' +import { left, right } from 'fp-ts/Either' import { fromEquals } from 'fp-ts/Eq' +import type { Option } from 'fp-ts/Option' +import { none, some } from 'fp-ts/Option' import type { Newtype } from 'newtype-ts' import { iso } from 'newtype-ts' -import type { Either } from 'fp-ts/Either' -import { left, right } from 'fp-ts/Either' -import { some, none, Option } from 'fp-ts/Option' + import { summonFor } from './summoner.spec' const { summon } = summonFor<{}>({}) @@ -186,13 +187,13 @@ describe('Eq', () => { it('both', () => { interface Foo { type: 'foo' - a: Option - b: number + a?: Option + b?: number } - const Foo = summon(F => + const Foo = summon(F => F.both( { - type: F.string() + type: F.stringLiteral('foo') }, { a: F.nullable(F.string()), @@ -204,7 +205,7 @@ describe('Eq', () => { const { eq } = Foo chai.assert.deepStrictEqual(eq.equals({ type: 'foo' }, { type: 'foo' }), true) - chai.assert.deepStrictEqual(eq.equals({ type: 'foo' }, { type: 'bar' }), false) + chai.assert.deepStrictEqual(eq.equals({ type: 'foo' }, ({ type: 'bar' } as any) as Foo), false) chai.assert.deepStrictEqual(eq.equals({ type: 'foo', a: some('foo') }, { type: 'foo', a: some('foo') }), true) chai.assert.deepStrictEqual(eq.equals({ type: 'foo', a: none }, { type: 'foo', a: none }), true) chai.assert.deepStrictEqual(eq.equals({ type: 'foo', a: none }, { type: 'foo', a: some('foo') }), false) @@ -234,7 +235,7 @@ describe('Eq', () => { c: string d: number } - const Bar = summon(F => + const Bar = summon(F => F.interface( { type: F.stringLiteral('bar'), diff --git a/packages/morphic-eq-interpreters/test/summoner.spec.ts b/packages/morphic-eq-interpreters/test/summoner.spec.ts index 23000c6b..e167dc8b 100644 --- a/packages/morphic-eq-interpreters/test/summoner.spec.ts +++ b/packages/morphic-eq-interpreters/test/summoner.spec.ts @@ -1,26 +1,26 @@ -import { cacheUnaryFunction } from '@morphic-ts/common/lib/core' - -import type * as U from '@morphic-ts/summoners' -import type { ExtractEnv, SummonerOps } from '@morphic-ts/summoners' -import { makeSummoner } from '@morphic-ts/summoners' -import type { AnyEnv } from '@morphic-ts/common/lib/config' - -import type { InferredAlgebra, InferredProgram } from '@morphic-ts/summoners' import type { GetAlgebra } from '@morphic-ts/algebras/lib/core' - +import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { cacheUnaryFunction } from '@morphic-ts/common/lib/core' +import type { URIS } from '@morphic-ts/common/lib/HKT' import type { IntersectionURI } from '@morphic-ts/model-algebras/lib/intersections' +import type { NewtypeURI } from '@morphic-ts/model-algebras/lib/newtype' import type { ObjectURI } from '@morphic-ts/model-algebras/lib/object' import type { PrimitiveURI } from '@morphic-ts/model-algebras/lib/primitives' import type { RecursiveURI } from '@morphic-ts/model-algebras/lib/recursive' +import type { RefinedURI } from '@morphic-ts/model-algebras/lib/refined' import type { SetURI } from '@morphic-ts/model-algebras/lib/set' import type { StrMapURI } from '@morphic-ts/model-algebras/lib/str-map' import type { TaggedUnionsURI } from '@morphic-ts/model-algebras/lib/tagged-unions' import type { UnknownURI } from '@morphic-ts/model-algebras/lib/unknown' -import type { NewtypeURI } from '@morphic-ts/model-algebras/lib/newtype' -import type { RefinedURI } from '@morphic-ts/model-algebras/lib/refined' -import type { AnyConfigEnv } from '@morphic-ts/summoners' -import { Eq } from 'fp-ts/Eq' -import { modelEqInterpreter, EqURI } from '../src' +// eslint-disable-next-line import/no-duplicates +import type * as U from '@morphic-ts/summoners' +// eslint-disable-next-line import/no-duplicates +import type { AnyConfigEnv, ExtractEnv, InferredAlgebra, InferredProgram, SummonerOps } from '@morphic-ts/summoners' +import { makeSummoner } from '@morphic-ts/summoners' +import type { Eq } from 'fp-ts/Eq' + +import type { EqURI } from '../src' +import { modelEqInterpreter } from '../src' /** * @since 0.0.1 @@ -34,7 +34,7 @@ export type ProgramUnionURI = typeof ProgramUnionURI /** * @since 0.0.1 */ -export interface AlgebraUnion extends InferredAlgebra {} +export interface AlgebraUnion extends InferredAlgebra {} /** * @since 0.0.1 */ @@ -55,7 +55,7 @@ declare module '@morphic-ts/summoners/lib/ProgramType' { | RefinedURI > } - interface ProgramAlgebra { + interface ProgramAlgebra { [ProgramUnionURI]: AlgebraUnion } interface ProgramType { @@ -107,7 +107,7 @@ export const AsUOpaque = () => >(x: X): UM = * @since 0.0.1 */ export interface Summoner extends U.Summoners { - (F: U.ProgramType[ProgramUnionURI]): M + // (F: U.ProgramType[ProgramUnionURI]): M } /** diff --git a/packages/morphic-fastcheck-interpreters/docs/modules/interpreters.ts.md b/packages/morphic-fastcheck-interpreters/docs/modules/interpreters.ts.md index b305d52e..2c6eff67 100644 --- a/packages/morphic-fastcheck-interpreters/docs/modules/interpreters.ts.md +++ b/packages/morphic-fastcheck-interpreters/docs/modules/interpreters.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const modelFastCheckInterpreter: >>() => ModelAlgebraRefined1<"FastCheckURI", Env> & ModelAlgebraNewtype1<"FastCheckURI", Env> & ModelAlgebraUnknown1<"FastCheckURI", Env> & ModelAlgebraPrimitive1<"FastCheckURI", Env> & ModelAlgebraIntersection1<"FastCheckURI", Env> & ModelAlgebraObject1<"FastCheckURI", Env> & ModelAlgebraUnions1<"FastCheckURI", Env> & ModelAlgebraTaggedUnions1<"FastCheckURI", Env> & ModelAlgebraRecursive1<"FastCheckURI", Env> & ModelAlgebraStrMap1<"FastCheckURI", Env> & ModelAlgebraSet1<"FastCheckURI", Env> = ... +export const modelFastCheckInterpreter: >>>() => ModelAlgebraRefined<"FastCheckURI", Env> & ModelAlgebraNewtype<"FastCheckURI", Env> & ModelAlgebraUnknown<"FastCheckURI", Env> & ModelAlgebraPrimitive<"FastCheckURI", Env> & ModelAlgebraIntersection<"FastCheckURI", Env> & ModelAlgebraObject<"FastCheckURI", Env> & ModelAlgebraUnions<"FastCheckURI", Env> & ModelAlgebraTaggedUnions<"FastCheckURI", Env> & ModelAlgebraRecursive<"FastCheckURI", Env> & ModelAlgebraStrMap<"FastCheckURI", Env> & ModelAlgebraSet<"FastCheckURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-fastcheck-interpreters/docs/modules/model/intersections.ts.md b/packages/morphic-fastcheck-interpreters/docs/modules/model/intersections.ts.md index 7b53b738..8604d276 100644 --- a/packages/morphic-fastcheck-interpreters/docs/modules/model/intersections.ts.md +++ b/packages/morphic-fastcheck-interpreters/docs/modules/model/intersections.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const fastCheckIntersectionInterpreter: >>() => ModelAlgebraIntersection1<"FastCheckURI", Env> = ... +export const fastCheckIntersectionInterpreter: >>>() => ModelAlgebraIntersection<"FastCheckURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-fastcheck-interpreters/docs/modules/model/newtype.ts.md b/packages/morphic-fastcheck-interpreters/docs/modules/model/newtype.ts.md index f51e3c62..8781cfd2 100644 --- a/packages/morphic-fastcheck-interpreters/docs/modules/model/newtype.ts.md +++ b/packages/morphic-fastcheck-interpreters/docs/modules/model/newtype.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const fastCheckNewtypeInterpreter: >>() => ModelAlgebraNewtype1<"FastCheckURI", Env> = ... +export const fastCheckNewtypeInterpreter: >>>() => ModelAlgebraNewtype<"FastCheckURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-fastcheck-interpreters/docs/modules/model/object.ts.md b/packages/morphic-fastcheck-interpreters/docs/modules/model/object.ts.md index 5323fe34..7ccf581e 100644 --- a/packages/morphic-fastcheck-interpreters/docs/modules/model/object.ts.md +++ b/packages/morphic-fastcheck-interpreters/docs/modules/model/object.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const fastCheckObjectInterpreter: >>() => ModelAlgebraObject1<"FastCheckURI", Env> = ... +export const fastCheckObjectInterpreter: >>>() => ModelAlgebraObject<"FastCheckURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-fastcheck-interpreters/docs/modules/model/primitives.ts.md b/packages/morphic-fastcheck-interpreters/docs/modules/model/primitives.ts.md index e217bf54..b1b86485 100644 --- a/packages/morphic-fastcheck-interpreters/docs/modules/model/primitives.ts.md +++ b/packages/morphic-fastcheck-interpreters/docs/modules/model/primitives.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const fastCheckPrimitiveInterpreter: >>() => ModelAlgebraPrimitive1<"FastCheckURI", Env> = ... +export const fastCheckPrimitiveInterpreter: >>>() => ModelAlgebraPrimitive<"FastCheckURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-fastcheck-interpreters/docs/modules/model/recursive.ts.md b/packages/morphic-fastcheck-interpreters/docs/modules/model/recursive.ts.md index b8d9b651..41869bee 100644 --- a/packages/morphic-fastcheck-interpreters/docs/modules/model/recursive.ts.md +++ b/packages/morphic-fastcheck-interpreters/docs/modules/model/recursive.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const fastCheckRecursiveInterpreter: >>() => ModelAlgebraRecursive1<"FastCheckURI", Env> = ... +export const fastCheckRecursiveInterpreter: >>>() => ModelAlgebraRecursive<"FastCheckURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-fastcheck-interpreters/docs/modules/model/refined.ts.md b/packages/morphic-fastcheck-interpreters/docs/modules/model/refined.ts.md index 380f0531..169000c7 100644 --- a/packages/morphic-fastcheck-interpreters/docs/modules/model/refined.ts.md +++ b/packages/morphic-fastcheck-interpreters/docs/modules/model/refined.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const fastCheckRefinedInterpreter: >>() => ModelAlgebraRefined1<"FastCheckURI", Env> = ... +export const fastCheckRefinedInterpreter: >>>() => ModelAlgebraRefined<"FastCheckURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-fastcheck-interpreters/docs/modules/model/set.ts.md b/packages/morphic-fastcheck-interpreters/docs/modules/model/set.ts.md index c67c195a..6746f8eb 100644 --- a/packages/morphic-fastcheck-interpreters/docs/modules/model/set.ts.md +++ b/packages/morphic-fastcheck-interpreters/docs/modules/model/set.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const fastCheckSetInterpreter: >>() => ModelAlgebraSet1<"FastCheckURI", Env> = ... +export const fastCheckSetInterpreter: >>>() => ModelAlgebraSet<"FastCheckURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-fastcheck-interpreters/docs/modules/model/str-map.ts.md b/packages/morphic-fastcheck-interpreters/docs/modules/model/str-map.ts.md index 42898aff..e3e17fc5 100644 --- a/packages/morphic-fastcheck-interpreters/docs/modules/model/str-map.ts.md +++ b/packages/morphic-fastcheck-interpreters/docs/modules/model/str-map.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const fastCheckStrMapInterpreter: >>() => ModelAlgebraStrMap1<"FastCheckURI", Env> = ... +export const fastCheckStrMapInterpreter: >>>() => ModelAlgebraStrMap<"FastCheckURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-fastcheck-interpreters/docs/modules/model/tagged-unions.ts.md b/packages/morphic-fastcheck-interpreters/docs/modules/model/tagged-unions.ts.md index 7c448665..b281469a 100644 --- a/packages/morphic-fastcheck-interpreters/docs/modules/model/tagged-unions.ts.md +++ b/packages/morphic-fastcheck-interpreters/docs/modules/model/tagged-unions.ts.md @@ -21,7 +21,7 @@ Beware: randomly generated recursive structure with high branching may not end e **Signature** ```ts -export const fastCheckTaggedUnionInterpreter: >>() => ModelAlgebraTaggedUnions1<"FastCheckURI", Env> = ... +export const fastCheckTaggedUnionInterpreter: >>>() => ModelAlgebraTaggedUnions<"FastCheckURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-fastcheck-interpreters/docs/modules/model/unions.ts.md b/packages/morphic-fastcheck-interpreters/docs/modules/model/unions.ts.md index 8445d457..d46bb7bf 100644 --- a/packages/morphic-fastcheck-interpreters/docs/modules/model/unions.ts.md +++ b/packages/morphic-fastcheck-interpreters/docs/modules/model/unions.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const fastCheckUnionInterpreter: >>() => ModelAlgebraUnions1<"FastCheckURI", Env> = ... +export const fastCheckUnionInterpreter: >>>() => ModelAlgebraUnions<"FastCheckURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-fastcheck-interpreters/docs/modules/model/unknown.ts.md b/packages/morphic-fastcheck-interpreters/docs/modules/model/unknown.ts.md index 93b9953d..14d5fb7d 100644 --- a/packages/morphic-fastcheck-interpreters/docs/modules/model/unknown.ts.md +++ b/packages/morphic-fastcheck-interpreters/docs/modules/model/unknown.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const fastCheckUnknownInterpreter: >>() => ModelAlgebraUnknown1<"FastCheckURI", Env> = ... +export const fastCheckUnknownInterpreter: >>>() => ModelAlgebraUnknown<"FastCheckURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-fastcheck-interpreters/package.json b/packages/morphic-fastcheck-interpreters/package.json index f5d2530b..f16a4cd0 100644 --- a/packages/morphic-fastcheck-interpreters/package.json +++ b/packages/morphic-fastcheck-interpreters/package.json @@ -1,6 +1,6 @@ { "name": "@morphic-ts/fastcheck-interpreters", - "version": "3.0.0-alpha.0", + "version": "3.0.0-alpha.2", "description": "Morphic fastcheck package for property based testing", "author": "Stéphane Le Dorze ", "homepage": "", @@ -21,12 +21,12 @@ "es6" ], "dependencies": { - "@morphic-ts/algebras": "^3.0.0-alpha.0", - "@morphic-ts/common": "^3.0.0-alpha.0", - "@morphic-ts/model-algebras": "^3.0.0-alpha.0" + "@morphic-ts/algebras": "^3.0.0-alpha.2", + "@morphic-ts/common": "^3.0.0-alpha.2", + "@morphic-ts/model-algebras": "^3.0.0-alpha.2" }, "devDependencies": { - "@morphic-ts/summoners": "^3.0.0-alpha.0", + "@morphic-ts/summoners": "^3.0.0-alpha.2", "fast-check": "^2.6.0", "fp-ts": "^2.5.3", "io-ts": "^2.1.3", diff --git a/packages/morphic-fastcheck-interpreters/src/config.ts b/packages/morphic-fastcheck-interpreters/src/config.ts index 5640f130..c8788faf 100644 --- a/packages/morphic-fastcheck-interpreters/src/config.ts +++ b/packages/morphic-fastcheck-interpreters/src/config.ts @@ -1,5 +1,7 @@ import { getApplyConfig } from '@morphic-ts/common/lib/config' + import { FastCheckURI } from './hkt' + export * from './model' export { /** diff --git a/packages/morphic-fastcheck-interpreters/src/hkt.ts b/packages/morphic-fastcheck-interpreters/src/hkt.ts index 49fe8c39..912d81c8 100644 --- a/packages/morphic-fastcheck-interpreters/src/hkt.ts +++ b/packages/morphic-fastcheck-interpreters/src/hkt.ts @@ -25,7 +25,7 @@ export class FastCheckType { } declare module '@morphic-ts/common/lib/HKT' { - interface URItoKind { + interface URItoKind { [FastCheckURI]: (env: R) => FastCheckType } } diff --git a/packages/morphic-fastcheck-interpreters/src/interpreters.ts b/packages/morphic-fastcheck-interpreters/src/interpreters.ts index c0573e30..da17985c 100644 --- a/packages/morphic-fastcheck-interpreters/src/interpreters.ts +++ b/packages/morphic-fastcheck-interpreters/src/interpreters.ts @@ -1,16 +1,17 @@ +import type { AnyEnv } from '@morphic-ts/common/lib/config' import { merge } from '@morphic-ts/common/lib/utils' -import { fastCheckRefinedInterpreter } from './model/refined' -import { fastCheckNewtypeInterpreter } from './model/newtype' -import { fastCheckUnknownInterpreter } from './model/unknown' -import { fastCheckPrimitiveInterpreter } from './model/primitives' + import { fastCheckIntersectionInterpreter } from './model/intersections' +import { fastCheckNewtypeInterpreter } from './model/newtype' import { fastCheckObjectInterpreter } from './model/object' -import { fastCheckUnionInterpreter } from './model/unions' -import { fastCheckTaggedUnionInterpreter } from './model/tagged-unions' +import { fastCheckPrimitiveInterpreter } from './model/primitives' import { fastCheckRecursiveInterpreter } from './model/recursive' -import { fastCheckStrMapInterpreter } from './model/str-map' +import { fastCheckRefinedInterpreter } from './model/refined' import { fastCheckSetInterpreter } from './model/set' -import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { fastCheckStrMapInterpreter } from './model/str-map' +import { fastCheckTaggedUnionInterpreter } from './model/tagged-unions' +import { fastCheckUnionInterpreter } from './model/unions' +import { fastCheckUnknownInterpreter } from './model/unknown' export * from './hkt' diff --git a/packages/morphic-fastcheck-interpreters/src/model/intersections.ts b/packages/morphic-fastcheck-interpreters/src/model/intersections.ts index 1ff4d6af..c72d888a 100644 --- a/packages/morphic-fastcheck-interpreters/src/model/intersections.ts +++ b/packages/morphic-fastcheck-interpreters/src/model/intersections.ts @@ -1,14 +1,15 @@ -import { genericTuple } from 'fast-check' -import { FastCheckType, FastCheckURI } from '../hkt' -import type { ModelAlgebraIntersection1 } from '@morphic-ts/model-algebras/lib/intersections' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraIntersection } from '@morphic-ts/model-algebras/lib/intersections' +import { genericTuple } from 'fast-check' + +import { FastCheckType, FastCheckURI } from '../hkt' /** * @since 0.0.1 */ export const fastCheckIntersectionInterpreter = memo( - (): ModelAlgebraIntersection1 => ({ + (): ModelAlgebraIntersection => ({ _F: FastCheckURI, intersection: (items: ((env: Env) => FastCheckType)[]) => (env: Env) => new FastCheckType(genericTuple(items.map(getArb => getArb(env).arb)).map(all => Object.assign({}, ...all))) diff --git a/packages/morphic-fastcheck-interpreters/src/model/newtype.ts b/packages/morphic-fastcheck-interpreters/src/model/newtype.ts index 0ae2ea37..cc71dbd1 100644 --- a/packages/morphic-fastcheck-interpreters/src/model/newtype.ts +++ b/packages/morphic-fastcheck-interpreters/src/model/newtype.ts @@ -1,14 +1,15 @@ -import { FastCheckURI, FastCheckType } from '../hkt' -import type { ModelAlgebraNewtype1 } from '@morphic-ts/model-algebras/lib/newtype' -import { fastCheckApplyConfig } from '../config' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraNewtype } from '@morphic-ts/model-algebras/lib/newtype' + +import { fastCheckApplyConfig } from '../config' +import { FastCheckType, FastCheckURI } from '../hkt' /** * @since 0.0.1 */ export const fastCheckNewtypeInterpreter = memo( - (): ModelAlgebraNewtype1 => ({ + (): ModelAlgebraNewtype => ({ _F: FastCheckURI, newtype: () => (getArb, config) => env => new FastCheckType(fastCheckApplyConfig(config)(getArb(env).arb, env)) }) diff --git a/packages/morphic-fastcheck-interpreters/src/model/object.ts b/packages/morphic-fastcheck-interpreters/src/model/object.ts index bdc4c4cf..765ab614 100644 --- a/packages/morphic-fastcheck-interpreters/src/model/object.ts +++ b/packages/morphic-fastcheck-interpreters/src/model/object.ts @@ -1,34 +1,38 @@ -import { FastCheckType, FastCheckURI } from '../hkt' -import type { ModelAlgebraObject1 } from '@morphic-ts/model-algebras/lib/object' -import { projectFieldWithEnv } from '@morphic-ts/common/lib/utils' +import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { memo, projectFieldWithEnv } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraObject } from '@morphic-ts/model-algebras/lib/object' import { record } from 'fast-check' + import { fastCheckApplyConfig } from '../config' -import type { AnyEnv } from '@morphic-ts/common/lib/config' -import { memo } from '@morphic-ts/common/lib/utils' +import { FastCheckType, FastCheckURI } from '../hkt' /** * @since 0.0.1 */ export const fastCheckObjectInterpreter = memo( - (): ModelAlgebraObject1 => ({ + (): ModelAlgebraObject => ({ _F: FastCheckURI, partial: (props, _name, config) => env => new FastCheckType( fastCheckApplyConfig(config)( - record(projectFieldWithEnv(props, env)('arb'), { + record(projectFieldWithEnv(props as any, env)('arb'), { withDeletedKeys: true - }), + }) as any, env ) ), interface: (props, _name, config) => env => - new FastCheckType(fastCheckApplyConfig(config)(record(projectFieldWithEnv(props, env)('arb')), env)), + new FastCheckType( + fastCheckApplyConfig(config)(record(projectFieldWithEnv(props as any, env)('arb')) as any, env) + ), both: (props, partial, _name, config) => env => { const arbs = projectFieldWithEnv(props, env)('arb') const partialArbs = projectFieldWithEnv(partial, env)('arb') return new FastCheckType( fastCheckApplyConfig(config)( - record(arbs).chain(p => record(partialArbs, { withDeletedKeys: true }).map(pp => ({ ...p, ...pp }))), + record(arbs as any).chain(p => + record(partialArbs as any, { withDeletedKeys: true }).map(pp => ({ ...p, ...pp })) + ) as any, env ) ) diff --git a/packages/morphic-fastcheck-interpreters/src/model/primitives.ts b/packages/morphic-fastcheck-interpreters/src/model/primitives.ts index 79580095..f247cab7 100644 --- a/packages/morphic-fastcheck-interpreters/src/model/primitives.ts +++ b/packages/morphic-fastcheck-interpreters/src/model/primitives.ts @@ -1,19 +1,21 @@ -import { FastCheckType, FastCheckURI } from '../hkt' -import type { ModelAlgebraPrimitive1 } from '@morphic-ts/model-algebras/lib/primitives' -import { fromNullable, none, some } from 'fp-ts/Option' -import { constant, integer, boolean, string, float, oneof, array, option, bigInt, uuid, Arbitrary } from 'fast-check' -import { fastCheckApplyConfig } from '../config' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' -import type { UUID } from 'io-ts-types/lib/UUID' +import type { ModelAlgebraPrimitive } from '@morphic-ts/model-algebras/lib/primitives' +import type { Arbitrary } from 'fast-check' +import { array, bigInt, boolean, constant, float, integer, oneof, option, string, uuid } from 'fast-check' import { left, right } from 'fp-ts/Either' import { cons } from 'fp-ts/NonEmptyArray' +import { fromNullable, none, some } from 'fp-ts/Option' +import type { UUID } from 'io-ts-types/lib/UUID' + +import { fastCheckApplyConfig } from '../config' +import { FastCheckType, FastCheckURI } from '../hkt' /** * @since 0.0.1 */ export const fastCheckPrimitiveInterpreter = memo( - (): ModelAlgebraPrimitive1 => ({ + (): ModelAlgebraPrimitive => ({ _F: FastCheckURI, date: configs => env => new FastCheckType( diff --git a/packages/morphic-fastcheck-interpreters/src/model/recursive.ts b/packages/morphic-fastcheck-interpreters/src/model/recursive.ts index b35e197b..28ed27d0 100644 --- a/packages/morphic-fastcheck-interpreters/src/model/recursive.ts +++ b/packages/morphic-fastcheck-interpreters/src/model/recursive.ts @@ -1,14 +1,15 @@ -import { FastCheckType, FastCheckURI } from '../hkt' -import type { ModelAlgebraRecursive1 } from '@morphic-ts/model-algebras/lib/recursive' +import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraRecursive } from '@morphic-ts/model-algebras/lib/recursive' import { constant } from 'fast-check' -import type { AnyEnv } from '@morphic-ts/common/lib/config' + +import { FastCheckType, FastCheckURI } from '../hkt' /** * @since 0.0.1 */ export const fastCheckRecursiveInterpreter = memo( - (): ModelAlgebraRecursive1 => ({ + (): ModelAlgebraRecursive => ({ _F: FastCheckURI, recursive: f => { type FA = ReturnType diff --git a/packages/morphic-fastcheck-interpreters/src/model/refined.ts b/packages/morphic-fastcheck-interpreters/src/model/refined.ts index a062c3d0..df3f9b23 100644 --- a/packages/morphic-fastcheck-interpreters/src/model/refined.ts +++ b/packages/morphic-fastcheck-interpreters/src/model/refined.ts @@ -1,14 +1,15 @@ -import { FastCheckURI, FastCheckType } from '../hkt' -import type { ModelAlgebraRefined1 } from '@morphic-ts/model-algebras/lib/refined' -import { fastCheckApplyConfig } from '../config' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraRefined } from '@morphic-ts/model-algebras/lib/refined' + +import { fastCheckApplyConfig } from '../config' +import { FastCheckType, FastCheckURI } from '../hkt' /** * @since 0.0.1 */ export const fastCheckRefinedInterpreter = memo( - (): ModelAlgebraRefined1 => ({ + (): ModelAlgebraRefined => ({ _F: FastCheckURI, refined: (getArb, ref, _name, config) => env => new FastCheckType(fastCheckApplyConfig(config)(getArb(env).arb.filter(ref), env)) diff --git a/packages/morphic-fastcheck-interpreters/src/model/set.ts b/packages/morphic-fastcheck-interpreters/src/model/set.ts index 4d4b3e73..a253cd18 100644 --- a/packages/morphic-fastcheck-interpreters/src/model/set.ts +++ b/packages/morphic-fastcheck-interpreters/src/model/set.ts @@ -1,15 +1,16 @@ -import { set } from 'fast-check' -import { FastCheckType, FastCheckURI } from '../hkt' -import { fromArray } from 'fp-ts/Set' -import type { ModelAlgebraSet1 } from '@morphic-ts/model-algebras/lib/set' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraSet } from '@morphic-ts/model-algebras/lib/set' +import { set } from 'fast-check' +import { fromArray } from 'fp-ts/Set' + +import { FastCheckType, FastCheckURI } from '../hkt' /** * @since 0.0.1 */ export const fastCheckSetInterpreter = memo( - (): ModelAlgebraSet1 => ({ + (): ModelAlgebraSet => ({ _F: FastCheckURI, set: (a, ord) => env => new FastCheckType(set(a(env).arb).map(fromArray(ord))) }) diff --git a/packages/morphic-fastcheck-interpreters/src/model/str-map.ts b/packages/morphic-fastcheck-interpreters/src/model/str-map.ts index 001e7619..c5a76be2 100644 --- a/packages/morphic-fastcheck-interpreters/src/model/str-map.ts +++ b/packages/morphic-fastcheck-interpreters/src/model/str-map.ts @@ -1,19 +1,20 @@ -import { FastCheckType, FastCheckURI } from '../hkt' -import type { ModelAlgebraStrMap1 } from '@morphic-ts/model-algebras/lib/str-map' -import { fromFoldable } from 'fp-ts/Record' +import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraStrMap } from '@morphic-ts/model-algebras/lib/str-map' +import { array as FCArray, string, tuple } from 'fast-check' import { array } from 'fp-ts/Array' +import { fromFoldable } from 'fp-ts/Record' import { getFirstSemigroup } from 'fp-ts/Semigroup' -import { tuple, array as FCArray, string } from 'fast-check' + import { fastCheckApplyConfig } from '../config' -import type { AnyEnv } from '@morphic-ts/common/lib/config' -import { memo } from '@morphic-ts/common/lib/utils' +import { FastCheckType, FastCheckURI } from '../hkt' const strmapFromArray = () => fromFoldable(getFirstSemigroup(), array) /** * @since 0.0.1 */ export const fastCheckStrMapInterpreter = memo( - (): ModelAlgebraStrMap1 => ({ + (): ModelAlgebraStrMap => ({ _F: FastCheckURI, strMap: (codomain, config) => env => new FastCheckType( diff --git a/packages/morphic-fastcheck-interpreters/src/model/tagged-unions.ts b/packages/morphic-fastcheck-interpreters/src/model/tagged-unions.ts index 91d01edc..3c77da9b 100644 --- a/packages/morphic-fastcheck-interpreters/src/model/tagged-unions.ts +++ b/packages/morphic-fastcheck-interpreters/src/model/tagged-unions.ts @@ -1,10 +1,10 @@ -import { FastCheckType, FastCheckURI } from '../hkt' -import type { ModelAlgebraTaggedUnions1 } from '@morphic-ts/model-algebras/lib/tagged-unions' -import { collect } from '@morphic-ts/common/lib/utils' +import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { collect, memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraTaggedUnions } from '@morphic-ts/model-algebras/lib/tagged-unions' import { oneof } from 'fast-check' + import { fastCheckApplyConfig } from '../config' -import type { AnyEnv } from '@morphic-ts/common/lib/config' -import { memo } from '@morphic-ts/common/lib/utils' +import { FastCheckType, FastCheckURI } from '../hkt' /** * Beware: randomly generated recursive structure with high branching may not end early enough @@ -13,7 +13,7 @@ import { memo } from '@morphic-ts/common/lib/utils' * @since 0.0.1 */ export const fastCheckTaggedUnionInterpreter = memo( - (): ModelAlgebraTaggedUnions1 => ({ + (): ModelAlgebraTaggedUnions => ({ _F: FastCheckURI, taggedUnion: (_tag, dic, _name, config) => env => new FastCheckType(fastCheckApplyConfig(config)(oneof(...collect(dic, (_, getArb) => getArb(env).arb)), env)) diff --git a/packages/morphic-fastcheck-interpreters/src/model/unions.ts b/packages/morphic-fastcheck-interpreters/src/model/unions.ts index bf521bad..ac622bf0 100644 --- a/packages/morphic-fastcheck-interpreters/src/model/unions.ts +++ b/packages/morphic-fastcheck-interpreters/src/model/unions.ts @@ -1,14 +1,15 @@ -import { FastCheckType, FastCheckURI } from '../hkt' -import type { ModelAlgebraUnions1 } from '@morphic-ts/model-algebras/lib/unions' -import { oneof } from 'fast-check' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraUnions } from '@morphic-ts/model-algebras/lib/unions' +import { oneof } from 'fast-check' + +import { FastCheckType, FastCheckURI } from '../hkt' /** * @since 0.0.1 */ export const fastCheckUnionInterpreter = memo( - (): ModelAlgebraUnions1 => ({ + (): ModelAlgebraUnions => ({ _F: FastCheckURI, union: (items: ((env: Env) => FastCheckType)[]) => (env: Env) => new FastCheckType(oneof(...items.map(v => v(env).arb))) diff --git a/packages/morphic-fastcheck-interpreters/src/model/unknown.ts b/packages/morphic-fastcheck-interpreters/src/model/unknown.ts index 5e327a4f..cb5b7c65 100644 --- a/packages/morphic-fastcheck-interpreters/src/model/unknown.ts +++ b/packages/morphic-fastcheck-interpreters/src/model/unknown.ts @@ -1,15 +1,16 @@ -import { FastCheckType, FastCheckURI } from '../hkt' -import type { ModelAlgebraUnknown1 } from '@morphic-ts/model-algebras/lib/unknown' -import { anything } from 'fast-check' -import { fastCheckApplyConfig } from '../config' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraUnknown } from '@morphic-ts/model-algebras/lib/unknown' +import { anything } from 'fast-check' + +import { fastCheckApplyConfig } from '../config' +import { FastCheckType, FastCheckURI } from '../hkt' /** * @since 0.0.1 */ export const fastCheckUnknownInterpreter = memo( - (): ModelAlgebraUnknown1 => ({ + (): ModelAlgebraUnknown => ({ _F: FastCheckURI, unknown: configs => env => new FastCheckType(fastCheckApplyConfig(configs)(anything(), env)) }) diff --git a/packages/morphic-fastcheck-interpreters/test/fast-check-interpreter.spec.ts b/packages/morphic-fastcheck-interpreters/test/fast-check-interpreter.spec.ts index 9d52c59b..65e96713 100644 --- a/packages/morphic-fastcheck-interpreters/test/fast-check-interpreter.spec.ts +++ b/packages/morphic-fastcheck-interpreters/test/fast-check-interpreter.spec.ts @@ -1,11 +1,13 @@ -import * as fc from 'fast-check' -import { ordString, ord } from 'fp-ts/Ord' import type { ProgramType } from '@morphic-ts/summoners' +import * as fc from 'fast-check' +import { ord, ordString } from 'fp-ts/Ord' import * as t from 'io-ts' -import { UUID } from 'io-ts-types/lib/UUID' import { either } from 'io-ts-types/lib/either' import { option } from 'io-ts-types/lib/option' -import { summonFor, M, ProgramUnionURI } from './summoner.spec' +import { UUID } from 'io-ts-types/lib/UUID' + +import type { M, ProgramUnionURI } from './summoner.spec' +import { summonFor } from './summoner.spec' const { summon } = summonFor<{}>({}) diff --git a/packages/morphic-fastcheck-interpreters/test/summoner.spec.ts b/packages/morphic-fastcheck-interpreters/test/summoner.spec.ts index 611d8974..af92ad06 100644 --- a/packages/morphic-fastcheck-interpreters/test/summoner.spec.ts +++ b/packages/morphic-fastcheck-interpreters/test/summoner.spec.ts @@ -1,30 +1,29 @@ -import { cacheUnaryFunction } from '@morphic-ts/common/lib/core' - -import type * as U from '@morphic-ts/summoners' -import { FastCheckURI, modelFastCheckInterpreter } from '@morphic-ts/fastcheck-interpreters/lib/interpreters' -import { IoTsURI, modelIoTsNonStrictInterpreter } from '@morphic-ts/io-ts-interpreters/lib/interpreters' -import type { ExtractEnv, SummonerOps } from '@morphic-ts/summoners' -import { makeSummoner } from '@morphic-ts/summoners' -import type { AnyEnv } from '@morphic-ts/common/lib/config' - -import type { Type } from 'io-ts' - -import type { InferredAlgebra, InferredProgram } from '@morphic-ts/summoners' import type { GetAlgebra } from '@morphic-ts/algebras/lib/core' - +import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { cacheUnaryFunction } from '@morphic-ts/common/lib/core' +import type { URIS } from '@morphic-ts/common/lib/HKT' +import type { FastCheckURI } from '@morphic-ts/fastcheck-interpreters/lib/interpreters' +import { modelFastCheckInterpreter } from '@morphic-ts/fastcheck-interpreters/lib/interpreters' +import type { IoTsURI } from '@morphic-ts/io-ts-interpreters/lib/interpreters' +import { modelIoTsNonStrictInterpreter } from '@morphic-ts/io-ts-interpreters/lib/interpreters' import type { IntersectionURI } from '@morphic-ts/model-algebras/lib/intersections' +import type { NewtypeURI } from '@morphic-ts/model-algebras/lib/newtype' import type { ObjectURI } from '@morphic-ts/model-algebras/lib/object' import type { PrimitiveURI } from '@morphic-ts/model-algebras/lib/primitives' import type { RecursiveURI } from '@morphic-ts/model-algebras/lib/recursive' +import type { RefinedURI } from '@morphic-ts/model-algebras/lib/refined' import type { SetURI } from '@morphic-ts/model-algebras/lib/set' import type { StrMapURI } from '@morphic-ts/model-algebras/lib/str-map' import type { TaggedUnionsURI } from '@morphic-ts/model-algebras/lib/tagged-unions' import type { UnionsURI } from '@morphic-ts/model-algebras/lib/unions' import type { UnknownURI } from '@morphic-ts/model-algebras/lib/unknown' -import type { NewtypeURI } from '@morphic-ts/model-algebras/lib/newtype' -import type { RefinedURI } from '@morphic-ts/model-algebras/lib/refined' -import type { AnyConfigEnv } from '@morphic-ts/summoners' -import { Arbitrary } from 'fast-check' +// eslint-disable-next-line import/no-duplicates +import type * as U from '@morphic-ts/summoners' +// eslint-disable-next-line import/no-duplicates +import type { AnyConfigEnv, ExtractEnv, InferredAlgebra, InferredProgram, SummonerOps } from '@morphic-ts/summoners' +import { makeSummoner } from '@morphic-ts/summoners' +import type { Arbitrary } from 'fast-check' +import type { Type } from 'io-ts' /** * @since 0.0.1 @@ -38,7 +37,7 @@ export type ProgramUnionURI = typeof ProgramUnionURI /** * @since 0.0.1 */ -export interface AlgebraUnion extends InferredAlgebra {} +export interface AlgebraUnion extends InferredAlgebra {} /** * @since 0.0.1 */ @@ -60,7 +59,7 @@ declare module '@morphic-ts/summoners/lib/ProgramType' { | RefinedURI > } - interface ProgramAlgebra { + interface ProgramAlgebra { [ProgramUnionURI]: AlgebraUnion } interface ProgramType { diff --git a/packages/morphic-io-ts-interpreters/docs/modules/model/intersections.ts.md b/packages/morphic-io-ts-interpreters/docs/modules/model/intersections.ts.md index 00959c59..582f439b 100644 --- a/packages/morphic-io-ts-interpreters/docs/modules/model/intersections.ts.md +++ b/packages/morphic-io-ts-interpreters/docs/modules/model/intersections.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const ioTsIntersectionInterpreter: >>() => ModelAlgebraIntersection2<"IoTsURI", Env> = ... +export const ioTsIntersectionInterpreter: >>>() => ModelAlgebraIntersection<"IoTsURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-io-ts-interpreters/docs/modules/model/newtype.ts.md b/packages/morphic-io-ts-interpreters/docs/modules/model/newtype.ts.md index 827c83e6..8bb30483 100644 --- a/packages/morphic-io-ts-interpreters/docs/modules/model/newtype.ts.md +++ b/packages/morphic-io-ts-interpreters/docs/modules/model/newtype.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const ioTsNewtypeInterpreter: >>() => ModelAlgebraNewtype2<"IoTsURI", Env> = ... +export const ioTsNewtypeInterpreter: >>>() => ModelAlgebraNewtype<"IoTsURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-io-ts-interpreters/docs/modules/model/object.ts.md b/packages/morphic-io-ts-interpreters/docs/modules/model/object.ts.md index c2489a61..fa63c5f4 100644 --- a/packages/morphic-io-ts-interpreters/docs/modules/model/object.ts.md +++ b/packages/morphic-io-ts-interpreters/docs/modules/model/object.ts.md @@ -18,7 +18,7 @@ parent: Modules **Signature** ```ts -export const ioTsNonStrictObjectInterpreter: >>() => ModelAlgebraObject2<"IoTsURI", Env> = ... +export const ioTsNonStrictObjectInterpreter: >>>() => ModelAlgebraObject<"IoTsURI", Env> = ... ``` Added in v0.0.1 @@ -28,7 +28,7 @@ Added in v0.0.1 **Signature** ```ts -export const ioTsStrictObjectInterpreter: >>() => ModelAlgebraObject2<"IoTsURI", Env> = ... +export const ioTsStrictObjectInterpreter: >>>() => ModelAlgebraObject<"IoTsURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-io-ts-interpreters/docs/modules/model/primitives.ts.md b/packages/morphic-io-ts-interpreters/docs/modules/model/primitives.ts.md index a197d8c7..b3af54f5 100644 --- a/packages/morphic-io-ts-interpreters/docs/modules/model/primitives.ts.md +++ b/packages/morphic-io-ts-interpreters/docs/modules/model/primitives.ts.md @@ -39,7 +39,7 @@ Added in v0.0.1 **Signature** ```ts -export const ioTsPrimitiveInterpreter: >>() => ModelAlgebraPrimitive2<"IoTsURI", Env> = ... +export const ioTsPrimitiveInterpreter: >>>() => ModelAlgebraPrimitive<"IoTsURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-io-ts-interpreters/docs/modules/model/recursive.ts.md b/packages/morphic-io-ts-interpreters/docs/modules/model/recursive.ts.md index 96760ba5..e576656c 100644 --- a/packages/morphic-io-ts-interpreters/docs/modules/model/recursive.ts.md +++ b/packages/morphic-io-ts-interpreters/docs/modules/model/recursive.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const ioTsRecursiveInterpreter: >>() => ModelAlgebraRecursive2<"IoTsURI", Env> = ... +export const ioTsRecursiveInterpreter: >>>() => ModelAlgebraRecursive<"IoTsURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-io-ts-interpreters/docs/modules/model/refined.ts.md b/packages/morphic-io-ts-interpreters/docs/modules/model/refined.ts.md index e8db97d4..790876c3 100644 --- a/packages/morphic-io-ts-interpreters/docs/modules/model/refined.ts.md +++ b/packages/morphic-io-ts-interpreters/docs/modules/model/refined.ts.md @@ -18,7 +18,7 @@ parent: Modules **Signature** ```ts -export const ioTsRefinedInterpreter: >>() => ModelAlgebraRefined2<"IoTsURI", Env> = ... +export const ioTsRefinedInterpreter: >>>() => ModelAlgebraRefined<"IoTsURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-io-ts-interpreters/docs/modules/model/set.ts.md b/packages/morphic-io-ts-interpreters/docs/modules/model/set.ts.md index d7ee7607..f55fa677 100644 --- a/packages/morphic-io-ts-interpreters/docs/modules/model/set.ts.md +++ b/packages/morphic-io-ts-interpreters/docs/modules/model/set.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const ioTsSetInterpreter: >>() => ModelAlgebraSet2<"IoTsURI", Env> = ... +export const ioTsSetInterpreter: >>>() => ModelAlgebraSet<"IoTsURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-io-ts-interpreters/docs/modules/model/str-map.ts.md b/packages/morphic-io-ts-interpreters/docs/modules/model/str-map.ts.md index 516bddb4..a724801b 100644 --- a/packages/morphic-io-ts-interpreters/docs/modules/model/str-map.ts.md +++ b/packages/morphic-io-ts-interpreters/docs/modules/model/str-map.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const ioTsStrMapInterpreter: >>() => ModelAlgebraStrMap2<"IoTsURI", Env> = ... +export const ioTsStrMapInterpreter: >>>() => ModelAlgebraStrMap<"IoTsURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-io-ts-interpreters/docs/modules/model/tagged-unions.ts.md b/packages/morphic-io-ts-interpreters/docs/modules/model/tagged-unions.ts.md index 13bcc7ab..c9cc7af5 100644 --- a/packages/morphic-io-ts-interpreters/docs/modules/model/tagged-unions.ts.md +++ b/packages/morphic-io-ts-interpreters/docs/modules/model/tagged-unions.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const ioTsTaggedUnionInterpreter: >>() => ModelAlgebraTaggedUnions2<"IoTsURI", Env> = ... +export const ioTsTaggedUnionInterpreter: >>>() => ModelAlgebraTaggedUnions<"IoTsURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-io-ts-interpreters/docs/modules/model/unions.ts.md b/packages/morphic-io-ts-interpreters/docs/modules/model/unions.ts.md index be86c7ab..23b150ff 100644 --- a/packages/morphic-io-ts-interpreters/docs/modules/model/unions.ts.md +++ b/packages/morphic-io-ts-interpreters/docs/modules/model/unions.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const ioTsUnionInterpreter: >>() => ModelAlgebraUnions2<"IoTsURI", Env> = ... +export const ioTsUnionInterpreter: >>>() => ModelAlgebraUnions<"IoTsURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-io-ts-interpreters/docs/modules/model/unknown.ts.md b/packages/morphic-io-ts-interpreters/docs/modules/model/unknown.ts.md index c0ea8349..9b235020 100644 --- a/packages/morphic-io-ts-interpreters/docs/modules/model/unknown.ts.md +++ b/packages/morphic-io-ts-interpreters/docs/modules/model/unknown.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const ioTsUnknownInterpreter: >>() => ModelAlgebraUnknown2<"IoTsURI", Env> = ... +export const ioTsUnknownInterpreter: >>>() => ModelAlgebraUnknown<"IoTsURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-io-ts-interpreters/package.json b/packages/morphic-io-ts-interpreters/package.json index 0199c3ac..630043c9 100644 --- a/packages/morphic-io-ts-interpreters/package.json +++ b/packages/morphic-io-ts-interpreters/package.json @@ -1,6 +1,6 @@ { "name": "@morphic-ts/io-ts-interpreters", - "version": "3.0.0-alpha.0", + "version": "3.0.0-alpha.2", "description": "Morphic io-ts package for encoding / decoding", "author": "Stéphane Le Dorze ", "homepage": "", @@ -21,12 +21,12 @@ "es6" ], "dependencies": { - "@morphic-ts/algebras": "^3.0.0-alpha.0", - "@morphic-ts/common": "^3.0.0-alpha.0", - "@morphic-ts/model-algebras": "^3.0.0-alpha.0" + "@morphic-ts/algebras": "^3.0.0-alpha.2", + "@morphic-ts/common": "^3.0.0-alpha.2", + "@morphic-ts/model-algebras": "^3.0.0-alpha.2" }, "devDependencies": { - "@morphic-ts/summoners": "^3.0.0-alpha.0", + "@morphic-ts/summoners": "^3.0.0-alpha.2", "fp-ts": "^2.5.3", "io-ts": "^2.1.3", "io-ts-types": "^0.5.6", diff --git a/packages/morphic-io-ts-interpreters/src/config.ts b/packages/morphic-io-ts-interpreters/src/config.ts index ae21506e..b2bb5415 100644 --- a/packages/morphic-io-ts-interpreters/src/config.ts +++ b/packages/morphic-io-ts-interpreters/src/config.ts @@ -1,5 +1,7 @@ import { getApplyConfig } from '@morphic-ts/common/lib/config' + import { IoTsURI } from './hkt' + export * from './model' // to thread type level augmentations export { /** diff --git a/packages/morphic-io-ts-interpreters/src/create.ts b/packages/morphic-io-ts-interpreters/src/create.ts index 7e946afb..40df8743 100644 --- a/packages/morphic-io-ts-interpreters/src/create.ts +++ b/packages/morphic-io-ts-interpreters/src/create.ts @@ -1,5 +1,5 @@ -import type { Branded, Errors } from 'io-ts' import type { Either } from 'fp-ts/Either' +import type { Branded, Errors } from 'io-ts' /** * @since 0.0.1 diff --git a/packages/morphic-io-ts-interpreters/src/hkt.ts b/packages/morphic-io-ts-interpreters/src/hkt.ts index b8657676..be56b85e 100644 --- a/packages/morphic-io-ts-interpreters/src/hkt.ts +++ b/packages/morphic-io-ts-interpreters/src/hkt.ts @@ -1,6 +1,7 @@ -import type { Errors, Type } from 'io-ts' import type { Either } from 'fp-ts/Either' import { map } from 'fp-ts/Either' +import type { Errors, Type } from 'io-ts' + import type { Validated } from './create' /** @@ -33,7 +34,7 @@ export class IOTSType { } declare module '@morphic-ts/common/lib/HKT' { - interface URItoKind2 { + interface URItoKind { [IoTsURI]: (env: R) => IOTSType } } diff --git a/packages/morphic-io-ts-interpreters/src/interpreters.ts b/packages/morphic-io-ts-interpreters/src/interpreters.ts index a4aebce4..0b188ac1 100644 --- a/packages/morphic-io-ts-interpreters/src/interpreters.ts +++ b/packages/morphic-io-ts-interpreters/src/interpreters.ts @@ -1,16 +1,17 @@ +import type { AnyEnv } from '@morphic-ts/common/lib/config' import { merge } from '@morphic-ts/common/lib/utils' -import { ioTsNonStrictObjectInterpreter, ioTsStrictObjectInterpreter } from './model/object' -import { ioTsRefinedInterpreter } from './model/refined' + +import { ioTsIntersectionInterpreter } from './model/intersections' import { ioTsNewtypeInterpreter } from './model/newtype' -import { ioTsUnknownInterpreter } from './model/unknown' +import { ioTsNonStrictObjectInterpreter, ioTsStrictObjectInterpreter } from './model/object' import { ioTsPrimitiveInterpreter } from './model/primitives' -import { ioTsIntersectionInterpreter } from './model/intersections' -import { ioTsUnionInterpreter } from './model/unions' -import { ioTsTaggedUnionInterpreter } from './model/tagged-unions' -import { ioTsStrMapInterpreter } from './model/str-map' -import { ioTsSetInterpreter } from './model/set' import { ioTsRecursiveInterpreter } from './model/recursive' -import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { ioTsRefinedInterpreter } from './model/refined' +import { ioTsSetInterpreter } from './model/set' +import { ioTsStrMapInterpreter } from './model/str-map' +import { ioTsTaggedUnionInterpreter } from './model/tagged-unions' +import { ioTsUnionInterpreter } from './model/unions' +import { ioTsUnknownInterpreter } from './model/unknown' export * from './hkt' diff --git a/packages/morphic-io-ts-interpreters/src/model/intersections.ts b/packages/morphic-io-ts-interpreters/src/model/intersections.ts index f4eb547e..dd7776ef 100644 --- a/packages/morphic-io-ts-interpreters/src/model/intersections.ts +++ b/packages/morphic-io-ts-interpreters/src/model/intersections.ts @@ -1,14 +1,15 @@ -import * as t from 'io-ts' -import { IOTSType, IoTsURI } from '../hkt' -import type { ModelAlgebraIntersection2 } from '@morphic-ts/model-algebras/lib/intersections' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraIntersection } from '@morphic-ts/model-algebras/lib/intersections' +import * as t from 'io-ts' + +import { IOTSType, IoTsURI } from '../hkt' /** * @since 0.0.1 */ export const ioTsIntersectionInterpreter = memo( - (): ModelAlgebraIntersection2 => ({ + (): ModelAlgebraIntersection => ({ _F: IoTsURI, intersection: (items: Array<(_: Env) => IOTSType>, name: string) => (env: Env) => new IOTSType(t.intersection(items.map(x => x(env).type) as any, name)) // TODO: fix (follow up: https://github.com/gcanti/io-ts/issues/312) diff --git a/packages/morphic-io-ts-interpreters/src/model/newtype.ts b/packages/morphic-io-ts-interpreters/src/model/newtype.ts index ae3c4f46..85d78a05 100644 --- a/packages/morphic-io-ts-interpreters/src/model/newtype.ts +++ b/packages/morphic-io-ts-interpreters/src/model/newtype.ts @@ -1,15 +1,19 @@ -import type { ModelAlgebraNewtype2 } from '@morphic-ts/model-algebras/lib/newtype' -import { IOTSType, IoTsURI } from '../hkt' -import { iotsApplyConfig } from '../config' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { AnyNewtype, ModelAlgebraNewtype, NewtypeA } from '@morphic-ts/model-algebras/lib/newtype' +import type { Type } from 'io-ts' + +import { iotsApplyConfig } from '../config' +import { IOTSType, IoTsURI } from '../hkt' + +const coerce = (e: Type, O, I>): Type => (e as any) as Type /** * @since 0.0.1 */ export const ioTsNewtypeInterpreter = memo( - (): ModelAlgebraNewtype2 => ({ + (): ModelAlgebraNewtype => ({ _F: IoTsURI, - newtype: () => (a, config) => env => new IOTSType(iotsApplyConfig(config)(a(env).type, env)) + newtype: () => (a, config) => env => new IOTSType(iotsApplyConfig(config)(coerce(a(env).type), env)) }) ) diff --git a/packages/morphic-io-ts-interpreters/src/model/object.ts b/packages/morphic-io-ts-interpreters/src/model/object.ts index 44bbe2b0..82fc1d70 100644 --- a/packages/morphic-io-ts-interpreters/src/model/object.ts +++ b/packages/morphic-io-ts-interpreters/src/model/object.ts @@ -1,40 +1,47 @@ +import type { AnyEnv, ConfigsForType } from '@morphic-ts/common/lib/config' +import { memo, projectFieldWithEnv } from '@morphic-ts/common/lib/utils' +import type { AnyProps, ModelAlgebraObject, PropsA, PropsE, PropsKind } from '@morphic-ts/model-algebras/lib/object' import * as t from 'io-ts' -import { IOTSType, IoTsURI } from '../hkt' -import type { ModelAlgebraObject2, PropsKind2 } from '@morphic-ts/model-algebras/lib/object' -import { projectFieldWithEnv } from '@morphic-ts/common/lib/utils' -import type { ConfigsForType, AnyEnv } from '@morphic-ts/common/lib/config' + import { iotsApplyConfig } from '../config' -import { memo } from '@morphic-ts/common/lib/utils' +import { IOTSType, IoTsURI } from '../hkt' /** * @since 0.0.1 */ export const ioTsNonStrictObjectInterpreter = memo( - (): ModelAlgebraObject2 => ({ + (): ModelAlgebraObject => ({ _F: IoTsURI, - interface: ( - props: PropsKind2, + interface: >( + props: Props, name: string, - config?: ConfigsForType + config?: ConfigsForType>, Readonly>> ) => (env: Env) => - new IOTSType( - iotsApplyConfig(config)(t.type(projectFieldWithEnv(props, env)('type'), name) as any, env) + new IOTSType, PropsA>( + iotsApplyConfig(config)(t.type(projectFieldWithEnv(props as any, env)('type'), name) as any, env) ), - partial: ( - props: PropsKind2, + partial: >( + props: Props, name: string, - config?: ConfigsForType, Partial> + config?: ConfigsForType>>, Partial>>> ) => (env: Env) => - new IOTSType, Partial>( - iotsApplyConfig(config)(t.partial(projectFieldWithEnv(props, env)('type'), name) as any, env) as any + new IOTSType>, Partial>>( + iotsApplyConfig(config)(t.partial(projectFieldWithEnv(props as any, env)('type'), name) as any, env) as any ), - both: ( - props: PropsKind2, - partial: PropsKind2, + both: , PartialProps extends AnyProps>( + props: PropsKind, PropsA, Env>, + partial: PropsKind, PropsA, Env>, name: string, - config?: ConfigsForType, PropsA & Partial> + config?: ConfigsForType< + Env, + Readonly & Partial>>, + Readonly & Partial>> + > ) => (env: Env) => - new IOTSType, PropsA & Partial>( + new IOTSType< + Readonly & Partial>>, + Readonly & Partial>> + >( iotsApplyConfig(config)( t.intersection( [ @@ -53,31 +60,41 @@ export const ioTsNonStrictObjectInterpreter = memo( * @since 0.0.1 */ export const ioTsStrictObjectInterpreter = memo( - (): ModelAlgebraObject2 => ({ + (): ModelAlgebraObject => ({ _F: IoTsURI, - interface: ( - props: PropsKind2, + interface: >( + props: Props, name: string, - config?: ConfigsForType + config?: ConfigsForType>, Readonly>> ) => (env: Env) => - new IOTSType( - iotsApplyConfig(config)(t.strict(projectFieldWithEnv(props, env)('type'), name) as any, env) + new IOTSType, PropsA>( + iotsApplyConfig(config)(t.strict(projectFieldWithEnv(props as any, env)('type'), name) as any, env) ), - partial: ( - props: PropsKind2, + partial: >( + props: Props, name: string, - config?: ConfigsForType, Partial> + config?: ConfigsForType>>, Partial>>> ) => (env: Env) => - new IOTSType, Partial>( - iotsApplyConfig(config)(t.exact(t.partial(projectFieldWithEnv(props, env)('type'), name)) as any, env) as any + new IOTSType>, Partial>>( + iotsApplyConfig(config)( + t.exact(t.partial(projectFieldWithEnv(props as any, env)('type'), name)) as any, + env + ) as any ), - both: ( - props: PropsKind2, - partial: PropsKind2, + both: , PartialProps extends AnyProps>( + props: PropsKind, PropsA, Env>, + partial: PropsKind, PropsA, Env>, name: string, - config?: ConfigsForType, PropsA & Partial> + config?: ConfigsForType< + Env, + Readonly & Partial>>, + Readonly & Partial>> + > ) => (env: Env) => - new IOTSType, PropsA & Partial>( + new IOTSType< + Readonly & Partial>>, + Readonly & Partial>> + >( iotsApplyConfig(config)( t.exact( t.intersection( diff --git a/packages/morphic-io-ts-interpreters/src/model/primitives.ts b/packages/morphic-io-ts-interpreters/src/model/primitives.ts index a39582f3..0af9d535 100644 --- a/packages/morphic-io-ts-interpreters/src/model/primitives.ts +++ b/packages/morphic-io-ts-interpreters/src/model/primitives.ts @@ -1,17 +1,17 @@ -import * as t from 'io-ts' -import { optionFromNullable } from 'io-ts-types/lib/optionFromNullable' -import { DateFromISOString } from 'io-ts-types/lib/DateFromISOString' -import { IOTSType, IoTsURI } from '../hkt' -import type { ModelAlgebraPrimitive2 } from '@morphic-ts/model-algebras/lib/primitives' -import { either } from 'fp-ts/Either' - -import { iotsApplyConfig } from '../config' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' -import { UUID } from 'io-ts-types/lib/UUID' +import type { ModelAlgebraPrimitive } from '@morphic-ts/model-algebras/lib/primitives' +import { either } from 'fp-ts/Either' +import * as t from 'io-ts' +import { DateFromISOString } from 'io-ts-types/lib/DateFromISOString' import { either as Teither } from 'io-ts-types/lib/either' import { option as Toption } from 'io-ts-types/lib/option' +import { optionFromNullable } from 'io-ts-types/lib/optionFromNullable' import { readonlyNonEmptyArray } from 'io-ts-types/lib/readonlyNonEmptyArray' +import { UUID } from 'io-ts-types/lib/UUID' + +import { iotsApplyConfig } from '../config' +import { IOTSType, IoTsURI } from '../hkt' /** * @since 0.0.1 @@ -50,7 +50,7 @@ const tag = (s: S): t.Type => */ /* istanbul ignore next */ export const ioTsPrimitiveInterpreter = memo( - (): ModelAlgebraPrimitive2 => ({ + (): ModelAlgebraPrimitive => ({ _F: IoTsURI, date: config => env => new IOTSType(iotsApplyConfig(config)(DateFromISOString, env)), boolean: config => env => new IOTSType(iotsApplyConfig(config)(t.boolean, env)), diff --git a/packages/morphic-io-ts-interpreters/src/model/recursive.ts b/packages/morphic-io-ts-interpreters/src/model/recursive.ts index f747e271..08989125 100644 --- a/packages/morphic-io-ts-interpreters/src/model/recursive.ts +++ b/packages/morphic-io-ts-interpreters/src/model/recursive.ts @@ -1,14 +1,15 @@ -import * as t from 'io-ts' -import { IOTSType, IoTsURI } from '../hkt' -import type { ModelAlgebraRecursive2 } from '@morphic-ts/model-algebras/lib/recursive' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraRecursive } from '@morphic-ts/model-algebras/lib/recursive' +import * as t from 'io-ts' + +import { IOTSType, IoTsURI } from '../hkt' /** * @since 0.0.1 */ export const ioTsRecursiveInterpreter = memo( - (): ModelAlgebraRecursive2 => ({ + (): ModelAlgebraRecursive => ({ _F: IoTsURI, recursive: lazyA => env => new IOTSType(t.recursion(`recursive`, Self => lazyA(_ => new IOTSType(Self))(env).type)) }) diff --git a/packages/morphic-io-ts-interpreters/src/model/refined.ts b/packages/morphic-io-ts-interpreters/src/model/refined.ts index 4cc3b578..c2bc89bf 100644 --- a/packages/morphic-io-ts-interpreters/src/model/refined.ts +++ b/packages/morphic-io-ts-interpreters/src/model/refined.ts @@ -1,9 +1,10 @@ -import { success, failure, Type } from 'io-ts' -import { IOTSType, IoTsURI } from '../hkt' -import type { ModelAlgebraRefined2 } from '@morphic-ts/model-algebras/lib/refined' -import { iotsApplyConfig } from '../config' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraRefined } from '@morphic-ts/model-algebras/lib/refined' +import { failure, success, Type } from 'io-ts' + +import { iotsApplyConfig } from '../config' +import { IOTSType, IoTsURI } from '../hkt' /** * @since 0.0.1 @@ -27,7 +28,7 @@ export const refinement = (T: Type, ref: (a: A) => a is * @since 0.0.1 */ export const ioTsRefinedInterpreter = memo( - (): ModelAlgebraRefined2 => ({ + (): ModelAlgebraRefined => ({ _F: IoTsURI, refined: (a, ref, name, config) => env => new IOTSType(iotsApplyConfig(config)(refinement(a(env).type, ref, name), env)) diff --git a/packages/morphic-io-ts-interpreters/src/model/set.ts b/packages/morphic-io-ts-interpreters/src/model/set.ts index 36813fdf..a3af5b6d 100644 --- a/packages/morphic-io-ts-interpreters/src/model/set.ts +++ b/packages/morphic-io-ts-interpreters/src/model/set.ts @@ -1,14 +1,15 @@ -import { setFromArray } from 'io-ts-types/lib/setFromArray' -import { IOTSType, IoTsURI } from '../hkt' -import type { ModelAlgebraSet2 } from '@morphic-ts/model-algebras/lib/set' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraSet } from '@morphic-ts/model-algebras/lib/set' +import { setFromArray } from 'io-ts-types/lib/setFromArray' + +import { IOTSType, IoTsURI } from '../hkt' /** * @since 0.0.1 */ export const ioTsSetInterpreter = memo( - (): ModelAlgebraSet2 => ({ + (): ModelAlgebraSet => ({ _F: IoTsURI, set: (a, ord) => env => new IOTSType(setFromArray(a(env).type, ord)) }) diff --git a/packages/morphic-io-ts-interpreters/src/model/str-map.ts b/packages/morphic-io-ts-interpreters/src/model/str-map.ts index cee0d3ab..0e8bfd55 100644 --- a/packages/morphic-io-ts-interpreters/src/model/str-map.ts +++ b/packages/morphic-io-ts-interpreters/src/model/str-map.ts @@ -1,15 +1,16 @@ -import * as t from 'io-ts' -import { IOTSType, IoTsURI } from '../hkt' -import type { ModelAlgebraStrMap2 } from '@morphic-ts/model-algebras/lib/str-map' -import { iotsApplyConfig } from '../config' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraStrMap } from '@morphic-ts/model-algebras/lib/str-map' +import * as t from 'io-ts' + +import { iotsApplyConfig } from '../config' +import { IOTSType, IoTsURI } from '../hkt' /** * @since 0.0.1 */ export const ioTsStrMapInterpreter = memo( - (): ModelAlgebraStrMap2 => ({ + (): ModelAlgebraStrMap => ({ _F: IoTsURI, strMap: (codomain, config) => env => new IOTSType(iotsApplyConfig(config)(t.record(t.string, codomain(env).type), env)), diff --git a/packages/morphic-io-ts-interpreters/src/model/tagged-unions.ts b/packages/morphic-io-ts-interpreters/src/model/tagged-unions.ts index f59b1c3b..1deffcb4 100644 --- a/packages/morphic-io-ts-interpreters/src/model/tagged-unions.ts +++ b/packages/morphic-io-ts-interpreters/src/model/tagged-unions.ts @@ -1,18 +1,22 @@ +import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { collect, memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraTaggedUnions } from '@morphic-ts/model-algebras/lib/tagged-unions' import * as t from 'io-ts' -import { IOTSType, IoTsURI } from '../hkt' -import type { ModelAlgebraTaggedUnions2 } from '@morphic-ts/model-algebras/lib/tagged-unions' -import { collect } from '@morphic-ts/common/lib/utils' + import { iotsApplyConfig } from '../config' -import type { AnyEnv } from '@morphic-ts/common/lib/config' -import { memo } from '@morphic-ts/common/lib/utils' +import { IOTSType, IoTsURI } from '../hkt' + +const coerce = (arr: T[]): [T, T, ...T[]] => arr as any /** * @since 0.0.1 */ export const ioTsTaggedUnionInterpreter = memo( - (): ModelAlgebraTaggedUnions2 => ({ + (): ModelAlgebraTaggedUnions => ({ _F: IoTsURI, taggedUnion: (_tag, dic, name, config) => env => - new IOTSType(iotsApplyConfig(config)(t.union(collect(dic, (_, getType) => getType(env).type) as any, name), env)) + new IOTSType( + iotsApplyConfig(config)(t.union(coerce(collect(dic, (_, getType) => getType(env).type)), name) as any, env) + ) }) ) diff --git a/packages/morphic-io-ts-interpreters/src/model/unions.ts b/packages/morphic-io-ts-interpreters/src/model/unions.ts index 67ea50e7..2ac3d42f 100644 --- a/packages/morphic-io-ts-interpreters/src/model/unions.ts +++ b/packages/morphic-io-ts-interpreters/src/model/unions.ts @@ -1,14 +1,15 @@ -import * as t from 'io-ts' -import { IOTSType, IoTsURI } from '../hkt' -import type { ModelAlgebraUnions2 } from '@morphic-ts/model-algebras/lib/unions' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraUnions } from '@morphic-ts/model-algebras/lib/unions' +import * as t from 'io-ts' + +import { IOTSType, IoTsURI } from '../hkt' /** * @since 0.0.1 */ export const ioTsUnionInterpreter = memo( - (): ModelAlgebraUnions2 => ({ + (): ModelAlgebraUnions => ({ _F: IoTsURI, union: (items: Array<(_: R) => IOTSType>, name: string) => (env: R) => new IOTSType(t.union(items.map(x => x(env).type) as any, name)) // TODO: fix (follow up: https://github.com/gcanti/io-ts/issues/312) diff --git a/packages/morphic-io-ts-interpreters/src/model/unknown.ts b/packages/morphic-io-ts-interpreters/src/model/unknown.ts index 2124dcd6..c727fd03 100644 --- a/packages/morphic-io-ts-interpreters/src/model/unknown.ts +++ b/packages/morphic-io-ts-interpreters/src/model/unknown.ts @@ -1,15 +1,16 @@ -import * as t from 'io-ts' -import { IOTSType, IoTsURI } from '../hkt' -import type { ModelAlgebraUnknown2 } from '@morphic-ts/model-algebras/lib/unknown' -import { iotsApplyConfig } from '../config' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraUnknown } from '@morphic-ts/model-algebras/lib/unknown' +import * as t from 'io-ts' + +import { iotsApplyConfig } from '../config' +import { IOTSType, IoTsURI } from '../hkt' /** * @since 0.0.1 */ export const ioTsUnknownInterpreter = memo( - (): ModelAlgebraUnknown2 => ({ + (): ModelAlgebraUnknown => ({ _F: IoTsURI, unknown: config => env => new IOTSType(iotsApplyConfig(config)(t.unknown, env)) }) diff --git a/packages/morphic-io-ts-interpreters/test/io-ts-interpreter.spec.ts b/packages/morphic-io-ts-interpreters/test/io-ts-interpreter.spec.ts index 0d3c1075..23afdc2c 100644 --- a/packages/morphic-io-ts-interpreters/test/io-ts-interpreter.spec.ts +++ b/packages/morphic-io-ts-interpreters/test/io-ts-interpreter.spec.ts @@ -1,19 +1,20 @@ import * as chai from 'chai' -import { ordString, ord } from 'fp-ts/Ord' +import { either, getOrElse, isLeft, isRight, left, right } from 'fp-ts/Either' +import { none, some } from 'fp-ts/Option' import type { Ord } from 'fp-ts/Ord' -import { fromArray } from 'fp-ts/Set' -import { right, isLeft, isRight, left, getOrElse, either } from 'fp-ts/Either' -import { some, none } from 'fp-ts/Option' +import { ord, ordString } from 'fp-ts/Ord' import { pipe } from 'fp-ts/pipeable' -import { success, failure, PathReporter } from 'io-ts/lib/PathReporter' -import type { Errors, Branded } from 'io-ts' +import { fromArray } from 'fp-ts/Set' +import type { Branded, Errors } from 'io-ts' import * as t from 'io-ts' -import { summonFor, M } from './summoner.spec' - +import { failure, PathReporter, success } from 'io-ts/lib/PathReporter' import * as WM from 'io-ts-types/lib/withMessage' -import { iso } from 'newtype-ts' import type { Newtype } from 'newtype-ts' +import { iso } from 'newtype-ts' + import { IoTsURI } from '../src' +import type { M } from './summoner.spec' +import { summonFor } from './summoner.spec' export type Tree = Node | Leaf export interface Node { @@ -435,11 +436,11 @@ describe('IO-TS', () => { chai.assert.deepStrictEqual( codec.type.decode({ type: 'foo1', a: 'a', b: 12 }), - right({ type: 'foo1' as 'foo1', a: 'a', b: 12 }) + right({ type: 'foo1' as const, a: 'a', b: 12 }) ) chai.assert.deepStrictEqual( codec.type.decode({ type: 'bar1', c: 'a', d: 12 }), - right({ type: 'bar1' as 'bar1', c: 'a', d: 12 }) + right({ type: 'bar1' as const, c: 'a', d: 12 }) ) chai.assert.deepStrictEqual(isLeft(codec.type.decode({ a: 'a', d: 12 })), true) }) @@ -478,9 +479,9 @@ describe('IO-TS', () => { const decoder = FooBar.type - chai.assert.deepStrictEqual(decoder.decode({ type: 'foo2', a: 'a' }), right({ type: 'foo2' as 'foo2', a: 'a' })) + chai.assert.deepStrictEqual(decoder.decode({ type: 'foo2', a: 'a' }), right({ type: 'foo2' as const, a: 'a' })) chai.assert(isLeft(decoder.decode({ type: 'foo2', b: 3 }))) - chai.assert.deepStrictEqual(decoder.decode({ type: 'baz2', b: 1 }), right({ type: 'baz2' as 'baz2', b: 1 })) + chai.assert.deepStrictEqual(decoder.decode({ type: 'baz2', b: 1 }), right({ type: 'baz2' as const, b: 1 })) chai.assert(isLeft(decoder.decode({ type: 'baz2', a: 'a' }))) chai.assert(isLeft(decoder.decode({}))) }) @@ -662,7 +663,7 @@ describe('iotsObjectInterpreter', () => { [IoTsURI]: IOTSEnv & WithMessage } // Types Should be defined beforehand at Summon creation ? (no..) - const { summon: summonIOTS } = summonFor({ [IoTsURI]: { iots: t, WM: WM } }) + const { summon: summonIOTS } = summonFor({ [IoTsURI]: { iots: t, WM } }) const Codec = summonIOTS(F => F.string({ IoTsURI: (_, { iots }: IOTSEnv) => iots.string })) diff --git a/packages/morphic-io-ts-interpreters/test/summoner.spec.ts b/packages/morphic-io-ts-interpreters/test/summoner.spec.ts index ac9e8234..8a71ada0 100644 --- a/packages/morphic-io-ts-interpreters/test/summoner.spec.ts +++ b/packages/morphic-io-ts-interpreters/test/summoner.spec.ts @@ -1,29 +1,29 @@ -import { cacheUnaryFunction } from '@morphic-ts/common/lib/core' - -import type * as U from '@morphic-ts/summoners' -import { IoTsURI, modelIoTsNonStrictInterpreter } from '@morphic-ts/io-ts-interpreters/lib/interpreters' -import { modelIoTsStrictInterpreter } from '@morphic-ts/io-ts-interpreters/lib/interpreters' -import type { ExtractEnv, SummonerOps } from '@morphic-ts/summoners' -import { makeSummoner } from '@morphic-ts/summoners' -import type { AnyEnv } from '@morphic-ts/common/lib/config' - -import type { Type } from 'io-ts' - -import type { InferredAlgebra, InferredProgram } from '@morphic-ts/summoners' import type { GetAlgebra } from '@morphic-ts/algebras/lib/core' - +import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { cacheUnaryFunction } from '@morphic-ts/common/lib/core' +import type { URIS } from '@morphic-ts/common/lib/HKT' +import type { IoTsURI } from '@morphic-ts/io-ts-interpreters/lib/interpreters' +import { + modelIoTsNonStrictInterpreter, + modelIoTsStrictInterpreter +} from '@morphic-ts/io-ts-interpreters/lib/interpreters' import type { IntersectionURI } from '@morphic-ts/model-algebras/lib/intersections' +import type { NewtypeURI } from '@morphic-ts/model-algebras/lib/newtype' import type { ObjectURI } from '@morphic-ts/model-algebras/lib/object' import type { PrimitiveURI } from '@morphic-ts/model-algebras/lib/primitives' import type { RecursiveURI } from '@morphic-ts/model-algebras/lib/recursive' +import type { RefinedURI } from '@morphic-ts/model-algebras/lib/refined' import type { SetURI } from '@morphic-ts/model-algebras/lib/set' import type { StrMapURI } from '@morphic-ts/model-algebras/lib/str-map' import type { TaggedUnionsURI } from '@morphic-ts/model-algebras/lib/tagged-unions' import type { UnionsURI } from '@morphic-ts/model-algebras/lib/unions' import type { UnknownURI } from '@morphic-ts/model-algebras/lib/unknown' -import type { NewtypeURI } from '@morphic-ts/model-algebras/lib/newtype' -import type { RefinedURI } from '@morphic-ts/model-algebras/lib/refined' -import type { AnyConfigEnv } from '@morphic-ts/summoners' +// eslint-disable-next-line import/no-duplicates +import type * as U from '@morphic-ts/summoners' +// eslint-disable-next-line import/no-duplicates +import type { AnyConfigEnv, ExtractEnv, InferredAlgebra, InferredProgram, SummonerOps } from '@morphic-ts/summoners' +import { makeSummoner } from '@morphic-ts/summoners' +import type { Type } from 'io-ts' /** * @since 0.0.1 @@ -37,7 +37,7 @@ export type ProgramUnionURI = typeof ProgramUnionURI /** * @since 0.0.1 */ -export interface AlgebraUnion extends InferredAlgebra {} +export interface AlgebraUnion extends InferredAlgebra {} /** * @since 0.0.1 */ @@ -59,7 +59,7 @@ declare module '@morphic-ts/summoners/lib/ProgramType' { | RefinedURI > } - interface ProgramAlgebra { + interface ProgramAlgebra { [ProgramUnionURI]: AlgebraUnion } interface ProgramType { diff --git a/packages/morphic-json-schema-interpreters/docs/modules/interpreters.ts.md b/packages/morphic-json-schema-interpreters/docs/modules/interpreters.ts.md index c189f81b..f970fb51 100644 --- a/packages/morphic-json-schema-interpreters/docs/modules/interpreters.ts.md +++ b/packages/morphic-json-schema-interpreters/docs/modules/interpreters.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const modelJsonSchemaInterpreter: >>() => ModelAlgebraRefined1<"JsonSchemaURI", Env> & ModelAlgebraNewtype1<"JsonSchemaURI", Env> & ModelAlgebraUnknown1<"JsonSchemaURI", Env> & ModelAlgebraPrimitive1<"JsonSchemaURI", Env> & ModelAlgebraIntersection1<"JsonSchemaURI", Env> & ModelAlgebraObject1<"JsonSchemaURI", Env> & ModelAlgebraTaggedUnions1<"JsonSchemaURI", Env> & ModelAlgebraRecursive1<"JsonSchemaURI", Env> & ModelAlgebraStrMap1<"JsonSchemaURI", Env> & ModelAlgebraSet1<"JsonSchemaURI", Env> & ModelAlgebraUnions1<"JsonSchemaURI", Env> = ... +export const modelJsonSchemaInterpreter: >>>() => ModelAlgebraRefined<"JsonSchemaURI", Env> & ModelAlgebraNewtype<"JsonSchemaURI", Env> & ModelAlgebraUnknown<"JsonSchemaURI", Env> & ModelAlgebraPrimitive<"JsonSchemaURI", Env> & ModelAlgebraIntersection<"JsonSchemaURI", Env> & ModelAlgebraObject<"JsonSchemaURI", Env> & ModelAlgebraTaggedUnions<"JsonSchemaURI", Env> & ModelAlgebraRecursive<"JsonSchemaURI", Env> & ModelAlgebraStrMap<"JsonSchemaURI", Env> & ModelAlgebraSet<"JsonSchemaURI", Env> & ModelAlgebraUnions<"JsonSchemaURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-json-schema-interpreters/docs/modules/json-schema/json-schema-ctors.ts.md b/packages/morphic-json-schema-interpreters/docs/modules/json-schema/json-schema-ctors.ts.md index 49153673..da9c138f 100644 --- a/packages/morphic-json-schema-interpreters/docs/modules/json-schema/json-schema-ctors.ts.md +++ b/packages/morphic-json-schema-interpreters/docs/modules/json-schema/json-schema-ctors.ts.md @@ -191,7 +191,7 @@ Added in v0.0.1 **Signature** ```ts -export const NonEmptyArrayFromArrayTypeCtor = ({ optional, json }: OptionalJSONSchema) => ... +export const NonEmptyArrayFromArrayTypeCtor = ({ json, optional }: OptionalJSONSchema) => ... ``` Added in v0.0.1 @@ -221,7 +221,7 @@ Added in v0.0.1 **Signature** ```ts -export const SetFromArrayTypeCtor = ({ optional, json }: OptionalJSONSchema) => ... +export const SetFromArrayTypeCtor = ({ json, optional }: OptionalJSONSchema) => ... ``` Added in v0.0.1 @@ -231,7 +231,7 @@ Added in v0.0.1 **Signature** ```ts -export const StrMapTypeCtor = ({ optional, json }: OptionalJSONSchema) => ... +export const StrMapTypeCtor = ({ json, optional }: OptionalJSONSchema) => ... ``` Added in v0.0.1 diff --git a/packages/morphic-json-schema-interpreters/docs/modules/model/intersections.ts.md b/packages/morphic-json-schema-interpreters/docs/modules/model/intersections.ts.md index 3942eedc..c4c177fb 100644 --- a/packages/morphic-json-schema-interpreters/docs/modules/model/intersections.ts.md +++ b/packages/morphic-json-schema-interpreters/docs/modules/model/intersections.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const jsonSchemaIntersectionInterpreter: >>() => ModelAlgebraIntersection1<"JsonSchemaURI", Env> = ... +export const jsonSchemaIntersectionInterpreter: >>>() => ModelAlgebraIntersection<"JsonSchemaURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-json-schema-interpreters/docs/modules/model/newtype.ts.md b/packages/morphic-json-schema-interpreters/docs/modules/model/newtype.ts.md index 7c6c1a15..678a0624 100644 --- a/packages/morphic-json-schema-interpreters/docs/modules/model/newtype.ts.md +++ b/packages/morphic-json-schema-interpreters/docs/modules/model/newtype.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const jsonSchemaNewtypeInterpreter: >>() => ModelAlgebraNewtype1<"JsonSchemaURI", Env> = ... +export const jsonSchemaNewtypeInterpreter: >>>() => ModelAlgebraNewtype<"JsonSchemaURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-json-schema-interpreters/docs/modules/model/object.ts.md b/packages/morphic-json-schema-interpreters/docs/modules/model/object.ts.md index 72d73a5d..fe8cbd4c 100644 --- a/packages/morphic-json-schema-interpreters/docs/modules/model/object.ts.md +++ b/packages/morphic-json-schema-interpreters/docs/modules/model/object.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const jsonSchemaObjectInterpreter: >>() => ModelAlgebraObject1<"JsonSchemaURI", Env> = ... +export const jsonSchemaObjectInterpreter: >>>() => ModelAlgebraObject<"JsonSchemaURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-json-schema-interpreters/docs/modules/model/primitives.ts.md b/packages/morphic-json-schema-interpreters/docs/modules/model/primitives.ts.md index 04036949..899d858f 100644 --- a/packages/morphic-json-schema-interpreters/docs/modules/model/primitives.ts.md +++ b/packages/morphic-json-schema-interpreters/docs/modules/model/primitives.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const jsonSchemaPrimitiveInterpreter: >>() => ModelAlgebraPrimitive1<"JsonSchemaURI", Env> = ... +export const jsonSchemaPrimitiveInterpreter: >>>() => ModelAlgebraPrimitive<"JsonSchemaURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-json-schema-interpreters/docs/modules/model/recursive.ts.md b/packages/morphic-json-schema-interpreters/docs/modules/model/recursive.ts.md index 178dd936..25965a4d 100644 --- a/packages/morphic-json-schema-interpreters/docs/modules/model/recursive.ts.md +++ b/packages/morphic-json-schema-interpreters/docs/modules/model/recursive.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const jsonSchemaRecursiveInterpreter: >>() => ModelAlgebraRecursive1<"JsonSchemaURI", Env> = ... +export const jsonSchemaRecursiveInterpreter: >>>() => ModelAlgebraRecursive<"JsonSchemaURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-json-schema-interpreters/docs/modules/model/refined.ts.md b/packages/morphic-json-schema-interpreters/docs/modules/model/refined.ts.md index 702bfa39..882d998c 100644 --- a/packages/morphic-json-schema-interpreters/docs/modules/model/refined.ts.md +++ b/packages/morphic-json-schema-interpreters/docs/modules/model/refined.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const jsonSchemaRefinedInterpreter: >>() => ModelAlgebraRefined1<"JsonSchemaURI", Env> = ... +export const jsonSchemaRefinedInterpreter: >>>() => ModelAlgebraRefined<"JsonSchemaURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-json-schema-interpreters/docs/modules/model/set.ts.md b/packages/morphic-json-schema-interpreters/docs/modules/model/set.ts.md index 52f9e00a..e88a9cb3 100644 --- a/packages/morphic-json-schema-interpreters/docs/modules/model/set.ts.md +++ b/packages/morphic-json-schema-interpreters/docs/modules/model/set.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const jsonSchemaSetInterpreter: >>() => ModelAlgebraSet1<"JsonSchemaURI", Env> = ... +export const jsonSchemaSetInterpreter: >>>() => ModelAlgebraSet<"JsonSchemaURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-json-schema-interpreters/docs/modules/model/str-map.ts.md b/packages/morphic-json-schema-interpreters/docs/modules/model/str-map.ts.md index 8a08a1cf..f44d04e1 100644 --- a/packages/morphic-json-schema-interpreters/docs/modules/model/str-map.ts.md +++ b/packages/morphic-json-schema-interpreters/docs/modules/model/str-map.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const jsonSchemaStrMapInterpreter: >>() => ModelAlgebraStrMap1<"JsonSchemaURI", Env> = ... +export const jsonSchemaStrMapInterpreter: >>>() => ModelAlgebraStrMap<"JsonSchemaURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-json-schema-interpreters/docs/modules/model/tagged-unions.ts.md b/packages/morphic-json-schema-interpreters/docs/modules/model/tagged-unions.ts.md index 528f7fa4..d4d43fb1 100644 --- a/packages/morphic-json-schema-interpreters/docs/modules/model/tagged-unions.ts.md +++ b/packages/morphic-json-schema-interpreters/docs/modules/model/tagged-unions.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const jsonSchemaTaggedUnionInterpreter: >>() => ModelAlgebraTaggedUnions1<"JsonSchemaURI", Env> = ... +export const jsonSchemaTaggedUnionInterpreter: >>>() => ModelAlgebraTaggedUnions<"JsonSchemaURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-json-schema-interpreters/docs/modules/model/unions.ts.md b/packages/morphic-json-schema-interpreters/docs/modules/model/unions.ts.md index 0a22ab02..de977f92 100644 --- a/packages/morphic-json-schema-interpreters/docs/modules/model/unions.ts.md +++ b/packages/morphic-json-schema-interpreters/docs/modules/model/unions.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const jsonSchemaUnionInterpreter: >>() => ModelAlgebraUnions1<"JsonSchemaURI", Env> = ... +export const jsonSchemaUnionInterpreter: >>>() => ModelAlgebraUnions<"JsonSchemaURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-json-schema-interpreters/docs/modules/model/unknown.ts.md b/packages/morphic-json-schema-interpreters/docs/modules/model/unknown.ts.md index 413346a9..2e777123 100644 --- a/packages/morphic-json-schema-interpreters/docs/modules/model/unknown.ts.md +++ b/packages/morphic-json-schema-interpreters/docs/modules/model/unknown.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const jsonSchemaUnknownInterpreter: >>() => ModelAlgebraUnknown1<"JsonSchemaURI", Env> = ... +export const jsonSchemaUnknownInterpreter: >>>() => ModelAlgebraUnknown<"JsonSchemaURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-json-schema-interpreters/package.json b/packages/morphic-json-schema-interpreters/package.json index b0b91019..f3bb5e07 100644 --- a/packages/morphic-json-schema-interpreters/package.json +++ b/packages/morphic-json-schema-interpreters/package.json @@ -1,6 +1,6 @@ { "name": "@morphic-ts/json-schema-interpreters", - "version": "3.0.0-alpha.0", + "version": "3.0.0-alpha.2", "description": "Morphic json schema-ish derivation", "author": "Stéphane Le Dorze ", "homepage": "", @@ -21,12 +21,12 @@ "es6" ], "dependencies": { - "@morphic-ts/algebras": "^3.0.0-alpha.0", - "@morphic-ts/common": "^3.0.0-alpha.0", - "@morphic-ts/model-algebras": "^3.0.0-alpha.0" + "@morphic-ts/algebras": "^3.0.0-alpha.2", + "@morphic-ts/common": "^3.0.0-alpha.2", + "@morphic-ts/model-algebras": "^3.0.0-alpha.2" }, "devDependencies": { - "@morphic-ts/summoners": "^3.0.0-alpha.0", + "@morphic-ts/summoners": "^3.0.0-alpha.2", "fp-ts": "^2.5.3", "fp-ts-contrib": "^0.1.12", "io-ts": "^2.1.3", diff --git a/packages/morphic-json-schema-interpreters/src/config.ts b/packages/morphic-json-schema-interpreters/src/config.ts index 7312ff2f..852a2e15 100644 --- a/packages/morphic-json-schema-interpreters/src/config.ts +++ b/packages/morphic-json-schema-interpreters/src/config.ts @@ -1,5 +1,7 @@ import { getApplyConfig } from '@morphic-ts/common/lib/config' + import { JsonSchemaURI } from './hkt' + export * from './model' export { /** diff --git a/packages/morphic-json-schema-interpreters/src/hkt.ts b/packages/morphic-json-schema-interpreters/src/hkt.ts index 49bd25e8..b8ed0f56 100644 --- a/packages/morphic-json-schema-interpreters/src/hkt.ts +++ b/packages/morphic-json-schema-interpreters/src/hkt.ts @@ -1,7 +1,8 @@ -import type { OptionalJSONSchema, JsonSchemaError } from './json-schema/json-schema-ctors' import type { NonEmptyArray } from 'fp-ts/NonEmptyArray' import type { StateEither } from 'fp-ts-contrib/lib/StateEither' + import type { JSONSchema } from './json-schema/json-schema' +import type { JsonSchemaError, OptionalJSONSchema } from './json-schema/json-schema-ctors' /** * @since 0.0.1 @@ -39,7 +40,7 @@ export class JsonSchema { } declare module '@morphic-ts/common/lib/HKT' { - interface URItoKind { + interface URItoKind { [JsonSchemaURI]: (r: R) => JsonSchema } } diff --git a/packages/morphic-json-schema-interpreters/src/interpreters.ts b/packages/morphic-json-schema-interpreters/src/interpreters.ts index a03711e0..3daea682 100644 --- a/packages/morphic-json-schema-interpreters/src/interpreters.ts +++ b/packages/morphic-json-schema-interpreters/src/interpreters.ts @@ -1,17 +1,17 @@ +import type { AnyEnv } from '@morphic-ts/common/lib/config' import { merge } from '@morphic-ts/common/lib/utils' -import { jsonSchemaRefinedInterpreter } from './model/refined' -import { jsonSchemaNewtypeInterpreter } from './model/newtype' -import { jsonSchemaUnknownInterpreter } from './model/unknown' -import { jsonSchemaPrimitiveInterpreter } from './model/primitives' import { jsonSchemaIntersectionInterpreter } from './model/intersections' +import { jsonSchemaNewtypeInterpreter } from './model/newtype' import { jsonSchemaObjectInterpreter } from './model/object' -import { jsonSchemaTaggedUnionInterpreter } from './model/tagged-unions' +import { jsonSchemaPrimitiveInterpreter } from './model/primitives' import { jsonSchemaRecursiveInterpreter } from './model/recursive' -import { jsonSchemaStrMapInterpreter } from './model/str-map' +import { jsonSchemaRefinedInterpreter } from './model/refined' import { jsonSchemaSetInterpreter } from './model/set' +import { jsonSchemaStrMapInterpreter } from './model/str-map' +import { jsonSchemaTaggedUnionInterpreter } from './model/tagged-unions' import { jsonSchemaUnionInterpreter } from './model/unions' -import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { jsonSchemaUnknownInterpreter } from './model/unknown' export * from './hkt' diff --git a/packages/morphic-json-schema-interpreters/src/json-schema/json-schema-ctors.ts b/packages/morphic-json-schema-interpreters/src/json-schema/json-schema-ctors.ts index 37ed4b52..0cb3f116 100644 --- a/packages/morphic-json-schema-interpreters/src/json-schema/json-schema-ctors.ts +++ b/packages/morphic-json-schema-interpreters/src/json-schema/json-schema-ctors.ts @@ -1,13 +1,14 @@ -import type { Magma } from 'fp-ts/Magma' +import { array, chain, sort } from 'fp-ts/Array' +import { left, right } from 'fp-ts/Either' import type { Endomorphism } from 'fp-ts/function' -import * as js from './json-schema' -import { Lens } from 'monocle-ts' +import type { Magma } from 'fp-ts/Magma' import { of } from 'fp-ts/NonEmptyArray' import { ordString } from 'fp-ts/Ord' import { pipe } from 'fp-ts/pipeable' -import { left, right } from 'fp-ts/Either' -import { array, chain, sort } from 'fp-ts/Array' -import { map, fromFoldable } from 'fp-ts/Record' +import { fromFoldable, map } from 'fp-ts/Record' +import { Lens } from 'monocle-ts' + +import * as js from './json-schema' /** * @since 0.0.1 @@ -88,7 +89,7 @@ export const ArrayTypeCtor = ({ /** * @since 0.0.1 */ -export const SetFromArrayTypeCtor = ({ optional, json }: OptionalJSONSchema) => +export const SetFromArrayTypeCtor = ({ json, optional }: OptionalJSONSchema) => optional ? left(of(JsonSchemaErrors.SetFromArrayTypeConsumesNoOptional)) : right( @@ -101,7 +102,7 @@ export const SetFromArrayTypeCtor = ({ optional, json }: OptionalJSONSchema) => /** * @since 0.0.1 */ -export const StrMapTypeCtor = ({ optional, json }: OptionalJSONSchema) => +export const StrMapTypeCtor = ({ json, optional }: OptionalJSONSchema) => optional ? left(of(JsonSchemaErrors.SetFromArrayTypeConsumesNoOptional)) : right( @@ -114,7 +115,7 @@ export const StrMapTypeCtor = ({ optional, json }: OptionalJSONSchema) => /** * @since 0.0.1 */ -export const NonEmptyArrayFromArrayTypeCtor = ({ optional, json }: OptionalJSONSchema) => +export const NonEmptyArrayFromArrayTypeCtor = ({ json, optional }: OptionalJSONSchema) => optional ? left(of(JsonSchemaErrors.ArrayConsumesNoOptional)) : right( @@ -149,7 +150,7 @@ export const IntersectionTypeCtor = (types: OptionalJSONSchema[]) => { : right( notOptional( objects.reduce(magmaObjectSchema.concat, { - type: 'object' as 'object' + type: 'object' as const }) ) ) @@ -174,7 +175,7 @@ export const AnythingTypeCtor = () => notOptional({}) */ export const StringTypeCtor = (extras?: { format?: 'date' | 'date-time' | 'bigint' | 'uuid'; enum?: string[] }) => notOptional({ - type: 'string' as 'string', + type: 'string' as const, ...(extras !== undefined ? extras : {}) }) @@ -183,7 +184,7 @@ export const StringTypeCtor = (extras?: { format?: 'date' | 'date-time' | 'bigin */ export const NumberTypeCtor = () => notOptional({ - type: 'number' as 'number' + type: 'number' as const }) /** @@ -191,7 +192,7 @@ export const NumberTypeCtor = () => */ export const BooleanTypeCtor = () => notOptional({ - type: 'boolean' as 'boolean' + type: 'boolean' as const }) /** diff --git a/packages/morphic-json-schema-interpreters/src/json-schema/json-schema.ts b/packages/morphic-json-schema-interpreters/src/json-schema/json-schema.ts index f7dbfba4..56a743da 100644 --- a/packages/morphic-json-schema-interpreters/src/json-schema/json-schema.ts +++ b/packages/morphic-json-schema-interpreters/src/json-schema/json-schema.ts @@ -1,6 +1,6 @@ -import { Lens, Prism } from 'monocle-ts' -import { fromNullable } from 'fp-ts/Option' import type { Option } from 'fp-ts/Option' +import { fromNullable } from 'fp-ts/Option' +import { Lens, Prism } from 'monocle-ts' /** * @since 0.0.1 */ @@ -97,7 +97,7 @@ export const ArraySchema = (p: { minItems?: number maxItems?: number }) => ({ - type: 'array' as 'array', + type: 'array' as const, ...p }) @@ -135,7 +135,7 @@ export const ObjectSchema = (x: { required?: string[] properties?: Record oneOf?: (ObjectSchema | Ref)[] -}): ObjectSchema => ({ type: 'object' as 'object', ...x }) +}): ObjectSchema => ({ type: 'object' as const, ...x }) /** * @since 0.0.1 diff --git a/packages/morphic-json-schema-interpreters/src/model/intersections.ts b/packages/morphic-json-schema-interpreters/src/model/intersections.ts index 07a249f4..1d0550fd 100644 --- a/packages/morphic-json-schema-interpreters/src/model/intersections.ts +++ b/packages/morphic-json-schema-interpreters/src/model/intersections.ts @@ -1,18 +1,18 @@ -import type { ModelAlgebraIntersection1 } from '@morphic-ts/model-algebras/lib/intersections' import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraIntersection } from '@morphic-ts/model-algebras/lib/intersections' +import { pipe } from 'fp-ts/pipeable' +import { chain as SEchain, chainEitherK as SEchainEitherK } from 'fp-ts-contrib/lib/StateEither' import { JsonSchema, JsonSchemaURI } from '../hkt' import { IntersectionTypeCtor } from '../json-schema/json-schema-ctors' -import { pipe } from 'fp-ts/pipeable' -import { chain as SEchain, chainEitherK as SEchainEitherK } from 'fp-ts-contrib/lib/StateEither' -import { arrayTraverseStateEither, resolveRef, registerSchema } from '../utils' -import { memo } from '@morphic-ts/common/lib/utils' +import { arrayTraverseStateEither, registerSchema, resolveRef } from '../utils' /** * @since 0.0.1 */ export const jsonSchemaIntersectionInterpreter = memo( - (): ModelAlgebraIntersection1 => ({ + (): ModelAlgebraIntersection => ({ _F: JsonSchemaURI, intersection: (types: Array<(env: Env) => JsonSchema>, name: string) => (env: Env) => new JsonSchema( diff --git a/packages/morphic-json-schema-interpreters/src/model/newtype.ts b/packages/morphic-json-schema-interpreters/src/model/newtype.ts index c9bd1a8c..74e71f9c 100644 --- a/packages/morphic-json-schema-interpreters/src/model/newtype.ts +++ b/packages/morphic-json-schema-interpreters/src/model/newtype.ts @@ -1,14 +1,15 @@ -import { JsonSchemaURI, JsonSchema } from '../hkt' -import type { ModelAlgebraNewtype1 } from '@morphic-ts/model-algebras/lib/newtype' -import { jsonSchemaApplyConfig } from '../config' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraNewtype } from '@morphic-ts/model-algebras/lib/newtype' + +import { jsonSchemaApplyConfig } from '../config' +import { JsonSchema, JsonSchemaURI } from '../hkt' /** * @since 0.0.1 */ export const jsonSchemaNewtypeInterpreter = memo( - (): ModelAlgebraNewtype1 => ({ + (): ModelAlgebraNewtype => ({ _F: JsonSchemaURI, newtype: () => (getJson, config) => env => new JsonSchema(jsonSchemaApplyConfig(config)(getJson(env).schema, env)) }) diff --git a/packages/morphic-json-schema-interpreters/src/model/object.ts b/packages/morphic-json-schema-interpreters/src/model/object.ts index 21723351..db1c84b6 100644 --- a/packages/morphic-json-schema-interpreters/src/model/object.ts +++ b/packages/morphic-json-schema-interpreters/src/model/object.ts @@ -1,22 +1,22 @@ -import type { ModelAlgebraObject1 } from '@morphic-ts/model-algebras/lib/object' -import { JsonSchemaURI } from '../hkt' -import { JsonSchema } from '../hkt' -import { ObjectTypeCtor, notOptional, makeOptional } from '../json-schema/json-schema-ctors' -import { toArray } from 'fp-ts/Record' +import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraObject } from '@morphic-ts/model-algebras/lib/object' import { tuple } from 'fp-ts/function' import { pipe } from 'fp-ts/pipeable' -import { map as SEmap, chain as SEchain } from 'fp-ts-contrib/lib/StateEither' -import { Ref } from '../json-schema/json-schema' -import { arrayTraverseStateEither, resolveRefJsonSchema, addSchema } from '../utils' +import { toArray } from 'fp-ts/Record' +import { chain as SEchain, map as SEmap } from 'fp-ts-contrib/lib/StateEither' + import { jsonSchemaApplyConfig } from '../config' -import type { AnyEnv } from '@morphic-ts/common/lib/config' -import { memo } from '@morphic-ts/common/lib/utils' +import { JsonSchema, JsonSchemaURI } from '../hkt' +import { Ref } from '../json-schema/json-schema' +import { makeOptional, notOptional, ObjectTypeCtor } from '../json-schema/json-schema-ctors' +import { addSchema, arrayTraverseStateEither, resolveRefJsonSchema } from '../utils' /** * @since 0.0.1 */ export const jsonSchemaObjectInterpreter = memo( - (): ModelAlgebraObject1 => ({ + (): ModelAlgebraObject => ({ _F: JsonSchemaURI, interface: (props, name, config) => env => new JsonSchema( @@ -24,11 +24,11 @@ export const jsonSchemaObjectInterpreter = memo( pipe( arrayTraverseStateEither(toArray(props), ([k, v]) => pipe( - v(env).schema, + (v as any)(env).schema, SEmap(schema => tuple(k, schema)) ) - ), - SEchain(props => resolveRefJsonSchema(ObjectTypeCtor(props).json)), + ) as any, + SEchain(props => resolveRefJsonSchema(ObjectTypeCtor(props as any).json)), SEchain(addSchema(name)), SEmap(_ => notOptional(Ref(name))) ), @@ -41,11 +41,11 @@ export const jsonSchemaObjectInterpreter = memo( pipe( arrayTraverseStateEither(toArray(props), ([k, v]) => pipe( - v(env).schema, - SEmap(schema => tuple(k, makeOptional(true)(schema.json))) + (v as any)(env).schema, + SEmap(schema => tuple(k, makeOptional(true)((schema as any).json))) ) - ), - SEchain(props => resolveRefJsonSchema(ObjectTypeCtor(props).json)), + ) as any, + SEchain(props => resolveRefJsonSchema(ObjectTypeCtor(props as any).json)), SEchain(addSchema(name)), SEmap(_ => notOptional(Ref(name))) ), diff --git a/packages/morphic-json-schema-interpreters/src/model/primitives.ts b/packages/morphic-json-schema-interpreters/src/model/primitives.ts index 50ca55fe..5504e796 100644 --- a/packages/morphic-json-schema-interpreters/src/model/primitives.ts +++ b/packages/morphic-json-schema-interpreters/src/model/primitives.ts @@ -1,34 +1,35 @@ import type { AnyEnv } from '@morphic-ts/common/lib/config' -import type { ModelAlgebraPrimitive1 } from '@morphic-ts/model-algebras/lib/primitives' +import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraPrimitive } from '@morphic-ts/model-algebras/lib/primitives' +import { tuple } from 'fp-ts/function' +import { pipe } from 'fp-ts/pipeable' +import { Do } from 'fp-ts-contrib/lib/Do' +import { + fromEither as SEfromEither, + right as SEright, + stateEither as SEstateEither +} from 'fp-ts-contrib/lib/StateEither' + +import { jsonSchemaApplyConfig } from '../config' import { JsonSchema, JsonSchemaURI } from '../hkt' +import type { OptionalJSONSchema } from '../json-schema/json-schema-ctors' import { - StringTypeCtor, - NumberTypeCtor, + ArrayTypeCtor, BooleanTypeCtor, LiteralTypeCtor, - optional, - ArrayTypeCtor, - UnionTypeCtor, + NumberTypeCtor, ObjectTypeCtor, - OptionalJSONSchema, - TagTypeCtor + optional, + StringTypeCtor, + TagTypeCtor, + UnionTypeCtor } from '../json-schema/json-schema-ctors' -import { - stateEither as SEstateEither, - fromEither as SEfromEither, - right as SEright -} from 'fp-ts-contrib/lib/StateEither' -import { jsonSchemaApplyConfig } from '../config' -import { memo } from '@morphic-ts/common/lib/utils' -import { pipe } from 'fp-ts/pipeable' -import { Do } from 'fp-ts-contrib/lib/Do' -import { tuple } from 'fp-ts/function' /** * @since 0.0.1 */ export const jsonSchemaPrimitiveInterpreter = memo( - (): ModelAlgebraPrimitive1 => ({ + (): ModelAlgebraPrimitive => ({ _F: JsonSchemaURI, date: config => env => new JsonSchema(jsonSchemaApplyConfig(config)(SEstateEither.of(StringTypeCtor({ format: 'date' })), env)), diff --git a/packages/morphic-json-schema-interpreters/src/model/recursive.ts b/packages/morphic-json-schema-interpreters/src/model/recursive.ts index 4c026f68..9baf2a57 100644 --- a/packages/morphic-json-schema-interpreters/src/model/recursive.ts +++ b/packages/morphic-json-schema-interpreters/src/model/recursive.ts @@ -1,17 +1,18 @@ import type { AnyEnv } from '@morphic-ts/common/lib/config' -import type { ModelAlgebraRecursive1 } from '@morphic-ts/model-algebras/lib/recursive' -import { JsonSchema, JsonSchemaURI } from '../hkt' import { memo } from '@morphic-ts/common/lib/utils' -import { notOptional, JsonSchemaError } from '../json-schema/json-schema-ctors' -import { Ref, isnotTypeRef } from '../json-schema/json-schema' +import type { ModelAlgebraRecursive } from '@morphic-ts/model-algebras/lib/recursive' +import { of as NEof } from 'fp-ts/NonEmptyArray' import { pipe } from 'fp-ts/pipeable' import { - stateEither as SEstateEither, chain as SEchain, fromPredicate as SEfromPredicate, - map as SEmap + map as SEmap, + stateEither as SEstateEither } from 'fp-ts-contrib/lib/StateEither' -import { of as NEof } from 'fp-ts/NonEmptyArray' + +import { JsonSchema, JsonSchemaURI } from '../hkt' +import { isnotTypeRef, Ref } from '../json-schema/json-schema' +import { JsonSchemaError, notOptional } from '../json-schema/json-schema-ctors' import { addSchema, getSchemaStrict } from '../utils' // FIXME: Create a reference JsonSchema => "$ref": "#/definitions/MySchemaRef" <- Track down how to do that! @@ -19,7 +20,7 @@ import { addSchema, getSchemaStrict } from '../utils' * @since 0.0.1 */ export const jsonSchemaRecursiveInterpreter = memo( - (): ModelAlgebraRecursive1 => ({ + (): ModelAlgebraRecursive => ({ _F: JsonSchemaURI, recursive: ( rec: (x: (r: Env) => JsonSchema) => (r: Env) => JsonSchema, diff --git a/packages/morphic-json-schema-interpreters/src/model/refined.ts b/packages/morphic-json-schema-interpreters/src/model/refined.ts index c19665d9..d7fc79a9 100644 --- a/packages/morphic-json-schema-interpreters/src/model/refined.ts +++ b/packages/morphic-json-schema-interpreters/src/model/refined.ts @@ -1,14 +1,15 @@ -import { JsonSchemaURI, JsonSchema } from '../hkt' -import type { ModelAlgebraRefined1 } from '@morphic-ts/model-algebras/lib/refined' -import { jsonSchemaApplyConfig } from '../config' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraRefined } from '@morphic-ts/model-algebras/lib/refined' + +import { jsonSchemaApplyConfig } from '../config' +import { JsonSchema, JsonSchemaURI } from '../hkt' /** * @since 0.0.1 */ export const jsonSchemaRefinedInterpreter = memo( - (): ModelAlgebraRefined1 => ({ + (): ModelAlgebraRefined => ({ _F: JsonSchemaURI, refined: (getJsonSchema, _ref, _name, config) => env => new JsonSchema(jsonSchemaApplyConfig(config)(getJsonSchema(env).schema, env)) diff --git a/packages/morphic-json-schema-interpreters/src/model/set.ts b/packages/morphic-json-schema-interpreters/src/model/set.ts index 418cc41a..c5df27cf 100644 --- a/packages/morphic-json-schema-interpreters/src/model/set.ts +++ b/packages/morphic-json-schema-interpreters/src/model/set.ts @@ -1,16 +1,17 @@ -import type { ModelAlgebraSet1 } from '@morphic-ts/model-algebras/lib/set' import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraSet } from '@morphic-ts/model-algebras/lib/set' +import { pipe } from 'fp-ts/pipeable' +import { chainEitherK as SEchainEitherK } from 'fp-ts-contrib/lib/StateEither' + import { JsonSchema, JsonSchemaURI } from '../hkt' import { SetFromArrayTypeCtor } from '../json-schema/json-schema-ctors' -import { chainEitherK as SEchainEitherK } from 'fp-ts-contrib/lib/StateEither' -import { pipe } from 'fp-ts/pipeable' -import { memo } from '@morphic-ts/common/lib/utils' /** * @since 0.0.1 */ export const jsonSchemaSetInterpreter = memo( - (): ModelAlgebraSet1 => ({ + (): ModelAlgebraSet => ({ _F: JsonSchemaURI, set: getSchema => env => new JsonSchema(pipe(getSchema(env).schema, SEchainEitherK(SetFromArrayTypeCtor))) }) diff --git a/packages/morphic-json-schema-interpreters/src/model/str-map.ts b/packages/morphic-json-schema-interpreters/src/model/str-map.ts index d48be822..53823d2b 100644 --- a/packages/morphic-json-schema-interpreters/src/model/str-map.ts +++ b/packages/morphic-json-schema-interpreters/src/model/str-map.ts @@ -1,17 +1,18 @@ -import type { ModelAlgebraStrMap1 } from '@morphic-ts/model-algebras/lib/str-map' -import { JsonSchema, JsonSchemaURI } from '../hkt' -import { StrMapTypeCtor } from '../json-schema/json-schema-ctors' -import { chainEitherK as SEchainEitherK } from 'fp-ts-contrib/lib/StateEither' -import { pipe } from 'fp-ts/pipeable' -import { jsonSchemaApplyConfig } from '../config' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraStrMap } from '@morphic-ts/model-algebras/lib/str-map' +import { pipe } from 'fp-ts/pipeable' +import { chainEitherK as SEchainEitherK } from 'fp-ts-contrib/lib/StateEither' + +import { jsonSchemaApplyConfig } from '../config' +import { JsonSchema, JsonSchemaURI } from '../hkt' +import { StrMapTypeCtor } from '../json-schema/json-schema-ctors' /** * @since 0.0.1 */ export const jsonSchemaStrMapInterpreter = memo( - (): ModelAlgebraStrMap1 => ({ + (): ModelAlgebraStrMap => ({ _F: JsonSchemaURI, strMap: (getSchema, config) => env => new JsonSchema(jsonSchemaApplyConfig(config)(pipe(getSchema(env).schema, SEchainEitherK(StrMapTypeCtor)), env)), diff --git a/packages/morphic-json-schema-interpreters/src/model/tagged-unions.ts b/packages/morphic-json-schema-interpreters/src/model/tagged-unions.ts index e34b2aea..f71f611c 100644 --- a/packages/morphic-json-schema-interpreters/src/model/tagged-unions.ts +++ b/packages/morphic-json-schema-interpreters/src/model/tagged-unions.ts @@ -1,19 +1,20 @@ -import type { ModelAlgebraTaggedUnions1 } from '@morphic-ts/model-algebras/lib/tagged-unions' -import { JsonSchemaURI, JsonSchema } from '../hkt' -import { UnionTypeCtor } from '../json-schema/json-schema-ctors' -import { toArray } from 'fp-ts/Record' +import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraTaggedUnions } from '@morphic-ts/model-algebras/lib/tagged-unions' import { pipe } from 'fp-ts/pipeable' +import { toArray } from 'fp-ts/Record' import { chainEitherK as SEchainEitherK } from 'fp-ts-contrib/lib/StateEither' -import { arrayTraverseStateEither } from '../utils' + import { jsonSchemaApplyConfig } from '../config' -import type { AnyEnv } from '@morphic-ts/common/lib/config' -import { memo } from '@morphic-ts/common/lib/utils' +import { JsonSchema, JsonSchemaURI } from '../hkt' +import { UnionTypeCtor } from '../json-schema/json-schema-ctors' +import { arrayTraverseStateEither } from '../utils' /** * @since 0.0.1 */ export const jsonSchemaTaggedUnionInterpreter = memo( - (): ModelAlgebraTaggedUnions1 => ({ + (): ModelAlgebraTaggedUnions => ({ _F: JsonSchemaURI, taggedUnion: (_tag, types, _name, config) => env => new JsonSchema( diff --git a/packages/morphic-json-schema-interpreters/src/model/unions.ts b/packages/morphic-json-schema-interpreters/src/model/unions.ts index a9750377..487f5ee0 100644 --- a/packages/morphic-json-schema-interpreters/src/model/unions.ts +++ b/packages/morphic-json-schema-interpreters/src/model/unions.ts @@ -1,17 +1,18 @@ -import type { ModelAlgebraUnions1 } from '@morphic-ts/model-algebras/lib/unions' -import { JsonSchemaURI, JsonSchema } from '../hkt' -import { UnionTypeCtor } from '../json-schema/json-schema-ctors' +import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraUnions } from '@morphic-ts/model-algebras/lib/unions' import { pipe } from 'fp-ts/pipeable' import { chainEitherK as SEchainEitherK } from 'fp-ts-contrib/lib/StateEither' + +import { JsonSchema, JsonSchemaURI } from '../hkt' +import { UnionTypeCtor } from '../json-schema/json-schema-ctors' import { arrayTraverseStateEither } from '../utils' -import type { AnyEnv } from '@morphic-ts/common/lib/config' -import { memo } from '@morphic-ts/common/lib/utils' /** * @since 0.0.1 */ export const jsonSchemaUnionInterpreter = memo( - (): ModelAlgebraUnions1 => ({ + (): ModelAlgebraUnions => ({ _F: JsonSchemaURI, union: (types: ((env: Env) => JsonSchema)[]) => (env: Env) => new JsonSchema( diff --git a/packages/morphic-json-schema-interpreters/src/model/unknown.ts b/packages/morphic-json-schema-interpreters/src/model/unknown.ts index 009078fd..ce3a63f2 100644 --- a/packages/morphic-json-schema-interpreters/src/model/unknown.ts +++ b/packages/morphic-json-schema-interpreters/src/model/unknown.ts @@ -1,16 +1,17 @@ -import { JsonSchema, JsonSchemaURI } from '../hkt' -import { AnythingTypeCtor } from '../json-schema/json-schema-ctors' -import { stateEither as SEstateEither } from 'fp-ts-contrib/lib/StateEither' -import type { ModelAlgebraUnknown1 } from '@morphic-ts/model-algebras/lib/unknown' -import { jsonSchemaApplyConfig } from '../config' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraUnknown } from '@morphic-ts/model-algebras/lib/unknown' +import { stateEither as SEstateEither } from 'fp-ts-contrib/lib/StateEither' + +import { jsonSchemaApplyConfig } from '../config' +import { JsonSchema, JsonSchemaURI } from '../hkt' +import { AnythingTypeCtor } from '../json-schema/json-schema-ctors' /** * @since 0.0.1 */ export const jsonSchemaUnknownInterpreter = memo( - (): ModelAlgebraUnknown1 => ({ + (): ModelAlgebraUnknown => ({ _F: JsonSchemaURI, unknown: config => env => new JsonSchema(jsonSchemaApplyConfig(config)(SEstateEither.of(AnythingTypeCtor()), env)) }) diff --git a/packages/morphic-json-schema-interpreters/src/utils.ts b/packages/morphic-json-schema-interpreters/src/utils.ts index d5a0a1ef..fdea29af 100644 --- a/packages/morphic-json-schema-interpreters/src/utils.ts +++ b/packages/morphic-json-schema-interpreters/src/utils.ts @@ -1,31 +1,27 @@ -import { makeOptional, JsonSchemaError } from './json-schema/json-schema-ctors' -import type { OptionalJSONSchema } from './json-schema/json-schema-ctors' +import { array } from 'fp-ts/Array' +import { fromOption } from 'fp-ts/Either' +import { tuple } from 'fp-ts/function' import type { NonEmptyArray } from 'fp-ts/NonEmptyArray' +import { of } from 'fp-ts/NonEmptyArray' +import type { Option } from 'fp-ts/Option' +import { map, some } from 'fp-ts/Option' +import { pipe } from 'fp-ts/pipeable' +import { insertAt, lookup } from 'fp-ts/Record' +import type { StateEither } from 'fp-ts-contrib/lib/StateEither' import { + chain, + fromOption as SEfromOption, gets, - modify, - stateEither, map as SEmap, - chain, - fromOption as SEfromOption + modify, + stateEither } from 'fp-ts-contrib/lib/StateEither' -import type { StateEither } from 'fp-ts-contrib/lib/StateEither' -import type { SubSchema, JSONSchema } from './json-schema/json-schema' -import { Ref } from './json-schema/json-schema' -import { isTypeRef } from './json-schema/json-schema' - -import { insertAt, lookup } from 'fp-ts/Record' -import { array } from 'fp-ts/Array' -import { of } from 'fp-ts/NonEmptyArray' -import { pipe } from 'fp-ts/pipeable' - -import { tuple } from 'fp-ts/function' import type { JsonSchemaResult, NamedSchemas } from './hkt' -import { map } from 'fp-ts/Option' -import { some } from 'fp-ts/Option' -import type { Option } from 'fp-ts/Option' -import { fromOption } from 'fp-ts/Either' +import type { JSONSchema, SubSchema } from './json-schema/json-schema' +import { isTypeRef, Ref } from './json-schema/json-schema' +import type { OptionalJSONSchema } from './json-schema/json-schema-ctors' +import { JsonSchemaError, makeOptional } from './json-schema/json-schema-ctors' /** * @since 0.0.1 diff --git a/packages/morphic-json-schema-interpreters/test/json-schema-from-io-ts.spec.ts b/packages/morphic-json-schema-interpreters/test/json-schema-from-io-ts.spec.ts index 50fbdb6e..2525caea 100644 --- a/packages/morphic-json-schema-interpreters/test/json-schema-from-io-ts.spec.ts +++ b/packages/morphic-json-schema-interpreters/test/json-schema-from-io-ts.spec.ts @@ -1,11 +1,12 @@ import * as chai from 'chai' -import { right, left } from 'fp-ts/Either' -import { either } from 'fp-ts/Either' -import { JsonSchemaErrors } from '../src/json-schema/json-schema-ctors' -import { of } from 'fp-ts/NonEmptyArray' +import { either, left, right } from 'fp-ts/Either' import { tuple } from 'fp-ts/function' +import { of } from 'fp-ts/NonEmptyArray' + import type { JSONSchema } from '../src/json-schema/json-schema' -import { summonFor, UM } from './summoner.spec' +import { JsonSchemaErrors } from '../src/json-schema/json-schema-ctors' +import type { UM } from './summoner.spec' +import { summonFor } from './summoner.spec' export type Tree = Node | Leaf export interface Node { diff --git a/packages/morphic-json-schema-interpreters/test/summoner.spec.ts b/packages/morphic-json-schema-interpreters/test/summoner.spec.ts index 2eabbd07..88bc6e6e 100644 --- a/packages/morphic-json-schema-interpreters/test/summoner.spec.ts +++ b/packages/morphic-json-schema-interpreters/test/summoner.spec.ts @@ -1,33 +1,33 @@ -import { cacheUnaryFunction } from '@morphic-ts/common/lib/core' - -import type * as U from '@morphic-ts/summoners' -import type { ExtractEnv, SummonerOps } from '@morphic-ts/summoners' -import { makeSummoner } from '@morphic-ts/summoners' -import type { AnyEnv } from '@morphic-ts/common/lib/config' - -import type { InferredAlgebra, InferredProgram } from '@morphic-ts/summoners' import type { GetAlgebra } from '@morphic-ts/algebras/lib/core' - +import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { cacheUnaryFunction } from '@morphic-ts/common/lib/core' +import type { URIS } from '@morphic-ts/common/lib/HKT' import type { IntersectionURI } from '@morphic-ts/model-algebras/lib/intersections' +import type { NewtypeURI } from '@morphic-ts/model-algebras/lib/newtype' import type { ObjectURI } from '@morphic-ts/model-algebras/lib/object' import type { PrimitiveURI } from '@morphic-ts/model-algebras/lib/primitives' import type { RecursiveURI } from '@morphic-ts/model-algebras/lib/recursive' +import type { RefinedURI } from '@morphic-ts/model-algebras/lib/refined' import type { SetURI } from '@morphic-ts/model-algebras/lib/set' import type { StrMapURI } from '@morphic-ts/model-algebras/lib/str-map' import type { TaggedUnionsURI } from '@morphic-ts/model-algebras/lib/tagged-unions' import type { UnionsURI } from '@morphic-ts/model-algebras/lib/unions' import type { UnknownURI } from '@morphic-ts/model-algebras/lib/unknown' -import type { NewtypeURI } from '@morphic-ts/model-algebras/lib/newtype' -import type { RefinedURI } from '@morphic-ts/model-algebras/lib/refined' -import type { AnyConfigEnv } from '@morphic-ts/summoners' -import { Either, chain } from 'fp-ts/Either' -import { NonEmptyArray } from 'fp-ts/NonEmptyArray' -import { JsonSchemaError } from '../src/json-schema/json-schema-ctors' -import { JSONSchema } from '../src/json-schema/json-schema' -import { NamedSchemas, JsonSchemaURI } from '../src/hkt' -import { resolveSchema } from '../src/utils' -import { modelJsonSchemaInterpreter } from '../src' +// eslint-disable-next-line import/no-duplicates +import type * as U from '@morphic-ts/summoners' +// eslint-disable-next-line import/no-duplicates +import type { AnyConfigEnv, ExtractEnv, InferredAlgebra, InferredProgram, SummonerOps } from '@morphic-ts/summoners' +import { makeSummoner } from '@morphic-ts/summoners' +import type { Either } from 'fp-ts/Either' +import { chain } from 'fp-ts/Either' +import type { NonEmptyArray } from 'fp-ts/NonEmptyArray' import { pipe } from 'fp-ts/pipeable' + +import { modelJsonSchemaInterpreter } from '../src' +import type { JsonSchemaURI, NamedSchemas } from '../src/hkt' +import type { JSONSchema } from '../src/json-schema/json-schema' +import type { JsonSchemaError } from '../src/json-schema/json-schema-ctors' +import { resolveSchema } from '../src/utils' /** * @since 0.0.1 */ @@ -40,7 +40,7 @@ export type ProgramUnionURI = typeof ProgramUnionURI /** * @since 0.0.1 */ -export interface AlgebraUnion extends InferredAlgebra {} +export interface AlgebraUnion extends InferredAlgebra {} /** * @since 0.0.1 */ @@ -62,7 +62,7 @@ declare module '@morphic-ts/summoners/lib/ProgramType' { | RefinedURI > } - interface ProgramAlgebra { + interface ProgramAlgebra { [ProgramUnionURI]: AlgebraUnion } interface ProgramType { diff --git a/packages/morphic-model-algebras/docs/modules/intersections.ts.md b/packages/morphic-model-algebras/docs/modules/intersections.ts.md index 0aa2135b..632858d5 100644 --- a/packages/morphic-model-algebras/docs/modules/intersections.ts.md +++ b/packages/morphic-model-algebras/docs/modules/intersections.ts.md @@ -9,8 +9,6 @@ parent: Modules

Table of contents

- [ModelAlgebraIntersection (interface)](#modelalgebraintersection-interface) -- [ModelAlgebraIntersection1 (interface)](#modelalgebraintersection1-interface) -- [ModelAlgebraIntersection2 (interface)](#modelalgebraintersection2-interface) - [IntersectionURI (type alias)](#intersectionuri-type-alias) - [IntersectionURI (constant)](#intersectionuri-constant) @@ -21,88 +19,29 @@ parent: Modules **Signature** ```ts -export interface ModelAlgebraIntersection { +export interface ModelAlgebraIntersection { _F: F intersection: { - (types: [HKT2, HKT2], name: string): HKT2 - (types: [HKT2, HKT2, HKT2], name: string): HKT2< - F, - Env, - LA & LB & LC, - A & B & C - > - ( - types: [HKT2, HKT2, HKT2, HKT2], - name: string - ): HKT2 - ( - types: [HKT2, HKT2, HKT2, HKT2, HKT2], - name: string - ): HKT2 - (types: Array>): HKT2, Array
> - } -} -``` - -Added in v0.0.1 - -# ModelAlgebraIntersection1 (interface) - -**Signature** - -```ts -export interface ModelAlgebraIntersection1 { - _F: F - intersection: { - (types: [OfType, OfType], name: string): Kind - (types: [OfType, OfType, OfType], name: string): Kind< - F, - Env, - A & B & C - > - ( - types: [OfType, OfType, OfType, OfType], - name: string - ): Kind - ( - types: [OfType, OfType, OfType, OfType, OfType], - name: string - ): Kind - (types: Array>, name: string): Kind> - } -} -``` - -Added in v0.0.1 - -# ModelAlgebraIntersection2 (interface) - -**Signature** - -```ts -export interface ModelAlgebraIntersection2 { - _F: F - intersection: { - (types: [OfType2, OfType2], name: string): Kind2 + (types: [OfType, OfType], name: string): Kind ( - types: [OfType2, OfType2, OfType2], + types: [OfType, OfType, OfType], name: string - ): Kind2 + ): Kind ( - types: [OfType2, OfType2, OfType2, OfType2], + types: [OfType, OfType, OfType, OfType], name: string - ): Kind2 + ): Kind ( types: [ - OfType2, - OfType2, - OfType2, - OfType2, - OfType2 + OfType, + OfType, + OfType, + OfType, + OfType ], name: string - ): Kind2 - (types: Array>, name: string): Kind2, Array> + ): Kind + (types: Array>, name: string): Kind, Array> } } ``` diff --git a/packages/morphic-model-algebras/docs/modules/newtype.ts.md b/packages/morphic-model-algebras/docs/modules/newtype.ts.md index 9d26e6ba..345250fc 100644 --- a/packages/morphic-model-algebras/docs/modules/newtype.ts.md +++ b/packages/morphic-model-algebras/docs/modules/newtype.ts.md @@ -9,8 +9,6 @@ parent: Modules

Table of contents

- [ModelAlgebraNewtype (interface)](#modelalgebranewtype-interface) -- [ModelAlgebraNewtype1 (interface)](#modelalgebranewtype1-interface) -- [ModelAlgebraNewtype2 (interface)](#modelalgebranewtype2-interface) - [AnyNewtype (type alias)](#anynewtype-type-alias) - [NewtypeA (type alias)](#newtypea-type-alias) - [NewtypeURI (type alias)](#newtypeuri-type-alias) @@ -23,43 +21,11 @@ parent: Modules **Signature** ```ts -export interface ModelAlgebraNewtype { - _F: F - newtype: ( - name: string - ) => { - (a: HKT2>, config?: ConfigsForType): HKT2 - } -} -``` - -Added in v0.0.1 - -# ModelAlgebraNewtype1 (interface) - -**Signature** - -```ts -export interface ModelAlgebraNewtype1 { - _F: F - newtype( - name: string // on purpose type relaxation `Kind` instead of `Kind>` - ): (a: Kind, config?: ConfigsForType) => Kind -} -``` - -Added in v0.0.1 - -# ModelAlgebraNewtype2 (interface) - -**Signature** - -```ts -export interface ModelAlgebraNewtype2 { +export interface ModelAlgebraNewtype { _F: F newtype( name: string // on purpose type relaxation `Kind` instead of `Kind>` - ): (a: Kind2, config?: ConfigsForType) => Kind2 + ): (a: Kind>, config?: ConfigsForType) => Kind } ``` diff --git a/packages/morphic-model-algebras/docs/modules/object.ts.md b/packages/morphic-model-algebras/docs/modules/object.ts.md index 67e4631c..8938270c 100644 --- a/packages/morphic-model-algebras/docs/modules/object.ts.md +++ b/packages/morphic-model-algebras/docs/modules/object.ts.md @@ -9,11 +9,11 @@ parent: Modules

Table of contents

- [ModelAlgebraObject (interface)](#modelalgebraobject-interface) -- [ModelAlgebraObject1 (interface)](#modelalgebraobject1-interface) -- [ModelAlgebraObject2 (interface)](#modelalgebraobject2-interface) +- [AnyProps (type alias)](#anyprops-type-alias) - [ObjectURI (type alias)](#objecturi-type-alias) -- [PropsKind1 (type alias)](#propskind1-type-alias) -- [PropsKind2 (type alias)](#propskind2-type-alias) +- [PropsA (type alias)](#propsa-type-alias) +- [PropsE (type alias)](#propse-type-alias) +- [PropsKind (type alias)](#propskind-type-alias) - [ObjectURI (constant)](#objecturi-constant) --- @@ -23,145 +23,183 @@ parent: Modules **Signature** ```ts -export interface ModelAlgebraObject { +export interface ModelAlgebraObject { _F: F - interface: { - >( - props: Props, - name: string, - config?: ConfigsForType< - Env, - Readonly<{ [k in keyof Props]: Props[k]['_E'] }>, - Readonly<{ [k in keyof Props]: Props[k]['_A'] }> - > - ): HKT2, Readonly<{ [k in keyof Props]: Props[k]['_A'] }>> - } - partial: { - >( - props: Props, - name: string, - config?: ConfigsForType< - Env, - Partial>, - Partial> - > - ): HKT2< - F, + interface: >( + props: Props, + name: string, + config?: ConfigsForType< Env, - Partial>, - Partial> + Readonly< + { + [k in keyof Props]: Props[k]['_E'] + } + >, + Readonly< + { + [k in keyof Props]: Props[k]['_A'] + } + > > - } - both: { - , PProps extends AnyMProps>( - props: Props, - partial: PProps, - name: string, - config?: ConfigsForType< - Env, - Readonly<{ [k in keyof Props]: Props[k]['_E'] }> & Partial>, - Readonly<{ [k in keyof Props]: Props[k]['_A'] }> & Partial> + ) => Kind< + F, + Env, + Readonly< + { + [k in keyof Props]: Props[k]['_E'] + } + >, + Readonly< + { + [k in keyof Props]: Props[k]['_A'] + } + > + > + partial: >( + props: Props, + name: string, + config?: ConfigsForType< + Env, + Partial< + Readonly< + { + [k in keyof Props]: Props[k]['_E'] + } + > + >, + Partial< + Readonly< + { + [k in keyof Props]: Props[k]['_A'] + } + > > - ): HKT2< + > + ) => Kind< + F, + Env, + Partial< + { + [k in keyof Props]: Props[k]['_E'] + } + >, + Partial< + { + [k in keyof Props]: Props[k]['_A'] + } + > + > + both: , PartialProps extends AnyProps>( + props: PropsKind< F, + { + [k in keyof Props]: Props[k]['_E'] + }, + { + [k in keyof Props]: Props[k]['_A'] + }, + Env + >, + partial: PropsKind, PropsA, Env>, + name: string, + config?: ConfigsForType< Env, - Readonly<{ [k in keyof Props]: Props[k]['_E'] }> & Partial>, - Readonly<{ [k in keyof Props]: Props[k]['_A'] }> & Partial> + Readonly< + { + [k in keyof Props]: Props[k]['_E'] + } & + Partial> + >, + Readonly< + { + [k in keyof Props]: Props[k]['_A'] + } & + Partial> + > > - } + ) => Kind< + F, + Env, + Readonly< + { + [k in keyof Props]: Props[k]['_E'] + } & + Partial> + >, + Readonly< + { + [k in keyof Props]: Props[k]['_A'] + } & + Partial> + > + > } ``` Added in v0.0.1 -# ModelAlgebraObject1 (interface) +# AnyProps (type alias) **Signature** ```ts -export interface ModelAlgebraObject1 { - _F: F - interface: ( - props: PropsKind1, - name: string, - config?: ConfigsForType> - ) => Kind> - partial: ( - props: PropsKind1, - name: string, - config?: ConfigsForType>> - ) => Kind>> - both: ( - props: PropsKind1, Env>, - partial: PropsKind1, Env>, - name: string, - config?: ConfigsForType>> - ) => Kind & Partial>> -} +export type AnyProps = { [k in keyof Props]: HKT } ``` Added in v0.0.1 -# ModelAlgebraObject2 (interface) +# ObjectURI (type alias) **Signature** ```ts -export interface ModelAlgebraObject2 { - _F: F - interface: ( - props: PropsKind2, - name: string, - config?: ConfigsForType, Readonly> - ) => Kind2, Readonly> - partial: ( - props: PropsKind2, Readonly, Env>, - name: string, - config?: ConfigsForType>, Partial>> - ) => Kind2, Partial> - both: ( - props: PropsKind2, - partial: PropsKind2, - name: string, - config?: ConfigsForType< - Env, - Readonly & Partial>, - Readonly & Partial> - > - ) => Kind2 & Partial>, Readonly & Partial>> -} +export type ObjectURI = typeof ObjectURI ``` Added in v0.0.1 -# ObjectURI (type alias) +# PropsA (type alias) **Signature** ```ts -export type ObjectURI = typeof ObjectURI +export type PropsA< + Props extends { + [k in keyof Props]: HKT + } +> = { + [k in keyof Props]: Props[k]['_A'] +} ``` Added in v0.0.1 -# PropsKind1 (type alias) +# PropsE (type alias) **Signature** ```ts -export type PropsKind1 = Readonly<{ [k in keyof PropsA]: Kind }> +export type PropsE< + Props extends { + [k in keyof Props]: HKT + } +> = { + [k in keyof Props]: Props[k]['_E'] +} ``` Added in v0.0.1 -# PropsKind2 (type alias) +# PropsKind (type alias) + +/\*\* **Signature** ```ts -export type PropsKind2 = Readonly< +export type PropsKind = Readonly< { - [k in keyof PropsA & keyof PropsE]: Kind2 + [k in keyof PropsA & keyof PropsE]: Kind } > ``` diff --git a/packages/morphic-model-algebras/docs/modules/primitives.ts.md b/packages/morphic-model-algebras/docs/modules/primitives.ts.md index db58ec81..8ec849f7 100644 --- a/packages/morphic-model-algebras/docs/modules/primitives.ts.md +++ b/packages/morphic-model-algebras/docs/modules/primitives.ts.md @@ -9,8 +9,6 @@ parent: Modules

Table of contents

- [ModelAlgebraPrimitive (interface)](#modelalgebraprimitive-interface) -- [ModelAlgebraPrimitive1 (interface)](#modelalgebraprimitive1-interface) -- [ModelAlgebraPrimitive2 (interface)](#modelalgebraprimitive2-interface) - [Keys (type alias)](#keys-type-alias) - [PrimitiveURI (type alias)](#primitiveuri-type-alias) - [PrimitiveURI (constant)](#primitiveuri-constant) @@ -22,164 +20,46 @@ parent: Modules **Signature** ```ts -export interface ModelAlgebraPrimitive { - _F: F - nullable: { - (T: HKT2, config?: ConfigsForType>): HKT2> - } - boolean: { - (config?: ConfigsForType): HKT2 - } - number: { - (config?: ConfigsForType): HKT2 - } - bigint: { - (config?: ConfigsForType): HKT2 - } - string: { - (config?: ConfigsForType): HKT2 - } - stringLiteral: { - (value: T, config?: ConfigsForType): HKT2 - } - tag: { - (value: T, config?: ConfigsForType): HKT2 - } - keysOf: { - (keys: K, config?: ConfigsForType): HKT2 - } - mutable: { - (a: HKT2, config?: ConfigsForType, Mutable
>): HKT2< - F, - Env, - Mutable, - Mutable - > - } - array: { - (a: HKT2, config?: ConfigsForType, Array>): HKT2, Array> - } - nonEmptyArray: { - (a: HKT2, config?: ConfigsForType>): HKT2< - F, - Env, - L[], - ReadonlyNonEmptyArray - > - } - date: { - (config?: ConfigsForType): HKT2 - } - uuid: { - (config?: ConfigsForType): HKT2 - } - either: { - ( - e: HKT2, - a: HKT2, - config?: ConfigsForType, Either> - ): HKT2, Either> - } - option: { - (a: HKT2, config?: ConfigsForType, Option>): HKT2< - F, - Env, - Option, - Option - > - } -} -``` - -Added in v0.0.1 - -# ModelAlgebraPrimitive1 (interface) - -**Signature** - -```ts -export interface ModelAlgebraPrimitive1 { - _F: F - nullable: (T: Kind, config?: ConfigsForType>) => Kind> - boolean(config?: ConfigsForType): Kind - number(config?: ConfigsForType): Kind - bigint(config?: ConfigsForType): Kind - string(config?: ConfigsForType): Kind - stringLiteral: (value: T, config?: ConfigsForType) => Kind - tag: (value: T, config?: ConfigsForType) => Kind - keysOf: (keys: K, config?: ConfigsForType) => Kind - mutable: ( - a: Kind, - config?: ConfigsForType, Mutable> - ) => Kind> - array: (a: Kind, config?: ConfigsForType, Array>) => Kind> - nonEmptyArray: ( - a: Kind, - config?: ConfigsForType, ReadonlyNonEmptyArray> - ) => Kind> - date(config?: ConfigsForType): Kind - uuid(config?: ConfigsForType): Kind - either: ( - e: Kind, - a: Kind, - config?: ConfigsForType> - ) => Kind> - option: { - (a: Kind, config?: ConfigsForType>): Kind> - } -} -``` - -Added in v0.0.1 - -# ModelAlgebraPrimitive2 (interface) - -**Signature** - -```ts -export interface ModelAlgebraPrimitive2 { +export interface ModelAlgebraPrimitive { _F: F nullable: ( - T: Kind2, + T: Kind, config?: ConfigsForType> - ) => Kind2> - boolean(config?: ConfigsForType): Kind2 - number(config?: ConfigsForType): Kind2 - bigint(config?: ConfigsForType): Kind2 - string(config?: ConfigsForType): Kind2 + ) => Kind> + boolean(config?: ConfigsForType): Kind + number(config?: ConfigsForType): Kind + bigint(config?: ConfigsForType): Kind + string(config?: ConfigsForType): Kind stringLiteral: ( value: T, config?: ConfigsForType - ) => Kind2 - tag: ( - value: T, - config?: ConfigsForType - ) => Kind2 + ) => Kind + tag: (value: T, config?: ConfigsForType) => Kind keysOf: ( keys: K, config?: ConfigsForType - ) => Kind2 + ) => Kind mutable: ( - a: Kind2, + a: Kind, config?: ConfigsForType, Mutable> - ) => Kind2, Mutable> + ) => Kind, Mutable> array: ( - a: Kind2, + a: Kind, config?: ConfigsForType, Array> - ) => Kind2, Array> + ) => Kind, Array> nonEmptyArray: ( - a: Kind2, + a: Kind, config?: ConfigsForType, ReadonlyNonEmptyArray> - ) => Kind2, ReadonlyNonEmptyArray> - date(config?: ConfigsForType): Kind2 - uuid(config?: ConfigsForType): Kind2 + ) => Kind, ReadonlyNonEmptyArray> + date(config?: ConfigsForType): Kind + uuid(config?: ConfigsForType): Kind either: ( - e: Kind2, - a: Kind2, + e: Kind, + a: Kind, config?: ConfigsForType, Either> - ) => Kind2, Either> + ) => Kind, Either> option: { - (a: Kind2, config?: ConfigsForType, Option>): Kind2< + (a: Kind, config?: ConfigsForType, Option>): Kind< F, Env, Option, diff --git a/packages/morphic-model-algebras/docs/modules/recursive.ts.md b/packages/morphic-model-algebras/docs/modules/recursive.ts.md index 81091200..123bdd37 100644 --- a/packages/morphic-model-algebras/docs/modules/recursive.ts.md +++ b/packages/morphic-model-algebras/docs/modules/recursive.ts.md @@ -9,8 +9,6 @@ parent: Modules

Table of contents

- [ModelAlgebraRecursive (interface)](#modelalgebrarecursive-interface) -- [ModelAlgebraRecursive1 (interface)](#modelalgebrarecursive1-interface) -- [ModelAlgebraRecursive2 (interface)](#modelalgebrarecursive2-interface) - [RecursiveURI (type alias)](#recursiveuri-type-alias) - [RecursiveURI (constant)](#recursiveuri-constant) @@ -21,35 +19,9 @@ parent: Modules **Signature** ```ts -export interface ModelAlgebraRecursive { +export interface ModelAlgebraRecursive { _F: F - recursive: (a: (x: HKT2) => HKT2, name: string) => HKT2 -} -``` - -Added in v0.0.1 - -# ModelAlgebraRecursive1 (interface) - -**Signature** - -```ts -export interface ModelAlgebraRecursive1 { - _F: F - recursive:
(a: (x: Kind) => Kind, name: string) => Kind -} -``` - -Added in v0.0.1 - -# ModelAlgebraRecursive2 (interface) - -**Signature** - -```ts -export interface ModelAlgebraRecursive2 { - _F: F - recursive: (a: (x: Kind2) => Kind2, name: string) => Kind2 + recursive: (a: (x: Kind) => Kind, name: string) => Kind } ``` diff --git a/packages/morphic-model-algebras/docs/modules/refined.ts.md b/packages/morphic-model-algebras/docs/modules/refined.ts.md index d5b58994..19b987de 100644 --- a/packages/morphic-model-algebras/docs/modules/refined.ts.md +++ b/packages/morphic-model-algebras/docs/modules/refined.ts.md @@ -9,8 +9,6 @@ parent: Modules

Table of contents

- [ModelAlgebraRefined (interface)](#modelalgebrarefined-interface) -- [ModelAlgebraRefined1 (interface)](#modelalgebrarefined1-interface) -- [ModelAlgebraRefined2 (interface)](#modelalgebrarefined2-interface) - [RefinedURI (type alias)](#refineduri-type-alias) - [RefinedURI (constant)](#refineduri-constant) @@ -21,52 +19,14 @@ parent: Modules **Signature** ```ts -export interface ModelAlgebraRefined { - _F: F - refined: { - ( - a: HKT2, - refinement: Refinement, - name: string, - config?: ConfigsForType - ): HKT2 - } -} -``` - -Added in v0.0.1 - -# ModelAlgebraRefined1 (interface) - -**Signature** - -```ts -export interface ModelAlgebraRefined1 { - _F: F - refined( - a: Kind, - refinement: Refinement, - name: string, - config?: ConfigsForType - ): Kind -} -``` - -Added in v0.0.1 - -# ModelAlgebraRefined2 (interface) - -**Signature** - -```ts -export interface ModelAlgebraRefined2 { +export interface ModelAlgebraRefined { _F: F refined( - a: Kind2, + a: Kind, refinement: Refinement, name: string, config?: ConfigsForType - ): Kind2 + ): Kind } ``` diff --git a/packages/morphic-model-algebras/docs/modules/set.ts.md b/packages/morphic-model-algebras/docs/modules/set.ts.md index 7cb2cf90..93325308 100644 --- a/packages/morphic-model-algebras/docs/modules/set.ts.md +++ b/packages/morphic-model-algebras/docs/modules/set.ts.md @@ -9,8 +9,6 @@ parent: Modules

Table of contents

- [ModelAlgebraSet (interface)](#modelalgebraset-interface) -- [ModelAlgebraSet1 (interface)](#modelalgebraset1-interface) -- [ModelAlgebraSet2 (interface)](#modelalgebraset2-interface) - [SetURI (type alias)](#seturi-type-alias) - [SetURI (constant)](#seturi-constant) @@ -21,35 +19,9 @@ parent: Modules **Signature** ```ts -export interface ModelAlgebraSet { +export interface ModelAlgebraSet { _F: F - set: (a: HKT2, ord: Ord
) => HKT2, Set> -} -``` - -Added in v0.0.1 - -# ModelAlgebraSet1 (interface) - -**Signature** - -```ts -export interface ModelAlgebraSet1 { - _F: F - set: (a: Kind, ord: Ord) => Kind> -} -``` - -Added in v0.0.1 - -# ModelAlgebraSet2 (interface) - -**Signature** - -```ts -export interface ModelAlgebraSet2 { - _F: F - set: (a: Kind2, ord: Ord) => Kind2, Set> + set: (a: Kind, ord: Ord) => Kind, Set> } ``` diff --git a/packages/morphic-model-algebras/docs/modules/str-map.ts.md b/packages/morphic-model-algebras/docs/modules/str-map.ts.md index fd5f1fcd..df6db02c 100644 --- a/packages/morphic-model-algebras/docs/modules/str-map.ts.md +++ b/packages/morphic-model-algebras/docs/modules/str-map.ts.md @@ -9,8 +9,6 @@ parent: Modules

Table of contents

- [ModelAlgebraStrMap (interface)](#modelalgebrastrmap-interface) -- [ModelAlgebraStrMap1 (interface)](#modelalgebrastrmap1-interface) -- [ModelAlgebraStrMap2 (interface)](#modelalgebrastrmap2-interface) - [StrMapURI (type alias)](#strmapuri-type-alias) - [StrMapURI (constant)](#strmapuri-constant) @@ -21,63 +19,17 @@ parent: Modules **Signature** ```ts -export interface ModelAlgebraStrMap { - _F: F - strMap: { - ( - codomain: HKT2, - config?: ConfigsForType>, Readonly>> - ): HKT2>, Readonly>> - } - record: { - ( - domain: HKT2, - codomain: HKT2, - config?: ConfigsForType>, Readonly>> - ): HKT2>, Readonly>> - } -} -``` - -Added in v0.0.1 - -# ModelAlgebraStrMap1 (interface) - -**Signature** - -```ts -export interface ModelAlgebraStrMap1 { - _F: F - strMap:
( - codomain: Kind, - config?: ConfigsForType>> - ) => Kind>> - record: ( - domain: Kind, - codomain: Kind, - config?: ConfigsForType>> - ) => Kind>> -} -``` - -Added in v0.0.1 - -# ModelAlgebraStrMap2 (interface) - -**Signature** - -```ts -export interface ModelAlgebraStrMap2 { +export interface ModelAlgebraStrMap { _F: F strMap: ( - codomain: Kind2, + codomain: Kind, config?: ConfigsForType>, Readonly>> - ) => Kind2>, Readonly>> + ) => Kind>, Readonly>> record: ( - domain: Kind2, - codomain: Kind2, + domain: Kind, + codomain: Kind, config?: ConfigsForType>, Readonly>> - ) => Kind2>, Readonly>> + ) => Kind>, Readonly>> } ``` diff --git a/packages/morphic-model-algebras/docs/modules/tagged-unions.ts.md b/packages/morphic-model-algebras/docs/modules/tagged-unions.ts.md index ed8927e4..f9718d06 100644 --- a/packages/morphic-model-algebras/docs/modules/tagged-unions.ts.md +++ b/packages/morphic-model-algebras/docs/modules/tagged-unions.ts.md @@ -9,13 +9,7 @@ parent: Modules

Table of contents

- [ModelAlgebraTaggedUnions (interface)](#modelalgebrataggedunions-interface) -- [ModelAlgebraTaggedUnions1 (interface)](#modelalgebrataggedunions1-interface) -- [ModelAlgebraTaggedUnions2 (interface)](#modelalgebrataggedunions2-interface) -- [TaggedTypes (type alias)](#taggedtypes-type-alias) -- [TaggedTypes1 (type alias)](#taggedtypes1-type-alias) -- [TaggedTypes2 (type alias)](#taggedtypes2-type-alias) - [TaggedUnionsURI (type alias)](#taggedunionsuri-type-alias) -- [TaggedValues (type alias)](#taggedvalues-type-alias) - [TaggedUnionsURI (constant)](#taggedunionsuri-constant) --- @@ -25,93 +19,21 @@ parent: Modules **Signature** ```ts -export interface ModelAlgebraTaggedUnions { +export interface ModelAlgebraTaggedUnions { _F: F taggedUnion: { - >( + >( tag: Tag, - types: Types & { [o in keyof Types]: DecorateTag }, + types: Types, name: string, - config?: ConfigsForType - ): HKT2 + config?: ConfigsForType, PropsA> + ): Kind, PropsA> } } ``` Added in v0.0.1 -# ModelAlgebraTaggedUnions1 (interface) - -**Signature** - -```ts -export interface ModelAlgebraTaggedUnions1 { - _F: F - taggedUnion( - tag: Tag, - types: TaggedTypes1, - name: string, - config?: ConfigsForType[keyof O]> - ): Kind[keyof O]> -} -``` - -Added in v0.0.1 - -# ModelAlgebraTaggedUnions2 (interface) - -**Signature** - -```ts -export interface ModelAlgebraTaggedUnions2 { - _F: F - taggedUnion( - tag: Tag, - types: TaggedTypes2, - name: string, - config?: ConfigsForType[keyof L], TaggedValues[keyof A]> - ): Kind2[keyof L], TaggedValues[keyof A]> -} -``` - -Added in v0.0.1 - -# TaggedTypes (type alias) - -**Signature** - -```ts -export type TaggedTypes = { - [o in keyof A & keyof L]: HKT2 -} -``` - -Added in v0.0.1 - -# TaggedTypes1 (type alias) - -**Signature** - -```ts -export type TaggedTypes1 = { - [o in keyof O]: Kind -} -``` - -Added in v0.0.1 - -# TaggedTypes2 (type alias) - -**Signature** - -```ts -export type TaggedTypes2 = { - [o in keyof A & keyof L]: Kind2 -} -``` - -Added in v0.0.1 - # TaggedUnionsURI (type alias) **Signature** @@ -122,16 +44,6 @@ export type TaggedUnionsURI = typeof TaggedUnionsURI Added in v0.0.1 -# TaggedValues (type alias) - -**Signature** - -```ts -export type TaggedValues = { [o in keyof O]: O[o] & { [t in Tag]: o } } -``` - -Added in v0.0.1 - # TaggedUnionsURI (constant) **Signature** diff --git a/packages/morphic-model-algebras/docs/modules/unions.ts.md b/packages/morphic-model-algebras/docs/modules/unions.ts.md index 4eb12111..21d72e8d 100644 --- a/packages/morphic-model-algebras/docs/modules/unions.ts.md +++ b/packages/morphic-model-algebras/docs/modules/unions.ts.md @@ -9,8 +9,6 @@ parent: Modules

Table of contents

- [ModelAlgebraUnions (interface)](#modelalgebraunions-interface) -- [ModelAlgebraUnions1 (interface)](#modelalgebraunions1-interface) -- [ModelAlgebraUnions2 (interface)](#modelalgebraunions2-interface) - [UnionsURI (type alias)](#unionsuri-type-alias) - [UnionsURI (constant)](#unionsuri-constant) @@ -21,84 +19,29 @@ parent: Modules **Signature** ```ts -export interface ModelAlgebraUnions { +export interface ModelAlgebraUnions { _F: F union: { - (types: [HKT2, HKT2], name: string): HKT2 - (types: [HKT2, HKT2, HKT2], name: string): HKT2< - F, - Env, - LA | LB | LC, - A | B | C - > - ( - types: [HKT2, HKT2, HKT2, HKT2], - name: string - ): HKT2 - ( - types: [HKT2, HKT2, HKT2, HKT2, HKT2], - name: string - ): HKT2 - (types: Array>, name: string): HKT2, Array
> - } -} -``` - -Added in v0.0.1 - -# ModelAlgebraUnions1 (interface) - -**Signature** - -```ts -export interface ModelAlgebraUnions1 { - _F: F - union: { - (types: [OfType, OfType], name: string): Kind - (types: [OfType, OfType, OfType], name: string): Kind - ( - types: [OfType, OfType, OfType, OfType], - name: string - ): Kind - ( - types: [OfType, OfType, OfType, OfType, OfType], - name: string - ): Kind - (types: Array>, name: string): Kind> - } -} -``` - -Added in v0.0.1 - -# ModelAlgebraUnions2 (interface) - -**Signature** - -```ts -export interface ModelAlgebraUnions2 { - _F: F - union: { - (types: [OfType2, OfType2], name: string): Kind2 + (types: [OfType, OfType], name: string): Kind ( - types: [OfType2, OfType2, OfType2], + types: [OfType, OfType, OfType], name: string - ): Kind2 + ): Kind ( - types: [OfType2, OfType2, OfType2, OfType2], + types: [OfType, OfType, OfType, OfType], name: string - ): Kind2 + ): Kind ( types: [ - OfType2, - OfType2, - OfType2, - OfType2, - OfType2 + OfType, + OfType, + OfType, + OfType, + OfType ], name: string - ): Kind2 - (types: Array>, name: string): Kind2, Array> + ): Kind + (types: Array>, name: string): Kind, Array> } } ``` diff --git a/packages/morphic-model-algebras/docs/modules/unknown.ts.md b/packages/morphic-model-algebras/docs/modules/unknown.ts.md index e6574571..2643caca 100644 --- a/packages/morphic-model-algebras/docs/modules/unknown.ts.md +++ b/packages/morphic-model-algebras/docs/modules/unknown.ts.md @@ -9,8 +9,6 @@ parent: Modules

Table of contents

- [ModelAlgebraUnknown (interface)](#modelalgebraunknown-interface) -- [ModelAlgebraUnknown1 (interface)](#modelalgebraunknown1-interface) -- [ModelAlgebraUnknown2 (interface)](#modelalgebraunknown2-interface) - [Keys (type alias)](#keys-type-alias) - [UnknownURI (type alias)](#unknownuri-type-alias) - [UnknownURI (constant)](#unknownuri-constant) @@ -22,37 +20,9 @@ parent: Modules **Signature** ```ts -export interface ModelAlgebraUnknown { +export interface ModelAlgebraUnknown { _F: F - unknown: { - (config?: ConfigsForType): HKT2 - } -} -``` - -Added in v0.0.1 - -# ModelAlgebraUnknown1 (interface) - -**Signature** - -```ts -export interface ModelAlgebraUnknown1 { - _F: F - unknown(config?: ConfigsForType): Kind -} -``` - -Added in v0.0.1 - -# ModelAlgebraUnknown2 (interface) - -**Signature** - -```ts -export interface ModelAlgebraUnknown2 { - _F: F - unknown(config?: ConfigsForType): Kind2 + unknown(config?: ConfigsForType): Kind } ``` diff --git a/packages/morphic-model-algebras/dtslint/ts3.8/index.ts b/packages/morphic-model-algebras/dtslint/ts3.8/index.ts index 3b136c6f..0d338f7d 100644 --- a/packages/morphic-model-algebras/dtslint/ts3.8/index.ts +++ b/packages/morphic-model-algebras/dtslint/ts3.8/index.ts @@ -4,10 +4,10 @@ import type { ModelAlgebraObject } from '../../src/object' import type { Eq } from 'fp-ts/Eq' import type { AnyEnv } from '@morphic-ts/common/lib/config' import type {} from '@morphic-ts/algebras/lib/hkt' -import type { HKT2 } from '@morphic-ts/common/lib/HKT' +import type { HKT, Kind, URIS } from '@morphic-ts/common/lib/HKT' declare module '@morphic-ts/common/lib/HKT' { - interface URItoKind { + interface URItoKind { ['Eq']: (env: R) => TypeEq
} } @@ -20,17 +20,17 @@ export class TypeEq { const dummy = 42 // $ExpectType 42 -const foo = () => , Env extends MEnv>( - f: (x: ModelAlgebraTaggedUnions & ModelAlgebraPrimitive & ModelAlgebraObject) => R +const foo = () => , Env extends MEnv>( + f: (x: ModelAlgebraTaggedUnions<"HKT", Env> & ModelAlgebraPrimitive<"HKT", Env> & ModelAlgebraObject<"HKT", Env>) => R ): R => f as any -const summon = () => , Env extends MEnv>( - f: (x: ModelAlgebraTaggedUnions & ModelAlgebraPrimitive & ModelAlgebraObject) => R +const summon = () => , Env extends MEnv>( + f: (x: ModelAlgebraTaggedUnions<"HKT", Env> & ModelAlgebraPrimitive<"HKT", Env> & ModelAlgebraObject<"HKT", Env>) => R ) => f -// $ExpectType HKT2, Readonly<{ type: "a"; }>> +// $ExpectType HKT<{}, Readonly<{ type: string; }>, Readonly<{ type: "a"; }>> foo()(F => F.taggedUnion('type', { a: F.interface({ type: F.stringLiteral('a') }, 'A') }, 'X')) -// $ExpectType HKT2 | Readonly<{ type: string; }>, Readonly<{ type: "a"; }> | Readonly<{ type: "b"; }>> +// $ExpectType HKT<{}, Readonly<{ type: string; }>, Readonly<{ type: "a"; }> | Readonly<{ type: "b"; }>> foo()(F => F.taggedUnion( 'type', @@ -55,10 +55,10 @@ interface Deps2 extends AnyEnv { Eq: EqDeps2 } -// $ExpezctType HKT2 +// $ExpezctType HKT foo()(F => F.stringLiteral<'a'>('a', { Eq: (x, d: EqDeps) => x })) -// $ExpectType HKT2, Readonly<{ type: "a"; }>> +// $ExpectType HKT, Readonly<{ type: "a"; }>> foo()(F => F.interface( { type: F.stringLiteral<'a'>('a', { Eq: (x, d: EqDeps) => x }) }, @@ -66,7 +66,8 @@ foo()(F => ) ) -// $ExpectType HKT2 | Readonly<{ type: string; }>, Readonly<{ type: "a"; }> | Readonly<{ type: "b"; }>> +// tslint:disable-next-line: max-line-length +// $ExpectType HKT, Readonly<{ type: "a"; }> | Readonly<{ type: "b"; }>> foo()(F => F.taggedUnion( 'type', @@ -84,7 +85,8 @@ foo()(F => ) ) -// $ExpectType HKT2 | Readonly<{ type: string; }>, Readonly<{ type: "a"; }> | Readonly<{ type: "b"; }>> +// tslint:disable-next-line: max-line-length +// $ExpectType HKT, Readonly<{ type: "a"; }> | Readonly<{ type: "b"; }>> foo()(F => F.taggedUnion( 'type', diff --git a/packages/morphic-model-algebras/package.json b/packages/morphic-model-algebras/package.json index 84218bc1..57b5822d 100644 --- a/packages/morphic-model-algebras/package.json +++ b/packages/morphic-model-algebras/package.json @@ -1,6 +1,6 @@ { "name": "@morphic-ts/model-algebras", - "version": "3.0.0-alpha.0", + "version": "3.0.0-alpha.2", "description": "Morphic definitions for models", "author": "Stéphane Le Dorze ", "homepage": "", @@ -21,8 +21,8 @@ "es6" ], "dependencies": { - "@morphic-ts/algebras": "^3.0.0-alpha.0", - "@morphic-ts/common": "^3.0.0-alpha.0" + "@morphic-ts/algebras": "^3.0.0-alpha.2", + "@morphic-ts/common": "^3.0.0-alpha.2" }, "devDependencies": { "fp-ts": "^2.5.3", diff --git a/packages/morphic-model-algebras/src/intersections.ts b/packages/morphic-model-algebras/src/intersections.ts index 9785aab4..8031b297 100644 --- a/packages/morphic-model-algebras/src/intersections.ts +++ b/packages/morphic-model-algebras/src/intersections.ts @@ -1,6 +1,6 @@ -import type { OfType, OfType2 } from '@morphic-ts/common/lib/core' -import type { URIS, Kind, URIS2, Kind2, HKT2 } from '@morphic-ts/common/lib//HKT' +import type { Kind, URIS } from '@morphic-ts/common/lib//HKT' import type { AnyEnv } from '@morphic-ts/common/lib/config' +import type { OfType } from '@morphic-ts/common/lib/core' /** * @since 0.0.1 */ @@ -11,91 +11,36 @@ export const IntersectionURI = 'IntersectionURI' as const export type IntersectionURI = typeof IntersectionURI declare module '@morphic-ts/algebras/lib/hkt' { - export interface Algebra { + export interface Algebra { [IntersectionURI]: ModelAlgebraIntersection } - export interface Algebra1 { - [IntersectionURI]: ModelAlgebraIntersection1 - } - export interface Algebra2 { - [IntersectionURI]: ModelAlgebraIntersection2 - } -} - -/** - * @since 0.0.1 - */ -export interface ModelAlgebraIntersection { - _F: F - intersection: { - (types: [HKT2, HKT2], name: string): HKT2 - (types: [HKT2, HKT2, HKT2], name: string): HKT2< - F, - Env, - LA & LB & LC, - A & B & C - > - ( - types: [HKT2, HKT2, HKT2, HKT2], - name: string - ): HKT2 - ( - types: [HKT2, HKT2, HKT2, HKT2, HKT2], - name: string - ): HKT2 - (types: Array>): HKT2, Array> - } -} - -/** - * @since 0.0.1 - */ -export interface ModelAlgebraIntersection1 { - _F: F - intersection: { - (types: [OfType, OfType], name: string): Kind - (types: [OfType, OfType, OfType], name: string): Kind< - F, - Env, - A & B & C - > - ( - types: [OfType, OfType, OfType, OfType], - name: string - ): Kind - ( - types: [OfType, OfType, OfType, OfType, OfType], - name: string - ): Kind - (types: Array>, name: string): Kind> - } } /** * @since 0.0.1 */ -export interface ModelAlgebraIntersection2 { +export interface ModelAlgebraIntersection { _F: F intersection: { - (types: [OfType2, OfType2], name: string): Kind2 + (types: [OfType, OfType], name: string): Kind ( - types: [OfType2, OfType2, OfType2], + types: [OfType, OfType, OfType], name: string - ): Kind2 + ): Kind ( - types: [OfType2, OfType2, OfType2, OfType2], + types: [OfType, OfType, OfType, OfType], name: string - ): Kind2 + ): Kind ( types: [ - OfType2, - OfType2, - OfType2, - OfType2, - OfType2 + OfType, + OfType, + OfType, + OfType, + OfType ], name: string - ): Kind2 - (types: Array>, name: string): Kind2, Array> + ): Kind + (types: Array>, name: string): Kind, Array> } } diff --git a/packages/morphic-model-algebras/src/newtype.ts b/packages/morphic-model-algebras/src/newtype.ts index 3edb7d1a..464351d4 100644 --- a/packages/morphic-model-algebras/src/newtype.ts +++ b/packages/morphic-model-algebras/src/newtype.ts @@ -1,5 +1,5 @@ -import type { URIS2, Kind2, URIS, Kind, HKT2 } from '@morphic-ts/common/lib/HKT' -import type { ConfigsForType, AnyEnv } from '@morphic-ts/common/lib/config' +import type { AnyEnv, ConfigsForType } from '@morphic-ts/common/lib/config' +import type { Kind, URIS } from '@morphic-ts/common/lib/HKT' import type { Newtype } from 'newtype-ts' /** * @since 0.0.1 @@ -11,15 +11,9 @@ export const NewtypeURI = 'NewtypeURI' as const export type NewtypeURI = typeof NewtypeURI declare module '@morphic-ts/algebras/lib/hkt' { - export interface Algebra { + export interface Algebra { [NewtypeURI]: ModelAlgebraNewtype } - export interface Algebra1 { - [NewtypeURI]: ModelAlgebraNewtype1 - } - export interface Algebra2 { - [NewtypeURI]: ModelAlgebraNewtype2 - } } /** @@ -35,31 +29,9 @@ export type NewtypeA = N extends Newtype ? A /** * @since 0.0.1 */ -export interface ModelAlgebraNewtype { - _F: F - newtype: ( - name: string - ) => { - (a: HKT2>, config?: ConfigsForType): HKT2 - } -} - -/** - * @since 0.0.1 - */ -export interface ModelAlgebraNewtype1 { - _F: F - newtype( - name: string // on purpose type relaxation `Kind` instead of `Kind>` - ): (a: Kind, config?: ConfigsForType) => Kind -} - -/** - * @since 0.0.1 - */ -export interface ModelAlgebraNewtype2 { +export interface ModelAlgebraNewtype { _F: F newtype( name: string // on purpose type relaxation `Kind` instead of `Kind>` - ): (a: Kind2, config?: ConfigsForType) => Kind2 + ): (a: Kind>, config?: ConfigsForType) => Kind } diff --git a/packages/morphic-model-algebras/src/object.ts b/packages/morphic-model-algebras/src/object.ts index 8f3e5a1a..1a23b3e7 100644 --- a/packages/morphic-model-algebras/src/object.ts +++ b/packages/morphic-model-algebras/src/object.ts @@ -1,7 +1,5 @@ -import type { URIS, Kind, URIS2, Kind2, HKT2 } from '@morphic-ts/common/lib/HKT' -import type { ConfigsForType, AnyEnv } from '@morphic-ts/common/lib/config' - -type AnyMProps = Record> +import type { AnyEnv, ConfigsForType } from '@morphic-ts/common/lib/config' +import type { HKT, Kind, URIS } from '@morphic-ts/common/lib/HKT' /** * @since 0.0.1 @@ -13,128 +11,160 @@ export const ObjectURI = 'ObjectURI' as const export type ObjectURI = typeof ObjectURI declare module '@morphic-ts/algebras/lib/hkt' { - export interface Algebra { + export interface Algebra { [ObjectURI]: ModelAlgebraObject } - export interface Algebra1 { - [ObjectURI]: ModelAlgebraObject1 - } - export interface Algebra2 { - [ObjectURI]: ModelAlgebraObject2 - } } +/** + /** * @since 0.0.1 */ -export interface ModelAlgebraObject { - _F: F - interface: { - >( - props: Props, - name: string, - config?: ConfigsForType< - Env, - Readonly<{ [k in keyof Props]: Props[k]['_E'] }>, - Readonly<{ [k in keyof Props]: Props[k]['_A'] }> - > - ): HKT2, Readonly<{ [k in keyof Props]: Props[k]['_A'] }>> - } - partial: { - >( - props: Props, - name: string, - config?: ConfigsForType< - Env, - Partial>, - Partial> - > - ): HKT2< - F, - Env, - Partial>, - Partial> - > - } - both: { - , PProps extends AnyMProps>( - props: Props, - partial: PProps, - name: string, - config?: ConfigsForType< - Env, - Readonly<{ [k in keyof Props]: Props[k]['_E'] }> & Partial>, - Readonly<{ [k in keyof Props]: Props[k]['_A'] }> & Partial> - > - ): HKT2< - F, - Env, - Readonly<{ [k in keyof Props]: Props[k]['_E'] }> & Partial>, - Readonly<{ [k in keyof Props]: Props[k]['_A'] }> & Partial> - > +export type PropsKind = Readonly< + { + [k in keyof PropsA & keyof PropsE]: Kind } -} +> /** * @since 0.0.1 */ -export type PropsKind1 = Readonly<{ [k in keyof PropsA]: Kind }> +export type PropsE< + Props extends { + [k in keyof Props]: HKT + } +> = { + [k in keyof Props]: Props[k]['_E'] +} /** * @since 0.0.1 */ -export interface ModelAlgebraObject1 { - _F: F - interface: ( - props: PropsKind1, - name: string, - config?: ConfigsForType> - ) => Kind> - partial: ( - props: PropsKind1, - name: string, - config?: ConfigsForType>> - ) => Kind>> - both: ( - props: PropsKind1, Env>, - partial: PropsKind1, Env>, - name: string, - config?: ConfigsForType>> - ) => Kind & Partial>> +export type PropsA< + Props extends { + [k in keyof Props]: HKT + } +> = { + [k in keyof Props]: Props[k]['_A'] } /** * @since 0.0.1 */ -export type PropsKind2 = Readonly< - { - [k in keyof PropsA & keyof PropsE]: Kind2 - } -> +export type AnyProps = { [k in keyof Props]: HKT } /** * @since 0.0.1 */ -export interface ModelAlgebraObject2 { +export interface ModelAlgebraObject { _F: F - interface: ( - props: PropsKind2, + interface: >( + props: Props, name: string, - config?: ConfigsForType, Readonly> - ) => Kind2, Readonly> - partial: ( - props: PropsKind2, Readonly, Env>, + config?: ConfigsForType< + Env, + Readonly< + { + [k in keyof Props]: Props[k]['_E'] + } + >, + Readonly< + { + [k in keyof Props]: Props[k]['_A'] + } + > + > + ) => Kind< + F, + Env, + Readonly< + { + [k in keyof Props]: Props[k]['_E'] + } + >, + Readonly< + { + [k in keyof Props]: Props[k]['_A'] + } + > + > + partial: >( + props: Props, name: string, - config?: ConfigsForType>, Partial>> - ) => Kind2, Partial> - both: ( - props: PropsKind2, - partial: PropsKind2, + config?: ConfigsForType< + Env, + Partial< + Readonly< + { + [k in keyof Props]: Props[k]['_E'] + } + > + >, + Partial< + Readonly< + { + [k in keyof Props]: Props[k]['_A'] + } + > + > + > + ) => Kind< + F, + Env, + Partial< + { + [k in keyof Props]: Props[k]['_E'] + } + >, + Partial< + { + [k in keyof Props]: Props[k]['_A'] + } + > + > + both: , PartialProps extends AnyProps>( + props: PropsKind< + F, + { + [k in keyof Props]: Props[k]['_E'] + }, + { + [k in keyof Props]: Props[k]['_A'] + }, + Env + >, + partial: PropsKind, PropsA, Env>, name: string, config?: ConfigsForType< Env, - Readonly & Partial>, - Readonly & Partial> + Readonly< + { + [k in keyof Props]: Props[k]['_E'] + } & + Partial> + >, + Readonly< + { + [k in keyof Props]: Props[k]['_A'] + } & + Partial> + > + > + ) => Kind< + F, + Env, + Readonly< + { + [k in keyof Props]: Props[k]['_E'] + } & + Partial> + >, + Readonly< + { + [k in keyof Props]: Props[k]['_A'] + } & + Partial> > - ) => Kind2 & Partial>, Readonly & Partial>> + > } diff --git a/packages/morphic-model-algebras/src/primitives.ts b/packages/morphic-model-algebras/src/primitives.ts index a99e6a91..1a2d3300 100644 --- a/packages/morphic-model-algebras/src/primitives.ts +++ b/packages/morphic-model-algebras/src/primitives.ts @@ -1,12 +1,11 @@ -import type { Option } from 'fp-ts/Option' -import type { URIS2, Kind2, URIS, Kind, HKT2 } from '@morphic-ts/common/lib/HKT' -import type { ConfigsForType, AnyEnv } from '@morphic-ts/common/lib/config' -import type { UUID } from 'io-ts-types/lib/UUID' +import type { AnyEnv, ConfigsForType } from '@morphic-ts/common/lib/config' +import type { Kind, URIS } from '@morphic-ts/common/lib/HKT' import type { Either } from 'fp-ts/Either' +import type { Option } from 'fp-ts/Option' import type { ReadonlyNonEmptyArray } from 'fp-ts/ReadonlyNonEmptyArray' +import type { UUID } from 'io-ts-types/lib/UUID' import type { Array, Mutable } from './types' - /** * @since 0.0.1 */ @@ -22,168 +21,54 @@ export const PrimitiveURI = 'PrimitiveURI' as const export type PrimitiveURI = typeof PrimitiveURI declare module '@morphic-ts/algebras/lib/hkt' { - export interface Algebra { + export interface Algebra { [PrimitiveURI]: ModelAlgebraPrimitive } - export interface Algebra1 { - [PrimitiveURI]: ModelAlgebraPrimitive1 - } - export interface Algebra2 { - [PrimitiveURI]: ModelAlgebraPrimitive2 - } } /** * @since 0.0.1 */ -export interface ModelAlgebraPrimitive { - _F: F - nullable: { - (T: HKT2, config?: ConfigsForType>): HKT2> - } - boolean: { - (config?: ConfigsForType): HKT2 - } - number: { - (config?: ConfigsForType): HKT2 - } - bigint: { - (config?: ConfigsForType): HKT2 - } - string: { - (config?: ConfigsForType): HKT2 - } - stringLiteral: { - (value: T, config?: ConfigsForType): HKT2 - } - tag: { - (value: T, config?: ConfigsForType): HKT2 - } - keysOf: { - (keys: K, config?: ConfigsForType): HKT2 - } - mutable: { - (a: HKT2, config?: ConfigsForType, Mutable>): HKT2< - F, - Env, - Mutable, - Mutable - > - } - array: { - (a: HKT2, config?: ConfigsForType, Array>): HKT2, Array> - } - nonEmptyArray: { - (a: HKT2, config?: ConfigsForType>): HKT2< - F, - Env, - L[], - ReadonlyNonEmptyArray - > - } - date: { - (config?: ConfigsForType): HKT2 - } - uuid: { - (config?: ConfigsForType): HKT2 - } - either: { - ( - e: HKT2, - a: HKT2, - config?: ConfigsForType, Either> - ): HKT2, Either> - } - option: { - (a: HKT2, config?: ConfigsForType, Option>): HKT2< - F, - Env, - Option, - Option - > - } -} - -/** - * @since 0.0.1 - */ -export interface ModelAlgebraPrimitive1 { - _F: F - nullable: (T: Kind, config?: ConfigsForType>) => Kind> - boolean(config?: ConfigsForType): Kind - number(config?: ConfigsForType): Kind - bigint(config?: ConfigsForType): Kind - string(config?: ConfigsForType): Kind - stringLiteral: (value: T, config?: ConfigsForType) => Kind - tag: (value: T, config?: ConfigsForType) => Kind - keysOf: (keys: K, config?: ConfigsForType) => Kind - mutable: ( - a: Kind, - config?: ConfigsForType, Mutable> - ) => Kind> - array: (a: Kind, config?: ConfigsForType, Array>) => Kind> - nonEmptyArray: ( - a: Kind, - config?: ConfigsForType, ReadonlyNonEmptyArray> - ) => Kind> - date(config?: ConfigsForType): Kind - uuid(config?: ConfigsForType): Kind - either: ( - e: Kind, - a: Kind, - config?: ConfigsForType> - ) => Kind> - option: { - (a: Kind, config?: ConfigsForType>): Kind> - } -} - -/** - * @since 0.0.1 - */ -export interface ModelAlgebraPrimitive2 { +export interface ModelAlgebraPrimitive { _F: F nullable: ( - T: Kind2, + T: Kind, config?: ConfigsForType> - ) => Kind2> - boolean(config?: ConfigsForType): Kind2 - number(config?: ConfigsForType): Kind2 - bigint(config?: ConfigsForType): Kind2 - string(config?: ConfigsForType): Kind2 + ) => Kind> + boolean(config?: ConfigsForType): Kind + number(config?: ConfigsForType): Kind + bigint(config?: ConfigsForType): Kind + string(config?: ConfigsForType): Kind stringLiteral: ( value: T, config?: ConfigsForType - ) => Kind2 - tag: ( - value: T, - config?: ConfigsForType - ) => Kind2 + ) => Kind + tag: (value: T, config?: ConfigsForType) => Kind keysOf: ( keys: K, config?: ConfigsForType - ) => Kind2 + ) => Kind mutable: ( - a: Kind2, + a: Kind, config?: ConfigsForType, Mutable> - ) => Kind2, Mutable> + ) => Kind, Mutable> array: ( - a: Kind2, + a: Kind, config?: ConfigsForType, Array> - ) => Kind2, Array> + ) => Kind, Array> nonEmptyArray: ( - a: Kind2, + a: Kind, config?: ConfigsForType, ReadonlyNonEmptyArray> - ) => Kind2, ReadonlyNonEmptyArray> - date(config?: ConfigsForType): Kind2 - uuid(config?: ConfigsForType): Kind2 + ) => Kind, ReadonlyNonEmptyArray> + date(config?: ConfigsForType): Kind + uuid(config?: ConfigsForType): Kind either: ( - e: Kind2, - a: Kind2, + e: Kind, + a: Kind, config?: ConfigsForType, Either> - ) => Kind2, Either> + ) => Kind, Either> option: { - (a: Kind2, config?: ConfigsForType, Option>): Kind2< + (a: Kind, config?: ConfigsForType, Option>): Kind< F, Env, Option, diff --git a/packages/morphic-model-algebras/src/recursive.ts b/packages/morphic-model-algebras/src/recursive.ts index 9d267e26..82f187ae 100644 --- a/packages/morphic-model-algebras/src/recursive.ts +++ b/packages/morphic-model-algebras/src/recursive.ts @@ -1,5 +1,5 @@ -import type { URIS, Kind, URIS2, Kind2, HKT2 } from '@morphic-ts/common/lib/HKT' import type { AnyEnv } from '@morphic-ts/common/lib/config' +import type { Kind, URIS } from '@morphic-ts/common/lib/HKT' /** * @since 0.0.1 @@ -11,37 +11,15 @@ export const RecursiveURI = 'RecursiveURI' as const export type RecursiveURI = typeof RecursiveURI declare module '@morphic-ts/algebras/lib/hkt' { - export interface Algebra { + export interface Algebra { [RecursiveURI]: ModelAlgebraRecursive } - export interface Algebra1 { - [RecursiveURI]: ModelAlgebraRecursive1 - } - export interface Algebra2 { - [RecursiveURI]: ModelAlgebraRecursive2 - } -} - -/** - * @since 0.0.1 - */ -export interface ModelAlgebraRecursive { - _F: F - recursive: (a: (x: HKT2) => HKT2, name: string) => HKT2 -} - -/** - * @since 0.0.1 - */ -export interface ModelAlgebraRecursive1 { - _F: F - recursive: (a: (x: Kind) => Kind, name: string) => Kind } /** * @since 0.0.1 */ -export interface ModelAlgebraRecursive2 { +export interface ModelAlgebraRecursive { _F: F - recursive: (a: (x: Kind2) => Kind2, name: string) => Kind2 + recursive: (a: (x: Kind) => Kind, name: string) => Kind } diff --git a/packages/morphic-model-algebras/src/refined.ts b/packages/morphic-model-algebras/src/refined.ts index 2c8f6728..3d64f03b 100644 --- a/packages/morphic-model-algebras/src/refined.ts +++ b/packages/morphic-model-algebras/src/refined.ts @@ -1,6 +1,6 @@ -import type { URIS2, Kind2, URIS, Kind, HKT2 } from '@morphic-ts/common/lib/HKT' +import type { AnyEnv, ConfigsForType } from '@morphic-ts/common/lib/config' +import type { Kind, URIS } from '@morphic-ts/common/lib/HKT' import type { Refinement } from 'fp-ts/function' -import type { ConfigsForType, AnyEnv } from '@morphic-ts/common/lib/config' /** * @since 0.0.1 @@ -12,54 +12,20 @@ export const RefinedURI = 'RefinedURI' as const export type RefinedURI = typeof RefinedURI declare module '@morphic-ts/algebras/lib/hkt' { - export interface Algebra { + export interface Algebra { [RefinedURI]: ModelAlgebraRefined } - export interface Algebra1 { - [RefinedURI]: ModelAlgebraRefined1 - } - export interface Algebra2 { - [RefinedURI]: ModelAlgebraRefined2 - } -} - -/** - * @since 0.0.1 - */ -export interface ModelAlgebraRefined { - _F: F - refined: { - ( - a: HKT2, - refinement: Refinement, - name: string, - config?: ConfigsForType - ): HKT2 - } -} - -/** - * @since 0.0.1 - */ -export interface ModelAlgebraRefined1 { - _F: F - refined( - a: Kind, - refinement: Refinement, - name: string, - config?: ConfigsForType - ): Kind } /** * @since 0.0.1 */ -export interface ModelAlgebraRefined2 { +export interface ModelAlgebraRefined { _F: F refined( - a: Kind2, + a: Kind, refinement: Refinement, name: string, config?: ConfigsForType - ): Kind2 + ): Kind } diff --git a/packages/morphic-model-algebras/src/set.ts b/packages/morphic-model-algebras/src/set.ts index b586ea05..685be4ad 100644 --- a/packages/morphic-model-algebras/src/set.ts +++ b/packages/morphic-model-algebras/src/set.ts @@ -1,6 +1,7 @@ -import type { Ord } from 'fp-ts/Ord' -import type { Kind, URIS, Kind2, URIS2, HKT2 } from '@morphic-ts/common/lib/HKT' import type { AnyEnv } from '@morphic-ts/common/lib/config' +import type { Kind, URIS } from '@morphic-ts/common/lib/HKT' +import type { Ord } from 'fp-ts/Ord' + import type { Array } from './types' /** @@ -13,37 +14,15 @@ export const SetURI = 'SetURI' as const export type SetURI = typeof SetURI declare module '@morphic-ts/algebras/lib/hkt' { - export interface Algebra { + export interface Algebra { [SetURI]: ModelAlgebraSet } - export interface Algebra1 { - [SetURI]: ModelAlgebraSet1 - } - export interface Algebra2 { - [SetURI]: ModelAlgebraSet2 - } -} - -/** - * @since 0.0.1 - */ -export interface ModelAlgebraSet { - _F: F - set: (a: HKT2, ord: Ord) => HKT2, Set> -} - -/** - * @since 0.0.1 - */ -export interface ModelAlgebraSet1 { - _F: F - set: (a: Kind, ord: Ord) => Kind> } /** * @since 0.0.1 */ -export interface ModelAlgebraSet2 { +export interface ModelAlgebraSet { _F: F - set: (a: Kind2, ord: Ord) => Kind2, Set> + set: (a: Kind, ord: Ord) => Kind, Set> } diff --git a/packages/morphic-model-algebras/src/str-map.ts b/packages/morphic-model-algebras/src/str-map.ts index f3612672..85626b55 100644 --- a/packages/morphic-model-algebras/src/str-map.ts +++ b/packages/morphic-model-algebras/src/str-map.ts @@ -1,5 +1,5 @@ -import type { Kind, URIS, Kind2, URIS2, HKT2 } from '@morphic-ts/common/lib/HKT' -import type { ConfigsForType, AnyEnv } from '@morphic-ts/common/lib/config' +import type { AnyEnv, ConfigsForType } from '@morphic-ts/common/lib/config' +import type { Kind, URIS } from '@morphic-ts/common/lib/HKT' /** * @since 0.0.1 @@ -11,65 +11,23 @@ export const StrMapURI = 'StrMapURI' as const export type StrMapURI = typeof StrMapURI declare module '@morphic-ts/algebras/lib/hkt' { - export interface Algebra { + export interface Algebra { [StrMapURI]: ModelAlgebraStrMap } - export interface Algebra1 { - [StrMapURI]: ModelAlgebraStrMap1 - } - export interface Algebra2 { - [StrMapURI]: ModelAlgebraStrMap2 - } -} - -/** - * @since 0.0.1 - */ -export interface ModelAlgebraStrMap { - _F: F - strMap: { - ( - codomain: HKT2, - config?: ConfigsForType>, Readonly>> - ): HKT2>, Readonly>> - } - record: { - ( - domain: HKT2, - codomain: HKT2, - config?: ConfigsForType>, Readonly>> - ): HKT2>, Readonly>> - } -} - -/** - * @since 0.0.1 - */ -export interface ModelAlgebraStrMap1 { - _F: F - strMap: ( - codomain: Kind, - config?: ConfigsForType>> - ) => Kind>> - record: ( - domain: Kind, - codomain: Kind, - config?: ConfigsForType>> - ) => Kind>> } /** * @since 0.0.1 */ -export interface ModelAlgebraStrMap2 { +export interface ModelAlgebraStrMap { _F: F strMap: ( - codomain: Kind2, + codomain: Kind, config?: ConfigsForType>, Readonly>> - ) => Kind2>, Readonly>> + ) => Kind>, Readonly>> record: ( - domain: Kind2, - codomain: Kind2, + domain: Kind, + codomain: Kind, config?: ConfigsForType>, Readonly>> - ) => Kind2>, Readonly>> + ) => Kind>, Readonly>> } diff --git a/packages/morphic-model-algebras/src/tagged-unions.ts b/packages/morphic-model-algebras/src/tagged-unions.ts index cbc2ac40..695f36a4 100644 --- a/packages/morphic-model-algebras/src/tagged-unions.ts +++ b/packages/morphic-model-algebras/src/tagged-unions.ts @@ -1,5 +1,5 @@ -import type { URIS, Kind, URIS2, Kind2, HKT2 } from '@morphic-ts/common/lib/HKT' -import type { ConfigsForType, AnyEnv } from '@morphic-ts/common/lib/config' +import type { AnyEnv, ConfigsForType } from '@morphic-ts/common/lib/config' +import type { Kind, URIS } from '@morphic-ts/common/lib/HKT' /** * @since 0.0.1 @@ -11,89 +11,32 @@ export const TaggedUnionsURI = 'TaggedUnionsURI' as const export type TaggedUnionsURI = typeof TaggedUnionsURI declare module '@morphic-ts/algebras/lib/hkt' { - export interface Algebra { + export interface Algebra { [TaggedUnionsURI]: ModelAlgebraTaggedUnions } - export interface Algebra1 { - [TaggedUnionsURI]: ModelAlgebraTaggedUnions1 - } - export interface Algebra2 { - [TaggedUnionsURI]: ModelAlgebraTaggedUnions2 - } } /** * @since 0.0.1 */ -export type TaggedValues = { [o in keyof O]: O[o] & { [t in Tag]: o } } - -/** - * @since 0.0.1 - */ -export type TaggedTypes = { - [o in keyof A & keyof L]: HKT2 +type TaggedTypes = { + [o in keyof X]: Kind } -type DecorateTag, Tag extends string, VTag> = X extends HKT2< - infer F, - infer R, - infer L, - infer A -> - ? HKT2 - : never +type PropsE = T[keyof T] extends { _E: infer E } ? E : never +type PropsA = T[keyof T] extends { _A: infer A } ? A : never /** * @since 0.0.1 */ -export interface ModelAlgebraTaggedUnions { +export interface ModelAlgebraTaggedUnions { _F: F taggedUnion: { - >( + >( tag: Tag, - types: Types & { [o in keyof Types]: DecorateTag }, + types: Types, name: string, - config?: ConfigsForType - ): HKT2 + config?: ConfigsForType, PropsA> + ): Kind, PropsA> } } - -/** - * @since 0.0.1 - */ -export type TaggedTypes1 = { - [o in keyof O]: Kind -} - -/** - * @since 0.0.1 - */ -export interface ModelAlgebraTaggedUnions1 { - _F: F - taggedUnion( - tag: Tag, - types: TaggedTypes1, - name: string, - config?: ConfigsForType[keyof O]> - ): Kind[keyof O]> -} - -/** - * @since 0.0.1 - */ -export type TaggedTypes2 = { - [o in keyof A & keyof L]: Kind2 -} - -/** - * @since 0.0.1 - */ -export interface ModelAlgebraTaggedUnions2 { - _F: F - taggedUnion( - tag: Tag, - types: TaggedTypes2, - name: string, - config?: ConfigsForType[keyof L], TaggedValues[keyof A]> - ): Kind2[keyof L], TaggedValues[keyof A]> -} diff --git a/packages/morphic-model-algebras/src/unions.ts b/packages/morphic-model-algebras/src/unions.ts index 5e5a2c56..3c28217e 100644 --- a/packages/morphic-model-algebras/src/unions.ts +++ b/packages/morphic-model-algebras/src/unions.ts @@ -1,6 +1,6 @@ -import type { OfType, OfType2 } from '@morphic-ts/common/lib/core' -import type { URIS, Kind, URIS2, Kind2, HKT2 } from '@morphic-ts/common/lib/HKT' import type { AnyEnv } from '@morphic-ts/common/lib/config' +import type { OfType } from '@morphic-ts/common/lib/core' +import type { Kind, URIS } from '@morphic-ts/common/lib/HKT' /** * @since 0.0.1 @@ -12,87 +12,36 @@ export const UnionsURI = 'UnionsURI' as const export type UnionsURI = typeof UnionsURI declare module '@morphic-ts/algebras/lib/hkt' { - export interface Algebra { + export interface Algebra { [UnionsURI]: ModelAlgebraUnions } - export interface Algebra1 { - [UnionsURI]: ModelAlgebraUnions1 - } - export interface Algebra2 { - [UnionsURI]: ModelAlgebraUnions2 - } -} - -/** - * @since 0.0.1 - */ -export interface ModelAlgebraUnions { - _F: F - union: { - (types: [HKT2, HKT2], name: string): HKT2 - (types: [HKT2, HKT2, HKT2], name: string): HKT2< - F, - Env, - LA | LB | LC, - A | B | C - > - ( - types: [HKT2, HKT2, HKT2, HKT2], - name: string - ): HKT2 - ( - types: [HKT2, HKT2, HKT2, HKT2, HKT2], - name: string - ): HKT2 - (types: Array>, name: string): HKT2, Array> - } -} - -/** - * @since 0.0.1 - */ -export interface ModelAlgebraUnions1 { - _F: F - union: { - (types: [OfType, OfType], name: string): Kind - (types: [OfType, OfType, OfType], name: string): Kind - ( - types: [OfType, OfType, OfType, OfType], - name: string - ): Kind - ( - types: [OfType, OfType, OfType, OfType, OfType], - name: string - ): Kind - (types: Array>, name: string): Kind> - } } /** * @since 0.0.1 */ -export interface ModelAlgebraUnions2 { +export interface ModelAlgebraUnions { _F: F union: { - (types: [OfType2, OfType2], name: string): Kind2 + (types: [OfType, OfType], name: string): Kind ( - types: [OfType2, OfType2, OfType2], + types: [OfType, OfType, OfType], name: string - ): Kind2 + ): Kind ( - types: [OfType2, OfType2, OfType2, OfType2], + types: [OfType, OfType, OfType, OfType], name: string - ): Kind2 + ): Kind ( types: [ - OfType2, - OfType2, - OfType2, - OfType2, - OfType2 + OfType, + OfType, + OfType, + OfType, + OfType ], name: string - ): Kind2 - (types: Array>, name: string): Kind2, Array> + ): Kind + (types: Array>, name: string): Kind, Array> } } diff --git a/packages/morphic-model-algebras/src/unknown.ts b/packages/morphic-model-algebras/src/unknown.ts index 664793c8..d0d40283 100644 --- a/packages/morphic-model-algebras/src/unknown.ts +++ b/packages/morphic-model-algebras/src/unknown.ts @@ -1,5 +1,5 @@ -import type { URIS2, Kind2, URIS, Kind, HKT2 } from '@morphic-ts/common/lib/HKT' -import type { ConfigsForType, AnyEnv } from '@morphic-ts/common/lib/config' +import type { AnyEnv, ConfigsForType } from '@morphic-ts/common/lib/config' +import type { Kind, URIS } from '@morphic-ts/common/lib/HKT' /** * @since 0.0.1 @@ -16,39 +16,15 @@ export const UnknownURI = 'UnknownURI' as const export type UnknownURI = typeof UnknownURI declare module '@morphic-ts/algebras/lib/hkt' { - export interface Algebra { + export interface Algebra { [UnknownURI]: ModelAlgebraUnknown } - export interface Algebra1 { - [UnknownURI]: ModelAlgebraUnknown1 - } - export interface Algebra2 { - [UnknownURI]: ModelAlgebraUnknown2 - } -} - -/** - * @since 0.0.1 - */ -export interface ModelAlgebraUnknown { - _F: F - unknown: { - (config?: ConfigsForType): HKT2 - } -} - -/** - * @since 0.0.1 - */ -export interface ModelAlgebraUnknown1 { - _F: F - unknown(config?: ConfigsForType): Kind } /** * @since 0.0.1 */ -export interface ModelAlgebraUnknown2 { +export interface ModelAlgebraUnknown { _F: F - unknown(config?: ConfigsForType): Kind2 + unknown(config?: ConfigsForType): Kind } diff --git a/packages/morphic-ord-interpreters/docs/modules/interpreters.ts.md b/packages/morphic-ord-interpreters/docs/modules/interpreters.ts.md index ddf85a32..4938a873 100644 --- a/packages/morphic-ord-interpreters/docs/modules/interpreters.ts.md +++ b/packages/morphic-ord-interpreters/docs/modules/interpreters.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const modelOrdInterpreter: >>() => ModelAlgebraRefined1<"OrdURI", Env> & ModelAlgebraNewtype1<"OrdURI", Env> & ModelAlgebraPrimitive1<"OrdURI", Env> & ModelAlgebraIntersection1<"OrdURI", Env> & ModelAlgebraSet1<"OrdURI", Env> & ModelAlgebraStrMap1<"OrdURI", Env> & ModelAlgebraTaggedUnions1<"OrdURI", Env> = ... +export const modelOrdInterpreter: >>>() => ModelAlgebraRefined<"OrdURI", Env> & ModelAlgebraNewtype<"OrdURI", Env> & ModelAlgebraPrimitive<"OrdURI", Env> & ModelAlgebraIntersection<"OrdURI", Env> & ModelAlgebraSet<"OrdURI", Env> & ModelAlgebraStrMap<"OrdURI", Env> & ModelAlgebraTaggedUnions<"OrdURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-ord-interpreters/docs/modules/model/intersections.ts.md b/packages/morphic-ord-interpreters/docs/modules/model/intersections.ts.md index 80ec7110..04f17f8e 100644 --- a/packages/morphic-ord-interpreters/docs/modules/model/intersections.ts.md +++ b/packages/morphic-ord-interpreters/docs/modules/model/intersections.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const ordIntersectionInterpreter: >>() => ModelAlgebraIntersection1<"OrdURI", Env> = ... +export const ordIntersectionInterpreter: >>>() => ModelAlgebraIntersection<"OrdURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-ord-interpreters/docs/modules/model/newtype.ts.md b/packages/morphic-ord-interpreters/docs/modules/model/newtype.ts.md index a095bcf4..12000398 100644 --- a/packages/morphic-ord-interpreters/docs/modules/model/newtype.ts.md +++ b/packages/morphic-ord-interpreters/docs/modules/model/newtype.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const ordNewtypeInterpreter: >>() => ModelAlgebraNewtype1<"OrdURI", Env> = ... +export const ordNewtypeInterpreter: >>>() => ModelAlgebraNewtype<"OrdURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-ord-interpreters/docs/modules/model/primitives.ts.md b/packages/morphic-ord-interpreters/docs/modules/model/primitives.ts.md index 90774d1c..3998d5db 100644 --- a/packages/morphic-ord-interpreters/docs/modules/model/primitives.ts.md +++ b/packages/morphic-ord-interpreters/docs/modules/model/primitives.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const ordPrimitiveInterpreter: >>() => ModelAlgebraPrimitive1<"OrdURI", Env> = ... +export const ordPrimitiveInterpreter: >>>() => ModelAlgebraPrimitive<"OrdURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-ord-interpreters/docs/modules/model/refined.ts.md b/packages/morphic-ord-interpreters/docs/modules/model/refined.ts.md index a82821d4..b131ba85 100644 --- a/packages/morphic-ord-interpreters/docs/modules/model/refined.ts.md +++ b/packages/morphic-ord-interpreters/docs/modules/model/refined.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const ordRefinedInterpreter: >>() => ModelAlgebraRefined1<"OrdURI", Env> = ... +export const ordRefinedInterpreter: >>>() => ModelAlgebraRefined<"OrdURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-ord-interpreters/docs/modules/model/set.ts.md b/packages/morphic-ord-interpreters/docs/modules/model/set.ts.md index 4c53c393..4efc7fc9 100644 --- a/packages/morphic-ord-interpreters/docs/modules/model/set.ts.md +++ b/packages/morphic-ord-interpreters/docs/modules/model/set.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const ordSetInterpreter: >>() => ModelAlgebraSet1<"OrdURI", Env> = ... +export const ordSetInterpreter: >>>() => ModelAlgebraSet<"OrdURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-ord-interpreters/docs/modules/model/str-map.ts.md b/packages/morphic-ord-interpreters/docs/modules/model/str-map.ts.md index 32d3b923..5d17b721 100644 --- a/packages/morphic-ord-interpreters/docs/modules/model/str-map.ts.md +++ b/packages/morphic-ord-interpreters/docs/modules/model/str-map.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const ordStrMapInterpreter: >>() => ModelAlgebraStrMap1<"OrdURI", Env> = ... +export const ordStrMapInterpreter: >>>() => ModelAlgebraStrMap<"OrdURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-ord-interpreters/docs/modules/model/tagged-unions.ts.md b/packages/morphic-ord-interpreters/docs/modules/model/tagged-unions.ts.md index 2d8d38c1..a5b8ac05 100644 --- a/packages/morphic-ord-interpreters/docs/modules/model/tagged-unions.ts.md +++ b/packages/morphic-ord-interpreters/docs/modules/model/tagged-unions.ts.md @@ -21,7 +21,7 @@ This is kind of useless as required interfaces are not supported in Ord **Signature** ```ts -export const ordTaggedUnionInterpreter: >>() => ModelAlgebraTaggedUnions1<"OrdURI", Env> = ... +export const ordTaggedUnionInterpreter: >>>() => ModelAlgebraTaggedUnions<"OrdURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-ord-interpreters/package.json b/packages/morphic-ord-interpreters/package.json index 0703a43b..652754e9 100644 --- a/packages/morphic-ord-interpreters/package.json +++ b/packages/morphic-ord-interpreters/package.json @@ -1,6 +1,6 @@ { "name": "@morphic-ts/ord-interpreters", - "version": "3.0.0-alpha.0", + "version": "3.0.0-alpha.2", "description": "Morphic Ord (fp-ts) package for ordering derivation", "author": "Stéphane Le Dorze ", "homepage": "", @@ -21,12 +21,12 @@ "es6" ], "dependencies": { - "@morphic-ts/algebras": "^3.0.0-alpha.0", - "@morphic-ts/common": "^3.0.0-alpha.0", - "@morphic-ts/model-algebras": "^3.0.0-alpha.0" + "@morphic-ts/algebras": "^3.0.0-alpha.2", + "@morphic-ts/common": "^3.0.0-alpha.2", + "@morphic-ts/model-algebras": "^3.0.0-alpha.2" }, "devDependencies": { - "@morphic-ts/summoners": "^3.0.0-alpha.0", + "@morphic-ts/summoners": "^3.0.0-alpha.2", "fast-check": "^2.6.0", "fp-ts": "^2.5.3", "io-ts": "^2.1.3", diff --git a/packages/morphic-ord-interpreters/src/config.ts b/packages/morphic-ord-interpreters/src/config.ts index 2811c6c7..75f60427 100644 --- a/packages/morphic-ord-interpreters/src/config.ts +++ b/packages/morphic-ord-interpreters/src/config.ts @@ -1,5 +1,7 @@ import { getApplyConfig } from '@morphic-ts/common/lib/config' + import { OrdURI } from './hkt' + export * from './model' export { /** diff --git a/packages/morphic-ord-interpreters/src/hkt.ts b/packages/morphic-ord-interpreters/src/hkt.ts index 0870ccea..e07e0b63 100644 --- a/packages/morphic-ord-interpreters/src/hkt.ts +++ b/packages/morphic-ord-interpreters/src/hkt.ts @@ -26,7 +26,7 @@ export class OrdType { } declare module '@morphic-ts/common/lib/HKT' { - interface URItoKind { + interface URItoKind { [OrdURI]: (env: R) => OrdType } } diff --git a/packages/morphic-ord-interpreters/src/interpreters.ts b/packages/morphic-ord-interpreters/src/interpreters.ts index 531db5d3..3c663719 100644 --- a/packages/morphic-ord-interpreters/src/interpreters.ts +++ b/packages/morphic-ord-interpreters/src/interpreters.ts @@ -1,12 +1,13 @@ +import type { AnyEnv } from '@morphic-ts/common/lib/config' import { merge } from '@morphic-ts/common/lib/utils' -import { ordRefinedInterpreter } from './model/refined' + +import { ordIntersectionInterpreter } from './model/intersections' import { ordNewtypeInterpreter } from './model/newtype' import { ordPrimitiveInterpreter } from './model/primitives' -import { ordIntersectionInterpreter } from './model/intersections' +import { ordRefinedInterpreter } from './model/refined' import { ordSetInterpreter } from './model/set' import { ordStrMapInterpreter } from './model/str-map' import { ordTaggedUnionInterpreter } from './model/tagged-unions' -import type { AnyEnv } from '@morphic-ts/common/lib/config' export * from './hkt' diff --git a/packages/morphic-ord-interpreters/src/model/intersections.ts b/packages/morphic-ord-interpreters/src/model/intersections.ts index 16b8dd38..0aa52d7b 100644 --- a/packages/morphic-ord-interpreters/src/model/intersections.ts +++ b/packages/morphic-ord-interpreters/src/model/intersections.ts @@ -1,9 +1,10 @@ -import { getMonoid } from 'fp-ts/Ord' -import type { Ord } from 'fp-ts/Ord' -import type { ModelAlgebraIntersection1 } from '@morphic-ts/model-algebras/lib/intersections' -import { OrdType, OrdURI } from '../hkt' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraIntersection } from '@morphic-ts/model-algebras/lib/intersections' +import type { Ord } from 'fp-ts/Ord' +import { getMonoid } from 'fp-ts/Ord' + +import { OrdType, OrdURI } from '../hkt' const equalsOrd = (): Ord => ({ equals: (_a: T, _b: T) => true, @@ -14,7 +15,7 @@ const equalsOrd = (): Ord => ({ * @since 0.0.1 */ export const ordIntersectionInterpreter = memo( - (): ModelAlgebraIntersection1 => ({ + (): ModelAlgebraIntersection => ({ _F: OrdURI, intersection: (types: ((_: Env) => OrdType)[]) => (env: Env) => { const { concat } = getMonoid() diff --git a/packages/morphic-ord-interpreters/src/model/newtype.ts b/packages/morphic-ord-interpreters/src/model/newtype.ts index d79d680a..237c53ef 100644 --- a/packages/morphic-ord-interpreters/src/model/newtype.ts +++ b/packages/morphic-ord-interpreters/src/model/newtype.ts @@ -1,15 +1,18 @@ -import type { ModelAlgebraNewtype1 } from '@morphic-ts/model-algebras/lib/newtype' -import { OrdURI, OrdType } from '../hkt' -import { ordApplyConfig } from '../config' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { AnyNewtype, ModelAlgebraNewtype, NewtypeA } from '@morphic-ts/model-algebras/lib/newtype' +import type { Ord } from 'fp-ts/lib/Ord' + +import { ordApplyConfig } from '../config' +import { OrdType, OrdURI } from '../hkt' +const coerce = (e: Ord>): Ord => e as Ord /** * @since 0.0.1 */ export const ordNewtypeInterpreter = memo( - (): ModelAlgebraNewtype1 => ({ + (): ModelAlgebraNewtype => ({ _F: OrdURI, - newtype: () => (getOrd, config) => env => new OrdType(ordApplyConfig(config)(getOrd(env).ord, env)) + newtype: () => (getOrd, config) => env => new OrdType(ordApplyConfig(config)(coerce(getOrd(env).ord), env)) }) ) diff --git a/packages/morphic-ord-interpreters/src/model/primitives.ts b/packages/morphic-ord-interpreters/src/model/primitives.ts index 46d16d57..db63f9fb 100644 --- a/packages/morphic-ord-interpreters/src/model/primitives.ts +++ b/packages/morphic-ord-interpreters/src/model/primitives.ts @@ -1,21 +1,22 @@ +import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraPrimitive } from '@morphic-ts/model-algebras/lib/primitives' +import type { Either } from 'fp-ts/Either' +import { isLeft, isRight } from 'fp-ts/Either' +import { eqStrict } from 'fp-ts/Eq' import { getOrd as OgetOrd } from 'fp-ts/Option' -import { ordNumber, ordString, ord, ordBoolean, fromCompare } from 'fp-ts/Ord' import type { Ord } from 'fp-ts/Ord' +import { fromCompare, ord, ordBoolean, ordNumber, ordString } from 'fp-ts/Ord' import { getOrd as getArrayOrd } from 'fp-ts/ReadonlyArray' -import type { ModelAlgebraPrimitive1 } from '@morphic-ts/model-algebras/lib/primitives' -import { OrdType, OrdURI } from '../hkt' -import { eqStrict } from 'fp-ts/Eq' + import { ordApplyConfig } from '../config' -import type { AnyEnv } from '@morphic-ts/common/lib/config' -import { memo } from '@morphic-ts/common/lib/utils' -import { isLeft, isRight } from 'fp-ts/Either' -import type { Either } from 'fp-ts/Either' +import { OrdType, OrdURI } from '../hkt' /** * @since 0.0.1 */ export const ordPrimitiveInterpreter = memo( - (): ModelAlgebraPrimitive1 => ({ + (): ModelAlgebraPrimitive => ({ _F: OrdURI, date: config => env => new OrdType( diff --git a/packages/morphic-ord-interpreters/src/model/refined.ts b/packages/morphic-ord-interpreters/src/model/refined.ts index a6b04f8f..c8e97233 100644 --- a/packages/morphic-ord-interpreters/src/model/refined.ts +++ b/packages/morphic-ord-interpreters/src/model/refined.ts @@ -1,14 +1,15 @@ -import type { ModelAlgebraRefined1 } from '@morphic-ts/model-algebras/lib/refined' -import { OrdURI, OrdType } from '../hkt' -import { ordApplyConfig } from '../config' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraRefined } from '@morphic-ts/model-algebras/lib/refined' + +import { ordApplyConfig } from '../config' +import { OrdType, OrdURI } from '../hkt' /** * @since 0.0.1 */ export const ordRefinedInterpreter = memo( - (): ModelAlgebraRefined1 => ({ + (): ModelAlgebraRefined => ({ _F: OrdURI, refined: (getOrd, _ref, _name, config) => env => new OrdType(ordApplyConfig(config)(getOrd(env).ord, env)) }) diff --git a/packages/morphic-ord-interpreters/src/model/set.ts b/packages/morphic-ord-interpreters/src/model/set.ts index 4812243f..a32b06d2 100644 --- a/packages/morphic-ord-interpreters/src/model/set.ts +++ b/packages/morphic-ord-interpreters/src/model/set.ts @@ -1,16 +1,17 @@ +import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraSet } from '@morphic-ts/model-algebras/lib/set' import { getOrd as AgetOrd } from 'fp-ts/Array' import { ord } from 'fp-ts/Ord' -import type { ModelAlgebraSet1 } from '@morphic-ts/model-algebras/lib/set' -import { OrdType, OrdURI } from '../hkt' import { toArray } from 'fp-ts/Set' -import type { AnyEnv } from '@morphic-ts/common/lib/config' -import { memo } from '@morphic-ts/common/lib/utils' + +import { OrdType, OrdURI } from '../hkt' /** * @since 0.0.1 */ export const ordSetInterpreter = memo( - (): ModelAlgebraSet1 => ({ + (): ModelAlgebraSet => ({ _F: OrdURI, set: (getOrd, ordA) => env => new OrdType(ord.contramap(AgetOrd(getOrd(env).ord), toArray(ordA))) }) diff --git a/packages/morphic-ord-interpreters/src/model/str-map.ts b/packages/morphic-ord-interpreters/src/model/str-map.ts index c3e6096d..64b33dae 100644 --- a/packages/morphic-ord-interpreters/src/model/str-map.ts +++ b/packages/morphic-ord-interpreters/src/model/str-map.ts @@ -1,17 +1,18 @@ +import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraStrMap } from '@morphic-ts/model-algebras/lib/str-map' import { getOrd as AgetOrd } from 'fp-ts/Array' +import { getTupleOrd, ord, ordString } from 'fp-ts/Ord' import { toArray as RtoArray } from 'fp-ts/Record' -import { ord, ordString, getTupleOrd } from 'fp-ts/Ord' -import type { ModelAlgebraStrMap1 } from '@morphic-ts/model-algebras/lib/str-map' -import { OrdType, OrdURI } from '../hkt' + import { ordApplyConfig } from '../config' -import type { AnyEnv } from '@morphic-ts/common/lib/config' -import { memo } from '@morphic-ts/common/lib/utils' +import { OrdType, OrdURI } from '../hkt' /** * @since 0.0.1 */ export const ordStrMapInterpreter = memo( - (): ModelAlgebraStrMap1 => ({ + (): ModelAlgebraStrMap => ({ _F: OrdURI, strMap: (getCodomain, config) => env => new OrdType( diff --git a/packages/morphic-ord-interpreters/src/model/tagged-unions.ts b/packages/morphic-ord-interpreters/src/model/tagged-unions.ts index 3908d62f..2d27af8c 100644 --- a/packages/morphic-ord-interpreters/src/model/tagged-unions.ts +++ b/packages/morphic-ord-interpreters/src/model/tagged-unions.ts @@ -1,11 +1,11 @@ +import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { mapRecord, memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraTaggedUnions } from '@morphic-ts/model-algebras/lib/tagged-unions' import { ordString } from 'fp-ts/Ord' -import { OrdType, OrdURI } from '../hkt' -import type { ModelAlgebraTaggedUnions1 } from '@morphic-ts/model-algebras/lib/tagged-unions' -import { mapRecord } from '@morphic-ts/common/lib/utils' import type { Ordering } from 'fp-ts/Ordering' + import { ordApplyConfig } from '../config' -import type { AnyEnv } from '@morphic-ts/common/lib/config' -import { memo } from '@morphic-ts/common/lib/utils' +import { OrdType, OrdURI } from '../hkt' /** * This is kind of useless as required interfaces are not supported in Ord @@ -15,7 +15,7 @@ import { memo } from '@morphic-ts/common/lib/utils' * @since 0.0.1 */ export const ordTaggedUnionInterpreter = memo( - (): ModelAlgebraTaggedUnions1 => ({ + (): ModelAlgebraTaggedUnions => ({ _F: OrdURI, taggedUnion: (tag, types, _name, config) => env => { const equals = mapRecord(types, a => a(env).ord.equals) @@ -24,13 +24,13 @@ export const ordTaggedUnionInterpreter = memo( ordApplyConfig(config)( { compare: (a, b): Ordering => { - const aTag = a[tag] - const bTag = b[tag] - return aTag === bTag ? (compares as any)[aTag](a, b) : ordString.compare(String(aTag), String(bTag)) + const aTag = (a as any)[tag] + const bTag = (b as any)[tag] + return aTag === bTag ? compares[aTag](a, b) : ordString.compare(String(aTag), String(bTag)) }, equals: (a, b): boolean => { - const aTag = a[tag] - return aTag === b[tag] ? (equals as any)[aTag](a, b) : false + const aTag = (a as any)[tag] + return aTag === (b as any)[tag] ? equals[aTag](a, b) : false } }, env diff --git a/packages/morphic-ord-interpreters/test/ord-interpreter.spec.ts b/packages/morphic-ord-interpreters/test/ord-interpreter.spec.ts index f9e18a95..45446069 100644 --- a/packages/morphic-ord-interpreters/test/ord-interpreter.spec.ts +++ b/packages/morphic-ord-interpreters/test/ord-interpreter.spec.ts @@ -1,13 +1,14 @@ import * as chai from 'chai' -import { lt, gt, ordNumber, ord } from 'fp-ts/Ord' -import { summonFor } from './summoner' -import { left, right } from 'fp-ts/Either' -import type { Either } from 'fp-ts/Either' -import { some, none } from 'fp-ts/Option' -import { modelFastCheckInterpreter } from '../../morphic-fastcheck-interpreters' import fc from 'fast-check' +import type { Either } from 'fp-ts/Either' +import { left, right } from 'fp-ts/Either' +import { none, some } from 'fp-ts/Option' +import { gt, lt, ord, ordNumber } from 'fp-ts/Ord' import * as ordering from 'fp-ts/Ordering' +import { modelFastCheckInterpreter } from '../../morphic-fastcheck-interpreters' +import { summonFor } from './summoner' + const { summon } = summonFor<{}>({}) describe('Ord', () => { diff --git a/packages/morphic-ord-interpreters/test/summoner.ts b/packages/morphic-ord-interpreters/test/summoner.ts index 9a701485..51bd96ec 100644 --- a/packages/morphic-ord-interpreters/test/summoner.ts +++ b/packages/morphic-ord-interpreters/test/summoner.ts @@ -1,23 +1,28 @@ -import * as chai from 'chai' -import { modelOrdInterpreter, OrdURI } from '../src/interpreters' -import type { Ord } from 'fp-ts/Ord' -import type { Materialized } from '@morphic-ts/summoners' -import { cacheUnaryFunction } from '@morphic-ts/common/lib/core' -import { makeSummoner } from '@morphic-ts/summoners' -import type { Summoners } from '@morphic-ts/summoners' -import type { ProgramType } from '@morphic-ts/summoners' - -import type { InferredAlgebra, InferredProgram } from '@morphic-ts/summoners' import type { GetAlgebra } from '@morphic-ts/algebras/lib/core' - +import { cacheUnaryFunction } from '@morphic-ts/common/lib/core' +import type { URIS } from '@morphic-ts/common/lib/HKT' import type { IntersectionURI } from '@morphic-ts/model-algebras/lib/intersections' +import type { NewtypeURI } from '@morphic-ts/model-algebras/lib/newtype' import type { PrimitiveURI } from '@morphic-ts/model-algebras/lib/primitives' +import type { RefinedURI } from '@morphic-ts/model-algebras/lib/refined' import type { SetURI } from '@morphic-ts/model-algebras/lib/set' import type { StrMapURI } from '@morphic-ts/model-algebras/lib/str-map' import type { TaggedUnionsURI } from '@morphic-ts/model-algebras/lib/tagged-unions' -import type { NewtypeURI } from '@morphic-ts/model-algebras/lib/newtype' -import type { RefinedURI } from '@morphic-ts/model-algebras/lib/refined' -import type { AnyConfigEnv, ExtractEnv } from '@morphic-ts/summoners' +import type { + AnyConfigEnv, + ExtractEnv, + InferredAlgebra, + InferredProgram, + Materialized, + ProgramType, + Summoners +} from '@morphic-ts/summoners' +import { makeSummoner } from '@morphic-ts/summoners' +import * as chai from 'chai' +import type { Ord } from 'fp-ts/Ord' + +import type { OrdURI } from '../src/interpreters' +import { modelOrdInterpreter } from '../src/interpreters' /** * @since 0.0.1 @@ -31,7 +36,7 @@ export type ProgramOrderableURI = typeof ProgramOrderableURI /** * @since 0.0.1 */ -export interface AlgebraNoUnion extends InferredAlgebra {} +export interface AlgebraNoUnion extends InferredAlgebra {} /** * @since 0.0.1 */ @@ -44,7 +49,7 @@ declare module '@morphic-ts/summoners/lib/ProgramType' { > } - interface ProgramAlgebra { + interface ProgramAlgebra { [ProgramOrderableURI]: AlgebraNoUnion } diff --git a/packages/morphic-show-interpreters/docs/modules/interpreters.ts.md b/packages/morphic-show-interpreters/docs/modules/interpreters.ts.md index d6b6eb94..769380af 100644 --- a/packages/morphic-show-interpreters/docs/modules/interpreters.ts.md +++ b/packages/morphic-show-interpreters/docs/modules/interpreters.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const modelShowInterpreter: >>() => ModelAlgebraRefined1<"ShowURI", Env> & ModelAlgebraNewtype1<"ShowURI", Env> & ModelAlgebraUnknown1<"ShowURI", Env> & ModelAlgebraPrimitive1<"ShowURI", Env> & ModelAlgebraIntersection1<"ShowURI", Env> & ModelAlgebraObject1<"ShowURI", Env> & ModelAlgebraTaggedUnions1<"ShowURI", Env> & ModelAlgebraRecursive1<"ShowURI", Env> & ModelAlgebraSet1<"ShowURI", Env> & ModelAlgebraStrMap1<"ShowURI", Env> = ... +export const modelShowInterpreter: >>>() => ModelAlgebraRefined<"ShowURI", Env> & ModelAlgebraNewtype<"ShowURI", Env> & ModelAlgebraUnknown<"ShowURI", Env> & ModelAlgebraPrimitive<"ShowURI", Env> & ModelAlgebraIntersection<"ShowURI", Env> & ModelAlgebraObject<"ShowURI", Env> & ModelAlgebraTaggedUnions<"ShowURI", Env> & ModelAlgebraRecursive<"ShowURI", Env> & ModelAlgebraSet<"ShowURI", Env> & ModelAlgebraStrMap<"ShowURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-show-interpreters/docs/modules/model/intersections.ts.md b/packages/morphic-show-interpreters/docs/modules/model/intersections.ts.md index e2677ea9..712a9223 100644 --- a/packages/morphic-show-interpreters/docs/modules/model/intersections.ts.md +++ b/packages/morphic-show-interpreters/docs/modules/model/intersections.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const showIntersectionInterpreter: >>() => ModelAlgebraIntersection1<"ShowURI", Env> = ... +export const showIntersectionInterpreter: >>>() => ModelAlgebraIntersection<"ShowURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-show-interpreters/docs/modules/model/newtype.ts.md b/packages/morphic-show-interpreters/docs/modules/model/newtype.ts.md index 1d6cc177..5ea1d17b 100644 --- a/packages/morphic-show-interpreters/docs/modules/model/newtype.ts.md +++ b/packages/morphic-show-interpreters/docs/modules/model/newtype.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const showNewtypeInterpreter: >>() => ModelAlgebraNewtype1<"ShowURI", Env> = ... +export const showNewtypeInterpreter: >>>() => ModelAlgebraNewtype<"ShowURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-show-interpreters/docs/modules/model/object.ts.md b/packages/morphic-show-interpreters/docs/modules/model/object.ts.md index 90dc5efe..dbd44c77 100644 --- a/packages/morphic-show-interpreters/docs/modules/model/object.ts.md +++ b/packages/morphic-show-interpreters/docs/modules/model/object.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const showObjectInterpreter: >>() => ModelAlgebraObject1<"ShowURI", Env> = ... +export const showObjectInterpreter: >>>() => ModelAlgebraObject<"ShowURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-show-interpreters/docs/modules/model/primitives.ts.md b/packages/morphic-show-interpreters/docs/modules/model/primitives.ts.md index 2228b1f1..f7beee30 100644 --- a/packages/morphic-show-interpreters/docs/modules/model/primitives.ts.md +++ b/packages/morphic-show-interpreters/docs/modules/model/primitives.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const showPrimitiveInterpreter: >>() => ModelAlgebraPrimitive1<"ShowURI", Env> = ... +export const showPrimitiveInterpreter: >>>() => ModelAlgebraPrimitive<"ShowURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-show-interpreters/docs/modules/model/recursive.ts.md b/packages/morphic-show-interpreters/docs/modules/model/recursive.ts.md index a84126e7..c366d11a 100644 --- a/packages/morphic-show-interpreters/docs/modules/model/recursive.ts.md +++ b/packages/morphic-show-interpreters/docs/modules/model/recursive.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const showRecursiveInterpreter: >>() => ModelAlgebraRecursive1<"ShowURI", Env> = ... +export const showRecursiveInterpreter: >>>() => ModelAlgebraRecursive<"ShowURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-show-interpreters/docs/modules/model/refined.ts.md b/packages/morphic-show-interpreters/docs/modules/model/refined.ts.md index 8559bba5..31b69467 100644 --- a/packages/morphic-show-interpreters/docs/modules/model/refined.ts.md +++ b/packages/morphic-show-interpreters/docs/modules/model/refined.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const showRefinedInterpreter: >>() => ModelAlgebraRefined1<"ShowURI", Env> = ... +export const showRefinedInterpreter: >>>() => ModelAlgebraRefined<"ShowURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-show-interpreters/docs/modules/model/set.ts.md b/packages/morphic-show-interpreters/docs/modules/model/set.ts.md index bec592c4..bb34592f 100644 --- a/packages/morphic-show-interpreters/docs/modules/model/set.ts.md +++ b/packages/morphic-show-interpreters/docs/modules/model/set.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const showSetInterpreter: >>() => ModelAlgebraSet1<"ShowURI", Env> = ... +export const showSetInterpreter: >>>() => ModelAlgebraSet<"ShowURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-show-interpreters/docs/modules/model/str-map.ts.md b/packages/morphic-show-interpreters/docs/modules/model/str-map.ts.md index e0d667ae..1d50c5c1 100644 --- a/packages/morphic-show-interpreters/docs/modules/model/str-map.ts.md +++ b/packages/morphic-show-interpreters/docs/modules/model/str-map.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const showStrMapInterpreter: >>() => ModelAlgebraStrMap1<"ShowURI", Env> = ... +export const showStrMapInterpreter: >>>() => ModelAlgebraStrMap<"ShowURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-show-interpreters/docs/modules/model/tagged-unions.ts.md b/packages/morphic-show-interpreters/docs/modules/model/tagged-unions.ts.md index 635698bc..7316f8d7 100644 --- a/packages/morphic-show-interpreters/docs/modules/model/tagged-unions.ts.md +++ b/packages/morphic-show-interpreters/docs/modules/model/tagged-unions.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const showTaggedUnionInterpreter: >>() => ModelAlgebraTaggedUnions1<"ShowURI", Env> = ... +export const showTaggedUnionInterpreter: >>>() => ModelAlgebraTaggedUnions<"ShowURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-show-interpreters/docs/modules/model/unknown.ts.md b/packages/morphic-show-interpreters/docs/modules/model/unknown.ts.md index 5c46610b..215215d3 100644 --- a/packages/morphic-show-interpreters/docs/modules/model/unknown.ts.md +++ b/packages/morphic-show-interpreters/docs/modules/model/unknown.ts.md @@ -17,7 +17,7 @@ parent: Modules **Signature** ```ts -export const showUnknownInterpreter: >>() => ModelAlgebraUnknown1<"ShowURI", Env> = ... +export const showUnknownInterpreter: >>>() => ModelAlgebraUnknown<"ShowURI", Env> = ... ``` Added in v0.0.1 diff --git a/packages/morphic-show-interpreters/package.json b/packages/morphic-show-interpreters/package.json index d95ac0c0..7d383011 100644 --- a/packages/morphic-show-interpreters/package.json +++ b/packages/morphic-show-interpreters/package.json @@ -1,6 +1,6 @@ { "name": "@morphic-ts/show-interpreters", - "version": "3.0.0-alpha.0", + "version": "3.0.0-alpha.2", "description": "Morphic show (fp-ts) package to derive show instances", "author": "Stéphane Le Dorze ", "homepage": "", @@ -21,12 +21,12 @@ "es6" ], "dependencies": { - "@morphic-ts/algebras": "^3.0.0-alpha.0", - "@morphic-ts/common": "^3.0.0-alpha.0", - "@morphic-ts/model-algebras": "^3.0.0-alpha.0" + "@morphic-ts/algebras": "^3.0.0-alpha.2", + "@morphic-ts/common": "^3.0.0-alpha.2", + "@morphic-ts/model-algebras": "^3.0.0-alpha.2" }, "devDependencies": { - "@morphic-ts/summoners": "^3.0.0-alpha.0", + "@morphic-ts/summoners": "^3.0.0-alpha.2", "fp-ts": "^2.5.3", "io-ts": "^2.1.3", "io-ts-types": "^0.5.6", diff --git a/packages/morphic-show-interpreters/src/config.ts b/packages/morphic-show-interpreters/src/config.ts index ad622225..b8c68c32 100644 --- a/packages/morphic-show-interpreters/src/config.ts +++ b/packages/morphic-show-interpreters/src/config.ts @@ -1,5 +1,7 @@ import { getApplyConfig } from '@morphic-ts/common/lib/config' + import { ShowURI } from './hkt' + export * from './model' export { /** diff --git a/packages/morphic-show-interpreters/src/hkt.ts b/packages/morphic-show-interpreters/src/hkt.ts index 792dd322..e00064e9 100644 --- a/packages/morphic-show-interpreters/src/hkt.ts +++ b/packages/morphic-show-interpreters/src/hkt.ts @@ -25,7 +25,7 @@ export class ShowType { } declare module '@morphic-ts/common/lib/HKT' { - interface URItoKind { + interface URItoKind { [ShowURI]: (env: R) => ShowType } } diff --git a/packages/morphic-show-interpreters/src/interpreters.ts b/packages/morphic-show-interpreters/src/interpreters.ts index 30514427..4ae59b5c 100644 --- a/packages/morphic-show-interpreters/src/interpreters.ts +++ b/packages/morphic-show-interpreters/src/interpreters.ts @@ -1,15 +1,16 @@ +import type { AnyEnv } from '@morphic-ts/common/lib/config' import { merge } from '@morphic-ts/common/lib/utils' -import { showRefinedInterpreter } from './model/refined' -import { showNewtypeInterpreter } from './model/newtype' -import { showUnknownInterpreter } from './model/unknown' -import { showPrimitiveInterpreter } from './model/primitives' + import { showIntersectionInterpreter } from './model/intersections' +import { showNewtypeInterpreter } from './model/newtype' import { showObjectInterpreter } from './model/object' -import { showTaggedUnionInterpreter } from './model/tagged-unions' +import { showPrimitiveInterpreter } from './model/primitives' import { showRecursiveInterpreter } from './model/recursive' +import { showRefinedInterpreter } from './model/refined' import { showSetInterpreter } from './model/set' import { showStrMapInterpreter } from './model/str-map' -import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { showTaggedUnionInterpreter } from './model/tagged-unions' +import { showUnknownInterpreter } from './model/unknown' export * from './hkt' diff --git a/packages/morphic-show-interpreters/src/model/intersections.ts b/packages/morphic-show-interpreters/src/model/intersections.ts index d81ed9e9..e07df33d 100644 --- a/packages/morphic-show-interpreters/src/model/intersections.ts +++ b/packages/morphic-show-interpreters/src/model/intersections.ts @@ -1,13 +1,14 @@ -import type { ModelAlgebraIntersection1 } from '@morphic-ts/model-algebras/lib/intersections' -import { ShowType, ShowURI } from '../hkt' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraIntersection } from '@morphic-ts/model-algebras/lib/intersections' + +import { ShowType, ShowURI } from '../hkt' /** * @since 0.0.1 */ export const showIntersectionInterpreter = memo( - (): ModelAlgebraIntersection1 => ({ + (): ModelAlgebraIntersection => ({ _F: ShowURI, intersection: (types: Array<(_: Env) => ShowType>) => (env: Env) => { const shows = types.map(getShow => getShow(env).show.show) diff --git a/packages/morphic-show-interpreters/src/model/newtype.ts b/packages/morphic-show-interpreters/src/model/newtype.ts index 5165e25b..e09966aa 100644 --- a/packages/morphic-show-interpreters/src/model/newtype.ts +++ b/packages/morphic-show-interpreters/src/model/newtype.ts @@ -1,16 +1,20 @@ -import { ShowURI, ShowType } from '../hkt' -import type { ModelAlgebraNewtype1 } from '@morphic-ts/model-algebras/lib/newtype' -import { showApplyConfig } from '../config' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { AnyNewtype, ModelAlgebraNewtype, NewtypeA } from '@morphic-ts/model-algebras/lib/newtype' +import type { Show } from 'fp-ts/lib/Show' + +import { showApplyConfig } from '../config' +import { ShowType, ShowURI } from '../hkt' + +const coerce = (e: Show>): Show => e as Show /** * @since 0.0.1 */ export const showNewtypeInterpreter = memo( - (): ModelAlgebraNewtype1 => ({ + (): ModelAlgebraNewtype => ({ _F: ShowURI, newtype: name => (a, config) => env => - new ShowType(showApplyConfig(config)({ show: x => `<${name}>(${a(env).show.show(x as any)})` }, env)) + new ShowType(showApplyConfig(config)(coerce({ show: x => `<${name}>(${a(env).show.show(x)})` }), env)) }) ) diff --git a/packages/morphic-show-interpreters/src/model/object.ts b/packages/morphic-show-interpreters/src/model/object.ts index 98884046..ef2dea72 100644 --- a/packages/morphic-show-interpreters/src/model/object.ts +++ b/packages/morphic-show-interpreters/src/model/object.ts @@ -1,11 +1,11 @@ -import type { ModelAlgebraObject1 } from '@morphic-ts/model-algebras/lib/object' -import { ShowType, ShowURI } from '../hkt' -import { projectFieldWithEnv, mapRecord } from '@morphic-ts/common/lib/utils' -import { getStructShow } from 'fp-ts/Show' +import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { mapRecord, memo, projectFieldWithEnv } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraObject } from '@morphic-ts/model-algebras/lib/object' import type { Show } from 'fp-ts/Show' +import { getStructShow } from 'fp-ts/Show' + import { showApplyConfig } from '../config' -import type { AnyEnv } from '@morphic-ts/common/lib/config' -import { memo } from '@morphic-ts/common/lib/utils' +import { ShowType, ShowURI } from '../hkt' const asPartialShow = (x: Show): Show> => x as any @@ -16,14 +16,14 @@ const showOrUndefined = (s: Show): Show => ({ * @since 0.0.1 */ export const showObjectInterpreter = memo( - (): ModelAlgebraObject1 => ({ + (): ModelAlgebraObject => ({ _F: ShowURI, interface: (props, _name, config) => env => - new ShowType(showApplyConfig(config)(getStructShow(projectFieldWithEnv(props, env)('show')), env)), + new ShowType(showApplyConfig(config)(getStructShow(projectFieldWithEnv(props as any, env)('show')), env)), partial: (props, _name, config) => env => new ShowType( showApplyConfig(config)( - asPartialShow(getStructShow(mapRecord(projectFieldWithEnv(props, env)('show'), showOrUndefined))), + asPartialShow(getStructShow(mapRecord(projectFieldWithEnv(props as any, env)('show'), showOrUndefined))), env ) ), diff --git a/packages/morphic-show-interpreters/src/model/primitives.ts b/packages/morphic-show-interpreters/src/model/primitives.ts index acc92e17..3e6a03df 100644 --- a/packages/morphic-show-interpreters/src/model/primitives.ts +++ b/packages/morphic-show-interpreters/src/model/primitives.ts @@ -1,20 +1,21 @@ -import type { Show } from 'fp-ts/Show' -import { showNumber, showString, showBoolean } from 'fp-ts/Show' +import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraPrimitive } from '@morphic-ts/model-algebras/lib/primitives' +import { getShow as EgetShow } from 'fp-ts/Either' import { getShow as OgetShow } from 'fp-ts/Option' import { getShow as AgetShow } from 'fp-ts/ReadonlyArray' import { getShow as NEAgetShow } from 'fp-ts/ReadonlyNonEmptyArray' -import { getShow as EgetShow } from 'fp-ts/Either' -import type { ModelAlgebraPrimitive1 } from '@morphic-ts/model-algebras/lib/primitives' -import { ShowType, ShowURI } from '../hkt' +import type { Show } from 'fp-ts/Show' +import { showBoolean, showNumber, showString } from 'fp-ts/Show' + import { showApplyConfig } from '../config' -import type { AnyEnv } from '@morphic-ts/common/lib/config' -import { memo } from '@morphic-ts/common/lib/utils' +import { ShowType, ShowURI } from '../hkt' /** * @since 0.0.1 */ export const showPrimitiveInterpreter = memo( - (): ModelAlgebraPrimitive1 => ({ + (): ModelAlgebraPrimitive => ({ _F: ShowURI, date: config => env => new ShowType(showApplyConfig(config)({ show: (date: Date) => date.toISOString() }, env)), boolean: config => env => new ShowType(showApplyConfig(config)(showBoolean, env)), diff --git a/packages/morphic-show-interpreters/src/model/recursive.ts b/packages/morphic-show-interpreters/src/model/recursive.ts index e553b054..c3888be2 100644 --- a/packages/morphic-show-interpreters/src/model/recursive.ts +++ b/packages/morphic-show-interpreters/src/model/recursive.ts @@ -1,13 +1,14 @@ -import { ShowType, ShowURI } from '../hkt' -import type { ModelAlgebraRecursive1 } from '@morphic-ts/model-algebras/lib/recursive' -import { memo } from '@morphic-ts/common/lib/utils' import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraRecursive } from '@morphic-ts/model-algebras/lib/recursive' + +import { ShowType, ShowURI } from '../hkt' /** * @since 0.0.1 */ export const showRecursiveInterpreter = memo( - (): ModelAlgebraRecursive1 => ({ + (): ModelAlgebraRecursive => ({ _F: ShowURI, recursive: a => { const get = memo(() => a(res)) diff --git a/packages/morphic-show-interpreters/src/model/refined.ts b/packages/morphic-show-interpreters/src/model/refined.ts index 55300234..156fd9e2 100644 --- a/packages/morphic-show-interpreters/src/model/refined.ts +++ b/packages/morphic-show-interpreters/src/model/refined.ts @@ -1,14 +1,15 @@ -import { ShowType, ShowURI } from '../hkt' -import type { ModelAlgebraRefined1 } from '@morphic-ts/model-algebras/lib/refined' -import { showApplyConfig } from '../config' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraRefined } from '@morphic-ts/model-algebras/lib/refined' + +import { showApplyConfig } from '../config' +import { ShowType, ShowURI } from '../hkt' /** * @since 0.0.1 */ export const showRefinedInterpreter = memo( - (): ModelAlgebraRefined1 => ({ + (): ModelAlgebraRefined => ({ _F: ShowURI, refined: (getShow, _ref, name, config) => env => new ShowType({ show: x => `<${name}>(${showApplyConfig(config)(getShow(env).show, env).show(x)})` }) diff --git a/packages/morphic-show-interpreters/src/model/set.ts b/packages/morphic-show-interpreters/src/model/set.ts index 93804d95..bcfcc2e4 100644 --- a/packages/morphic-show-interpreters/src/model/set.ts +++ b/packages/morphic-show-interpreters/src/model/set.ts @@ -1,14 +1,15 @@ -import { getShow as SgetShow } from 'fp-ts/Set' -import type { ModelAlgebraSet1 } from '@morphic-ts/model-algebras/lib/set' -import { ShowType, ShowURI } from '../hkt' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraSet } from '@morphic-ts/model-algebras/lib/set' +import { getShow as SgetShow } from 'fp-ts/Set' + +import { ShowType, ShowURI } from '../hkt' /** * @since 0.0.1 */ export const showSetInterpreter = memo( - (): ModelAlgebraSet1 => ({ + (): ModelAlgebraSet => ({ _F: ShowURI, set: getShow => env => new ShowType(SgetShow(getShow(env).show)) }) diff --git a/packages/morphic-show-interpreters/src/model/str-map.ts b/packages/morphic-show-interpreters/src/model/str-map.ts index e1f134fa..cc4fe0b9 100644 --- a/packages/morphic-show-interpreters/src/model/str-map.ts +++ b/packages/morphic-show-interpreters/src/model/str-map.ts @@ -1,15 +1,16 @@ -import { getShow as RgetShow } from 'fp-ts/Record' -import type { ModelAlgebraStrMap1 } from '@morphic-ts/model-algebras/lib/str-map' -import { ShowType, ShowURI } from '../hkt' -import { showApplyConfig } from '../config' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraStrMap } from '@morphic-ts/model-algebras/lib/str-map' +import { getShow as RgetShow } from 'fp-ts/Record' + +import { showApplyConfig } from '../config' +import { ShowType, ShowURI } from '../hkt' /** * @since 0.0.1 */ export const showStrMapInterpreter = memo( - (): ModelAlgebraStrMap1 => ({ + (): ModelAlgebraStrMap => ({ _F: ShowURI, strMap: (codomain, config) => env => new ShowType(showApplyConfig(config)(RgetShow(codomain(env).show), env)), record: (_domain, codomain, config) => env => diff --git a/packages/morphic-show-interpreters/src/model/tagged-unions.ts b/packages/morphic-show-interpreters/src/model/tagged-unions.ts index f3f319b9..c1fd16ef 100644 --- a/packages/morphic-show-interpreters/src/model/tagged-unions.ts +++ b/packages/morphic-show-interpreters/src/model/tagged-unions.ts @@ -1,22 +1,22 @@ -import type { ModelAlgebraTaggedUnions1 } from '@morphic-ts/model-algebras/lib/tagged-unions' -import { ShowType, ShowURI } from '../hkt' -import { mapRecord } from '@morphic-ts/common/lib/utils' -import { showApplyConfig } from '../config' import type { AnyEnv } from '@morphic-ts/common/lib/config' -import { memo } from '@morphic-ts/common/lib/utils' +import { mapRecord, memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraTaggedUnions } from '@morphic-ts/model-algebras/lib/tagged-unions' + +import { showApplyConfig } from '../config' +import { ShowType, ShowURI } from '../hkt' /** * @since 0.0.1 */ export const showTaggedUnionInterpreter = memo( - (): ModelAlgebraTaggedUnions1 => ({ + (): ModelAlgebraTaggedUnions => ({ _F: ShowURI, taggedUnion: (tag, types, _name, config) => env => { const shows = mapRecord(types, a => a(env).show.show) return new ShowType( showApplyConfig(config)( { - show: (a): string => (shows as any)[a[tag]](a) + show: (a): string => shows[(a as any)[tag]](a as any) }, env ) diff --git a/packages/morphic-show-interpreters/src/model/unknown.ts b/packages/morphic-show-interpreters/src/model/unknown.ts index e75af512..560d7217 100644 --- a/packages/morphic-show-interpreters/src/model/unknown.ts +++ b/packages/morphic-show-interpreters/src/model/unknown.ts @@ -1,14 +1,15 @@ -import { ShowType, ShowURI } from '../hkt' -import type { ModelAlgebraUnknown1 } from '@morphic-ts/model-algebras/lib/unknown' import type { AnyEnv } from '@morphic-ts/common/lib/config' import { memo } from '@morphic-ts/common/lib/utils' +import type { ModelAlgebraUnknown } from '@morphic-ts/model-algebras/lib/unknown' + import { showApplyConfig } from '../config' +import { ShowType, ShowURI } from '../hkt' /** * @since 0.0.1 */ export const showUnknownInterpreter = memo( - (): ModelAlgebraUnknown1 => ({ + (): ModelAlgebraUnknown => ({ _F: ShowURI, unknown: config => env => new ShowType(showApplyConfig(config)({ show: (_any: any) => '' }, env)) }) diff --git a/packages/morphic-show-interpreters/test/show-interpreter.spec.ts b/packages/morphic-show-interpreters/test/show-interpreter.spec.ts index bbbd9ff5..cb0bb616 100644 --- a/packages/morphic-show-interpreters/test/show-interpreter.spec.ts +++ b/packages/morphic-show-interpreters/test/show-interpreter.spec.ts @@ -1,10 +1,10 @@ import * as chai from 'chai' - -import { iso } from 'newtype-ts' -import type { Newtype } from 'newtype-ts' import type { Either } from 'fp-ts/Either' import { left, right } from 'fp-ts/Either' -import { some, none } from 'fp-ts/Option' +import { none, some } from 'fp-ts/Option' +import type { Newtype } from 'newtype-ts' +import { iso } from 'newtype-ts' + import { summonFor } from './summoner.spec' const { summon } = summonFor<{}>({}) diff --git a/packages/morphic-show-interpreters/test/summoner.spec.ts b/packages/morphic-show-interpreters/test/summoner.spec.ts index 7af9df68..11674378 100644 --- a/packages/morphic-show-interpreters/test/summoner.spec.ts +++ b/packages/morphic-show-interpreters/test/summoner.spec.ts @@ -1,26 +1,32 @@ -import { cacheUnaryFunction } from '@morphic-ts/common/lib/core' - -import type * as U from '@morphic-ts/summoners' -import type { ExtractEnv, SummonerOps } from '@morphic-ts/summoners' -import { makeSummoner } from '@morphic-ts/summoners' -import type { AnyEnv } from '@morphic-ts/common/lib/config' - -import type { InferredAlgebra, InferredProgram } from '@morphic-ts/summoners' import type { GetAlgebra } from '@morphic-ts/algebras/lib/core' - +import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { cacheUnaryFunction } from '@morphic-ts/common/lib/core' +import type { URIS } from '@morphic-ts/common/lib/HKT' import type { IntersectionURI } from '@morphic-ts/model-algebras/lib/intersections' +import type { NewtypeURI } from '@morphic-ts/model-algebras/lib/newtype' import type { ObjectURI } from '@morphic-ts/model-algebras/lib/object' import type { PrimitiveURI } from '@morphic-ts/model-algebras/lib/primitives' import type { RecursiveURI } from '@morphic-ts/model-algebras/lib/recursive' +import type { RefinedURI } from '@morphic-ts/model-algebras/lib/refined' import type { SetURI } from '@morphic-ts/model-algebras/lib/set' import type { StrMapURI } from '@morphic-ts/model-algebras/lib/str-map' import type { TaggedUnionsURI } from '@morphic-ts/model-algebras/lib/tagged-unions' import type { UnknownURI } from '@morphic-ts/model-algebras/lib/unknown' -import type { NewtypeURI } from '@morphic-ts/model-algebras/lib/newtype' -import type { RefinedURI } from '@morphic-ts/model-algebras/lib/refined' -import type { AnyConfigEnv } from '@morphic-ts/summoners' -import { Show } from 'fp-ts/Show' -import { modelShowInterpreter, ShowURI } from '../src/interpreters' +import type { + AnyConfigEnv, + ExtractEnv, + InferredAlgebra, + InferredProgram, + Materialized, + ProgramType, + SummonerOps, + Summoners +} from '@morphic-ts/summoners' +import { makeSummoner } from '@morphic-ts/summoners' +import type { Show } from 'fp-ts/Show' + +import type { ShowURI } from '../src/interpreters' +import { modelShowInterpreter } from '../src/interpreters' /** * @since 0.0.1 */ @@ -33,7 +39,7 @@ export type ProgramUnionURI = typeof ProgramUnionURI /** * @since 0.0.1 */ -export interface AlgebraUnion extends InferredAlgebra {} +export interface AlgebraUnion extends InferredAlgebra {} /** * @since 0.0.1 */ @@ -54,7 +60,7 @@ declare module '@morphic-ts/summoners/lib/ProgramType' { | RefinedURI > } - interface ProgramAlgebra { + interface ProgramAlgebra { [ProgramUnionURI]: AlgebraUnion } interface ProgramType { @@ -87,7 +93,7 @@ declare module '@morphic-ts/summoners/lib/InterpreterResult' { /** * @since 0.0.1 */ -export interface M extends U.Materialized {} +export interface M extends Materialized {} /** * @since 0.0.1 */ @@ -105,8 +111,8 @@ export const AsUOpaque = () => >(x: X): UM = /** * @since 0.0.1 */ -export interface Summoner extends U.Summoners { - (F: U.ProgramType[ProgramUnionURI]): M +export interface Summoner extends Summoners { + (F: ProgramType[ProgramUnionURI]): M } /** diff --git a/packages/morphic-summoners/docs/modules/ProgramType.ts.md b/packages/morphic-summoners/docs/modules/ProgramType.ts.md index b4578d0f..3f9a2476 100644 --- a/packages/morphic-summoners/docs/modules/ProgramType.ts.md +++ b/packages/morphic-summoners/docs/modules/ProgramType.ts.md @@ -43,7 +43,7 @@ Added in v0.0.1 ```ts export interface ProgramType { - (_R: R): void + _R: (_: R) => void _E: E _A: A } diff --git a/packages/morphic-summoners/docs/modules/index.ts.md b/packages/morphic-summoners/docs/modules/index.ts.md index 4e5aabad..cb9341c2 100644 --- a/packages/morphic-summoners/docs/modules/index.ts.md +++ b/packages/morphic-summoners/docs/modules/index.ts.md @@ -163,7 +163,7 @@ Added in v0.0.1 **Signature** ```ts -(_prog: PURI) => > = {}>() => Define +(_prog: PURI) => >> = {}>() => Define ``` Added in v0.0.1 diff --git a/packages/morphic-summoners/docs/modules/programs-infer.ts.md b/packages/morphic-summoners/docs/modules/programs-infer.ts.md index 7faa2800..d19a8135 100644 --- a/packages/morphic-summoners/docs/modules/programs-infer.ts.md +++ b/packages/morphic-summoners/docs/modules/programs-infer.ts.md @@ -37,10 +37,9 @@ Added in v0.0.1 ```ts export interface InferredProgram { _PURI?: PURI - (a: ProgramAlgebra[PURI]): HKT2 + (a: ProgramAlgebra<'HKT', Env>[PURI]): HKT [overloadsSymb]?: { - (a: Algebra1): Kind - (a: Algebra2): Kind2 + (a: Algebra): Kind } } ``` @@ -52,7 +51,7 @@ Added in v0.0.1 **Signature** ```ts -export type InferredAlgebra = Algebra +export type InferredAlgebra = Algebra ``` Added in v0.0.1 diff --git a/packages/morphic-summoners/docs/modules/summoner.ts.md b/packages/morphic-summoners/docs/modules/summoner.ts.md index aab1c30d..d414523a 100644 --- a/packages/morphic-summoners/docs/modules/summoner.ts.md +++ b/packages/morphic-summoners/docs/modules/summoner.ts.md @@ -60,9 +60,9 @@ Added in v0.0.1 ```ts export interface Summoners { (F: InferredProgram): Materialized + _R: R _P: ProgURI _I: InterpURI - _R: R } ``` @@ -83,7 +83,7 @@ Added in v0.0.1 **Signature** ```ts -export type ExtractEnv = { +export type ExtractEnv = { [k in SummonerEnv & keyof Env]: NonNullable[k & keyof Env] } ``` diff --git a/packages/morphic-summoners/docs/modules/tagged-union.ts.md b/packages/morphic-summoners/docs/modules/tagged-union.ts.md index 10a08733..271209e8 100644 --- a/packages/morphic-summoners/docs/modules/tagged-union.ts.md +++ b/packages/morphic-summoners/docs/modules/tagged-union.ts.md @@ -170,7 +170,7 @@ Added in v0.0.1 ```ts export type TaggedUnionProg = ProgramType[ProgURI] & - ((a: Algebra[TaggedUnionsURI]) => HKT2) + ((a: Algebra[TaggedUnionsURI]) => HKT) ``` Added in v0.0.1 diff --git a/packages/morphic-summoners/dtslint/ts3.8/summoner.ts b/packages/morphic-summoners/dtslint/ts3.8/summoner.ts index c490322a..d8d8223c 100644 --- a/packages/morphic-summoners/dtslint/ts3.8/summoner.ts +++ b/packages/morphic-summoners/dtslint/ts3.8/summoner.ts @@ -1,3 +1,4 @@ +import { URIS } from '@morphic-ts/common/lib/HKT'; import { cacheUnaryFunction } from '@morphic-ts/common/lib/core' import * as U from '../../src' @@ -32,7 +33,7 @@ export type ProgramUnionURI = typeof ProgramUnionURI /** * @since 0.0.1 */ -export interface AlgebraUnion extends U.InferredAlgebra {} +export interface AlgebraUnion extends U.InferredAlgebra {} /** * @since 0.0.1 */ @@ -54,7 +55,7 @@ declare module '../../src/ProgramType' { | RefinedURI > } - interface ProgramAlgebra { + interface ProgramAlgebra { [ProgramUnionURI]: AlgebraUnion } interface ProgramType { diff --git a/packages/morphic-summoners/package.json b/packages/morphic-summoners/package.json index 01e42356..7f7749ac 100644 --- a/packages/morphic-summoners/package.json +++ b/packages/morphic-summoners/package.json @@ -1,6 +1,6 @@ { "name": "@morphic-ts/summoners", - "version": "3.0.0-alpha.0", + "version": "3.0.0-alpha.2", "description": "Morphic summoners package to create summoners", "author": "Stéphane Le Dorze ", "homepage": "", @@ -27,10 +27,10 @@ "fp-ts": "^2.5.3" }, "dependencies": { - "@morphic-ts/adt": "^3.0.0-alpha.0", - "@morphic-ts/algebras": "^3.0.0-alpha.0", - "@morphic-ts/common": "^3.0.0-alpha.0", - "@morphic-ts/model-algebras": "^3.0.0-alpha.0" + "@morphic-ts/adt": "^3.0.0-alpha.1", + "@morphic-ts/algebras": "^3.0.0-alpha.2", + "@morphic-ts/common": "^3.0.0-alpha.2", + "@morphic-ts/model-algebras": "^3.0.0-alpha.2" }, "scripts": { "lint": "tslint -p tsconfig.tslint.json src/**/*.ts test/**/*.ts", diff --git a/packages/morphic-summoners/src/ProgramType.ts b/packages/morphic-summoners/src/ProgramType.ts index 16d47860..e4795723 100644 --- a/packages/morphic-summoners/src/ProgramType.ts +++ b/packages/morphic-summoners/src/ProgramType.ts @@ -8,10 +8,11 @@ import type { AnyConfigEnv } from './summoner' * @since 0.0.1 */ export interface ProgramType { - (_R: R): void + _R: (_: R) => void _E: E _A: A } + /** * @since 0.0.1 */ diff --git a/packages/morphic-summoners/src/index.ts b/packages/morphic-summoners/src/index.ts index a719e88f..7be8b5ac 100644 --- a/packages/morphic-summoners/src/index.ts +++ b/packages/morphic-summoners/src/index.ts @@ -1,5 +1,6 @@ -import { AnyConfigEnv } from './summoner' -import { TaggedUnionsURI } from '@morphic-ts/model-algebras/lib/tagged-unions' +import type { TaggedUnionsURI } from '@morphic-ts/model-algebras/lib/tagged-unions' + +import type { AnyConfigEnv } from './summoner' export { /** diff --git a/packages/morphic-summoners/src/materializer.ts b/packages/morphic-summoners/src/materializer.ts index c58c03b6..74436665 100644 --- a/packages/morphic-summoners/src/materializer.ts +++ b/packages/morphic-summoners/src/materializer.ts @@ -1,10 +1,11 @@ -import type { InterpreterResult, InterpreterURI } from './InterpreterResult' -import { assignFunction, wrapFun, assignCallable, inhabitTypes } from './utils' -import type { InhabitedTypes } from './utils' import { MonocleFor } from '@morphic-ts/adt/lib/monocle' -import type { ProgramURI, ProgramType } from './ProgramType' -import { interpretable } from './programs-infer' + +import type { InterpreterResult, InterpreterURI } from './InterpreterResult' import type { Overloads } from './programs-infer' +import { interpretable } from './programs-infer' +import type { ProgramType, ProgramURI } from './ProgramType' +import type { InhabitedTypes } from './utils' +import { assignCallable, assignFunction, inhabitTypes, wrapFun } from './utils' /** * @since 0.0.1 diff --git a/packages/morphic-summoners/src/programs-infer.ts b/packages/morphic-summoners/src/programs-infer.ts index b506b5ec..ee2cdd4d 100644 --- a/packages/morphic-summoners/src/programs-infer.ts +++ b/packages/morphic-summoners/src/programs-infer.ts @@ -1,6 +1,7 @@ -import type { HKT2, Kind, Kind2, URIS, URIS2 } from '@morphic-ts/common/lib/HKT' -import type { Algebra1, Algebra2, Algebra } from '@morphic-ts/algebras/lib/core' -import type { ProgramURI, ProgramAlgebra, ProgramAlgebraURI, ProgramType } from './ProgramType' +import type { Algebra } from '@morphic-ts/algebras/lib/core' +import type { HKT, Kind, URIS, URIS_ } from '@morphic-ts/common/lib/HKT' + +import type { ProgramAlgebra, ProgramAlgebraURI, ProgramType, ProgramURI } from './ProgramType' import type { AnyConfigEnv } from './summoner' import {} from './tagged-union' @@ -16,7 +17,8 @@ export const interpretable = (program: T): /** * @since 0.0.1 */ -export type InferredAlgebra = Algebra +export type InferredAlgebra = Algebra + /** * @since 0.0.1 */ @@ -27,10 +29,9 @@ export type Overloads = NonNullable { _PURI?: PURI - (a: ProgramAlgebra[PURI]): HKT2 + (a: ProgramAlgebra<'HKT', Env>[PURI]): HKT [overloadsSymb]?: { - (a: Algebra1): Kind - (a: Algebra2): Kind2 + (a: Algebra): Kind } } diff --git a/packages/morphic-summoners/src/summoner.ts b/packages/morphic-summoners/src/summoner.ts index ce283b49..daa13d4e 100644 --- a/packages/morphic-summoners/src/summoner.ts +++ b/packages/morphic-summoners/src/summoner.ts @@ -1,23 +1,24 @@ -import { defineFor } from './programs-infer' -import type { InferredProgram, Overloads, Define } from './programs-infer' -import { materialize } from './materializer' -import type { Materialized } from './materializer' -import type { InterpreterURI, InterpreterResult } from './InterpreterResult' +import type { AnyEnv } from '@morphic-ts/common/lib/config' import type { CacheType } from '@morphic-ts/common/lib/core' -import type { ProgramURI, ProgramType } from './ProgramType' -import { makeTagged } from './tagged-union' +import type { URIS } from '@morphic-ts/common/lib/HKT' + +import type { InterpreterResult, InterpreterURI } from './InterpreterResult' +import type { Materialized } from './materializer' +import { materialize } from './materializer' +import type { Define, InferredProgram, Overloads } from './programs-infer' +import { defineFor } from './programs-infer' +import type { ProgramType, ProgramURI } from './ProgramType' import type { TaggedBuilder } from './tagged-union' -import type { URIS, URIS2 } from '@morphic-ts/common/lib/HKT' -import type { AnyEnv } from '@morphic-ts/common/lib/config' +import { makeTagged } from './tagged-union' /** * @since 0.0.1 */ export interface Summoners { (F: InferredProgram): Materialized + _R: R _P: ProgURI _I: InterpURI - _R: R } type AnySummoners = Summoners // ProgramURI, InterpreterURI, AnyConfigEnv> @@ -91,7 +92,7 @@ export function makeSummoner( /** * @since 0.0.1 */ -export type ExtractEnv = { +export type ExtractEnv = { [k in SummonerEnv & keyof Env]: NonNullable[k & keyof Env] } /** diff --git a/packages/morphic-summoners/src/tagged-union.ts b/packages/morphic-summoners/src/tagged-union.ts index 0bdc2216..db1b7f4e 100644 --- a/packages/morphic-summoners/src/tagged-union.ts +++ b/packages/morphic-summoners/src/tagged-union.ts @@ -1,19 +1,19 @@ -import type { Materialized, Morph } from './materializer' -import { fromFoldable as RfromFoldable, mapWithIndex as RmapWithIndex } from 'fp-ts/Record' -import { array } from 'fp-ts/Array' -import type { HKT2 } from '@morphic-ts/common/lib/HKT' -import { assignCallable, wrapFun } from './utils' -import type { InhabitedTypes, AType, EType } from './utils' -import type { Algebra } from '@morphic-ts/algebras/lib/hkt' -import type { InterpreterURI } from './InterpreterResult' -import type { TaggedUnionsURI } from '@morphic-ts/model-algebras/lib/tagged-unions' -import type { ProgramURI, ProgramType } from './ProgramType' import type { ADT } from '@morphic-ts/adt/lib' import { makeADT } from '@morphic-ts/adt/lib' import type { ElemType } from '@morphic-ts/adt/lib/utils' -import { identity, tuple } from 'fp-ts/function' -import { intersection, difference } from 'fp-ts/Array' +import type { Algebra } from '@morphic-ts/algebras/lib/hkt' +import type { HKT, URIS } from '@morphic-ts/common/lib/HKT' +import type { TaggedUnionsURI } from '@morphic-ts/model-algebras/lib/tagged-unions' +import { array, difference, intersection } from 'fp-ts/Array' import { eqString } from 'fp-ts/Eq' +import { identity, tuple } from 'fp-ts/function' +import { fromFoldable as RfromFoldable, mapWithIndex as RmapWithIndex } from 'fp-ts/Record' + +import type { InterpreterURI } from './InterpreterResult' +import type { Materialized, Morph } from './materializer' +import type { ProgramType, ProgramURI } from './ProgramType' +import type { AType, EType, InhabitedTypes } from './utils' +import { assignCallable, wrapFun } from './utils' /** * @since 0.0.1 @@ -28,7 +28,7 @@ export type IfStringLiteral = T extends str * @since 0.0.1 */ export type TaggedUnionProg = ProgramType[ProgURI] & - ((a: Algebra[TaggedUnionsURI]) => HKT2) + ((a: Algebra[TaggedUnionsURI]) => HKT) type M = Materialized< R, diff --git a/yarn.lock b/yarn.lock index b9182b25..f8990986 100644 --- a/yarn.lock +++ b/yarn.lock @@ -31,6 +31,27 @@ semver "^5.4.1" source-map "^0.5.0" +"@babel/core@^7.11.6": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd" + integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.10" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.5" + "@babel/parser" "^7.12.10" + "@babel/template" "^7.12.7" + "@babel/traverse" "^7.12.10" + "@babel/types" "^7.12.10" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + semver "^5.4.1" + source-map "^0.5.0" + "@babel/generator@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.0.tgz#4b90c78d8c12825024568cbe83ee6c9af193585c" @@ -40,6 +61,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.12.10", "@babel/generator@~7.12.0": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af" + integrity sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA== + dependencies: + "@babel/types" "^7.12.11" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-function-name@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" @@ -63,6 +93,13 @@ dependencies: "@babel/types" "^7.11.0" +"@babel/helper-member-expression-to-functions@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855" + integrity sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw== + dependencies: + "@babel/types" "^7.12.7" + "@babel/helper-module-imports@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" @@ -70,6 +107,13 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-module-imports@^7.12.1": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" + integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== + dependencies: + "@babel/types" "^7.12.5" + "@babel/helper-module-transforms@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz#b16f250229e47211abdd84b34b64737c2ab2d359" @@ -83,6 +127,21 @@ "@babel/types" "^7.11.0" lodash "^4.17.19" +"@babel/helper-module-transforms@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" + integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-simple-access" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/helper-validator-identifier" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + lodash "^4.17.19" + "@babel/helper-optimise-call-expression@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" @@ -90,6 +149,13 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-optimise-call-expression@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d" + integrity sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ== + dependencies: + "@babel/types" "^7.12.10" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" @@ -105,6 +171,16 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-replace-supers@^7.12.1": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz#ea511658fc66c7908f923106dd88e08d1997d60d" + integrity sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.12.7" + "@babel/helper-optimise-call-expression" "^7.12.10" + "@babel/traverse" "^7.12.10" + "@babel/types" "^7.12.11" + "@babel/helper-simple-access@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" @@ -113,6 +189,13 @@ "@babel/template" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-simple-access@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" + integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== + dependencies: + "@babel/types" "^7.12.1" + "@babel/helper-split-export-declaration@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" @@ -125,6 +208,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== +"@babel/helper-validator-identifier@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" + integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== + "@babel/helpers@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" @@ -134,6 +222,15 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helpers@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" + integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA== + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.5" + "@babel/types" "^7.12.5" + "@babel/highlight@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" @@ -148,6 +245,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.3.tgz#9e1eae46738bcd08e23e867bab43e7b95299a8f9" integrity sha512-REo8xv7+sDxkKvoxEywIdsNFiZLybwdI7hcT5uEPyQrSMB4YQ973BfC9OOrD/81MaIjh6UxdulIQXkjmiH3PcA== +"@babel/parser@^7.11.5", "@babel/parser@^7.12.10", "@babel/parser@^7.12.7": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79" + integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg== + "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -225,6 +327,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" + integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/template@^7.10.4", "@babel/template@^7.3.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" @@ -234,6 +343,15 @@ "@babel/parser" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/template@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" + integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.12.7" + "@babel/types" "^7.12.7" + "@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.0.tgz#9b996ce1b98f53f7c3e4175115605d56ed07dd24" @@ -249,6 +367,21 @@ globals "^11.1.0" lodash "^4.17.19" +"@babel/traverse@^7.11.5", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.10.tgz#2d1f4041e8bf42ea099e5b2dc48d6a594c00017a" + integrity sha512-6aEtf0IeRgbYWzta29lePeYSk+YAFIC3kyqESeft8o5CkFlYIMX+EQDDWEiAQ9LHOA3d0oHdgrSsID/CKqXJlg== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.10" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/parser" "^7.12.10" + "@babel/types" "^7.12.10" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + "@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.0.tgz#2ae6bf1ba9ae8c3c43824e5861269871b206e90d" @@ -258,6 +391,15 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" +"@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.5", "@babel/types@^7.12.7": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.11.tgz#a86e4d71e30a9b6ee102590446c98662589283ce" + integrity sha512-ukA9SQtKThINm++CX1CwmliMrE54J6nIYB5XTwL5f/CLFW9owfls+YSU8tVW15RQ2w+a3fSbPjC6HdQNtWZkiA== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -279,6 +421,22 @@ is-absolute "^1.0.0" is-negated-glob "^1.0.0" +"@eslint/eslintrc@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.2.tgz#d01fc791e2fc33e88a29d6f3dc7e93d0cd784b76" + integrity sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + lodash "^4.17.19" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + "@evocateur/libnpmaccess@^3.1.2": version "3.1.2" resolved "https://registry.yarnpkg.com/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz#ecf7f6ce6b004e9f942b098d92200be4a4b1c845" @@ -369,173 +527,176 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-25.5.0.tgz#770800799d510f37329c508a9edd0b7b447d9abb" - integrity sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw== +"@jest/console@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" + integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== dependencies: - "@jest/types" "^25.5.0" - chalk "^3.0.0" - jest-message-util "^25.5.0" - jest-util "^25.5.0" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^26.6.2" + jest-util "^26.6.2" slash "^3.0.0" -"@jest/core@^25.5.4": - version "25.5.4" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-25.5.4.tgz#3ef7412f7339210f003cdf36646bbca786efe7b4" - integrity sha512-3uSo7laYxF00Dg/DMgbn4xMJKmDdWvZnf89n8Xj/5/AeQ2dOQmn6b6Hkj/MleyzZWXpwv+WSdYWl4cLsy2JsoA== +"@jest/core@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" + integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== dependencies: - "@jest/console" "^25.5.0" - "@jest/reporters" "^25.5.1" - "@jest/test-result" "^25.5.0" - "@jest/transform" "^25.5.1" - "@jest/types" "^25.5.0" + "@jest/console" "^26.6.2" + "@jest/reporters" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" ansi-escapes "^4.2.1" - chalk "^3.0.0" + chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" - jest-changed-files "^25.5.0" - jest-config "^25.5.4" - jest-haste-map "^25.5.1" - jest-message-util "^25.5.0" - jest-regex-util "^25.2.6" - jest-resolve "^25.5.1" - jest-resolve-dependencies "^25.5.4" - jest-runner "^25.5.4" - jest-runtime "^25.5.4" - jest-snapshot "^25.5.1" - jest-util "^25.5.0" - jest-validate "^25.5.0" - jest-watcher "^25.5.0" + jest-changed-files "^26.6.2" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-resolve-dependencies "^26.6.3" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + jest-watcher "^26.6.2" micromatch "^4.0.2" p-each-series "^2.1.0" - realpath-native "^2.0.0" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-25.5.0.tgz#aa33b0c21a716c65686638e7ef816c0e3a0c7b37" - integrity sha512-U2VXPEqL07E/V7pSZMSQCvV5Ea4lqOlT+0ZFijl/i316cRMHvZ4qC+jBdryd+lmRetjQo0YIQr6cVPNxxK87mA== +"@jest/environment@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" + integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== dependencies: - "@jest/fake-timers" "^25.5.0" - "@jest/types" "^25.5.0" - jest-mock "^25.5.0" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" -"@jest/fake-timers@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-25.5.0.tgz#46352e00533c024c90c2bc2ad9f2959f7f114185" - integrity sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ== +"@jest/fake-timers@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" + integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== dependencies: - "@jest/types" "^25.5.0" - jest-message-util "^25.5.0" - jest-mock "^25.5.0" - jest-util "^25.5.0" - lolex "^5.0.0" + "@jest/types" "^26.6.2" + "@sinonjs/fake-timers" "^6.0.1" + "@types/node" "*" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-util "^26.6.2" -"@jest/globals@^25.5.2": - version "25.5.2" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-25.5.2.tgz#5e45e9de8d228716af3257eeb3991cc2e162ca88" - integrity sha512-AgAS/Ny7Q2RCIj5kZ+0MuKM1wbF0WMLxbCVl/GOMoCNbODRdJ541IxJ98xnZdVSZXivKpJlNPIWa3QmY0l4CXA== +"@jest/globals@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" + integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== dependencies: - "@jest/environment" "^25.5.0" - "@jest/types" "^25.5.0" - expect "^25.5.0" + "@jest/environment" "^26.6.2" + "@jest/types" "^26.6.2" + expect "^26.6.2" -"@jest/reporters@^25.5.1": - version "25.5.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-25.5.1.tgz#cb686bcc680f664c2dbaf7ed873e93aa6811538b" - integrity sha512-3jbd8pPDTuhYJ7vqiHXbSwTJQNavczPs+f1kRprRDxETeE3u6srJ+f0NPuwvOmk+lmunZzPkYWIFZDLHQPkviw== +"@jest/reporters@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" + integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^25.5.0" - "@jest/test-result" "^25.5.0" - "@jest/transform" "^25.5.1" - "@jest/types" "^25.5.0" - chalk "^3.0.0" + "@jest/console" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.2" graceful-fs "^4.2.4" istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.0" + istanbul-lib-instrument "^4.0.3" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.0.2" - jest-haste-map "^25.5.1" - jest-resolve "^25.5.1" - jest-util "^25.5.0" - jest-worker "^25.5.0" + jest-haste-map "^26.6.2" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" slash "^3.0.0" source-map "^0.6.0" - string-length "^3.1.0" + string-length "^4.0.1" terminal-link "^2.0.0" - v8-to-istanbul "^4.1.3" + v8-to-istanbul "^7.0.0" optionalDependencies: - node-notifier "^6.0.0" + node-notifier "^8.0.0" -"@jest/source-map@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-25.5.0.tgz#df5c20d6050aa292c2c6d3f0d2c7606af315bd1b" - integrity sha512-eIGx0xN12yVpMcPaVpjXPnn3N30QGJCJQSkEDUt9x1fI1Gdvb07Ml6K5iN2hG7NmMP6FDmtPEssE3z6doOYUwQ== +"@jest/source-map@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" + integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== dependencies: callsites "^3.0.0" graceful-fs "^4.2.4" source-map "^0.6.0" -"@jest/test-result@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-25.5.0.tgz#139a043230cdeffe9ba2d8341b27f2efc77ce87c" - integrity sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A== +"@jest/test-result@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" + integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== dependencies: - "@jest/console" "^25.5.0" - "@jest/types" "^25.5.0" + "@jest/console" "^26.6.2" + "@jest/types" "^26.6.2" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^25.5.4": - version "25.5.4" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-25.5.4.tgz#9b4e685b36954c38d0f052e596d28161bdc8b737" - integrity sha512-pTJGEkSeg1EkCO2YWq6hbFvKNXk8ejqlxiOg1jBNLnWrgXOkdY6UmqZpwGFXNnRt9B8nO1uWMzLLZ4eCmhkPNA== +"@jest/test-sequencer@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" + integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== dependencies: - "@jest/test-result" "^25.5.0" + "@jest/test-result" "^26.6.2" graceful-fs "^4.2.4" - jest-haste-map "^25.5.1" - jest-runner "^25.5.4" - jest-runtime "^25.5.4" + jest-haste-map "^26.6.2" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" -"@jest/transform@^25.5.1": - version "25.5.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.5.1.tgz#0469ddc17699dd2bf985db55fa0fb9309f5c2db3" - integrity sha512-Y8CEoVwXb4QwA6Y/9uDkn0Xfz0finGkieuV0xkdF9UtZGJeLukD5nLkaVrVsODB1ojRWlaoD0AJZpVHCSnJEvg== +"@jest/transform@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" + integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^25.5.0" + "@jest/types" "^26.6.2" babel-plugin-istanbul "^6.0.0" - chalk "^3.0.0" + chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.2.4" - jest-haste-map "^25.5.1" - jest-regex-util "^25.2.6" - jest-util "^25.5.0" + jest-haste-map "^26.6.2" + jest-regex-util "^26.0.0" + jest-util "^26.6.2" micromatch "^4.0.2" pirates "^4.0.1" - realpath-native "^2.0.0" slash "^3.0.0" source-map "^0.6.1" write-file-atomic "^3.0.0" -"@jest/types@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" - integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" "@types/yargs" "^15.0.0" - chalk "^3.0.0" + chalk "^4.0.0" "@lerna/add@3.21.0": version "3.21.0" @@ -1372,6 +1533,24 @@ dependencies: type-detect "4.0.8" +"@sinonjs/fake-timers@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" + integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@types/babel__core@^7.0.0": + version "7.1.12" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d" + integrity sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + "@types/babel__core@^7.1.7": version "7.1.9" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.9.tgz#77e59d438522a6fb898fa43dc3455c6e72f3963d" @@ -1405,6 +1584,13 @@ dependencies: "@babel/types" "^7.3.0" +"@types/babel__traverse@^7.0.4": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.11.0.tgz#b9a1efa635201ba9bc850323a8793ee2d36c04a0" + integrity sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg== + dependencies: + "@babel/types" "^7.3.0" + "@types/chai@4.2.11": version "4.2.11" resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.11.tgz#d3614d6c5f500142358e6ed24e1bf16657536c50" @@ -1442,21 +1628,30 @@ dependencies: "@types/istanbul-lib-coverage" "*" -"@types/istanbul-reports@^1.1.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" - integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== +"@types/istanbul-reports@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" + integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== dependencies: - "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" -"@types/jest@25.2.3": - version "25.2.3" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.2.3.tgz#33d27e4c4716caae4eced355097a47ad363fdcaf" - integrity sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw== +"@types/jest@^26.0.19": + version "26.0.19" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.19.tgz#e6fa1e3def5842ec85045bd5210e9bb8289de790" + integrity sha512-jqHoirTG61fee6v6rwbnEuKhpSKih0tuhqeFbCmMmErhtu3BYlOZaXWjffgOstMM4S/3iQD31lI5bGLTrs97yQ== dependencies: - jest-diff "^25.2.1" - pretty-format "^25.2.1" + jest-diff "^26.0.0" + pretty-format "^26.0.0" + +"@types/json-schema@^7.0.3": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" + integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= "@types/minimatch@*", "@types/minimatch@^3.0.3": version "3.0.3" @@ -1483,15 +1678,15 @@ resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== -"@types/prettier@^1.19.0": - version "1.19.1" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f" - integrity sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ== +"@types/prettier@^2.0.0": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.1.5.tgz#b6ab3bba29e16b821d84e09ecfaded462b816b00" + integrity sha512-UEyp8LwZ4Dg30kVU2Q3amHHyTn1jEdhCIE59ANed76GaT1Vp76DD3ZWSAxgCrw6wJ0TqeoBpqmfUHiUDPs//HQ== -"@types/stack-utils@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" - integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== +"@types/stack-utils@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" + integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== "@types/yargs-parser@*": version "15.0.0" @@ -1505,6 +1700,76 @@ dependencies: "@types/yargs-parser" "*" +"@typescript-eslint/eslint-plugin@^4.10.0": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.10.0.tgz#19ed3baf4bc4232c5a7fcd32eaca75c3a5baf9f3" + integrity sha512-h6/V46o6aXpKRlarP1AiJEXuCJ7cMQdlpfMDrcllIgX3dFkLwEBTXAoNP98ZoOmqd1xvymMVRAI4e7yVvlzWEg== + dependencies: + "@typescript-eslint/experimental-utils" "4.10.0" + "@typescript-eslint/scope-manager" "4.10.0" + debug "^4.1.1" + functional-red-black-tree "^1.0.1" + regexpp "^3.0.0" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/experimental-utils@4.10.0", "@typescript-eslint/experimental-utils@^4.0.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.10.0.tgz#dbf5d0f89802d5feaf7d11e5b32df29bbc2f3a0e" + integrity sha512-opX+7ai1sdWBOIoBgpVJrH5e89ra1KoLrJTz0UtWAa4IekkKmqDosk5r6xqRaNJfCXEfteW4HXQAwMdx+jjEmw== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/scope-manager" "4.10.0" + "@typescript-eslint/types" "4.10.0" + "@typescript-eslint/typescript-estree" "4.10.0" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + +"@typescript-eslint/parser@^4.10.0": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.10.0.tgz#1a622b0847b765b2d8f0ede6f0cdd85f03d76031" + integrity sha512-amBvUUGBMadzCW6c/qaZmfr3t9PyevcSWw7hY2FuevdZVp5QPw/K76VSQ5Sw3BxlgYCHZcK6DjIhSZK0PQNsQg== + dependencies: + "@typescript-eslint/scope-manager" "4.10.0" + "@typescript-eslint/types" "4.10.0" + "@typescript-eslint/typescript-estree" "4.10.0" + debug "^4.1.1" + +"@typescript-eslint/scope-manager@4.10.0": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.10.0.tgz#dbd7e1fc63d7363e3aaff742a6f2b8afdbac9d27" + integrity sha512-WAPVw35P+fcnOa8DEic0tQUhoJJsgt+g6DEcz257G7vHFMwmag58EfowdVbiNcdfcV27EFR0tUBVXkDoIvfisQ== + dependencies: + "@typescript-eslint/types" "4.10.0" + "@typescript-eslint/visitor-keys" "4.10.0" + +"@typescript-eslint/types@4.10.0": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.10.0.tgz#12f983750ebad867f0c806e705c1953cd6415789" + integrity sha512-+dt5w1+Lqyd7wIPMa4XhJxUuE8+YF+vxQ6zxHyhLGHJjHiunPf0wSV8LtQwkpmAsRi1lEOoOIR30FG5S2HS33g== + +"@typescript-eslint/typescript-estree@4.10.0": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.10.0.tgz#1e62e45fd57866afd42daf5e9fb6bd4e8dbcfa75" + integrity sha512-mGK0YRp9TOk6ZqZ98F++bW6X5kMTzCRROJkGXH62d2azhghmq+1LNLylkGe6uGUOQzD452NOAEth5VAF6PDo5g== + dependencies: + "@typescript-eslint/types" "4.10.0" + "@typescript-eslint/visitor-keys" "4.10.0" + debug "^4.1.1" + globby "^11.0.1" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/visitor-keys@4.10.0": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.10.0.tgz#9478822329a9bc8ebcc80623d7f79a01da5ee451" + integrity sha512-hPyz5qmDMuZWFtHZkjcCpkAKHX8vdu1G3YsCLEd25ryZgnJfj6FQuJ5/O7R+dB1ueszilJmAFMtlU4CA6se3Jg== + dependencies: + "@typescript-eslint/types" "4.10.0" + eslint-visitor-keys "^2.0.0" + "@yarnpkg/lockfile@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" @@ -1527,38 +1792,38 @@ JSONStream@^1.0.4, JSONStream@^1.3.4: jsonparse "^1.2.0" through ">=2.2.7 <3" -abab@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.4.tgz#6dfa57b417ca06d21b2478f0e638302f99c2405c" - integrity sha512-Eu9ELJWCz/c1e9gTiCY+FceWxcqzjYEbqMgtndnuSqZSUCOL73TWNK2mHfIj4Cw2E/ongOp+JISVNCmovt2KYQ== +abab@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -acorn-globals@^4.3.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" - integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== dependencies: - acorn "^6.0.1" - acorn-walk "^6.0.1" + acorn "^7.1.1" + acorn-walk "^7.1.1" -acorn-walk@^6.0.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== +acorn-jsx@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== -acorn@^6.0.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" - integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn@^7.1.0: - 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@^7.1.1, acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== agent-base@4, agent-base@^4.3.0: version "4.3.0" @@ -1581,6 +1846,16 @@ agentkeepalive@^3.4.1: dependencies: humanize-ms "^1.2.1" +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ajv@^6.12.3: version "6.12.4" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234" @@ -1596,6 +1871,11 @@ ansi-colors@3.2.3: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" @@ -1731,11 +2011,6 @@ array-differ@^3.0.0: resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= - array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -1746,6 +2021,17 @@ array-ify@^1.0.0: resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= +array-includes@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.2.tgz#a8db03e0b88c8c6aeddc49cb132f9bcab4ebf9c8" + integrity sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + get-intrinsic "^1.0.1" + is-string "^1.0.5" + array-union@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -1768,6 +2054,15 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +array.prototype.flat@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" + integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -1842,17 +2137,17 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA== -babel-jest@^25.5.1: - version "25.5.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.5.1.tgz#bc2e6101f849d6f6aec09720ffc7bc5332e62853" - integrity sha512-9dA9+GmMjIzgPnYtkhBg73gOo/RHqPmLruP3BaGL4KEX3Dwz6pI8auSN8G8+iuEG90+GSswyKvslN+JYSaacaQ== +babel-jest@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" + integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== dependencies: - "@jest/transform" "^25.5.1" - "@jest/types" "^25.5.0" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" "@types/babel__core" "^7.1.7" babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^25.5.0" - chalk "^3.0.0" + babel-preset-jest "^26.6.2" + chalk "^4.0.0" graceful-fs "^4.2.4" slash "^3.0.0" @@ -1867,19 +2162,20 @@ babel-plugin-istanbul@^6.0.0: istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.5.0.tgz#129c80ba5c7fc75baf3a45b93e2e372d57ca2677" - integrity sha512-u+/W+WAjMlvoocYGTwthAiQSxDcJAyHpQ6oWlHdFZaaN+Rlk8Q7iiwDPg2lN/FyJtAYnKjFxbn7xus4HCFkg5g== +babel-plugin-jest-hoist@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" + integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" -babel-preset-current-node-syntax@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.3.tgz#b4b547acddbf963cba555ba9f9cbbb70bfd044da" - integrity sha512-uyexu1sVwcdFnyq9o8UQYsXwXflIh8LvrF5+cKrYam93ned1CStffB3+BEcsxGSgagoA3GEyjDqO4a/58hyPYQ== +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" @@ -1892,14 +2188,15 @@ babel-preset-current-node-syntax@^0.1.2: "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.5.0.tgz#c1d7f191829487a907764c65307faa0e66590b49" - integrity sha512-8ZczygctQkBU+63DtSOKGh7tFL0CeCuz+1ieud9lJ1WPQ9O6A1a/r+LGn6Y705PA6whHQ3T1XuB/PmpfNYf8Fw== +babel-preset-jest@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" + integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== dependencies: - babel-plugin-jest-hoist "^25.5.0" - babel-preset-current-node-syntax "^0.1.2" + babel-plugin-jest-hoist "^26.6.2" + babel-preset-current-node-syntax "^1.0.0" balanced-match@^1.0.0: version "1.0.0" @@ -1977,13 +2274,6 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browser-resolve@^1.11.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== - dependencies: - resolve "1.1.7" - browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" @@ -2069,6 +2359,14 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +call-bind@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" + integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.0" + call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" @@ -2139,6 +2437,11 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelcase@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + capture-exit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" @@ -2180,6 +2483,19 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -2215,6 +2531,11 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +cjs-module-lexer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" + integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -2409,6 +2730,11 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0: resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + conventional-changelog-angular@^5.0.3: version "5.0.11" resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.11.tgz#99a3ca16e4a5305e0c2c2fae3ef74fd7631fc3fb" @@ -2542,7 +2868,7 @@ cross-spawn@^6.0.0: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0: +cross-spawn@^7.0.0, cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -2551,7 +2877,7 @@ cross-spawn@^7.0.0: shebang-command "^2.0.0" which "^2.0.1" -cssom@^0.4.1: +cssom@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== @@ -2561,7 +2887,7 @@ cssom@~0.3.6: resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== -cssstyle@^2.0.0: +cssstyle@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== @@ -2594,14 +2920,14 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-urls@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" - integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== dependencies: - abab "^2.0.0" - whatwg-mimetype "^2.2.0" - whatwg-url "^7.0.0" + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" dateformat@^3.0.0: version "3.0.3" @@ -2622,13 +2948,20 @@ debug@3.2.6, debug@^3.1.0: dependencies: ms "^2.1.1" -debug@^2.2.0, debug@^2.3.3: +debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" +debug@^4.0.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -2654,6 +2987,11 @@ decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +decimal.js@^10.2.0: + version "10.2.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" + integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== + decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -2671,7 +3009,7 @@ deep-eql@^3.0.1: dependencies: type-detect "^4.0.0" -deep-is@~0.1.3: +deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= @@ -2755,10 +3093,10 @@ diacritics-map@^0.1.0: resolved "https://registry.yarnpkg.com/diacritics-map/-/diacritics-map-0.1.0.tgz#6dfc0ff9d01000a2edf2865371cac316e94977af" integrity sha1-bfwP+dAQAKLt8oZTccrDFulJd68= -diff-sequences@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" - integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== +diff-sequences@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" + integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== diff@3.5.0: version "3.5.0" @@ -2808,6 +3146,14 @@ doctrine@0.7.2: esutils "^1.1.6" isarray "0.0.1" +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -2815,12 +3161,12 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== dependencies: - webidl-conversions "^4.0.2" + webidl-conversions "^5.0.0" dot-prop@^4.2.0: version "4.2.0" @@ -2837,8 +3183,8 @@ dot-prop@^5.1.0: is-obj "^2.0.0" "dtslint@github:gcanti/dtslint": - version "0.4.3" - resolved "https://codeload.github.com/gcanti/dtslint/tar.gz/de9181e0f1069b16ea15da87f74d88ed9bc221b7" + version "0.4.4" + resolved "https://codeload.github.com/gcanti/dtslint/tar.gz/ef28f0ad1d3bd64b8367f6f543cf6fd3b9b09c1b" dependencies: fs-extra "^6.0.1" parsimmon "^1.12.0" @@ -2869,6 +3215,11 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" +emittery@^0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" + integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -2893,6 +3244,13 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + env-paths@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" @@ -2932,6 +3290,24 @@ es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: string.prototype.trimend "^1.0.1" string.prototype.trimstart "^1.0.1" +es-abstract@^1.18.0-next.0, es-abstract@^1.18.0-next.1: + version "1.18.0-next.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" + integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-negative-zero "^2.0.0" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -2958,7 +3334,12 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -escodegen@^1.11.1: +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escodegen@^1.14.1: version "1.14.3" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== @@ -2970,16 +3351,207 @@ escodegen@^1.11.1: optionalDependencies: source-map "~0.6.1" +eslint-config-prettier@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-7.0.0.tgz#c1ae4106f74e6c0357f44adb076771d032ac0e97" + integrity sha512-8Y8lGLVPPZdaNA7JXqnvETVC7IiVRgAP6afQu9gOQRn90YY3otMNh+x7Vr2vMePQntF+5erdSUBqSzCmU/AxaQ== + +eslint-import-resolver-node@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-import-resolver-typescript@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.3.0.tgz#0870988098bc6c6419c87705e6b42bee89425445" + integrity sha512-MHSXvmj5e0SGOOBhBbt7C+fWj1bJbtSYFAD85Xeg8nvUtuooTod2HQb8bfhE9f5QyyNxEfgzqOYFCvmdDIcCuw== + dependencies: + debug "^4.1.1" + glob "^7.1.6" + is-glob "^4.0.1" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" + +eslint-module-utils@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-codegen@^0.14.0: + version "0.14.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-codegen/-/eslint-plugin-codegen-0.14.4.tgz#f4ca136e5390aa0227799903369d41ae37f88d32" + integrity sha512-MoPXnbREvdqCadI9/vB5sjHq8DVCC1IOPKhUAOLlbHBrCahTusamsHJAzoOFZEoFwpvX7oZC4EwGEdgSZdfEaA== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "~7.12.0" + "@babel/parser" "^7.11.5" + "@babel/traverse" "^7.11.5" + expect "^26.0.0" + fp-ts "^2.1.0" + glob "^7.1.4" + io-ts "^2.2.4" + io-ts-extra "0.11.4" + js-yaml "^3.14.0" + lodash "^4.17.15" + string.prototype.matchall "^4.0.2" + +eslint-plugin-import@^2.22.1: + version "2.22.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" + integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== + dependencies: + array-includes "^3.1.1" + array.prototype.flat "^1.2.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.4" + eslint-module-utils "^2.6.0" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.1" + read-pkg-up "^2.0.0" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" + +eslint-plugin-jest@^24.1.3: + version "24.1.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.1.3.tgz#fa3db864f06c5623ff43485ca6c0e8fc5fe8ba0c" + integrity sha512-dNGGjzuEzCE3d5EPZQ/QGtmlMotqnYWD/QpCZ1UuZlrMAdhG5rldh0N0haCvhGnUkSeuORS5VNROwF9Hrgn3Lg== + dependencies: + "@typescript-eslint/experimental-utils" "^4.0.1" + +eslint-plugin-prettier@^3.1.4: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.0.tgz#61e295349a65688ffac0b7808ef0a8244bdd8d40" + integrity sha512-tMTwO8iUWlSRZIwS9k7/E4vrTsfvsrcM5p1eftyuqWH25nKsz/o6/54I7jwQ/3zobISyC7wMy9ZsFwgTxOcOpQ== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-simple-import-sort@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-7.0.0.tgz#a1dad262f46d2184a90095a60c66fef74727f0f8" + integrity sha512-U3vEDB5zhYPNfxT5TYR7u01dboFZp+HNpnGhkDB2g/2E4wZ/g1Q9Ton8UwCLfRV9yAKyYqDh62oHOamvkFxsvw== + +eslint-plugin-sort-destructure-keys@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-sort-destructure-keys/-/eslint-plugin-sort-destructure-keys-1.3.5.tgz#c6f45c3e58d4435564025a6ca5f4a838010800fd" + integrity sha512-JmVpidhDsLwZsmRDV7Tf/vZgOAOEQGkLtwToSvX5mD8fuWYS/xkgMRBsalW1fGlc8CgJJwnzropt4oMQ7YCHLg== + dependencies: + natural-compare-lite "^1.4.0" + +eslint-scope@^5.0.0, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^2.0.0, eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" + integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== + +eslint@^7.15.0: + version "7.15.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.15.0.tgz#eb155fb8ed0865fcf5d903f76be2e5b6cd7e0bc7" + integrity sha512-Vr64xFDT8w30wFll643e7cGrIkPEU50yIiI36OdSIDoSGguIeaLzBo0vpGvzo9RECUqq7htURfwEtKqwytkqzA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@eslint/eslintrc" "^0.2.2" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.2.0" + esutils "^2.0.2" + file-entry-cache "^6.0.0" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash "^4.17.19" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -estraverse@^4.2.0: +esquery@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + esutils@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.1.6.tgz#c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375" @@ -3013,10 +3585,10 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^3.2.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" - integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== +execa@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -3025,7 +3597,6 @@ execa@^3.2.0: merge-stream "^2.0.0" npm-run-path "^4.0.0" onetime "^5.1.0" - p-finally "^2.0.0" signal-exit "^3.0.2" strip-final-newline "^2.0.0" @@ -3054,17 +3625,17 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" -expect@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-25.5.0.tgz#f07f848712a2813bb59167da3fb828ca21f58bba" - integrity sha512-w7KAXo0+6qqZZhovCaBVPSIqQp7/UTcx4M9uKt2m6pd2VB1voyC8JizLRqeEqud3AAVP02g+hbErDu5gu64tlA== +expect@^26.0.0, expect@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" + integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== dependencies: - "@jest/types" "^25.5.0" + "@jest/types" "^26.6.2" ansi-styles "^4.0.0" - jest-get-type "^25.2.6" - jest-matcher-utils "^25.5.0" - jest-message-util "^25.5.0" - jest-regex-util "^25.2.6" + jest-get-type "^26.3.0" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" extend-shallow@^2.0.1: version "2.0.1" @@ -3131,6 +3702,11 @@ fast-deep-equal@^3.1.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + fast-equals@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-2.0.0.tgz#bef2c423af3939f2c54310df54c57e64cd2adefc" @@ -3148,7 +3724,7 @@ fast-glob@^2.2.6: merge2 "^1.2.3" micromatch "^3.1.10" -fast-glob@^3.0.3: +fast-glob@^3.0.3, fast-glob@^3.1.1: version "3.2.4" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== @@ -3165,7 +3741,7 @@ fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -3196,6 +3772,13 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" +file-entry-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a" + integrity sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA== + dependencies: + flat-cache "^3.0.4" + fill-range@^2.1.0: version "2.2.4" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" @@ -3239,7 +3822,7 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.0.0: +find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= @@ -3254,6 +3837,14 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + flat@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" @@ -3261,6 +3852,11 @@ flat@^4.1.0: dependencies: is-buffer "~2.0.3" +flatted@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.0.tgz#a5d06b4a8b01e3a63771daa5cb7a1903e2e57067" + integrity sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA== + flush-write-stream@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" @@ -3298,6 +3894,11 @@ fp-ts@^2.0.2, fp-ts@^2.4.1, fp-ts@^2.5.3: resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.8.1.tgz#b1812171469a7c0fcbc0b770ac2568f8356d1993" integrity sha512-HuA/6roEliHoBgEOLCKmGRcM90e2trW/ITZZ9d9P/ra7PreqQagC3Jg6OzqWkai13KUbG90b8QO9rHPBGK/ckw== +fp-ts@^2.1.0: + version "2.9.1" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.9.1.tgz#24557f66f9221f8a1922fce6cbe2b8ea6d0f3929" + integrity sha512-9++IpEtF2blK7tfSV+iHxO3KXdAGO/bPPQtUYqzC6XKzGOWNctqvlf13SpXxcu2mYaibOvneh/m9vAPLAHdoRQ== + fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" @@ -3372,6 +3973,11 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -3406,6 +4012,15 @@ get-func-name@^2.0.0: resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= +get-intrinsic@^1.0.0, get-intrinsic@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.1.tgz#94a9768fcbdd0595a1c9273aacf4c89d075631be" + integrity sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -3556,6 +4171,13 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + globby@^10.0.1: version "10.0.2" resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" @@ -3570,6 +4192,18 @@ globby@^10.0.1: merge2 "^1.2.3" slash "^3.0.0" +globby@^11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" + integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + globby@^9.2.0: version "9.2.0" resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" @@ -3717,12 +4351,12 @@ hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== dependencies: - whatwg-encoding "^1.0.1" + whatwg-encoding "^1.0.5" html-escaper@^2.0.0: version "2.0.2" @@ -3797,12 +4431,12 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" -ignore@^4.0.3: +ignore@^4.0.3, ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.1.1: +ignore@^5.1.1, ignore@^5.1.4: version "5.1.8" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== @@ -3815,6 +4449,14 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.2.tgz#fc129c160c5d68235507f4331a6baad186bdbc3e" + integrity sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" @@ -3916,6 +4558,23 @@ inquirer@^6.2.0: strip-ansi "^5.1.0" through "^2.3.6" +internal-slot@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" + integrity sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g== + dependencies: + es-abstract "^1.17.0-next.1" + has "^1.0.3" + side-channel "^1.0.2" + +io-ts-extra@0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/io-ts-extra/-/io-ts-extra-0.11.4.tgz#4885fb646017dd619fa5dfc799fcd0e44599aaf0" + integrity sha512-XrvZluS4RPnj0/w8i0Vl9L9m7ajF1Spx039b8exDybF6z9speQJleBP0ujmJ3uu3eelpredYywlec2ZF9ZtH7g== + dependencies: + fp-ts "^2.1.0" + io-ts "^2.2.4" + io-ts-types@^0.5.6: version "0.5.9" resolved "https://registry.yarnpkg.com/io-ts-types/-/io-ts-types-0.5.9.tgz#3efa7c123b102c7e9ebe5bccfc610071d7d6e008" @@ -3926,6 +4585,11 @@ io-ts@^2.1.3: resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-2.2.9.tgz#9a427512926462f20415099917a31dbf409ff2b0" integrity sha512-Q9ob1VnpwyNoMam/BO6hm2dF4uu+to8NWSZNsRW6Q2Ni38PadgLZSQDo0hW7CJFgpJkQw4BXGwXzjr7c47c+fw== +io-ts@^2.2.4: + version "2.2.13" + resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-2.2.13.tgz#e04016685e863dd5cffb2b5262c5c9c74432dfda" + integrity sha512-BYJgE/BanovJKDvCnAkrr7f3gTucSyk+Sr5VtpouBO1/YfBKUyIn2z1ODG8LEF+1D4sjKZ3Bd/A5/v8JrJe5UQ== + ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" @@ -3985,6 +4649,11 @@ is-callable@^1.1.4, is-callable@^1.2.0: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== +is-callable@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" + integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== + is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -3992,6 +4661,13 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-core-module@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" + integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -4102,6 +4778,11 @@ is-negated-glob@^1.0.0: resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= +is-negative-zero@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" @@ -4153,7 +4834,12 @@ is-plain-object@^4.0.0: resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-4.1.1.tgz#1a14d6452cbd50790edc7fdaa0aed5a40a35ebb5" integrity sha512-5Aw8LLVsDlZsETVMhoMXzqsXwQqr/0vlnBYzIXJbYo2F4yYlhLHs+Ez7Bod7IIQKWkJbJfxrWD7pA1Dw1TKrwA== -is-regex@^1.1.0: +is-potential-custom-element-name@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" + integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= + +is-regex@^1.1.0, is-regex@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== @@ -4184,6 +4870,11 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + is-symbol@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" @@ -4220,7 +4911,7 @@ is-windows@^1.0.0, is-windows@^1.0.1, is-windows@^1.0.2: resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is-wsl@^2.1.1: +is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -4232,7 +4923,7 @@ isarray@0.0.1: resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= -isarray@1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -4264,7 +4955,7 @@ istanbul-lib-coverage@^3.0.0: resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== -istanbul-lib-instrument@^4.0.0: +istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== @@ -4300,369 +4991,378 @@ istanbul-reports@^3.0.2: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-changed-files@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-25.5.0.tgz#141cc23567ceb3f534526f8614ba39421383634c" - integrity sha512-EOw9QEqapsDT7mKF162m8HFzRPbmP8qJQny6ldVOdOVBz3ACgPm/1nAn5fPQ/NDaYhX/AHkrGwwkCncpAVSXcw== +jest-changed-files@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" + integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== dependencies: - "@jest/types" "^25.5.0" - execa "^3.2.0" + "@jest/types" "^26.6.2" + execa "^4.0.0" throat "^5.0.0" -jest-cli@^25.5.4: - version "25.5.4" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-25.5.4.tgz#b9f1a84d1301a92c5c217684cb79840831db9f0d" - integrity sha512-rG8uJkIiOUpnREh1768/N3n27Cm+xPFkSNFO91tgg+8o2rXeVLStz+vkXkGr4UtzH6t1SNbjwoiswd7p4AhHTw== +jest-cli@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" + integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== dependencies: - "@jest/core" "^25.5.4" - "@jest/test-result" "^25.5.0" - "@jest/types" "^25.5.0" - chalk "^3.0.0" + "@jest/core" "^26.6.3" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" import-local "^3.0.2" is-ci "^2.0.0" - jest-config "^25.5.4" - jest-util "^25.5.0" - jest-validate "^25.5.0" + jest-config "^26.6.3" + jest-util "^26.6.2" + jest-validate "^26.6.2" prompts "^2.0.1" - realpath-native "^2.0.0" - yargs "^15.3.1" + yargs "^15.4.1" -jest-config@^25.5.4: - version "25.5.4" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-25.5.4.tgz#38e2057b3f976ef7309b2b2c8dcd2a708a67f02c" - integrity sha512-SZwR91SwcdK6bz7Gco8qL7YY2sx8tFJYzvg216DLihTWf+LKY/DoJXpM9nTzYakSyfblbqeU48p/p7Jzy05Atg== +jest-config@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" + integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^25.5.4" - "@jest/types" "^25.5.0" - babel-jest "^25.5.1" - chalk "^3.0.0" + "@jest/test-sequencer" "^26.6.3" + "@jest/types" "^26.6.2" + babel-jest "^26.6.3" + chalk "^4.0.0" deepmerge "^4.2.2" glob "^7.1.1" graceful-fs "^4.2.4" - jest-environment-jsdom "^25.5.0" - jest-environment-node "^25.5.0" - jest-get-type "^25.2.6" - jest-jasmine2 "^25.5.4" - jest-regex-util "^25.2.6" - jest-resolve "^25.5.1" - jest-util "^25.5.0" - jest-validate "^25.5.0" + jest-environment-jsdom "^26.6.2" + jest-environment-node "^26.6.2" + jest-get-type "^26.3.0" + jest-jasmine2 "^26.6.3" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" micromatch "^4.0.2" - pretty-format "^25.5.0" - realpath-native "^2.0.0" + pretty-format "^26.6.2" -jest-diff@^25.2.1, jest-diff@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9" - integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A== +jest-diff@^26.0.0, jest-diff@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" + integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== dependencies: - chalk "^3.0.0" - diff-sequences "^25.2.6" - jest-get-type "^25.2.6" - pretty-format "^25.5.0" + chalk "^4.0.0" + diff-sequences "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" -jest-docblock@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-25.3.0.tgz#8b777a27e3477cd77a168c05290c471a575623ef" - integrity sha512-aktF0kCar8+zxRHxQZwxMy70stc9R1mOmrLsT5VO3pIT0uzGRSDAXxSlz4NqQWpuLjPpuMhPRl7H+5FRsvIQAg== +jest-docblock@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" + integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== dependencies: detect-newline "^3.0.0" -jest-each@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-25.5.0.tgz#0c3c2797e8225cb7bec7e4d249dcd96b934be516" - integrity sha512-QBogUxna3D8vtiItvn54xXde7+vuzqRrEeaw8r1s+1TG9eZLVJE5ZkKoSUlqFwRjnlaA4hyKGiu9OlkFIuKnjA== - dependencies: - "@jest/types" "^25.5.0" - chalk "^3.0.0" - jest-get-type "^25.2.6" - jest-util "^25.5.0" - pretty-format "^25.5.0" - -jest-environment-jsdom@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-25.5.0.tgz#dcbe4da2ea997707997040ecf6e2560aec4e9834" - integrity sha512-7Jr02ydaq4jaWMZLY+Skn8wL5nVIYpWvmeatOHL3tOcV3Zw8sjnPpx+ZdeBfc457p8jCR9J6YCc+Lga0oIy62A== - dependencies: - "@jest/environment" "^25.5.0" - "@jest/fake-timers" "^25.5.0" - "@jest/types" "^25.5.0" - jest-mock "^25.5.0" - jest-util "^25.5.0" - jsdom "^15.2.1" - -jest-environment-node@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-25.5.0.tgz#0f55270d94804902988e64adca37c6ce0f7d07a1" - integrity sha512-iuxK6rQR2En9EID+2k+IBs5fCFd919gVVK5BeND82fYeLWPqvRcFNPKu9+gxTwfB5XwBGBvZ0HFQa+cHtIoslA== - dependencies: - "@jest/environment" "^25.5.0" - "@jest/fake-timers" "^25.5.0" - "@jest/types" "^25.5.0" - jest-mock "^25.5.0" - jest-util "^25.5.0" - semver "^6.3.0" +jest-each@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" + integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== + dependencies: + "@jest/types" "^26.6.2" + chalk "^4.0.0" + jest-get-type "^26.3.0" + jest-util "^26.6.2" + pretty-format "^26.6.2" + +jest-environment-jsdom@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" + integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" + jsdom "^16.4.0" + +jest-environment-node@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" + integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" -jest-get-type@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" - integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== +jest-get-type@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" + integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== -jest-haste-map@^25.5.1: - version "25.5.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.5.1.tgz#1df10f716c1d94e60a1ebf7798c9fb3da2620943" - integrity sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ== +jest-haste-map@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" + integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== dependencies: - "@jest/types" "^25.5.0" + "@jest/types" "^26.6.2" "@types/graceful-fs" "^4.1.2" + "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.4" - jest-serializer "^25.5.0" - jest-util "^25.5.0" - jest-worker "^25.5.0" + jest-regex-util "^26.0.0" + jest-serializer "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" micromatch "^4.0.2" sane "^4.0.3" walker "^1.0.7" - which "^2.0.2" optionalDependencies: fsevents "^2.1.2" -jest-jasmine2@^25.5.4: - version "25.5.4" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.5.4.tgz#66ca8b328fb1a3c5364816f8958f6970a8526968" - integrity sha512-9acbWEfbmS8UpdcfqnDO+uBUgKa/9hcRh983IHdM+pKmJPL77G0sWAAK0V0kr5LK3a8cSBfkFSoncXwQlRZfkQ== +jest-jasmine2@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" + integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^25.5.0" - "@jest/source-map" "^25.5.0" - "@jest/test-result" "^25.5.0" - "@jest/types" "^25.5.0" - chalk "^3.0.0" + "@jest/environment" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" co "^4.6.0" - expect "^25.5.0" + expect "^26.6.2" is-generator-fn "^2.0.0" - jest-each "^25.5.0" - jest-matcher-utils "^25.5.0" - jest-message-util "^25.5.0" - jest-runtime "^25.5.4" - jest-snapshot "^25.5.1" - jest-util "^25.5.0" - pretty-format "^25.5.0" + jest-each "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + pretty-format "^26.6.2" throat "^5.0.0" -jest-leak-detector@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-25.5.0.tgz#2291c6294b0ce404241bb56fe60e2d0c3e34f0bb" - integrity sha512-rV7JdLsanS8OkdDpZtgBf61L5xZ4NnYLBq72r6ldxahJWWczZjXawRsoHyXzibM5ed7C2QRjpp6ypgwGdKyoVA== +jest-leak-detector@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" + integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== dependencies: - jest-get-type "^25.2.6" - pretty-format "^25.5.0" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" -jest-matcher-utils@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.5.0.tgz#fbc98a12d730e5d2453d7f1ed4a4d948e34b7867" - integrity sha512-VWI269+9JS5cpndnpCwm7dy7JtGQT30UHfrnM3mXl22gHGt/b7NkjBqXfbhZ8V4B7ANUsjK18PlSBmG0YH7gjw== +jest-matcher-utils@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" + integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== dependencies: - chalk "^3.0.0" - jest-diff "^25.5.0" - jest-get-type "^25.2.6" - pretty-format "^25.5.0" + chalk "^4.0.0" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" -jest-message-util@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.5.0.tgz#ea11d93204cc7ae97456e1d8716251185b8880ea" - integrity sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA== +jest-message-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" + integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== dependencies: "@babel/code-frame" "^7.0.0" - "@jest/types" "^25.5.0" - "@types/stack-utils" "^1.0.1" - chalk "^3.0.0" + "@jest/types" "^26.6.2" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" graceful-fs "^4.2.4" micromatch "^4.0.2" + pretty-format "^26.6.2" slash "^3.0.0" - stack-utils "^1.0.1" + stack-utils "^2.0.2" -jest-mock@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-25.5.0.tgz#a91a54dabd14e37ecd61665d6b6e06360a55387a" - integrity sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA== +jest-mock@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" + integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== dependencies: - "@jest/types" "^25.5.0" + "@jest/types" "^26.6.2" + "@types/node" "*" -jest-pnp-resolver@^1.2.1: +jest-pnp-resolver@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-regex-util@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.2.6.tgz#d847d38ba15d2118d3b06390056028d0f2fd3964" - integrity sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw== +jest-regex-util@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" + integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== -jest-resolve-dependencies@^25.5.4: - version "25.5.4" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-25.5.4.tgz#85501f53957c8e3be446e863a74777b5a17397a7" - integrity sha512-yFmbPd+DAQjJQg88HveObcGBA32nqNZ02fjYmtL16t1xw9bAttSn5UGRRhzMHIQbsep7znWvAvnD4kDqOFM0Uw== +jest-resolve-dependencies@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" + integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== dependencies: - "@jest/types" "^25.5.0" - jest-regex-util "^25.2.6" - jest-snapshot "^25.5.1" + "@jest/types" "^26.6.2" + jest-regex-util "^26.0.0" + jest-snapshot "^26.6.2" -jest-resolve@^25.5.1: - version "25.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-25.5.1.tgz#0e6fbcfa7c26d2a5fe8f456088dc332a79266829" - integrity sha512-Hc09hYch5aWdtejsUZhA+vSzcotf7fajSlPA6EZPE1RmPBAD39XtJhvHWFStid58iit4IPDLI/Da4cwdDmAHiQ== +jest-resolve@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" + integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== dependencies: - "@jest/types" "^25.5.0" - browser-resolve "^1.11.3" - chalk "^3.0.0" + "@jest/types" "^26.6.2" + chalk "^4.0.0" graceful-fs "^4.2.4" - jest-pnp-resolver "^1.2.1" + jest-pnp-resolver "^1.2.2" + jest-util "^26.6.2" read-pkg-up "^7.0.1" - realpath-native "^2.0.0" - resolve "^1.17.0" + resolve "^1.18.1" slash "^3.0.0" -jest-runner@^25.5.4: - version "25.5.4" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-25.5.4.tgz#ffec5df3875da5f5c878ae6d0a17b8e4ecd7c71d" - integrity sha512-V/2R7fKZo6blP8E9BL9vJ8aTU4TH2beuqGNxHbxi6t14XzTb+x90B3FRgdvuHm41GY8ch4xxvf0ATH4hdpjTqg== +jest-runner@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" + integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== dependencies: - "@jest/console" "^25.5.0" - "@jest/environment" "^25.5.0" - "@jest/test-result" "^25.5.0" - "@jest/types" "^25.5.0" - chalk "^3.0.0" + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.7.1" exit "^0.1.2" graceful-fs "^4.2.4" - jest-config "^25.5.4" - jest-docblock "^25.3.0" - jest-haste-map "^25.5.1" - jest-jasmine2 "^25.5.4" - jest-leak-detector "^25.5.0" - jest-message-util "^25.5.0" - jest-resolve "^25.5.1" - jest-runtime "^25.5.4" - jest-util "^25.5.0" - jest-worker "^25.5.0" + jest-config "^26.6.3" + jest-docblock "^26.0.0" + jest-haste-map "^26.6.2" + jest-leak-detector "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" + jest-runtime "^26.6.3" + jest-util "^26.6.2" + jest-worker "^26.6.2" source-map-support "^0.5.6" throat "^5.0.0" -jest-runtime@^25.5.4: - version "25.5.4" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-25.5.4.tgz#dc981fe2cb2137abcd319e74ccae7f7eeffbfaab" - integrity sha512-RWTt8LeWh3GvjYtASH2eezkc8AehVoWKK20udV6n3/gC87wlTbE1kIA+opCvNWyyPeBs6ptYsc6nyHUb1GlUVQ== - dependencies: - "@jest/console" "^25.5.0" - "@jest/environment" "^25.5.0" - "@jest/globals" "^25.5.2" - "@jest/source-map" "^25.5.0" - "@jest/test-result" "^25.5.0" - "@jest/transform" "^25.5.1" - "@jest/types" "^25.5.0" +jest-runtime@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" + integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== + dependencies: + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/globals" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" "@types/yargs" "^15.0.0" - chalk "^3.0.0" + chalk "^4.0.0" + cjs-module-lexer "^0.6.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.3" graceful-fs "^4.2.4" - jest-config "^25.5.4" - jest-haste-map "^25.5.1" - jest-message-util "^25.5.0" - jest-mock "^25.5.0" - jest-regex-util "^25.2.6" - jest-resolve "^25.5.1" - jest-snapshot "^25.5.1" - jest-util "^25.5.0" - jest-validate "^25.5.0" - realpath-native "^2.0.0" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" slash "^3.0.0" strip-bom "^4.0.0" - yargs "^15.3.1" + yargs "^15.4.1" -jest-serializer@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-25.5.0.tgz#a993f484e769b4ed54e70e0efdb74007f503072b" - integrity sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA== +jest-serializer@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" + integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== dependencies: + "@types/node" "*" graceful-fs "^4.2.4" -jest-snapshot@^25.5.1: - version "25.5.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-25.5.1.tgz#1a2a576491f9961eb8d00c2e5fd479bc28e5ff7f" - integrity sha512-C02JE1TUe64p2v1auUJ2ze5vcuv32tkv9PyhEb318e8XOKF7MOyXdJ7kdjbvrp3ChPLU2usI7Rjxs97Dj5P0uQ== +jest-snapshot@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" + integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== dependencies: "@babel/types" "^7.0.0" - "@jest/types" "^25.5.0" - "@types/prettier" "^1.19.0" - chalk "^3.0.0" - expect "^25.5.0" + "@jest/types" "^26.6.2" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.0.0" + chalk "^4.0.0" + expect "^26.6.2" graceful-fs "^4.2.4" - jest-diff "^25.5.0" - jest-get-type "^25.2.6" - jest-matcher-utils "^25.5.0" - jest-message-util "^25.5.0" - jest-resolve "^25.5.1" - make-dir "^3.0.0" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + jest-haste-map "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" natural-compare "^1.4.0" - pretty-format "^25.5.0" - semver "^6.3.0" + pretty-format "^26.6.2" + semver "^7.3.2" -jest-util@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.5.0.tgz#31c63b5d6e901274d264a4fec849230aa3fa35b0" - integrity sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA== +jest-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" + integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== dependencies: - "@jest/types" "^25.5.0" - chalk "^3.0.0" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" graceful-fs "^4.2.4" is-ci "^2.0.0" - make-dir "^3.0.0" + micromatch "^4.0.2" -jest-validate@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-25.5.0.tgz#fb4c93f332c2e4cf70151a628e58a35e459a413a" - integrity sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ== +jest-validate@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" + integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== dependencies: - "@jest/types" "^25.5.0" - camelcase "^5.3.1" - chalk "^3.0.0" - jest-get-type "^25.2.6" + "@jest/types" "^26.6.2" + camelcase "^6.0.0" + chalk "^4.0.0" + jest-get-type "^26.3.0" leven "^3.1.0" - pretty-format "^25.5.0" + pretty-format "^26.6.2" -jest-watcher@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-25.5.0.tgz#d6110d101df98badebe435003956fd4a465e8456" - integrity sha512-XrSfJnVASEl+5+bb51V0Q7WQx65dTSk7NL4yDdVjPnRNpM0hG+ncFmDYJo9O8jaSRcAitVbuVawyXCRoxGrT5Q== +jest-watcher@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" + integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== dependencies: - "@jest/test-result" "^25.5.0" - "@jest/types" "^25.5.0" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" ansi-escapes "^4.2.1" - chalk "^3.0.0" - jest-util "^25.5.0" - string-length "^3.1.0" + chalk "^4.0.0" + jest-util "^26.6.2" + string-length "^4.0.1" -jest-worker@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" - integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== +jest-worker@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== dependencies: + "@types/node" "*" merge-stream "^2.0.0" supports-color "^7.0.0" -jest@^25.1.0: - version "25.5.4" - resolved "https://registry.yarnpkg.com/jest/-/jest-25.5.4.tgz#f21107b6489cfe32b076ce2adcadee3587acb9db" - integrity sha512-hHFJROBTqZahnO+X+PMtT6G2/ztqAZJveGqz//FnWWHurizkD05PQGzRZOhF3XP6z7SJmL+5tCfW8qV06JypwQ== +jest@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef" + integrity sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q== dependencies: - "@jest/core" "^25.5.4" + "@jest/core" "^26.6.3" import-local "^3.0.2" - jest-cli "^25.5.4" + jest-cli "^26.6.3" js-tokens@^4.0.0: version "4.0.0" @@ -4685,41 +5385,49 @@ js-yaml@^3.13.1, js-yaml@^3.8.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^3.14.0: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsdom@^15.2.1: - version "15.2.1" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5" - integrity sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g== - dependencies: - abab "^2.0.0" - acorn "^7.1.0" - acorn-globals "^4.3.2" - array-equal "^1.0.0" - cssom "^0.4.1" - cssstyle "^2.0.0" - data-urls "^1.1.0" - domexception "^1.0.1" - escodegen "^1.11.1" - html-encoding-sniffer "^1.0.2" +jsdom@^16.4.0: + version "16.4.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" + integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w== + dependencies: + abab "^2.0.3" + acorn "^7.1.1" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.2.0" + data-urls "^2.0.0" + decimal.js "^10.2.0" + domexception "^2.0.1" + escodegen "^1.14.1" + html-encoding-sniffer "^2.0.1" + is-potential-custom-element-name "^1.0.0" nwsapi "^2.2.0" - parse5 "5.1.0" - pn "^1.1.0" - request "^2.88.0" - request-promise-native "^1.0.7" - saxes "^3.1.9" - symbol-tree "^3.2.2" + parse5 "5.1.1" + request "^2.88.2" + request-promise-native "^1.0.8" + saxes "^5.0.0" + symbol-tree "^3.2.4" tough-cookie "^3.0.1" - w3c-hr-time "^1.0.1" - w3c-xmlserializer "^1.1.2" - webidl-conversions "^4.0.2" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" whatwg-encoding "^1.0.5" whatwg-mimetype "^2.3.0" - whatwg-url "^7.0.0" - ws "^7.0.0" + whatwg-url "^8.0.0" + ws "^7.2.3" xml-name-validator "^3.0.0" jsesc@^2.5.1: @@ -4742,6 +5450,11 @@ json-schema@0.2.3: resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -4754,6 +5467,13 @@ json5@2.x, json5@^2.1.2: dependencies: minimist "^1.2.5" +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -4841,6 +5561,14 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -4875,6 +5603,16 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" @@ -4974,7 +5712,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.17.12, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.2.1: +lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.2.1: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -4986,13 +5724,6 @@ log-symbols@3.0.0: dependencies: chalk "^2.4.2" -lolex@^5.0.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-5.1.2.tgz#953694d098ce7c07bc5ed6d0e42bc6c0c6d5a367" - integrity sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A== - dependencies: - "@sinonjs/commons" "^1.7.0" - loud-rejection@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" @@ -5008,6 +5739,13 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + macos-release@^2.2.0: version "2.4.1" resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.4.1.tgz#64033d0ec6a5e6375155a74b1a1eba8e509820ac" @@ -5380,7 +6118,7 @@ ms@2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -ms@^2.0.0, ms@^2.1.1: +ms@2.1.2, ms@^2.0.0, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== @@ -5442,6 +6180,11 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha1-F7CVgZiJef3a/gIB6TG6kzyWy7Q= + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -5511,16 +6254,17 @@ node-modules-regexp@^1.0.0: resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= -node-notifier@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-6.0.0.tgz#cea319e06baa16deec8ce5cd7f133c4a46b68e12" - integrity sha512-SVfQ/wMw+DesunOm5cKqr6yDcvUTDl/yc97ybGHMrteNEY6oekXpNpS3lZwgLlwz0FLgHoiW28ZpmBHUDg37cw== +node-notifier@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.1.tgz#f86e89bbc925f2b068784b31f382afdc6ca56be1" + integrity sha512-BvEXF+UmsnAfYfoapKM9nGxnP+Wn7P91YfXmrKnfcYCx6VBeoN5Ez5Ogck6I8Bi5k4RlpqRYaw75pAwzX9OphA== dependencies: growly "^1.3.0" - is-wsl "^2.1.1" - semver "^6.3.0" + is-wsl "^2.2.0" + semver "^7.3.2" shellwords "^0.1.1" - which "^1.3.1" + uuid "^8.3.0" + which "^2.0.2" nopt@^4.0.1: version "4.0.3" @@ -5669,6 +6413,11 @@ object-inspect@^1.7.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== +object-inspect@^1.8.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" + integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== + object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -5691,6 +6440,16 @@ object.assign@4.1.0, object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" +object.assign@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + object.getownpropertydescriptors@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" @@ -5706,6 +6465,16 @@ object.pick@^1.2.0, object.pick@^1.3.0: dependencies: isobject "^3.0.1" +object.values@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.2.tgz#7a2015e06fcb0f546bd652486ce8583a4731c731" + integrity sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + has "^1.0.3" + octokit-pagination-methods@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" @@ -5744,6 +6513,18 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -5780,11 +6561,6 @@ p-finally@^1.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-finally@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" - integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== - p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -5875,6 +6651,13 @@ parallel-transform@^1.1.0: inherits "^2.0.3" readable-stream "^2.1.5" +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + parse-github-repo-url@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" @@ -5923,10 +6706,10 @@ parse-url@^5.0.0: parse-path "^4.0.0" protocols "^1.4.0" -parse5@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" - integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== +parse5@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== parsimmon@^1.12.0: version "1.15.0" @@ -5989,6 +6772,13 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -6050,6 +6840,13 @@ pirates@^4.0.1: dependencies: node-modules-regexp "^1.0.0" +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -6064,21 +6861,28 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pn@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== - posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + prettier@2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4" @@ -6089,21 +6893,26 @@ prettier@^1.16.4: resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== -pretty-format@^25.2.1, pretty-format@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" - integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== +pretty-format@^26.0.0, pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== dependencies: - "@jest/types" "^25.5.0" + "@jest/types" "^26.6.2" ansi-regex "^5.0.0" ansi-styles "^4.0.0" - react-is "^16.12.0" + react-is "^17.0.1" process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -6218,10 +7027,10 @@ randomatic@^3.0.0: kind-of "^6.0.0" math-random "^1.0.1" -react-is@^16.12.0: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +react-is@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" + integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== read-cmd-shim@^1.0.1: version "1.0.5" @@ -6259,6 +7068,14 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + read-pkg-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" @@ -6285,6 +7102,15 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" @@ -6350,11 +7176,6 @@ readdirp@~3.2.0: dependencies: picomatch "^2.0.4" -realpath-native@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-2.0.0.tgz#7377ac429b6e1fd599dc38d08ed942d0d7beb866" - integrity sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q== - redent@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" @@ -6387,6 +7208,19 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexp.prototype.flags@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +regexpp@^3.0.0, regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + remarkable@^1.7.1: version "1.7.4" resolved "https://registry.yarnpkg.com/remarkable/-/remarkable-1.7.4.tgz#19073cb960398c87a7d6546eaa5e50d2022fcd00" @@ -6424,7 +7258,7 @@ request-promise-core@1.1.4: dependencies: lodash "^4.17.19" -request-promise-native@^1.0.7: +request-promise-native@^1.0.8: version "1.0.9" resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== @@ -6433,7 +7267,7 @@ request-promise-native@^1.0.7: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.88.0: +request@^2.88.0, request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -6503,11 +7337,6 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - resolve@^1.10.0, resolve@^1.17.0, resolve@^1.3.2: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" @@ -6515,6 +7344,14 @@ resolve@^1.10.0, resolve@^1.17.0, resolve@^1.3.2: dependencies: path-parse "^1.0.6" +resolve@^1.13.1, resolve@^1.18.1: + version "1.19.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" + integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== + dependencies: + is-core-module "^2.1.0" + path-parse "^1.0.6" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -6618,12 +7455,12 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -saxes@^3.1.9: - version "3.1.11" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" - integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== +saxes@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== dependencies: - xmlchars "^2.1.1" + xmlchars "^2.2.0" "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: version "5.7.1" @@ -6640,6 +7477,13 @@ semver@7.1.3: resolved "https://registry.yarnpkg.com/semver/-/semver-7.1.3.tgz#e4345ce73071c53f336445cfc19efb1c311df2a6" integrity sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA== +semver@^7.2.1, semver@^7.3.2: + version "7.3.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" + integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== + dependencies: + lru-cache "^6.0.0" + set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -6698,6 +7542,14 @@ shellwords@^0.1.1: resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== +side-channel@^1.0.2, side-channel@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.3.tgz#cdc46b057550bbab63706210838df5d4c19519c3" + integrity sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g== + dependencies: + es-abstract "^1.18.0-next.0" + object-inspect "^1.8.0" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" @@ -6718,6 +7570,15 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + slide@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -6894,10 +7755,12 @@ ssri@^6.0.0, ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" -stack-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" - integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== +stack-utils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" + integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== + dependencies: + escape-string-regexp "^2.0.0" static-extend@^0.1.1: version "0.1.2" @@ -6925,13 +7788,13 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== -string-length@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" - integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== +string-length@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" + integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw== dependencies: - astral-regex "^1.0.0" - strip-ansi "^5.2.0" + char-regex "^1.0.2" + strip-ansi "^6.0.0" string-width@^1.0.1: version "1.0.2" @@ -6968,6 +7831,19 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string.prototype.matchall@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.3.tgz#24243399bc31b0a49d19e2b74171a15653ec996a" + integrity sha512-OBxYDA2ifZQ2e13cP82dWFMaCV9CGF8GzmN4fljBVw5O5wep0lu4gacm1OL6MjROoUnB8VbkWRThqkV2YFLNxw== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + has-symbols "^1.0.1" + internal-slot "^1.0.2" + regexp.prototype.flags "^1.3.0" + side-channel "^1.0.3" + string.prototype.trimend@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" @@ -7082,6 +7958,11 @@ strip-json-comments@2.0.1, strip-json-comments@^2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + strong-log-transformer@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" @@ -7120,11 +8001,21 @@ supports-hyperlinks@^2.0.0: has-flag "^4.0.0" supports-color "^7.0.0" -symbol-tree@^3.2.2: +symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + tar@^4.4.10, tar@^4.4.12, tar@^4.4.8: version "4.4.13" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" @@ -7177,6 +8068,11 @@ text-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + thenify-all@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" @@ -7295,6 +8191,13 @@ tr46@^1.0.1: dependencies: punycode "^2.1.0" +tr46@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" + integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== + dependencies: + punycode "^2.1.1" + trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" @@ -7356,6 +8259,16 @@ ts-node@^8.0.2, ts-node@^8.6.2: source-map-support "^0.5.17" yn "3.1.1" +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + tslib@1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" @@ -7427,7 +8340,7 @@ tsutils@^2.29.0: dependencies: tslib "^1.8.1" -tsutils@^3.0.0: +tsutils@^3.0.0, tsutils@^3.17.1: version "3.17.1" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== @@ -7446,6 +8359,13 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -7618,10 +8538,20 @@ uuid@^3.0.1, uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -v8-to-istanbul@^4.1.3: - version "4.1.4" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz#b97936f21c0e2d9996d4985e5c5156e9d4e49cd6" - integrity sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ== +uuid@^8.3.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-compile-cache@^2.0.3: + version "2.2.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" + integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== + +v8-to-istanbul@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.0.0.tgz#b4fe00e35649ef7785a9b7fcebcea05f37c332fc" + integrity sha512-fLL2rFuQpMtm9r8hrAV2apXX/WqHJ6+IC4/eQVdMDGBUgH/YMV4Gv3duk3kjmyg6uiQWBAA9nJwue4iJUOkHeA== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" @@ -7651,20 +8581,18 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -w3c-hr-time@^1.0.1: +w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== dependencies: browser-process-hrtime "^1.0.0" -w3c-xmlserializer@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" - integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== dependencies: - domexception "^1.0.1" - webidl-conversions "^4.0.2" xml-name-validator "^3.0.0" walker@^1.0.7, walker@~1.0.5: @@ -7686,14 +8614,24 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + +whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: iconv-lite "0.4.24" -whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: +whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== @@ -7707,6 +8645,15 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" +whatwg-url@^8.0.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.4.0.tgz#50fb9615b05469591d2b2bd6dfaed2942ed72837" + integrity sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^2.0.2" + webidl-conversions "^6.1.0" + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -7740,7 +8687,7 @@ windows-release@^3.1.0: dependencies: execa "^1.0.0" -word-wrap@~1.2.3: +word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== @@ -7824,17 +8771,17 @@ write-pkg@^3.1.0: sort-keys "^2.0.0" write-json-file "^2.2.0" -ws@^7.0.0: - version "7.3.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" - integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== +ws@^7.2.3: + version "7.4.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.1.tgz#a333be02696bd0e54cea0434e21dcc8a9ac294bb" + integrity sha512-pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ== xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== -xmlchars@^2.1.1: +xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== @@ -7854,6 +8801,11 @@ yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yargs-parser@13.1.2, yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" @@ -7920,7 +8872,7 @@ yargs@^14.2.2: y18n "^4.0.0" yargs-parser "^15.0.1" -yargs@^15.3.1: +yargs@^15.4.1: version "15.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==