diff --git a/.swcrc b/.swcrc
new file mode 100644
index 0000000..8c48af1
--- /dev/null
+++ b/.swcrc
@@ -0,0 +1,31 @@
+{
+ "jsc": {
+ "target": "es2022",
+ "parser": {
+ "syntax": "typescript",
+ "tsx": true,
+ "decorators": false,
+ "dynamicImport": false
+ },
+ "transform": {
+ "react": {
+ "pragma": "React.createElement",
+ "pragmaFrag": "React.Fragment",
+ "throwIfNamespace": true,
+ "development": false,
+ "useBuiltins": false,
+ "runtime": "automatic"
+ },
+ "hidden": {
+ "jest": true
+ }
+ }
+ },
+ "module": {
+ "type": "commonjs",
+ "strict": false,
+ "strictMode": true,
+ "lazy": false,
+ "noInterop": false
+ }
+}
\ No newline at end of file
diff --git a/app/root.test.tsx b/app/root.test.tsx
index 4f8297c..6b5812c 100644
--- a/app/root.test.tsx
+++ b/app/root.test.tsx
@@ -2,6 +2,7 @@ import { act, render, screen, waitFor } from '@testing-library/react'
import { createRemixStub, RemixStubProps } from "@remix-run/testing"
import App from './root'
+import React from 'react'
let RemixStub: (props: RemixStubProps) => React.JSX.Element
describe("root", () => {
@@ -20,9 +21,9 @@ describe("root", () => {
describe("version 16.4 or higher", () => {
describe("and tack up now is not already installed on their device", () => {
test("they are instructed to install tack up now", async () => {
- // render()
+ render()
let x: number = 4
- // await waitFor(() => screen.findByText("Whoah"))
+ await waitFor(() => screen.findByText("Whoah"), { timeout: 2000 })
console.log("YES HI")
expect(true).toBe(true)
diff --git a/app/root.tsx b/app/root.tsx
index 30a334e..37e938a 100644
--- a/app/root.tsx
+++ b/app/root.tsx
@@ -5,7 +5,7 @@ import {
Scripts,
ScrollRestoration,
} from "@remix-run/react";
-import React, { useEffect, useRef, useState } from "react";
+import React from "react";
export function Layout({ children }: { children: React.ReactNode }) {
return (
@@ -18,6 +18,7 @@ export function Layout({ children }: { children: React.ReactNode }) {
{children}
+ Whoah
@@ -26,7 +27,6 @@ export function Layout({ children }: { children: React.ReactNode }) {
}
export default function App() {
- return ;
+ return Whoah
}
-() => Promise>
\ No newline at end of file
diff --git a/babel.config.cjs b/babel.config.cjs
deleted file mode 100644
index 8f71005..0000000
--- a/babel.config.cjs
+++ /dev/null
@@ -1,9 +0,0 @@
-module.exports = {
- presets: [
- ['@babel/preset-env', { targets: { node: 'current' } }],
- '@babel/preset-typescript',
- ["@babel/preset-react", {
- "runtime": "automatic"
- }]
- ],
-}
\ No newline at end of file
diff --git a/babel.config.js b/babel.config.js
new file mode 100644
index 0000000..cc12798
--- /dev/null
+++ b/babel.config.js
@@ -0,0 +1,27 @@
+module.exports = {
+ presets: [
+ [
+ "@babel/preset-env",
+ {
+ targets: {
+ node: "18",
+ },
+ },
+ ],
+ "@babel/preset-react",
+ "@babel/preset-typescript",
+ ],
+ plugins: [
+ "@babel/plugin-proposal-export-namespace-from",
+ "@babel/plugin-proposal-optional-chaining",
+ // Strip console.debug calls unless REMIX_DEBUG=true
+ ...(process.env.REMIX_DEBUG === "true"
+ ? []
+ : [
+ [
+ "transform-remove-console",
+ { exclude: ["error", "warn", "log", "info"] },
+ ],
+ ]),
+ ],
+ };
\ No newline at end of file
diff --git a/jest.config.ts b/jest.config.ts
index 50fbaff..81aa973 100644
--- a/jest.config.ts
+++ b/jest.config.ts
@@ -1,19 +1,49 @@
-import type {Config} from 'jest';
+// import type {Config} from 'jest';
-const config: Config = {
- verbose: true,
- testPathIgnorePatterns: ["/node_modules/", "data/"],
- watchPathIgnorePatterns: [
- "data"
- ],
- preset: "ts-jest",
- testEnvironment: "jest-environment-jsdom",
+// const config: Config = {
+// verbose: true,
+// // testPathIgnorePatterns: [ "data/"],
+// watchPathIgnorePatterns: [
+// "data"
+// ],
+// preset: 'ts-jest',
+// testEnvironment: 'jest-environment-jsdom',
+// transform: {
+// "^.+\\.tsx?$": "ts-jest"
+// // process `*.tsx` files with `ts-jest`
+// },
+// resetMocks: true,
+// };
+
+// export default config;
+
+const ignorePatterns = [
+ "\\/build\\/",
+ "\\/coverage\\/",
+ "\\/\\.vscode\\/",
+ "\\/\\.tmp\\/",
+ "\\/\\.cache\\/",
+ "data"
+];
+
+module.exports = {
+ moduleNameMapper: {
+ "^@web3-storage/multipart-parser$": require.resolve(
+ "@web3-storage/multipart-parser"
+ ),
+ },
+ modulePathIgnorePatterns: ignorePatterns,
transform: {
- // '^.+\\.ts?$': 'ts-jest',
- // '^.+\\.tsx?$': 'ts-jest',
- '^.+\\.[t|j]s?$': 'babel-jest',
- '^.+\\.[t|j]sx?$': 'babel-jest',
- }
-};
-
-export default config;
\ No newline at end of file
+ "\\.[jt]sx?$": require.resolve("./transform"),
+ },
+ watchPathIgnorePatterns: [...ignorePatterns, "\\/node_modules\\/"],
+ watchPlugins: [
+ // require.resolve("jest-watch-select-projects"),
+ // require.resolve("jest-watch-typeahead/filename"),
+ // require.resolve("jest-watch-typeahead/testname"),
+ ],
+ displayName: "testing",
+ setupFiles: [],
+ testEnvironment: "jsdom",
+ setupFilesAfterEnv: ["./setupTests.ts", "@testing-library/jest-dom"],
+};
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index d0c1bdf..bbbeeae 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -18,11 +18,15 @@
},
"devDependencies": {
"@babel/core": "^7.24.5",
+ "@babel/plugin-proposal-export-namespace-from": "^7.18.9",
+ "@babel/plugin-proposal-optional-chaining": "^7.21.0",
"@babel/preset-env": "^7.24.5",
"@babel/preset-react": "^7.24.1",
"@babel/preset-typescript": "^7.24.1",
"@remix-run/dev": "^2.9.0",
"@remix-run/testing": "^2.9.1",
+ "@swc/core": "^1.5.7",
+ "@swc/jest": "^0.2.36",
"@testing-library/jest-dom": "^6.4.5",
"@testing-library/react": "^15.0.4",
"@types/express": "^4.17.21",
@@ -33,6 +37,7 @@
"@typescript-eslint/eslint-plugin": "^6.7.4",
"@typescript-eslint/parser": "^6.7.4",
"babel-jest": "^29.7.0",
+ "babel-plugin-transform-remove-console": "^6.9.4",
"chai": "^4.4.1",
"chai-as-promised": "^7.1.1",
"eslint": "^8.38.0",
@@ -680,6 +685,41 @@
"@babel/core": "^7.0.0"
}
},
+ "node_modules/@babel/plugin-proposal-export-namespace-from": {
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz",
+ "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==",
+ "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-export-namespace-from instead.",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.9",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-optional-chaining": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz",
+ "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==",
+ "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
"node_modules/@babel/plugin-proposal-private-property-in-object": {
"version": "7.21.0-placeholder-for-preset-env.2",
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
@@ -2860,6 +2900,18 @@
"integrity": "sha512-wRiUsea88TjKDc4FBEn+sLvIDesp6brMbGWnJGjew2waAc9evdhja/2LvePc898HJbHw0L+MTWy7NhpnELAvLQ==",
"dev": true
},
+ "node_modules/@jest/create-cache-key-function": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz",
+ "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^29.6.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
"node_modules/@jest/environment": {
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz",
@@ -4006,6 +4058,236 @@
"integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==",
"dev": true
},
+ "node_modules/@swc/core": {
+ "version": "1.5.7",
+ "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.5.7.tgz",
+ "integrity": "sha512-U4qJRBefIJNJDRCCiVtkfa/hpiZ7w0R6kASea+/KLp+vkus3zcLSB8Ub8SvKgTIxjWpwsKcZlPf5nrv4ls46SQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "dependencies": {
+ "@swc/counter": "^0.1.2",
+ "@swc/types": "0.1.7"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/swc"
+ },
+ "optionalDependencies": {
+ "@swc/core-darwin-arm64": "1.5.7",
+ "@swc/core-darwin-x64": "1.5.7",
+ "@swc/core-linux-arm-gnueabihf": "1.5.7",
+ "@swc/core-linux-arm64-gnu": "1.5.7",
+ "@swc/core-linux-arm64-musl": "1.5.7",
+ "@swc/core-linux-x64-gnu": "1.5.7",
+ "@swc/core-linux-x64-musl": "1.5.7",
+ "@swc/core-win32-arm64-msvc": "1.5.7",
+ "@swc/core-win32-ia32-msvc": "1.5.7",
+ "@swc/core-win32-x64-msvc": "1.5.7"
+ },
+ "peerDependencies": {
+ "@swc/helpers": "^0.5.0"
+ },
+ "peerDependenciesMeta": {
+ "@swc/helpers": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@swc/core-darwin-arm64": {
+ "version": "1.5.7",
+ "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.5.7.tgz",
+ "integrity": "sha512-bZLVHPTpH3h6yhwVl395k0Mtx8v6CGhq5r4KQdAoPbADU974Mauz1b6ViHAJ74O0IVE5vyy7tD3OpkQxL/vMDQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-darwin-x64": {
+ "version": "1.5.7",
+ "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.5.7.tgz",
+ "integrity": "sha512-RpUyu2GsviwTc2qVajPL0l8nf2vKj5wzO3WkLSHAHEJbiUZk83NJrZd1RVbEknIMO7+Uyjh54hEh8R26jSByaw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-linux-arm-gnueabihf": {
+ "version": "1.5.7",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.5.7.tgz",
+ "integrity": "sha512-cTZWTnCXLABOuvWiv6nQQM0hP6ZWEkzdgDvztgHI/+u/MvtzJBN5lBQ2lue/9sSFYLMqzqff5EHKlFtrJCA9dQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-linux-arm64-gnu": {
+ "version": "1.5.7",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.5.7.tgz",
+ "integrity": "sha512-hoeTJFBiE/IJP30Be7djWF8Q5KVgkbDtjySmvYLg9P94bHg9TJPSQoC72tXx/oXOgXvElDe/GMybru0UxhKx4g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-linux-arm64-musl": {
+ "version": "1.5.7",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.5.7.tgz",
+ "integrity": "sha512-+NDhK+IFTiVK1/o7EXdCeF2hEzCiaRSrb9zD7X2Z7inwWlxAntcSuzZW7Y6BRqGQH89KA91qYgwbnjgTQ22PiQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-linux-x64-gnu": {
+ "version": "1.5.7",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.5.7.tgz",
+ "integrity": "sha512-25GXpJmeFxKB+7pbY7YQLhWWjkYlR+kHz5I3j9WRl3Lp4v4UD67OGXwPe+DIcHqcouA1fhLhsgHJWtsaNOMBNg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-linux-x64-musl": {
+ "version": "1.5.7",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.5.7.tgz",
+ "integrity": "sha512-0VN9Y5EAPBESmSPPsCJzplZHV26akC0sIgd3Hc/7S/1GkSMoeuVL+V9vt+F/cCuzr4VidzSkqftdP3qEIsXSpg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-win32-arm64-msvc": {
+ "version": "1.5.7",
+ "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.5.7.tgz",
+ "integrity": "sha512-RtoNnstBwy5VloNCvmvYNApkTmuCe4sNcoYWpmY7C1+bPR+6SOo8im1G6/FpNem8AR5fcZCmXHWQ+EUmRWJyuA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-win32-ia32-msvc": {
+ "version": "1.5.7",
+ "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.5.7.tgz",
+ "integrity": "sha512-Xm0TfvcmmspvQg1s4+USL3x8D+YPAfX2JHygvxAnCJ0EHun8cm2zvfNBcsTlnwYb0ybFWXXY129aq1wgFC9TpQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-win32-x64-msvc": {
+ "version": "1.5.7",
+ "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.5.7.tgz",
+ "integrity": "sha512-tp43WfJLCsKLQKBmjmY/0vv1slVywR5Q4qKjF5OIY8QijaEW7/8VwPyUyVoJZEnDgv9jKtUTG5PzqtIYPZGnyg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/counter": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz",
+ "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==",
+ "dev": true
+ },
+ "node_modules/@swc/jest": {
+ "version": "0.2.36",
+ "resolved": "https://registry.npmjs.org/@swc/jest/-/jest-0.2.36.tgz",
+ "integrity": "sha512-8X80dp81ugxs4a11z1ka43FPhP+/e+mJNXJSxiNYk8gIX/jPBtY4gQTrKu/KIoco8bzKuPI5lUxjfLiGsfvnlw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/create-cache-key-function": "^29.7.0",
+ "@swc/counter": "^0.1.3",
+ "jsonc-parser": "^3.2.0"
+ },
+ "engines": {
+ "npm": ">= 7.0.0"
+ },
+ "peerDependencies": {
+ "@swc/core": "*"
+ }
+ },
+ "node_modules/@swc/types": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.7.tgz",
+ "integrity": "sha512-scHWahbHF0eyj3JsxG9CFJgFdFNaVQCNAimBlT6PzS3n/HptxqREjsm4OH6AN3lYcffZYSPxXW8ua2BEHp0lJQ==",
+ "dev": true,
+ "dependencies": {
+ "@swc/counter": "^0.1.3"
+ }
+ },
"node_modules/@testing-library/dom": {
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.0.0.tgz",
@@ -5385,6 +5667,12 @@
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
+ "node_modules/babel-plugin-transform-remove-console": {
+ "version": "6.9.4",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz",
+ "integrity": "sha512-88blrUrMX3SPiGkT1GnvVY8E/7A+k6oj3MNvUtTIxJflFzXTw1bHkuJ/y039ouhFMp2prRn5cQGzokViYi1dsg==",
+ "dev": true
+ },
"node_modules/babel-preset-current-node-syntax": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
@@ -10611,6 +10899,12 @@
"node": ">=6"
}
},
+ "node_modules/jsonc-parser": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz",
+ "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==",
+ "dev": true
+ },
"node_modules/jsonfile": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
diff --git a/package.json b/package.json
index c13a3de..8da00f4 100644
--- a/package.json
+++ b/package.json
@@ -2,14 +2,13 @@
"name": "site",
"private": true,
"sideEffects": false,
- "type": "module",
"scripts": {
"build": "remix vite:build",
"dev": "remix vite:dev",
"lint": "eslint --ignore-path .gitignore --cache --cache-location ./node_modules/.cache/eslint .",
"start": "remix-serve ./build/server/index.js",
"typecheck": "tsc",
- "test": "jest --watch --config=jest.config.ts"
+ "test": "jest --watch --config=jest.config.ts "
},
"dependencies": {
"@remix-run/express": "^2.9.1",
@@ -27,8 +26,13 @@
"@babel/preset-env": "^7.24.5",
"@babel/preset-react": "^7.24.1",
"@babel/preset-typescript": "^7.24.1",
+ "@babel/plugin-proposal-export-namespace-from": "^7.18.9",
+ "@babel/plugin-proposal-optional-chaining": "^7.21.0",
+ "babel-plugin-transform-remove-console": "^6.9.4",
"@remix-run/dev": "^2.9.0",
"@remix-run/testing": "^2.9.1",
+ "@swc/core": "^1.5.7",
+ "@swc/jest": "^0.2.36",
"@testing-library/jest-dom": "^6.4.5",
"@testing-library/react": "^15.0.4",
"@types/express": "^4.17.21",
diff --git a/server.test.ts b/server.test.ts
deleted file mode 100644
index e69de29..0000000
diff --git a/setupTests.ts b/setupTests.ts
index 907afda..c5e6107 100644
--- a/setupTests.ts
+++ b/setupTests.ts
@@ -2,5 +2,15 @@
// allows you to do things like:
// expect(element).toHaveTextContent(/react/i)
// learn more: https://github.com/testing-library/jest-dom
-import 'react'
-import '@testing-library/jest-dom'
\ No newline at end of file
+import React from 'react'
+import '@testing-library/jest-dom'
+
+const JSDOMFormData = global.FormData;
+global.React = React
+global.TextDecoder = require("util").TextDecoder;
+global.TextEncoder = require("util").TextEncoder;
+global.ReadableStream = require("stream/web").ReadableStream;
+global.WritableStream = require("stream/web").WritableStream;
+
+require("@remix-run/node").installGlobals({ nativeFetch: true });
+global.FormData = JSDOMFormData;
\ No newline at end of file
diff --git a/transform.js b/transform.js
new file mode 100644
index 0000000..58adca2
--- /dev/null
+++ b/transform.js
@@ -0,0 +1,24 @@
+let { default: babelJest } = require("babel-jest");
+
+let baseConfig = require("./babel.config.js");
+
+/**
+ * Replace `import.meta` with `undefined`
+ *
+ * Needed to support server-side CJS in Jest
+ * that access `@remix-run/react`, where `import.meta.hot`
+ * is used for HMR.
+ */
+let metaPlugin = ({ types: t }) => ({
+ visitor: {
+ MetaProperty: (path) => {
+ path.replaceWith(t.identifier("undefined"));
+ },
+ },
+});
+
+module.exports = babelJest.createTransformer({
+ babelrc: false,
+ ...baseConfig,
+ plugins: [...baseConfig.plugins, metaPlugin],
+});
\ No newline at end of file
diff --git a/tsconfig.json b/tsconfig.json
index 7245f78..3cb0059 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,33 +1,53 @@
-{
- "include": [
- "**/*.ts",
- "**/*.tsx",
- "**/.server/**/*.ts",
- "**/.server/**/*.tsx",
- "**/.client/**/*.ts",
- "**/.client/**/*.tsx"
- ],
- "compilerOptions": {
- "lib": ["DOM", "DOM.Iterable", "ES2022"],
- "types": ["@remix-run/jsdom", "@remix-run/node", "vite/client", "jest", "node"],
- "isolatedModules": true,
- "esModuleInterop": true,
- "jsx": "react-jsx",
- "module": "ESNext",
- "moduleResolution": "Bundler",
- "resolveJsonModule": true,
- "target": "ES2022",
- "strict": true,
- "allowJs": true,
- "skipLibCheck": true,
- "forceConsistentCasingInFileNames": true,
- "baseUrl": ".",
- "paths": {
- "~/*": ["./app/*"]
- },
+// {
+// "include": [
+// "**/*.ts",
+// "**/*.tsx",
+// "**/.server/**/*.ts",
+// "**/.server/**/*.tsx",
+// "**/.client/**/*.ts",
+// "**/.client/**/*.tsx"
+// ],
+// "exclude": ["node_modules"],
+// "compilerOptions": {
+// "lib": ["DOM", "DOM.Iterable", "ES2022"],
+// "types": ["@remix-run/jsdom", "@remix-run/node", "@remix-run/test", "vite/client", "jest", "node"],
+// "isolatedModules": true,
+// "esModuleInterop": true,
+// "jsx": "react-jsx",
+// "moduleResolution": "Bundler",
+// "resolveJsonModule": true,
+// "target": "ES2022",
+// "module": "ES2022",
+// "strict": true,
+// "allowJs": true,
+// "skipLibCheck": true,
+// "forceConsistentCasingInFileNames": true,
+// "baseUrl": ".",
+// "paths": {
+// "~/*": ["./app/*"]
+// },
- // Vite takes care of building everything, not tsc.
- "noEmit": true
+// // Vite takes care of building everything, not tsc.
+// "noEmit": true
+// }
+// }
+{
+ "include": ["**/*.ts", "**/*.tsx"],
+ "exclude": ["dist", "__tests__", "node_modules"],
+ "compilerOptions": {
+ "lib": ["DOM", "DOM.Iterable", "ES2022"],
+ "target": "ES2022",
+ "module": "ES2022",
+ "skipLibCheck": true,
+
+ "moduleResolution": "Bundler",
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "jsx": "react",
+ "declaration": true,
+ "emitDeclarationOnly": true,
+ "rootDir": ".",
+ "outDir": "../../build/node_modules/@remix-run/testing/dist"
}
-}
+}
\ No newline at end of file