From e0dece7e5dc3d11436238e7add4d29211561be96 Mon Sep 17 00:00:00 2001 From: Darek Date: Tue, 18 Jul 2023 09:25:57 -0400 Subject: [PATCH] rs 0.31.1 upgrade (#85) * Upgrading to rs-0.31.1 * Adding range feature * Adding DataType option * Upgrading toolchain * Upgrading js packages Removing range decorator --------- Co-authored-by: Darek --- .github/workflows/docs.yaml | 2 +- .github/workflows/test-js.yaml | 2 +- Cargo.toml | 16 +- __tests__/dataframe.test.ts | 17 +- __tests__/expr.test.ts | 4 +- __tests__/lazy_functions.test.ts | 12 +- __tests__/lazyframe.test.ts | 2 +- package.json | 14 +- polars/dataframe.ts | 38 +- polars/index.ts | 2 +- polars/lazy/dataframe.ts | 19 +- polars/lazy/expr/index.ts | 37 +- polars/lazy/functions.ts | 23 +- polars/series/index.ts | 10 +- polars/shared_traits.ts | 3 + polars/types.ts | 5 + rust-toolchain | 2 +- src/conversion.rs | 9 +- src/dataframe.rs | 22 +- src/lazy/dataframe.rs | 6 +- src/lazy/dsl.rs | 82 ++-- src/list_construction.rs | 6 +- src/series.rs | 3 +- yarn.lock | 730 ++++++++++++++++++------------- 24 files changed, 635 insertions(+), 431 deletions(-) diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index a7943e67..cebe171d 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -14,7 +14,7 @@ jobs: - name: Install latest Rust nightly uses: actions-rs/toolchain@v1 with: - toolchain: nightly-2022-11-24 + toolchain: nightly-2023-06-23 override: true components: rustfmt, clippy - name: Install ghp-import diff --git a/.github/workflows/test-js.yaml b/.github/workflows/test-js.yaml index 90c8f941..bbd02d6c 100644 --- a/.github/workflows/test-js.yaml +++ b/.github/workflows/test-js.yaml @@ -18,7 +18,7 @@ jobs: - name: Install latest Rust nightly uses: actions-rs/toolchain@v1 with: - toolchain: nightly-2022-11-24 + toolchain: nightly-2023-06-23 override: true components: rustfmt, clippy - run: yarn --version diff --git a/Cargo.toml b/Cargo.toml index 286f335b..09f2cee7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,10 +17,10 @@ ahash = "0.8.3" bincode = "1.3.3" napi = {version = "2.13.2", default-features = false, features = ["napi8", "serde-json", "experimental"]} napi-derive = {version = "2.13.0", default-features = false} -polars-core = {git = "https://github.com/pola-rs/polars.git", rev = "ee2366b68f35c4b69dfe34cbf1eae107d4ebe97b", default-features = false} -polars-ops = {git = "https://github.com/pola-rs/polars.git", rev = "ee2366b68f35c4b69dfe34cbf1eae107d4ebe97b", default-features = false} -polars-io = {git = "https://github.com/pola-rs/polars.git", rev = "ee2366b68f35c4b69dfe34cbf1eae107d4ebe97b", default-features = false} -polars-plan = {git = "https://github.com/pola-rs/polars.git", rev = "ee2366b68f35c4b69dfe34cbf1eae107d4ebe97b", default-features = false} +polars-core = {git = "https://github.com/pola-rs/polars.git", rev = "672922491bac1f144747d39b864106d90010fd1e", default-features = false} +polars-io = {git = "https://github.com/pola-rs/polars.git", rev = "672922491bac1f144747d39b864106d90010fd1e", default-features = false} +polars-lazy = {git = "https://github.com/pola-rs/polars.git", rev = "672922491bac1f144747d39b864106d90010fd1e", default-features = false} +polars-ops = {git = "https://github.com/pola-rs/polars.git", rev = "672922491bac1f144747d39b864106d90010fd1e", default-features = false} thiserror = "1.0.40" smartstring = { version = "1" } serde_json = {version = "1"} @@ -42,7 +42,6 @@ features = [ "performant", "dtype-full", "rows", - "private", "round_series", "is_unique", "is_in", @@ -67,7 +66,6 @@ features = [ "diff", "pct_change", "moment", - "arange", "true_div", "dtype-categorical", "string_justify", @@ -95,7 +93,7 @@ features = [ "timezones", ] git = "https://github.com/pola-rs/polars.git" -rev = "ee2366b68f35c4b69dfe34cbf1eae107d4ebe97b" +rev = "672922491bac1f144747d39b864106d90010fd1e" [build-dependencies] napi-build = "2.0.1" @@ -104,4 +102,8 @@ napi-build = "2.0.1" codegen-units = 1 lto = "fat" +[features] +default = ["range"] +range = ["polars-lazy/range"] + [workspace] diff --git a/__tests__/dataframe.test.ts b/__tests__/dataframe.test.ts index bf8cd5e4..f20051b1 100644 --- a/__tests__/dataframe.test.ts +++ b/__tests__/dataframe.test.ts @@ -965,7 +965,7 @@ describe("dataframe", () => { foo: [1, 2, 3, 1], bar: [6, 7, 8, 1], }) - .sort({ by: "bar", reverse: true }); + .sort({ by: "bar", descending: true }); const expected = pl.DataFrame({ foo: [3, 2, 1, 1], bar: [8, 7, 6, 1], @@ -1414,7 +1414,7 @@ describe("join", () => { bar: [6, 7, 8], ham: ["a", "b", "c"], apple: ["x", "y", null], - fooright: [1, 10, null], + foo_right: [1, 10, null], }); expect(actual).toFrameEqual(expected); }); @@ -1438,7 +1438,7 @@ describe("join", () => { bar: [6, 7, 8, null], ham: ["a", "b", "c", "d"], apple: ["x", null, null, "y"], - fooright: [1, null, null, 10], + foo_right: [1, null, null, 10], }); expect(actual).toFrameEqual(expected); }); @@ -1456,14 +1456,14 @@ describe("join", () => { const actual = df.join(otherDF, { on: "ham", how: "left", - suffix: "_other", + suffix: "_right", }); const expected = pl.DataFrame({ foo: [1, 2, 3], bar: [6, 7, 8], ham: ["a", "b", "c"], apple: ["x", "y", null], - foo_other: [1, 10, null], + foo_right: [1, 10, null], }); expect(actual).toFrameEqual(expected); }); @@ -2209,7 +2209,9 @@ describe("additional", () => { label: ["a", "a", "b", "b"], value: [1, 2, 3, 4], }); - const dfs = df.partitionBy(["label"], true).map((df) => df.toObject()); + const dfs = df + .partitionBy(["label"], true, true) + .map((df) => df.toObject()); const expected = [ { label: ["a", "a"], @@ -2228,7 +2230,8 @@ describe("additional", () => { label: ["a", "a", "b", "b"], value: [1, 2, 3, 4], }); - const dfs = df.partitionBy(["label"], true, (df) => df.toObject()); + const dfs = df.partitionBy(["label"], true, true, (df) => df.toObject()); + const expected = [ { label: ["a", "a"], diff --git a/__tests__/expr.test.ts b/__tests__/expr.test.ts index 107e8a68..e77101ab 100644 --- a/__tests__/expr.test.ts +++ b/__tests__/expr.test.ts @@ -1105,7 +1105,7 @@ describe("expr.str", () => { const datetimeSeries = df .getColumn("timestamp") - .str.strptime(pl.Datetime("ms"), "%FT%T%.3f%:z") + .str.strptime(pl.Datetime("ms"), "%FT%T%.3f") .rename("datetime"); const dateSeries = df .getColumn("timestamp") @@ -1116,7 +1116,7 @@ describe("expr.str", () => { const actual = df.select( col("timestamp") - .str.strptime(pl.Datetime("ms"), "%FT%T%.3f%:z") + .str.strptime(pl.Datetime("ms"), "%FT%T%.3f") .as("datetime"), col("timestamp").str.strptime(pl.Date, "%FT%T%.3f%:z").as("date"), ); diff --git a/__tests__/lazy_functions.test.ts b/__tests__/lazy_functions.test.ts index fdff45d0..9203ded1 100644 --- a/__tests__/lazy_functions.test.ts +++ b/__tests__/lazy_functions.test.ts @@ -123,31 +123,31 @@ describe("lazy functions", () => { expect(actual).toFrameEqual(expected); }); }); - test("arange:positional", () => { + test("intRange:positional", () => { const df = pl.DataFrame({ foo: [1, 1, 1], }); const expected = pl.DataFrame({ foo: [1, 1] }); - const actual = df.filter(pl.col("foo").gtEq(pl.arange(0, 3))); + const actual = df.filter(pl.col("foo").gtEq(pl.intRange(0, 3))); expect(actual).toFrameEqual(expected); }); - test("arange:named", () => { + test("intRange:named", () => { const df = pl.DataFrame({ foo: [1, 1, 1], }); const expected = pl.DataFrame({ foo: [1, 1] }); const actual = df.filter( - pl.col("foo").gtEq(pl.arange({ low: 0, high: 3 })), + pl.col("foo").gtEq(pl.intRange({ low: 0, high: 3 })), ); expect(actual).toFrameEqual(expected); }); - test("arange:eager", () => { + test("intRange:eager", () => { const df = pl.DataFrame({ foo: [1, 1, 1], }); const expected = pl.DataFrame({ foo: [1, 1] }); const actual = df.filter( - pl.col("foo").gtEq(pl.arange({ low: 0, high: 3, eager: true })), + pl.col("foo").gtEq(pl.intRange({ low: 0, high: 3, eager: true })), ); expect(actual).toFrameEqual(expected); }); diff --git a/__tests__/lazyframe.test.ts b/__tests__/lazyframe.test.ts index 628d8350..2bf60656 100644 --- a/__tests__/lazyframe.test.ts +++ b/__tests__/lazyframe.test.ts @@ -956,7 +956,7 @@ describe("lazyframe", () => { bar: [6, 7, 8, 1], }) .lazy() - .sort({ by: "bar", reverse: true }) + .sort({ by: "bar", descending: true }) .collectSync(); const expected = pl.DataFrame({ foo: [3, 2, 1, 1], diff --git a/package.json b/package.json index 563d6e25..addc85eb 100644 --- a/package.json +++ b/package.json @@ -55,20 +55,20 @@ "precommit": "yarn lint && yarn test" }, "devDependencies": { - "@napi-rs/cli": "^2.16.1", + "@napi-rs/cli": "^2.16.2", "@types/chance": "^1.1.3", - "@types/jest": "^29.5.2", - "@types/node": "^20.3.1", + "@types/jest": "^29.5.3", + "@types/node": "^20.4.2", "chance": "^1.1.11", - "jest": "^29.5.0", + "jest": "^29.6.1", "rome": "^12.1.3", "source-map-support": "^0.5.21", - "ts-jest": "^29.1.0", + "ts-jest": "^29.1.1", "ts-node": "^10.9.1", "typedoc": "^0.24.8", - "typescript": "5.1.3" + "typescript": "5.1.6" }, - "packageManager": "yarn@3.3.1", + "packageManager": "yarn@3.6.1", "workspaces": [ "benches" ] diff --git a/polars/dataframe.ts b/polars/dataframe.ts index 602a727c..0b313728 100644 --- a/polars/dataframe.ts +++ b/polars/dataframe.ts @@ -972,10 +972,15 @@ export interface DataFrame * ``` */ nullCount(): DataFrame; - partitionBy(cols: string | string[], stable?: boolean): DataFrame[]; + partitionBy( + cols: string | string[], + stable?: boolean, + includeKey?: boolean, + ): DataFrame[]; partitionBy( cols: string | string[], stable: boolean, + includeKey: boolean, mapFn: (df: DataFrame) => T, ): T[]; /** @@ -1310,8 +1315,20 @@ export interface DataFrame * @param by - By which columns to sort. Only accepts string. * @param reverse - Reverse/descending sort. */ - sort(by: ColumnsOrExpr, reverse?: boolean): DataFrame; - sort({ by, reverse }: { by: ColumnsOrExpr; reverse?: boolean }): DataFrame; + sort( + by: ColumnsOrExpr, + descending?: boolean, + maintain_order?: boolean, + ): DataFrame; + sort({ + by, + descending, + maintain_order, + }: { + by: ColumnsOrExpr; + descending?: boolean; + maintain_order?: boolean; + }): DataFrame; /** * Aggregate the columns of this DataFrame to their standard deviation value. * ___ @@ -1985,10 +2002,11 @@ export const _DataFrame = (_df: any): DataFrame => { nullCount() { return wrap("nullCount"); }, - partitionBy(by, strict = false, mapFn = (df) => df) { + partitionBy(by, strict = false, includeKey?: boolean, mapFn = (df) => df) { by = Array.isArray(by) ? by : [by]; - - return _df.partitionBy(by, strict).map((d) => mapFn(_DataFrame(d))); + return _df + .partitionBy(by, strict, includeKey) + .map((d) => mapFn(_DataFrame(d))); }, pivot(values, options?) { let { @@ -2105,18 +2123,18 @@ export const _DataFrame = (_df: any): DataFrame => { return wrap("slice", opts.offset, opts.length); }, - sort(arg, reverse = false) { + sort(arg, descending = false, maintain_order = false) { if (arg?.by !== undefined) { - return this.sort(arg.by, arg.reverse); + return this.sort(arg.by, arg.descending); } if (Array.isArray(arg) || Expr.isExpr(arg)) { return _DataFrame(_df) .lazy() - .sort(arg, reverse) + .sort(arg, descending, maintain_order) .collectSync({ noOptimization: true, stringCache: false }); } - return wrap("sort", arg, reverse, true, false); + return wrap("sort", arg, descending, maintain_order, true, false); }, std() { return wrap("std"); diff --git a/polars/index.ts b/polars/index.ts index 9fa8eb73..d555da86 100644 --- a/polars/index.ts +++ b/polars/index.ts @@ -74,7 +74,7 @@ export namespace pl { export import col = lazy.col; export import cols = lazy.cols; export import lit = lazy.lit; - export import arange = lazy.arange; + export import intRange = lazy.intRange; export import argSortBy = lazy.argSortBy; export import avg = lazy.avg; export import concatList = lazy.concatList; diff --git a/polars/lazy/dataframe.ts b/polars/lazy/dataframe.ts index fd28c9de..bd01128c 100644 --- a/polars/lazy/dataframe.ts +++ b/polars/lazy/dataframe.ts @@ -394,10 +394,15 @@ export interface LazyDataFrame extends Serialize, GroupByOps { /** * @see {@link DataFrame.sort} */ - sort(by: ColumnsOrExpr, reverse?: ValueOrArray): LazyDataFrame; + sort( + by: ColumnsOrExpr, + descending?: ValueOrArray, + maintain_order?: boolean, + ): LazyDataFrame; sort(opts: { by: ColumnsOrExpr; - reverse?: ValueOrArray; + descending?: ValueOrArray; + maintain_order?: boolean; }): LazyDataFrame; /** * @see {@link DataFrame.std} @@ -858,17 +863,17 @@ export const _LazyDataFrame = (_ldf: any): LazyDataFrame => { return _LazyDataFrame(_ldf.slice(opt, len)); }, - sort(arg, reverse = false) { + sort(arg, descending = false, maintain_order = false) { if (arg?.by !== undefined) { - return this.sort(arg.by, arg.reverse); + return this.sort(arg.by, arg.descending, arg.maintain_order); } if (typeof arg === "string") { - return wrap("sort", arg, reverse, true, false); + return wrap("sort", arg, descending, maintain_order, true, false); } else { - reverse = [reverse].flat(3) as any; + descending = [descending].flat(3) as any; const by = selectionToExprList(arg, false); - return wrap("sortByExprs", by, reverse, true); + return wrap("sortByExprs", by, descending, maintain_order, true); } }, std() { diff --git a/polars/lazy/expr/index.ts b/polars/lazy/expr/index.ts index cf87dde2..6cc361d9 100644 --- a/polars/lazy/expr/index.ts +++ b/polars/lazy/expr/index.ts @@ -113,8 +113,11 @@ export interface Expr * - true -> order from large to small. * @returns UInt32 Series */ - argSort(reverse?: boolean): Expr; - argSort({ reverse }: { reverse: boolean }): Expr; + argSort(reverse?: boolean, maintain_order?: boolean): Expr; + argSort({ + reverse, + maintain_order, + }: { reverse?: boolean; maintain_order?: boolean }): Expr; /** Get index of first unique value. */ argUnique(): Expr; /** @see {@link Expr.alias} */ @@ -580,7 +583,6 @@ export const _Expr = (_expr: any): Expr => { const wrapExprArg = (method: string, lit = false) => (other: any) => { const expr = exprToLitOrExpr(other, lit).inner(); - return wrap(method, expr); }; @@ -658,10 +660,10 @@ export const _Expr = (_expr: any): Expr => { argMin() { return _Expr(_expr.argMin()); }, - argSort(reverse: any = false) { + argSort(reverse: any = false, maintain_order?: boolean) { reverse = reverse?.reverse ?? reverse; - - return _Expr(_expr.argSort(reverse, false)); + maintain_order = reverse?.maintain_order ?? maintain_order; + return _Expr(_expr.argSort(reverse, false, false, maintain_order)); }, argUnique() { return _Expr(_expr.argUnique()); @@ -936,9 +938,11 @@ export const _Expr = (_expr: any): Expr => { weights?, minPeriods?, center?, + by?, + closedWindow?, ) { if (typeof val === "number") { - return wrap("rollingQuantile", val, interpolation ?? "nearest", { + return wrap("rollingQuantile", { windowSize: `${windowSize}i`, weights, minPeriods, @@ -950,18 +954,16 @@ export const _Expr = (_expr: any): Expr => { if (windowSize === null) { throw new Error("window size is required"); } - const options = { - windowSize: `${windowSize}i`, - weights: val?.["weights"] ?? weights, - minPeriods: val?.["minPeriods"] ?? minPeriods ?? windowSize, - center: val?.["center"] ?? center ?? false, - }; - return wrap( "rollingQuantile", val.quantile, val.interpolation ?? "nearest", - options, + `${windowSize}i`, + val?.["weights"] ?? weights ?? null, + val?.["minPeriods"] ?? minPeriods ?? windowSize, + val?.["center"] ?? center ?? false, + val?.["by"] ?? by, + val?.["closedWindow"] ?? closedWindow ?? "left", ); }, rollingSkew(val, bias = true) { @@ -1017,9 +1019,9 @@ export const _Expr = (_expr: any): Expr => { return wrap("slice", pli.lit(arg.offset), pli.lit(arg.length)); }, - sort(reverse: any = false, nullsLast = false) { + sort(reverse: any = false, nullsLast = false, maintain_order = false) { if (typeof reverse === "boolean") { - return wrap("sortWith", reverse, nullsLast, false); + return wrap("sortWith", reverse, nullsLast, false, maintain_order); } return wrap( @@ -1027,6 +1029,7 @@ export const _Expr = (_expr: any): Expr => { reverse?.reverse ?? false, reverse?.nullsLast ?? nullsLast, false, + reverse?.maintain_order ?? maintain_order, ); }, sortBy(arg, reverse = false) { diff --git a/polars/lazy/functions.ts b/polars/lazy/functions.ts index f320b03b..f8b63dec 100644 --- a/polars/lazy/functions.ts +++ b/polars/lazy/functions.ts @@ -142,31 +142,31 @@ export function lit(value: any): Expr { * @example * ``` * > df.lazy() - * > .filter(pl.col("foo").lt(pl.arange(0, 100))) + * > .filter(pl.col("foo").lt(pl.intRange(0, 100))) * > .collect() * ``` */ -export function arange(opts: { +export function intRange(opts: { low: any; high: any; step: number; - eager: boolean; + eager?: boolean; }); -export function arange( +export function intRange( low: any, high?: any, step?: number, eager?: true, ): Series; -export function arange( +export function intRange( low: any, high?: any, step?: number, eager?: false, ): Expr; -export function arange(opts: any, high?, step?, eager?): Series | Expr { +export function intRange(opts: any, high?, step = 1, eager?): Series | Expr { if (typeof opts?.low === "number") { - return arange(opts.low, opts.high, opts.step, opts.eager); + return intRange(opts.low, opts.high, opts.step, opts.eager); } else { const low = exprToLitOrExpr(opts, false); high = exprToLitOrExpr(high, false); @@ -174,11 +174,10 @@ export function arange(opts: any, high?, step?, eager?): Series | Expr { const df = DataFrame({ a: [1] }); return df - .select(arange(low, high, step).alias("arange") as any) - .getColumn("arange") as any; + .select(intRange(low, high, step).alias("intRange") as any) + .getColumn("intRange") as any; } - - return _Expr(pli.arange(low, high, step)); + return _Expr(pli.intRange(low, high, step, eager)); } } /** Alias for `pl.col("*")` */ @@ -204,7 +203,7 @@ export function argSortBy( } const by = selectionToExprList(exprs); - return _Expr(pli.argsortBy(by, descending as boolean | boolean[])); + return _Expr(pli.argSortBy(by, descending as boolean | boolean[])); } /** Alias for mean. @see {@link mean} */ export function avg(column: string): Expr; diff --git a/polars/series/index.ts b/polars/series/index.ts index 5cd40f51..6af49b46 100644 --- a/polars/series/index.ts +++ b/polars/series/index.ts @@ -1131,13 +1131,17 @@ export function _Series(_s: any): Series { argMin() { return _s.argMin(); }, - argSort(reverse: any = false, nullsLast = true) { + argSort(reverse: any = false, nullsLast = true, maintain_order = false) { if (typeof reverse === "boolean") { - return _Series(_s.argsort(reverse, nullsLast, false)); + return _Series(_s.argsort(reverse, nullsLast, maintain_order, false)); } return _Series( - _s.argsort(reverse.reverse, reverse.nullsLast ?? nullsLast), + _s.argsort( + reverse.reverse, + reverse.nullsLast ?? nullsLast, + reverse.maintain_order ?? maintain_order, + ), ); }, argTrue() { diff --git a/polars/shared_traits.ts b/polars/shared_traits.ts index 27f19246..2f428e6e 100644 --- a/polars/shared_traits.ts +++ b/polars/shared_traits.ts @@ -6,6 +6,7 @@ import { RollingOptions, RollingQuantileOptions, RollingSkewOptions, + ClosedWindow, } from "./types"; import { DataType } from "./datatypes"; @@ -392,6 +393,8 @@ export interface Rolling { weights?: Array, minPeriods?: Array, center?: boolean, + by?: String, + closed?: ClosedWindow, ): T; /** * Compute a rolling skew diff --git a/polars/types.ts b/polars/types.ts index 1f25d341..199a05ae 100644 --- a/polars/types.ts +++ b/polars/types.ts @@ -213,3 +213,8 @@ export interface RollingSkewOptions { windowSize: number; bias?: boolean; } + +/** + * ClosedWindow types + */ +export type ClosedWindow = "None" | "Both" | "Left" | "Right"; diff --git a/rust-toolchain b/rust-toolchain index d65a1c2f..9c0828f5 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1 +1 @@ -nightly-2023-05-07 \ No newline at end of file +nightly-2023-06-23 \ No newline at end of file diff --git a/src/conversion.rs b/src/conversion.rs index bc378bdc..db61c9d5 100644 --- a/src/conversion.rs +++ b/src/conversion.rs @@ -513,6 +513,7 @@ impl From for RollingOptionsImpl<'static> { tu: None, tz: None, closed_window: None, + ..Default::default() } } } @@ -526,6 +527,7 @@ impl From for RollingOptions { center: o.center, by: None, closed_window: None, + ..Default::default() } } } @@ -622,11 +624,8 @@ impl FromNapiValue for Wrap { }; Ok(Wrap(dtype)) - // Ok(Wrap(Schema::from(fields))) - } - _ => { - todo!() } + _ => Err(Error::new(Status::InvalidArg, "not a valid conversion to 'DataType'".to_owned())) } } } @@ -731,10 +730,12 @@ impl FromNapiValue for Wrap { obj.get::<_, bool>("nullsLast")?.unwrap_or(false) }; let multithreaded = obj.get::<_, bool>("multithreaded")?.unwrap(); + let maintain_order: bool = obj.get::<_, bool>("maintain_order")?.unwrap(); let options = SortOptions { descending, nulls_last, multithreaded, + maintain_order, }; Ok(Wrap(options)) } diff --git a/src/dataframe.rs b/src/dataframe.rs index fe9b83b4..7bff4b69 100644 --- a/src/dataframe.rs +++ b/src/dataframe.rs @@ -562,7 +562,6 @@ impl JsDataFrame { left_on: Vec<&str>, right_on: Vec<&str>, how: String, - suffix: String, ) -> napi::Result { let how = match how.as_ref() { "left" => JoinType::Left, @@ -583,7 +582,7 @@ impl JsDataFrame { let df = self .df - .join(&other.df, left_on, right_on, how, Some(suffix)) + .join(&other.df, left_on, right_on, how.into()) .map_err(JsPolarsErr::from)?; Ok(JsDataFrame::new(df)) } @@ -742,27 +741,29 @@ impl JsDataFrame { pub fn sort( &self, by_column: String, - reverse: bool, + descending: bool, nulls_last: bool, multithreaded: bool, + maintain_order: bool ) -> napi::Result { let df = self .df .sort_with_options( &by_column, SortOptions { - descending: reverse, + descending, nulls_last, multithreaded, + maintain_order }, ) .map_err(JsPolarsErr::from)?; Ok(JsDataFrame::new(df)) } #[napi(catch_unwind)] - pub fn sort_in_place(&mut self, by_column: String, reverse: bool) -> napi::Result<()> { + pub fn sort_in_place(&mut self, by_column: String, descending: bool, maintain_order: bool) -> napi::Result<()> { self.df - .sort_in_place([&by_column], reverse) + .sort_in_place([&by_column], descending, maintain_order) .map_err(JsPolarsErr::from)?; Ok(()) } @@ -914,11 +915,12 @@ impl JsDataFrame { &self, groups: Vec, stable: bool, + include_key: bool, ) -> napi::Result> { let out = if stable { - self.df.partition_by_stable(groups) + self.df.partition_by_stable(groups, include_key) } else { - self.df.partition_by(groups) + self.df.partition_by(groups, include_key) } .map_err(JsPolarsErr::from)?; // Safety: @@ -1022,8 +1024,8 @@ impl JsDataFrame { Ok(df.into()) } #[napi(catch_unwind)] - pub fn to_dummies(&self, separator: Option<&str>) -> napi::Result { - let df = self.df.to_dummies(separator).map_err(JsPolarsErr::from)?; + pub fn to_dummies(&self, separator: Option<&str>, drop_first: bool) -> napi::Result { + let df = self.df.to_dummies(separator, drop_first).map_err(JsPolarsErr::from)?; Ok(df.into()) } diff --git a/src/lazy/dataframe.rs b/src/lazy/dataframe.rs index f2705750..e71be50a 100644 --- a/src/lazy/dataframe.rs +++ b/src/lazy/dataframe.rs @@ -138,6 +138,7 @@ impl JsLazyFrame { reverse: bool, nulls_last: bool, multithreaded: bool, + maintain_order: bool ) -> JsLazyFrame { let ldf = self.ldf.clone(); ldf.sort( @@ -146,6 +147,7 @@ impl JsLazyFrame { descending: reverse, nulls_last, multithreaded, + maintain_order }, ) .into() @@ -156,10 +158,10 @@ impl JsLazyFrame { by_column: Vec<&JsExpr>, reverse: Vec, nulls_last: bool, + maintain_order: bool, ) -> JsLazyFrame { let ldf = self.ldf.clone(); - ldf.sort_by_exprs(by_column.to_exprs(), reverse, nulls_last) - .into() + ldf.sort_by_exprs(by_column.to_exprs(), reverse, nulls_last, maintain_order).into() } #[napi(catch_unwind)] pub fn cache(&self) -> JsLazyFrame { diff --git a/src/lazy/dsl.rs b/src/lazy/dsl.rs index 09d0380e..84aa1306 100644 --- a/src/lazy/dsl.rs +++ b/src/lazy/dsl.rs @@ -1,3 +1,4 @@ +use std::any::Any; use crate::conversion::{parse_fill_null_strategy, Wrap}; use crate::prelude::*; use crate::utils::reinterpret; @@ -302,25 +303,27 @@ impl JsExpr { } #[napi(catch_unwind)] - pub fn sort_with(&self, descending: bool, nulls_last: bool, multithreaded: bool) -> JsExpr { + pub fn sort_with(&self, descending: bool, nulls_last: bool, multithreaded: bool, maintain_order: bool) -> JsExpr { self.clone() .inner .sort_with(SortOptions { descending, nulls_last, multithreaded, + maintain_order }) .into() } #[napi(catch_unwind)] - pub fn arg_sort(&self, reverse: bool, multithreaded: bool) -> JsExpr { + pub fn arg_sort(&self, reverse: bool, multithreaded: bool, maintain_order: bool) -> JsExpr { self.clone() .inner .arg_sort(SortOptions { descending: reverse, nulls_last: true, multithreaded, + maintain_order }) .into() } @@ -1081,12 +1084,26 @@ impl JsExpr { &self, quantile: f64, interpolation: Wrap, - options: JsRollingOptions, + window_size: String, + weights: Option>, + min_periods: i64, + center: bool, + by: Option, + closed: Option>, ) -> JsExpr { - self.inner - .clone() - .rolling_quantile(quantile, interpolation.0, options.into()) - .into() + let options = RollingOptions { + window_size: Duration::parse(&window_size), + min_periods: min_periods as usize, + weights, + center, + by, + closed_window: closed.map(|c| c.0), + fn_params: Some(Arc::new(RollingQuantileParams { + prob: quantile, + interpol: interpolation.0, + }) as Arc), + }; + self.inner.clone().rolling_quantile(options).into() } #[napi(catch_unwind)] pub fn rolling_skew(&self, window_size: i64, bias: bool) -> JsExpr { @@ -1261,8 +1278,8 @@ impl JsExpr { } #[napi(catch_unwind)] - pub fn shuffle(&self, seed: Wrap) -> JsExpr { - self.inner.clone().shuffle(Some(seed.0)).into() + pub fn shuffle(&self, seed: Wrap, fixed_seed: bool) -> JsExpr { + self.inner.clone().shuffle(Some(seed.0), fixed_seed).into() } #[napi(catch_unwind)] @@ -1272,11 +1289,12 @@ impl JsExpr { with_replacement: bool, shuffle: bool, seed: Option, + fixed_seed: bool, ) -> JsExpr { let seed = seed.map(|s| s as u64); self.inner .clone() - .sample_frac(frac, with_replacement, shuffle, seed) + .sample_frac(frac, with_replacement, shuffle, seed, fixed_seed) .into() } #[napi(catch_unwind)] @@ -1506,11 +1524,32 @@ pub fn dtype_cols(dtypes: Vec>) -> crate::lazy::dsl::JsExpr { } #[napi(catch_unwind)] -pub fn arange(low: Wrap, high: Wrap, step: Option) -> JsExpr { - let step = step.unwrap_or(1); - polars::lazy::dsl::arange(low.0, high.0, step).into() +pub fn int_range(start: Wrap, end: Wrap, step: i64, dtype: Option>) -> JsExpr { + let dtype = dtype.map(|d| d.0 as DataType); + + let mut result = dsl::int_range(start.0, end.0, step); + + if dtype.is_some() && dtype.clone().unwrap() != DataType::Int64 { + result = result.cast(dtype.clone().unwrap()); + } + + result.into() +} + +#[napi(catch_unwind)] +pub fn int_ranges(start: Wrap, end: Wrap, step: i64, dtype: Option>) -> JsExpr { + let dtype = dtype.map(|d| d.0 as DataType); + + let mut result = dsl::int_ranges(start.0, end.0, step); + + if dtype.is_some() && dtype.clone().unwrap() != DataType::Int64 { + result = result.cast(DataType::List(Box::new(dtype.clone().unwrap()))); + } + + result.into() } + #[napi(catch_unwind)] pub fn pearson_corr(a: Wrap, b: Wrap, ddof: Option) -> JsExpr { let ddof = ddof.unwrap_or(1); @@ -1534,9 +1573,10 @@ pub fn cov(a: Wrap, b: Wrap) -> JsExpr { } #[napi(catch_unwind)] -pub fn argsort_by(by: Vec<&JsExpr>, reverse: Vec) -> JsExpr { +#[cfg(feature = "range")] +pub fn arg_sort_by(by: Vec<&JsExpr>, descending: Vec) -> JsExpr { let by = by.to_exprs(); - polars::lazy::dsl::arg_sort_by(by, &reverse).into() + polars::lazy::dsl::arg_sort_by(by, &descending).into() } #[napi(catch_unwind)] @@ -1586,18 +1626,6 @@ pub fn concat_str(s: Vec<&JsExpr>, sep: String) -> JsExpr { dsl::concat_str(s, &sep).into() } -#[napi(catch_unwind)] -pub fn min_exprs(exprs: Vec<&JsExpr>) -> JsExpr { - let exprs = exprs.to_exprs(); - polars::lazy::dsl::min_exprs(exprs).into() -} - -#[napi(catch_unwind)] -pub fn max_exprs(exprs: Vec<&JsExpr>) -> JsExpr { - let exprs = exprs.to_exprs(); - polars::lazy::dsl::max_exprs(exprs).into() -} - #[napi(catch_unwind)] pub fn as_struct(exprs: Vec<&JsExpr>) -> JsExpr { let exprs = exprs.to_exprs(); diff --git a/src/list_construction.rs b/src/list_construction.rs index 10dac51c..b9b29b4e 100644 --- a/src/list_construction.rs +++ b/src/list_construction.rs @@ -43,7 +43,7 @@ macro_rules! typed_option_or_null { } } let ser = inner_builder.finish().into_series(); - builder.append_series(&ser); + let _ = builder.append_series(&ser); } Either::B(_) => builder.append_null(), } @@ -83,7 +83,7 @@ macro_rules! build_list_with_downcast { } } let ser = inner_builder.finish().into_series(); - builder.append_series(&ser); + let _ = builder.append_series(&ser); } Either::B(_) => builder.append_null(), } @@ -164,7 +164,7 @@ pub fn js_arr_to_list(name: &str, arr: &Array, dtype: &DataType) -> napi::Result .into_series() .cast(&DataType::Datetime(TimeUnit::Milliseconds, None)) .map_err(JsPolarsErr::from)?; - builder.append_series(&dt_series); + let _ = builder.append_series(&dt_series); } Either::B(_) => builder.append_null(), } diff --git a/src/series.rs b/src/series.rs index 5b95d6cb..04e65ae8 100644 --- a/src/series.rs +++ b/src/series.rs @@ -454,12 +454,13 @@ impl JsSeries { self.series.sort(reverse).into() } #[napi] - pub fn argsort(&self, reverse: bool, nulls_last: bool, multithreaded: bool) -> JsSeries { + pub fn argsort(&self, reverse: bool, nulls_last: bool, multithreaded: bool, maintain_order: bool) -> JsSeries { self.series .arg_sort(SortOptions { descending: reverse, nulls_last, multithreaded, + maintain_order }) .into_series() .into() diff --git a/yarn.lock b/yarn.lock index 58e9da20..31900177 100644 --- a/yarn.lock +++ b/yarn.lock @@ -551,7 +551,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.20.1, @babel/traverse@npm:^7.20.5, @babel/traverse@npm:^7.7.2": +"@babel/traverse@npm:^7.20.1, @babel/traverse@npm:^7.20.5": version: 7.20.5 resolution: "@babel/traverse@npm:7.20.5" dependencies: @@ -652,29 +652,29 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/console@npm:29.5.0" +"@jest/console@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/console@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 - jest-message-util: ^29.5.0 - jest-util: ^29.5.0 + jest-message-util: ^29.6.1 + jest-util: ^29.6.1 slash: ^3.0.0 - checksum: 9f4f4b8fabd1221361b7f2e92d4a90f5f8c2e2b29077249996ab3c8b7f765175ffee795368f8d6b5b2bb3adb32dc09319f7270c7c787b0d259e624e00e0f64a5 + checksum: d0ab23a00947bfb4bff8c0a7e5a7afd16519de16dde3fe7e77b9f13e794c6df7043ecf7fcdde66ac0d2b5fb3262e9cab3d92eaf61f89a12d3b8e3602e06a9902 languageName: node linkType: hard -"@jest/core@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/core@npm:29.5.0" +"@jest/core@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/core@npm:29.6.1" dependencies: - "@jest/console": ^29.5.0 - "@jest/reporters": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/console": ^29.6.1 + "@jest/reporters": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 @@ -682,20 +682,20 @@ __metadata: exit: ^0.1.2 graceful-fs: ^4.2.9 jest-changed-files: ^29.5.0 - jest-config: ^29.5.0 - jest-haste-map: ^29.5.0 - jest-message-util: ^29.5.0 + jest-config: ^29.6.1 + jest-haste-map: ^29.6.1 + jest-message-util: ^29.6.1 jest-regex-util: ^29.4.3 - jest-resolve: ^29.5.0 - jest-resolve-dependencies: ^29.5.0 - jest-runner: ^29.5.0 - jest-runtime: ^29.5.0 - jest-snapshot: ^29.5.0 - jest-util: ^29.5.0 - jest-validate: ^29.5.0 - jest-watcher: ^29.5.0 + jest-resolve: ^29.6.1 + jest-resolve-dependencies: ^29.6.1 + jest-runner: ^29.6.1 + jest-runtime: ^29.6.1 + jest-snapshot: ^29.6.1 + jest-util: ^29.6.1 + jest-validate: ^29.6.1 + jest-watcher: ^29.6.1 micromatch: ^4.0.4 - pretty-format: ^29.5.0 + pretty-format: ^29.6.1 slash: ^3.0.0 strip-ansi: ^6.0.0 peerDependencies: @@ -703,19 +703,19 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 9e8f5243fe82d5a57f3971e1b96f320058df7c315328a3a827263f3b17f64be10c80f4a9c1b1773628b64d2de6d607c70b5b2d5bf13e7f5ad04223e9ef6aac06 + checksum: 736dcc90c6c58dd9e1d2da122103b851187719ce3b3d4167689c63e68252632cd817712955b52ddaa648eba9c6f98f86cd58677325f0db4185f76899c64d7dac languageName: node linkType: hard -"@jest/environment@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/environment@npm:29.5.0" +"@jest/environment@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/environment@npm:29.6.1" dependencies: - "@jest/fake-timers": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/fake-timers": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" - jest-mock: ^29.5.0 - checksum: 921de6325cd4817dec6685e5ff299b499b6379f3f9cf489b4b13588ee1f3820a0c77b49e6a087996b6de8f629f6f5251e636cba08d1bdb97d8071cc7d033c88a + jest-mock: ^29.6.1 + checksum: fb671f91f27e7aa1ba04983ef87a83f0794a597aba0a57d08cbb1fcb484c2aedc2201e99f85fafe27aec9be78af6f2d1d7e6ea88267938992a1d0f9d4615f5b2 languageName: node linkType: hard @@ -728,52 +728,61 @@ __metadata: languageName: node linkType: hard -"@jest/expect@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/expect@npm:29.5.0" +"@jest/expect-utils@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/expect-utils@npm:29.6.1" dependencies: - expect: ^29.5.0 - jest-snapshot: ^29.5.0 - checksum: bd10e295111547e6339137107d83986ab48d46561525393834d7d2d8b2ae9d5626653f3f5e48e5c3fa742ac982e97bdf1f541b53b9e1d117a247b08e938527f6 + jest-get-type: ^29.4.3 + checksum: 037ee017eca62f7b45e1465fb5c6f9e92d5709a9ac716b8bff0bd294240a54de734e8f968fb69309cc4aef6c83b9552d5a821f3b18371af394bf04783859d706 languageName: node linkType: hard -"@jest/fake-timers@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/fake-timers@npm:29.5.0" +"@jest/expect@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/expect@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + expect: ^29.6.1 + jest-snapshot: ^29.6.1 + checksum: 5c56977b3cc8489744d97d9dc2dcb196c1dfecc83a058a7ef0fd4f63d68cf120a23d27669272d1e1b184fb4337b85e4ac1fc7f886e3988fdf243d42d73973eac + languageName: node + linkType: hard + +"@jest/fake-timers@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/fake-timers@npm:29.6.1" + dependencies: + "@jest/types": ^29.6.1 "@sinonjs/fake-timers": ^10.0.2 "@types/node": "*" - jest-message-util: ^29.5.0 - jest-mock: ^29.5.0 - jest-util: ^29.5.0 - checksum: 69930c6922341f244151ec0d27640852ec96237f730fc024da1f53143d31b43cde75d92f9d8e5937981cdce3b31416abc3a7090a0d22c2377512c4a6613244ee + jest-message-util: ^29.6.1 + jest-mock: ^29.6.1 + jest-util: ^29.6.1 + checksum: 86991276944b7d6c2ada3703a272517f5f8f2f4e2af1fe26065f6db1dac4dc6299729a88c46bcb781dcc1b20504c1d4bbd8119fd8a0838ac81a9a4b5d2c8e429 languageName: node linkType: hard -"@jest/globals@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/globals@npm:29.5.0" +"@jest/globals@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/globals@npm:29.6.1" dependencies: - "@jest/environment": ^29.5.0 - "@jest/expect": ^29.5.0 - "@jest/types": ^29.5.0 - jest-mock: ^29.5.0 - checksum: b309ab8f21b571a7c672608682e84bbdd3d2b554ddf81e4e32617fec0a69094a290ab42e3c8b2c66ba891882bfb1b8b2736720ea1285b3ad646d55c2abefedd9 + "@jest/environment": ^29.6.1 + "@jest/expect": ^29.6.1 + "@jest/types": ^29.6.1 + jest-mock: ^29.6.1 + checksum: fcca0b970a8b4894a1cdff0f500a86b45609e72c0a4319875e9504237b839df1a46c44d2f1362c6d87fdc7a05928edcc4b5a3751c9e6648dd70a761cdab64c94 languageName: node linkType: hard -"@jest/reporters@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/reporters@npm:29.5.0" +"@jest/reporters@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/reporters@npm:29.6.1" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 - "@jridgewell/trace-mapping": ^0.3.15 + "@jest/console": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 + "@jridgewell/trace-mapping": ^0.3.18 "@types/node": "*" chalk: ^4.0.0 collect-v8-coverage: ^1.0.0 @@ -785,9 +794,9 @@ __metadata: istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.1.3 - jest-message-util: ^29.5.0 - jest-util: ^29.5.0 - jest-worker: ^29.5.0 + jest-message-util: ^29.6.1 + jest-util: ^29.6.1 + jest-worker: ^29.6.1 slash: ^3.0.0 string-length: ^4.0.1 strip-ansi: ^6.0.0 @@ -797,7 +806,7 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 481268aac9a4a75cc49c4df1273d6b111808dec815e9d009dad717c32383ebb0cebac76e820ad1ab44e207540e1c2fe1e640d44c4f262de92ab1933e057fdeeb + checksum: b7dae415f3f6342b4db2671261bbee29af20a829f42135316c3dd548b9ef85290c9bb64a0e3aec4a55486596be1257ac8216a0f8d9794acd43f8b8fb686fc7e3 languageName: node linkType: hard @@ -810,61 +819,70 @@ __metadata: languageName: node linkType: hard -"@jest/source-map@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/source-map@npm:29.4.3" +"@jest/schemas@npm:^29.6.0": + version: 29.6.0 + resolution: "@jest/schemas@npm:29.6.0" dependencies: - "@jridgewell/trace-mapping": ^0.3.15 + "@sinclair/typebox": ^0.27.8 + checksum: c00511c69cf89138a7d974404d3a5060af375b5a52b9c87215d91873129b382ca11c1ff25bd6d605951404bb381ddce5f8091004a61e76457da35db1f5c51365 + languageName: node + linkType: hard + +"@jest/source-map@npm:^29.6.0": + version: 29.6.0 + resolution: "@jest/source-map@npm:29.6.0" + dependencies: + "@jridgewell/trace-mapping": ^0.3.18 callsites: ^3.0.0 graceful-fs: ^4.2.9 - checksum: 2301d225145f8123540c0be073f35a80fd26a2f5e59550fd68525d8cea580fb896d12bf65106591ffb7366a8a19790076dbebc70e0f5e6ceb51f81827ed1f89c + checksum: 9c6c40387410bb70b2fae8124287fc28f6bdd1b2d7f24348e8611e1bb638b404518228a4ce64a582365b589c536ae8e7ebab0126cef59a87874b71061d19783b languageName: node linkType: hard -"@jest/test-result@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/test-result@npm:29.5.0" +"@jest/test-result@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/test-result@npm:29.6.1" dependencies: - "@jest/console": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/console": ^29.6.1 + "@jest/types": ^29.6.1 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 - checksum: 2e8ff5242227ab960c520c3ea0f6544c595cc1c42fa3873c158e9f4f685f4ec9670ec08a4af94ae3885c0005a43550a9595191ffbc27a0965df27d9d98bbf901 + checksum: 9397a3a3410c5df564e79297b1be4fe33807a6157a017a1f74b54a6ef14de1530f12b922299e822e66a82c53269da16661772bffde3d883a78c5eefd2cd6d1cc languageName: node linkType: hard -"@jest/test-sequencer@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/test-sequencer@npm:29.5.0" +"@jest/test-sequencer@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/test-sequencer@npm:29.6.1" dependencies: - "@jest/test-result": ^29.5.0 + "@jest/test-result": ^29.6.1 graceful-fs: ^4.2.9 - jest-haste-map: ^29.5.0 + jest-haste-map: ^29.6.1 slash: ^3.0.0 - checksum: eca34b4aeb2fda6dfb7f9f4b064c858a7adf64ec5c6091b6f4ed9d3c19549177cbadcf1c615c4c182688fa1cf085c8c55c3ca6eea40719a34554b0bf071d842e + checksum: f3437178b5dca0401ed2e990d8b69161442351856d56f5725e009a487f5232b51039f8829673884b9bea61c861120d08a53a36432f4a4b8aab38915a68f7000d languageName: node linkType: hard -"@jest/transform@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/transform@npm:29.5.0" +"@jest/transform@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/transform@npm:29.6.1" dependencies: "@babel/core": ^7.11.6 - "@jest/types": ^29.5.0 - "@jridgewell/trace-mapping": ^0.3.15 + "@jest/types": ^29.6.1 + "@jridgewell/trace-mapping": ^0.3.18 babel-plugin-istanbul: ^6.1.1 chalk: ^4.0.0 convert-source-map: ^2.0.0 fast-json-stable-stringify: ^2.1.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.5.0 + jest-haste-map: ^29.6.1 jest-regex-util: ^29.4.3 - jest-util: ^29.5.0 + jest-util: ^29.6.1 micromatch: ^4.0.4 pirates: ^4.0.4 slash: ^3.0.0 write-file-atomic: ^4.0.2 - checksum: d55d604085c157cf5112e165ff5ac1fa788873b3b31265fb4734ca59892ee24e44119964cc47eb6d178dd9512bbb6c576d1e20e51a201ff4e24d31e818a1c92d + checksum: 1635cd66e4b3dbba0689ecefabc6137301756c9c12d1d23e25124dd0dd9b4a6a38653d51e825e90f74faa022152ac1eaf200591fb50417aa7e1f7d1d1c2bc11d languageName: node linkType: hard @@ -882,6 +900,20 @@ __metadata: languageName: node linkType: hard +"@jest/types@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/types@npm:29.6.1" + dependencies: + "@jest/schemas": ^29.6.0 + "@types/istanbul-lib-coverage": ^2.0.0 + "@types/istanbul-reports": ^3.0.0 + "@types/node": "*" + "@types/yargs": ^17.0.8 + chalk: ^4.0.0 + checksum: 89fc1ccf71a84fe0da643e0675b1cfe6a6f19ea72e935b2ab1dbdb56ec547e94433fb59b3536d3832a6e156c077865b7176fe9dae707dab9c3d2f9405ba6233c + languageName: node + linkType: hard + "@jridgewell/gen-mapping@npm:^0.1.0": version: 0.1.1 resolution: "@jridgewell/gen-mapping@npm:0.1.1" @@ -945,7 +977,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.15, @jridgewell/trace-mapping@npm:^0.3.17": +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.18": version: 0.3.18 resolution: "@jridgewell/trace-mapping@npm:0.3.18" dependencies: @@ -965,12 +997,12 @@ __metadata: languageName: node linkType: hard -"@napi-rs/cli@npm:^2.16.1": - version: 2.16.1 - resolution: "@napi-rs/cli@npm:2.16.1" +"@napi-rs/cli@npm:^2.16.2": + version: 2.16.2 + resolution: "@napi-rs/cli@npm:2.16.2" bin: napi: scripts/index.js - checksum: 5f61712cf1a4002b7b9b65bc4a6f2a7df68b197cfc7024c7d28820e3b12b5e9c0baa0d85f262f25dbf928586ce01c5c06837754f9f98ef4ebafa55dd027c6837 + checksum: 98f2905fbc2dbd84417899b12917d1e3b7b02041f8f0ed90138eaf0461a883646c157bd6192c1f6bc8ced6f122b06186183b72d3833810c4df3d7904fe01fc6b languageName: node linkType: hard @@ -1043,6 +1075,13 @@ __metadata: languageName: node linkType: hard +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: 00bd7362a3439021aa1ea51b0e0d0a0e8ca1351a3d54c606b115fdcc49b51b16db6e5f43b4fe7a28c38688523e22a94d49dd31168868b655f0d4d50f032d07a1 + languageName: node + linkType: hard + "@sinonjs/commons@npm:^3.0.0": version: 3.0.0 resolution: "@sinonjs/commons@npm:3.0.0" @@ -1178,13 +1217,13 @@ __metadata: languageName: node linkType: hard -"@types/jest@npm:^29.5.2": - version: 29.5.2 - resolution: "@types/jest@npm:29.5.2" +"@types/jest@npm:^29.5.3": + version: 29.5.3 + resolution: "@types/jest@npm:29.5.3" dependencies: expect: ^29.0.0 pretty-format: ^29.0.0 - checksum: 7d205599ea3cccc262bad5cc173d3242d6bf8138c99458509230e4ecef07a52d6ddcde5a1dbd49ace655c0af51d2dbadef3748697292ea4d86da19d9e03e19c0 + checksum: e36bb92e0b9e5ea7d6f8832baa42f087fc1697f6cd30ec309a07ea4c268e06ec460f1f0cfd2581daf5eff5763475190ec1ad8ac6520c49ccfe4f5c0a48bfa676 languageName: node linkType: hard @@ -1195,10 +1234,10 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^20.3.1": - version: 20.3.1 - resolution: "@types/node@npm:20.3.1" - checksum: 63a393ab6d947be17320817b35d7277ef03728e231558166ed07ee30b09fd7c08861be4d746f10fdc63ca7912e8cd023939d4eab887ff6580ff704ff24ed810c +"@types/node@npm:^20.4.2": + version: 20.4.2 + resolution: "@types/node@npm:20.4.2" + checksum: 99e544ea7560d51f01f95627fc40394c24a13da8f041121a0da13e4ef0a2aa332932eaf9a5e8d0e30d1c07106e96a183be392cbba62e8cf0bf6a085d5c0f4149 languageName: node linkType: hard @@ -1376,11 +1415,11 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^29.5.0": - version: 29.5.0 - resolution: "babel-jest@npm:29.5.0" +"babel-jest@npm:^29.6.1": + version: 29.6.1 + resolution: "babel-jest@npm:29.6.1" dependencies: - "@jest/transform": ^29.5.0 + "@jest/transform": ^29.6.1 "@types/babel__core": ^7.1.14 babel-plugin-istanbul: ^6.1.1 babel-preset-jest: ^29.5.0 @@ -1389,7 +1428,7 @@ __metadata: slash: ^3.0.0 peerDependencies: "@babel/core": ^7.8.0 - checksum: eafb6d37deb71f0c80bf3c80215aa46732153e5e8bcd73f6ff47d92e5c0c98c8f7f75995d0efec6289c371edad3693cd8fa2367b0661c4deb71a3a7117267ede + checksum: bc46cfba468edde91f34a8292501d4448a39fab72d80d7d95f4349feb114fa21becb01def007d6166de7933ab9633bf5b5e1b72ba6ffeaa991f7abf014a2f61d languageName: node linkType: hard @@ -1933,7 +1972,7 @@ __metadata: languageName: node linkType: hard -"expect@npm:^29.0.0, expect@npm:^29.5.0": +"expect@npm:^29.0.0": version: 29.5.0 resolution: "expect@npm:29.5.0" dependencies: @@ -1946,6 +1985,20 @@ __metadata: languageName: node linkType: hard +"expect@npm:^29.6.1": + version: 29.6.1 + resolution: "expect@npm:29.6.1" + dependencies: + "@jest/expect-utils": ^29.6.1 + "@types/node": "*" + jest-get-type: ^29.4.3 + jest-matcher-utils: ^29.6.1 + jest-message-util: ^29.6.1 + jest-util: ^29.6.1 + checksum: 4e712e52c90f6c54e748fd2876be33c43ada6a59088ddf6a1acb08b18b3b97b3a672124684abe32599986d2f2a438d5afad148837ee06ea386d2a4bf0348de78 + languageName: node + linkType: hard + "fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" @@ -2375,48 +2428,48 @@ __metadata: languageName: node linkType: hard -"jest-circus@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-circus@npm:29.5.0" +"jest-circus@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-circus@npm:29.6.1" dependencies: - "@jest/environment": ^29.5.0 - "@jest/expect": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/environment": ^29.6.1 + "@jest/expect": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 dedent: ^0.7.0 is-generator-fn: ^2.0.0 - jest-each: ^29.5.0 - jest-matcher-utils: ^29.5.0 - jest-message-util: ^29.5.0 - jest-runtime: ^29.5.0 - jest-snapshot: ^29.5.0 - jest-util: ^29.5.0 + jest-each: ^29.6.1 + jest-matcher-utils: ^29.6.1 + jest-message-util: ^29.6.1 + jest-runtime: ^29.6.1 + jest-snapshot: ^29.6.1 + jest-util: ^29.6.1 p-limit: ^3.1.0 - pretty-format: ^29.5.0 + pretty-format: ^29.6.1 pure-rand: ^6.0.0 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: 44ff5d06acedae6de6c866e20e3b61f83e29ab94cf9f960826e7e667de49c12dd9ab9dffd7fa3b7d1f9688a8b5bfb1ebebadbea69d9ed0d3f66af4a0ff8c2b27 + checksum: f3e39a74b601929448df92037f0599978d4d7a4b8f636f64e8020533d2d2b2f669d6729c80c6efed69341ca26753e5061e9787a0acd6c70af2127a94375ebb76 languageName: node linkType: hard -"jest-cli@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-cli@npm:29.5.0" +"jest-cli@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-cli@npm:29.6.1" dependencies: - "@jest/core": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/core": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/types": ^29.6.1 chalk: ^4.0.0 exit: ^0.1.2 graceful-fs: ^4.2.9 import-local: ^3.0.2 - jest-config: ^29.5.0 - jest-util: ^29.5.0 - jest-validate: ^29.5.0 + jest-config: ^29.6.1 + jest-util: ^29.6.1 + jest-validate: ^29.6.1 prompts: ^2.0.1 yargs: ^17.3.1 peerDependencies: @@ -2426,34 +2479,34 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: 39897bbbc0f0d8a6b975ab12fd13887eaa28d92e3dee9e0173a5cb913ae8cc2ae46e090d38c6d723e84d9d6724429cd08685b4e505fa447d31ca615630c7dbba + checksum: f5854ffea977b9a12520ea71f8d0cc8a626cbb93d7e1e6eea18a2a1f2b25f70f1b6b08a89f11b4dc7dd36a1776a9ac2cf8ec5c7998086f913ee690c06c07c949 languageName: node linkType: hard -"jest-config@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-config@npm:29.5.0" +"jest-config@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-config@npm:29.6.1" dependencies: "@babel/core": ^7.11.6 - "@jest/test-sequencer": ^29.5.0 - "@jest/types": ^29.5.0 - babel-jest: ^29.5.0 + "@jest/test-sequencer": ^29.6.1 + "@jest/types": ^29.6.1 + babel-jest: ^29.6.1 chalk: ^4.0.0 ci-info: ^3.2.0 deepmerge: ^4.2.2 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-circus: ^29.5.0 - jest-environment-node: ^29.5.0 + jest-circus: ^29.6.1 + jest-environment-node: ^29.6.1 jest-get-type: ^29.4.3 jest-regex-util: ^29.4.3 - jest-resolve: ^29.5.0 - jest-runner: ^29.5.0 - jest-util: ^29.5.0 - jest-validate: ^29.5.0 + jest-resolve: ^29.6.1 + jest-runner: ^29.6.1 + jest-util: ^29.6.1 + jest-validate: ^29.6.1 micromatch: ^4.0.4 parse-json: ^5.2.0 - pretty-format: ^29.5.0 + pretty-format: ^29.6.1 slash: ^3.0.0 strip-json-comments: ^3.1.1 peerDependencies: @@ -2464,7 +2517,7 @@ __metadata: optional: true ts-node: optional: true - checksum: c37c4dab964c54ab293d4e302d40b09687037ac9d00b88348ec42366970747feeaf265e12e3750cd3660b40c518d4031335eda11ac10b70b10e60797ebbd4b9c + checksum: 3a30afeb28cc5658ef9cd95f2551ab8a29641bb6d377eb239cba8e7522eb4611c9a98cdcf173d87f5ad7b5e1ad242c3cd5434a260107bd3c7e8305d05023e05c languageName: node linkType: hard @@ -2480,6 +2533,18 @@ __metadata: languageName: node linkType: hard +"jest-diff@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-diff@npm:29.6.1" + dependencies: + chalk: ^4.0.0 + diff-sequences: ^29.4.3 + jest-get-type: ^29.4.3 + pretty-format: ^29.6.1 + checksum: c6350178ca27d92c7fd879790fb2525470c1ff1c5d29b1834a240fecd26c6904fb470ebddb98dc96dd85389c56c3b50e6965a1f5203e9236d213886ed9806219 + languageName: node + linkType: hard + "jest-docblock@npm:^29.4.3": version: 29.4.3 resolution: "jest-docblock@npm:29.4.3" @@ -2489,30 +2554,30 @@ __metadata: languageName: node linkType: hard -"jest-each@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-each@npm:29.5.0" +"jest-each@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-each@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 chalk: ^4.0.0 jest-get-type: ^29.4.3 - jest-util: ^29.5.0 - pretty-format: ^29.5.0 - checksum: b8b297534d25834c5d4e31e4c687359787b1e402519e42664eb704cc3a12a7a91a017565a75acb02e8cf9afd3f4eef3350bd785276bec0900184641b765ff7a5 + jest-util: ^29.6.1 + pretty-format: ^29.6.1 + checksum: 9d2ea7ed5326ee8c22523b22c66c85fe73754ea39f9b389881956508ee441392c61072a5fbf673e39beddd31d011bb94acae3edc77053ba4f9aa5c060114a5c8 languageName: node linkType: hard -"jest-environment-node@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-environment-node@npm:29.5.0" +"jest-environment-node@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-environment-node@npm:29.6.1" dependencies: - "@jest/environment": ^29.5.0 - "@jest/fake-timers": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/environment": ^29.6.1 + "@jest/fake-timers": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" - jest-mock: ^29.5.0 - jest-util: ^29.5.0 - checksum: 57981911cc20a4219b0da9e22b2e3c9f31b505e43f78e61c899e3227ded455ce1a3a9483842c69cfa4532f02cfb536ae0995bf245f9211608edacfc1e478d411 + jest-mock: ^29.6.1 + jest-util: ^29.6.1 + checksum: a50287e1ff29d131646bd09acc3222ac6ea0ad61e86bf73851d318ef2be0633a421b8558c4a15ddc67e0ffcfc32da7f6a0d8a2ddbfa85453837899dec88d256c languageName: node linkType: hard @@ -2523,11 +2588,11 @@ __metadata: languageName: node linkType: hard -"jest-haste-map@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-haste-map@npm:29.5.0" +"jest-haste-map@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-haste-map@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@types/graceful-fs": ^4.1.3 "@types/node": "*" anymatch: ^3.0.3 @@ -2535,24 +2600,24 @@ __metadata: fsevents: ^2.3.2 graceful-fs: ^4.2.9 jest-regex-util: ^29.4.3 - jest-util: ^29.5.0 - jest-worker: ^29.5.0 + jest-util: ^29.6.1 + jest-worker: ^29.6.1 micromatch: ^4.0.4 walker: ^1.0.8 dependenciesMeta: fsevents: optional: true - checksum: 3828ff7783f168e34be2c63887f82a01634261f605dcae062d83f979a61c37739e21b9607ecb962256aea3fbe5a530a1acee062d0026fcb47c607c12796cf3b7 + checksum: 7c74d5a0f6aafa9f4e60fae7949d4774770c0243fb529c24f2f4c81229db479fa318dc8b81e8d226865aef1d600af10bd8404dd208e802318434b46f75d5d869 languageName: node linkType: hard -"jest-leak-detector@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-leak-detector@npm:29.5.0" +"jest-leak-detector@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-leak-detector@npm:29.6.1" dependencies: jest-get-type: ^29.4.3 - pretty-format: ^29.5.0 - checksum: 0fb845da7ac9cdfc9b3b2e35f6f623a41c547d7dc0103ceb0349013459d00de5870b5689a625e7e37f9644934b40e8f1dcdd5422d14d57470600350364676313 + pretty-format: ^29.6.1 + checksum: 5122d40c248effaede4c9ee3a99046a3f30088fef7bfc4af534678b432455161399357af46deb6423de7e05c6597920d6ee8cd570e26048886a90d541334f8c8 languageName: node linkType: hard @@ -2568,6 +2633,18 @@ __metadata: languageName: node linkType: hard +"jest-matcher-utils@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-matcher-utils@npm:29.6.1" + dependencies: + chalk: ^4.0.0 + jest-diff: ^29.6.1 + jest-get-type: ^29.4.3 + pretty-format: ^29.6.1 + checksum: d2efa6aed6e4820758b732b9fefd315c7fa4508ee690da656e1c5ac4c1a0f4cee5b04c9719ee1fda9aeb883b4209186c145089ced521e715b9fa70afdfa4a9c6 + languageName: node + linkType: hard + "jest-message-util@npm:^29.5.0": version: 29.5.0 resolution: "jest-message-util@npm:29.5.0" @@ -2585,14 +2662,31 @@ __metadata: languageName: node linkType: hard -"jest-mock@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-mock@npm:29.5.0" +"jest-message-util@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-message-util@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@babel/code-frame": ^7.12.13 + "@jest/types": ^29.6.1 + "@types/stack-utils": ^2.0.0 + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + micromatch: ^4.0.4 + pretty-format: ^29.6.1 + slash: ^3.0.0 + stack-utils: ^2.0.3 + checksum: 3e7cb2ff087fe72255292e151d24e4fbb4cd6134885c0a67a4b302f233fe4110bf7580b176f427f05ad7550eb878ed94237209785d09d659a7d171ffa59c068f + languageName: node + linkType: hard + +"jest-mock@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-mock@npm:29.6.1" + dependencies: + "@jest/types": ^29.6.1 "@types/node": "*" - jest-util: ^29.5.0 - checksum: 2a9cf07509948fa8608898c445f04fe4dd6e2049ff431e5531eee028c808d3ba3c67f226ac87b0cf383feaa1055776900d197c895e89783016886ac17a4ff10c + jest-util: ^29.6.1 + checksum: 5e902f1a7eba1eb1a64eb6c19947fe1316834359d9869d0e2644d8979b9cad0465885dc4c9909c471888cddeea835c938cec6263d386d3d1aad720fc74e52ea1 languageName: node linkType: hard @@ -2615,120 +2709,118 @@ __metadata: languageName: node linkType: hard -"jest-resolve-dependencies@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-resolve-dependencies@npm:29.5.0" +"jest-resolve-dependencies@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-resolve-dependencies@npm:29.6.1" dependencies: jest-regex-util: ^29.4.3 - jest-snapshot: ^29.5.0 - checksum: 479d2e5365d58fe23f2b87001e2e0adcbffe0147700e85abdec8f14b9703b0a55758c1929a9989e3f5d5e954fb88870ea4bfa04783523b664562fcf5f10b0edf + jest-snapshot: ^29.6.1 + checksum: cee0a0fe53fd4531492a526b6ccd32377baad1eff6e6c124f04e9dc920219fd23fd39be88bb9551ee68d5fe92a3af627b423c9bc65a2aa0ac8a223c0e74dbbbb languageName: node linkType: hard -"jest-resolve@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-resolve@npm:29.5.0" +"jest-resolve@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-resolve@npm:29.6.1" dependencies: chalk: ^4.0.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.5.0 + jest-haste-map: ^29.6.1 jest-pnp-resolver: ^1.2.2 - jest-util: ^29.5.0 - jest-validate: ^29.5.0 + jest-util: ^29.6.1 + jest-validate: ^29.6.1 resolve: ^1.20.0 resolve.exports: ^2.0.0 slash: ^3.0.0 - checksum: 9a125f3cf323ceef512089339d35f3ee37f79fe16a831fb6a26773ea6a229b9e490d108fec7af334142e91845b5996de8e7cdd85a4d8d617078737d804e29c8f + checksum: 9ce979a0f4a751bea58caea76415112df2a3f4d58e294019872244728aadd001f0ec20c873a3c805dd8f7c762143b3c14d00f87d124ed87c9981fbf8723090ef languageName: node linkType: hard -"jest-runner@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-runner@npm:29.5.0" +"jest-runner@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-runner@npm:29.6.1" dependencies: - "@jest/console": ^29.5.0 - "@jest/environment": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/console": ^29.6.1 + "@jest/environment": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 emittery: ^0.13.1 graceful-fs: ^4.2.9 jest-docblock: ^29.4.3 - jest-environment-node: ^29.5.0 - jest-haste-map: ^29.5.0 - jest-leak-detector: ^29.5.0 - jest-message-util: ^29.5.0 - jest-resolve: ^29.5.0 - jest-runtime: ^29.5.0 - jest-util: ^29.5.0 - jest-watcher: ^29.5.0 - jest-worker: ^29.5.0 + jest-environment-node: ^29.6.1 + jest-haste-map: ^29.6.1 + jest-leak-detector: ^29.6.1 + jest-message-util: ^29.6.1 + jest-resolve: ^29.6.1 + jest-runtime: ^29.6.1 + jest-util: ^29.6.1 + jest-watcher: ^29.6.1 + jest-worker: ^29.6.1 p-limit: ^3.1.0 source-map-support: 0.5.13 - checksum: 437dea69c5dddca22032259787bac74790d5a171c9d804711415f31e5d1abfb64fa52f54a9015bb17a12b858fd0cf3f75ef6f3c9e94255a8596e179f707229c4 + checksum: 0e4dbda26669ae31fee32f8a62b3119bba510f2d17a098d6157b48a73ed2fc9842405bf893f3045c12b3632c7c0e3399fb22684b18ab5566aff4905b26c79a9a languageName: node linkType: hard -"jest-runtime@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-runtime@npm:29.5.0" - dependencies: - "@jest/environment": ^29.5.0 - "@jest/fake-timers": ^29.5.0 - "@jest/globals": ^29.5.0 - "@jest/source-map": ^29.4.3 - "@jest/test-result": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 +"jest-runtime@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-runtime@npm:29.6.1" + dependencies: + "@jest/environment": ^29.6.1 + "@jest/fake-timers": ^29.6.1 + "@jest/globals": ^29.6.1 + "@jest/source-map": ^29.6.0 + "@jest/test-result": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 cjs-module-lexer: ^1.0.0 collect-v8-coverage: ^1.0.0 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-haste-map: ^29.5.0 - jest-message-util: ^29.5.0 - jest-mock: ^29.5.0 + jest-haste-map: ^29.6.1 + jest-message-util: ^29.6.1 + jest-mock: ^29.6.1 jest-regex-util: ^29.4.3 - jest-resolve: ^29.5.0 - jest-snapshot: ^29.5.0 - jest-util: ^29.5.0 + jest-resolve: ^29.6.1 + jest-snapshot: ^29.6.1 + jest-util: ^29.6.1 slash: ^3.0.0 strip-bom: ^4.0.0 - checksum: 7af27bd9d54cf1c5735404cf8d76c6509d5610b1ec0106a21baa815c1aff15d774ce534ac2834bc440dccfe6348bae1885fd9a806f23a94ddafdc0f5bae4b09d + checksum: 7c360c9694467d996f3d6d914fefa0e7bda554adda8c2b9fba31546dba663d71a64eda103ff68120a2422f3c16db8f0bc2c445923fe8fb934f37e53ef74fb429 languageName: node linkType: hard -"jest-snapshot@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-snapshot@npm:29.5.0" +"jest-snapshot@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-snapshot@npm:29.6.1" dependencies: "@babel/core": ^7.11.6 "@babel/generator": ^7.7.2 "@babel/plugin-syntax-jsx": ^7.7.2 "@babel/plugin-syntax-typescript": ^7.7.2 - "@babel/traverse": ^7.7.2 "@babel/types": ^7.3.3 - "@jest/expect-utils": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 - "@types/babel__traverse": ^7.0.6 + "@jest/expect-utils": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 "@types/prettier": ^2.1.5 babel-preset-current-node-syntax: ^1.0.0 chalk: ^4.0.0 - expect: ^29.5.0 + expect: ^29.6.1 graceful-fs: ^4.2.9 - jest-diff: ^29.5.0 + jest-diff: ^29.6.1 jest-get-type: ^29.4.3 - jest-matcher-utils: ^29.5.0 - jest-message-util: ^29.5.0 - jest-util: ^29.5.0 + jest-matcher-utils: ^29.6.1 + jest-message-util: ^29.6.1 + jest-util: ^29.6.1 natural-compare: ^1.4.0 - pretty-format: ^29.5.0 - semver: ^7.3.5 - checksum: fe5df54122ed10eed625de6416a45bc4958d5062b018f05b152bf9785ab7f355dcd55e40cf5da63895bf8278f8d7b2bb4059b2cfbfdee18f509d455d37d8aa2b + pretty-format: ^29.6.1 + semver: ^7.5.3 + checksum: e8f69d1fd4a29d354d4dca9eb2a22674b300f8ef509e4f1e75337c880414a00d2bdc9d3849a6855dbb5a76bfbe74603f33435378a3877e69f0838e4cc2244350 languageName: node linkType: hard @@ -2746,56 +2838,70 @@ __metadata: languageName: node linkType: hard -"jest-validate@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-validate@npm:29.5.0" +"jest-util@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-util@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 + "@types/node": "*" + chalk: ^4.0.0 + ci-info: ^3.2.0 + graceful-fs: ^4.2.9 + picomatch: ^2.2.3 + checksum: fc553556c1350c443449cadaba5fb9d604628e8b5ceb6ceaf4e7e08975b24277d0a14bf2e0f956024e03c23e556fcb074659423422a06fbedf2ab52978697ac7 + languageName: node + linkType: hard + +"jest-validate@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-validate@npm:29.6.1" + dependencies: + "@jest/types": ^29.6.1 camelcase: ^6.2.0 chalk: ^4.0.0 jest-get-type: ^29.4.3 leven: ^3.1.0 - pretty-format: ^29.5.0 - checksum: 43ca5df7cb75572a254ac3e92fbbe7be6b6a1be898cc1e887a45d55ea003f7a112717d814a674d37f9f18f52d8de40873c8f084f17664ae562736c78dd44c6a1 + pretty-format: ^29.6.1 + checksum: d2491f3f33d9bbc2dcaaa6acbff26f257b59c5eeceb65a52a9c1cec2f679b836ec2a4658b7004c0ef9d90cd0d9bd664e41d5ed6900f932bea742dd8e6b85e7f1 languageName: node linkType: hard -"jest-watcher@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-watcher@npm:29.5.0" +"jest-watcher@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-watcher@npm:29.6.1" dependencies: - "@jest/test-result": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/test-result": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 emittery: ^0.13.1 - jest-util: ^29.5.0 + jest-util: ^29.6.1 string-length: ^4.0.1 - checksum: 62303ac7bdc7e61a8b4239a239d018f7527739da2b2be6a81a7be25b74ca769f1c43ee8558ce8e72bb857245c46d6e03af331227ffb00a57280abb2a928aa776 + checksum: 69bd5a602284fdce6eba5486c5c57aca6b511d91cb0907c34c104d6dd931e18ce67baa7f8e280fa473e5d81ea3e7b9e7d94f712c37ab0b3b8cc2aec30676955d languageName: node linkType: hard -"jest-worker@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-worker@npm:29.5.0" +"jest-worker@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-worker@npm:29.6.1" dependencies: "@types/node": "*" - jest-util: ^29.5.0 + jest-util: ^29.6.1 merge-stream: ^2.0.0 supports-color: ^8.0.0 - checksum: 1151a1ae3602b1ea7c42a8f1efe2b5a7bf927039deaa0827bf978880169899b705744e288f80a63603fb3fc2985e0071234986af7dc2c21c7a64333d8777c7c9 + checksum: 0af309ea4db17c4c47e84a9246f907960a15577683c005fdeafc8f3c06bc455136f95a6f28fa2a3e924b767eb4dacd9b40915a7707305f88586f099af3ac27a8 languageName: node linkType: hard -"jest@npm:^29.5.0": - version: 29.5.0 - resolution: "jest@npm:29.5.0" +"jest@npm:^29.6.1": + version: 29.6.1 + resolution: "jest@npm:29.6.1" dependencies: - "@jest/core": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/core": ^29.6.1 + "@jest/types": ^29.6.1 import-local: ^3.0.2 - jest-cli: ^29.5.0 + jest-cli: ^29.6.1 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -2803,7 +2909,7 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: a8ff2eb0f421623412236e23cbe67c638127fffde466cba9606bc0c0553b4c1e5cb116d7e0ef990b5d1712851652c8ee461373b578df50857fe635b94ff455d5 + checksum: 7b8c0ca72f483e00ec19dcf9549f9a9af8ae468ab62925b148d714b58eb52d5fea9a082625193bc833d2d9b64cf65a11f3d37857636c5551af05c10aec4ce71b languageName: node linkType: hard @@ -3206,18 +3312,18 @@ __metadata: version: 0.0.0-use.local resolution: "nodejs-polars@workspace:." dependencies: - "@napi-rs/cli": ^2.16.1 + "@napi-rs/cli": ^2.16.2 "@types/chance": ^1.1.3 - "@types/jest": ^29.5.2 - "@types/node": ^20.3.1 + "@types/jest": ^29.5.3 + "@types/node": ^20.4.2 chance: ^1.1.11 - jest: ^29.5.0 + jest: ^29.6.1 rome: ^12.1.3 source-map-support: ^0.5.21 - ts-jest: ^29.1.0 + ts-jest: ^29.1.1 ts-node: ^10.9.1 typedoc: ^0.24.8 - typescript: 5.1.3 + typescript: 5.1.6 languageName: unknown linkType: soft @@ -3402,6 +3508,17 @@ __metadata: languageName: node linkType: hard +"pretty-format@npm:^29.6.1": + version: 29.6.1 + resolution: "pretty-format@npm:29.6.1" + dependencies: + "@jest/schemas": ^29.6.0 + ansi-styles: ^5.0.0 + react-is: ^18.0.0 + checksum: 6f923a2379a37a425241dc223d76f671c73c4f37dba158050575a54095867d565c068b441843afdf3d7c37bed9df4bbadf46297976e60d4149972b779474203a + languageName: node + linkType: hard + "promise-inflight@npm:^1.0.1": version: 1.0.1 resolution: "promise-inflight@npm:1.0.1" @@ -3578,7 +3695,16 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.x, semver@npm:^7.3.5": +"semver@npm:^6.0.0, semver@npm:^6.3.0": + version: 6.3.0 + resolution: "semver@npm:6.3.0" + bin: + semver: ./bin/semver.js + checksum: 1b26ecf6db9e8292dd90df4e781d91875c0dcc1b1909e70f5d12959a23c7eebb8f01ea581c00783bbee72ceeaad9505797c381756326073850dc36ed284b21b9 + languageName: node + linkType: hard + +"semver@npm:^7.3.5": version: 7.3.8 resolution: "semver@npm:7.3.8" dependencies: @@ -3589,12 +3715,14 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.0.0, semver@npm:^6.3.0": - version: 6.3.0 - resolution: "semver@npm:6.3.0" +"semver@npm:^7.5.3": + version: 7.5.4 + resolution: "semver@npm:7.5.4" + dependencies: + lru-cache: ^6.0.0 bin: - semver: ./bin/semver.js - checksum: 1b26ecf6db9e8292dd90df4e781d91875c0dcc1b1909e70f5d12959a23c7eebb8f01ea581c00783bbee72ceeaad9505797c381756326073850dc36ed284b21b9 + semver: bin/semver.js + checksum: 12d8ad952fa353b0995bf180cdac205a4068b759a140e5d3c608317098b3575ac2f1e09182206bf2eb26120e1c0ed8fb92c48c592f6099680de56bb071423ca3 languageName: node linkType: hard @@ -3876,9 +4004,9 @@ __metadata: languageName: node linkType: hard -"ts-jest@npm:^29.1.0": - version: 29.1.0 - resolution: "ts-jest@npm:29.1.0" +"ts-jest@npm:^29.1.1": + version: 29.1.1 + resolution: "ts-jest@npm:29.1.1" dependencies: bs-logger: 0.x fast-json-stable-stringify: 2.x @@ -3886,7 +4014,7 @@ __metadata: json5: ^2.2.3 lodash.memoize: 4.x make-error: 1.x - semver: 7.x + semver: ^7.5.3 yargs-parser: ^21.0.1 peerDependencies: "@babel/core": ">=7.0.0-beta.0 <8" @@ -3905,7 +4033,7 @@ __metadata: optional: true bin: ts-jest: cli.js - checksum: 535dc42ad523cbe1e387701fb2e448518419b515c082f09b25411f0b3dd0b854cf3e8141c316d6f4b99883aeb4a4f94159cbb1edfb06d7f77ea6229fadb2e1bf + checksum: a8c9e284ed4f819526749f6e4dc6421ec666f20ab44d31b0f02b4ed979975f7580b18aea4813172d43e39b29464a71899f8893dd29b06b4a351a3af8ba47b402 languageName: node linkType: hard @@ -3977,23 +4105,23 @@ __metadata: languageName: node linkType: hard -"typescript@npm:5.1.3": - version: 5.1.3 - resolution: "typescript@npm:5.1.3" +"typescript@npm:5.1.6": + version: 5.1.6 + resolution: "typescript@npm:5.1.6" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: d9d51862d98efa46534f2800a1071a613751b1585dc78884807d0c179bcd93d6e9d4012a508e276742f5f33c480adefc52ffcafaf9e0e00ab641a14cde9a31c7 + checksum: b2f2c35096035fe1f5facd1e38922ccb8558996331405eb00a5111cc948b2e733163cc22fab5db46992aba7dd520fff637f2c1df4996ff0e134e77d3249a7350 languageName: node linkType: hard -"typescript@patch:typescript@5.1.3#~builtin": - version: 5.1.3 - resolution: "typescript@patch:typescript@npm%3A5.1.3#~builtin::version=5.1.3&hash=ad5954" +"typescript@patch:typescript@5.1.6#~builtin": + version: 5.1.6 + resolution: "typescript@patch:typescript@npm%3A5.1.6#~builtin::version=5.1.6&hash=ad5954" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 32a25b2e128a4616f999d4ee502aabb1525d5647bc8955e6edf05d7fbc53af8aa98252e2f6ba80bcedfc0260c982b885f3c09cfac8bb65d2924f3133ad1e1e62 + checksum: 21e88b0a0c0226f9cb9fd25b9626fb05b4c0f3fddac521844a13e1f30beb8f14e90bd409a9ac43c812c5946d714d6e0dee12d5d02dfc1c562c5aacfa1f49b606 languageName: node linkType: hard