esm upgrade for type-traverser

main
Jackson Morgan 4 months ago
parent fd12dba8ae
commit b210f016aa
  1. 114
      package-lock.json
  2. 0
      packages/type-traverser/jest.config.cjs
  3. 20
      packages/type-traverser/package.json
  4. 12
      packages/type-traverser/src/instanceGraph/nodes/InstanceNode.ts
  5. 5
      packages/type-traverser/src/instanceGraph/nodes/InterfaceInstanceNode.ts
  6. 5
      packages/type-traverser/src/instanceGraph/nodes/PrimitiveInstanceNode.ts
  7. 5
      packages/type-traverser/src/instanceGraph/nodes/UnionInstanceNode.ts
  8. 7
      packages/type-traverser/src/instanceGraph/nodes/createInstanceNodeFor.ts
  9. 2
      packages/type-traverser/src/transformer/Transformer.ts
  10. 2
      packages/type-traverser/src/transformer/TransformerReturnTypes.ts
  11. 2
      packages/type-traverser/src/transformer/TransformerReturnTypesDefaults.ts
  12. 2
      packages/type-traverser/src/transformer/Transformers.ts
  13. 2
      packages/type-traverser/src/transformer/transformerSubTraversers/TransformerInterfaceSubTraverser.ts
  14. 7
      packages/type-traverser/src/transformer/transformerSubTraversers/TransformerParentSubTraverser.ts
  15. 2
      packages/type-traverser/src/transformer/transformerSubTraversers/TransformerPrimitiveSubTraverser.ts
  16. 2
      packages/type-traverser/src/transformer/transformerSubTraversers/TransformerUnionSubTraverser.ts
  17. 2
      packages/type-traverser/src/transformer/transformerSubTraversers/util/CircularDependencyAwaiter.ts
  18. 11
      packages/type-traverser/src/transformer/transformerSubTraversers/util/transformerSubTraverserTypes.ts
  19. 4
      packages/type-traverser/src/traverser/Traverser.ts
  20. 2
      packages/type-traverser/src/traverser/TraverserDefinition.ts
  21. 2
      packages/type-traverser/src/visitor/Visitor.ts
  22. 2
      packages/type-traverser/src/visitor/Visitors.ts
  23. 5
      packages/type-traverser/src/visitor/visitorSubTraversers/VisitorInterfaceSubTraverser.ts
  24. 2
      packages/type-traverser/src/visitor/visitorSubTraversers/VisitorParentSubTraverser.ts
  25. 5
      packages/type-traverser/src/visitor/visitorSubTraversers/VisitorPrimitiveSubTraverser.ts
  26. 4
      packages/type-traverser/src/visitor/visitorSubTraversers/VisitorUnionSubTraverser.ts
  27. 7
      packages/type-traverser/src/visitor/visitorSubTraversers/util/visitorSubTraverserTypes.ts
  28. 5
      packages/type-traverser/test/integration/InstanceGraph.test.ts
  29. 2
      packages/type-traverser/test/integration/avatar/AvatarBrokenTransformer.ts
  30. 2
      packages/type-traverser/test/integration/avatar/AvatarErroringTransformer.ts
  31. 2
      packages/type-traverser/test/integration/avatar/AvatarTraverserDefinition.ts
  32. 2
      packages/type-traverser/test/integration/avatar/AvatarTraverserTypes.ts
  33. 7
      packages/type-traverser/tsconfig.build.json
  34. 10
      packages/type-traverser/tsconfig.cjs.json
  35. 11
      packages/type-traverser/tsconfig.esm.json

114
package-lock.json generated

