From 3ecbbe072ac5a741dbf589a2cbcd1313fc789f02 Mon Sep 17 00:00:00 2001 From: Jackson Morgan Date: Sun, 18 May 2025 15:55:19 -0400 Subject: [PATCH] Before attempted vitest conversion --- jest.esm.config.js | 31 +++++++++++++++++++ packages/connected-solid/babel.config.cjs | 3 ++ packages/connected-solid/babel.config.js | 1 - packages/connected-solid/jest.config.cjs | 9 ++++++ packages/connected-solid/jest.config.js | 10 ------ packages/connected-solid/package.json | 18 +++++++++-- .../requester/requests/createDataResource.ts | 6 +++- .../src/requester/requests/readResource.ts | 5 ++- .../src/requester/requests/uploadResource.ts | 6 +++- .../connected-solid/test/Integration.test.ts | 7 ++++- .../test/RequestBatcher.test.ts | 2 ++ .../connected-solid/test/uriTypes.test.ts | 2 +- packages/connected-solid/tsconfig.build.json | 7 ----- packages/connected-solid/tsconfig.cjs.json | 10 ++++++ packages/connected-solid/tsconfig.esm.json | 14 +++++++++ packages/connected-solid/tsconfig.test.json | 19 ++++++++++++ packages/connected/jest.config.cjs | 14 +++++++++ packages/connected/jest.config.js | 10 ------ packages/connected/package.json | 7 +++-- packages/connected/src/Resource.ts | 4 +-- packages/connected/src/types/ILinkQuery.ts | 4 ++- .../test/.ldo/solidProfile.shapeTypes.ts | 2 +- .../test/LinkTraversalIntegration.test.ts | 6 +++- packages/connected/test/mocks/MockResource.ts | 9 ++++-- packages/connected/tsconfig.cjs.json | 5 +-- packages/connected/tsconfig.esm.json | 6 ++-- packages/test-solid-server/src/authFetch.ts | 11 +++++-- 27 files changed, 176 insertions(+), 52 deletions(-) create mode 100644 jest.esm.config.js create mode 100644 packages/connected-solid/babel.config.cjs delete mode 100644 packages/connected-solid/babel.config.js create mode 100644 packages/connected-solid/jest.config.cjs delete mode 100644 packages/connected-solid/jest.config.js delete mode 100644 packages/connected-solid/tsconfig.build.json create mode 100644 packages/connected-solid/tsconfig.cjs.json create mode 100644 packages/connected-solid/tsconfig.esm.json create mode 100644 packages/connected-solid/tsconfig.test.json create mode 100644 packages/connected/jest.config.cjs delete mode 100644 packages/connected/jest.config.js diff --git a/jest.esm.config.js b/jest.esm.config.js new file mode 100644 index 0000000..496eeb8 --- /dev/null +++ b/jest.esm.config.js @@ -0,0 +1,31 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +// jest.esm.config.js +const path = require("path"); +const monorepoRoot = path.resolve(__dirname); + +module.exports = { + preset: "ts-jest/presets/default-esm", + testEnvironment: "node", + extensionsToTreatAsEsm: [".ts"], + transform: { + "^.+\\.ts$": [ + "ts-jest", + { + useESM: true, + tsconfig: "/tsconfig.esm.json", + }, + ], + }, + moduleNameMapper: { + "^(\\.{1,2}/.*)\\.js$": "$1", + }, + transformIgnorePatterns: ["/node_modules/", "/dist/"], + modulePathIgnorePatterns: ["/dist/"], + testPathIgnorePatterns: ["/node_modules/", "/dist/"], + coveragePathIgnorePatterns: [ + "/node_modules/", + "/dist/", + "/coverage/", + "/test/", + ], +}; diff --git a/packages/connected-solid/babel.config.cjs b/packages/connected-solid/babel.config.cjs new file mode 100644 index 0000000..24d5e76 --- /dev/null +++ b/packages/connected-solid/babel.config.cjs @@ -0,0 +1,3 @@ +module.exports = { + presets: [["@babel/preset-env", { targets: { node: "current" } }]], +}; diff --git a/packages/connected-solid/babel.config.js b/packages/connected-solid/babel.config.js deleted file mode 100644 index 721e8b8..0000000 --- a/packages/connected-solid/babel.config.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = { presets: ["@babel/preset-env"] }; diff --git a/packages/connected-solid/jest.config.cjs b/packages/connected-solid/jest.config.cjs new file mode 100644 index 0000000..774f038 --- /dev/null +++ b/packages/connected-solid/jest.config.cjs @@ -0,0 +1,9 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +// packages/connected-solid/jest.config.cjs +const sharedConfig = require("../../jest.esm.config.js"); + +module.exports = { + ...sharedConfig, + rootDir: "./", + collectCoverageFrom: ["src/**/*.ts", "!src/**/*.d.ts"], +}; diff --git a/packages/connected-solid/jest.config.js b/packages/connected-solid/jest.config.js deleted file mode 100644 index 9bfe763..0000000 --- a/packages/connected-solid/jest.config.js +++ /dev/null @@ -1,10 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-var-requires -const sharedConfig = require("../../jest.config.js"); -module.exports = { - ...sharedConfig, - rootDir: "./", - transform: { - "^.+\\.(ts|tsx)?$": "ts-jest", - "^.+\\.(js|jsx)$": "babel-jest", - }, -}; diff --git a/packages/connected-solid/package.json b/packages/connected-solid/package.json index ef0e1a8..e08b4af 100644 --- a/packages/connected-solid/package.json +++ b/packages/connected-solid/package.json @@ -2,10 +2,22 @@ "name": "@ldo/connected-solid", "version": "1.0.0-alpha.9", "description": "A plugin for @ldo/connected to work with the Solid ecosystem.", - "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", - "watch": "tsc --project tsconfig.build.json --watch", + "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": "cross-env NODE_OPTIONS=--experimental-vm-modules jest --coverage", "test:watch": "jest --watch", "prepublishOnly": "npm run test && npm run build", diff --git a/packages/connected-solid/src/requester/requests/createDataResource.ts b/packages/connected-solid/src/requester/requests/createDataResource.ts index f360290..8ce1748 100644 --- a/packages/connected-solid/src/requester/requests/createDataResource.ts +++ b/packages/connected-solid/src/requester/requests/createDataResource.ts @@ -1,6 +1,5 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { guaranteeFetch } from "../../util/guaranteeFetch.js"; -import { guaranteeFetch } from "../../util/guaranteeFetch.js"; import type { AbsentReadSuccess, Resource } from "@ldo/connected"; import { UnexpectedResourceError } from "@ldo/connected"; import type { HttpErrorResultType } from "../results/error/HttpErrorResult.js"; @@ -17,6 +16,11 @@ import { readResource } from "./readResource.js"; import type { DatasetRequestOptions } from "./requestOptions.js"; import type { SolidLeaf } from "../../resources/SolidLeaf.js"; import type { SolidContainer } from "../../resources/SolidContainer.js"; +import { + addResourceRdfToContainer, + getParentUri, + getSlug, +} from "../../util/rdfUtils.js"; /** * All possible return values when creating and overwriting a container diff --git a/packages/connected-solid/src/requester/requests/readResource.ts b/packages/connected-solid/src/requester/requests/readResource.ts index 8451286..bfe70f2 100644 --- a/packages/connected-solid/src/requester/requests/readResource.ts +++ b/packages/connected-solid/src/requester/requests/readResource.ts @@ -3,7 +3,6 @@ import { HttpErrorResult, type HttpErrorResultType, } from "../results/error/HttpErrorResult.js"; -$1$2.js$3 import type { DatasetRequestOptions } from "./requestOptions.js"; import { BinaryReadSuccess, @@ -18,6 +17,10 @@ import { checkHeadersForRootContainer } from "./checkRootContainer.js"; import { namedNode } from "@rdfjs/data-model"; import type { SolidLeaf } from "../../resources/SolidLeaf.js"; import type { SolidContainer } from "../../resources/SolidContainer.js"; +import { + addRawTurtleToDataset, + addResourceRdfToContainer, +} from "../../util/rdfUtils.js"; /** * All possible return values for reading a leaf diff --git a/packages/connected-solid/src/requester/requests/uploadResource.ts b/packages/connected-solid/src/requester/requests/uploadResource.ts index 2b5ca7f..4f59beb 100644 --- a/packages/connected-solid/src/requester/requests/uploadResource.ts +++ b/packages/connected-solid/src/requester/requests/uploadResource.ts @@ -1,5 +1,4 @@ import { guaranteeFetch } from "../../util/guaranteeFetch.js"; -import { guaranteeFetch } from "../../util/guaranteeFetch.js"; import { UnexpectedResourceError } from "@ldo/connected"; import { HttpErrorResult } from "../results/error/HttpErrorResult.js"; import type { @@ -11,6 +10,11 @@ import { readResource } from "./readResource.js"; import type { DatasetRequestOptions } from "./requestOptions.js"; import type { SolidLeaf } from "../../resources/SolidLeaf.js"; import { CreateSuccess } from "../results/success/CreateSuccess.js"; +import { + addResourceRdfToContainer, + getParentUri, + getSlug, +} from "../../util/rdfUtils.js"; /** * @internal diff --git a/packages/connected-solid/test/Integration.test.ts b/packages/connected-solid/test/Integration.test.ts index 17773b3..3b87c4e 100644 --- a/packages/connected-solid/test/Integration.test.ts +++ b/packages/connected-solid/test/Integration.test.ts @@ -16,7 +16,11 @@ import type { NoncompliantPodError } from "../src/requester/results/error/Noncom import type { GetStorageContainerFromWebIdSuccess } from "../src/requester/results/success/CheckRootContainerSuccess.js"; import { wait } from "./utils.helper.js"; import path from "path"; -import type { GetWacRuleSuccess, UpdateResultError, WacRule } from "../src/index.js"; +import type { + GetWacRuleSuccess, + UpdateResultError, + WacRule, +} from "../src/index.js"; import { createSolidLdoDataset, type SolidConnectedPlugin, @@ -43,6 +47,7 @@ import { import { getStorageFromWebId } from "../src/getStorageFromWebId.js"; import type { ResourceInfo } from "@ldo/test-solid-server"; import { createApp, setupServer } from "@ldo/test-solid-server"; +import { jest } from "@jest/globals"; const ROOT_CONTAINER = "http://localhost:3001/"; const WEB_ID = "http://localhost:3001/example/profile/card#me"; diff --git a/packages/connected-solid/test/RequestBatcher.test.ts b/packages/connected-solid/test/RequestBatcher.test.ts index e382fea..07c59e2 100644 --- a/packages/connected-solid/test/RequestBatcher.test.ts +++ b/packages/connected-solid/test/RequestBatcher.test.ts @@ -1,6 +1,8 @@ import type { WaitingProcess } from "../src/util/RequestBatcher.js"; import { RequestBatcher } from "../src/util/RequestBatcher.js"; +import { jest } from "@jest/globals"; + describe("RequestBatcher", () => { type ReadWaitingProcess = WaitingProcess<[string], string>; diff --git a/packages/connected-solid/test/uriTypes.test.ts b/packages/connected-solid/test/uriTypes.test.ts index 9ca4393..96f6a27 100644 --- a/packages/connected-solid/test/uriTypes.test.ts +++ b/packages/connected-solid/test/uriTypes.test.ts @@ -1,4 +1,4 @@ -import { isSolidLeafUri } from "../src/index.js"; +import { isSolidLeafUri } from "../src/util/isSolidUri"; describe("isLeafUri", () => { it("returns true if the given value is a leaf URI", () => { diff --git a/packages/connected-solid/tsconfig.build.json b/packages/connected-solid/tsconfig.build.json deleted file mode 100644 index 4bd5a5e..0000000 --- a/packages/connected-solid/tsconfig.build.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "./dist", - }, - "include": ["./src"] -} \ No newline at end of file diff --git a/packages/connected-solid/tsconfig.cjs.json b/packages/connected-solid/tsconfig.cjs.json new file mode 100644 index 0000000..affce40 --- /dev/null +++ b/packages/connected-solid/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.cjs.json", + "compilerOptions": { + "outDir": "./dist/cjs", + "rootDir": "./src" + }, + "include": [ + "src" + ] +} \ No newline at end of file diff --git a/packages/connected-solid/tsconfig.esm.json b/packages/connected-solid/tsconfig.esm.json new file mode 100644 index 0000000..7121269 --- /dev/null +++ b/packages/connected-solid/tsconfig.esm.json @@ -0,0 +1,14 @@ +{ + "extends": "../../tsconfig.esm.json", + "compilerOptions": { + "outDir": "./dist/esm", + "rootDir": "./src", + "declarationDir": "./dist/types", + "types": [ + "jest" + ] + }, + "include": [ + "src" + ] +} \ No newline at end of file diff --git a/packages/connected-solid/tsconfig.test.json b/packages/connected-solid/tsconfig.test.json new file mode 100644 index 0000000..07c6c86 --- /dev/null +++ b/packages/connected-solid/tsconfig.test.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "ESNext", + "moduleResolution": "Bundler", + "moduleDetection": "force", + "esModuleInterop": true, + "strict": true, + "resolveJsonModule": true, + "allowJs": false, + "isolatedModules": true, + "sourceMap": true, + "outDir": "./dist" + }, + "include": [ + "src", + "test" + ] +} \ No newline at end of file diff --git a/packages/connected/jest.config.cjs b/packages/connected/jest.config.cjs new file mode 100644 index 0000000..3ad2cee --- /dev/null +++ b/packages/connected/jest.config.cjs @@ -0,0 +1,14 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +// packages/dataset/jest.config.cjs +const sharedConfig = require("../../jest.config.js"); + +module.exports = { + ...sharedConfig, + rootDir: "./", // Sets context for this package + collectCoverageFrom: [ + "src/**/*.ts", + "!src/**/*.d.ts", + // "!src/index.ts", // Optional, if index.ts only re-exports + ], + modulePathIgnorePatterns: ["/dist/"], +}; diff --git a/packages/connected/jest.config.js b/packages/connected/jest.config.js deleted file mode 100644 index ffe0a9e..0000000 --- a/packages/connected/jest.config.js +++ /dev/null @@ -1,10 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-var-requires -const sharedConfig = require("../../jest.config.js"); -module.exports = { - ...sharedConfig, - rootDir: "./", - transform: { - "^.+\\.(ts|tsx)?$": "ts-jest", - }, - coveragePathIgnorePatterns: ["/node_modules/", "/dist/"], -}; diff --git a/packages/connected/package.json b/packages/connected/package.json index ca3f8c6..2de6c8c 100644 --- a/packages/connected/package.json +++ b/packages/connected/package.json @@ -15,9 +15,10 @@ "./package.json": "./package.json" }, "scripts": { - "build": "rimraf dist && tsc --project tsconfig.esm.json && tsc --project tsconfig.cjs.json", - "test": "cross-env NODE_OPTIONS=--experimental-vm-modules jest --coverage", - "test:watch": "jest --watch", + "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", "prepublishOnly": "npm run test && npm run build", "lint": "eslint src/** --fix --no-error-on-unmatched-pattern", "docs": "typedoc --plugin typedoc-plugin-markdown", diff --git a/packages/connected/src/Resource.ts b/packages/connected/src/Resource.ts index 621f358..60b0489 100644 --- a/packages/connected/src/Resource.ts +++ b/packages/connected/src/Resource.ts @@ -1,5 +1,4 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import type TypedEmitter from "typed-emitter"; import type { ConnectedResult } from "./results/ConnectedResult.js"; import type { DatasetChanges } from "@ldo/rdf-utils"; import type { @@ -9,7 +8,8 @@ import type { import type { ResourceError } from "./results/error/ErrorResult.js"; import type { ReadSuccess } from "./results/success/ReadSuccess.js"; -export type ResourceEventEmitter = TypedEmitter<{ +// eslint-disable-next-line @typescript-eslint/consistent-type-imports +export type ResourceEventEmitter = import("typed-emitter").default<{ update: () => void; notification: () => void; }>; diff --git a/packages/connected/src/types/ILinkQuery.ts b/packages/connected/src/types/ILinkQuery.ts index 18f79db..1074b84 100644 --- a/packages/connected/src/types/ILinkQuery.ts +++ b/packages/connected/src/types/ILinkQuery.ts @@ -110,7 +110,7 @@ export interface ILinkQuery> { // }; // }; -// type testReturn = LQReturn; +// type testReturn = ExpandDeep>; // type test2 = LQReturnSubSet; @@ -118,6 +118,8 @@ export interface ILinkQuery> { // type meh = TestLQInput extends true ? true : false; +// const thingInput: TestLQInput = + // const thing = test(SolidProfileShapeShapeType, { // name: true, // knows: { diff --git a/packages/connected/test/.ldo/solidProfile.shapeTypes.ts b/packages/connected/test/.ldo/solidProfile.shapeTypes.ts index 527bd0f..2265cce 100644 --- a/packages/connected/test/.ldo/solidProfile.shapeTypes.ts +++ b/packages/connected/test/.ldo/solidProfile.shapeTypes.ts @@ -1,7 +1,7 @@ import { ShapeType } from "@ldo/ldo"; import { solidProfileSchema } from "./solidProfile.schema.js"; import { solidProfileContext } from "./solidProfile.context.js"; -import { solidProfileSchema } from "./solidProfile.schema.js"; +import { AddressShape, EmailShape, PhoneNumberShape, RSAPublicKeyShape, SolidProfileShape, TrustedAppShape } from "./solidProfile.typings.js"; /** * ============================================================================= diff --git a/packages/connected/test/LinkTraversalIntegration.test.ts b/packages/connected/test/LinkTraversalIntegration.test.ts index 91a7eed..7799451 100644 --- a/packages/connected/test/LinkTraversalIntegration.test.ts +++ b/packages/connected/test/LinkTraversalIntegration.test.ts @@ -1,5 +1,9 @@ import type { ConnectedLdoDataset } from "../src/ConnectedLdoDataset.js"; -import { changeData, commitData, createConnectedLdoDataset } from "../src/index.js"; +import { + changeData, + commitData, + createConnectedLdoDataset, +} from "../src/index.js"; import { solidConnectedPlugin, type SolidConnectedPlugin, diff --git a/packages/connected/test/mocks/MockResource.ts b/packages/connected/test/mocks/MockResource.ts index 4b4c378..c586793 100644 --- a/packages/connected/test/mocks/MockResource.ts +++ b/packages/connected/test/mocks/MockResource.ts @@ -1,7 +1,12 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import EventEmitter from "events"; -import type { ResourceError } from "../../src/index.js"; -import type { ResourceError } from "../../src/index.js"; +import { + Unfetched, + type ConnectedResult, + type Resource, + type ResourceError, + type ResourceEventEmitter, +} from "../../src/index.js"; import type { DatasetChanges } from "@ldo/rdf-utils"; import type { ReadSuccess } from "../../src/results/success/ReadSuccess.js"; import type { UpdateSuccess } from "../../src/results/success/UpdateSuccess.js"; diff --git a/packages/connected/tsconfig.cjs.json b/packages/connected/tsconfig.cjs.json index 3fcb8f9..affce40 100644 --- a/packages/connected/tsconfig.cjs.json +++ b/packages/connected/tsconfig.cjs.json @@ -1,9 +1,10 @@ { "extends": "../../tsconfig.cjs.json", "compilerOptions": { - "outDir": "./dist/cjs" + "outDir": "./dist/cjs", + "rootDir": "./src" }, "include": [ - "./src" + "src" ] } \ No newline at end of file diff --git a/packages/connected/tsconfig.esm.json b/packages/connected/tsconfig.esm.json index df20942..09f99c2 100644 --- a/packages/connected/tsconfig.esm.json +++ b/packages/connected/tsconfig.esm.json @@ -1,9 +1,11 @@ { "extends": "../../tsconfig.esm.json", "compilerOptions": { - "outDir": "./dist/esm" + "outDir": "./dist/esm", + "rootDir": "./src", + "declarationDir": "./dist/types" }, "include": [ - "./src" + "src" ] } \ No newline at end of file diff --git a/packages/test-solid-server/src/authFetch.ts b/packages/test-solid-server/src/authFetch.ts index 7a2838e..bb4697d 100644 --- a/packages/test-solid-server/src/authFetch.ts +++ b/packages/test-solid-server/src/authFetch.ts @@ -12,6 +12,12 @@ const config = { password: "abc123", }; +async function reportError(response: Response) { + if (response.status >= 400) { + console.error(await response.text()); + } +} + async function getAuthorization(port: number): Promise { // First we request the account API controls to find out where we can log in const indexResponse = await fetch(`http://localhost:${port}/.account/`); @@ -27,6 +33,7 @@ async function getAuthorization(port: number): Promise { }), }); // This authorization value will be used to authenticate in the next step + await reportError(response); const result = await response.json(); return result.authorization; } @@ -57,7 +64,7 @@ async function getSecret( webId: `http://localhost:${port}/${config.podName}/profile/card#me`, }), }); - + await reportError(response); // These are the identifier and secret of your token. // Store the secret somewhere safe as there is no way to request it again from the server! // The `resource` value can be used to delete the token at a later point in time. @@ -94,7 +101,7 @@ async function getAccessToken( }, body: "grant_type=client_credentials&scope=webid", }); - + await reportError(response); // This is the Access token that will be used to do an authenticated request to the server. // The JSON also contains an "expires_in" field in seconds, // which you can use to know when you need request a new Access token.