From c0a38f235e2b6cf6933da586882e954b8ca6a8fa Mon Sep 17 00:00:00 2001 From: Dmitry Zakharov Date: Mon, 17 Jun 2024 14:53:36 +0400 Subject: [PATCH] =?UTF-8?q?v7.0.0=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 2 +- CHANGELOG_V7.md | 56 +- CONTRIBUTING.md | 67 + IDEAS.md | 2 +- README.md | 12 +- docs/js-usage.md | 51 +- docs/rescript-usage.md | 183 +- package.json | 12 +- packages/rescript-schema-ppx/README.md | 4 +- packages/tests/src/core/S_Array_max_test.res | 12 +- packages/tests/src/core/S_Array_min_test.res | 12 +- packages/tests/src/core/S_String_max_test.res | 12 +- packages/tests/src/core/S_String_min_test.res | 12 +- packages/tests/src/core/S_inline_test.res | 32 +- .../tests/src/core/S_object_flatten_test.res | 2 +- packages/tests/src/core/S_test.ts | 2 +- pnpm-lock.yaml | 1948 ++++++++++------- src/S.bs.mjs | 16 +- src/S.d.ts | 8 +- src/S.js | 8 +- src/S.resi | 8 +- src/S_Core.bs.mjs | 24 +- src/S_Core.res | 16 +- src/S_Core.resi | 8 +- 24 files changed, 1471 insertions(+), 1038 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 83c0e5b6..9a7f47fd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -210,7 +210,7 @@ jobs: uses: actions/upload-artifact@v3 with: name: rescript-schema-ppx - path: packages/rescript-schema-ppx/rescript-schema-ppx-6.4.0.tgz + path: packages/rescript-schema-ppx/rescript-schema-ppx-7.0.0.tgz benchmark: name: Benchmark diff --git a/CHANGELOG_V7.md b/CHANGELOG_V7.md index e0fecec0..caf1b836 100644 --- a/CHANGELOG_V7.md +++ b/CHANGELOG_V7.md @@ -61,7 +61,7 @@ let entitySchema = S.object(s => { > 🧠 While the example with `s.flatten` expect an object with the type `{id: string, name: string, age: int}`, the example above and with `s.nestedField` will expect an object with the type `{id: string, data: {name: string, age: int}}`. -### Extending object field schema +### Extend field with another object schema You can define object field multiple times to extend it with more fields: @@ -114,30 +114,36 @@ Added unsafe mode for `S.json`: - Changed payload of `Object` and `Tuple` variants in the `tagged` type - Redesigned `Literal` module to make it more effecient - - The `Literal.t` type was renamed to `literal`, became private and changed structure. Use `S.Literal.parse` to create instances of the type - - `Literal.classify` -> `Literal.parse` - - `Literal.toText` -> `Literal.toString`. Also, started using `.toString` for `Function` literalls and removed spaces for `Dict` and `Array` literals to make them look the same as the `JSON.stringify` output + - The `S.Literal.t` type was renamed to `S.literal`, became private and changed structure. Use `S.Literal.parse` to create instances of the type + - `S.Literal.classify` -> `S.Literal.parse` + - `S.Literal.toText` -> `S.Literal.toString`. Also, started using `.toString` for `Function` literalls and removed spaces for `Dict` and `Array` literals to make them look the same as the `JSON.stringify` output - Moved built-in refinements from nested modules to improve tree-shaking: - - `Int.min` -> `intMin` - - `Int.max` -> `intMax` - - `Int.port` -> `port` - - - `Float.min` -> `floatMin` - - `Float.max` -> `floatMax` - - - `Array.min` -> `arrayMin` - - `Array.max` -> `arrayMax` - - `Array.length` -> `arrayLength` - - - `String.min` -> `stringMin` - - `String.max` -> `stringMax` - - `String.length` -> `stringLength` - - `String.email` -> `email` - - `String.uuid` -> `uuid` - - `String.cuid` -> `cuid` - - `String.url` -> `url` - - `String.pattern` -> `pattern` - - `String.datetime` -> `datetime` - - `String.trim` -> `trim` + - `S.Int.min` -> `S.intMin` + - `S.Int.max` -> `S.intMax` + - `S.Int.port` -> `S.port` + + - `S.Float.min` -> `S.floatMin` + - `S.Float.max` -> `S.floatMax` + + - `S.Array.min` -> `S.arrayMinLength` + - `S.Array.max` -> `S.arrayMaxLength` + - `S.Array.length` -> `S.arrayLength` + + - `S.String.min` -> `S.stringMinLength` + - `S.String.max` -> `S.stringMaxLength` + - `S.String.length` -> `S.stringLength` + - `S.String.email` -> `S.email` + - `S.String.uuid` -> `S.uuid` + - `S.String.cuid` -> `S.cuid` + - `S.String.url` -> `S.url` + - `S.String.pattern` -> `S.pattern` + - `S.String.datetime` -> `S.datetime` + - `S.String.trim` -> `S.trim` + + - `S.Int.min` -> `S.intMin` + - `S.Int.max` -> `S.intMax` + + - `S.Number.max` -> `S.numberMax`/`S.integerMax` + - `S.Number.min` -> `S.numberMin`/`S.integerMin` diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e97772d7..dc183514 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -53,6 +53,73 @@ npm run test:res npm run test -- --watch ``` +## Make comparison + +https://bundlejs.com/ + +`rescript-schema` + +```ts +import * as S from "github:DZakh/rescript-schema/artifacts/packages/artifacts/dist/S.mjs"; + +// Create login schema with email and password +const loginSchema = S.object({ + email: S.email(S.string), + password: S.stringMinLength(S.string, 8), +}); + +// Infer output TypeScript type of login schema +type LoginData = S.Output; // { email: string; password: string } + +// Throws the S.Error(`Failed parsing at ["email"]. Reason: Invalid email address`) +S.parseOrThrow(loginSchema, { email: "", password: "" }); + +// Returns data as { email: string; password: string } +S.parseOrThrow(loginSchema, { + email: "jane@example.com", + password: "12345678", +}); +``` + +valibot + +```ts +import * as v from "valibot"; // 1.21 kB + +// Create login schema with email and password +const LoginSchema = v.object({ + email: v.pipe(v.string(), v.email()), + password: v.pipe(v.string(), v.minLength(8)), +}); + +// Infer output TypeScript type of login schema +type LoginData = v.InferOutput; // { email: string; password: string } + +// Throws error for `email` and `password` +v.parse(LoginSchema, { email: "", password: "" }); + +// Returns data as { email: string; password: string } +v.parse(LoginSchema, { email: "jane@example.com", password: "12345678" }); +``` + +zod + +```ts +export * as z from "zod"; // 1.21 kB + +// Create login schema with email and password +const LoginSchema = z.object({ + email: z.string().email(), + password: z.string().min(8), +}); + +// Throws error for `email` and `password` +LoginSchema.parse({ email: "", password: "" }); + +// Returns data as { email: string; password: string } +LoginSchema.parse({ email: "jane@example.com", password: "12345678" }); +``` + ## License By contributing your code to the rescript-schema GitHub repository, you agree to license your contribution under the MIT license. diff --git a/IDEAS.md b/IDEAS.md index 58183153..249e5a4a 100644 --- a/IDEAS.md +++ b/IDEAS.md @@ -22,7 +22,7 @@ let trimContract: S.contract string> = S.contract(s => { - Move S.inline to a separate codegen module -## v7 +## v8 - Change operation to include AsyncParse and simplify init functions (throw when asyncTransfor applied for SyncParse) - Make S.serializeToJsonString super fast diff --git a/README.md b/README.md index d6877588..bad69753 100644 --- a/README.md +++ b/README.md @@ -46,12 +46,12 @@ Besides the individual bundle size, the overall size of the library is also sign At the same time **rescript-schema** is the fastest composable validation library in the entire JavaScript ecosystem. This is achieved because of the JIT approach when an ultra optimized validator is created using `eval`. -| | rescript-schema@6.2.0 | Zod@3.22.2 | Valibot@0.18.0 | +| | rescript-schema@7.0.0 | Zod@3.22.2 | Valibot@0.32.0 | | ----------------------------------------- | --------------------- | --------------- | -------------- | -| **Total size** (minified + gzipped) | 9.67 kB | 13.4 kB | 6.73 kB | -| **Example size** (minified + gzipped) | 5.53 kB | 12.8 kB | 965 B | -| **Nested object parsing** | 153,787 ops/ms | 1,177 ops/ms | 3,562 ops/ms | -| **Create schema + Nested object parsing** | 54 ops/ms | 110 ops/ms | 1,937 ops/ms | +| **Total size** (minified + gzipped) | 9.82 kB | 14.6 kB | 9.88 kB | +| **Example size** (minified + gzipped) | 4.98 kB | 12.9 kB | 1.22 B | +| **Nested object parsing** | 156,244 ops/ms | 1,304 ops/ms | 3,822 ops/ms | +| **Create schema + Nested object parsing** | 56 ops/ms | 112 ops/ms | 2,475 ops/ms | | **Eval-free** | ❌ | ✅ | ✅ | | **Codegen-free** (Doesn't need compiler) | ✅ | ✅ | ✅ | -| **Ecosystem** | ⭐️ | ⭐️⭐️⭐️⭐️⭐️ | ⭐️⭐️ | +| **Ecosystem** | ⭐️ | ⭐️⭐️⭐️⭐️⭐️ | ⭐️⭐️⭐️ | diff --git a/docs/js-usage.md b/docs/js-usage.md index b7e7b3b3..630b1e35 100644 --- a/docs/js-usage.md +++ b/docs/js-usage.md @@ -59,8 +59,8 @@ import * as S from "rescript-schema"; // Create login schema with email and password const loginSchema = S.object({ - email: S.String.email(S.string), - password: S.String.min(S.string, 8), + email: S.email(S.string), + password: S.stringMinLength(S.string, 8), }); // Infer output TypeScript type of login schema @@ -86,7 +86,6 @@ S.string; S.number; S.integer; // ReScript's S.int S.boolean; -S.json; // empty type S.undefined; @@ -125,32 +124,32 @@ const cliArgsSchema = S.literal(["help", "lint"] as const); **rescript-schema** includes a handful of string-specific refinements and transforms: ```ts -S.String.max(S.string, 5); // String must be 5 or fewer characters long -S.String.min(S.string, 5); // String must be 5 or more characters long -S.String.length(S.string, 5); // String must be exactly 5 characters long -S.String.email(S.string); // Invalid email address -S.String.url(S.string); // Invalid url -S.String.uuid(S.string); // Invalid UUID -S.String.cuid(S.string); // Invalid CUID -S.String.pattern(S.string, %re(`/[0-9]/`)); // Invalid -S.String.datetime(S.string); // Invalid datetime string! Must be UTC +S.stringMaxLength(S.string, 5); // String must be 5 or fewer characters long +S.stringMinLength(S.string, 5); // String must be 5 or more characters long +S.stringLength(S.string, 5); // String must be exactly 5 characters long +S.email(S.string); // Invalid email address +S.url(S.string); // Invalid url +S.uuid(S.string); // Invalid UUID +S.cuid(S.string); // Invalid CUID +S.pattern(S.string, %re(`/[0-9]/`)); // Invalid +S.datetime(S.string); // Invalid datetime string! Must be UTC -S.String.trim(S.string); // trim whitespaces +S.trim(S.string); // trim whitespaces ``` When using built-in refinements, you can provide a custom error message. ```ts -S.String.min(S.string, 1, "String can't be empty"); -S.String.length(S.string, 5, "SMS code should be 5 digits long"); +S.stringMinLength(S.string, 1, "String can't be empty"); +S.stringLength(S.string, 5, "SMS code should be 5 digits long"); ``` ### ISO datetimes -The `S.String.datetime(S.string)` function has following UTC validation: no timezone offsets with arbitrary sub-second decimal precision. +The `S.datetime(S.string)` function has following UTC validation: no timezone offsets with arbitrary sub-second decimal precision. ```ts -const datetimeSchema = S.String.datetime(S.string); +const datetimeSchema = S.datetime(S.string); // The datetimeSchema has the type S.Schema // String is transformed to the Date instance @@ -165,14 +164,14 @@ S.parseOrThrow(datetimeSchema, "2020-01-01T00:00:00+02:00"); // fail (no offsets **rescript-schema** includes some of number-specific refinements: ```ts -S.Number.max(S.number, 5); // Number must be lower than or equal to 5 -S.Number.min(S.number 5); // Number must be greater than or equal to 5 +S.numberMax(S.number, 5); // Number must be lower than or equal to 5 +S.numberMin(S.number 5); // Number must be greater than or equal to 5 ``` Optionally, you can pass in a second argument to provide a custom error message. ```ts -S.Number.max(S.number, 5, "this👏is👏too👏big"); +S.numberMax(S.number, 5, "this👏is👏too👏big"); ``` ## NaNs @@ -335,9 +334,9 @@ const stringArraySchema = S.array(S.string); **rescript-schema** includes some of array-specific refinements: ```ts -S.Array.max(S.array(S.string), 5); // Array must be 5 or fewer items long -S.Array.min(S.array(S.string) 5); // Array must be 5 or more items long -S.Array.length(S.array(S.string) 5); // Array must be exactly 5 items long +S.arrayMaxLength(S.array(S.string), 5); // Array must be 5 or fewer items long +S.arrayMinLength(S.array(S.string) 5); // Array must be 5 or more items long +S.arrayLength(S.array(S.string) 5); // Array must be exactly 5 items long ``` ## Tuples @@ -435,8 +434,10 @@ let circleSchema = S.schema( The `S.json` schema makes sure that the value is compatible with JSON. +It accepts a boolean as an argument. If it's true, then the value will be validated as valid JSON; otherwise, it unsafely casts it to the `S.Json` type. + ```ts -S.parseOrThrow(S.json, "foo"); // passes +S.parseOrThrow(S.json(true), `"foo"`); // passes ``` ## JSON string @@ -498,7 +499,7 @@ Also, you can have an asynchronous refinement (for parser only): ```ts const userSchema = S.object({ - id: S.asyncParserRefine(S.String.uuid(S.string), async (id, s) => { + id: S.asyncParserRefine(S.uuid(S.string), async (id, s) => { const isActiveUser = await checkIsActiveUser(id); if (!isActiveUser) { s.fail(`The user ${id} is inactive.`); diff --git a/docs/rescript-usage.md b/docs/rescript-usage.md index da076f33..996be221 100644 --- a/docs/rescript-usage.md +++ b/docs/rescript-usage.md @@ -26,6 +26,10 @@ - [Transform to a structurally typed object](#transform-to-a-structurally-typed-object) - [Transform to a tuple](#transform-to-a-tuple) - [Transform to a variant](#transform-to-a-variant) + - [`s.flatten`](#sflatten) + - [`s.nestedField`](#snestedfield) + - [`Object destructuring`](#object-destructuring) + - [`Extend field with another object schema`](#extend-field-with-another-object-schema) - [`Object.strict`](#objectstrict) - [`Object.strip`](#objectstrip) - [`schema`](#schema) @@ -62,6 +66,7 @@ - [`serializeToJsonStringWith`](#serializetojsonstringwith) - [`serializeOrRaiseWith`](#serializeorraisewith) - [`serializeToUnknownOrRaiseWith`](#serializetounknownorraisewith) + - [`serializeToJsonStringOrRaiseWith`](#serializetojsonstringorraisewith) - [`classify`](#classify) - [`name`](#name) - [`setName`](#setname) @@ -183,32 +188,32 @@ The `string` schema represents a data that is a string. It can be further constr **rescript-schema** includes a handful of string-specific refinements and transforms: ```rescript -S.string->S.String.max(5) // String must be 5 or fewer characters long -S.string->S.String.min(5) // String must be 5 or more characters long -S.string->S.String.length(5) // String must be exactly 5 characters long -S.string->S.String.email // Invalid email address -S.string->S.String.url // Invalid url -S.string->S.String.uuid // Invalid UUID -S.string->S.String.cuid // Invalid CUID -S.string->S.String.pattern(%re(`/[0-9]/`)) // Invalid -S.string->S.String.datetime // Invalid datetime string! Must be UTC +S.string->S.stringMaxLength(5) // String must be 5 or fewer characters long +S.string->S.stringMinLength(5) // String must be 5 or more characters long +S.string->S.stringLength(5) // String must be exactly 5 characters long +S.string->S.email // Invalid email address +S.string->S.url // Invalid url +S.string->S.uuid // Invalid UUID +S.string->S.cuid // Invalid CUID +S.string->S.pattern(%re(`/[0-9]/`)) // Invalid +S.string->S.datetime // Invalid datetime string! Must be UTC -S.string->S.String.trim // trim whitespaces +S.string->S.trim // trim whitespaces ``` When using built-in refinements, you can provide a custom error message. ```rescript -S.string->S.String.min(1, ~message="String can't be empty") -S.string->S.String.length(5, ~message="SMS code should be 5 digits long") +S.string->S.stringMinLength(1, ~message="String can't be empty") +S.string->S.stringLength(5, ~message="SMS code should be 5 digits long") ``` #### ISO datetimes -The `S.string->S.String.datetime` function has following UTC validation: no timezone offsets with arbitrary sub-second decimal precision. +The `S.string->S.datetime` function has following UTC validation: no timezone offsets with arbitrary sub-second decimal precision. ```rescript -let datetimeSchema = S.string->S.String.datetime +let datetimeSchema = S.string->S.datetime // The datetimeSchema has the type S.t // String is transformed to the Date.t instance @@ -247,9 +252,9 @@ The `int` schema represents a data that is an integer. **rescript-schema** includes some of int-specific refinements: ```rescript -S.int->S.Int.max(5) // Number must be lower than or equal to 5 -S.int->S.Int.min(5) // Number must be greater than or equal to 5 -S.int->S.Int.port // Invalid port +S.int->S.intMax(5) // Number must be lower than or equal to 5 +S.int->S.intMin(5) // Number must be greater than or equal to 5 +S.int->S.port // Invalid port ``` ### **`float`** @@ -268,8 +273,8 @@ The `float` schema represents a data that is a number. **rescript-schema** includes some of float-specific refinements: ```rescript -S.float->S.Float.max(5) // Number must be lower than or equal to 5 -S.float->S.Float.min(5) // Number must be greater than or equal to 5 +S.float->S.floatMax(5) // Number must be lower than or equal to 5 +S.float->S.floatMin(5) // Number must be greater than or equal to 5 ``` ### **`option`** @@ -302,7 +307,7 @@ let schema = S.option(S.string)->S.Option.getOr("Hello World!") The `Option.getOr` augments a schema to add transformation logic for default values, which are applied when the input is undefined. -> 🧠 If you want to set a default value for an object field, there's a more convenient `fieldOr` method on `Object.ctx` type. +> 🧠 If you want to set a default value for an object field, there's a more convenient `fieldOr` method on `Object.s` type. ### **`Option.getOrWith`** @@ -405,7 +410,7 @@ The `literal` schema enforces that a data matches an exact value during parsing ### **`object`** -`(S.Object.ctx => 'value) => S.t<'value>` +`(S.Object.s => 'value) => S.t<'value>` ```rescript type point = { @@ -420,8 +425,8 @@ let pointSchema = S.object(s => { }) // It can be used both for parsing and serializing -%raw(`{ "x": 1,"y": -4 }`)->S.parseWith(pointSchema) -{ x: 1, y: -4 }->S.serializeWith(pointSchema) +{"x": 1, "y": -4}->S.parseAnyWith(pointSchema) +{x: 1, y: -4}->S.serializeWith(pointSchema) ``` The `object` schema represents an object value, that can be transformed into any ReScript value. Here are some examples: @@ -439,8 +444,8 @@ let schema = S.object(s => { name: s.field("USER_NAME", S.string), }) -%raw(`{"USER_ID":1,"USER_NAME":"John"}`)->S.parseWith(schema) -// Ok({ id: 1, name: "John" }) +%raw(`{"USER_ID":1,"USER_NAME":"John"}`)->S.parseWith(schema) // Ok({id: 1, name: "John"}) +{id: 1, name: "John"}->S.serializeWith(schema) // Ok({"USER_ID":1,"USER_NAME":"John"}) ``` #### Transform to a structurally typed object @@ -514,6 +519,86 @@ Circle({radius: 1})->S.serializeWith(schema) // }`)) ``` +#### `s.flatten` + +It's possible to spread/flatten an object schema in another object schema, allowing you to reuse schemas in a more powerful way. + +```rescript +type entityData = { + name: string, + age: int, +} +type entity = { + id: string, + ...entityData, +} + +let entityDataSchema = S.object(s => { + name: s.field("name", S.string), + age: s.field("age", S.int), +}) +let entitySchema = S.object(s => { + let {name, age} = s.flatten(entityDataSchema) + { + id: s.field("id", S.string), + name, + age, + } +}) +``` + +#### `s.nestedField` + +A nice way to parse nested fields: + +```rescript +let schema = S.object(s => { + { + id: s.field("id", S.string), + name: s.nestedField("data", "name", S.string) + age: s.nestedField("data", "name", S.int), + } +}) +``` + +#### Object destructuring + +It's possible to destructure object field schemas inside of definition. You could also notice it in the `s.flatten` example 😁 + +```rescript +let entitySchema = S.object(s => { + let {name, age} = s.field("data", entityDataSchema) + { + id: s.field("id", S.string), + name, + age, + } +}) +``` + +> 🧠 While the example with `s.flatten` expect an object with the type `{id: string, name: string, age: int}`, the example above and with `s.nestedField` will expect an object with the type `{id: string, data: {name: string, age: int}}`. + +#### Extend field with another object schema + +You can define object field multiple times to extend it with more fields: + +```rescript +let entitySchema = S.object(s => { + let {name, age} = s.field("data", entityDataSchema) + let additionalData = s.field("data", s => { + "friends": s.field("friends", S.array(S.string)) + }) + { + id: s.field("id", S.string), + name, + age, + friends: additionalData["friends"], + } +}) +``` + +> 🧠 Destructuring works only with not-transformed object schemas. Be careful, since it's not protected by typesystem. + ### **`Object.strict`** `S.t<'value> => S.t<'value>` @@ -552,7 +637,7 @@ You can use the `S.Object.strip` function to reset a object schema to the defaul ### **`schema`** -`(schemaCtx => 'value) => S.t<'value>` +`(S.Schema.s => 'value) => S.t<'value>` It's a helper built on `S.literal`, `S.object`, and `S.tuple` to create schemas for runtime representation of ReScript types conveniently. @@ -696,9 +781,9 @@ The `array` schema represents an array of data of a specific type. **rescript-schema** includes some of array-specific refinements: ```rescript -S.array(itemSchema)->S.Array.max(5) // Array must be 5 or fewer items long -S.array(itemSchema)->S.Array.min(5) // Array must be 5 or more items long -S.array(itemSchema)->S.Array.length(5) // Array must be exactly 5 items long +S.array(itemSchema)->S.arrayMaxLength(5) // Array must be 5 or fewer items long +S.array(itemSchema)->S.arrayMinLength(5) // Array must be 5 or more items long +S.array(itemSchema)->S.arrayLength(5) // Array must be exactly 5 items long ``` ### **`list`** @@ -716,7 +801,7 @@ The `list` schema represents an array of data of a specific type which is transf ### **`tuple`** -`(S.Tuple.ctx => 'value) => S.t<'value>` +`(S.Tuple.s => 'value) => S.t<'value>` ```rescript type point = { @@ -800,17 +885,19 @@ The `never` schema will fail parsing for every value. ### **`json`** -`S.t` +`(~validate: bool) => S.t` ```rescript -let schema = S.json +let schema = S.json(~validate=true) -%raw(`"123"`)->S.parseWith(schema) -// Ok(String("123")) +`"abc"`->S.parseAnyWith(schema) +// Ok(String("abc")) ``` The `json` schema represents a data that is compatible with JSON. +It accepts a `validate` as an argument. If it's true, then the value will be validated as valid JSON; otherwise, it unsafely casts it to the `JSON.t` type. + ### **`jsonString`** `(S.t<'value>, ~space: int=?) => S.t<'value>` @@ -856,7 +943,7 @@ This can be useful for documenting a field, for example in a JSON Schema using a ### **`catch`** -`(S.t<'value>, S.catchCtx<'value> => 'value) => S.t<'value>` +`(S.t<'value>, S.Catch.s<'value> => 'value) => S.t<'value>` Use `S.catch` to provide a "catch value" to be returned instead of a parsing error. @@ -886,7 +973,7 @@ Conceptually, this is how **rescript-schema** processes "catch values": ### **`custom`** -`(string, effectCtx<'output> => customDefinition<'input, 'output>) => t<'output>` +`(string, S.s<'output> => customDefinition<'input, 'output>) => t<'output>` You can also define your own custom schema factories that are specific to your application's requirements: @@ -995,7 +1082,7 @@ One great aspect of the example above is that it uses parallelism to make four r ### **`refine`** -`(S.t<'value>, effectCtx<'value> => 'value => unit) => S.t<'value>` +`(S.t<'value>, S.s<'value> => 'value => unit) => S.t<'value>` ```rescript let shortStringSchema = S.string->S.refine(s => value => @@ -1013,7 +1100,7 @@ The refine function is applied for both parser and serializer. ### **`transform`** -`(S.t<'input>, S.effectCtx<'output> => S.transformDefinition<'input, 'output>) => S.t<'output>` +`(S.t<'input>, S.s<'output> => S.transformDefinition<'input, 'output>) => S.t<'output>` ```rescript let intToString = schema => @@ -1037,7 +1124,7 @@ type user = { let userSchema = S.string - ->S.String.uuid + ->S.uuid ->S.transform(s => { asyncParser: userId => () => loadUser(~userId), serializer: user => user.id, @@ -1237,6 +1324,16 @@ try { The exception-based version of `serializeToUnknownWith`. +### **`serializeToJsonStringOrRaiseWith`** + +`('value, ~space: int=?, S.t<'value>) => string` + +```rescript +user->S.serializeToJsonStringOrRaiseWith(userSchema) +``` + +The exception-based version of `serializeToJsonStringWith`. + ### **`classify`** `(S.t<'value>) => S.tagged` @@ -1254,7 +1351,7 @@ This can be useful for building other tools like [`rescript-json-schema`](https: ```rescript S.literal({"abc": 123})->S.name -// `Literal({"abc": 123})` +// `Literal({"abc":123})` ``` Used internally for readable error messages. @@ -1283,7 +1380,7 @@ let schema = S.literal(false) %raw(`true`)->S.parseWith(schema) // Error({ -// code: InvalidLiteral({expected: Boolean(false), received: true}), +// code: InvalidLiteral({expected: S.Literal.parse(false), received: true}), // operation: Parsing, // path: S.Path.empty, // }) @@ -1309,7 +1406,7 @@ Throws error. Since internally it's both the `S.Raised` exception and instance o ```rescript { - code: InvalidLiteral({expected: Boolean(false), received: true}), + code: InvalidLiteral({expected: S.Literal.parse(false), received: true}), operation: Parsing, path: S.Path.empty, }->S.Error.message @@ -1325,7 +1422,7 @@ Throws error. Since internally it's both the `S.Raised` exception and instance o ```rescript { - code: InvalidLiteral({expected: Boolean(false), received: true}), + code: InvalidLiteral({expected: S.Literal.parse(false), received: true}), operation: Parsing, path: S.Path.empty, }->S.Error.reason diff --git a/package.json b/package.json index b44ee13e..ad18e289 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rescript-schema", - "version": "6.4.0", + "version": "7.0.0", "description": "The fastest composable parser/serializer for ReScript and TypeScript", "keywords": [ "ReScript", @@ -73,21 +73,21 @@ }, "devDependencies": { "@dzakh/rescript-ava": "2.3.0", - "@rescript/core": "1.3.0", + "@rescript/core": "^1.3.0", "ava": "5.2.0", "benchmark": "2.1.4", "c8": "7.12.0", "rescript": "11.1.0", "rescript-stdlib-vendorer": "1.1.0", - "rescript-schema": ".", + "rescript-schema": "link:", "ts-expect": "1.3.0", "ts-node": "10.9.1", "typescript": "4.9.3", - "valibot": "0.18.0", - "zod": "3.22.2" + "valibot": "0.32.0", + "zod": "3.23.8" }, "peerDependencies": { "rescript": "11.x" }, - "packageManager": "pnpm@8.14.3" + "packageManager": "pnpm@9.0.5" } diff --git a/packages/rescript-schema-ppx/README.md b/packages/rescript-schema-ppx/README.md index 023e5da2..d379d6a6 100644 --- a/packages/rescript-schema-ppx/README.md +++ b/packages/rescript-schema-ppx/README.md @@ -124,10 +124,10 @@ Specifies custom schema for the type. ```rescript @schema -type t = @s.matches(S.string->S.String.url) string +type t = @s.matches(S.string->S.url) string // Generated by PPX ⬇️ -let schema = S.string->S.String.url +let schema = S.string->S.url ``` ### `@s.null` diff --git a/packages/tests/src/core/S_Array_max_test.res b/packages/tests/src/core/S_Array_max_test.res index bc8313c3..26066fb5 100644 --- a/packages/tests/src/core/S_Array_max_test.res +++ b/packages/tests/src/core/S_Array_max_test.res @@ -1,14 +1,14 @@ open Ava test("Successfully parses valid data", t => { - let schema = S.array(S.int)->S.arrayMax(1) + let schema = S.array(S.int)->S.arrayMaxLength(1) t->Assert.deepEqual([1]->S.parseAnyWith(schema), Ok([1]), ()) t->Assert.deepEqual([]->S.parseAnyWith(schema), Ok([]), ()) }) test("Fails to parse invalid data", t => { - let schema = S.array(S.int)->S.arrayMax(1) + let schema = S.array(S.int)->S.arrayMaxLength(1) t->U.assertErrorResult( [1, 2, 3, 4]->S.parseAnyWith(schema), @@ -21,14 +21,14 @@ test("Fails to parse invalid data", t => { }) test("Successfully serializes valid value", t => { - let schema = S.array(S.int)->S.arrayMax(1) + let schema = S.array(S.int)->S.arrayMaxLength(1) t->Assert.deepEqual([1]->S.serializeToUnknownWith(schema), Ok(%raw(`[1]`)), ()) t->Assert.deepEqual([]->S.serializeToUnknownWith(schema), Ok(%raw(`[]`)), ()) }) test("Fails to serialize invalid value", t => { - let schema = S.array(S.int)->S.arrayMax(1) + let schema = S.array(S.int)->S.arrayMaxLength(1) t->U.assertErrorResult( [1, 2, 3, 4]->S.serializeToUnknownWith(schema), @@ -41,7 +41,7 @@ test("Fails to serialize invalid value", t => { }) test("Returns custom error message", t => { - let schema = S.array(S.int)->S.arrayMax(~message="Custom", 1) + let schema = S.array(S.int)->S.arrayMaxLength(~message="Custom", 1) t->Assert.deepEqual( [1, 2]->S.parseAnyWith(schema), @@ -51,7 +51,7 @@ test("Returns custom error message", t => { }) test("Returns refinement", t => { - let schema = S.array(S.int)->S.arrayMax(1) + let schema = S.array(S.int)->S.arrayMaxLength(1) t->Assert.deepEqual( schema->S.Array.refinements, diff --git a/packages/tests/src/core/S_Array_min_test.res b/packages/tests/src/core/S_Array_min_test.res index 0d784f25..3410f65c 100644 --- a/packages/tests/src/core/S_Array_min_test.res +++ b/packages/tests/src/core/S_Array_min_test.res @@ -1,14 +1,14 @@ open Ava test("Successfully parses valid data", t => { - let schema = S.array(S.int)->S.arrayMin(1) + let schema = S.array(S.int)->S.arrayMinLength(1) t->Assert.deepEqual([1]->S.parseAnyWith(schema), Ok([1]), ()) t->Assert.deepEqual([1, 2, 3, 4]->S.parseAnyWith(schema), Ok([1, 2, 3, 4]), ()) }) test("Fails to parse invalid data", t => { - let schema = S.array(S.int)->S.arrayMin(1) + let schema = S.array(S.int)->S.arrayMinLength(1) t->U.assertErrorResult( []->S.parseAnyWith(schema), @@ -21,14 +21,14 @@ test("Fails to parse invalid data", t => { }) test("Successfully serializes valid value", t => { - let schema = S.array(S.int)->S.arrayMin(1) + let schema = S.array(S.int)->S.arrayMinLength(1) t->Assert.deepEqual([1]->S.serializeToUnknownWith(schema), Ok(%raw(`[1]`)), ()) t->Assert.deepEqual([1, 2, 3, 4]->S.serializeToUnknownWith(schema), Ok(%raw(`[1,2,3,4]`)), ()) }) test("Fails to serialize invalid value", t => { - let schema = S.array(S.int)->S.arrayMin(1) + let schema = S.array(S.int)->S.arrayMinLength(1) t->U.assertErrorResult( []->S.serializeToUnknownWith(schema), @@ -41,7 +41,7 @@ test("Fails to serialize invalid value", t => { }) test("Returns custom error message", t => { - let schema = S.array(S.int)->S.arrayMin(~message="Custom", 1) + let schema = S.array(S.int)->S.arrayMinLength(~message="Custom", 1) t->Assert.deepEqual( []->S.parseAnyWith(schema), @@ -51,7 +51,7 @@ test("Returns custom error message", t => { }) test("Returns refinement", t => { - let schema = S.array(S.int)->S.arrayMin(1) + let schema = S.array(S.int)->S.arrayMinLength(1) t->Assert.deepEqual( schema->S.Array.refinements, diff --git a/packages/tests/src/core/S_String_max_test.res b/packages/tests/src/core/S_String_max_test.res index be0769de..2e2db803 100644 --- a/packages/tests/src/core/S_String_max_test.res +++ b/packages/tests/src/core/S_String_max_test.res @@ -1,14 +1,14 @@ open Ava test("Successfully parses valid data", t => { - let schema = S.string->S.stringMax(1) + let schema = S.string->S.stringMaxLength(1) t->Assert.deepEqual("1"->S.parseAnyWith(schema), Ok("1"), ()) t->Assert.deepEqual(""->S.parseAnyWith(schema), Ok(""), ()) }) test("Fails to parse invalid data", t => { - let schema = S.string->S.stringMax(1) + let schema = S.string->S.stringMaxLength(1) t->U.assertErrorResult( "1234"->S.parseAnyWith(schema), @@ -21,14 +21,14 @@ test("Fails to parse invalid data", t => { }) test("Successfully serializes valid value", t => { - let schema = S.string->S.stringMax(1) + let schema = S.string->S.stringMaxLength(1) t->Assert.deepEqual("1"->S.serializeToUnknownWith(schema), Ok(%raw(`"1"`)), ()) t->Assert.deepEqual(""->S.serializeToUnknownWith(schema), Ok(%raw(`""`)), ()) }) test("Fails to serialize invalid value", t => { - let schema = S.string->S.stringMax(1) + let schema = S.string->S.stringMaxLength(1) t->U.assertErrorResult( "1234"->S.serializeToUnknownWith(schema), @@ -41,7 +41,7 @@ test("Fails to serialize invalid value", t => { }) test("Returns custom error message", t => { - let schema = S.string->S.stringMax(~message="Custom", 1) + let schema = S.string->S.stringMaxLength(~message="Custom", 1) t->Assert.deepEqual( "1234"->S.parseAnyWith(schema), @@ -51,7 +51,7 @@ test("Returns custom error message", t => { }) test("Returns refinement", t => { - let schema = S.string->S.stringMax(1) + let schema = S.string->S.stringMaxLength(1) t->Assert.deepEqual( schema->S.String.refinements, diff --git a/packages/tests/src/core/S_String_min_test.res b/packages/tests/src/core/S_String_min_test.res index 1d0feb37..bb1d06eb 100644 --- a/packages/tests/src/core/S_String_min_test.res +++ b/packages/tests/src/core/S_String_min_test.res @@ -1,14 +1,14 @@ open Ava test("Successfully parses valid data", t => { - let schema = S.string->S.stringMin(1) + let schema = S.string->S.stringMinLength(1) t->Assert.deepEqual("1"->S.parseAnyWith(schema), Ok("1"), ()) t->Assert.deepEqual("1234"->S.parseAnyWith(schema), Ok("1234"), ()) }) test("Fails to parse invalid data", t => { - let schema = S.string->S.stringMin(1) + let schema = S.string->S.stringMinLength(1) t->U.assertErrorResult( ""->S.parseAnyWith(schema), @@ -21,14 +21,14 @@ test("Fails to parse invalid data", t => { }) test("Successfully serializes valid value", t => { - let schema = S.string->S.stringMin(1) + let schema = S.string->S.stringMinLength(1) t->Assert.deepEqual("1"->S.serializeToUnknownWith(schema), Ok(%raw(`"1"`)), ()) t->Assert.deepEqual("1234"->S.serializeToUnknownWith(schema), Ok(%raw(`"1234"`)), ()) }) test("Fails to serialize invalid value", t => { - let schema = S.string->S.stringMin(1) + let schema = S.string->S.stringMinLength(1) t->U.assertErrorResult( ""->S.serializeToUnknownWith(schema), @@ -41,7 +41,7 @@ test("Fails to serialize invalid value", t => { }) test("Returns custom error message", t => { - let schema = S.string->S.stringMin(~message="Custom", 1) + let schema = S.string->S.stringMinLength(~message="Custom", 1) t->Assert.deepEqual( ""->S.parseAnyWith(schema), @@ -51,7 +51,7 @@ test("Returns custom error message", t => { }) test("Returns refinement", t => { - let schema = S.string->S.stringMin(1) + let schema = S.string->S.stringMinLength(1) t->Assert.deepEqual( schema->S.String.refinements, diff --git a/packages/tests/src/core/S_inline_test.res b/packages/tests/src/core/S_inline_test.res index b029a55e..5b3dd69b 100644 --- a/packages/tests/src/core/S_inline_test.res +++ b/packages/tests/src/core/S_inline_test.res @@ -55,27 +55,27 @@ test("Supports built-in String.cuid refinement", t => { }) test("Supports built-in String.min refinement", t => { - let schema = S.string->S.stringMin(5) + let schema = S.string->S.stringMinLength(5) let schemaInlineResult = - S.string->S.stringMin(5, ~message="String must be 5 or more characters long") + S.string->S.stringMinLength(5, ~message="String must be 5 or more characters long") t->U.assertEqualSchemas(schema, schemaInlineResult) t->Assert.deepEqual( schema->S.inline, - `S.string->S.stringMin(5, ~message="String must be 5 or more characters long")`, + `S.string->S.stringMinLength(5, ~message="String must be 5 or more characters long")`, (), ) }) test("Supports built-in String.max refinement", t => { - let schema = S.string->S.stringMax(5) + let schema = S.string->S.stringMaxLength(5) let schemaInlineResult = - S.string->S.stringMax(5, ~message="String must be 5 or fewer characters long") + S.string->S.stringMaxLength(5, ~message="String must be 5 or fewer characters long") t->U.assertEqualSchemas(schema, schemaInlineResult) t->Assert.deepEqual( schema->S.inline, - `S.string->S.stringMax(5, ~message="String must be 5 or fewer characters long")`, + `S.string->S.stringMaxLength(5, ~message="String must be 5 or fewer characters long")`, (), ) }) @@ -196,16 +196,16 @@ test("Supports built-in Float.min refinement with digits after decimal point", t }) test("Supports multiple built-in refinements", t => { - let schema = S.string->S.stringMin(5)->S.stringMax(10) + let schema = S.string->S.stringMinLength(5)->S.stringMaxLength(10) let schemaInlineResult = S.string - ->S.stringMin(~message="String must be 5 or more characters long", 5) - ->S.stringMax(~message="String must be 10 or fewer characters long", 10) + ->S.stringMinLength(~message="String must be 5 or more characters long", 5) + ->S.stringMaxLength(~message="String must be 10 or fewer characters long", 10) t->U.assertEqualSchemas(schema, schemaInlineResult) t->Assert.deepEqual( schema->S.inline, - `S.string->S.stringMin(5, ~message="String must be 5 or more characters long")->S.stringMax(10, ~message="String must be 10 or fewer characters long")`, + `S.string->S.stringMinLength(5, ~message="String must be 5 or more characters long")->S.stringMaxLength(10, ~message="String must be 10 or fewer characters long")`, (), ) }) @@ -322,27 +322,27 @@ test("Supports Array", t => { }) test("Supports built-in Array.max refinement", t => { - let schema = S.array(S.string)->S.arrayMax(4) + let schema = S.array(S.string)->S.arrayMaxLength(4) let schemaInlineResult = - S.array(S.string)->S.arrayMax(~message="Array must be 4 or fewer items long", 4) + S.array(S.string)->S.arrayMaxLength(~message="Array must be 4 or fewer items long", 4) t->U.assertEqualSchemas(schema, schemaInlineResult) t->Assert.deepEqual( schema->S.inline, - `S.array(S.string)->S.arrayMax(4, ~message="Array must be 4 or fewer items long")`, + `S.array(S.string)->S.arrayMaxLength(4, ~message="Array must be 4 or fewer items long")`, (), ) }) test("Supports built-in Array.min refinement", t => { - let schema = S.array(S.string)->S.arrayMin(4) + let schema = S.array(S.string)->S.arrayMinLength(4) let schemaInlineResult = - S.array(S.string)->S.arrayMin(~message="Array must be 4 or more items long", 4) + S.array(S.string)->S.arrayMinLength(~message="Array must be 4 or more items long", 4) t->U.assertEqualSchemas(schema, schemaInlineResult) t->Assert.deepEqual( schema->S.inline, - `S.array(S.string)->S.arrayMin(4, ~message="Array must be 4 or more items long")`, + `S.array(S.string)->S.arrayMinLength(4, ~message="Array must be 4 or more items long")`, (), ) }) diff --git a/packages/tests/src/core/S_object_flatten_test.res b/packages/tests/src/core/S_object_flatten_test.res index a2d96720..82ea1d52 100644 --- a/packages/tests/src/core/S_object_flatten_test.res +++ b/packages/tests/src/core/S_object_flatten_test.res @@ -30,7 +30,7 @@ test("Can flatten strict object", t => { t->Assert.deepEqual( switch schema->S.classify { | Object({unknownKeys}) => unknownKeys - | _ => Js.Exn.raiseError("Invalid case") + | _ => assert(false) }, S.Strip, (), diff --git a/packages/tests/src/core/S_test.ts b/packages/tests/src/core/S_test.ts index f7568ea4..ccd408b2 100644 --- a/packages/tests/src/core/S_test.ts +++ b/packages/tests/src/core/S_test.ts @@ -1203,7 +1203,7 @@ test("Example", (t) => { // Create login schema with email and password const loginSchema = S.object({ email: S.email(S.string), - password: S.stringMin(S.string, 8), + password: S.stringMinLength(S.string, 8), }); // Infer output TypeScript type of login schema diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 577b9ec6..1ef66bb9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true @@ -12,7 +12,7 @@ importers: specifier: 2.3.0 version: 2.3.0(ava@5.2.0)(rescript@11.1.0) '@rescript/core': - specifier: 1.3.0 + specifier: ^1.3.0 version: 1.3.0(rescript@11.1.0) ava: specifier: 5.2.0 @@ -27,7 +27,7 @@ importers: specifier: 11.1.0 version: 11.1.0 rescript-schema: - specifier: . + specifier: 'link:' version: 'link:' rescript-stdlib-vendorer: specifier: 1.1.0 @@ -42,11 +42,11 @@ importers: specifier: 4.9.3 version: 4.9.3 valibot: - specifier: 0.18.0 - version: 0.18.0 + specifier: 0.32.0 + version: 0.32.0 zod: - specifier: 3.22.2 - version: 3.22.2 + specifier: 3.23.8 + version: 3.23.8 packages/prepack: dependencies: @@ -76,98 +76,67 @@ importers: dependencies: rescript-schema: specifier: 6.4.0 - version: link:../.. + version: 6.4.0(rescript@11.1.0) packages/tests: {} packages: - /@bcoe/v8-coverage@0.2.3: + '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - dev: true - /@cspotcode/source-map-support@0.8.1: + '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - dev: true - /@dzakh/rescript-ava@2.3.0(ava@5.2.0)(rescript@11.1.0): + '@dzakh/rescript-ava@2.3.0': resolution: {integrity: sha512-str7Fh+lYxWNf+wDAHykw84bqKodrwU5swLcYNjc8BJc3N4ECyNBA3o5vFNsq0zZw+1eExARs8mUnB2ZQSmRGg==} peerDependencies: ava: 5.2.x rescript: 10.1.x || ~11.0.0-alpha - dependencies: - ava: 5.2.0 - rescript: 11.1.0 - dev: true - /@istanbuljs/schema@0.1.3: + '@istanbuljs/schema@0.1.3': resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - dev: true - /@jridgewell/resolve-uri@3.1.0: + '@jridgewell/resolve-uri@3.1.0': resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} - dev: true - /@jridgewell/resolve-uri@3.1.1: + '@jridgewell/resolve-uri@3.1.1': resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} - dev: true - /@jridgewell/sourcemap-codec@1.4.14: + '@jridgewell/sourcemap-codec@1.4.14': resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - dev: true - /@jridgewell/sourcemap-codec@1.4.15: + '@jridgewell/sourcemap-codec@1.4.15': resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - /@jridgewell/trace-mapping@0.3.18: + '@jridgewell/trace-mapping@0.3.18': resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - /@jridgewell/trace-mapping@0.3.9: + '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - /@nodelib/fs.scandir@2.1.5: + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: true - /@nodelib/fs.stat@2.0.5: + '@nodelib/fs.stat@2.0.5': resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - dev: true - /@nodelib/fs.walk@1.2.8: + '@nodelib/fs.walk@1.2.8': resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - dev: true - /@rescript/core@1.3.0(rescript@11.1.0): + '@rescript/core@1.3.0': resolution: {integrity: sha512-wNZOZ63sYcaIYZCmTZeIPCeLa3HCGgPbIOR8zjyNkoBYUlxNV8Nb2ZyqlXR5Mb9ttvv8fTV56JbKhyVEZEYo8g==} peerDependencies: rescript: ^11.1.0-rc.7 - dependencies: - rescript: 11.1.0 - /@rollup/plugin-replace@5.0.2(rollup@3.21.0): + '@rollup/plugin-replace@5.0.2': resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -175,13 +144,8 @@ packages: peerDependenciesMeta: rollup: optional: true - dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.21.0) - magic-string: 0.27.0 - rollup: 3.21.0 - dev: false - /@rollup/pluginutils@5.0.2(rollup@3.21.0): + '@rollup/pluginutils@5.0.2': resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -189,118 +153,80 @@ packages: peerDependenciesMeta: rollup: optional: true - dependencies: - '@types/estree': 1.0.1 - estree-walker: 2.0.2 - picomatch: 2.3.1 - rollup: 3.21.0 - dev: false - /@tsconfig/node10@1.0.9: + '@tsconfig/node10@1.0.9': resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - dev: true - /@tsconfig/node12@1.0.11: + '@tsconfig/node12@1.0.11': resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - dev: true - /@tsconfig/node14@1.0.3: + '@tsconfig/node14@1.0.3': resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - dev: true - /@tsconfig/node16@1.0.4: + '@tsconfig/node16@1.0.4': resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - dev: true - /@types/estree@1.0.1: + '@types/estree@1.0.1': resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} - dev: false - /@types/istanbul-lib-coverage@2.0.4: + '@types/istanbul-lib-coverage@2.0.4': resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} - dev: true - /@types/node@20.11.16: + '@types/node@20.11.16': resolution: {integrity: sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==} - dependencies: - undici-types: 5.26.5 - dev: true - /acorn-walk@8.2.0: + acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} - dev: true - /acorn@8.9.0: + acorn@8.9.0: resolution: {integrity: sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==} engines: {node: '>=0.4.0'} hasBin: true - dev: true - /aggregate-error@4.0.1: + aggregate-error@4.0.1: resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} engines: {node: '>=12'} - dependencies: - clean-stack: 4.2.0 - indent-string: 5.0.0 - dev: true - /ansi-regex@5.0.1: + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - dev: true - /ansi-regex@6.0.1: + ansi-regex@6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} - dev: true - /ansi-styles@4.3.0: + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - dev: true - /ansi-styles@6.2.1: + ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} - dev: true - /anymatch@3.1.3: + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true - /arg@4.1.3: + arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: true - /argparse@1.0.10: + argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - dev: true - /array-find-index@1.0.2: + array-find-index@1.0.2: resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} engines: {node: '>=0.10.0'} - dev: true - /arrgv@1.0.2: + arrgv@1.0.2: resolution: {integrity: sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==} engines: {node: '>=8.0.0'} - dev: true - /arrify@3.0.0: + arrify@3.0.0: resolution: {integrity: sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==} engines: {node: '>=12'} - dev: true - /ava@5.2.0: + ava@5.2.0: resolution: {integrity: sha512-W8yxFXJr/P68JP55eMpQIa6AiXhCX3VeuajM8nolyWNExcMDD6rnIWKTjw0B/+GkFHBIaN6Jd0LtcMThcoqVfg==} engines: {node: '>=14.19 <15 || >=16.15 <17 || >=18'} hasBin: true @@ -309,270 +235,124 @@ packages: peerDependenciesMeta: '@ava/typescript': optional: true - dependencies: - acorn: 8.9.0 - acorn-walk: 8.2.0 - ansi-styles: 6.2.1 - arrgv: 1.0.2 - arrify: 3.0.0 - callsites: 4.0.0 - cbor: 8.1.0 - chalk: 5.3.0 - chokidar: 3.5.3 - chunkd: 2.0.1 - ci-info: 3.8.0 - ci-parallel-vars: 1.0.1 - clean-yaml-object: 0.1.0 - cli-truncate: 3.1.0 - code-excerpt: 4.0.0 - common-path-prefix: 3.0.0 - concordance: 5.0.4 - currently-unhandled: 0.4.1 - debug: 4.3.4 - del: 7.0.0 - emittery: 1.0.1 - figures: 5.0.0 - globby: 13.2.1 - ignore-by-default: 2.1.0 - indent-string: 5.0.0 - is-error: 2.2.2 - is-plain-object: 5.0.0 - is-promise: 4.0.0 - matcher: 5.0.0 - mem: 9.0.2 - ms: 2.1.3 - p-event: 5.0.1 - p-map: 5.5.0 - picomatch: 2.3.1 - pkg-conf: 4.0.0 - plur: 5.1.0 - pretty-ms: 8.0.0 - resolve-cwd: 3.0.0 - slash: 3.0.0 - stack-utils: 2.0.6 - strip-ansi: 7.1.0 - supertap: 3.0.1 - temp-dir: 3.0.0 - write-file-atomic: 5.0.1 - yargs: 17.7.2 - transitivePeerDependencies: - - supports-color - dev: true - /balanced-match@1.0.2: + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true - /benchmark@2.1.4: + benchmark@2.1.4: resolution: {integrity: sha512-l9MlfN4M1K/H2fbhfMy3B7vJd6AGKJVQn2h6Sg/Yx+KckoUA7ewS5Vv6TjSq18ooE1kS9hhAlQRH3AkXIh/aOQ==} - dependencies: - lodash: 4.17.21 - platform: 1.3.6 - dev: true - /binary-extensions@2.2.0: + binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} - dev: true - /blueimp-md5@2.19.0: + blueimp-md5@2.19.0: resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} - dev: true - /brace-expansion@1.1.11: + brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: true - /braces@3.0.2: + braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - dev: true - /c8@7.12.0: + c8@7.12.0: resolution: {integrity: sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==} engines: {node: '>=10.12.0'} hasBin: true - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@istanbuljs/schema': 0.1.3 - find-up: 5.0.0 - foreground-child: 2.0.0 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-report: 3.0.0 - istanbul-reports: 3.1.5 - rimraf: 3.0.2 - test-exclude: 6.0.0 - v8-to-istanbul: 9.1.0 - yargs: 16.2.0 - yargs-parser: 20.2.9 - dev: true - /callsites@4.0.0: + callsites@4.0.0: resolution: {integrity: sha512-y3jRROutgpKdz5vzEhWM34TidDU8vkJppF8dszITeb1PQmSqV3DTxyV8G/lyO/DNvtE1YTedehmw9MPZsCBHxQ==} engines: {node: '>=12.20'} - dev: true - /cbor@8.1.0: + cbor@8.1.0: resolution: {integrity: sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==} engines: {node: '>=12.19'} - dependencies: - nofilter: 3.1.0 - dev: true - /chalk@5.3.0: + chalk@5.3.0: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - dev: true - /chokidar@3.5.3: + chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.2 - dev: true - /chunkd@2.0.1: + chunkd@2.0.1: resolution: {integrity: sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==} - dev: true - /ci-info@3.8.0: + ci-info@3.8.0: resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} engines: {node: '>=8'} - dev: true - /ci-parallel-vars@1.0.1: + ci-parallel-vars@1.0.1: resolution: {integrity: sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==} - dev: true - /clean-stack@4.2.0: + clean-stack@4.2.0: resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} engines: {node: '>=12'} - dependencies: - escape-string-regexp: 5.0.0 - dev: true - /clean-yaml-object@0.1.0: + clean-yaml-object@0.1.0: resolution: {integrity: sha512-3yONmlN9CSAkzNwnRCiJQ7Q2xK5mWuEfL3PuTZcAUzhObbXsfsnMptJzXwz93nc5zn9V9TwCVMmV7w4xsm43dw==} engines: {node: '>=0.10.0'} - dev: true - /cli-truncate@3.1.0: + cli-truncate@3.1.0: resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - slice-ansi: 5.0.0 - string-width: 5.1.2 - dev: true - /cliui@7.0.4: + cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true - /cliui@8.0.1: + cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true - /code-excerpt@4.0.0: + code-excerpt@4.0.0: resolution: {integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - convert-to-spaces: 2.0.1 - dev: true - /color-convert@2.0.1: + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - dev: true - /color-name@1.1.4: + color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: true - /colorette@2.0.20: + colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - /common-path-prefix@3.0.0: + common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - dev: true - /concat-map@0.0.1: + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true - /concordance@5.0.4: + concordance@5.0.4: resolution: {integrity: sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==} engines: {node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14'} - dependencies: - date-time: 3.1.0 - esutils: 2.0.3 - fast-diff: 1.3.0 - js-string-escape: 1.0.1 - lodash: 4.17.21 - md5-hex: 3.0.1 - semver: 7.5.3 - well-known-symbols: 2.0.0 - dev: true - /convert-source-map@1.9.0: + convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: true - /convert-to-spaces@2.0.1: + convert-to-spaces@2.0.1: resolution: {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /create-require@1.1.1: + create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: true - /cross-spawn@7.0.3: + cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - /currently-unhandled@0.4.1: + currently-unhandled@0.4.1: resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==} engines: {node: '>=0.10.0'} - dependencies: - array-find-index: 1.0.2 - dev: true - /date-time@3.1.0: + date-time@3.1.0: resolution: {integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==} engines: {node: '>=6'} - dependencies: - time-zone: 1.0.0 - dev: true - /debug@4.3.4: + debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -580,866 +360,558 @@ packages: peerDependenciesMeta: supports-color: optional: true - dependencies: - ms: 2.1.2 - dev: true - /del@7.0.0: + del@7.0.0: resolution: {integrity: sha512-tQbV/4u5WVB8HMJr08pgw0b6nG4RGt/tj+7Numvq+zqcvUFeMaIWWOUFltiU+6go8BSO2/ogsB4EasDaj0y68Q==} engines: {node: '>=14.16'} - dependencies: - globby: 13.2.1 - graceful-fs: 4.2.11 - is-glob: 4.0.3 - is-path-cwd: 3.0.0 - is-path-inside: 4.0.0 - p-map: 5.5.0 - rimraf: 3.0.2 - slash: 4.0.0 - dev: true - /diff@4.0.2: + diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - dev: true - /dir-glob@3.0.1: + dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - dependencies: - path-type: 4.0.0 - dev: true - /eastasianwidth@0.2.0: + eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: true - /emittery@1.0.1: + emittery@1.0.1: resolution: {integrity: sha512-2ID6FdrMD9KDLldGesP6317G78K7km/kMcwItRtVFva7I/cSEOIaLpewaUb+YLXVwdAp3Ctfxh/V5zIl1sj7dQ==} engines: {node: '>=14.16'} - dev: true - /emoji-regex@8.0.0: + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true - /emoji-regex@9.2.2: + emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: true - /escalade@3.1.1: + escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} - dev: true - /escape-string-regexp@2.0.0: + escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} - dev: true - /escape-string-regexp@5.0.0: + escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - dev: true - /esprima@4.0.1: + esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true - dev: true - /estree-walker@2.0.2: + estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: false - /esutils@2.0.3: + esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - dev: true - /execa@7.1.1: + execa@7.1.1: resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 4.3.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.1.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 - dev: false - /fast-diff@1.3.0: + fast-diff@1.3.0: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - dev: true - /fast-glob@3.3.0: + fast-glob@3.3.0: resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==} engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - dev: true - /fastq@1.15.0: + fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} - dependencies: - reusify: 1.0.4 - dev: true - /figures@5.0.0: + figures@5.0.0: resolution: {integrity: sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==} engines: {node: '>=14'} - dependencies: - escape-string-regexp: 5.0.0 - is-unicode-supported: 1.3.0 - dev: true - /fill-range@7.0.1: + fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - dev: true - /find-up@5.0.0: + find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: true - /find-up@6.3.0: + find-up@6.3.0: resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - dev: true - /foreground-child@2.0.0: + foreground-child@2.0.0: resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} engines: {node: '>=8.0.0'} - dependencies: - cross-spawn: 7.0.3 - signal-exit: 3.0.7 - dev: true - /fs.realpath@1.0.0: + fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: true - /fsevents@2.3.2: + fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - requiresBuild: true - optional: true - /get-caller-file@2.0.5: + get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - dev: true - /get-stream@6.0.1: + get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - dev: false - /glob-parent@5.1.2: + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - dev: true - /glob@7.2.3: + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - /globby@13.2.1: + globby@13.2.1: resolution: {integrity: sha512-DPCBxctI7dN4EeIqjW2KGqgdcUMbrhJ9AzON+PlxCtvppWhubTLD4+a0GFxiym14ZvacUydTPjLPc2DlKz7EIg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - dir-glob: 3.0.1 - fast-glob: 3.3.0 - ignore: 5.2.4 - merge2: 1.4.1 - slash: 4.0.0 - dev: true - /graceful-fs@4.2.11: + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: true - /has-flag@4.0.0: + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - dev: true - /html-escaper@2.0.2: + html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true - /human-signals@4.3.1: + human-signals@4.3.1: resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} engines: {node: '>=14.18.0'} - dev: false - /ignore-by-default@2.1.0: + ignore-by-default@2.1.0: resolution: {integrity: sha512-yiWd4GVmJp0Q6ghmM2B/V3oZGRmjrKLXvHR3TE1nfoXsmoggllfZUQe74EN0fJdPFZu2NIvNdrMMLm3OsV7Ohw==} engines: {node: '>=10 <11 || >=12 <13 || >=14'} - dev: true - /ignore@5.2.4: + ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} - dev: true - /imurmurhash@0.1.4: + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - dev: true - /indent-string@5.0.0: + indent-string@5.0.0: resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} engines: {node: '>=12'} - dev: true - /inflight@1.0.6: + inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - dev: true - /inherits@2.0.4: + inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: true - /irregular-plurals@3.5.0: + irregular-plurals@3.5.0: resolution: {integrity: sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==} engines: {node: '>=8'} - dev: true - /is-binary-path@2.1.0: + is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} - dependencies: - binary-extensions: 2.2.0 - dev: true - /is-error@2.2.2: + is-error@2.2.2: resolution: {integrity: sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==} - dev: true - /is-extglob@2.1.1: + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - dev: true - /is-fullwidth-code-point@3.0.0: + is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - dev: true - /is-fullwidth-code-point@4.0.0: + is-fullwidth-code-point@4.0.0: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} engines: {node: '>=12'} - dev: true - /is-glob@4.0.3: + is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: true - /is-number@7.0.0: + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - dev: true - /is-path-cwd@3.0.0: + is-path-cwd@3.0.0: resolution: {integrity: sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /is-path-inside@4.0.0: + is-path-inside@4.0.0: resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} engines: {node: '>=12'} - dev: true - /is-plain-object@5.0.0: + is-plain-object@5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} - dev: true - /is-promise@4.0.0: + is-promise@4.0.0: resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} - dev: true - /is-stream@3.0.0: + is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false - /is-unicode-supported@1.3.0: + is-unicode-supported@1.3.0: resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} engines: {node: '>=12'} - dev: true - /isexe@2.0.0: + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - /istanbul-lib-coverage@3.2.0: + istanbul-lib-coverage@3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} - dev: true - /istanbul-lib-report@3.0.0: + istanbul-lib-report@3.0.0: resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} engines: {node: '>=8'} - dependencies: - istanbul-lib-coverage: 3.2.0 - make-dir: 3.1.0 - supports-color: 7.2.0 - dev: true - /istanbul-reports@3.1.5: + istanbul-reports@3.1.5: resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} engines: {node: '>=8'} - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.0 - dev: true - /js-string-escape@1.0.1: + js-string-escape@1.0.1: resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} engines: {node: '>= 0.8'} - dev: true - /js-yaml@3.14.1: + js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: true - /load-json-file@7.0.1: + load-json-file@7.0.1: resolution: {integrity: sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /locate-path@6.0.0: + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - dependencies: - p-locate: 5.0.0 - dev: true - /locate-path@7.2.0: + locate-path@7.2.0: resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-locate: 6.0.0 - dev: true - /lodash@4.17.21: + lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: true - /lru-cache@6.0.0: + lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: true - /magic-string@0.27.0: + magic-string@0.27.0: resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} engines: {node: '>=12'} - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - dev: false - /make-dir@3.1.0: + make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} - dependencies: - semver: 6.3.0 - dev: true - /make-error@1.3.6: + make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: true - /map-age-cleaner@0.1.3: + map-age-cleaner@0.1.3: resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} engines: {node: '>=6'} - dependencies: - p-defer: 1.0.0 - dev: true - /matcher@5.0.0: + matcher@5.0.0: resolution: {integrity: sha512-s2EMBOWtXFc8dgqvoAzKJXxNHibcdJMV0gwqKUaw9E2JBJuGUK7DrNKrA6g/i+v72TT16+6sVm5mS3thaMLQUw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - escape-string-regexp: 5.0.0 - dev: true - /md5-hex@3.0.1: + md5-hex@3.0.1: resolution: {integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==} engines: {node: '>=8'} - dependencies: - blueimp-md5: 2.19.0 - dev: true - /mem@9.0.2: + mem@9.0.2: resolution: {integrity: sha512-F2t4YIv9XQUBHt6AOJ0y7lSmP1+cY7Fm1DRh9GClTGzKST7UWLMx6ly9WZdLH/G/ppM5RL4MlQfRT71ri9t19A==} engines: {node: '>=12.20'} - dependencies: - map-age-cleaner: 0.1.3 - mimic-fn: 4.0.0 - dev: true - /merge-stream@2.0.0: + merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: false - /merge2@1.4.1: + merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - dev: true - /micromatch@4.0.5: + micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - dev: true - /mimic-fn@4.0.0: + mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} - /minimatch@3.1.2: + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - dev: true - /minimist@1.2.8: + minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - /ms@2.1.2: + ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true - /ms@2.1.3: + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: true - /nofilter@3.1.0: + nofilter@3.1.0: resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} engines: {node: '>=12.19'} - dev: true - /normalize-path@3.0.0: + normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - dev: true - /npm-run-path@5.1.0: + npm-run-path@5.1.0: resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - path-key: 4.0.0 - dev: false - /once@1.4.0: + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - dev: true - /onetime@6.0.0: + onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} - dependencies: - mimic-fn: 4.0.0 - dev: false - /p-defer@1.0.0: + p-defer@1.0.0: resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} engines: {node: '>=4'} - dev: true - /p-event@5.0.1: + p-event@5.0.1: resolution: {integrity: sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-timeout: 5.1.0 - dev: true - /p-limit@3.1.0: + p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - dependencies: - yocto-queue: 0.1.0 - dev: true - /p-limit@4.0.0: + p-limit@4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - yocto-queue: 1.0.0 - dev: true - /p-locate@5.0.0: + p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - dependencies: - p-limit: 3.1.0 - dev: true - /p-locate@6.0.0: + p-locate@6.0.0: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-limit: 4.0.0 - dev: true - /p-map@5.5.0: + p-map@5.5.0: resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==} engines: {node: '>=12'} - dependencies: - aggregate-error: 4.0.1 - dev: true - /p-timeout@5.1.0: + p-timeout@5.1.0: resolution: {integrity: sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==} engines: {node: '>=12'} - dev: true - /parse-ms@3.0.0: + parse-ms@3.0.0: resolution: {integrity: sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==} engines: {node: '>=12'} - dev: true - /path-exists@4.0.0: + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - dev: true - /path-exists@5.0.0: + path-exists@5.0.0: resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /path-is-absolute@1.0.1: + path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - dev: true - /path-key@3.1.1: + path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - /path-key@4.0.0: + path-key@4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} - dev: false - /path-type@4.0.0: + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - dev: true - /picomatch@2.3.1: + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - /pkg-conf@4.0.0: + pkg-conf@4.0.0: resolution: {integrity: sha512-7dmgi4UY4qk+4mj5Cd8v/GExPo0K+SlY+hulOSdfZ/T6jVH6//y7NtzZo5WrfhDBxuQ0jCa7fLZmNaNh7EWL/w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - find-up: 6.3.0 - load-json-file: 7.0.1 - dev: true - /platform@1.3.6: + platform@1.3.6: resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==} - dev: true - /plur@5.1.0: + plur@5.1.0: resolution: {integrity: sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - irregular-plurals: 3.5.0 - dev: true - /pretty-ms@8.0.0: + pretty-ms@8.0.0: resolution: {integrity: sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==} engines: {node: '>=14.16'} - dependencies: - parse-ms: 3.0.0 - dev: true - /queue-microtask@1.2.3: + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true - /readdirp@3.6.0: + readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - dev: true - /require-directory@2.1.1: + require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - dev: true - /rescript-nodejs@16.1.0: + rescript-nodejs@16.1.0: resolution: {integrity: sha512-RyXGIEsb8UhuShf5PwKcTkYNPz+cPQ0CZq74lbYCbCa5YFidbmiIWpQhCMtpsgP1PkLClhKGDkfZfmwwNOil4Q==} - dev: false - /rescript-stdlib-vendorer@1.1.0: + rescript-schema@6.4.0: + resolution: {integrity: sha512-rBHtZOEVskKKAf7jfJicuTA1xsQRu2qBdB73FVtPsUSmtgIYpGGKk4YSURQss7WYQEHRds+zPjFLJWzeAnwsLg==} + peerDependencies: + rescript: 11.x + + rescript-stdlib-vendorer@1.1.0: resolution: {integrity: sha512-1r8jOLO1e24N//PjwfucZeZGQSvCFzt3oMRs7VJaVnX9Ns5dhetVGhlWBmXPTiASm0GipARvEYHFNkDidCWNBw==} hasBin: true - dependencies: - colorette: 2.0.20 - minimist: 1.2.8 - rescript: 11.0.1 - rescript-struct: 5.1.1(rescript@11.0.1) - /rescript-struct@5.1.1(rescript@11.0.1): + rescript-struct@5.1.1: resolution: {integrity: sha512-e2WOrwMvAgZaJBFAhMBdGZcSoieK6DKkzgQVqTvfTga+3vFGkvpH3sDVNF2qLEcyEC9wIcx1qcNYWaAVvlCKhQ==} peerDependencies: rescript: 11.0.x || ~11.0.0-rc - dependencies: - rescript: 11.0.1 - /rescript@11.0.1: + rescript@11.0.1: resolution: {integrity: sha512-7T4PRp/d0+CBNnY6PYKffFqo9tGZlvnZpboF/n+8SKS+JZ6VvXJO7W538VPZXf3EYx1COGAWWvkF9e/HgSAqHg==} engines: {node: '>=10'} hasBin: true - requiresBuild: true - /rescript@11.1.0: + rescript@11.1.0: resolution: {integrity: sha512-9la2Dv+ACylQ77I8s4spPu1JnLZXbH5WgxcLHLLUBWgFFSiv0wXqgzWztrBIZqwFgVX5BYcwldUqUVcEzdCyHg==} engines: {node: '>=10'} hasBin: true - requiresBuild: true - /resolve-cwd@3.0.0: + resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} - dependencies: - resolve-from: 5.0.0 - dev: true - /resolve-from@5.0.0: + resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - dev: true - /reusify@1.0.4: + reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true - /rimraf@3.0.2: + rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true - dependencies: - glob: 7.2.3 - dev: true - /rollup@3.21.0: + rollup@3.21.0: resolution: {integrity: sha512-ANPhVcyeHvYdQMUyCbczy33nbLzI7RzrBje4uvNiTDJGIMtlKoOStmympwr9OtS1LZxiDmE2wvxHyVhoLtf1KQ==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true - optionalDependencies: - fsevents: 2.3.2 - dev: false - /run-parallel@1.2.0: + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - dev: true - /semver@6.3.0: + semver@6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true - dev: true - /semver@7.5.3: + semver@7.5.3: resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} engines: {node: '>=10'} hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - /serialize-error@7.0.1: + serialize-error@7.0.1: resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} engines: {node: '>=10'} - dependencies: - type-fest: 0.13.1 - dev: true - /shebang-command@2.0.0: + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - /shebang-regex@3.0.0: + shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - /signal-exit@3.0.7: + signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - /signal-exit@4.0.2: + signal-exit@4.0.2: resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==} engines: {node: '>=14'} - dev: true - /slash@3.0.0: + slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - dev: true - /slash@4.0.0: + slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} - dev: true - /slice-ansi@5.0.0: + slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 - dev: true - /sprintf-js@1.0.3: + sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: true - /stack-utils@2.0.6: + stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} - dependencies: - escape-string-regexp: 2.0.0 - dev: true - /string-width@4.2.3: + string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - dev: true - /string-width@5.1.2: + string-width@5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - dev: true - /strip-ansi@6.0.1: + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - dev: true - /strip-ansi@7.1.0: + strip-ansi@7.1.0: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} - dependencies: - ansi-regex: 6.0.1 - dev: true - /strip-final-newline@3.0.0: + strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} - dev: false - /supertap@3.0.1: + supertap@3.0.1: resolution: {integrity: sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - indent-string: 5.0.0 - js-yaml: 3.14.1 - serialize-error: 7.0.1 - strip-ansi: 7.1.0 - dev: true - /supports-color@7.2.0: + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - dev: true - /temp-dir@3.0.0: + temp-dir@3.0.0: resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} engines: {node: '>=14.16'} - dev: true - /test-exclude@6.0.0: + test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 - dev: true - /time-zone@1.0.0: + time-zone@1.0.0: resolution: {integrity: sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==} engines: {node: '>=4'} - dev: true - /to-regex-range@5.0.1: + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - dev: true - /ts-expect@1.3.0: + ts-expect@1.3.0: resolution: {integrity: sha512-e4g0EJtAjk64xgnFPD6kTBUtpnMVzDrMb12N1YZV0VvSlhnVT3SGxiYTLdGy8Q5cYHOIC/FAHmZ10eGrAguicQ==} - dev: true - /ts-node@10.9.1(@types/node@20.11.16)(typescript@4.9.3): + ts-node@10.9.1: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -1452,149 +924,939 @@ packages: optional: true '@swc/wasm': optional: true - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.11.16 - acorn: 8.9.0 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.9.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - dev: true - /type-fest@0.13.1: + type-fest@0.13.1: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} - dev: true - /typescript@4.9.3: + typescript@4.9.3: resolution: {integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==} engines: {node: '>=4.2.0'} hasBin: true - dev: true - /undici-types@5.26.5: + undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - dev: true - /v8-compile-cache-lib@3.0.1: + v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - dev: true - /v8-to-istanbul@9.1.0: + v8-to-istanbul@9.1.0: resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} engines: {node: '>=10.12.0'} - dependencies: - '@jridgewell/trace-mapping': 0.3.18 - '@types/istanbul-lib-coverage': 2.0.4 - convert-source-map: 1.9.0 - dev: true - /valibot@0.18.0: - resolution: {integrity: sha512-JpJ1ITTIAA4kuLDX5ygnjuMdeHryNI4cqx3vWQFisytTzH3/RBcTYJO336RSd/gRRRrYhIWf2RuST76p4TbdBw==} - dev: true + valibot@0.32.0: + resolution: {integrity: sha512-FXBnJl4bNOmeg7lQv+jfvo/wADsRBN8e9C3r+O77Re3dEnDma8opp7p4hcIbF7XJJ30h/5SVohdjer17/sHOsQ==} - /well-known-symbols@2.0.0: + well-known-symbols@2.0.0: resolution: {integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==} engines: {node: '>=6'} - dev: true - /which@2.0.2: + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true - dependencies: - isexe: 2.0.0 - /wrap-ansi@7.0.0: + wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - /wrappy@1.0.2: + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true - /write-file-atomic@5.0.1: + write-file-atomic@5.0.1: resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - imurmurhash: 0.1.4 - signal-exit: 4.0.2 - dev: true - /y18n@5.0.8: + y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - dev: true - /yallist@4.0.0: + yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true - /yargs-parser@20.2.9: + yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} - dev: true - /yargs-parser@21.1.1: + yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} - dev: true - /yargs@16.2.0: + yargs@16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} - dependencies: - cliui: 7.0.4 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - dev: true - /yargs@17.7.2: + yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} - dependencies: - cliui: 8.0.1 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - dev: true - /yn@3.1.1: + yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} - dev: true - /yocto-queue@0.1.0: + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - dev: true - /yocto-queue@1.0.0: + yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} - dev: true - /zod@3.22.2: - resolution: {integrity: sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==} - dev: true + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + +snapshots: + + '@bcoe/v8-coverage@0.2.3': {} + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + '@dzakh/rescript-ava@2.3.0(ava@5.2.0)(rescript@11.1.0)': + dependencies: + ava: 5.2.0 + rescript: 11.1.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jridgewell/resolve-uri@3.1.0': {} + + '@jridgewell/resolve-uri@3.1.1': {} + + '@jridgewell/sourcemap-codec@1.4.14': {} + + '@jridgewell/sourcemap-codec@1.4.15': {} + + '@jridgewell/trace-mapping@0.3.18': + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + + '@rescript/core@1.3.0(rescript@11.1.0)': + dependencies: + rescript: 11.1.0 + + '@rollup/plugin-replace@5.0.2(rollup@3.21.0)': + dependencies: + '@rollup/pluginutils': 5.0.2(rollup@3.21.0) + magic-string: 0.27.0 + optionalDependencies: + rollup: 3.21.0 + + '@rollup/pluginutils@5.0.2(rollup@3.21.0)': + dependencies: + '@types/estree': 1.0.1 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 3.21.0 + + '@tsconfig/node10@1.0.9': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + + '@types/estree@1.0.1': {} + + '@types/istanbul-lib-coverage@2.0.4': {} + + '@types/node@20.11.16': + dependencies: + undici-types: 5.26.5 + + acorn-walk@8.2.0: {} + + acorn@8.9.0: {} + + aggregate-error@4.0.1: + dependencies: + clean-stack: 4.2.0 + indent-string: 5.0.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.0.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.1: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@4.1.3: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + array-find-index@1.0.2: {} + + arrgv@1.0.2: {} + + arrify@3.0.0: {} + + ava@5.2.0: + dependencies: + acorn: 8.9.0 + acorn-walk: 8.2.0 + ansi-styles: 6.2.1 + arrgv: 1.0.2 + arrify: 3.0.0 + callsites: 4.0.0 + cbor: 8.1.0 + chalk: 5.3.0 + chokidar: 3.5.3 + chunkd: 2.0.1 + ci-info: 3.8.0 + ci-parallel-vars: 1.0.1 + clean-yaml-object: 0.1.0 + cli-truncate: 3.1.0 + code-excerpt: 4.0.0 + common-path-prefix: 3.0.0 + concordance: 5.0.4 + currently-unhandled: 0.4.1 + debug: 4.3.4 + del: 7.0.0 + emittery: 1.0.1 + figures: 5.0.0 + globby: 13.2.1 + ignore-by-default: 2.1.0 + indent-string: 5.0.0 + is-error: 2.2.2 + is-plain-object: 5.0.0 + is-promise: 4.0.0 + matcher: 5.0.0 + mem: 9.0.2 + ms: 2.1.3 + p-event: 5.0.1 + p-map: 5.5.0 + picomatch: 2.3.1 + pkg-conf: 4.0.0 + plur: 5.1.0 + pretty-ms: 8.0.0 + resolve-cwd: 3.0.0 + slash: 3.0.0 + stack-utils: 2.0.6 + strip-ansi: 7.1.0 + supertap: 3.0.1 + temp-dir: 3.0.0 + write-file-atomic: 5.0.1 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + + balanced-match@1.0.2: {} + + benchmark@2.1.4: + dependencies: + lodash: 4.17.21 + platform: 1.3.6 + + binary-extensions@2.2.0: {} + + blueimp-md5@2.19.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + braces@3.0.2: + dependencies: + fill-range: 7.0.1 + + c8@7.12.0: + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@istanbuljs/schema': 0.1.3 + find-up: 5.0.0 + foreground-child: 2.0.0 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-report: 3.0.0 + istanbul-reports: 3.1.5 + rimraf: 3.0.2 + test-exclude: 6.0.0 + v8-to-istanbul: 9.1.0 + yargs: 16.2.0 + yargs-parser: 20.2.9 + + callsites@4.0.0: {} + + cbor@8.1.0: + dependencies: + nofilter: 3.1.0 + + chalk@5.3.0: {} + + chokidar@3.5.3: + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + + chunkd@2.0.1: {} + + ci-info@3.8.0: {} + + ci-parallel-vars@1.0.1: {} + + clean-stack@4.2.0: + dependencies: + escape-string-regexp: 5.0.0 + + clean-yaml-object@0.1.0: {} + + cli-truncate@3.1.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 5.1.2 + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + code-excerpt@4.0.0: + dependencies: + convert-to-spaces: 2.0.1 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + colorette@2.0.20: {} + + common-path-prefix@3.0.0: {} + + concat-map@0.0.1: {} + + concordance@5.0.4: + dependencies: + date-time: 3.1.0 + esutils: 2.0.3 + fast-diff: 1.3.0 + js-string-escape: 1.0.1 + lodash: 4.17.21 + md5-hex: 3.0.1 + semver: 7.5.3 + well-known-symbols: 2.0.0 + + convert-source-map@1.9.0: {} + + convert-to-spaces@2.0.1: {} + + create-require@1.1.1: {} + + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + currently-unhandled@0.4.1: + dependencies: + array-find-index: 1.0.2 + + date-time@3.1.0: + dependencies: + time-zone: 1.0.0 + + debug@4.3.4: + dependencies: + ms: 2.1.2 + + del@7.0.0: + dependencies: + globby: 13.2.1 + graceful-fs: 4.2.11 + is-glob: 4.0.3 + is-path-cwd: 3.0.0 + is-path-inside: 4.0.0 + p-map: 5.5.0 + rimraf: 3.0.2 + slash: 4.0.0 + + diff@4.0.2: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + eastasianwidth@0.2.0: {} + + emittery@1.0.1: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + escalade@3.1.1: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@5.0.0: {} + + esprima@4.0.1: {} + + estree-walker@2.0.2: {} + + esutils@2.0.3: {} + + execa@7.1.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + + fast-diff@1.3.0: {} + + fast-glob@3.3.0: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + + fastq@1.15.0: + dependencies: + reusify: 1.0.4 + + figures@5.0.0: + dependencies: + escape-string-regexp: 5.0.0 + is-unicode-supported: 1.3.0 + + fill-range@7.0.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + find-up@6.3.0: + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + + foreground-child@2.0.0: + dependencies: + cross-spawn: 7.0.3 + signal-exit: 3.0.7 + + fs.realpath@1.0.0: {} + + fsevents@2.3.2: + optional: true + + get-caller-file@2.0.5: {} + + get-stream@6.0.1: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globby@13.2.1: + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.0 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 4.0.0 + + graceful-fs@4.2.11: {} + + has-flag@4.0.0: {} + + html-escaper@2.0.2: {} + + human-signals@4.3.1: {} + + ignore-by-default@2.1.0: {} + + ignore@5.2.4: {} + + imurmurhash@0.1.4: {} + + indent-string@5.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + irregular-plurals@3.5.0: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.2.0 + + is-error@2.2.2: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@4.0.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + is-path-cwd@3.0.0: {} + + is-path-inside@4.0.0: {} + + is-plain-object@5.0.0: {} + + is-promise@4.0.0: {} + + is-stream@3.0.0: {} + + is-unicode-supported@1.3.0: {} + + isexe@2.0.0: {} + + istanbul-lib-coverage@3.2.0: {} + + istanbul-lib-report@3.0.0: + dependencies: + istanbul-lib-coverage: 3.2.0 + make-dir: 3.1.0 + supports-color: 7.2.0 + + istanbul-reports@3.1.5: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.0 + + js-string-escape@1.0.1: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + load-json-file@7.0.1: {} + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + locate-path@7.2.0: + dependencies: + p-locate: 6.0.0 + + lodash@4.17.21: {} + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + magic-string@0.27.0: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + make-dir@3.1.0: + dependencies: + semver: 6.3.0 + + make-error@1.3.6: {} + + map-age-cleaner@0.1.3: + dependencies: + p-defer: 1.0.0 + + matcher@5.0.0: + dependencies: + escape-string-regexp: 5.0.0 + + md5-hex@3.0.1: + dependencies: + blueimp-md5: 2.19.0 + + mem@9.0.2: + dependencies: + map-age-cleaner: 0.1.3 + mimic-fn: 4.0.0 + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.5: + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + + mimic-fn@4.0.0: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimist@1.2.8: {} + + ms@2.1.2: {} + + ms@2.1.3: {} + + nofilter@3.1.0: {} + + normalize-path@3.0.0: {} + + npm-run-path@5.1.0: + dependencies: + path-key: 4.0.0 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + p-defer@1.0.0: {} + + p-event@5.0.1: + dependencies: + p-timeout: 5.1.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@4.0.0: + dependencies: + yocto-queue: 1.0.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-locate@6.0.0: + dependencies: + p-limit: 4.0.0 + + p-map@5.5.0: + dependencies: + aggregate-error: 4.0.1 + + p-timeout@5.1.0: {} + + parse-ms@3.0.0: {} + + path-exists@4.0.0: {} + + path-exists@5.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-type@4.0.0: {} + + picomatch@2.3.1: {} + + pkg-conf@4.0.0: + dependencies: + find-up: 6.3.0 + load-json-file: 7.0.1 + + platform@1.3.6: {} + + plur@5.1.0: + dependencies: + irregular-plurals: 3.5.0 + + pretty-ms@8.0.0: + dependencies: + parse-ms: 3.0.0 + + queue-microtask@1.2.3: {} + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + require-directory@2.1.1: {} + + rescript-nodejs@16.1.0: {} + + rescript-schema@6.4.0(rescript@11.1.0): + dependencies: + rescript: 11.1.0 + + rescript-stdlib-vendorer@1.1.0: + dependencies: + colorette: 2.0.20 + minimist: 1.2.8 + rescript: 11.0.1 + rescript-struct: 5.1.1(rescript@11.0.1) + + rescript-struct@5.1.1(rescript@11.0.1): + dependencies: + rescript: 11.0.1 + + rescript@11.0.1: {} + + rescript@11.1.0: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-from@5.0.0: {} + + reusify@1.0.4: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rollup@3.21.0: + optionalDependencies: + fsevents: 2.3.2 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + semver@6.3.0: {} + + semver@7.5.3: + dependencies: + lru-cache: 6.0.0 + + serialize-error@7.0.1: + dependencies: + type-fest: 0.13.1 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + signal-exit@3.0.7: {} + + signal-exit@4.0.2: {} + + slash@3.0.0: {} + + slash@4.0.0: {} + + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + + sprintf-js@1.0.3: {} + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.0.1 + + strip-final-newline@3.0.0: {} + + supertap@3.0.1: + dependencies: + indent-string: 5.0.0 + js-yaml: 3.14.1 + serialize-error: 7.0.1 + strip-ansi: 7.1.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + temp-dir@3.0.0: {} + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + time-zone@1.0.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + ts-expect@1.3.0: {} + + ts-node@10.9.1(@types/node@20.11.16)(typescript@4.9.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.11.16 + acorn: 8.9.0 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 4.9.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + + type-fest@0.13.1: {} + + typescript@4.9.3: {} + + undici-types@5.26.5: {} + + v8-compile-cache-lib@3.0.1: {} + + v8-to-istanbul@9.1.0: + dependencies: + '@jridgewell/trace-mapping': 0.3.18 + '@types/istanbul-lib-coverage': 2.0.4 + convert-source-map: 1.9.0 + + valibot@0.32.0: {} + + well-known-symbols@2.0.0: {} + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrappy@1.0.2: {} + + write-file-atomic@5.0.1: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.0.2 + + y18n@5.0.8: {} + + yallist@4.0.0: {} + + yargs-parser@20.2.9: {} + + yargs-parser@21.1.1: {} + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yn@3.1.1: {} + + yocto-queue@0.1.0: {} + + yocto-queue@1.0.0: {} + + zod@3.23.8: {} diff --git a/src/S.bs.mjs b/src/S.bs.mjs index 6a59908c..80f6d380 100644 --- a/src/S.bs.mjs +++ b/src/S.bs.mjs @@ -146,15 +146,15 @@ var floatMin = S_Core$RescriptSchema.floatMin; var floatMax = S_Core$RescriptSchema.floatMax; -var arrayMin = S_Core$RescriptSchema.arrayMin; +var arrayMinLength = S_Core$RescriptSchema.arrayMinLength; -var arrayMax = S_Core$RescriptSchema.arrayMax; +var arrayMaxLength = S_Core$RescriptSchema.arrayMaxLength; var arrayLength = S_Core$RescriptSchema.arrayLength; -var stringMin = S_Core$RescriptSchema.stringMin; +var stringMinLength = S_Core$RescriptSchema.stringMinLength; -var stringMax = S_Core$RescriptSchema.stringMax; +var stringMaxLength = S_Core$RescriptSchema.stringMaxLength; var stringLength = S_Core$RescriptSchema.stringLength; @@ -245,11 +245,11 @@ export { port , floatMin , floatMax , - arrayMin , - arrayMax , + arrayMinLength , + arrayMaxLength , arrayLength , - stringMin , - stringMax , + stringMinLength , + stringMaxLength , stringLength , email , uuid , diff --git a/src/S.d.ts b/src/S.d.ts index 782c9fb1..50dbd517 100644 --- a/src/S.d.ts +++ b/src/S.d.ts @@ -305,12 +305,12 @@ export const numberMax: ( message?: string ) => Schema; -export const arrayMin: ( +export const arrayMinLength: ( schema: Schema, length: number, message?: string ) => Schema; -export const arrayMax: ( +export const arrayMaxLength: ( schema: Schema, length: number, message?: string @@ -321,12 +321,12 @@ export const arrayLength: ( message?: string ) => Schema; -export const stringMin: ( +export const stringMinLength: ( schema: Schema, length: number, message?: string ) => Schema; -export const stringMax: ( +export const stringMaxLength: ( schema: Schema, length: number, message?: string diff --git a/src/S.js b/src/S.js index 147ad133..bcdffd59 100644 --- a/src/S.js +++ b/src/S.js @@ -43,12 +43,12 @@ export const port = S.port; export const numberMin = S.floatMin; export const numberMax = S.floatMax; -export const arrayMin = S.arrayMin; -export const arrayMax = S.arrayMax; +export const arrayMinLength = S.arrayMinLength; +export const arrayMaxLength = S.arrayMaxLength; export const arrayLength = S.arrayLength; -export const stringMin = S.stringMin; -export const stringMax = S.stringMax; +export const stringMinLength = S.stringMinLength; +export const stringMaxLength = S.stringMaxLength; export const stringLength = S.stringLength; export const email = S.email; export const uuid = S.uuid; diff --git a/src/S.resi b/src/S.resi index 8dd016b8..e651cf57 100644 --- a/src/S.resi +++ b/src/S.resi @@ -360,12 +360,12 @@ let port: (t, ~message: string=?) => t let floatMin: (t, float, ~message: string=?) => t let floatMax: (t, float, ~message: string=?) => t -let arrayMin: (t>, int, ~message: string=?) => t> -let arrayMax: (t>, int, ~message: string=?) => t> +let arrayMinLength: (t>, int, ~message: string=?) => t> +let arrayMaxLength: (t>, int, ~message: string=?) => t> let arrayLength: (t>, int, ~message: string=?) => t> -let stringMin: (t, int, ~message: string=?) => t -let stringMax: (t, int, ~message: string=?) => t +let stringMinLength: (t, int, ~message: string=?) => t +let stringMaxLength: (t, int, ~message: string=?) => t let stringLength: (t, int, ~message: string=?) => t let email: (t, ~message: string=?) => t let uuid: (t, ~message: string=?) => t diff --git a/src/S_Core.bs.mjs b/src/S_Core.bs.mjs index 607eed23..e4db7626 100644 --- a/src/S_Core.bs.mjs +++ b/src/S_Core.bs.mjs @@ -2592,9 +2592,9 @@ function internalInline(schema, maybeVariant, param) { var match = refinement.kind; switch (match.TAG) { case "Min" : - return "->S.arrayMin(" + match.length + ", ~message=" + JSON.stringify(refinement.message) + ")"; + return "->S.arrayMinLength(" + match.length + ", ~message=" + JSON.stringify(refinement.message) + ")"; case "Max" : - return "->S.arrayMax(" + match.length + ", ~message=" + JSON.stringify(refinement.message) + ")"; + return "->S.arrayMaxLength(" + match.length + ", ~message=" + JSON.stringify(refinement.message) + ")"; case "Length" : return "->S.arrayLength(" + match.length + ", ~message=" + JSON.stringify(refinement.message) + ")"; @@ -2631,9 +2631,9 @@ function internalInline(schema, maybeVariant, param) { } else { switch (match.TAG) { case "Min" : - return "->S.stringMin(" + match.length + ", ~message=" + JSON.stringify(refinement.message) + ")"; + return "->S.stringMinLength(" + match.length + ", ~message=" + JSON.stringify(refinement.message) + ")"; case "Max" : - return "->S.stringMax(" + match.length + ", ~message=" + JSON.stringify(refinement.message) + ")"; + return "->S.stringMaxLength(" + match.length + ", ~message=" + JSON.stringify(refinement.message) + ")"; case "Length" : return "->S.stringLength(" + match.length + ", ~message=" + JSON.stringify(refinement.message) + ")"; case "Pattern" : @@ -2745,7 +2745,7 @@ function floatMax(schema, maxValue, maybeMessage) { })); } -function arrayMin(schema, length, maybeMessage) { +function arrayMinLength(schema, length, maybeMessage) { var message = maybeMessage !== undefined ? maybeMessage : "Array must be " + length + " or more items long"; return addRefinement(schema, metadataId$3, { kind: { @@ -2758,7 +2758,7 @@ function arrayMin(schema, length, maybeMessage) { })); } -function arrayMax(schema, length, maybeMessage) { +function arrayMaxLength(schema, length, maybeMessage) { var message = maybeMessage !== undefined ? maybeMessage : "Array must be " + length + " or fewer items long"; return addRefinement(schema, metadataId$3, { kind: { @@ -2784,7 +2784,7 @@ function arrayLength(schema, length, maybeMessage) { })); } -function stringMin(schema, length, maybeMessage) { +function stringMinLength(schema, length, maybeMessage) { var message = maybeMessage !== undefined ? maybeMessage : "String must be " + length + " or more characters long"; return addRefinement(schema, metadataId, { kind: { @@ -2797,7 +2797,7 @@ function stringMin(schema, length, maybeMessage) { })); } -function stringMax(schema, length, maybeMessage) { +function stringMaxLength(schema, length, maybeMessage) { var message = maybeMessage !== undefined ? maybeMessage : "String must be " + length + " or fewer characters long"; return addRefinement(schema, metadataId, { kind: { @@ -3307,11 +3307,11 @@ export { port , floatMin , floatMax , - arrayMin , - arrayMax , + arrayMinLength , + arrayMaxLength , arrayLength , - stringMin , - stringMax , + stringMinLength , + stringMaxLength , stringLength , email , uuid , diff --git a/src/S_Core.res b/src/S_Core.res index 56674648..327212ba 100644 --- a/src/S_Core.res +++ b/src/S_Core.res @@ -3260,9 +3260,9 @@ let inline = { | {kind: Cuid, message} => `->S.cuid(~message=${message->Stdlib.Inlined.Value.fromString})` | {kind: Min({length}), message} => - `->S.stringMin(${length->Stdlib.Int.unsafeToString}, ~message=${message->Stdlib.Inlined.Value.fromString})` + `->S.stringMinLength(${length->Stdlib.Int.unsafeToString}, ~message=${message->Stdlib.Inlined.Value.fromString})` | {kind: Max({length}), message} => - `->S.stringMax(${length->Stdlib.Int.unsafeToString}, ~message=${message->Stdlib.Inlined.Value.fromString})` + `->S.stringMaxLength(${length->Stdlib.Int.unsafeToString}, ~message=${message->Stdlib.Inlined.Value.fromString})` | {kind: Length({length}), message} => `->S.stringLength(${length->Stdlib.Int.unsafeToString}, ~message=${message->Stdlib.Inlined.Value.fromString})` | {kind: Pattern({re}), message} => @@ -3324,9 +3324,9 @@ let inline = { ->Js.Array2.map(refinement => { switch refinement { | {kind: Max({length}), message} => - `->S.arrayMax(${length->Stdlib.Int.unsafeToString}, ~message=${message->Stdlib.Inlined.Value.fromString})` + `->S.arrayMaxLength(${length->Stdlib.Int.unsafeToString}, ~message=${message->Stdlib.Inlined.Value.fromString})` | {kind: Min({length}), message} => - `->S.arrayMin(${length->Stdlib.Int.unsafeToString}, ~message=${message->Stdlib.Inlined.Value.fromString})` + `->S.arrayMinLength(${length->Stdlib.Int.unsafeToString}, ~message=${message->Stdlib.Inlined.Value.fromString})` | {kind: Length({length}), message} => `->S.arrayLength(${length->Stdlib.Int.unsafeToString}, ~message=${message->Stdlib.Inlined.Value.fromString})` } @@ -3467,7 +3467,7 @@ let floatMax = (schema, maxValue, ~message as maybeMessage=?) => { ) } -let arrayMin = (schema, length, ~message as maybeMessage=?) => { +let arrayMinLength = (schema, length, ~message as maybeMessage=?) => { let message = switch maybeMessage { | Some(m) => m | None => `Array must be ${length->Stdlib.Int.unsafeToString} or more items long` @@ -3484,7 +3484,7 @@ let arrayMin = (schema, length, ~message as maybeMessage=?) => { ) } -let arrayMax = (schema, length, ~message as maybeMessage=?) => { +let arrayMaxLength = (schema, length, ~message as maybeMessage=?) => { let message = switch maybeMessage { | Some(m) => m | None => `Array must be ${length->Stdlib.Int.unsafeToString} or fewer items long` @@ -3518,7 +3518,7 @@ let arrayLength = (schema, length, ~message as maybeMessage=?) => { ) } -let stringMin = (schema, length, ~message as maybeMessage=?) => { +let stringMinLength = (schema, length, ~message as maybeMessage=?) => { let message = switch maybeMessage { | Some(m) => m | None => `String must be ${length->Stdlib.Int.unsafeToString} or more characters long` @@ -3535,7 +3535,7 @@ let stringMin = (schema, length, ~message as maybeMessage=?) => { ) } -let stringMax = (schema, length, ~message as maybeMessage=?) => { +let stringMaxLength = (schema, length, ~message as maybeMessage=?) => { let message = switch maybeMessage { | Some(m) => m | None => `String must be ${length->Stdlib.Int.unsafeToString} or fewer characters long` diff --git a/src/S_Core.resi b/src/S_Core.resi index 0e6dc9d8..746a6bfd 100644 --- a/src/S_Core.resi +++ b/src/S_Core.resi @@ -364,12 +364,12 @@ let port: (t, ~message: string=?) => t let floatMin: (t, float, ~message: string=?) => t let floatMax: (t, float, ~message: string=?) => t -let arrayMin: (t>, int, ~message: string=?) => t> -let arrayMax: (t>, int, ~message: string=?) => t> +let arrayMinLength: (t>, int, ~message: string=?) => t> +let arrayMaxLength: (t>, int, ~message: string=?) => t> let arrayLength: (t>, int, ~message: string=?) => t> -let stringMin: (t, int, ~message: string=?) => t -let stringMax: (t, int, ~message: string=?) => t +let stringMinLength: (t, int, ~message: string=?) => t +let stringMaxLength: (t, int, ~message: string=?) => t let stringLength: (t, int, ~message: string=?) => t let email: (t, ~message: string=?) => t let uuid: (t, ~message: string=?) => t