@ -29503,6 +29503,7 @@
},
"devDependencies": {
"@types/uuid": "^8.3.4",
"rimraf": "^6.0.1",
"ts-node": "^10.4.0"
}
},
@ -29513,6 +29514,119 @@
"dev": true,
"license": "MIT"
},
"packages/type-traverser/node_modules/glob": {
"version": "11.0.2",
"resolved": "https://registry.npmjs.org/glob/-/glob-11.0.2.tgz",
"integrity": "sha512-YT7U7Vye+t5fZ/QMkBFrTJ7ZQxInIUjwyAjVj84CYXqgBdv30MFUPGnBR6sQaVq6Is15wYJUsnzTuWaGRBhBAQ==",
"dev": true,
"license": "ISC",
"dependencies": {
"foreground-child": "^3.1.0",
"jackspeak": "^4.0.1",
"minimatch": "^10.0.0",
"minipass": "^7.1.2",
"package-json-from-dist": "^1.0.0",
"path-scurry": "^2.0.0"
},
"bin": {
"glob": "dist/esm/bin.mjs"
},
"engines": {
"node": "20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"packages/type-traverser/node_modules/jackspeak": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.0.tgz",
"integrity": "sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
"@isaacs/cliui": "^8.0.2"
},
"engines": {
"node": "20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"packages/type-traverser/node_modules/lru-cache": {
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz",
"integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==",
"dev": true,
"license": "ISC",
"engines": {
"node": "20 || >=22"
}
},
"packages/type-traverser/node_modules/minimatch": {
"version": "10.0.1",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz",
"integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==",
"dev": true,
"license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": "20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"packages/type-traverser/node_modules/minipass": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
"integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
"dev": true,
"license": "ISC",
"engines": {
"node": ">=16 || 14 >=14.17"
}
},
"packages/type-traverser/node_modules/path-scurry": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz",
"integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
"lru-cache": "^11.0.0",
"minipass": "^7.1.2"
},
"engines": {
"node": "20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"packages/type-traverser/node_modules/rimraf": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz",
"integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==",
"dev": true,
"license": "ISC",
"dependencies": {
"glob": "^11.0.0",
"package-json-from-dist": "^1.0.0"
},
"bin": {
"rimraf": "dist/esm/bin.mjs"
},
"engines": {
"node": "20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"packages/type-traverser/node_modules/uuid": {
"version": "8.3.2",
"license": "MIT",

@ -2,9 +2,22 @@
"name": "@ldo/type-traverser",
"version": "1.0.0-alpha.9",
"description": "An organized way to traverse over objects using typescript",
"main": "dist/index.js",
"type": "module",
"main": "./dist/cjs/index.js",
"module": "./dist/esm/index.js",
"types": "./dist/types/index.d.ts",
"exports": {
".": {
"types": "./dist/types/index.d.ts",
"import": "./dist/esm/index.js",
"require": "./dist/cjs/index.js"
},
"./package.json": "./package.json"
},
"scripts": {
"build": "tsc --project tsconfig.build.json",
"build": "rimraf dist && npm run build:cjs && npm run build:esm",
"build:cjs": "tsc --project tsconfig.cjs.json",
"build:esm": "tsc --project tsconfig.esm.json",
"test": "jest --coverage",
"start": "ts-node ./example/example",
"prepublishOnly": "npm run test && npm run build",
@ -22,6 +35,7 @@
"homepage": "https://github.com/o-development/ldo/tree/main/packages/type=traverser#readme",
"devDependencies": {
"@types/uuid": "^8.3.4",
"rimraf": "^6.0.1",
"ts-node": "^10.4.0"
},
"dependencies": {
@ -35,4 +49,4 @@
"access": "public"
},
"gitHead": "d2364cd2f8da5f0b673b1202d29df5b7c071a17c"
}
}

@ -1,5 +1,5 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import type { TraverserDefinition } from "../...js";
import type { TraverserDefinition } from "../../index.js";
import type { ParentIdentifiers } from "../../instanceGraph/ReverseRelationshipTypes.js";
import type { TraverserTypes } from "../../traverser/TraverserTypes.js";
import type { InstanceGraph } from "../InstanceGraph.js";
@ -31,7 +31,8 @@ export abstract class InstanceNode<
private getParentKey(
identifiers: ParentIdentifiers<Types, TypeName>,
): string {
return identifiers.join("|");
// HACK: any cast. For some reason this doesn't build for ESM
return (identifiers as any).join("|");
}
public _setParent<Identifiers extends ParentIdentifiers<Types, TypeName>>(
@ -40,13 +41,16 @@ export abstract class InstanceNode<
) {
const parentKey = this.getParentKey(identifiers);
if (!this.parents[parentKey]) this.parents[parentKey] = new Set();
this.parents[parentKey].add(parentNode);
// HACK: any cast. For some reason this doesn't build for ESM
this.parents[parentKey].add(parentNode as any);
}
public parent<Identifiers extends ParentIdentifiers<Types, TypeName>>(
...identifiers: Identifiers
): InstanceNodeFor<Types, Identifiers[0]>[] {
return Array.from(this.parents[this.getParentKey(identifiers)] ?? []);
return Array.from(
this.parents[this.getParentKey(identifiers)] ?? [],
) as InstanceNodeFor<Types, Identifiers[0]>[];
}
public allParents(): InstanceNodeFor<

@ -1,6 +1,9 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import type { ApplyArrayAndUndefined } from "../../transformer/TransformerReturnTypesDefaults.js";
import type { ApplyArrayAndUndefined } from "../../transformer/TransformerReturnTypesDefaults.js";
import type {
InterfaceType,
TraverserTypes,
} from "../../traverser/TraverserTypes.js";
import type { InstanceGraph } from "../InstanceGraph.js";
import type { InstanceNodeFor } from "./createInstanceNodeFor.js";
import { InstanceNode } from "./InstanceNode.js";

@ -1,5 +1,8 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
$1$2.js$3
import type {
PrimitiveType,
TraverserTypes,
} from "../../traverser/TraverserTypes.js";
import { InstanceNode } from "./InstanceNode.js";
export class PrimitiveInstanceNode<

@ -1,5 +1,8 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import type { TraverserTypes, UnionType } from "../../traverser/TraverserTypes.js";
import type {
TraverserTypes,
UnionType,
} from "../../traverser/TraverserTypes.js";
import type { InstanceNodeFor } from "./createInstanceNodeFor.js";
import { InstanceNode } from "./InstanceNode.js";

@ -1,5 +1,10 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
$1$2.js$3
import type {
InterfaceType,
PrimitiveType,
TraverserTypes,
UnionType,
} from "../../traverser/TraverserTypes.js";
import type { InstanceGraph } from "../InstanceGraph.js";
import { InterfaceInstanceNode } from "./InterfaceInstanceNode.js";
import { PrimitiveInstanceNode } from "./PrimitiveInstanceNode.js";

@ -12,7 +12,7 @@ import type {
TraverserTypes,
UnionReturnType,
UnionType,
} from "..";
} from "../index.js";
import { transformerParentSubTraverser } from "./transformerSubTraversers/TransformerParentSubTraverser.js";
import { CircularDepenedencyAwaiter } from "./transformerSubTraversers/util/CircularDependencyAwaiter.js";
import { MultiMap } from "./transformerSubTraversers/util/MultiMap.js";

