From affdab9a5b56e29ec9e6beeb591f3b06181376a5 Mon Sep 17 00:00:00 2001 From: Jane Chu <7559015+janechu@users.noreply.github.com> Date: Fri, 24 Jan 2025 15:49:48 -0800 Subject: [PATCH] Add scaffolding for a simple binding for tests --- package-lock.json | 9 ++- .../fast-btr/docs/api-report.api.md | 9 +++ packages/web-components/fast-btr/package.json | 80 +++++++++---------- .../web-components/fast-btr/server/README.md | 2 + .../web-components/fast-btr/server/server.ts | 37 +++++++++ .../fast-btr/server/tsconfig.json | 9 +++ .../src/fixtures/binding.fixture.html | 19 +++++ .../src/fixtures/binding.fixture.json | 3 + .../web-components/fast-btr/src/tsconfig.json | 13 +++ 9 files changed, 138 insertions(+), 43 deletions(-) create mode 100644 packages/web-components/fast-btr/docs/api-report.api.md create mode 100644 packages/web-components/fast-btr/server/README.md create mode 100644 packages/web-components/fast-btr/server/server.ts create mode 100644 packages/web-components/fast-btr/server/tsconfig.json create mode 100644 packages/web-components/fast-btr/src/fixtures/binding.fixture.html create mode 100644 packages/web-components/fast-btr/src/fixtures/binding.fixture.json create mode 100644 packages/web-components/fast-btr/src/tsconfig.json diff --git a/package-lock.json b/package-lock.json index 689fcd5e102..1df508ae6e4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5187,6 +5187,7 @@ "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz", "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==", "dev": true, + "license": "MIT", "dependencies": { "serialize-javascript": "^6.0.1", "smob": "^1.0.0", @@ -6342,9 +6343,10 @@ } }, "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "license": "MIT" }, "node_modules/@types/estree-jsx": { "version": "1.0.5", @@ -26421,6 +26423,7 @@ "resolved": "https://registry.npmjs.org/rollup-plugin-filesize/-/rollup-plugin-filesize-10.0.0.tgz", "integrity": "sha512-JAYYhzCcmGjmCzo3LEHSDE3RAPHKIeBdpqRhiyZSv5o/3wFhktUOzYAWg/uUKyEu5dEaVaql6UOmaqHx1qKrZA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.8", "boxen": "^5.0.0", diff --git a/packages/web-components/fast-btr/docs/api-report.api.md b/packages/web-components/fast-btr/docs/api-report.api.md new file mode 100644 index 00000000000..5e12a75bee1 --- /dev/null +++ b/packages/web-components/fast-btr/docs/api-report.api.md @@ -0,0 +1,9 @@ +## API Report File for "@microsoft/fast-btr" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +// (No @packageDocumentation comment for this package) + +``` diff --git a/packages/web-components/fast-btr/package.json b/packages/web-components/fast-btr/package.json index 306e2298db0..fcd2d1d7562 100644 --- a/packages/web-components/fast-btr/package.json +++ b/packages/web-components/fast-btr/package.json @@ -4,61 +4,61 @@ "private": true, "type": "module", "author": { - "name": "Microsoft", - "url": "https://discord.gg/FcSNfg4" + "name": "Microsoft", + "url": "https://discord.gg/FcSNfg4" }, "homepage": "https://www.fast.design/", "license": "MIT", "repository": { - "type": "git", - "url": "git+https://github.com/Microsoft/fast.git", - "directory": "packages/web-components/fast-btr" + "type": "git", + "url": "git+https://github.com/Microsoft/fast.git", + "directory": "packages/web-components/fast-btr" }, "bugs": { - "url": "https://github.com/Microsoft/fast/issues/new/choose" + "url": "https://github.com/Microsoft/fast/issues/new/choose" }, "scripts": { - "clean": "tsc -b --clean src", - "build": "tsc -b src && npm run doc", - "doc": "api-extractor run --local", - "doc:ci": "api-extractor run", - "prepublishOnly": "npm run clean && npm run build", - "build-server": "tsc -b server", - "eslint": "eslint . --ext .ts", - "eslint:fix": "eslint . --ext .ts --fix", - "pretest": "npm run build-server && npm run build", - "prettier:diff": "prettier --config ../../../.prettierrc \"**/*.{ts,html}\" --list-different", - "prettier": "prettier --config ../../../.prettierrc --write \"**/*.{ts,html}\"", - "test": "playwright test --config=playwright.config.cjs", - "test-server": "node server/dist/server.js", - "install-playwright-browsers": "npm run playwright install" + "clean": "tsc -b --clean src", + "build": "tsc -b src && npm run doc", + "doc": "api-extractor run --local", + "doc:ci": "api-extractor run", + "prepublishOnly": "npm run clean && npm run build", + "build-server": "tsc -b server", + "eslint": "eslint . --ext .ts", + "eslint:fix": "eslint . --ext .ts --fix", + "pretest": "npm run build-server && npm run build", + "prettier:diff": "prettier --config ../../../.prettierrc \"**/*.{ts,html}\" --list-different", + "prettier": "prettier --config ../../../.prettierrc --write \"**/*.{ts,html}\"", + "test": "playwright test --config=playwright.config.cjs", + "test-server": "node server/dist/server.js", + "install-playwright-browsers": "npm run playwright install" }, "description": "A package for facilitating rendering FAST Web Components in a non-browser environment.", "exports": { - ".": { - "types": "./dist/dts/index.d.ts", - "default": "./dist/esm/index.js" - }, - "./package.json": "./package.json" + ".": { + "types": "./dist/dts/index.d.ts", + "default": "./dist/esm/index.js" + }, + "./package.json": "./package.json" }, "peerDependencies": { - "@microsoft/fast-element": "^2.0.1" + "@microsoft/fast-element": "^2.0.1" }, "devDependencies": { - "@microsoft/api-extractor": "^7.47.0", - "@microsoft/fast-element": "^2.0.1", - "@playwright/test": "^1.49.0", - "@types/express": "^4.17.21", - "@types/node": "^17.0.17", - "express": "^4.19.2", - "typescript": "~5.3.0" + "@microsoft/api-extractor": "^7.47.0", + "@microsoft/fast-element": "^2.0.1", + "@playwright/test": "^1.49.0", + "@types/express": "^4.17.21", + "@types/node": "^17.0.17", + "express": "^4.19.2", + "typescript": "~5.3.0" }, "beachball": { - "disallowedChangeTypes": [ - "major", - "minor", - "patch" - ], - "tag": "alpha" + "disallowedChangeTypes": [ + "major", + "minor", + "patch" + ], + "tag": "alpha" } - } +} diff --git a/packages/web-components/fast-btr/server/README.md b/packages/web-components/fast-btr/server/README.md new file mode 100644 index 00000000000..c41dd618a80 --- /dev/null +++ b/packages/web-components/fast-btr/server/README.md @@ -0,0 +1,2 @@ +# Server +This project contains the web server that playwright tests are run against. To build, run `npm run build-server`. \ No newline at end of file diff --git a/packages/web-components/fast-btr/server/server.ts b/packages/web-components/fast-btr/server/server.ts new file mode 100644 index 00000000000..e6fd189d47d --- /dev/null +++ b/packages/web-components/fast-btr/server/server.ts @@ -0,0 +1,37 @@ +import fs from "fs"; +import path from "path"; +import { Readable } from "stream"; + +import express, { Request, Response } from "express"; + +const __dirname = path.resolve(path.dirname("")); +const PORT = 8080; + +function handlePathRequest( + mapPath: string, + contentType: string, + req: Request, + res: Response +) { + res.set("Content-Type", contentType); + fs.readFile(path.resolve(__dirname, mapPath), { encoding: "utf8" }, (err, data) => { + const stream = (Readable as any).from(data); + + stream.on("readable", function (this: any) { + while ((data = this.read())) { + res.write(data); + } + }); + stream.on("close", () => res.end()); + stream.on("error", (e: Error) => { + console.error(e); + process.exit(1); + }); + }); +} + +const app = express(); +app.get("/binding", (req: Request, res: Response) => + handlePathRequest("./src/fixtures/binding.fixture.html", "text/html", req, res) +); +app.listen(PORT); diff --git a/packages/web-components/fast-btr/server/tsconfig.json b/packages/web-components/fast-btr/server/tsconfig.json new file mode 100644 index 00000000000..fc7f3f2b6e1 --- /dev/null +++ b/packages/web-components/fast-btr/server/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "composite": true, + "rootDir": ".", + "outDir": "dist" + }, + "references": [{ "path": "../src"}] +} diff --git a/packages/web-components/fast-btr/src/fixtures/binding.fixture.html b/packages/web-components/fast-btr/src/fixtures/binding.fixture.html new file mode 100644 index 00000000000..5a7bf8cc1a5 --- /dev/null +++ b/packages/web-components/fast-btr/src/fixtures/binding.fixture.html @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/packages/web-components/fast-btr/src/fixtures/binding.fixture.json b/packages/web-components/fast-btr/src/fixtures/binding.fixture.json new file mode 100644 index 00000000000..7989c58ec76 --- /dev/null +++ b/packages/web-components/fast-btr/src/fixtures/binding.fixture.json @@ -0,0 +1,3 @@ +{ + "text": "Hello world" +} \ No newline at end of file diff --git a/packages/web-components/fast-btr/src/tsconfig.json b/packages/web-components/fast-btr/src/tsconfig.json new file mode 100644 index 00000000000..ef59f3a4b59 --- /dev/null +++ b/packages/web-components/fast-btr/src/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "composite": true, + "rootDir": ".", + "outDir": "../dist/esm", + "declarationDir": "../dist/dts", + "lib": [ + "dom", + "esnext" + ], + }, + }