From ec361f434550cf4118c1ff7171ab379ca4ce44db Mon Sep 17 00:00:00 2001 From: Patrik Csak
Date: Wed, 24 Jun 2026 11:19:31 -0700
Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=A4=96=20Merge=20PR=20#75154=20Add=20?=
=?UTF-8?q?object-treeify=20by=20@patrik-csak?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
types/object-treeify/.npmignore | 5 ++++
types/object-treeify/index.d.ts | 23 +++++++++++++++
types/object-treeify/object-treeify-tests.ts | 30 ++++++++++++++++++++
types/object-treeify/package.json | 18 ++++++++++++
types/object-treeify/tsconfig.json | 19 +++++++++++++
5 files changed, 95 insertions(+)
create mode 100644 types/object-treeify/.npmignore
create mode 100644 types/object-treeify/index.d.ts
create mode 100644 types/object-treeify/object-treeify-tests.ts
create mode 100644 types/object-treeify/package.json
create mode 100644 types/object-treeify/tsconfig.json
diff --git a/types/object-treeify/.npmignore b/types/object-treeify/.npmignore
new file mode 100644
index 00000000000000..93e307400a5456
--- /dev/null
+++ b/types/object-treeify/.npmignore
@@ -0,0 +1,5 @@
+*
+!**/*.d.ts
+!**/*.d.cts
+!**/*.d.mts
+!**/*.d.*.ts
diff --git a/types/object-treeify/index.d.ts b/types/object-treeify/index.d.ts
new file mode 100644
index 00000000000000..404de2a01666d3
--- /dev/null
+++ b/types/object-treeify/index.d.ts
@@ -0,0 +1,23 @@
+export type RenderFunction = (node: unknown) => unknown;
+
+export type SortFunction = (firstKey: string, secondKey: string) => number;
+
+export interface Options {
+ joined?: boolean;
+ spacerNoNeighbour?: string;
+ spacerNeighbour?: string;
+ keyNoNeighbour?: string;
+ keyNeighbour?: string;
+ separator?: string;
+ renderFn?: RenderFunction;
+ sortFn?: SortFunction | null;
+ breakCircularWith?: string | null;
+}
+
+declare function treeify(tree: object, options: Options & { joined: false }): string[];
+
+declare function treeify(tree: object, options?: Options & { joined?: true }): string;
+
+declare function treeify(tree: object, options: Options): string | string[];
+
+export default treeify;
diff --git a/types/object-treeify/object-treeify-tests.ts b/types/object-treeify/object-treeify-tests.ts
new file mode 100644
index 00000000000000..64b950660d9f8b
--- /dev/null
+++ b/types/object-treeify/object-treeify-tests.ts
@@ -0,0 +1,30 @@
+import treeify, { type Options, type RenderFunction, type SortFunction } from "object-treeify";
+
+const tree = {
+ parent: {
+ child: "value",
+ },
+};
+
+// $ExpectType string
+treeify(tree);
+
+// $ExpectType string[]
+treeify(tree, { joined: false });
+
+const renderFn: RenderFunction = (node) => node;
+const sortFn: SortFunction = (firstKey, secondKey) => firstKey.localeCompare(secondKey);
+const options: Options = {
+ renderFn,
+ sortFn,
+ breakCircularWith: null,
+};
+
+// $ExpectType string | string[]
+treeify(tree, options);
+
+// @ts-expect-error for unsupported option
+treeify(tree, { unknownOption: true });
+
+// @ts-expect-error for invalid return type
+treeify(tree, { sortFn: () => "invalid" });
diff --git a/types/object-treeify/package.json b/types/object-treeify/package.json
new file mode 100644
index 00000000000000..aa22d5e23f82c7
--- /dev/null
+++ b/types/object-treeify/package.json
@@ -0,0 +1,18 @@
+{
+ "private": true,
+ "name": "@types/object-treeify",
+ "version": "5.0.9999",
+ "type": "module",
+ "projects": [
+ "https://github.com/blackflux/object-treeify"
+ ],
+ "devDependencies": {
+ "@types/object-treeify": "workspace:."
+ },
+ "owners": [
+ {
+ "name": "Patrik Csak",
+ "githubUsername": "patrik-csak"
+ }
+ ]
+}
diff --git a/types/object-treeify/tsconfig.json b/types/object-treeify/tsconfig.json
new file mode 100644
index 00000000000000..0c30b9068d4af0
--- /dev/null
+++ b/types/object-treeify/tsconfig.json
@@ -0,0 +1,19 @@
+{
+ "compilerOptions": {
+ "module": "node16",
+ "lib": [
+ "es6"
+ ],
+ "noImplicitAny": true,
+ "noImplicitThis": true,
+ "strictFunctionTypes": true,
+ "strictNullChecks": true,
+ "types": [],
+ "noEmit": true,
+ "forceConsistentCasingInFileNames": true
+ },
+ "files": [
+ "index.d.ts",
+ "object-treeify-tests.ts"
+ ]
+}
From d41b1fdab96f6019d6d86ffdbb375ccdf3afe481 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ren=C3=A9?=