@ -3,7 +3,7 @@ import type {
PrimitiveType,
TraverserTypes,
UnionType,
} from "..";
} from "../index.js";
/* eslint-disable @typescript-eslint/no-explicit-any */
export type InterfaceReturnType<Type extends InterfaceType<any>> = {

@ -10,7 +10,7 @@ import type {
TraverserTypes,
UnionInputReturnType,
UnionType,
} from "..";
} from "../index.js";
export type RecursivelyFindReturnType<
Types extends TraverserTypes<any>,

@ -10,7 +10,7 @@ import type {
TraverserTypes,
UnionReturnType,
UnionType,
} from "..";
} from "../index.js";
import type { InterfaceInstanceNode } from "../instanceGraph/nodes/InterfaceInstanceNode.js";
import type { PrimitiveInstanceNode } from "../instanceGraph/nodes/PrimitiveInstanceNode.js";
import type { UnionInstanceNode } from "../instanceGraph/nodes/UnionInstanceNode.js";

@ -1,5 +1,5 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import type { TraverserTypes } from "../../.js";
import type { TraverserTypes } from "../../index.js";
import type {
InterfaceReturnType,
TransformerReturnTypes,

@ -1,6 +1,9 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
$1$2.js$3
import type { TransformerReturnTypes } from "../TransformerReturnTypes.js";
import type { BaseTraverserTypes, TraverserTypes } from "../../index.js";
import type {
BaseReturnType,
TransformerReturnTypes,
} from "../TransformerReturnTypes.js";
import { transformerInterfaceSubTraverser } from "./TransformerInterfaceSubTraverser.js";
import { transformerPrimitiveSubTraverser } from "./TransformerPrimitiveSubTraverser.js";
import { transformerUnionSubTraverser } from "./TransformerUnionSubTraverser.js";

@ -1,5 +1,5 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import type { TraverserTypes } from "../../.js";
import type { TraverserTypes } from "../../index.js";
import type { PrimitiveInstanceNode } from "../../instanceGraph/nodes/PrimitiveInstanceNode.js";
import type {
PrimitiveReturnType,

@ -1,5 +1,5 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import type { TraverserTypes } from "../../.js";
import type { TraverserTypes } from "../../index.js";
import type { UnionInstanceNode } from "../../instanceGraph/nodes/UnionInstanceNode.js";
import type {
TransformerReturnTypes,

@ -1,4 +1,4 @@
import type { KeyTypes } from "../../../.js";
import type { KeyTypes } from "../../../index.js";
import { MultiMap } from "./MultiMap.js";
import { MultiSet } from "./MultiSet.js";
import type { TransformerSubTraverserExecutingPromises } from "./transformerSubTraverserTypes.js";

@ -1,10 +1,19 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import type { InstanceGraph } from "../../../instanceGraph/InstanceGraph.js";
import type {
BaseTraverserTypes,
TraverserTypes,
} from "../../../traverser/TraverserTypes.js";
import type { InstanceGraph } from "../../../instanceGraph/InstanceGraph.js";
import type { Transformers } from "../../Transformers.js";
import type { CircularDepenedencyAwaiter } from "./CircularDependencyAwaiter.js";
import type { MultiMap } from "./MultiMap.js";
import type { SuperPromise } from "./SuperPromise.js";
import type {
BaseReturnType,
TransformerReturnTypes,
} from "../../TransformerReturnTypes.js";
import type { TraverserDefinitions } from "../../../traverser/TraverserDefinition.js";
import type { KeyTypes } from "../../../UtilTypes.js";
export type TransformerSubTraverser<
Types extends TraverserTypes<any>,

@ -4,8 +4,8 @@ import type {
TraverserDefinitions,
TraverserTypes,
VisitorsInput,
} from "..";
import { Transformer, Visitor } from "..";
} from "../index.js";
import { Transformer, Visitor } from "../index.js";
import type { TransformersInput } from "../transformer/Transformers.js";
export class Traverser<

@ -4,7 +4,7 @@ import type {
TraverserTypes,
UnionType,
PrimitiveType,
} from "..";
} from "../index.js";
export type InterfaceTraverserDefinition<Type extends InterfaceType<any>> = {
kind: "interface";

@ -15,7 +15,7 @@ import type {
UnionVisitorInputDefinition,
Visitors,
VisitorsInput,
} from "../";
} from "../index.js";
import { InstanceGraph } from "../instanceGraph/InstanceGraph.js";
import { MultiSet } from "../transformer/transformerSubTraversers/util/MultiSet.js";
import { visitorParentSubTraverser } from "./visitorSubTraversers/VisitorParentSubTraverser.js";

@ -4,7 +4,7 @@ import type {
PrimitiveType,
TraverserTypes,
UnionType,
} from "../";
} from "../index.js";
import type { InterfaceInstanceNode } from "../instanceGraph/nodes/InterfaceInstanceNode.js";
import type { PrimitiveInstanceNode } from "../instanceGraph/nodes/PrimitiveInstanceNode.js";
import type { UnionInstanceNode } from "../instanceGraph/nodes/UnionInstanceNode.js";

@ -1,5 +1,8 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import type { InterfaceVisitorDefinition, TraverserTypes } from "../../.js";
import type {
InterfaceVisitorDefinition,
TraverserTypes,
} from "../../index.js";
import type { InterfaceInstanceNode } from "../../instanceGraph/nodes/InterfaceInstanceNode.js";
import type { InterfaceTraverserDefinition } from "../../traverser/TraverserDefinition.js";
import type { InterfaceType } from "../../traverser/TraverserTypes.js";

@ -1,5 +1,5 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import type { BaseTraverserTypes, TraverserTypes } from "../../.js";
import type { BaseTraverserTypes, TraverserTypes } from "../../index.js";
import type {
VisitorSubTraverser,
VisitorSubTraverserGlobals,

@ -1,5 +1,8 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import type { PrimitiveVisitorDefinition, TraverserTypes } from "../../.js";
import type {
PrimitiveVisitorDefinition,
TraverserTypes,
} from "../../index.js";
import type { PrimitiveInstanceNode } from "../../instanceGraph/nodes/PrimitiveInstanceNode.js";
import type { PrimitiveType } from "../../traverser/TraverserTypes.js";
import type { VisitorSubTraverserGlobals } from "./util/visitorSubTraverserTypes.js";

@ -1,5 +1,5 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import type { TraverserTypes, UnionVisitorDefinition } from "../../.js";
import type { TraverserTypes, UnionVisitorDefinition } from "../../index.js";
import type { UnionInstanceNode } from "../../instanceGraph/nodes/UnionInstanceNode.js";
import type { UnionTraverserDefinition } from "../../traverser/TraverserDefinition.js";
import type { UnionType } from "../../traverser/TraverserTypes.js";
@ -19,7 +19,7 @@ export async function visitorUnionSubTraverser<
const { traverserDefinition, visitors } = globals;
const definition = traverserDefinition[
itemTypeName
] as UnionTraverserDefinition<Type>;
] as unknown as UnionTraverserDefinition<Type>;
const visitor = visitors[itemTypeName] as unknown as UnionVisitorDefinition<
Types,
TypeName,

@ -1,7 +1,12 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import type { InstanceGraph } from "../../../instanceGraph/InstanceGraph.js";
import type {
BaseTraverserTypes,
TraverserTypes,
} from "../../../traverser/TraverserTypes.js";
import type { InstanceGraph } from "../../../instanceGraph/InstanceGraph.js";
import type { MultiSet } from "../../../transformer/transformerSubTraversers/util/MultiSet.js";
import type { TraverserDefinitions } from "../../../traverser/TraverserDefinition.js";
import type { Visitors } from "../../Visitors.js";
export type VisitorSubTraverser<
Types extends TraverserTypes<any>,

@ -1,4 +1,7 @@
import type { TraverserDefinitions, ValidateTraverserTypes } from "../../src.js";
import type {
TraverserDefinitions,
ValidateTraverserTypes,
} from "../../src/index.js";
import { InstanceGraph } from "../../src/instanceGraph/InstanceGraph.js";
describe("InstanceGraph", () => {

@ -1,4 +1,4 @@
import { Traverser } from "../../../src.js";
import { Traverser } from "../../../src/index.js";
import { avatarTraverserDefinition } from "./AvatarTraverserDefinition.js";
import type { AvatarTraverserTypes } from "./AvatarTraverserTypes.js";

@ -1,4 +1,4 @@
import { Traverser } from "../../../src.js";
import { Traverser } from "../../../src/index.js";
import { avatarTraverserDefinition } from "./AvatarTraverserDefinition.js";
import type { AvatarTraverserTypes } from "./AvatarTraverserTypes.js";

@ -1,4 +1,4 @@
import type { TraverserDefinitions } from "../../../src.js";
import type { TraverserDefinitions } from "../../../src/index.js";
import type { AvatarTraverserTypes, Bender } from "./AvatarTraverserTypes.js";
export const avatarTraverserDefinition: TraverserDefinitions<AvatarTraverserTypes> =

@ -1,4 +1,4 @@
import type { ValidateTraverserTypes } from "../../../src.js";
import type { ValidateTraverserTypes } from "../../../src/index.js";
/**
* Original Type Definition

@ -1,7 +0,0 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"outDir": "./dist",
},
"include": ["./src"]
}

@ -0,0 +1,10 @@
{
"extends": "../../tsconfig.cjs.json",
"compilerOptions": {
"outDir": "./dist/cjs",
"rootDir": "./src"
},
"include": [
"src"
]
}

@ -0,0 +1,11 @@
{
"extends": "../../tsconfig.esm.json",
"compilerOptions": {
"outDir": "./dist/esm",
"rootDir": "./src",
"declarationDir": "./dist/types"
},
"include": [
"src"
]
}
Loading…
Cancel
Save