From 81112854718c7431f6ce3ff9b63c7e91614619df Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Wed, 20 Jul 2022 14:28:12 -0700 Subject: [PATCH 01/81] Cadl website skeleton --- common/config/rush/pnpm-lock.yaml | 41 ++++++ packages/website/.eslintignore | 1 + packages/website/.eslintrc.cjs | 16 +++ packages/website/.gitignore | 1 + packages/website/README.md | 3 + packages/website/e2e/playwright.config.ts | 23 ++++ packages/website/e2e/ui.e2e.ts | 31 +++++ packages/website/index.html | 13 ++ packages/website/package.json | 80 +++++++++++ packages/website/samples/http.cadl | 24 ++++ packages/website/samples/rest.cadl | 23 ++++ packages/website/samples/versioning.cadl | 36 +++++ packages/website/src/app.tsx | 5 + packages/website/src/main.tsx | 17 +++ packages/website/src/style.css | 157 ++++++++++++++++++++++ packages/website/src/vite-env.d.ts | 1 + packages/website/tsconfig.json | 18 +++ packages/website/vite.config.ts | 27 ++++ rush.json | 6 + 19 files changed, 523 insertions(+) create mode 100644 packages/website/.eslintignore create mode 100644 packages/website/.eslintrc.cjs create mode 100644 packages/website/.gitignore create mode 100644 packages/website/README.md create mode 100644 packages/website/e2e/playwright.config.ts create mode 100644 packages/website/e2e/ui.e2e.ts create mode 100644 packages/website/index.html create mode 100644 packages/website/package.json create mode 100644 packages/website/samples/http.cadl create mode 100644 packages/website/samples/rest.cadl create mode 100644 packages/website/samples/versioning.cadl create mode 100644 packages/website/src/app.tsx create mode 100644 packages/website/src/main.tsx create mode 100644 packages/website/src/style.css create mode 100644 packages/website/src/vite-env.d.ts create mode 100644 packages/website/tsconfig.json create mode 100644 packages/website/vite.config.ts diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index b3429a2c27..a3f35452f1 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -27,6 +27,7 @@ specifiers: '@rush-temp/spec': file:./projects/spec.tgz '@rush-temp/tmlanguage-generator': file:./projects/tmlanguage-generator.tgz '@rush-temp/versioning': file:./projects/versioning.tgz + '@rush-temp/website': file:./projects/website.tgz '@rushstack/eslint-patch': '1.1.0 ' '@types/babel__code-frame': ~7.0.3 '@types/debounce': ~1.2.1 @@ -126,6 +127,7 @@ dependencies: '@rush-temp/spec': file:projects/spec.tgz '@rush-temp/tmlanguage-generator': file:projects/tmlanguage-generator.tgz '@rush-temp/versioning': file:projects/versioning.tgz + '@rush-temp/website': file:projects/website.tgz '@rushstack/eslint-patch': 1.1.0 '@types/babel__code-frame': 7.0.3 '@types/debounce': 1.2.1 @@ -5140,3 +5142,42 @@ packages: transitivePeerDependencies: - supports-color dev: false + + file:projects/website.tgz: + resolution: {integrity: sha512-kgauzdhS+8h9r690lNvDsl4aB/7R/X5ef8BF80fFutOoGb0UrxhnFmPckpHlyyUrDp6BOF7UKiiS398Q9SaUHQ==, tarball: file:projects/website.tgz} + name: '@rush-temp/website' + version: 0.0.0 + dependencies: + '@playwright/test': 1.22.2 + '@types/debounce': 1.2.1 + '@types/lz-string': 1.3.34 + '@types/mocha': 9.1.1 + '@types/node': 16.0.3 + '@types/prettier': 2.6.0 + '@types/react': 18.0.10 + '@types/react-dom': 18.0.5 + '@vitejs/plugin-react': 1.3.2 + c8: 7.11.3 + cross-env: 7.0.3 + debounce: 1.2.1 + eslint: 8.16.0 + lzutf8: 0.6.2 + mocha: 9.2.2 + mocha-junit-reporter: 2.0.2_mocha@9.2.2 + mocha-multi-reporters: 1.5.1_mocha@9.2.2 + monaco-editor: 0.32.1 + playwright: 1.22.2 + prettier: 2.7.1 + react: 18.0.0 + react-dom: 18.0.0_react@18.0.0 + rimraf: 3.0.2 + typescript: 4.7.2 + vite: 2.9.9 + vscode-languageserver: 7.0.0 + vscode-languageserver-textdocument: 1.0.5 + transitivePeerDependencies: + - less + - sass + - stylus + - supports-color + dev: false diff --git a/packages/website/.eslintignore b/packages/website/.eslintignore new file mode 100644 index 0000000000..fc61e639c5 --- /dev/null +++ b/packages/website/.eslintignore @@ -0,0 +1 @@ +vite.config.ts diff --git a/packages/website/.eslintrc.cjs b/packages/website/.eslintrc.cjs new file mode 100644 index 0000000000..cffbd44f19 --- /dev/null +++ b/packages/website/.eslintrc.cjs @@ -0,0 +1,16 @@ +require("@cadl-lang/eslint-config-cadl/patch/modern-module-resolution"); + +module.exports = { + extends: "@cadl-lang/eslint-config-cadl", + parserOptions: { tsconfigRootDir: __dirname }, + rules: { + "@typescript-eslint/no-misused-promises": [ + "error", + { + checksVoidReturn: { + arguments: false, // too much noise when adding async event listeners + }, + }, + ], + }, +}; diff --git a/packages/website/.gitignore b/packages/website/.gitignore new file mode 100644 index 0000000000..07b2a9c70c --- /dev/null +++ b/packages/website/.gitignore @@ -0,0 +1 @@ +public/libs/ diff --git a/packages/website/README.md b/packages/website/README.md new file mode 100644 index 0000000000..e8c8a13682 --- /dev/null +++ b/packages/website/README.md @@ -0,0 +1,3 @@ +# Cadl Playground + +A web app to play with Cadl in the browser. diff --git a/packages/website/e2e/playwright.config.ts b/packages/website/e2e/playwright.config.ts new file mode 100644 index 0000000000..f8001fb289 --- /dev/null +++ b/packages/website/e2e/playwright.config.ts @@ -0,0 +1,23 @@ +import { type PlaywrightTestConfig } from "@playwright/test"; +import { dirname, resolve } from "path"; +import { fileURLToPath } from "url"; + +const __dirname = dirname(fileURLToPath(import.meta.url)); +const root = resolve(__dirname, ".."); + +const config: PlaywrightTestConfig = { + forbidOnly: !!process.env.CI, + timeout: 120 * 1000, + webServer: { + command: "npm run watch", + port: 3000, + timeout: 120 * 1000, + reuseExistingServer: !process.env.CI, + }, + use: { + baseURL: resolve(root, "dist"), + trace: "retain-on-failure", + }, + testMatch: "*.e2e.ts", +}; +export default config; diff --git a/packages/website/e2e/ui.e2e.ts b/packages/website/e2e/ui.e2e.ts new file mode 100644 index 0000000000..54c2edaea2 --- /dev/null +++ b/packages/website/e2e/ui.e2e.ts @@ -0,0 +1,31 @@ +import { expect, test } from "@playwright/test"; + +const host = `http://localhost:3000`; +const ctrlOrCmd = process.platform === "darwin" ? "Meta" : "Control"; + +test("compiled http sample", async ({ page }) => { + await page.goto(host); + const samplesDropDown = page.locator("select.sample-dropdown"); + await samplesDropDown.selectOption({ label: "Http" }); + const outputContainer = page.locator(".output-content"); + await expect(outputContainer).toContainText(`"title": "Widget Service"`); +}); + +test("shared link works", async ({ page }) => { + // Pass code "op sharedCode(): string;" + await page.goto(`${host}/?c=b3Agc2hhcmVkQ29kZSgpOiBzdHJpbmc7`); + const outputContainer = page.locator(".output-content"); + await expect(outputContainer).toContainText(`"operationId": "sharedCode"`); +}); + +test("save code with ctrl/cmd+S", async ({ page }) => { + await page.goto(host); + const cadlEditorContainer = page.locator("#editor"); + await cadlEditorContainer.click(); + await cadlEditorContainer.type("op sharedCode(): string;"); + await Promise.all([ + // It is important to call waitForNavigation before click to set up waiting. + page.waitForNavigation({ url: `${host}/?c=b3Agc2hhcmVkQ29kZSgpOiBzdHJpbmc7` }), + page.keyboard.press(`${ctrlOrCmd}+KeyS`), + ]); +}); diff --git a/packages/website/index.html b/packages/website/index.html new file mode 100644 index 0000000000..0c29fc6606 --- /dev/null +++ b/packages/website/index.html @@ -0,0 +1,13 @@ + + + + + + + Cadl Playground + + +
+ + + diff --git a/packages/website/package.json b/packages/website/package.json new file mode 100644 index 0000000000..19408adb5c --- /dev/null +++ b/packages/website/package.json @@ -0,0 +1,80 @@ +{ + "name": "@cadl-lang/website", + "private": true, + "version": "0.1.0", + "author": "Microsoft Corporation", + "description": "An app to play with CADL in the browser", + "homepage": "https://github.com/microsoft/cadl", + "readme": "https://github.com/microsoft/cadl/blob/main/README.md", + "license": "MIT", + "repository": { + "type": "git", + "url": "git+https://github.com/Microsoft/cadl.git" + }, + "bugs": { + "url": "https://github.com/Microsoft/cadl/issues" + }, + "keywords": [ + "cadl" + ], + "type": "module", + "main": "dist/src/lib.js", + "engines": { + "node": ">=16.0.0" + }, + "scripts": { + "clean": "rimraf ./dist ./dist-dev ./temp ./cadlContents.json", + "build": "tsc -p . && vite build 2>&1", + "watch": "vite", + "e2e": "cross-env PW_EXPERIMENTAL_TS_ESM=1 playwright test -c e2e ", + "e2e:headed": "cross-env PW_EXPERIMENTAL_TS_ESM=1 playwright test -c e2e --headed", + "test": "npm run e2e", + "test-official": "npm run e2e", + "lint": "eslint . --ext .ts --max-warnings=0", + "lint:fix": "eslint . --fix --ext .ts" + }, + "files": [ + "lib/*.cadl", + "dist/**", + "!dist/test/**" + ], + "dependencies": { + "@cadl-lang/versioning": "~0.6.1", + "@cadl-lang/compiler": "~0.33.0", + "@cadl-lang/rest": "~0.15.1", + "@cadl-lang/openapi3": "~0.13.0", + "@cadl-lang/openapi": "~0.10.1", + "@cadl-lang/html-program-viewer": "~0.2.1", + "@vitejs/plugin-react": "~1.3.1", + "monaco-editor": "~0.32.1", + "prettier": "~2.7.1", + "react-dom": "~18.0.0", + "react": "~18.0.0", + "vite": "^2.9.9", + "vscode-languageserver-textdocument": "~1.0.1", + "vscode-languageserver": "~7.0.0", + "lzutf8": "~0.6.1", + "debounce": "~1.2.1" + }, + "devDependencies": { + "@types/mocha": "~9.1.0", + "@types/node": "~16.0.3", + "@types/prettier": "2.6.0", + "@types/react-dom": "~18.0.1", + "@types/react": "~18.0.5", + "@cadl-lang/eslint-config-cadl": "~0.3.0", + "@cadl-lang/bundler": "~0.1.0", + "eslint": "^8.12.0", + "mocha": "~9.2.0", + "mocha-junit-reporter": "~2.0.2", + "mocha-multi-reporters": "~1.5.1", + "c8": "~7.11.0", + "@playwright/test": "~1.22.2", + "playwright": "~1.22.2", + "rimraf": "~3.0.2", + "cross-env": "~7.0.3", + "typescript": "~4.7.2", + "@types/lz-string": "~1.3.34", + "@types/debounce": "~1.2.1" + } +} diff --git a/packages/website/samples/http.cadl b/packages/website/samples/http.cadl new file mode 100644 index 0000000000..2d7c30f2d6 --- /dev/null +++ b/packages/website/samples/http.cadl @@ -0,0 +1,24 @@ +import "@cadl-lang/rest"; + +@serviceTitle("Widget Service") +namespace DemoService; +using Cadl.Http; + +model Widget { + @key id: string; + weight: int32; + color: "red" | "blue"; +} + +@error +model Error { + code: int32; + message: string; +} + +interface WidgetService { + @get list(): Widget[] | Error; + @route("widgets/{id}") @get read(@path id: string): Widget | Error; + @post create(@body body: Widget): Widget | Error; + @route("customGet") @get customGet(): Widget | Error; +} diff --git a/packages/website/samples/rest.cadl b/packages/website/samples/rest.cadl new file mode 100644 index 0000000000..32a68a4df8 --- /dev/null +++ b/packages/website/samples/rest.cadl @@ -0,0 +1,23 @@ +import "@cadl-lang/rest"; + +@serviceTitle("Widget Service") +namespace DemoService; + +using Cadl.Http; +using Cadl.Rest; + +model Widget { + @key id: string; + weight: int32; + color: "red" | "blue"; +} + +@error +model Error { + code: int32; + message: string; +} + +interface WidgetService extends Resource.ResourceOperations { + @get @route("customGet") customGet(): Widget; +} diff --git a/packages/website/samples/versioning.cadl b/packages/website/samples/versioning.cadl new file mode 100644 index 0000000000..40ce2c05e1 --- /dev/null +++ b/packages/website/samples/versioning.cadl @@ -0,0 +1,36 @@ +import "@cadl-lang/rest"; +import "@cadl-lang/versioning"; + +using Cadl.Versioning; + +@versioned(Versions) +@serviceTitle("Widget Service") +namespace DemoService; + +enum Versions { + "v1", + "v2", +} + +using Cadl.Http; +using Cadl.Rest; + +model Widget { + @key id: string; + weight: int32; + color: "red" | "blue"; + @added(Versions.v2) name: string; +} + +@error +model Error { + code: int32; + message: string; +} + +interface WidgetService extends Resource.ResourceOperations { + @added(Versions.v2) + @get + @route("customGet") + customGet(): Widget; +} diff --git a/packages/website/src/app.tsx b/packages/website/src/app.tsx new file mode 100644 index 0000000000..a53659585f --- /dev/null +++ b/packages/website/src/app.tsx @@ -0,0 +1,5 @@ +import { FunctionComponent } from "react"; + +export const App: FunctionComponent = () => { + return <>Cadl Website; +}; diff --git a/packages/website/src/main.tsx b/packages/website/src/main.tsx new file mode 100644 index 0000000000..8c86cfd5b1 --- /dev/null +++ b/packages/website/src/main.tsx @@ -0,0 +1,17 @@ +import editorWorker from "monaco-editor/esm/vs/editor/editor.worker?worker"; +import jsonWorker from "monaco-editor/esm/vs/language/json/json.worker?worker"; +import { createRoot } from "react-dom/client"; +import { App } from "./app"; +import "./style.css"; + +(self as any).MonacoEnvironment = { + getWorker(_: any, label: string) { + if (label === "json") { + return new jsonWorker(); + } + return new editorWorker(); + }, +}; + +const root = createRoot(document.getElementById("root")!); +root.render(); diff --git a/packages/website/src/style.css b/packages/website/src/style.css new file mode 100644 index 0000000000..202324a4b6 --- /dev/null +++ b/packages/website/src/style.css @@ -0,0 +1,157 @@ +body { + margin: 0; + padding: 0; + font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; + overflow: hidden; +} + +* { + box-sizing: content-box; +} + +#grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + width: 100vw; + height: 100vh; + overflow: hidden; +} + +#grid > .footer { + grid-column-start: 1; + grid-column-end: 3; + grid-row: 3; + background-color: #007acc; + display: flex; + font-size: 14px; +} + +#grid > .footer.in-pr { + background-color: #ce662a; +} + +#grid > .footer > .item { + text-decoration: none; + color: #fefefe; + border-right: 1px solid #d5d5d5; + padding: 0 5px; +} +#grid > .footer > a.item:hover { + background-color: #063a5c; +} +#grid > .footer.in-pr > a.item:hover { + background-color: #b46e45; +} + +#commandBar > * { + padding: 2px 2px; +} + +#editorContainer { + grid-column: 1; + grid-row: 2; + overflow: hidden; +} + +#editor { + width: 100%; + height: 100%; + overflow: hidden; +} + +.output-panel { + grid-column: 2; + grid-row: 2; + overflow: hidden; + display: flex; + flex-direction: column; + border-left: 1px solid #c5c5c5; +} + +.output-tabs { + display: flex; + border-bottom: 1px solid #c5c5c5; +} + +.output-tabs a { + height: 26px; + padding: 0 5px; + border-right: 1px solid #ccc; + border-top: none; + border-bottom: none; + color: #000; + text-decoration: none; + cursor: pointer; +} + +.output-tabs a.active { + font-weight: bold; + background-color: #eee; +} + +.output-tabs .middle-spacer { + flex: 1; + border-right: 1px solid #ccc; +} + +.output-content { + width: 100%; + height: 100%; + overflow: hidden; +} + +.monaco-editor-container { + width: 100%; + height: 100%; + overflow: hidden; +} + +.type-graph-container { + height: 100%; + overflow: scroll; +} + +.error-tab-count { + background-color: #cc2222; + color: #f5f5f5; + padding: 0 5px; + border-radius: 20px; +} + +.diagnostic-list { + height: 100%; + overflow: auto; +} + +.diagnostic-item { + display: flex; +} +.diagnostic-item-severity { + padding: 0 5px; +} +.diagnostic-item-severity.error { + color: #cc2222; +} +.diagnostic-item-severity.warning { + color: orange; +} +.diagnostic-item-code { + padding: 0 5px; + color: #333333; +} +.diagnostic-item-message { + padding: 0 5px; +} + +.center { + display: flex; + height: 100%; + align-items: center; + justify-content: center; +} + +.internal-server-error { + border: 1px solid #cc2222; + padding: 10px; + margin: 20px; +} diff --git a/packages/website/src/vite-env.d.ts b/packages/website/src/vite-env.d.ts new file mode 100644 index 0000000000..11f02fe2a0 --- /dev/null +++ b/packages/website/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/packages/website/tsconfig.json b/packages/website/tsconfig.json new file mode 100644 index 0000000000..b642a9baff --- /dev/null +++ b/packages/website/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../tsconfig.json", + "references": [ + { "path": "../compiler/tsconfig.json" }, + { "path": "../rest/tsconfig.json" }, + { "path": "../openapi/tsconfig.json" }, + { "path": "../openapi3/tsconfig.json" } + ], + "compilerOptions": { + "outDir": "dist-dev", + "rootDir": ".", + "tsBuildInfoFile": "temp/tsconfig.tsbuildinfo", + "types": ["node", "mocha"], + "skipLibCheck": true, + "jsx": "react-jsx" + }, + "include": ["src/**/*.ts", "src/**/*.tsx", "test/**/*.ts", "e2e/**/*.ts", "vite.config.ts"] +} diff --git a/packages/website/vite.config.ts b/packages/website/vite.config.ts new file mode 100644 index 0000000000..7d5b312e7d --- /dev/null +++ b/packages/website/vite.config.ts @@ -0,0 +1,27 @@ +import react from "@vitejs/plugin-react"; +import { defineConfig } from "vite"; + +export default defineConfig({ + base: "./", + build: { + target: "esnext", + chunkSizeWarningLimit: 4000, + }, + assetsInclude: [/\.cadl$/], + optimizeDeps: { + exclude: ["node-fetch"], + }, + plugins: [ + react(), + // playgroundManifestPlugin(config), + // cadlBundlePlugin({ + // folderName: "libs", + // libraries: config.libraries, + // }), + ], + server: { + fs: { + strict: false, + }, + }, +}); diff --git a/rush.json b/rush.json index 961bbec588..8c0a55ce66 100644 --- a/rush.json +++ b/rush.json @@ -156,6 +156,12 @@ "reviewCategory": "production", "shouldPublish": false }, + { + "packageName": "@cadl-lang/website", + "projectFolder": "packages/website", + "reviewCategory": "production", + "shouldPublish": false + }, { "packageName": "@cadl-lang/bundler", "projectFolder": "packages/bundler", From fafc0cc6bdc05da1c6b25d209c1636cb93e1ac32 Mon Sep 17 00:00:00 2001 From: Descartes Date: Tue, 2 Aug 2022 16:09:56 -0700 Subject: [PATCH 02/81] Remove style.css file: irrelevant to the website. --- packages/website/src/style.css | 157 --------------------------------- 1 file changed, 157 deletions(-) delete mode 100644 packages/website/src/style.css diff --git a/packages/website/src/style.css b/packages/website/src/style.css deleted file mode 100644 index 202324a4b6..0000000000 --- a/packages/website/src/style.css +++ /dev/null @@ -1,157 +0,0 @@ -body { - margin: 0; - padding: 0; - font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; - overflow: hidden; -} - -* { - box-sizing: content-box; -} - -#grid { - display: grid; - grid-template-columns: repeat(2, 1fr); - width: 100vw; - height: 100vh; - overflow: hidden; -} - -#grid > .footer { - grid-column-start: 1; - grid-column-end: 3; - grid-row: 3; - background-color: #007acc; - display: flex; - font-size: 14px; -} - -#grid > .footer.in-pr { - background-color: #ce662a; -} - -#grid > .footer > .item { - text-decoration: none; - color: #fefefe; - border-right: 1px solid #d5d5d5; - padding: 0 5px; -} -#grid > .footer > a.item:hover { - background-color: #063a5c; -} -#grid > .footer.in-pr > a.item:hover { - background-color: #b46e45; -} - -#commandBar > * { - padding: 2px 2px; -} - -#editorContainer { - grid-column: 1; - grid-row: 2; - overflow: hidden; -} - -#editor { - width: 100%; - height: 100%; - overflow: hidden; -} - -.output-panel { - grid-column: 2; - grid-row: 2; - overflow: hidden; - display: flex; - flex-direction: column; - border-left: 1px solid #c5c5c5; -} - -.output-tabs { - display: flex; - border-bottom: 1px solid #c5c5c5; -} - -.output-tabs a { - height: 26px; - padding: 0 5px; - border-right: 1px solid #ccc; - border-top: none; - border-bottom: none; - color: #000; - text-decoration: none; - cursor: pointer; -} - -.output-tabs a.active { - font-weight: bold; - background-color: #eee; -} - -.output-tabs .middle-spacer { - flex: 1; - border-right: 1px solid #ccc; -} - -.output-content { - width: 100%; - height: 100%; - overflow: hidden; -} - -.monaco-editor-container { - width: 100%; - height: 100%; - overflow: hidden; -} - -.type-graph-container { - height: 100%; - overflow: scroll; -} - -.error-tab-count { - background-color: #cc2222; - color: #f5f5f5; - padding: 0 5px; - border-radius: 20px; -} - -.diagnostic-list { - height: 100%; - overflow: auto; -} - -.diagnostic-item { - display: flex; -} -.diagnostic-item-severity { - padding: 0 5px; -} -.diagnostic-item-severity.error { - color: #cc2222; -} -.diagnostic-item-severity.warning { - color: orange; -} -.diagnostic-item-code { - padding: 0 5px; - color: #333333; -} -.diagnostic-item-message { - padding: 0 5px; -} - -.center { - display: flex; - height: 100%; - align-items: center; - justify-content: center; -} - -.internal-server-error { - border: 1px solid #cc2222; - padding: 10px; - margin: 20px; -} From 243fce2c848a5751927e6fda1ecc2d93e02c522d Mon Sep 17 00:00:00 2001 From: Descartes Date: Tue, 2 Aug 2022 16:28:32 -0700 Subject: [PATCH 03/81] Add BrowserRouter and routes to pages/containers --- packages/website/src/app.tsx | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/website/src/app.tsx b/packages/website/src/app.tsx index a53659585f..760e4f1c16 100644 --- a/packages/website/src/app.tsx +++ b/packages/website/src/app.tsx @@ -1,5 +1,21 @@ import { FunctionComponent } from "react"; +import {Home, Blog, Community, Docs, Download, Playground, PageNotFound} from "./containers"; +import { BrowserRouter, Routes, Route} from "react-router-dom"; +import "./app.css"; export const App: FunctionComponent = () => { - return <>Cadl Website; + return ( + + + }/> + }/> + }/> + }/> + }/> + }/> + }/> + + + ); }; +export default App From d9b4e95daa1823bbf21eaf6d7e835e3f52a99e14 Mon Sep 17 00:00:00 2001 From: Descartes Date: Tue, 2 Aug 2022 16:29:14 -0700 Subject: [PATCH 04/81] Add global App css for the website. --- packages/website/src/app.css | 45 ++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 packages/website/src/app.css diff --git a/packages/website/src/app.css b/packages/website/src/app.css new file mode 100644 index 0000000000..aa0849eabd --- /dev/null +++ b/packages/website/src/app.css @@ -0,0 +1,45 @@ +* { + box-sizing: border-box; + scroll-behavior: smooth; +} + +body { + margin: 0; + padding: 0; + font-family: var(--font-family); + overflow: hidden; +} + +.app_version{ + background: var(--version_bar-color); + color: var(--text-in-main-color); + text-align: center; +} + +:root { + --font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;; + --main-color: #0B6A0B; + --text-in-main-color:#ffffff; + --tab-inner-color: #095A09; + --version_bar-color: #013301; +} + +html { + height: 100%; +} + + +/* Extra small devices (phones, 600px and down) */ +@media only screen and (max-width: 600px) {} + +/* Small devices (portrait tablets and large phones, 600px and up) */ +@media only screen and (min-width: 600px) {} + +/* Medium devices (landscape tablets, 768px and up) */ +@media only screen and (min-width: 768px) {} + +/* Large devices (laptops/desktops, 992px and up) */ +@media only screen and (min-width: 992px) {} + +/* Extra large devices (large laptops and desktops, 1200px and up) */ +@media only screen and (min-width: 1200px) {} From 9f1522b3a04c02b298b144db2c093fcb0f907d92 Mon Sep 17 00:00:00 2001 From: Descartes Date: Tue, 2 Aug 2022 16:33:00 -0700 Subject: [PATCH 05/81] Add global css to main.tsx --- packages/website/src/main.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/website/src/main.tsx b/packages/website/src/main.tsx index 8c86cfd5b1..0798e19096 100644 --- a/packages/website/src/main.tsx +++ b/packages/website/src/main.tsx @@ -2,7 +2,8 @@ import editorWorker from "monaco-editor/esm/vs/editor/editor.worker?worker"; import jsonWorker from "monaco-editor/esm/vs/language/json/json.worker?worker"; import { createRoot } from "react-dom/client"; import { App } from "./app"; -import "./style.css"; +import "./app.css"; + (self as any).MonacoEnvironment = { getWorker(_: any, label: string) { @@ -14,4 +15,4 @@ import "./style.css"; }; const root = createRoot(document.getElementById("root")!); -root.render(); +root.render(); From 11f46bfcc2deae8c38fa36054cd9378a51a1520a Mon Sep 17 00:00:00 2001 From: Descartes Date: Tue, 2 Aug 2022 16:34:21 -0700 Subject: [PATCH 06/81] Add navigation bar. --- .../website/src/components/navbar/navbar.tsx | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 packages/website/src/components/navbar/navbar.tsx diff --git a/packages/website/src/components/navbar/navbar.tsx b/packages/website/src/components/navbar/navbar.tsx new file mode 100644 index 0000000000..1cc67a6312 --- /dev/null +++ b/packages/website/src/components/navbar/navbar.tsx @@ -0,0 +1,27 @@ +import { FunctionComponent } from "react"; +import { SearchBox } from '@fluentui/react/lib/SearchBox'; +import "./navbar.css"; +import {Link} from "react-router-dom"; + +export const Navbar: FunctionComponent = () => { + return ( +
+
+

Cadl

+
+
+
    +
  • Download
  • +
  • Docs
  • +
  • Blog
  • +
  • Playground
  • +
  • Community
  • +
+
+
+ +
+
+ ); +}; +export default Navbar From e3ff9da2604f0592a3607155d3547c5c3e8194dc Mon Sep 17 00:00:00 2001 From: Descartes Date: Tue, 2 Aug 2022 16:42:07 -0700 Subject: [PATCH 07/81] Add navigation bar css --- .../website/src/components/navbar/navbar.css | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 packages/website/src/components/navbar/navbar.css diff --git a/packages/website/src/components/navbar/navbar.css b/packages/website/src/components/navbar/navbar.css new file mode 100644 index 0000000000..d139805c48 --- /dev/null +++ b/packages/website/src/components/navbar/navbar.css @@ -0,0 +1,67 @@ +.navbar { + display: flex; + justify-content: space-between; + align-items: center; + height: 3rem; + background: var(--main-color); +} + +.navbar-search_box { + background: var(--main-color); +} + +.navbar-search_box { + display: block; + float: right; +} + +.navbar-logo { + margin-right: 2rem; + float: left; +} + +.navbar-logo a { + color: white; + text-decoration: none; +} + +.navbar-links { + display: flex; + flex-direction: row; +} + +.navbar-sign { + display: flex; + justify-content: flex-end; + float: inline-start; +} + +.navbar-links p, +.navbar-sign p{ + font-weight: 500; + font-size: 18px; + line-height: 25px; + text-transform: capitalize; + margin: 0 1rem; + cursor: pointer; +} + +.navbar-links ul li{ + list-style: none; + font-weight: 500; + font-size: 18px; + line-height: 25px; + text-transform: capitalize; + display: inline; + margin: 0 1rem; + cursor: pointer; +} + +.navbar-links +a{ + text-decoration: none; + color: white; +} + + + From 1ffdbf4082aab0850fef5781b449a2c480718ed6 Mon Sep 17 00:00:00 2001 From: Descartes Date: Tue, 2 Aug 2022 16:51:29 -0700 Subject: [PATCH 08/81] Add footer --- .../website/src/components/footer/footer.tsx | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 packages/website/src/components/footer/footer.tsx diff --git a/packages/website/src/components/footer/footer.tsx b/packages/website/src/components/footer/footer.tsx new file mode 100644 index 0000000000..9455a17f30 --- /dev/null +++ b/packages/website/src/components/footer/footer.tsx @@ -0,0 +1,54 @@ +import { FunctionComponent } from "react"; +import "./footer.css"; + +export const Footer: FunctionComponent = () => { + return ( +
+
+
+
+

Cadl

+

Made with ♥ in Redmond, Boston, SF & Dublin

+
+ +
+ + + + +
+
+ ); +}; +export default Footer From fb8d95e0c0884f84466ed4a3b01e49998550fb40 Mon Sep 17 00:00:00 2001 From: Descartes Date: Tue, 2 Aug 2022 16:51:49 -0700 Subject: [PATCH 09/81] Add footer css --- .../website/src/components/footer/footer.css | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 packages/website/src/components/footer/footer.css diff --git a/packages/website/src/components/footer/footer.css b/packages/website/src/components/footer/footer.css new file mode 100644 index 0000000000..b51576a520 --- /dev/null +++ b/packages/website/src/components/footer/footer.css @@ -0,0 +1,63 @@ +.footer{ + background: var(--main-color); + position: absolute; + width: 100%; + height: auto; + bottom: 0; + padding-bottom: .1rem; + color: var(--text-in-main-color); +} + +a { + color: var(--text-in-main-color); +} + +.footer-row{ + display: grid; + padding-left: .5rem; + padding-right: .5rem; + margin: 0 auto; + max-width: 1040px; +} + +#cadl h1, +#microsoft a img, +.column2 h2, +.column3 h2 { + margin-bottom: -0.5rem; +} + +.column1{ + grid-column: 1; + grid-row: 3; + width: 250px; +} + +.column2{ + grid-column: 2; + grid-row: 3; + width: 350px; +} + +.column3{ + grid-column: 3; + grid-row: 3; + width: 350px; +} + +.column2 h2, +.column3 h2{ + text-align: center; +} + +.column2 ul, +.column3 ul{ + columns: 2; +} + +.column2 ul li, +.column3 ul li{ + margin-bottom: .8rem; + font-weight: 600; + list-style: none; +} From e4e9e2e6ea66ab9b4cbaaa1985be6ea3fecb3f38 Mon Sep 17 00:00:00 2001 From: Descartes Date: Tue, 2 Aug 2022 16:53:04 -0700 Subject: [PATCH 10/81] Add playground on the website using iframe --- .../src/containers/playground/playground.tsx | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 packages/website/src/containers/playground/playground.tsx diff --git a/packages/website/src/containers/playground/playground.tsx b/packages/website/src/containers/playground/playground.tsx new file mode 100644 index 0000000000..7ada12d0f7 --- /dev/null +++ b/packages/website/src/containers/playground/playground.tsx @@ -0,0 +1,19 @@ +import { FunctionComponent, useState } from "react"; +import { Footer, Navbar } from "../../components"; +//import { Grid } from 'react-loader-spinner'; +import "./playground.css"; + +export const Playground: FunctionComponent = () => { + //const [load, setLoad] = useState(true); + // + return ( +
+
+
+ +
+
+
+ ); +}; +export default Playground From d8f846291e5dbc4e1890873e8ce81d1063b88edb Mon Sep 17 00:00:00 2001 From: Descartes Date: Tue, 2 Aug 2022 16:54:04 -0700 Subject: [PATCH 11/81] Add css for the playground page --- .../src/containers/playground/playground.css | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 packages/website/src/containers/playground/playground.css diff --git a/packages/website/src/containers/playground/playground.css b/packages/website/src/containers/playground/playground.css new file mode 100644 index 0000000000..d7f4e88a84 --- /dev/null +++ b/packages/website/src/containers/playground/playground.css @@ -0,0 +1,15 @@ +.play-iframe iframe{ + width: 100%; + height: 100%; + border: .1px solid; + left: 0; + top: 0; +} + +.play-iframe { + display: flex; + flex: 1 0 auto; + margin: 1.5rem; + overflow: hidden; + height: 70vh; +} From e9c186c67b4d730dfe0fd662a95977296772ad39 Mon Sep 17 00:00:00 2001 From: Descartes Date: Tue, 2 Aug 2022 16:54:59 -0700 Subject: [PATCH 12/81] Add the landing/ home page for the website --- packages/website/src/containers/home/home.tsx | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 packages/website/src/containers/home/home.tsx diff --git a/packages/website/src/containers/home/home.tsx b/packages/website/src/containers/home/home.tsx new file mode 100644 index 0000000000..0ac50410f1 --- /dev/null +++ b/packages/website/src/containers/home/home.tsx @@ -0,0 +1,21 @@ +import { FunctionComponent } from "react"; +import {Brand, Cta, Navbar, Features, Possibility, Footer} from "../../components"; +import "./home.css"; + +export const Home: FunctionComponent = () => { + return ( +
+
+ +
This is the current version 3.3!
+
+ + + + +
+
+ ); + +}; +export default Home From 898b9382a61c665362d8adf7e7ff4016bc68a5a1 Mon Sep 17 00:00:00 2001 From: Descartes Date: Tue, 2 Aug 2022 16:56:11 -0700 Subject: [PATCH 13/81] Add css for the landing/home page --- packages/website/src/containers/home/home.css | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 packages/website/src/containers/home/home.css diff --git a/packages/website/src/containers/home/home.css b/packages/website/src/containers/home/home.css new file mode 100644 index 0000000000..e69de29bb2 From 262b31860cdbe96889a7189b7ba54829251a6096 Mon Sep 17 00:00:00 2001 From: Descartes Date: Tue, 2 Aug 2022 17:11:42 -0700 Subject: [PATCH 14/81] Add empty pages/containers for navabar link routed --- packages/website/src/containers/blog/blog.tsx | 15 +++++++++++++++ .../src/containers/community/community.tsx | 14 ++++++++++++++ packages/website/src/containers/docs/docs.tsx | 14 ++++++++++++++ .../website/src/containers/download/download.tsx | 14 ++++++++++++++ 4 files changed, 57 insertions(+) create mode 100644 packages/website/src/containers/blog/blog.tsx create mode 100644 packages/website/src/containers/community/community.tsx create mode 100644 packages/website/src/containers/docs/docs.tsx create mode 100644 packages/website/src/containers/download/download.tsx diff --git a/packages/website/src/containers/blog/blog.tsx b/packages/website/src/containers/blog/blog.tsx new file mode 100644 index 0000000000..3eef253691 --- /dev/null +++ b/packages/website/src/containers/blog/blog.tsx @@ -0,0 +1,15 @@ +import { FunctionComponent } from "react"; +import { Footer, Navbar } from "../../components"; +import "./blog.css"; + +export const Blog: FunctionComponent = () => { + return ( +
+ +

Blog

+
+
+ ); + +}; +export default Blog diff --git a/packages/website/src/containers/community/community.tsx b/packages/website/src/containers/community/community.tsx new file mode 100644 index 0000000000..c7a4c8f8c6 --- /dev/null +++ b/packages/website/src/containers/community/community.tsx @@ -0,0 +1,14 @@ +import { FunctionComponent } from "react"; +import { Footer, Navbar } from "../../components"; +import "./community.css"; + +export const Community: FunctionComponent = () => { + return ( +
+ +

Community

+
+
+ ); +}; +export default Community diff --git a/packages/website/src/containers/docs/docs.tsx b/packages/website/src/containers/docs/docs.tsx new file mode 100644 index 0000000000..47e365735a --- /dev/null +++ b/packages/website/src/containers/docs/docs.tsx @@ -0,0 +1,14 @@ +import { FunctionComponent } from "react"; +import { Footer, Navbar } from "../../components"; +import "./docs.css"; + +export const Docs: FunctionComponent = () => { + return ( +
+ +

Docs

+
+
+ ); +}; +export default Docs diff --git a/packages/website/src/containers/download/download.tsx b/packages/website/src/containers/download/download.tsx new file mode 100644 index 0000000000..137bdac2f6 --- /dev/null +++ b/packages/website/src/containers/download/download.tsx @@ -0,0 +1,14 @@ +import { FunctionComponent } from "react"; +import { Footer, Navbar } from "../../components"; +import "./download.css"; + +export const Download: FunctionComponent = () => { + return ( +
+ +

Download

+
+
+ ); +}; +export default Download From f9cd205dd8ded7ee4535d6eb52d74f18cf5881d2 Mon Sep 17 00:00:00 2001 From: Descartes Date: Tue, 2 Aug 2022 17:12:48 -0700 Subject: [PATCH 15/81] Add css for navbar link pages routed --- packages/website/src/containers/blog/blog.css | 0 packages/website/src/containers/community/community.css | 0 packages/website/src/containers/docs/docs.css | 0 packages/website/src/containers/download/download.css | 0 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 packages/website/src/containers/blog/blog.css create mode 100644 packages/website/src/containers/community/community.css create mode 100644 packages/website/src/containers/docs/docs.css create mode 100644 packages/website/src/containers/download/download.css diff --git a/packages/website/src/containers/blog/blog.css b/packages/website/src/containers/blog/blog.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/website/src/containers/community/community.css b/packages/website/src/containers/community/community.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/website/src/containers/docs/docs.css b/packages/website/src/containers/docs/docs.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/website/src/containers/download/download.css b/packages/website/src/containers/download/download.css new file mode 100644 index 0000000000..e69de29bb2 From 60e253db162e2edf0b3834eec4abeecab40aa67e Mon Sep 17 00:00:00 2001 From: Descartes Date: Tue, 2 Aug 2022 17:16:34 -0700 Subject: [PATCH 16/81] Add index file to access all containes/pages. --- packages/website/src/containers/index.ts | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 packages/website/src/containers/index.ts diff --git a/packages/website/src/containers/index.ts b/packages/website/src/containers/index.ts new file mode 100644 index 0000000000..b0f263de99 --- /dev/null +++ b/packages/website/src/containers/index.ts @@ -0,0 +1,7 @@ +export {default as Home} from "./home/home"; +export {default as Blog} from "./blog/blog"; +export {default as Community} from "./community/community"; +export {default as Docs } from "./docs/docs"; +export {default as Download} from "./download/download"; +export {default as Playground} from "./playground/playground"; +export {default as PageNotFound} from "./404/404"; From 6b7279a7f49ecd7f7aa45e82513a4bf1e4ce5c5a Mon Sep 17 00:00:00 2001 From: Descartes Date: Tue, 2 Aug 2022 17:18:47 -0700 Subject: [PATCH 17/81] Add index.ts file to access all components --- packages/website/src/components/index.ts | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 packages/website/src/components/index.ts diff --git a/packages/website/src/components/index.ts b/packages/website/src/components/index.ts new file mode 100644 index 0000000000..2fecf2b150 --- /dev/null +++ b/packages/website/src/components/index.ts @@ -0,0 +1,7 @@ +export {default as Brand} from "./brand/brand"; +export {default as Cta} from "./cta/cta"; +export {default as Features} from "./features/features"; +export {default as Footer} from "./footer/footer"; +export {default as Intro} from "./intro/intro"; +export {default as Navbar} from "./navbar/navbar"; +export {default as Possibility} from "./possibility/possibility"; From 58b5cab5482d3677dba0a3b3e05ed721a6d5556f Mon Sep 17 00:00:00 2001 From: Descartes Date: Tue, 2 Aug 2022 17:45:42 -0700 Subject: [PATCH 18/81] Add 404 error page for unroute pages. --- packages/website/src/containers/404/404.css | 0 packages/website/src/containers/404/404.tsx | 15 +++++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 packages/website/src/containers/404/404.css create mode 100644 packages/website/src/containers/404/404.tsx diff --git a/packages/website/src/containers/404/404.css b/packages/website/src/containers/404/404.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/website/src/containers/404/404.tsx b/packages/website/src/containers/404/404.tsx new file mode 100644 index 0000000000..53bc79ab26 --- /dev/null +++ b/packages/website/src/containers/404/404.tsx @@ -0,0 +1,15 @@ +import { FunctionComponent } from "react"; +import { Footer, Navbar } from "../../components"; +import "./404.css"; + +export const PageNotFound: FunctionComponent = () => { + return ( +
+ +

404

+

404 Page Not Found!

+
+
+ ); +}; +export default PageNotFound From 4e62c56bb4a5438e35b2a66b10ad73a214b33f0c Mon Sep 17 00:00:00 2001 From: Descartes Date: Tue, 2 Aug 2022 17:54:12 -0700 Subject: [PATCH 19/81] Add empty components on for future reuse --- packages/website/src/components/brand/brand.css | 0 packages/website/src/components/brand/brand.tsx | 13 +++++++++++++ packages/website/src/components/cta/cta.css | 0 packages/website/src/components/cta/cta.tsx | 13 +++++++++++++ .../website/src/components/features/features.css | 0 .../website/src/components/features/features.tsx | 11 +++++++++++ packages/website/src/components/intro/intro.css | 0 packages/website/src/components/intro/intro.tsx | 12 ++++++++++++ .../src/components/possibility/possibility.css | 0 .../src/components/possibility/possibility.tsx | 12 ++++++++++++ 10 files changed, 61 insertions(+) create mode 100644 packages/website/src/components/brand/brand.css create mode 100644 packages/website/src/components/brand/brand.tsx create mode 100644 packages/website/src/components/cta/cta.css create mode 100644 packages/website/src/components/cta/cta.tsx create mode 100644 packages/website/src/components/features/features.css create mode 100644 packages/website/src/components/features/features.tsx create mode 100644 packages/website/src/components/intro/intro.css create mode 100644 packages/website/src/components/intro/intro.tsx create mode 100644 packages/website/src/components/possibility/possibility.css create mode 100644 packages/website/src/components/possibility/possibility.tsx diff --git a/packages/website/src/components/brand/brand.css b/packages/website/src/components/brand/brand.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/website/src/components/brand/brand.tsx b/packages/website/src/components/brand/brand.tsx new file mode 100644 index 0000000000..5a2a4071de --- /dev/null +++ b/packages/website/src/components/brand/brand.tsx @@ -0,0 +1,13 @@ +import { FunctionComponent } from "react"; +import "./brand.css"; + +export const Brand: FunctionComponent = () => { + return ( +
+

Brand

+
+ ); + +}; + +export default Brand diff --git a/packages/website/src/components/cta/cta.css b/packages/website/src/components/cta/cta.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/website/src/components/cta/cta.tsx b/packages/website/src/components/cta/cta.tsx new file mode 100644 index 0000000000..9f7e9f7ebd --- /dev/null +++ b/packages/website/src/components/cta/cta.tsx @@ -0,0 +1,13 @@ +import { FunctionComponent } from "react"; +import "./cta.css"; + +export const Cta: FunctionComponent = () => { + return ( +
+

Cta

+
+ ); + +}; + +export default Cta diff --git a/packages/website/src/components/features/features.css b/packages/website/src/components/features/features.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/website/src/components/features/features.tsx b/packages/website/src/components/features/features.tsx new file mode 100644 index 0000000000..b0a3e11690 --- /dev/null +++ b/packages/website/src/components/features/features.tsx @@ -0,0 +1,11 @@ +import { FunctionComponent } from "react"; +import "./features.css"; + +export const Features: FunctionComponent = () => { + return ( +
+

Playground Features

+
+ ); +}; +export default Features diff --git a/packages/website/src/components/intro/intro.css b/packages/website/src/components/intro/intro.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/website/src/components/intro/intro.tsx b/packages/website/src/components/intro/intro.tsx new file mode 100644 index 0000000000..2d1f5aa677 --- /dev/null +++ b/packages/website/src/components/intro/intro.tsx @@ -0,0 +1,12 @@ +import { FunctionComponent } from "react"; +import "./intro.css"; + +export const Intro: FunctionComponent = () => { + return ( +
+

Introduction

+
+ ); + +}; +export default Intro diff --git a/packages/website/src/components/possibility/possibility.css b/packages/website/src/components/possibility/possibility.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/website/src/components/possibility/possibility.tsx b/packages/website/src/components/possibility/possibility.tsx new file mode 100644 index 0000000000..cf8b6a5f04 --- /dev/null +++ b/packages/website/src/components/possibility/possibility.tsx @@ -0,0 +1,12 @@ +import { FunctionComponent } from "react"; +import "./possibility.css"; + +export const Possibility: FunctionComponent = () => { + return ( +
+

Possibility

+
+ ); + +}; +export default Possibility From 3da3bcbbf8925443f583a17349f55bed1b97325f Mon Sep 17 00:00:00 2001 From: Descartes Date: Tue, 2 Aug 2022 18:59:35 -0700 Subject: [PATCH 20/81] Remove unnecessary div. --- .../website/src/containers/playground/playground.tsx | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/packages/website/src/containers/playground/playground.tsx b/packages/website/src/containers/playground/playground.tsx index 7ada12d0f7..c566da89e0 100644 --- a/packages/website/src/containers/playground/playground.tsx +++ b/packages/website/src/containers/playground/playground.tsx @@ -1,18 +1,15 @@ -import { FunctionComponent, useState } from "react"; +import { FunctionComponent} from "react"; import { Footer, Navbar } from "../../components"; -//import { Grid } from 'react-loader-spinner'; import "./playground.css"; export const Playground: FunctionComponent = () => { - //const [load, setLoad] = useState(true); - // return (
-
+
- + +
+
\ No newline at end of file From 920ba09e8be6c03bbe21b756ea1e93bba5d2c00d Mon Sep 17 00:00:00 2001 From: Descartes Date: Mon, 15 Aug 2022 14:07:09 -0700 Subject: [PATCH 33/81] Add download section/page for installing cadl and getting started --- packages/website/src/containers/download/index.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 packages/website/src/containers/download/index.md diff --git a/packages/website/src/containers/download/index.md b/packages/website/src/containers/download/index.md new file mode 100644 index 0000000000..6813a6d3f6 --- /dev/null +++ b/packages/website/src/containers/download/index.md @@ -0,0 +1,7 @@ +--- +title: Installing Cadl. +permalink: download/index.html +layout: "layouts/container.njk" +--- + +Installing Cadl. \ No newline at end of file From 07e952c14de6d460847536a4cf4bbafe88f9235a Mon Sep 17 00:00:00 2001 From: Descartes Date: Mon, 15 Aug 2022 14:07:31 -0700 Subject: [PATCH 34/81] Add docs page for the language documentation --- packages/website/src/containers/docs/index.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 packages/website/src/containers/docs/index.md diff --git a/packages/website/src/containers/docs/index.md b/packages/website/src/containers/docs/index.md new file mode 100644 index 0000000000..5d4bacb793 --- /dev/null +++ b/packages/website/src/containers/docs/index.md @@ -0,0 +1,7 @@ +--- +title: Cadl Docummentation. +permalink: docs/index.html +layout: "layouts/container.njk" +--- + +Cadl Documentations. \ No newline at end of file From f9f9a69698ae7746d6a4790324b92d4798a90e73 Mon Sep 17 00:00:00 2001 From: Descartes Date: Mon, 15 Aug 2022 14:08:06 -0700 Subject: [PATCH 35/81] Add community page/container --- packages/website/src/containers/community/index.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 packages/website/src/containers/community/index.md diff --git a/packages/website/src/containers/community/index.md b/packages/website/src/containers/community/index.md new file mode 100644 index 0000000000..8ade27d76b --- /dev/null +++ b/packages/website/src/containers/community/index.md @@ -0,0 +1,7 @@ +--- +title: Engage with the Community. +permalink: community/index.html +layout: "layouts/container.njk" +--- + +Found out about Cadl Developers. \ No newline at end of file From 99f597ad247fb171a5e31c729d24375cdaa2d7e7 Mon Sep 17 00:00:00 2001 From: Descartes Date: Mon, 15 Aug 2022 14:12:57 -0700 Subject: [PATCH 36/81] Add blog page for future reference --- packages/website/src/containers/blog/index.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 packages/website/src/containers/blog/index.md diff --git a/packages/website/src/containers/blog/index.md b/packages/website/src/containers/blog/index.md new file mode 100644 index 0000000000..a51067576f --- /dev/null +++ b/packages/website/src/containers/blog/index.md @@ -0,0 +1,7 @@ +--- +title: Blogs about Cadl. +permalink: blog/index.html +layout: "layouts/container.njk" +--- + +Blogs about Cadl.SDFs \ No newline at end of file From 9619c8c81c182878bd751d1bfbe6207fd0767562 Mon Sep 17 00:00:00 2001 From: Descartes Date: Mon, 15 Aug 2022 14:13:21 -0700 Subject: [PATCH 37/81] Add base container for the home page and most pages. --- .../website/src/_includes/layouts/base.njk | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 packages/website/src/_includes/layouts/base.njk diff --git a/packages/website/src/_includes/layouts/base.njk b/packages/website/src/_includes/layouts/base.njk new file mode 100644 index 0000000000..f91c5ebe3e --- /dev/null +++ b/packages/website/src/_includes/layouts/base.njk @@ -0,0 +1,22 @@ + + + + + + + {{ title }} + + + +
+ {%include 'partials/navbar/navbar.njk'%} +
+ +
+ {{content | safe}} +
+
+ {%include 'partials/footer/footer.njk'%} +
+ + \ No newline at end of file From 0b9f3bfed78725b0b5487b3ae5751a23cf829080 Mon Sep 17 00:00:00 2001 From: Descartes Date: Mon, 15 Aug 2022 14:14:33 -0700 Subject: [PATCH 38/81] Add contianer layout for containers such playground., tutorial and others. --- .../src/_includes/layouts/container.njk | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 packages/website/src/_includes/layouts/container.njk diff --git a/packages/website/src/_includes/layouts/container.njk b/packages/website/src/_includes/layouts/container.njk new file mode 100644 index 0000000000..2f4a05da4a --- /dev/null +++ b/packages/website/src/_includes/layouts/container.njk @@ -0,0 +1,21 @@ + + + + + + + {{ title }} + + + +
+ {%include 'partials/navbar/navbar.njk'%} +
+
+ {{content | safe}} +
+
+ {%include 'partials/footer/footer.njk'%} +
+ + \ No newline at end of file From a0c4e420bafd0135c9db1b42117f629162dd3c9b Mon Sep 17 00:00:00 2001 From: Descartes Date: Mon, 15 Aug 2022 14:15:23 -0700 Subject: [PATCH 39/81] Add tutorials layouts for tutorial page and for future use. --- packages/website/src/_includes/layouts/tutorial.njk | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 packages/website/src/_includes/layouts/tutorial.njk diff --git a/packages/website/src/_includes/layouts/tutorial.njk b/packages/website/src/_includes/layouts/tutorial.njk new file mode 100644 index 0000000000..221ba696f2 --- /dev/null +++ b/packages/website/src/_includes/layouts/tutorial.njk @@ -0,0 +1,7 @@ +--- +layout: "layouts/container.njk" +--- + +
+ {{content | safe}} +
\ No newline at end of file From f50c163b413fab4de894ffd7ee784ccd8f7a019f Mon Sep 17 00:00:00 2001 From: Descartes Date: Mon, 15 Aug 2022 14:21:11 -0700 Subject: [PATCH 40/81] Add footer for the website --- .../src/_includes/partials/footer/footer.njk | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 packages/website/src/_includes/partials/footer/footer.njk diff --git a/packages/website/src/_includes/partials/footer/footer.njk b/packages/website/src/_includes/partials/footer/footer.njk new file mode 100644 index 0000000000..c225ca2afd --- /dev/null +++ b/packages/website/src/_includes/partials/footer/footer.njk @@ -0,0 +1,47 @@ + + \ No newline at end of file From 80132a1738998ffa13aca0162007227bf5cb2f64 Mon Sep 17 00:00:00 2001 From: Descartes Date: Mon, 15 Aug 2022 14:21:43 -0700 Subject: [PATCH 41/81] Add Navbar for the website --- .../src/_includes/partials/navbar/navbar.njk | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 packages/website/src/_includes/partials/navbar/navbar.njk diff --git a/packages/website/src/_includes/partials/navbar/navbar.njk b/packages/website/src/_includes/partials/navbar/navbar.njk new file mode 100644 index 0000000000..3c512901c3 --- /dev/null +++ b/packages/website/src/_includes/partials/navbar/navbar.njk @@ -0,0 +1,15 @@ + \ No newline at end of file From fc54b3520b9f859b779459834c1833eb2065f315 Mon Sep 17 00:00:00 2001 From: Descartes Date: Mon, 15 Aug 2022 14:22:38 -0700 Subject: [PATCH 42/81] Add navbar items from _data as a json file. --- packages/website/src/_data/navbar.json | 27 ++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 packages/website/src/_data/navbar.json diff --git a/packages/website/src/_data/navbar.json b/packages/website/src/_data/navbar.json new file mode 100644 index 0000000000..12510cfc04 --- /dev/null +++ b/packages/website/src/_data/navbar.json @@ -0,0 +1,27 @@ +{ + "items": [{ + "url": "/blog/", + "name": "Blog" + }, + { + "url": "/community/", + "name": "Community" + }, + { + "url": "/docs/", + "name": "Docs" + }, + { + "url": "/download/", + "name": "Download" + }, + { + "url": "/play", + "name": "Playground" + }, + { + "url": "/tutorial/", + "name": "Tutorial" + } + ] +} \ No newline at end of file From 0e0ea5ad66dcd37e61ac0a4ec16ae742531eea45 Mon Sep 17 00:00:00 2001 From: Descartes Date: Mon, 15 Aug 2022 14:23:23 -0700 Subject: [PATCH 43/81] Add main web entry point. --- packages/website/src/index.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 packages/website/src/index.md diff --git a/packages/website/src/index.md b/packages/website/src/index.md new file mode 100644 index 0000000000..c9ee8e6c5b --- /dev/null +++ b/packages/website/src/index.md @@ -0,0 +1,6 @@ +--- +title: Hello World +layout: "layouts/base.njk" +--- + +Getting started with Cadl. \ No newline at end of file From 6f35b2438e3fd5d201e17ea9da9a5251dbe43ee9 Mon Sep 17 00:00:00 2001 From: Descartes Date: Mon, 15 Aug 2022 14:25:22 -0700 Subject: [PATCH 44/81] Add the compiled output from eleventy containers, partials, and layouts. --- packages/website/_website/blog/index.html | 92 ++ .../website/_website/community/index.html | 92 ++ packages/website/_website/css/footer.css | 72 ++ packages/website/_website/css/global.css | 54 + packages/website/_website/css/navbar.css | 63 ++ packages/website/_website/css/playground.css | 16 + packages/website/_website/css/style.css | 5 + packages/website/_website/css/tutorial.css | 6 + packages/website/_website/docs/index.html | 92 ++ packages/website/_website/download/index.html | 92 ++ packages/website/_website/index.html | 93 ++ packages/website/_website/play/index.html | 95 ++ packages/website/_website/tutorial/index.html | 948 ++++++++++++++++++ 13 files changed, 1720 insertions(+) create mode 100644 packages/website/_website/blog/index.html create mode 100644 packages/website/_website/community/index.html create mode 100644 packages/website/_website/css/footer.css create mode 100644 packages/website/_website/css/global.css create mode 100644 packages/website/_website/css/navbar.css create mode 100644 packages/website/_website/css/playground.css create mode 100644 packages/website/_website/css/style.css create mode 100644 packages/website/_website/css/tutorial.css create mode 100644 packages/website/_website/docs/index.html create mode 100644 packages/website/_website/download/index.html create mode 100644 packages/website/_website/index.html create mode 100644 packages/website/_website/play/index.html create mode 100644 packages/website/_website/tutorial/index.html diff --git a/packages/website/_website/blog/index.html b/packages/website/_website/blog/index.html new file mode 100644 index 0000000000..01d1e4ff7c --- /dev/null +++ b/packages/website/_website/blog/index.html @@ -0,0 +1,92 @@ + + + + + + + Blogs about Cadl. + + + +
+ +
+
+

Blogs about Cadl.SDFs

+ +
+ + + \ No newline at end of file diff --git a/packages/website/_website/community/index.html b/packages/website/_website/community/index.html new file mode 100644 index 0000000000..eefd0a761c --- /dev/null +++ b/packages/website/_website/community/index.html @@ -0,0 +1,92 @@ + + + + + + + Engage with the Community. + + + +
+ +
+
+

Found out about Cadl Developers.

+ +
+ + + \ No newline at end of file diff --git a/packages/website/_website/css/footer.css b/packages/website/_website/css/footer.css new file mode 100644 index 0000000000..263643ec51 --- /dev/null +++ b/packages/website/_website/css/footer.css @@ -0,0 +1,72 @@ +footer { + position: fixed; + bottom: 0; + width: 100%; + height: auto; + padding-top: 0.2rem; + background-color: #222; + font-size: 12px; +} + +.footer { + background: var(--main-color); + width: 100%; + height: auto; + bottom: 0; + padding-bottom: .1rem; + color: var(--text-in-main-color); +} + +.footer-row { + display: grid; + padding-left: .5rem; + padding-right: .5rem; + margin: 0 auto; + max-width: 1040px; +} + +#cadl h1, +#microsoft a img, +.column2 h2, +.column3 h2 { + margin-bottom: -0.5rem; +} + +.column1 { + grid-column: 1; + grid-row: 3; + width: 250px; +} + +.column2 { + grid-column: 2; + grid-row: 3; + width: 350px; +} + +.column3 { + grid-column: 3; + grid-row: 3; + width: 350px; +} + +.column2 h2, +.column3 h2 { + text-align: center; +} + +.column2 ul, +.column3 ul { + columns: 2; +} + +.column2 ul li, +.column3 ul li { + margin-bottom: .8rem; + font-weight: 600; + list-style: none; +} + +.footer a { + color: var(--text-in-main-color); +} \ No newline at end of file diff --git a/packages/website/_website/css/global.css b/packages/website/_website/css/global.css new file mode 100644 index 0000000000..eb5ebe888b --- /dev/null +++ b/packages/website/_website/css/global.css @@ -0,0 +1,54 @@ +* { + box-sizing: border-box; +} + +body { + margin: 0; + padding: 0; + font-family: var(--font-family); + overflow: auto; +} + +.app_version { + background: var(--version_bar-color); + color: var(--text-in-main-color); + text-align: center; +} + +:root { + --font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; + ; + --main-color: #0B6A0B; + --text-in-main-color: #ffffff; + --tab-inner-color: #095A09; + --version_bar-color: #013301; +} + +html { + height: 100%; +} + + +/* Extra small devices (phones, 600px and down) */ + +@media only screen and (max-width: 600px) {} + + +/* Small devices (portrait tablets and large phones, 600px and up) */ + +@media only screen and (min-width: 600px) {} + + +/* Medium devices (landscape tablets, 768px and up) */ + +@media only screen and (min-width: 768px) {} + + +/* Large devices (laptops/desktops, 992px and up) */ + +@media only screen and (min-width: 992px) {} + + +/* Extra large devices (large laptops and desktops, 1200px and up) */ + +@media only screen and (min-width: 1200px) {} \ No newline at end of file diff --git a/packages/website/_website/css/navbar.css b/packages/website/_website/css/navbar.css new file mode 100644 index 0000000000..ef276fb44c --- /dev/null +++ b/packages/website/_website/css/navbar.css @@ -0,0 +1,63 @@ +.navbar { + display: flex; + justify-content: space-between; + align-items: center; + height: 3rem; + background: var(--main-color); +} + +.navbar-search_box { + background: var(--main-color); +} + +.navbar-search_box { + display: block; + float: right; +} + +.navbar-logo { + margin-right: 2rem; + float: left; +} + +.navbar-logo a { + color: white; + text-decoration: none; +} + +.navbar-links { + display: flex; + flex-direction: row; +} + +.navbar-sign { + display: flex; + justify-content: flex-end; + float: inline-start; +} + +.navbar-links p, +.navbar-sign p { + font-weight: 500; + font-size: 18px; + line-height: 25px; + text-transform: capitalize; + margin: 0 1rem; + cursor: pointer; +} + +.navbar-links ul li { + list-style: none; + font-weight: 500; + font-size: 18px; + line-height: 25px; + text-transform: capitalize; + display: inline; + margin: 0 1rem; + cursor: pointer; +} + +.navbar-links a { + text-decoration: none; + color: white; +} \ No newline at end of file diff --git a/packages/website/_website/css/playground.css b/packages/website/_website/css/playground.css new file mode 100644 index 0000000000..9c25806e08 --- /dev/null +++ b/packages/website/_website/css/playground.css @@ -0,0 +1,16 @@ +.play-iframe iframe { + position: relative; + width: 100%; + height: 100%; + border: .1px solid; + left: 0; + top: 0; +} + +.play-iframe { + display: flex; + flex: 1 0 auto; + margin: 1.5rem; + overflow: hidden; + height: 70vh; +} \ No newline at end of file diff --git a/packages/website/_website/css/style.css b/packages/website/_website/css/style.css new file mode 100644 index 0000000000..11092976c2 --- /dev/null +++ b/packages/website/_website/css/style.css @@ -0,0 +1,5 @@ +@import url("global.css"); +@import url("navbar.css"); +@import url("footer.css"); +@import url("tutorial.css"); +@import url("playground.css"); \ No newline at end of file diff --git a/packages/website/_website/css/tutorial.css b/packages/website/_website/css/tutorial.css new file mode 100644 index 0000000000..e742993811 --- /dev/null +++ b/packages/website/_website/css/tutorial.css @@ -0,0 +1,6 @@ +.tutorial { + margin: auto; + width: 1024px; + padding: 0.5rem 1.5rem; + background-color: #ebebeb; +} \ No newline at end of file diff --git a/packages/website/_website/docs/index.html b/packages/website/_website/docs/index.html new file mode 100644 index 0000000000..47717314b7 --- /dev/null +++ b/packages/website/_website/docs/index.html @@ -0,0 +1,92 @@ + + + + + + + Cadl Docummentation. + + + +
+ +
+
+

Cadl Documentations.

+ +
+ + + \ No newline at end of file diff --git a/packages/website/_website/download/index.html b/packages/website/_website/download/index.html new file mode 100644 index 0000000000..08f46cb6c0 --- /dev/null +++ b/packages/website/_website/download/index.html @@ -0,0 +1,92 @@ + + + + + + + Installing Cadl. + + + +
+ +
+
+

Installing Cadl.

+ +
+ + + \ No newline at end of file diff --git a/packages/website/_website/index.html b/packages/website/_website/index.html new file mode 100644 index 0000000000..6ec2fb2f7c --- /dev/null +++ b/packages/website/_website/index.html @@ -0,0 +1,93 @@ + + + + + + + Hello World + + + +
+ +
+ +
+

Getting started with Cadl.

+ +
+ + + \ No newline at end of file diff --git a/packages/website/_website/play/index.html b/packages/website/_website/play/index.html new file mode 100644 index 0000000000..322e925f1f --- /dev/null +++ b/packages/website/_website/play/index.html @@ -0,0 +1,95 @@ + + + + + + + Cadl Playground. + + + +
+ +
+
+
+
+ +
+
+
+ + + \ No newline at end of file diff --git a/packages/website/_website/tutorial/index.html b/packages/website/_website/tutorial/index.html new file mode 100644 index 0000000000..d30fac5f4b --- /dev/null +++ b/packages/website/_website/tutorial/index.html @@ -0,0 +1,948 @@ + + + + + + + Get Started with Cadl. + + + +
+ +
+
+ +
+

Introduction to API Definition Language (Cadl)

+

Cadl is a language for describing cloud service APIs and generating other API description languages, client and service code, documentation, and other assets. Cadl provides highly extensible core language primitives that can describe API shapes common among REST, GraphQL, gRPC, and other protocols.

+

Cadl is an object oriented dynamic language whose evaluation results in an object model describing service APIs. Unlike typical programming languages, Cadl consists primarily of declarations, however these declarations can be decorated to provide highly dynamic behavior.

+

Cadl's primary benefits include:

+
    +
  • Protocol agnostic: it can describe and generate code for APIs across multiple protocols and serialization languages
  • +
  • Modular: developers can group common API shapes and conventions together and reuse them
  • +
  • Terse: the syntax is expressive, capable of describing complex APIs with minimal code
  • +
  • Extensible: developers can customize the language to describe just about any style of API
  • +
+

Language Tour

+

Cadl consists of the following language features:

+
    +
  • Models: data shapes or schemas
  • +
  • Type Literals: strings and numbers with specific values
  • +
  • Type Operators: syntax for composing model types into other types
  • +
  • Operations: service endpoints with parameters and return values
  • +
  • Namespaces & Usings: groups models and operations together into hierarchical groups with friendly names
  • +
  • Interfaces: groups operations
  • +
  • Imports: links declarations across multiple files and libraries together into a single program
  • +
  • Decorators: bits of TypeScript code that add metadata or sometimes mutate declarations
  • +
  • Libraries: encapsulate Cadl definitions into reusable components
  • +
+

In addition, Cadl comes with a standard library for describing REST APIs and generating OpenAPI. Other protocol bindings are a work in progress!

+

Models

+

Cadl models are used to describe data shapes or schemas. Models have any number of members and can extend and be composed with other models. Members are required by default, but can made optional by appending a "?" to the member name. A default value can also be provided with adding = <value> on an optional property.

+

The following defines a data shape with three members:

+
model Dog {
+  name: string;
+  favoriteToy?: string;
+  bestTreat?: string = "chicken";
+}
+
+
+

Built-in Models

+

Type relations

+

Cadl comes with built-in models for common data types:

+
    +
  • string: sequence of characters
  • +
  • bytes: a sequence of bytes
  • +
  • int8: 8-bit signed integer
  • +
  • int16: 16-bit signed integer
  • +
  • int32: 32-bit signed integer
  • +
  • int64: 64-bit signed integer
  • +
  • uint8: 8-bit unsigned integer
  • +
  • uint16: 16-bit unsigned integer
  • +
  • uint32: 32-bit unsigned integer
  • +
  • uint64: 64-bit unsigned integer
  • +
  • safeint: an integer that is safe to store in a IEEE754 double and safe to round trip through all JSON processors.
  • +
  • float32: IEEE 754 single-precision floating point number
  • +
  • float64: IEEE 754 double-precision floating point number
  • +
  • plainDate: A date on a calendar without a time zone, e.g. "April 10th"
  • +
  • plainTime: A time on a clock without a time zone, e.g. "3:00 am"
  • +
  • zonedDateTime: A date and time in a particular time zone, e.g. "April 10th at 3:00am in PST"
  • +
  • duration: A duration/time period. e.g 5s, 10h
  • +
  • boolean: true or false
  • +
  • null: the null value found in e.g. JSON.
  • +
  • Record<T>: a dictionary with string K and value T.
  • +
  • unknown: A top type in Cadl that all types can be assigned to.
  • +
  • void: A function return type indicating the function doesn't return a value.
  • +
  • never: The never type indicates the values that will never occur. Typically, you use the never type to represent the return type of a function that always throws an error.
  • +
+

Spread

+

The spread operator takes the members of a source model and copies them into a target model. Spread doesn't create any nominal relationship between source and target, and so it's useful when you want to reuse common properties without reasoning about or generating complex inheritance relationships.

+
model Animal {
+  species: string;
+}
+
+model Pet {
+  name: string;
+}
+
+model Dog {
+  ...Animal;
+  ...Pet;
+}
+
+// Dog is equivalent to the following declaration:
+model Dog {
+  species: string;
+  name: string;
+}
+
+
+

Extends

+

Sometimes you want to create an explicit relationship between two models, for example when you want to emit class definitions in languages which support inheritance. The extends keyword can be used to establish such a relationship. It is also used extensively with interface to compose from existing interface building blocks.

+
model Animal {
+  species: string;
+}
+
+model Dog extends Animal {}
+
+
+

Is

+

Sometimes you want to copy all aspects of a type without creating a nominal inheritance relationship. The is keyword can be used for this purpose. It is like spread, but also copies decorators in addition to properties. One common use case is to give a better name to a template instantiation:

+
@decorator
+model Thing<T> {
+  property: T;
+}
+
+model StringThing is Thing<string>;
+
+// StringThing declaration is equivalent to the following declaration:
+@decorator
+model StringThing {
+  property: string;
+}
+
+
+

Enums

+

Enums define a type which can hold one of a set of constant values.

+
enum Color {
+  Red,
+  Blue,
+  Green,
+}
+
+
+

In this case, we haven't specified how the constants will be represented, allowing for different choices in different scenarios. For example, the OpenAPI emitter will choose string values "Red", "Green", "Blue". Another protocol might prefer to assign incrementing numeric values 0, 1, 2.

+

We can also specify explicit string or numeric values:

+
enum Color {
+  Red: "red",
+  Blue: "blue",
+  Green: "green",
+}
+
+enum Priority {
+  High: 100,
+  Low: 0,
+}
+
+
+

Templates

+

It is often useful to let the users of a model fill in certain details. Model templates enable this pattern. Similar to generics found in other languages, model templates declare template parameters that users provide when referencing the model.

+
model Page<T> {
+  size: number;
+  item: T[];
+}
+
+model DogPage {
+  ...Page<Dog>;
+}
+
+
+

A template parameter can be given a default value with = <value>.

+
model Page<T = string> {
+  size: number;
+  item: T[];
+}
+
+
+

Type Aliases

+

Sometimes it's convenient to alias a model template instantiation or type produced via type operators (covered later) as a convenient name. Aliases allow this:

+
alias DogPage = Page<Dog>;
+
+
+

Unlike model, alias does not create a new entity, and as such will not change generated code in any way. An alias merely describes a source code shorthand to avoid repeating the right-hand side in multiple places.

+

Because alias does not create a new entity, you cannot specify decorators on an alias.

+

Type Literals

+

API authors often need to describe API shapes in terms of specific literal values. For example, this operation returns this specific integer status code, or this model member can be one of a few specific string values. It is also often useful to pass specific literal values to decorators. Cadl supports string, number, and boolean literal values to support these cases:

+
model BestDog {
+  name: "Suki";
+  age: 14;
+  best: true;
+}
+
+
+

String literal types can also be created using the triple-quote syntax which enables multi-line strings:

+
model Dog {
+  favoriteFoods: """
+    McDonalds
+    Chipotle
+    And so on
+    """;
+}
+
+
+

Type Operators

+

Cadl supports a few type operators that make it easy to compose new models from other models.

+

Unions

+

Unions describe a type that must be exactly one of the union's constituents. Create a union with the | operator.

+
alias GoodBreed = Beagle | GermanShepherd | GoldenRetriever;
+
+
+
Named unions
+

There is also a declaration syntax for naming a union and its options:

+
union GoodBreed {
+  beagle: Beagle,
+  shepherd: GermanShepherd,
+  retriever: GoldenRetriever,
+}
+
+
+

The above example is equivalent to the GoodBreed alias above, except that emitters can actually see GoodBreed as a named entity and also see the beagle, shepherd, and retriever names for the options. It also becomes possible to apply decorators to each of the options when using this form.

+

Intersections

+

Intersections describe a type that must include all the intersection's constituents. Create an intersection with the & operator.

+
alias Dog = Animal & Pet;
+
+
+

Arrays

+

Arrays describe lists of things. Create an Array type with the [] operator.

+
alias Pack = Dog[];
+
+
+

Operations

+

Operations describe service endpoints and consist of an operation name, parameters, and return type. Operations are declared using the op keyword:

+
op getDog(name: string): Dog;
+
+
+

The operation's parameters describe a model, so anything you can do in a model you can do in a parameter list as well, including using the spread operator:

+
op getDog(...commonParams, name: string): Dog;
+
+
+

Often an endpoint returns one of any number of models. For example, there might be a return type for when an item is found, and a return type for when an item isn't found. Unions are used to describe this pattern:

+
model DogNotFound {
+  error: "Not Found";
+}
+
+op getDog(name: string): Dog | DogNotFound;
+
+
+

Namespaces & Usings

+

Namespaces let you group related types together into namespaces. This helps organize your types, making them easier to find and prevents name conflicts. Namespaces are merged across files, so you can reference any type anywhere in your Cadl program via its namespace. You can create namespace blocks like the following:

+
namespace Models {
+  model Dog {}
+}
+
+op getDog(): Models.Dog;
+
+
+

You can also put an entire Cadl file into a namespace by using the blockless namespace syntax:

+
// models.cadl
+namespace Models;
+model Dog {}
+
+
+
// main.cadl
+import "./models.cadl";
+op getDog(): Models.Dog;
+
+
+

Namespace declarations can declare multiple namespaces at once by using a dotted member expression. There's no need to declare nested namespace blocks if you don't want to.

+
namespace A.B;
+namespace C.D {
+
+}
+namespace C.D.E {
+  model M {}
+}
+
+alias M = A.B.C.D.E.M;
+
+
+

It can be convenient to add references to a namespace's declarations to your local namespace, especially when namespaces can become deeply nested. The using statement lets us do this:

+
// models.cadl
+namespace Service.Models;
+model Dog {}
+
+
+
// main.cadl
+import "./models.cadl";
+using ServiceModels;
+op getDog(): Dog; // here we can use Dog directly.
+
+
+

The bindings introduced by a using statement are local to the namespace they are declared in. They do not become part of the namespace themselves.

+
namespace Test {
+  model A {}
+}
+
+namespace Test2 {
+  using Test;
+  alias B = A; // ok
+}
+
+alias C = Test2.A; // not ok
+alias C = Test2.B; // ok
+
+
+

Interfaces

+

Interfaces can be used to group operations.

+
interface A {
+  a(): string;
+}
+
+interface B {
+  b(): string;
+}
+
+
+

And the keyword extends can be used to compose operations from other interfaces into a new interface:

+
interface C extends A, B {
+  c(): string;
+}
+
+// C is equivalent to the following declaration
+interface C {
+  a(): string;
+  b(): string;
+  c(): string;
+}
+
+
+

Imports

+

Imports add files or libraries to your Cadl program. When you compile a Cadl file, you provide a path to your root Cadl file, by convention called "main.cadl". From there, any files you import are added to your program. If you import a directory, Cadl will look for a main.cadl file inside that directory.

+

The path you import must either begin with "./" or "../" or otherwise be an absolute path. The path must either refer to a directory, or else have an extension of either ".cadl" or ".js". The following demonstrates how to use imports to assemble a Cadl program from multiple files:

+
// main.cadl
+import "./models";
+op getDog(): Dog;
+
+
+
// models/main.cadl
+import "./dog.cadl";
+
+
+
// models/dog.cadl
+namespace Models;
+model Dog {}
+
+
+

Decorators

+

Decorators enable a developer to attach metadata to types in a Cadl program. They can also be used to calculate types based on their inputs. Decorators are the backbone of Cadl's extensibility and give it the flexibility to describe many different kinds of APIs and associated metadata like documentation, constraints, samples, and the like.

+

Many Cadl constructs can be decorated, including namespaces, operations and their parameters, and models and their members.

+

Decorators are defined using JavaScript functions that are exported from a standard ECMAScript module. When you import a JavaScript file, Cadl will look for any exported functions, and make them available as decorators inside the Cadl syntax. When a decorated declaration is evaluated by Cadl, it will invoke the decorator function, passing along a reference to the current compilation, an object representing the type it is attached to, and any arguments the user provided to the decorator.

+

Decorators are attached by adding the decorator before the element you want to decorate, prefixing the name of the decorator with @. Arguments can be provided by using parentheses in a manner similar to many programming languages, e.g. @dec(1, "hi", { a: string }). The parentheses can be omitted when no arguments are provided.

+

The following shows an example of declaring and then using a decorator:

+
// model.js
+export function logType(compilation, targetType, name) {
+  console.log(name + ": " + targetType.kind);
+}
+
+
// main.cadl
+import "./model.js";
+
+@logType("Dog type")
+model Dog {
+  @logType("Name type")
+  name: string;
+}
+
+
+

After running this Cadl program, the following will be printed to the console:

+
Name type: ModelProperty
+Dog type: Model
+
+

Built-in decorators

+

Cadl comes built-in with a number of decorators that are useful for defining service APIs regardless of what protocol or language you're targeting.

+
    +
  • @deprecated - indicates that the decorator target has been deprecated.
  • +
  • @doc - attach a documentation string. Works great with multi-line string literals.
  • +
  • @error - specify a model is representing an error
  • +
  • @format - specify the data format hint for a string type
  • +
  • @friendlyName - specify a friendly name to be used instead of declared model name
  • +
  • @indexer
  • +
  • @inspectType/@inspectTypeName - displays information about a type during compilation
  • +
  • @key - mark a model property as the key to identify instances of that type
  • +
  • @knownValues - mark a string type with an enum that contains all known values
  • +
  • @list -
  • +
  • @minLength/@maxLength - set the min and max lengths for strings
  • +
  • @minValue/@maxValue - set the min and max values of number types
  • +
  • @pattern - set the pattern for a string using regular expression syntax
  • +
  • @secret - mark a string as a secret value that should be treated carefully to avoid exposure
  • +
  • @summary - attach a documentation string, typically a short, single-line description.
  • +
  • @tag - attach a simple tag to a declaration
  • +
  • @visibility/@withVisibility
  • +
  • @withDefaultKeyVisibility - set the visibility of key properties in a model if not already set.
  • +
  • @withOptionalProperties - makes all properties of the target type optional.
  • +
  • @withoutDefaultValues - removes all read-only properties from the target type.
  • +
  • @withoutOmittedProperties - removes all model properties that match a type.
  • +
  • @withUpdateableProperties - remove all read-only properties from the target type
  • +
+
@inspectType
+

Syntax:

+
@inspectType(message)
+@inspectTypeName(message)
+
+

@inspectType displays information about a type during compilation. +@inspectTypeName displays information and name of type during compilation. +They can be specified on any language element -- a model, an operation, a namespace, etc.

+
@deprecated
+

Syntax:

+
@deprecated(message)
+
+

@deprecated marks a type as deprecated. It can be specified on any language element -- a model, an operation, a namespace, etc.

+
@friendlyName
+

Syntax:

+
@friendlyName(string)
+
+

@friendlyName specifies an alternate model name to be used instead of declared model name. It can be specified on a model.

+
@pattern
+

Syntax:

+
@pattern(regularExpressionText)
+
+

@pattern specifies a regular expression on a string property.

+
@summary
+

Syntax:

+
@summary(text [, object])
+
+

@summary attaches a documentation string. It is typically used to give a short, single-line +description, and can be used in combination with or instead of @doc.

+

The first argument to @summary is a string, which may contain template parameters, enclosed in braces, +which are replaced with an attribute for the type (commonly "name") passed as the second (optional) argument.

+

@summary can be specified on any language element -- a model, an operation, a namespace, etc.

+
@doc
+

Syntax:

+
@doc(text [, object])
+
+

@doc attaches a documentation string. Works great with multi-line string literals.

+

The first argument to @doc is a string, which may contain template parameters, enclosed in braces, +which are replaced with an attribute for the type (commonly "name") passed as the second (optional) argument.

+

@doc can be specified on any language element -- a model, an operation, a namespace, etc.

+
@knownValues
+

Syntax:

+
@knownValues(enumTypeReference)
+
+

@knownValues marks a string type with an enum that contains all known values

+

The first parameter is a reference to an enum type that enumerates all possible values that the +type accepts.

+

@knownValues can only be applied to model types that extend string.

+

Example:

+
enum OperationStateValues {
+  Running,
+  Completed,
+  Failed
+}
+
+@knownValues(OperationStateValues)
+model OperationState extends string {
+}
+
+
@key
+

Syntax:

+
@key([keyName])
+
+

@key - mark a model property as the key to identify instances of that type

+

The optional first argument accepts an alternate key name which may be used by emitters. +Otherwise, the name of the target property will be used.

+

@key can only be applied to model properties.

+
@secret
+

Syntax:

+
@secret
+
+

@secret mark a string as a secret value that should be treated carefully to avoid exposure

+
@secret
+model Password is string;
+
+
+

@secret can only be applied to string model;

+
@format
+

Syntax:

+
@format(formatName)
+
+

@format - specify the data format hint for a string type

+

The first argument is a string that identifies the format that the string type expects. Any string +can be entered here, but a Cadl emitter must know how to interpret

+

For Cadl specs that will be used with an OpenAPI emitter, the OpenAPI specification describes possible +valid values for a string type's format:

+

https://swagger.io/specification/#data-types

+

@format can be applied to a type that extends from string or a string-typed model property.

+
@error
+

Syntax:

+
@error
+
+

@format - specify that this model is an error type

+

For HTTP API this can be used to represent a failure.

+
Visibility decorators
+

Additionally, the decorators @withVisibility and @visibility provide an extensible visibility framework that allows for defining a canonical model with fine-grained visibility flags and derived models that apply those flags. Flags can be any string value and so can be customized to your application. Also, @visibility can take multiple string flags to set multiple flags at once, and @withVisibility can take multiple string flags to filter on at once.

+

Consider the following example:

+
model Dog {
+  // the service will generate an ID, so you dont need to send it.
+  @visibility("read") id: int32;
+  // the service will store this secret name, but won't ever return it
+  @visibility("write") secretName: string;
+  // no flags are like specifying all flags at once, so in this case
+  // equivalent to @visibility("read", "write")
+  name: string;
+}
+
+// The spread operator will copy all the properties of Dog into ReadDog,
+// and withVisibility will remove any that don't match the current
+// visibility setting
+@withVisibility("read")
+model ReadDog {
+  ...Dog;
+}
+
+@withVisibility("write")
+model WriteDog {
+  ...Dog;
+}
+
+
+

@withDefaultKeyVisibility

+

Syntax:

+
@withDefaultKeyVisibility(string)
+
+

@withDefaultKeyVisibility - set the visibility of key properties in a model if not already set. The first argument accepts a string representing the desired default +visibility value. +If a key property already has a visibility decorator then the default visibility is not applied.

+

@withDefaultKeyVisibility can only be applied to model types.

+

@withOptionalProperties

+

Syntax:

+
@withOptionalProperties()
+
+

@withOptionalProperties makes all properties of the target type optional.

+

@withOptionalProperties can only be applied to model types.

+

@withoutDefaultValues

+

Syntax:

+
@withoutDefaultValues()
+
+

@withoutDefaultValues removes all read-only properties from the target type.

+

@withoutDefaultValues can only be applied to model types.

+

@withoutOmittedProperties

+

Syntax:

+
@withoutOmittedProperties(type)
+
+

@withoutOmittedProperties removes all model properties that match a type.

+

@withoutOmittedProperties can only be applied to model types.

+

@withUpdateableProperties

+

Syntax:

+
@withUpdateableProperties()
+
+

@withUpdateableProperties remove all read-only properties from the target type.

+

@withUpdateableProperties can only be applied to model types.

+

Libraries

+

Cadl libraries are bundles of useful Cadl declarations and decorators into reusable packages. Cadl libraries are actually npm packages under the covers. Official Cadl libraries can be found with the @cadl-lang/ or @azure-tools/cadl- npm package name prefix. Libraries can be either a language library, an emitter library or both.

+

Setting up Cadl library

+

The first step in using a library is to install it via npm. You can get npm and node from the Node.js website.

+

If you haven't already initialized your Cadl project's package.json file, now would be a good time to do so. The package.json file lets you track the dependencies your project depends on, and is a best practice to check in along with any Cadl files you create. Run npm init create your package.json file.

+

Then, in your Cadl project directory, type npm install libraryName to install a library. For example, to install the official Cadl REST API bindings and OpenAPI generator, you would type npm install @cadl-lang/rest @cadl-lang/openapi3.

+

Using language libraries

+

Lastly, you need to import the libraries into your Cadl program. By convention, all external dependencies are imported in your main.cadl file, but can be in any Cadl file imported into your program. Importing the two libraries we installed above would look like this:

+
// in main.cadl
+import "@cadl-lang/rest";
+import "@cadl-lang/openapi3";
+
+
+

Using emitter libraries

+

The emitter needs to be referenced either via the cli --emit option or configured in the CADL config file.

+
# Run openapi3 emitter on the spec
+cadl compile . --emit=@cadl-lang/openapi3
+
+

or in the config file cadl-project.yaml

+
emitters:
+  "@cadl-lang/openapi3": true
+
+
Configuring emitter libraries
+

Emitters might provide some options to configure the generated output. Those options can be set either via the config cadl-project.yaml or the cli

+
    +
  • Via config
  • +
+
emitters:
+  <emitterName>:
+    <optionName>: <value>
+
+# For example
+emitters:
+ "@cadl-lang/openapi3":
+    output-file: my-custom-file.json
+
+
    +
  • Via cli
  • +
+
--option "<emitterName>.<optionName>=<value>"
+
+# For example
+--option "@cadl-lang/openapi3.output-file=my-custom-file.json"
+
+

Standard emitter libraries

+

Cadl has following standard libraries:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LibraryPackage nameDocumentationSource
OpenAPI binding library@cadl-lang/openapiReadme.mdLink
OpenAPI 3@cadl-lang/openapi3Readme.mdLink
HTTP, REST@cadl-lang/restReadme.mdLink
+

Creating libraries

+

Creating a Cadl library is essentially the same as creating any NPM library. Consult the official documentation for more info. main should refer to a JS file that exports all your library's decorators and helper utilities.

+

The package.json file for a Cadl library requires one additional field: cadlMain, which refers to the root file of your Cadl program similar to how main refers to the root of a JS program. If you don't have any Cadl declarations, cadlMain can be identical to main.

+

REST APIs

+

With the language building blocks we've covered so far we're ready to author our first REST API. Cadl has an official REST API "binding" called @cadl-lang/rest. It's a set of Cadl declarations and decorators that describe REST APIs and can be used by code generators to generate OpenAPI descriptions, implementation code, and the like.

+

Cadl also has an official OpenAPI emitter called @cadl-lang/openapi3 that consumes the REST API bindings and emits standard OpenAPI descriptions. This can then be fed in to any OpenAPI code generation pipeline.

+

The following examples assume you have imported both @cadl-lang/openapi3 and @cadl-lang/rest somewhere in your Cadl program (though importing them in main.cadl is the standard convention). For detailed library reference, please see rest library's Readme.md.

+

Service definition and metadata

+

A definition for a service is the namespace that contains all the operations for the service and carries top-level metadata like service name and version. Cadl offers the following decorators for providing this metadata, and all are optional.

+
    +
  • @serviceTitle - the title of the service
  • +
  • @serviceVersion - the version of the service. Can be any string, but later version should lexicographically sort after earlier versions
  • +
  • @server - the host of the service. Can accept parameters.
  • +
  • @produces - the content types the service may produce
  • +
  • @consumes - the content types that may be sent to the service
  • +
+

Here's an example that uses these to define a Pet Store service:

+
@serviceTitle("Pet Store Service")
+@serviceVersion("2021-03-25")
+@server("https://example.com", "Single server endpoint")
+@doc("This is a sample server Petstore server.")
+@Cadl.Rest.produces("application/json", "image/png")
+@Cadl.Rest.consumes("application/json")
+namespace PetStore;
+
+
+

The server keyword can take a third parameter with parameters as necessary:

+
@server("https://{region}.foo.com", "Regional endpoint", {
+  @doc("Region name")
+  region?: string = "westus",
+})
+
+

Resources & routes

+

Resources are operations that are grouped in a namespace. You declare such a namespace by adding the @route decorator to provide the path to that resource:

+
using Cadl.Http;
+
+@route("/pets")
+namespace Pets {
+
+}
+
+
+

To define an operation on this resource, you need to provide the HTTP verb for the route using the @get, @head @post, @put, @patch, or @delete decorators. Alternatively, you can name your operation list, create, read, update, delete, or deleteAll and the appropriate verb will be used automatically. Lets add an operation to our Pets resource:

+
@route("/pets")
+namespace Pets {
+  op list(): Pet[];
+
+  // or you could also use
+  @get op listPets(): Pet[];
+}
+
+
+
Automatic route generation
+

Instead of manually specifying routes using the @route decorator, you automatically generate +routes from operation parameters by applying the @autoRoute decorator to an operation, namespace, +or interface containing operations.

+

For this to work, an operation's path parameters (those marked with @path) must also be marked with +the @segment decorator to define the preceding path segment.

+

This is especially useful when reusing common parameter sets defined as model types.

+

For example:

+
model CommonParameters {
+  @path
+  @segment("tenants")
+  tenantId: string;
+
+  @path
+  @segment("users")
+  userName: string;
+}
+
+@autoRoute
+interface UserOperations {
+  @get
+  getUser(...CommonParameters): User | Error;
+
+  @put
+  updateUser(...CommonParameters, user: User): User | Error;
+}
+
+

This will result in the following route for both operations

+
/tenants/{tenantId}/users/{userName}
+
+

Path and query parameters

+

Model properties and parameters which should be passed as path and query parameters use the @path and @query parameters respectively. Let's modify our list operation to support pagination, and add a read operation to our Pets resource:

+
@route("/pets")
+namespace Pets {
+  op list(@query skip: int32, @query top: int32): Pet[];
+  op read(@path petId: int32): Pet;
+}
+
+
+

Path parameters are appended to the URL unless a substitution with that parameter name exists on the resource path. For example, we might define a sub-resource using the following Cadl. Note how the path parameter for our sub-resource's list operation corresponds to the substitution in the URL.

+
@route("/pets/{petId}/toys")
+namespace PetToys {
+  op list(@path petId: int32): Toy[];
+}
+
+
+

Request & response bodies

+

Request and response bodies can be declared explictly using the @body decorator. Let's add an endpoint to create a pet. Let's also use this decorator for the responses, although this doesn't change anything about the API.

+
@route("/pets")
+namespace Pets {
+  op list(@query skip: int32, @query top: int32): {
+    @body pets: Pet[];
+  };
+  op read(@path petId: int32): {
+    @body pet: Pet;
+  };
+  @post
+  op create(@body pet: Pet): {};
+}
+
+
+

Note that in the absence of explicit @body:

+
    +
  1. The set of parameters that are not marked @header, @query, or @path form the request body.
  2. +
  3. The set of properties of the return model that are not marked @header, @query, or @path form the response body.
  4. +
  5. If the return type is not a model, then it defines the response body.
  6. +
+

This is how we were able to return Pet and Pet[] bodies without using @body for list and read. We can actually write +create in the same terse style by spreading the Pet object into the parameter list like this:

+
@route("/pets")
+namespace Pets {
+  @post
+  op create(...Pet): {};
+}
+
+
+

Polymorphism with discriminators

+

A pattern often used in REST APIs is to define a request or response body as having one of several different shapes, with a property called the +"discriminator" indicating which actual shape is used for a particular instance. +Cadl supports this pattern with the @discriminator decorator of the Rest library.

+

The @discrminator decorator takes one argument, the name of the discriminator property, and should be placed on the +model for the request or response body. The different shapes are then defined by separate models that extend this request or response model. +The discriminator property is defined in the "child" models with the value or values that indicate an instance that conforms to its shape.

+

As an example, a Pet model that allows instances that are either a Cat or a Dog can be defined with

+
@discriminator("kind")
+model Pet {
+  name: string;
+  weight?: float32;
+}
+model Cat extends Pet {
+  kind: "cat";
+  meow: int32;
+}
+model Dog extends Pet {
+  kind: "dog";
+  bark: string;
+}
+
+
+

Headers

+

Model properties and parameters that should be passed in a header use the @header decorator. The decorator takes the header name as a parameter. If a header name is not provided, it is inferred from the property or parameter name. Let's add etag support to our pet store's read operation.

+
@route("/pets")
+namespace Pets {
+  op list(@query skip: int32, @query top: int32): {
+    @body pets: Pet[];
+  };
+  op read(@path petId: int32, @header ifMatch?: string): {
+    @header eTag: string;
+    @body pet: Pet;
+  };
+  @post
+  op create(@body pet: Pet): {};
+}
+
+
+

Status codes

+

Use the @header decorator on a property named statusCode to declare a status code for a response. Generally, setting this to just int32 isn't particularly useful. Instead, use number literal types to create a discriminated union of response types. Let's add status codes to our responses, and add a 404 response to our read endpoint.

+
@route("/pets")
+namespace Pets {
+  op list(@query skip: int32, @query top: int32): {
+    @statusCode statusCode: 200;
+    @body pets: Pet[];
+  };
+  op read(@path petId: int32, @header ifMatch?: string): {
+    @statusCode statusCode: 200;
+    @header eTag: string;
+    @body pet: Pet;
+  } | {
+    @statusCode statusCode: 404;
+  };
+  op create(@body pet: Pet): {
+    @statusCode statusCode: 204;
+  };
+}
+
+
+

Built-in response shapes

+

Since status codes are so common for REST APIs, Cadl comes with some built-in types for common status codes so you don't need to declare status codes so frequently.

+

There is also a Body type, which can be used as a shorthand for { @body body: T } when an explicit body is required.

+

Lets update our sample one last time to use these built-in types:

+
model ETag {
+  @header eTag: string;
+}
+@route("/pets")
+namespace Pets {
+  op list(@query skip: int32, @query top: int32): OkResponse & Body<Pet[]>;
+  op read(@path petId: int32, @header ifMatch?: string): (OkResponse &
+    Body<Pet> &
+    ETag) | NotFoundResponse;
+  @post
+  op create(...Pet): NoContentResponse;
+}
+
+
+

Note that the default status code is 200 for non-empty bodies and 204 for empty bodies. Similarly, explicit Body<T> is not required when T is known to be a model. So the following terser form is equivalent:

+
@route("/pets")
+namespace Pets {
+  op list(@query skip: int32, @query top: int32): Pet[];
+  op read(@path petId: int32, @header ifMatch?: string): (Pet & ETag) | NotFoundResponse;
+  @post
+  op create(...Pet): {};
+}
+
+
+

Finally, another common style is to make helper response types that are +shared across a larger service definition. In this style, you can be +entirely explicit while also keeping operation definitions concise.

+

For example, we could write :

+
model ListResponse<T> {
+  ...OkResponse;
+  ...Body<T[]>;
+}
+
+model ReadSuccessResponse<T> {
+  ...OkResponse;
+  ...ETag;
+  ...Body<T>;
+}
+
+alias ReadResponse<T> = ReadSuccessResponse<T> | NotFoundResponse;
+
+model CreateResponse {
+  ...NoContentResponse;
+}
+
+@route("/pets")
+namespace Pets {
+  op list(@query skip: int32, @query top: int32): ListResponse<Pet>;
+  op read(@path petId: int32, @header ifMatch?: string): ReadResponse<Pet>;
+  @post
+  op create(...Pet): CreateResponse;
+}
+
+
+

CADL Config

+

Cadl has a configuration file cadl-project.yaml that right now is only used to configure the default emitter to use. +The config file needs to be a sibling of the package.json. Cadl will look for the following files in that order and pick the 1st one found:

+

Configuration schema:

+
# Map of the default emitters to use when not using `--emit`
+emitters:
+  <emitterName>: true
+
+ +
+
+ + + \ No newline at end of file From f35a9338f9be14f91891a652a93b79e0d5222448 Mon Sep 17 00:00:00 2001 From: Descartes Date: Tue, 16 Aug 2022 08:53:31 -0700 Subject: [PATCH 45/81] Remove output file and adding _website folder to gitignore --- packages/website/_website/blog/index.html | 92 -- .../website/_website/community/index.html | 92 -- packages/website/_website/css/footer.css | 72 -- packages/website/_website/css/global.css | 54 - packages/website/_website/css/navbar.css | 63 -- packages/website/_website/css/playground.css | 16 - packages/website/_website/css/style.css | 5 - packages/website/_website/css/tutorial.css | 6 - packages/website/_website/docs/index.html | 92 -- packages/website/_website/download/index.html | 92 -- packages/website/_website/index.html | 93 -- packages/website/_website/play/index.html | 95 -- packages/website/_website/tutorial/index.html | 948 ------------------ 13 files changed, 1720 deletions(-) delete mode 100644 packages/website/_website/blog/index.html delete mode 100644 packages/website/_website/community/index.html delete mode 100644 packages/website/_website/css/footer.css delete mode 100644 packages/website/_website/css/global.css delete mode 100644 packages/website/_website/css/navbar.css delete mode 100644 packages/website/_website/css/playground.css delete mode 100644 packages/website/_website/css/style.css delete mode 100644 packages/website/_website/css/tutorial.css delete mode 100644 packages/website/_website/docs/index.html delete mode 100644 packages/website/_website/download/index.html delete mode 100644 packages/website/_website/index.html delete mode 100644 packages/website/_website/play/index.html delete mode 100644 packages/website/_website/tutorial/index.html diff --git a/packages/website/_website/blog/index.html b/packages/website/_website/blog/index.html deleted file mode 100644 index 01d1e4ff7c..0000000000 --- a/packages/website/_website/blog/index.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - Blogs about Cadl. - - - -
- -
-
-

Blogs about Cadl.SDFs

- -
- - - \ No newline at end of file diff --git a/packages/website/_website/community/index.html b/packages/website/_website/community/index.html deleted file mode 100644 index eefd0a761c..0000000000 --- a/packages/website/_website/community/index.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - Engage with the Community. - - - -
- -
-
-

Found out about Cadl Developers.

- -
- - - \ No newline at end of file diff --git a/packages/website/_website/css/footer.css b/packages/website/_website/css/footer.css deleted file mode 100644 index 263643ec51..0000000000 --- a/packages/website/_website/css/footer.css +++ /dev/null @@ -1,72 +0,0 @@ -footer { - position: fixed; - bottom: 0; - width: 100%; - height: auto; - padding-top: 0.2rem; - background-color: #222; - font-size: 12px; -} - -.footer { - background: var(--main-color); - width: 100%; - height: auto; - bottom: 0; - padding-bottom: .1rem; - color: var(--text-in-main-color); -} - -.footer-row { - display: grid; - padding-left: .5rem; - padding-right: .5rem; - margin: 0 auto; - max-width: 1040px; -} - -#cadl h1, -#microsoft a img, -.column2 h2, -.column3 h2 { - margin-bottom: -0.5rem; -} - -.column1 { - grid-column: 1; - grid-row: 3; - width: 250px; -} - -.column2 { - grid-column: 2; - grid-row: 3; - width: 350px; -} - -.column3 { - grid-column: 3; - grid-row: 3; - width: 350px; -} - -.column2 h2, -.column3 h2 { - text-align: center; -} - -.column2 ul, -.column3 ul { - columns: 2; -} - -.column2 ul li, -.column3 ul li { - margin-bottom: .8rem; - font-weight: 600; - list-style: none; -} - -.footer a { - color: var(--text-in-main-color); -} \ No newline at end of file diff --git a/packages/website/_website/css/global.css b/packages/website/_website/css/global.css deleted file mode 100644 index eb5ebe888b..0000000000 --- a/packages/website/_website/css/global.css +++ /dev/null @@ -1,54 +0,0 @@ -* { - box-sizing: border-box; -} - -body { - margin: 0; - padding: 0; - font-family: var(--font-family); - overflow: auto; -} - -.app_version { - background: var(--version_bar-color); - color: var(--text-in-main-color); - text-align: center; -} - -:root { - --font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; - ; - --main-color: #0B6A0B; - --text-in-main-color: #ffffff; - --tab-inner-color: #095A09; - --version_bar-color: #013301; -} - -html { - height: 100%; -} - - -/* Extra small devices (phones, 600px and down) */ - -@media only screen and (max-width: 600px) {} - - -/* Small devices (portrait tablets and large phones, 600px and up) */ - -@media only screen and (min-width: 600px) {} - - -/* Medium devices (landscape tablets, 768px and up) */ - -@media only screen and (min-width: 768px) {} - - -/* Large devices (laptops/desktops, 992px and up) */ - -@media only screen and (min-width: 992px) {} - - -/* Extra large devices (large laptops and desktops, 1200px and up) */ - -@media only screen and (min-width: 1200px) {} \ No newline at end of file diff --git a/packages/website/_website/css/navbar.css b/packages/website/_website/css/navbar.css deleted file mode 100644 index ef276fb44c..0000000000 --- a/packages/website/_website/css/navbar.css +++ /dev/null @@ -1,63 +0,0 @@ -.navbar { - display: flex; - justify-content: space-between; - align-items: center; - height: 3rem; - background: var(--main-color); -} - -.navbar-search_box { - background: var(--main-color); -} - -.navbar-search_box { - display: block; - float: right; -} - -.navbar-logo { - margin-right: 2rem; - float: left; -} - -.navbar-logo a { - color: white; - text-decoration: none; -} - -.navbar-links { - display: flex; - flex-direction: row; -} - -.navbar-sign { - display: flex; - justify-content: flex-end; - float: inline-start; -} - -.navbar-links p, -.navbar-sign p { - font-weight: 500; - font-size: 18px; - line-height: 25px; - text-transform: capitalize; - margin: 0 1rem; - cursor: pointer; -} - -.navbar-links ul li { - list-style: none; - font-weight: 500; - font-size: 18px; - line-height: 25px; - text-transform: capitalize; - display: inline; - margin: 0 1rem; - cursor: pointer; -} - -.navbar-links a { - text-decoration: none; - color: white; -} \ No newline at end of file diff --git a/packages/website/_website/css/playground.css b/packages/website/_website/css/playground.css deleted file mode 100644 index 9c25806e08..0000000000 --- a/packages/website/_website/css/playground.css +++ /dev/null @@ -1,16 +0,0 @@ -.play-iframe iframe { - position: relative; - width: 100%; - height: 100%; - border: .1px solid; - left: 0; - top: 0; -} - -.play-iframe { - display: flex; - flex: 1 0 auto; - margin: 1.5rem; - overflow: hidden; - height: 70vh; -} \ No newline at end of file diff --git a/packages/website/_website/css/style.css b/packages/website/_website/css/style.css deleted file mode 100644 index 11092976c2..0000000000 --- a/packages/website/_website/css/style.css +++ /dev/null @@ -1,5 +0,0 @@ -@import url("global.css"); -@import url("navbar.css"); -@import url("footer.css"); -@import url("tutorial.css"); -@import url("playground.css"); \ No newline at end of file diff --git a/packages/website/_website/css/tutorial.css b/packages/website/_website/css/tutorial.css deleted file mode 100644 index e742993811..0000000000 --- a/packages/website/_website/css/tutorial.css +++ /dev/null @@ -1,6 +0,0 @@ -.tutorial { - margin: auto; - width: 1024px; - padding: 0.5rem 1.5rem; - background-color: #ebebeb; -} \ No newline at end of file diff --git a/packages/website/_website/docs/index.html b/packages/website/_website/docs/index.html deleted file mode 100644 index 47717314b7..0000000000 --- a/packages/website/_website/docs/index.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - Cadl Docummentation. - - - -
- -
-
-

Cadl Documentations.

- -
- - - \ No newline at end of file diff --git a/packages/website/_website/download/index.html b/packages/website/_website/download/index.html deleted file mode 100644 index 08f46cb6c0..0000000000 --- a/packages/website/_website/download/index.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - Installing Cadl. - - - -
- -
-
-

Installing Cadl.

- -
- - - \ No newline at end of file diff --git a/packages/website/_website/index.html b/packages/website/_website/index.html deleted file mode 100644 index 6ec2fb2f7c..0000000000 --- a/packages/website/_website/index.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - Hello World - - - -
- -
- -
-

Getting started with Cadl.

- -
- - - \ No newline at end of file diff --git a/packages/website/_website/play/index.html b/packages/website/_website/play/index.html deleted file mode 100644 index 322e925f1f..0000000000 --- a/packages/website/_website/play/index.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - Cadl Playground. - - - -
- -
-
-
-
- -
-
-
- - - \ No newline at end of file diff --git a/packages/website/_website/tutorial/index.html b/packages/website/_website/tutorial/index.html deleted file mode 100644 index d30fac5f4b..0000000000 --- a/packages/website/_website/tutorial/index.html +++ /dev/null @@ -1,948 +0,0 @@ - - - - - - - Get Started with Cadl. - - - -
- -
-
- -
-

Introduction to API Definition Language (Cadl)

-

Cadl is a language for describing cloud service APIs and generating other API description languages, client and service code, documentation, and other assets. Cadl provides highly extensible core language primitives that can describe API shapes common among REST, GraphQL, gRPC, and other protocols.

-

Cadl is an object oriented dynamic language whose evaluation results in an object model describing service APIs. Unlike typical programming languages, Cadl consists primarily of declarations, however these declarations can be decorated to provide highly dynamic behavior.

-

Cadl's primary benefits include:

-
    -
  • Protocol agnostic: it can describe and generate code for APIs across multiple protocols and serialization languages
  • -
  • Modular: developers can group common API shapes and conventions together and reuse them
  • -
  • Terse: the syntax is expressive, capable of describing complex APIs with minimal code
  • -
  • Extensible: developers can customize the language to describe just about any style of API
  • -
-

Language Tour

-

Cadl consists of the following language features:

-
    -
  • Models: data shapes or schemas
  • -
  • Type Literals: strings and numbers with specific values
  • -
  • Type Operators: syntax for composing model types into other types
  • -
  • Operations: service endpoints with parameters and return values
  • -
  • Namespaces & Usings: groups models and operations together into hierarchical groups with friendly names
  • -
  • Interfaces: groups operations
  • -
  • Imports: links declarations across multiple files and libraries together into a single program
  • -
  • Decorators: bits of TypeScript code that add metadata or sometimes mutate declarations
  • -
  • Libraries: encapsulate Cadl definitions into reusable components
  • -
-

In addition, Cadl comes with a standard library for describing REST APIs and generating OpenAPI. Other protocol bindings are a work in progress!

-

Models

-

Cadl models are used to describe data shapes or schemas. Models have any number of members and can extend and be composed with other models. Members are required by default, but can made optional by appending a "?" to the member name. A default value can also be provided with adding = <value> on an optional property.

-

The following defines a data shape with three members:

-
model Dog {
-  name: string;
-  favoriteToy?: string;
-  bestTreat?: string = "chicken";
-}
-
-
-

Built-in Models

-

Type relations

-

Cadl comes with built-in models for common data types:

-
    -
  • string: sequence of characters
  • -
  • bytes: a sequence of bytes
  • -
  • int8: 8-bit signed integer
  • -
  • int16: 16-bit signed integer
  • -
  • int32: 32-bit signed integer
  • -
  • int64: 64-bit signed integer
  • -
  • uint8: 8-bit unsigned integer
  • -
  • uint16: 16-bit unsigned integer
  • -
  • uint32: 32-bit unsigned integer
  • -
  • uint64: 64-bit unsigned integer
  • -
  • safeint: an integer that is safe to store in a IEEE754 double and safe to round trip through all JSON processors.
  • -
  • float32: IEEE 754 single-precision floating point number
  • -
  • float64: IEEE 754 double-precision floating point number
  • -
  • plainDate: A date on a calendar without a time zone, e.g. "April 10th"
  • -
  • plainTime: A time on a clock without a time zone, e.g. "3:00 am"
  • -
  • zonedDateTime: A date and time in a particular time zone, e.g. "April 10th at 3:00am in PST"
  • -
  • duration: A duration/time period. e.g 5s, 10h
  • -
  • boolean: true or false
  • -
  • null: the null value found in e.g. JSON.
  • -
  • Record<T>: a dictionary with string K and value T.
  • -
  • unknown: A top type in Cadl that all types can be assigned to.
  • -
  • void: A function return type indicating the function doesn't return a value.
  • -
  • never: The never type indicates the values that will never occur. Typically, you use the never type to represent the return type of a function that always throws an error.
  • -
-

Spread

-

The spread operator takes the members of a source model and copies them into a target model. Spread doesn't create any nominal relationship between source and target, and so it's useful when you want to reuse common properties without reasoning about or generating complex inheritance relationships.

-
model Animal {
-  species: string;
-}
-
-model Pet {
-  name: string;
-}
-
-model Dog {
-  ...Animal;
-  ...Pet;
-}
-
-// Dog is equivalent to the following declaration:
-model Dog {
-  species: string;
-  name: string;
-}
-
-
-

Extends

-

Sometimes you want to create an explicit relationship between two models, for example when you want to emit class definitions in languages which support inheritance. The extends keyword can be used to establish such a relationship. It is also used extensively with interface to compose from existing interface building blocks.

-
model Animal {
-  species: string;
-}
-
-model Dog extends Animal {}
-
-
-

Is

-

Sometimes you want to copy all aspects of a type without creating a nominal inheritance relationship. The is keyword can be used for this purpose. It is like spread, but also copies decorators in addition to properties. One common use case is to give a better name to a template instantiation:

-
@decorator
-model Thing<T> {
-  property: T;
-}
-
-model StringThing is Thing<string>;
-
-// StringThing declaration is equivalent to the following declaration:
-@decorator
-model StringThing {
-  property: string;
-}
-
-
-

Enums

-

Enums define a type which can hold one of a set of constant values.

-
enum Color {
-  Red,
-  Blue,
-  Green,
-}
-
-
-

In this case, we haven't specified how the constants will be represented, allowing for different choices in different scenarios. For example, the OpenAPI emitter will choose string values "Red", "Green", "Blue". Another protocol might prefer to assign incrementing numeric values 0, 1, 2.

-

We can also specify explicit string or numeric values:

-
enum Color {
-  Red: "red",
-  Blue: "blue",
-  Green: "green",
-}
-
-enum Priority {
-  High: 100,
-  Low: 0,
-}
-
-
-

Templates

-

It is often useful to let the users of a model fill in certain details. Model templates enable this pattern. Similar to generics found in other languages, model templates declare template parameters that users provide when referencing the model.

-
model Page<T> {
-  size: number;
-  item: T[];
-}
-
-model DogPage {
-  ...Page<Dog>;
-}
-
-
-

A template parameter can be given a default value with = <value>.

-
model Page<T = string> {
-  size: number;
-  item: T[];
-}
-
-
-

Type Aliases

-

Sometimes it's convenient to alias a model template instantiation or type produced via type operators (covered later) as a convenient name. Aliases allow this:

-
alias DogPage = Page<Dog>;
-
-
-

Unlike model, alias does not create a new entity, and as such will not change generated code in any way. An alias merely describes a source code shorthand to avoid repeating the right-hand side in multiple places.

-

Because alias does not create a new entity, you cannot specify decorators on an alias.

-

Type Literals

-

API authors often need to describe API shapes in terms of specific literal values. For example, this operation returns this specific integer status code, or this model member can be one of a few specific string values. It is also often useful to pass specific literal values to decorators. Cadl supports string, number, and boolean literal values to support these cases:

-
model BestDog {
-  name: "Suki";
-  age: 14;
-  best: true;
-}
-
-
-

String literal types can also be created using the triple-quote syntax which enables multi-line strings:

-
model Dog {
-  favoriteFoods: """
-    McDonalds
-    Chipotle
-    And so on
-    """;
-}
-
-
-

Type Operators

-

Cadl supports a few type operators that make it easy to compose new models from other models.

-

Unions

-

Unions describe a type that must be exactly one of the union's constituents. Create a union with the | operator.

-
alias GoodBreed = Beagle | GermanShepherd | GoldenRetriever;
-
-
-
Named unions
-

There is also a declaration syntax for naming a union and its options:

-
union GoodBreed {
-  beagle: Beagle,
-  shepherd: GermanShepherd,
-  retriever: GoldenRetriever,
-}
-
-
-

The above example is equivalent to the GoodBreed alias above, except that emitters can actually see GoodBreed as a named entity and also see the beagle, shepherd, and retriever names for the options. It also becomes possible to apply decorators to each of the options when using this form.

-

Intersections

-

Intersections describe a type that must include all the intersection's constituents. Create an intersection with the & operator.

-
alias Dog = Animal & Pet;
-
-
-

Arrays

-

Arrays describe lists of things. Create an Array type with the [] operator.

-
alias Pack = Dog[];
-
-
-

Operations

-

Operations describe service endpoints and consist of an operation name, parameters, and return type. Operations are declared using the op keyword:

-
op getDog(name: string): Dog;
-
-
-

The operation's parameters describe a model, so anything you can do in a model you can do in a parameter list as well, including using the spread operator:

-
op getDog(...commonParams, name: string): Dog;
-
-
-

Often an endpoint returns one of any number of models. For example, there might be a return type for when an item is found, and a return type for when an item isn't found. Unions are used to describe this pattern:

-
model DogNotFound {
-  error: "Not Found";
-}
-
-op getDog(name: string): Dog | DogNotFound;
-
-
-

Namespaces & Usings

-

Namespaces let you group related types together into namespaces. This helps organize your types, making them easier to find and prevents name conflicts. Namespaces are merged across files, so you can reference any type anywhere in your Cadl program via its namespace. You can create namespace blocks like the following:

-
namespace Models {
-  model Dog {}
-}
-
-op getDog(): Models.Dog;
-
-
-

You can also put an entire Cadl file into a namespace by using the blockless namespace syntax:

-
// models.cadl
-namespace Models;
-model Dog {}
-
-
-
// main.cadl
-import "./models.cadl";
-op getDog(): Models.Dog;
-
-
-

Namespace declarations can declare multiple namespaces at once by using a dotted member expression. There's no need to declare nested namespace blocks if you don't want to.

-
namespace A.B;
-namespace C.D {
-
-}
-namespace C.D.E {
-  model M {}
-}
-
-alias M = A.B.C.D.E.M;
-
-
-

It can be convenient to add references to a namespace's declarations to your local namespace, especially when namespaces can become deeply nested. The using statement lets us do this:

-
// models.cadl
-namespace Service.Models;
-model Dog {}
-
-
-
// main.cadl
-import "./models.cadl";
-using ServiceModels;
-op getDog(): Dog; // here we can use Dog directly.
-
-
-

The bindings introduced by a using statement are local to the namespace they are declared in. They do not become part of the namespace themselves.

-
namespace Test {
-  model A {}
-}
-
-namespace Test2 {
-  using Test;
-  alias B = A; // ok
-}
-
-alias C = Test2.A; // not ok
-alias C = Test2.B; // ok
-
-
-

Interfaces

-

Interfaces can be used to group operations.

-
interface A {
-  a(): string;
-}
-
-interface B {
-  b(): string;
-}
-
-
-

And the keyword extends can be used to compose operations from other interfaces into a new interface:

-
interface C extends A, B {
-  c(): string;
-}
-
-// C is equivalent to the following declaration
-interface C {
-  a(): string;
-  b(): string;
-  c(): string;
-}
-
-
-

Imports

-

Imports add files or libraries to your Cadl program. When you compile a Cadl file, you provide a path to your root Cadl file, by convention called "main.cadl". From there, any files you import are added to your program. If you import a directory, Cadl will look for a main.cadl file inside that directory.

-

The path you import must either begin with "./" or "../" or otherwise be an absolute path. The path must either refer to a directory, or else have an extension of either ".cadl" or ".js". The following demonstrates how to use imports to assemble a Cadl program from multiple files:

-
// main.cadl
-import "./models";
-op getDog(): Dog;
-
-
-
// models/main.cadl
-import "./dog.cadl";
-
-
-
// models/dog.cadl
-namespace Models;
-model Dog {}
-
-
-

Decorators

-

Decorators enable a developer to attach metadata to types in a Cadl program. They can also be used to calculate types based on their inputs. Decorators are the backbone of Cadl's extensibility and give it the flexibility to describe many different kinds of APIs and associated metadata like documentation, constraints, samples, and the like.

-

Many Cadl constructs can be decorated, including namespaces, operations and their parameters, and models and their members.

-

Decorators are defined using JavaScript functions that are exported from a standard ECMAScript module. When you import a JavaScript file, Cadl will look for any exported functions, and make them available as decorators inside the Cadl syntax. When a decorated declaration is evaluated by Cadl, it will invoke the decorator function, passing along a reference to the current compilation, an object representing the type it is attached to, and any arguments the user provided to the decorator.

-

Decorators are attached by adding the decorator before the element you want to decorate, prefixing the name of the decorator with @. Arguments can be provided by using parentheses in a manner similar to many programming languages, e.g. @dec(1, "hi", { a: string }). The parentheses can be omitted when no arguments are provided.

-

The following shows an example of declaring and then using a decorator:

-
// model.js
-export function logType(compilation, targetType, name) {
-  console.log(name + ": " + targetType.kind);
-}
-
-
// main.cadl
-import "./model.js";
-
-@logType("Dog type")
-model Dog {
-  @logType("Name type")
-  name: string;
-}
-
-
-

After running this Cadl program, the following will be printed to the console:

-
Name type: ModelProperty
-Dog type: Model
-
-

Built-in decorators

-

Cadl comes built-in with a number of decorators that are useful for defining service APIs regardless of what protocol or language you're targeting.

-
    -
  • @deprecated - indicates that the decorator target has been deprecated.
  • -
  • @doc - attach a documentation string. Works great with multi-line string literals.
  • -
  • @error - specify a model is representing an error
  • -
  • @format - specify the data format hint for a string type
  • -
  • @friendlyName - specify a friendly name to be used instead of declared model name
  • -
  • @indexer
  • -
  • @inspectType/@inspectTypeName - displays information about a type during compilation
  • -
  • @key - mark a model property as the key to identify instances of that type
  • -
  • @knownValues - mark a string type with an enum that contains all known values
  • -
  • @list -
  • -
  • @minLength/@maxLength - set the min and max lengths for strings
  • -
  • @minValue/@maxValue - set the min and max values of number types
  • -
  • @pattern - set the pattern for a string using regular expression syntax
  • -
  • @secret - mark a string as a secret value that should be treated carefully to avoid exposure
  • -
  • @summary - attach a documentation string, typically a short, single-line description.
  • -
  • @tag - attach a simple tag to a declaration
  • -
  • @visibility/@withVisibility
  • -
  • @withDefaultKeyVisibility - set the visibility of key properties in a model if not already set.
  • -
  • @withOptionalProperties - makes all properties of the target type optional.
  • -
  • @withoutDefaultValues - removes all read-only properties from the target type.
  • -
  • @withoutOmittedProperties - removes all model properties that match a type.
  • -
  • @withUpdateableProperties - remove all read-only properties from the target type
  • -
-
@inspectType
-

Syntax:

-
@inspectType(message)
-@inspectTypeName(message)
-
-

@inspectType displays information about a type during compilation. -@inspectTypeName displays information and name of type during compilation. -They can be specified on any language element -- a model, an operation, a namespace, etc.

-
@deprecated
-

Syntax:

-
@deprecated(message)
-
-

@deprecated marks a type as deprecated. It can be specified on any language element -- a model, an operation, a namespace, etc.

-
@friendlyName
-

Syntax:

-
@friendlyName(string)
-
-

@friendlyName specifies an alternate model name to be used instead of declared model name. It can be specified on a model.

-
@pattern
-

Syntax:

-
@pattern(regularExpressionText)
-
-

@pattern specifies a regular expression on a string property.

-
@summary
-

Syntax:

-
@summary(text [, object])
-
-

@summary attaches a documentation string. It is typically used to give a short, single-line -description, and can be used in combination with or instead of @doc.

-

The first argument to @summary is a string, which may contain template parameters, enclosed in braces, -which are replaced with an attribute for the type (commonly "name") passed as the second (optional) argument.

-

@summary can be specified on any language element -- a model, an operation, a namespace, etc.

-
@doc
-

Syntax:

-
@doc(text [, object])
-
-

@doc attaches a documentation string. Works great with multi-line string literals.

-

The first argument to @doc is a string, which may contain template parameters, enclosed in braces, -which are replaced with an attribute for the type (commonly "name") passed as the second (optional) argument.

-

@doc can be specified on any language element -- a model, an operation, a namespace, etc.

-
@knownValues
-

Syntax:

-
@knownValues(enumTypeReference)
-
-

@knownValues marks a string type with an enum that contains all known values

-

The first parameter is a reference to an enum type that enumerates all possible values that the -type accepts.

-

@knownValues can only be applied to model types that extend string.

-

Example:

-
enum OperationStateValues {
-  Running,
-  Completed,
-  Failed
-}
-
-@knownValues(OperationStateValues)
-model OperationState extends string {
-}
-
-
@key
-

Syntax:

-
@key([keyName])
-
-

@key - mark a model property as the key to identify instances of that type

-

The optional first argument accepts an alternate key name which may be used by emitters. -Otherwise, the name of the target property will be used.

-

@key can only be applied to model properties.

-
@secret
-

Syntax:

-
@secret
-
-

@secret mark a string as a secret value that should be treated carefully to avoid exposure

-
@secret
-model Password is string;
-
-
-

@secret can only be applied to string model;

-
@format
-

Syntax:

-
@format(formatName)
-
-

@format - specify the data format hint for a string type

-

The first argument is a string that identifies the format that the string type expects. Any string -can be entered here, but a Cadl emitter must know how to interpret

-

For Cadl specs that will be used with an OpenAPI emitter, the OpenAPI specification describes possible -valid values for a string type's format:

-

https://swagger.io/specification/#data-types

-

@format can be applied to a type that extends from string or a string-typed model property.

-
@error
-

Syntax:

-
@error
-
-

@format - specify that this model is an error type

-

For HTTP API this can be used to represent a failure.

-
Visibility decorators
-

Additionally, the decorators @withVisibility and @visibility provide an extensible visibility framework that allows for defining a canonical model with fine-grained visibility flags and derived models that apply those flags. Flags can be any string value and so can be customized to your application. Also, @visibility can take multiple string flags to set multiple flags at once, and @withVisibility can take multiple string flags to filter on at once.

-

Consider the following example:

-
model Dog {
-  // the service will generate an ID, so you dont need to send it.
-  @visibility("read") id: int32;
-  // the service will store this secret name, but won't ever return it
-  @visibility("write") secretName: string;
-  // no flags are like specifying all flags at once, so in this case
-  // equivalent to @visibility("read", "write")
-  name: string;
-}
-
-// The spread operator will copy all the properties of Dog into ReadDog,
-// and withVisibility will remove any that don't match the current
-// visibility setting
-@withVisibility("read")
-model ReadDog {
-  ...Dog;
-}
-
-@withVisibility("write")
-model WriteDog {
-  ...Dog;
-}
-
-
-

@withDefaultKeyVisibility

-

Syntax:

-
@withDefaultKeyVisibility(string)
-
-

@withDefaultKeyVisibility - set the visibility of key properties in a model if not already set. The first argument accepts a string representing the desired default -visibility value. -If a key property already has a visibility decorator then the default visibility is not applied.

-

@withDefaultKeyVisibility can only be applied to model types.

-

@withOptionalProperties

-

Syntax:

-
@withOptionalProperties()
-
-

@withOptionalProperties makes all properties of the target type optional.

-

@withOptionalProperties can only be applied to model types.

-

@withoutDefaultValues

-

Syntax:

-
@withoutDefaultValues()
-
-

@withoutDefaultValues removes all read-only properties from the target type.

-

@withoutDefaultValues can only be applied to model types.

-

@withoutOmittedProperties

-

Syntax:

-
@withoutOmittedProperties(type)
-
-

@withoutOmittedProperties removes all model properties that match a type.

-

@withoutOmittedProperties can only be applied to model types.

-

@withUpdateableProperties

-

Syntax:

-
@withUpdateableProperties()
-
-

@withUpdateableProperties remove all read-only properties from the target type.

-

@withUpdateableProperties can only be applied to model types.

-

Libraries

-

Cadl libraries are bundles of useful Cadl declarations and decorators into reusable packages. Cadl libraries are actually npm packages under the covers. Official Cadl libraries can be found with the @cadl-lang/ or @azure-tools/cadl- npm package name prefix. Libraries can be either a language library, an emitter library or both.

-

Setting up Cadl library

-

The first step in using a library is to install it via npm. You can get npm and node from the Node.js website.

-

If you haven't already initialized your Cadl project's package.json file, now would be a good time to do so. The package.json file lets you track the dependencies your project depends on, and is a best practice to check in along with any Cadl files you create. Run npm init create your package.json file.

-

Then, in your Cadl project directory, type npm install libraryName to install a library. For example, to install the official Cadl REST API bindings and OpenAPI generator, you would type npm install @cadl-lang/rest @cadl-lang/openapi3.

-

Using language libraries

-

Lastly, you need to import the libraries into your Cadl program. By convention, all external dependencies are imported in your main.cadl file, but can be in any Cadl file imported into your program. Importing the two libraries we installed above would look like this:

-
// in main.cadl
-import "@cadl-lang/rest";
-import "@cadl-lang/openapi3";
-
-
-

Using emitter libraries

-

The emitter needs to be referenced either via the cli --emit option or configured in the CADL config file.

-
# Run openapi3 emitter on the spec
-cadl compile . --emit=@cadl-lang/openapi3
-
-

or in the config file cadl-project.yaml

-
emitters:
-  "@cadl-lang/openapi3": true
-
-
Configuring emitter libraries
-

Emitters might provide some options to configure the generated output. Those options can be set either via the config cadl-project.yaml or the cli

-
    -
  • Via config
  • -
-
emitters:
-  <emitterName>:
-    <optionName>: <value>
-
-# For example
-emitters:
- "@cadl-lang/openapi3":
-    output-file: my-custom-file.json
-
-
    -
  • Via cli
  • -
-
--option "<emitterName>.<optionName>=<value>"
-
-# For example
---option "@cadl-lang/openapi3.output-file=my-custom-file.json"
-
-

Standard emitter libraries

-

Cadl has following standard libraries:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
LibraryPackage nameDocumentationSource
OpenAPI binding library@cadl-lang/openapiReadme.mdLink
OpenAPI 3@cadl-lang/openapi3Readme.mdLink
HTTP, REST@cadl-lang/restReadme.mdLink
-

Creating libraries

-

Creating a Cadl library is essentially the same as creating any NPM library. Consult the official documentation for more info. main should refer to a JS file that exports all your library's decorators and helper utilities.

-

The package.json file for a Cadl library requires one additional field: cadlMain, which refers to the root file of your Cadl program similar to how main refers to the root of a JS program. If you don't have any Cadl declarations, cadlMain can be identical to main.

-

REST APIs

-

With the language building blocks we've covered so far we're ready to author our first REST API. Cadl has an official REST API "binding" called @cadl-lang/rest. It's a set of Cadl declarations and decorators that describe REST APIs and can be used by code generators to generate OpenAPI descriptions, implementation code, and the like.

-

Cadl also has an official OpenAPI emitter called @cadl-lang/openapi3 that consumes the REST API bindings and emits standard OpenAPI descriptions. This can then be fed in to any OpenAPI code generation pipeline.

-

The following examples assume you have imported both @cadl-lang/openapi3 and @cadl-lang/rest somewhere in your Cadl program (though importing them in main.cadl is the standard convention). For detailed library reference, please see rest library's Readme.md.

-

Service definition and metadata

-

A definition for a service is the namespace that contains all the operations for the service and carries top-level metadata like service name and version. Cadl offers the following decorators for providing this metadata, and all are optional.

-
    -
  • @serviceTitle - the title of the service
  • -
  • @serviceVersion - the version of the service. Can be any string, but later version should lexicographically sort after earlier versions
  • -
  • @server - the host of the service. Can accept parameters.
  • -
  • @produces - the content types the service may produce
  • -
  • @consumes - the content types that may be sent to the service
  • -
-

Here's an example that uses these to define a Pet Store service:

-
@serviceTitle("Pet Store Service")
-@serviceVersion("2021-03-25")
-@server("https://example.com", "Single server endpoint")
-@doc("This is a sample server Petstore server.")
-@Cadl.Rest.produces("application/json", "image/png")
-@Cadl.Rest.consumes("application/json")
-namespace PetStore;
-
-
-

The server keyword can take a third parameter with parameters as necessary:

-
@server("https://{region}.foo.com", "Regional endpoint", {
-  @doc("Region name")
-  region?: string = "westus",
-})
-
-

Resources & routes

-

Resources are operations that are grouped in a namespace. You declare such a namespace by adding the @route decorator to provide the path to that resource:

-
using Cadl.Http;
-
-@route("/pets")
-namespace Pets {
-
-}
-
-
-

To define an operation on this resource, you need to provide the HTTP verb for the route using the @get, @head @post, @put, @patch, or @delete decorators. Alternatively, you can name your operation list, create, read, update, delete, or deleteAll and the appropriate verb will be used automatically. Lets add an operation to our Pets resource:

-
@route("/pets")
-namespace Pets {
-  op list(): Pet[];
-
-  // or you could also use
-  @get op listPets(): Pet[];
-}
-
-
-
Automatic route generation
-

Instead of manually specifying routes using the @route decorator, you automatically generate -routes from operation parameters by applying the @autoRoute decorator to an operation, namespace, -or interface containing operations.

-

For this to work, an operation's path parameters (those marked with @path) must also be marked with -the @segment decorator to define the preceding path segment.

-

This is especially useful when reusing common parameter sets defined as model types.

-

For example:

-
model CommonParameters {
-  @path
-  @segment("tenants")
-  tenantId: string;
-
-  @path
-  @segment("users")
-  userName: string;
-}
-
-@autoRoute
-interface UserOperations {
-  @get
-  getUser(...CommonParameters): User | Error;
-
-  @put
-  updateUser(...CommonParameters, user: User): User | Error;
-}
-
-

This will result in the following route for both operations

-
/tenants/{tenantId}/users/{userName}
-
-

Path and query parameters

-

Model properties and parameters which should be passed as path and query parameters use the @path and @query parameters respectively. Let's modify our list operation to support pagination, and add a read operation to our Pets resource:

-
@route("/pets")
-namespace Pets {
-  op list(@query skip: int32, @query top: int32): Pet[];
-  op read(@path petId: int32): Pet;
-}
-
-
-

Path parameters are appended to the URL unless a substitution with that parameter name exists on the resource path. For example, we might define a sub-resource using the following Cadl. Note how the path parameter for our sub-resource's list operation corresponds to the substitution in the URL.

-
@route("/pets/{petId}/toys")
-namespace PetToys {
-  op list(@path petId: int32): Toy[];
-}
-
-
-

Request & response bodies

-

Request and response bodies can be declared explictly using the @body decorator. Let's add an endpoint to create a pet. Let's also use this decorator for the responses, although this doesn't change anything about the API.

-
@route("/pets")
-namespace Pets {
-  op list(@query skip: int32, @query top: int32): {
-    @body pets: Pet[];
-  };
-  op read(@path petId: int32): {
-    @body pet: Pet;
-  };
-  @post
-  op create(@body pet: Pet): {};
-}
-
-
-

Note that in the absence of explicit @body:

-
    -
  1. The set of parameters that are not marked @header, @query, or @path form the request body.
  2. -
  3. The set of properties of the return model that are not marked @header, @query, or @path form the response body.
  4. -
  5. If the return type is not a model, then it defines the response body.
  6. -
-

This is how we were able to return Pet and Pet[] bodies without using @body for list and read. We can actually write -create in the same terse style by spreading the Pet object into the parameter list like this:

-
@route("/pets")
-namespace Pets {
-  @post
-  op create(...Pet): {};
-}
-
-
-

Polymorphism with discriminators

-

A pattern often used in REST APIs is to define a request or response body as having one of several different shapes, with a property called the -"discriminator" indicating which actual shape is used for a particular instance. -Cadl supports this pattern with the @discriminator decorator of the Rest library.

-

The @discrminator decorator takes one argument, the name of the discriminator property, and should be placed on the -model for the request or response body. The different shapes are then defined by separate models that extend this request or response model. -The discriminator property is defined in the "child" models with the value or values that indicate an instance that conforms to its shape.

-

As an example, a Pet model that allows instances that are either a Cat or a Dog can be defined with

-
@discriminator("kind")
-model Pet {
-  name: string;
-  weight?: float32;
-}
-model Cat extends Pet {
-  kind: "cat";
-  meow: int32;
-}
-model Dog extends Pet {
-  kind: "dog";
-  bark: string;
-}
-
-
-

Headers

-

Model properties and parameters that should be passed in a header use the @header decorator. The decorator takes the header name as a parameter. If a header name is not provided, it is inferred from the property or parameter name. Let's add etag support to our pet store's read operation.

-
@route("/pets")
-namespace Pets {
-  op list(@query skip: int32, @query top: int32): {
-    @body pets: Pet[];
-  };
-  op read(@path petId: int32, @header ifMatch?: string): {
-    @header eTag: string;
-    @body pet: Pet;
-  };
-  @post
-  op create(@body pet: Pet): {};
-}
-
-
-

Status codes

-

Use the @header decorator on a property named statusCode to declare a status code for a response. Generally, setting this to just int32 isn't particularly useful. Instead, use number literal types to create a discriminated union of response types. Let's add status codes to our responses, and add a 404 response to our read endpoint.

-
@route("/pets")
-namespace Pets {
-  op list(@query skip: int32, @query top: int32): {
-    @statusCode statusCode: 200;
-    @body pets: Pet[];
-  };
-  op read(@path petId: int32, @header ifMatch?: string): {
-    @statusCode statusCode: 200;
-    @header eTag: string;
-    @body pet: Pet;
-  } | {
-    @statusCode statusCode: 404;
-  };
-  op create(@body pet: Pet): {
-    @statusCode statusCode: 204;
-  };
-}
-
-
-

Built-in response shapes

-

Since status codes are so common for REST APIs, Cadl comes with some built-in types for common status codes so you don't need to declare status codes so frequently.

-

There is also a Body type, which can be used as a shorthand for { @body body: T } when an explicit body is required.

-

Lets update our sample one last time to use these built-in types:

-
model ETag {
-  @header eTag: string;
-}
-@route("/pets")
-namespace Pets {
-  op list(@query skip: int32, @query top: int32): OkResponse & Body<Pet[]>;
-  op read(@path petId: int32, @header ifMatch?: string): (OkResponse &
-    Body<Pet> &
-    ETag) | NotFoundResponse;
-  @post
-  op create(...Pet): NoContentResponse;
-}
-
-
-

Note that the default status code is 200 for non-empty bodies and 204 for empty bodies. Similarly, explicit Body<T> is not required when T is known to be a model. So the following terser form is equivalent:

-
@route("/pets")
-namespace Pets {
-  op list(@query skip: int32, @query top: int32): Pet[];
-  op read(@path petId: int32, @header ifMatch?: string): (Pet & ETag) | NotFoundResponse;
-  @post
-  op create(...Pet): {};
-}
-
-
-

Finally, another common style is to make helper response types that are -shared across a larger service definition. In this style, you can be -entirely explicit while also keeping operation definitions concise.

-

For example, we could write :

-
model ListResponse<T> {
-  ...OkResponse;
-  ...Body<T[]>;
-}
-
-model ReadSuccessResponse<T> {
-  ...OkResponse;
-  ...ETag;
-  ...Body<T>;
-}
-
-alias ReadResponse<T> = ReadSuccessResponse<T> | NotFoundResponse;
-
-model CreateResponse {
-  ...NoContentResponse;
-}
-
-@route("/pets")
-namespace Pets {
-  op list(@query skip: int32, @query top: int32): ListResponse<Pet>;
-  op read(@path petId: int32, @header ifMatch?: string): ReadResponse<Pet>;
-  @post
-  op create(...Pet): CreateResponse;
-}
-
-
-

CADL Config

-

Cadl has a configuration file cadl-project.yaml that right now is only used to configure the default emitter to use. -The config file needs to be a sibling of the package.json. Cadl will look for the following files in that order and pick the 1st one found:

-

Configuration schema:

-
# Map of the default emitters to use when not using `--emit`
-emitters:
-  <emitterName>: true
-
- -
-
- - - \ No newline at end of file From 4c03dcd36471372a79ad0015312d213086eb05a7 Mon Sep 17 00:00:00 2001 From: Descartes Date: Tue, 16 Aug 2022 08:56:08 -0700 Subject: [PATCH 46/81] Add _website to gitignore. --- packages/website/.gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 packages/website/.gitignore diff --git a/packages/website/.gitignore b/packages/website/.gitignore new file mode 100644 index 0000000000..4949653068 --- /dev/null +++ b/packages/website/.gitignore @@ -0,0 +1,2 @@ +#ignore output folder +/_website From 8c57c93f67a71fc90cdffa77500cc38194e5b061 Mon Sep 17 00:00:00 2001 From: dtuyishime <106712287+dtuyishime@users.noreply.github.com> Date: Tue, 16 Aug 2022 09:33:52 -0700 Subject: [PATCH 47/81] Cadl website basic scaffolding (#806) * Remove style.css file: irrelevant to the website. * Add BrowserRouter and routes to pages/containers * Add global App css for the website. * Add global css to main.tsx * Add navigation bar. * Add navigation bar css * Add footer * Add footer css * Add playground on the website using iframe * Add css for the playground page * Add the landing/ home page for the website * Add css for the landing/home page * Add empty pages/containers for navabar link routed * Add css for navbar link pages routed * Add index file to access all containes/pages. * Add index.ts file to access all components * Add 404 error page for unroute pages. * Add empty components on for future reuse * Remove unnecessary div. * Add fluentui/ web-component and other packages. * Add the launch.json file * Add rush formatting. * Add rush formatting * ADD fluentUI web-compnonent and routing packages * Disable strictPeerDependencies * add openapi-output * Remove vite server and React site code. * Eleventy setup files * Add css files for all containers and all partials. * Add Tutorials container/section * Add playground container/ section * Add download section/page for installing cadl and getting started * Add docs page for the language documentation * Add community page/container * Add blog page for future reference * Add base container for the home page and most pages. * Add contianer layout for containers such playground., tutorial and others. * Add tutorials layouts for tutorial page and for future use. * Add footer for the website * Add Navbar for the website * Add navbar items from _data as a json file. * Add main web entry point. * Add the compiled output from eleventy containers, partials, and layouts. * Remove output file and adding _website folder to gitignore * Add _website to gitignore. --- common/config/rush/pnpm-lock.yaml | 1382 +++++++++-------- .../src/components/openapi-output.tsx | 32 + packages/website/.eleventy.js | 12 + packages/website/.eslintignore | 1 - packages/website/.eslintrc.cjs | 16 - packages/website/.gitignore | 3 +- packages/website/README.md | 3 - packages/website/e2e/playwright.config.ts | 23 - packages/website/e2e/ui.e2e.ts | 31 - packages/website/index.html | 13 - packages/website/package.json | 94 +- packages/website/samples/http.cadl | 24 - packages/website/samples/rest.cadl | 23 - packages/website/samples/versioning.cadl | 36 - packages/website/src/_data/navbar.json | 27 + .../website/src/_includes/layouts/base.njk | 22 + .../src/_includes/layouts/container.njk | 21 + .../src/_includes/layouts/tutorial.njk | 7 + .../src/_includes/partials/footer/footer.njk | 47 + .../src/_includes/partials/navbar/navbar.njk | 15 + packages/website/src/app.tsx | 5 - packages/website/src/containers/blog/index.md | 7 + .../website/src/containers/community/index.md | 7 + packages/website/src/containers/docs/index.md | 7 + .../website/src/containers/download/index.md | 7 + .../src/containers/playground/index.md | 11 + .../website/src/containers/tutorial/index.md | 1174 ++++++++++++++ packages/website/src/css/footer.css | 72 + packages/website/src/css/global.css | 54 + packages/website/src/css/navbar.css | 63 + packages/website/src/css/playground.css | 16 + packages/website/src/css/style.css | 5 + packages/website/src/css/tutorial.css | 6 + packages/website/src/index.md | 6 + packages/website/src/main.tsx | 17 - packages/website/src/style.css | 157 -- packages/website/src/vite-env.d.ts | 1 - packages/website/tsconfig.json | 18 - packages/website/vite.config.ts | 27 - rush.json | 2 +- 40 files changed, 2361 insertions(+), 1133 deletions(-) create mode 100644 packages/playground/src/components/openapi-output.tsx create mode 100644 packages/website/.eleventy.js delete mode 100644 packages/website/.eslintignore delete mode 100644 packages/website/.eslintrc.cjs delete mode 100644 packages/website/README.md delete mode 100644 packages/website/e2e/playwright.config.ts delete mode 100644 packages/website/e2e/ui.e2e.ts delete mode 100644 packages/website/index.html delete mode 100644 packages/website/samples/http.cadl delete mode 100644 packages/website/samples/rest.cadl delete mode 100644 packages/website/samples/versioning.cadl create mode 100644 packages/website/src/_data/navbar.json create mode 100644 packages/website/src/_includes/layouts/base.njk create mode 100644 packages/website/src/_includes/layouts/container.njk create mode 100644 packages/website/src/_includes/layouts/tutorial.njk create mode 100644 packages/website/src/_includes/partials/footer/footer.njk create mode 100644 packages/website/src/_includes/partials/navbar/navbar.njk delete mode 100644 packages/website/src/app.tsx create mode 100644 packages/website/src/containers/blog/index.md create mode 100644 packages/website/src/containers/community/index.md create mode 100644 packages/website/src/containers/docs/index.md create mode 100644 packages/website/src/containers/download/index.md create mode 100644 packages/website/src/containers/playground/index.md create mode 100644 packages/website/src/containers/tutorial/index.md create mode 100644 packages/website/src/css/footer.css create mode 100644 packages/website/src/css/global.css create mode 100644 packages/website/src/css/navbar.css create mode 100644 packages/website/src/css/playground.css create mode 100644 packages/website/src/css/style.css create mode 100644 packages/website/src/css/tutorial.css create mode 100644 packages/website/src/index.md delete mode 100644 packages/website/src/main.tsx delete mode 100644 packages/website/src/style.css delete mode 100644 packages/website/src/vite-env.d.ts delete mode 100644 packages/website/tsconfig.json delete mode 100644 packages/website/vite.config.ts diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index a3f35452f1..7aec7e2330 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -2,6 +2,7 @@ lockfileVersion: 5.3 specifiers: '@babel/code-frame': ~7.16.7 + '@fluentui/web-components': ~2.5.3 '@playwright/test': ~1.22.2 '@rollup/plugin-commonjs': ~22.0.0-13 '@rollup/plugin-json': ~4.1.0 @@ -42,6 +43,7 @@ specifiers: '@types/prompts': ~2.0.14 '@types/react': ~18.0.5 '@types/react-dom': ~18.0.1 + '@types/react-router-dom': ~5.3.3 '@types/styled-components': ~5.1.25 '@types/vscode': ~1.53.0 '@types/watch': ~1.0.3 @@ -83,7 +85,10 @@ specifiers: prompts: ~2.4.1 react: ~18.0.0 react-dom: ~18.0.0 + react-icons: ~4.4.0 react-is: ~18.1.0 + react-loader-spinner: ~5.1.7-beta.1 + react-router-dom: ~6.3.0 rimraf: ~3.0.2 rollup: ~2.70.1 source-map-support: ~0.5.19 @@ -102,8 +107,9 @@ specifiers: dependencies: '@babel/code-frame': 7.16.7 + '@fluentui/web-components': 2.5.3 '@playwright/test': 1.22.2 - '@rollup/plugin-commonjs': 22.0.0_rollup@2.70.2 + '@rollup/plugin-commonjs': 22.0.1_rollup@2.70.2 '@rollup/plugin-json': 4.1.0_rollup@2.70.2 '@rollup/plugin-multi-entry': 4.1.0_rollup@2.70.2 '@rollup/plugin-node-resolve': 13.1.3_rollup@2.70.2 @@ -127,7 +133,7 @@ dependencies: '@rush-temp/spec': file:projects/spec.tgz '@rush-temp/tmlanguage-generator': file:projects/tmlanguage-generator.tgz '@rush-temp/versioning': file:projects/versioning.tgz - '@rush-temp/website': file:projects/website.tgz + '@rush-temp/website': file:projects/website.tgz_react-is@18.1.0 '@rushstack/eslint-patch': 1.1.0 '@types/babel__code-frame': 7.0.3 '@types/debounce': 1.2.1 @@ -140,15 +146,16 @@ dependencies: '@types/plist': 3.0.2 '@types/prettier': 2.6.0 '@types/prompts': 2.0.14 - '@types/react': 18.0.10 - '@types/react-dom': 18.0.5 + '@types/react': 18.0.15 + '@types/react-dom': 18.0.6 + '@types/react-router-dom': 5.3.3 '@types/styled-components': 5.1.25 '@types/vscode': 1.53.0 '@types/watch': 1.0.3 '@types/yargs': 17.0.10 - '@typescript-eslint/eslint-plugin': 5.27.0_1cb21ecc3f04eca4a509631d5e40e8fa - '@typescript-eslint/parser': 5.27.0_eslint@8.16.0+typescript@4.7.2 - '@typescript-eslint/utils': 5.26.0_eslint@8.16.0+typescript@4.7.2 + '@typescript-eslint/eslint-plugin': 5.32.0_43a51d9e2446a740dea4259743d3ab3e + '@typescript-eslint/parser': 5.32.0_eslint@8.21.0+typescript@4.7.4 + '@typescript-eslint/utils': 5.26.0_eslint@8.21.0+typescript@4.7.4 '@vitejs/plugin-react': 1.3.2 ajv: 8.9.0 autorest: 3.3.2 @@ -157,42 +164,45 @@ dependencies: cross-env: 7.0.3 debounce: 1.2.1 ecmarkup: 12.0.3 - eslint: 8.16.0 - eslint-config-prettier: 8.5.0_eslint@8.16.0 - eslint-plugin-mocha: 10.0.5_eslint@8.16.0 - eslint-plugin-prettier: 4.0.0_f107880aaccee60d102dfc61a6b71e12 - eslint-plugin-unicorn: 42.0.0_eslint@8.16.0 - globby: 13.1.1 + eslint: 8.21.0 + eslint-config-prettier: 8.5.0_eslint@8.21.0 + eslint-plugin-mocha: 10.1.0_eslint@8.21.0 + eslint-plugin-prettier: 4.2.1_3fb4ba81a229f81fc7d96e86670e27e9 + eslint-plugin-unicorn: 42.0.0_eslint@8.21.0 + globby: 13.1.2 grammarkdown: 3.1.2 js-yaml: 4.1.0 - lzutf8: 0.6.2 + lzutf8: 0.6.3 mkdirp: 1.0.4 mocha: 9.2.2 mocha-junit-reporter: 2.0.2_mocha@9.2.2 mocha-multi-reporters: 1.5.1_mocha@9.2.2 monaco-editor: 0.32.1 mustache: 4.2.0 - node-fetch: 3.2.5 + node-fetch: 3.2.10 node-watch: 0.7.3 onigasm: 2.2.5 picocolors: 1.0.0 playwright: 1.22.2 - plist: 3.0.5 + plist: 3.0.6 prettier: 2.7.1 - prettier-plugin-organize-imports: 2.3.4_prettier@2.7.1+typescript@4.7.2 + prettier-plugin-organize-imports: 2.3.4_prettier@2.7.1+typescript@4.7.4 prompts: 2.4.2 react: 18.0.0 react-dom: 18.0.0_react@18.0.0 + react-icons: 4.4.0_react@18.0.0 react-is: 18.1.0 + react-loader-spinner: 5.1.7-beta.1_42bb643d0b268c4c5cb594c9f18cf5be + react-router-dom: 6.3.0_react-dom@18.0.0+react@18.0.0 rimraf: 3.0.2 rollup: 2.70.2 source-map-support: 0.5.21 strip-json-comments: 4.0.0 styled-components: 5.3.5_42bb643d0b268c4c5cb594c9f18cf5be - typescript: 4.7.2 - vite: 2.9.9 + typescript: 4.7.4 + vite: 2.9.14 vsce: 2.6.7 - vscode-languageclient: 8.0.1 + vscode-languageclient: 8.0.2 vscode-languageserver: 7.0.0 vscode-languageserver-textdocument: 1.0.5 vscode-oniguruma: 1.6.2 @@ -207,41 +217,48 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.14 dev: false /@babel/code-frame/7.12.11: resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} dependencies: - '@babel/highlight': 7.17.12 + '@babel/highlight': 7.18.6 dev: false /@babel/code-frame/7.16.7: resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.17.12 + '@babel/highlight': 7.18.6 dev: false - /@babel/compat-data/7.17.10: - resolution: {integrity: sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==} + /@babel/code-frame/7.18.6: + resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.18.6 + dev: false + + /@babel/compat-data/7.18.8: + resolution: {integrity: sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==} engines: {node: '>=6.9.0'} dev: false - /@babel/core/7.18.2: - resolution: {integrity: sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==} + /@babel/core/7.18.10: + resolution: {integrity: sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.16.7 - '@babel/generator': 7.18.2 - '@babel/helper-compilation-targets': 7.18.2_@babel+core@7.18.2 - '@babel/helper-module-transforms': 7.18.0 - '@babel/helpers': 7.18.2 - '@babel/parser': 7.18.4 - '@babel/template': 7.16.7 - '@babel/traverse': 7.18.2 - '@babel/types': 7.18.4 + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.18.10 + '@babel/helper-compilation-targets': 7.18.9_@babel+core@7.18.10 + '@babel/helper-module-transforms': 7.18.9 + '@babel/helpers': 7.18.9 + '@babel/parser': 7.18.10 + '@babel/template': 7.18.10 + '@babel/traverse': 7.18.10 + '@babel/types': 7.18.10 convert-source-map: 1.8.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -251,237 +268,250 @@ packages: - supports-color dev: false - /@babel/generator/7.18.2: - resolution: {integrity: sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==} + /@babel/generator/7.18.10: + resolution: {integrity: sha512-0+sW7e3HjQbiHbj1NeU/vN8ornohYlacAfZIaXhdoGweQqgcNy69COVciYYqEXJ/v+9OBA7Frxm4CVAuNqKeNA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.4 - '@jridgewell/gen-mapping': 0.3.1 + '@babel/types': 7.18.10 + '@jridgewell/gen-mapping': 0.3.2 jsesc: 2.5.2 dev: false - /@babel/helper-annotate-as-pure/7.16.7: - resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==} + /@babel/helper-annotate-as-pure/7.18.6: + resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.4 + '@babel/types': 7.18.10 dev: false - /@babel/helper-compilation-targets/7.18.2_@babel+core@7.18.2: - resolution: {integrity: sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==} + /@babel/helper-compilation-targets/7.18.9_@babel+core@7.18.10: + resolution: {integrity: sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.17.10 - '@babel/core': 7.18.2 - '@babel/helper-validator-option': 7.16.7 - browserslist: 4.20.3 + '@babel/compat-data': 7.18.8 + '@babel/core': 7.18.10 + '@babel/helper-validator-option': 7.18.6 + browserslist: 4.21.3 semver: 6.3.0 dev: false - /@babel/helper-environment-visitor/7.18.2: - resolution: {integrity: sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==} + /@babel/helper-environment-visitor/7.18.9: + resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} engines: {node: '>=6.9.0'} dev: false - /@babel/helper-function-name/7.17.9: - resolution: {integrity: sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==} + /@babel/helper-function-name/7.18.9: + resolution: {integrity: sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.16.7 - '@babel/types': 7.18.4 + '@babel/template': 7.18.10 + '@babel/types': 7.18.10 dev: false - /@babel/helper-hoist-variables/7.16.7: - resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} + /@babel/helper-hoist-variables/7.18.6: + resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.4 + '@babel/types': 7.18.10 dev: false - /@babel/helper-module-imports/7.16.7: - resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} + /@babel/helper-module-imports/7.18.6: + resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.4 + '@babel/types': 7.18.10 dev: false - /@babel/helper-module-transforms/7.18.0: - resolution: {integrity: sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==} + /@babel/helper-module-transforms/7.18.9: + resolution: {integrity: sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-environment-visitor': 7.18.2 - '@babel/helper-module-imports': 7.16.7 - '@babel/helper-simple-access': 7.18.2 - '@babel/helper-split-export-declaration': 7.16.7 - '@babel/helper-validator-identifier': 7.16.7 - '@babel/template': 7.16.7 - '@babel/traverse': 7.18.2 - '@babel/types': 7.18.4 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-simple-access': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-validator-identifier': 7.18.6 + '@babel/template': 7.18.10 + '@babel/traverse': 7.18.10 + '@babel/types': 7.18.10 transitivePeerDependencies: - supports-color dev: false - /@babel/helper-plugin-utils/7.17.12: - resolution: {integrity: sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==} + /@babel/helper-plugin-utils/7.18.9: + resolution: {integrity: sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==} engines: {node: '>=6.9.0'} dev: false - /@babel/helper-simple-access/7.18.2: - resolution: {integrity: sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==} + /@babel/helper-simple-access/7.18.6: + resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.4 + '@babel/types': 7.18.10 dev: false - /@babel/helper-split-export-declaration/7.16.7: - resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} + /@babel/helper-split-export-declaration/7.18.6: + resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.4 + '@babel/types': 7.18.10 + dev: false + + /@babel/helper-string-parser/7.18.10: + resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} + engines: {node: '>=6.9.0'} dev: false - /@babel/helper-validator-identifier/7.16.7: - resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} + /@babel/helper-validator-identifier/7.18.6: + resolution: {integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==} engines: {node: '>=6.9.0'} dev: false - /@babel/helper-validator-option/7.16.7: - resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} + /@babel/helper-validator-option/7.18.6: + resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} engines: {node: '>=6.9.0'} dev: false - /@babel/helpers/7.18.2: - resolution: {integrity: sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==} + /@babel/helpers/7.18.9: + resolution: {integrity: sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.16.7 - '@babel/traverse': 7.18.2 - '@babel/types': 7.18.4 + '@babel/template': 7.18.10 + '@babel/traverse': 7.18.10 + '@babel/types': 7.18.10 transitivePeerDependencies: - supports-color dev: false - /@babel/highlight/7.17.12: - resolution: {integrity: sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==} + /@babel/highlight/7.18.6: + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.16.7 + '@babel/helper-validator-identifier': 7.18.6 chalk: 2.4.2 js-tokens: 4.0.0 dev: false - /@babel/parser/7.18.4: - resolution: {integrity: sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==} + /@babel/parser/7.18.10: + resolution: {integrity: sha512-TYk3OA0HKL6qNryUayb5UUEhM/rkOQozIBEA5ITXh5DWrSp0TlUQXMyZmnWxG/DizSWBeeQ0Zbc5z8UGaaqoeg==} engines: {node: '>=6.0.0'} hasBin: true dev: false - /@babel/plugin-syntax-jsx/7.17.12_@babel+core@7.18.2: - resolution: {integrity: sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog==} + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.18.10: + resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.2 - '@babel/helper-plugin-utils': 7.17.12 + '@babel/core': 7.18.10 + '@babel/helper-plugin-utils': 7.18.9 dev: false - /@babel/plugin-transform-react-jsx-development/7.16.7_@babel+core@7.18.2: - resolution: {integrity: sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==} + /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.18.10: + resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.2 - '@babel/plugin-transform-react-jsx': 7.17.12_@babel+core@7.18.2 + '@babel/core': 7.18.10 + '@babel/plugin-transform-react-jsx': 7.18.10_@babel+core@7.18.10 dev: false - /@babel/plugin-transform-react-jsx-self/7.17.12_@babel+core@7.18.2: - resolution: {integrity: sha512-7S9G2B44EnYOx74mue02t1uD8ckWZ/ee6Uz/qfdzc35uWHX5NgRy9i+iJSb2LFRgMd+QV9zNcStQaazzzZ3n3Q==} + /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.18.10: + resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.2 - '@babel/helper-plugin-utils': 7.17.12 + '@babel/core': 7.18.10 + '@babel/helper-plugin-utils': 7.18.9 dev: false - /@babel/plugin-transform-react-jsx-source/7.16.7_@babel+core@7.18.2: - resolution: {integrity: sha512-rONFiQz9vgbsnaMtQlZCjIRwhJvlrPET8TabIUK2hzlXw9B9s2Ieaxte1SCOOXMbWRHodbKixNf3BLcWVOQ8Bw==} + /@babel/plugin-transform-react-jsx-source/7.18.6_@babel+core@7.18.10: + resolution: {integrity: sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.2 - '@babel/helper-plugin-utils': 7.17.12 + '@babel/core': 7.18.10 + '@babel/helper-plugin-utils': 7.18.9 dev: false - /@babel/plugin-transform-react-jsx/7.17.12_@babel+core@7.18.2: - resolution: {integrity: sha512-Lcaw8bxd1DKht3thfD4A12dqo1X16he1Lm8rIv8sTwjAYNInRS1qHa9aJoqvzpscItXvftKDCfaEQzwoVyXpEQ==} + /@babel/plugin-transform-react-jsx/7.18.10_@babel+core@7.18.10: + resolution: {integrity: sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.2 - '@babel/helper-annotate-as-pure': 7.16.7 - '@babel/helper-module-imports': 7.16.7 - '@babel/helper-plugin-utils': 7.17.12 - '@babel/plugin-syntax-jsx': 7.17.12_@babel+core@7.18.2 - '@babel/types': 7.18.4 + '@babel/core': 7.18.10 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.18.9 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.18.10 + '@babel/types': 7.18.10 dev: false - /@babel/template/7.16.7: - resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==} + /@babel/runtime/7.18.9: + resolution: {integrity: sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.16.7 - '@babel/parser': 7.18.4 - '@babel/types': 7.18.4 + regenerator-runtime: 0.13.9 dev: false - /@babel/traverse/7.18.2: - resolution: {integrity: sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==} + /@babel/template/7.18.10: + resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.16.7 - '@babel/generator': 7.18.2 - '@babel/helper-environment-visitor': 7.18.2 - '@babel/helper-function-name': 7.17.9 - '@babel/helper-hoist-variables': 7.16.7 - '@babel/helper-split-export-declaration': 7.16.7 - '@babel/parser': 7.18.4 - '@babel/types': 7.18.4 + '@babel/code-frame': 7.18.6 + '@babel/parser': 7.18.10 + '@babel/types': 7.18.10 + dev: false + + /@babel/traverse/7.18.10: + resolution: {integrity: sha512-J7ycxg0/K9XCtLyHf0cz2DqDihonJeIo+z+HEdRe9YuT8TY4A66i+Ab2/xZCEW7Ro60bPCBBfqqboHSamoV3+g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.18.10 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.18.9 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.18.10 + '@babel/types': 7.18.10 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: false - /@babel/traverse/7.18.2_supports-color@5.5.0: - resolution: {integrity: sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==} + /@babel/traverse/7.18.10_supports-color@5.5.0: + resolution: {integrity: sha512-J7ycxg0/K9XCtLyHf0cz2DqDihonJeIo+z+HEdRe9YuT8TY4A66i+Ab2/xZCEW7Ro60bPCBBfqqboHSamoV3+g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.16.7 - '@babel/generator': 7.18.2 - '@babel/helper-environment-visitor': 7.18.2 - '@babel/helper-function-name': 7.17.9 - '@babel/helper-hoist-variables': 7.16.7 - '@babel/helper-split-export-declaration': 7.16.7 - '@babel/parser': 7.18.4 - '@babel/types': 7.18.4 + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.18.10 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.18.9 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.18.10 + '@babel/types': 7.18.10 debug: 4.3.4_supports-color@5.5.0 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: false - /@babel/types/7.18.4: - resolution: {integrity: sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==} + /@babel/types/7.18.10: + resolution: {integrity: sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.16.7 + '@babel/helper-string-parser': 7.18.10 + '@babel/helper-validator-identifier': 7.18.6 to-fast-properties: 2.0.0 dev: false @@ -489,14 +519,14 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: false - /@emotion/is-prop-valid/1.1.2: - resolution: {integrity: sha512-3QnhqeL+WW88YjYbQL5gUIkthuMw7a0NGbZ7wfFVk2kg/CK5w8w5FFa0RzWjyY1+sujN0NWbtSHH6OJmWHtJpQ==} + /@emotion/is-prop-valid/1.2.0: + resolution: {integrity: sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==} dependencies: - '@emotion/memoize': 0.7.5 + '@emotion/memoize': 0.8.0 dev: false - /@emotion/memoize/0.7.5: - resolution: {integrity: sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==} + /@emotion/memoize/0.8.0: + resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} dev: false /@emotion/stylis/0.8.5: @@ -507,6 +537,15 @@ packages: resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} dev: false + /@esbuild/linux-loong64/0.14.53: + resolution: {integrity: sha512-W2dAL6Bnyn4xa/QRSU3ilIK4EzD5wgYXKXJiS1HDF5vU3675qc2bvFyLwbUcdmssDveyndy7FbitrCoiV/eMLg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@esfx/async-canceltoken/1.0.0-pre.30: resolution: {integrity: sha512-4he0W+ZKH4OO4RvGfmATIibO5JzGLQqwm4Dp3X15bWnguDTmmOFt3Qt169Doij/gXxn2aPpZvxUaYIEebi8Xig==} dependencies: @@ -574,8 +613,8 @@ packages: dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 9.3.2 - globals: 13.15.0 + espree: 9.3.3 + globals: 13.17.0 ignore: 5.2.0 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -585,8 +624,18 @@ packages: - supports-color dev: false - /@humanwhocodes/config-array/0.9.5: - resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} + /@fluentui/web-components/2.5.3: + resolution: {integrity: sha512-pIG7vxtQiEpllkRVSgzB2aDRZC9v6X8XHFRNgh8EcsfWhfL5c9Av2r6Xu1Mw7hHrEo3YoQqduk9Y/pdzyP3P4g==} + dependencies: + '@microsoft/fast-colors': 5.3.1 + '@microsoft/fast-element': 1.10.4 + '@microsoft/fast-foundation': 2.46.11 + '@microsoft/fast-web-utilities': 5.4.1 + tslib: 1.14.1 + dev: false + + /@humanwhocodes/config-array/0.10.4: + resolution: {integrity: sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 @@ -596,6 +645,10 @@ packages: - supports-color dev: false + /@humanwhocodes/gitignore-to-minimatch/1.0.2: + resolution: {integrity: sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==} + dev: false + /@humanwhocodes/object-schema/1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: false @@ -609,38 +662,61 @@ packages: resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/set-array': 1.1.1 - '@jridgewell/sourcemap-codec': 1.4.13 + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 dev: false - /@jridgewell/gen-mapping/0.3.1: - resolution: {integrity: sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==} + /@jridgewell/gen-mapping/0.3.2: + resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/set-array': 1.1.1 - '@jridgewell/sourcemap-codec': 1.4.13 - '@jridgewell/trace-mapping': 0.3.13 + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/trace-mapping': 0.3.14 dev: false - /@jridgewell/resolve-uri/3.0.7: - resolution: {integrity: sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==} + /@jridgewell/resolve-uri/3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} dev: false - /@jridgewell/set-array/1.1.1: - resolution: {integrity: sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==} + /@jridgewell/set-array/1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} dev: false - /@jridgewell/sourcemap-codec/1.4.13: - resolution: {integrity: sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==} + /@jridgewell/sourcemap-codec/1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + dev: false + + /@jridgewell/trace-mapping/0.3.14: + resolution: {integrity: sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + dev: false + + /@microsoft/fast-colors/5.3.1: + resolution: {integrity: sha512-72RZXVfCbwQzvo5sXXkuLXLT7rMeYaSf5r/6ewQiv/trBtqpWRm4DEH2EilHw/iWTBKOXs1qZNQndgUMa5n4LA==} + dev: false + + /@microsoft/fast-element/1.10.4: + resolution: {integrity: sha512-SD0L3Kt++VSTqdkmGupB5tNaSLboEB7H/rh70a4eECpzCQewEzjd85jVNpgab1A8n5d3N9sPwZGIyfiUN6x4hg==} dev: false - /@jridgewell/trace-mapping/0.3.13: - resolution: {integrity: sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==} + /@microsoft/fast-foundation/2.46.11: + resolution: {integrity: sha512-5ehg6l2g/PsAR+90EEWSR7QAiAKsdscAnP6upE2ysp2U1luER4tAVDIP2wGQneLhaHq2i4Htnb4t+K1dcrw6AQ==} dependencies: - '@jridgewell/resolve-uri': 3.0.7 - '@jridgewell/sourcemap-codec': 1.4.13 + '@microsoft/fast-element': 1.10.4 + '@microsoft/fast-web-utilities': 5.4.1 + tabbable: 5.3.3 + tslib: 1.14.1 + dev: false + + /@microsoft/fast-web-utilities/5.4.1: + resolution: {integrity: sha512-ReWYncndjV3c8D8iq9tp7NcFNc1vbVHvcBFPME2nNFKNbS1XCesYZGlIlf3ot5EmuOXPlrzUHOWzQ2vFpIkqDg==} + dependencies: + exenv-es6: 1.1.1 dev: false /@nodelib/fs.scandir/2.1.5: @@ -673,8 +749,8 @@ packages: playwright-core: 1.22.2 dev: false - /@rollup/plugin-commonjs/22.0.0_rollup@2.70.2: - resolution: {integrity: sha512-Ktvf2j+bAO+30awhbYoCaXpBcyPmJbaEUYClQns/+6SNCYFURbvBiNbWgHITEsIgDDWCDUclWRKEuf8cwZCFoQ==} + /@rollup/plugin-commonjs/22.0.1_rollup@2.70.2: + resolution: {integrity: sha512-dGfEZvdjDHObBiP5IvwTKMVeq/tBZGMBHZFMdIV1ClMM/YoWS34xrHFGfag9SN2ZtMgNZRFruqvxZQEa70O6nQ==} engines: {node: '>= 12.0.0'} peerDependencies: rollup: ^2.68.0 @@ -685,7 +761,7 @@ packages: glob: 7.2.3 is-reference: 1.2.1 magic-string: 0.25.9 - resolve: 1.22.0 + resolve: 1.22.1 rollup: 2.70.2 dev: false @@ -720,7 +796,7 @@ packages: builtin-modules: 3.3.0 deepmerge: 4.2.2 is-module: 1.0.0 - resolve: 1.22.0 + resolve: 1.22.1 rollup: 2.70.2 dev: false @@ -784,14 +860,18 @@ packages: resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} dev: false - /@types/estree/0.0.51: - resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} + /@types/estree/1.0.0: + resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} + dev: false + + /@types/history/4.7.11: + resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} dev: false /@types/hoist-non-react-statics/3.3.1: resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} dependencies: - '@types/react': 18.0.10 + '@types/react': 18.0.15 hoist-non-react-statics: 3.3.2 dev: false @@ -854,14 +934,29 @@ packages: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} dev: false - /@types/react-dom/18.0.5: - resolution: {integrity: sha512-OWPWTUrY/NIrjsAPkAk1wW9LZeIjSvkXRhclsFO8CZcZGCOg2G0YZy4ft+rOyYxy8B7ui5iZzi9OkDebZ7/QSA==} + /@types/react-dom/18.0.6: + resolution: {integrity: sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==} dependencies: - '@types/react': 18.0.10 + '@types/react': 18.0.15 dev: false - /@types/react/18.0.10: - resolution: {integrity: sha512-dIugadZuIPrRzvIEevIu7A1smqOAjkSMv8qOfwPt9Ve6i6JT/FQcCHyk2qIAxwsQNKZt5/oGR0T4z9h2dXRAkg==} + /@types/react-router-dom/5.3.3: + resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.0.15 + '@types/react-router': 5.1.18 + dev: false + + /@types/react-router/5.1.18: + resolution: {integrity: sha512-YYknwy0D0iOwKQgz9v8nOzt2J6l4gouBmDnWqUUznltOTaon+r8US8ky8HvN0tXvc38U9m6z/t2RsVsnd1zM0g==} + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.0.15 + dev: false + + /@types/react/18.0.15: + resolution: {integrity: sha512-iz3BtLuIYH1uWdsv6wXYdhozhqj20oD4/Hk2DNXIn1kFsmp9x8d9QB6FnPhfkbhd2PgEONt9Q1x/ebkwjfFLow==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 @@ -882,7 +977,7 @@ packages: resolution: {integrity: sha512-fgwl+0Pa8pdkwXRoVPP9JbqF0Ivo9llnmsm+7TCI330kbPIFd9qv1Lrhr37shf4tnxCOSu+/IgqM7uJXLWZZNQ==} dependencies: '@types/hoist-non-react-statics': 3.3.1 - '@types/react': 18.0.10 + '@types/react': 18.0.15 csstype: 3.1.0 dev: false @@ -906,8 +1001,8 @@ packages: '@types/yargs-parser': 21.0.0 dev: false - /@typescript-eslint/eslint-plugin/5.27.0_1cb21ecc3f04eca4a509631d5e40e8fa: - resolution: {integrity: sha512-DDrIA7GXtmHXr1VCcx9HivA39eprYBIFxbQEHI6NyraRDxCGpxAFiYQAT/1Y0vh1C+o2vfBiy4IuPoXxtTZCAQ==} + /@typescript-eslint/eslint-plugin/5.32.0_43a51d9e2446a740dea4259743d3ab3e: + resolution: {integrity: sha512-CHLuz5Uz7bHP2WgVlvoZGhf0BvFakBJKAD/43Ty0emn4wXWv5k01ND0C0fHcl/Im8Td2y/7h44E9pca9qAu2ew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -917,24 +1012,24 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.27.0_eslint@8.16.0+typescript@4.7.2 - '@typescript-eslint/scope-manager': 5.27.0 - '@typescript-eslint/type-utils': 5.27.0_eslint@8.16.0+typescript@4.7.2 - '@typescript-eslint/utils': 5.27.0_eslint@8.16.0+typescript@4.7.2 + '@typescript-eslint/parser': 5.32.0_eslint@8.21.0+typescript@4.7.4 + '@typescript-eslint/scope-manager': 5.32.0 + '@typescript-eslint/type-utils': 5.32.0_eslint@8.21.0+typescript@4.7.4 + '@typescript-eslint/utils': 5.32.0_eslint@8.21.0+typescript@4.7.4 debug: 4.3.4 - eslint: 8.16.0 + eslint: 8.21.0 functional-red-black-tree: 1.0.1 ignore: 5.2.0 regexpp: 3.2.0 semver: 7.3.7 - tsutils: 3.21.0_typescript@4.7.2 - typescript: 4.7.2 + tsutils: 3.21.0_typescript@4.7.4 + typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/parser/5.27.0_eslint@8.16.0+typescript@4.7.2: - resolution: {integrity: sha512-8oGjQF46c52l7fMiPPvX4It3u3V3JipssqDfHQ2hcR0AeR8Zge+OYyKUCm5b70X72N1qXt0qgHenwN6Gc2SXZA==} + /@typescript-eslint/parser/5.32.0_eslint@8.21.0+typescript@4.7.4: + resolution: {integrity: sha512-IxRtsehdGV9GFQ35IGm5oKKR2OGcazUoiNBxhRV160iF9FoyuXxjY+rIqs1gfnd+4eL98OjeGnMpE7RF/NBb3A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -943,12 +1038,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.27.0 - '@typescript-eslint/types': 5.27.0 - '@typescript-eslint/typescript-estree': 5.27.0_typescript@4.7.2 + '@typescript-eslint/scope-manager': 5.32.0 + '@typescript-eslint/types': 5.32.0 + '@typescript-eslint/typescript-estree': 5.32.0_typescript@4.7.4 debug: 4.3.4 - eslint: 8.16.0 - typescript: 4.7.2 + eslint: 8.21.0 + typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: false @@ -961,16 +1056,16 @@ packages: '@typescript-eslint/visitor-keys': 5.26.0 dev: false - /@typescript-eslint/scope-manager/5.27.0: - resolution: {integrity: sha512-VnykheBQ/sHd1Vt0LJ1JLrMH1GzHO+SzX6VTXuStISIsvRiurue/eRkTqSrG0CexHQgKG8shyJfR4o5VYioB9g==} + /@typescript-eslint/scope-manager/5.32.0: + resolution: {integrity: sha512-KyAE+tUON0D7tNz92p1uetRqVJiiAkeluvwvZOqBmW9z2XApmk5WSMV9FrzOroAcVxJZB3GfUwVKr98Dr/OjOg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.27.0 - '@typescript-eslint/visitor-keys': 5.27.0 + '@typescript-eslint/types': 5.32.0 + '@typescript-eslint/visitor-keys': 5.32.0 dev: false - /@typescript-eslint/type-utils/5.27.0_eslint@8.16.0+typescript@4.7.2: - resolution: {integrity: sha512-vpTvRRchaf628Hb/Xzfek+85o//zEUotr1SmexKvTfs7czXfYjXVT/a5yDbpzLBX1rhbqxjDdr1Gyo0x1Fc64g==} + /@typescript-eslint/type-utils/5.32.0_eslint@8.21.0+typescript@4.7.4: + resolution: {integrity: sha512-0gSsIhFDduBz3QcHJIp3qRCvVYbqzHg8D6bHFsDMrm0rURYDj+skBK2zmYebdCp+4nrd9VWd13egvhYFJj/wZg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -979,11 +1074,11 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/utils': 5.27.0_eslint@8.16.0+typescript@4.7.2 + '@typescript-eslint/utils': 5.32.0_eslint@8.21.0+typescript@4.7.4 debug: 4.3.4 - eslint: 8.16.0 - tsutils: 3.21.0_typescript@4.7.2 - typescript: 4.7.2 + eslint: 8.21.0 + tsutils: 3.21.0_typescript@4.7.4 + typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: false @@ -993,12 +1088,12 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false - /@typescript-eslint/types/5.27.0: - resolution: {integrity: sha512-lY6C7oGm9a/GWhmUDOs3xAVRz4ty/XKlQ2fOLr8GAIryGn0+UBOoJDWyHer3UgrHkenorwvBnphhP+zPmzmw0A==} + /@typescript-eslint/types/5.32.0: + resolution: {integrity: sha512-EBUKs68DOcT/EjGfzywp+f8wG9Zw6gj6BjWu7KV/IYllqKJFPlZlLSYw/PTvVyiRw50t6wVbgv4p9uE2h6sZrQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false - /@typescript-eslint/typescript-estree/5.26.0_typescript@4.7.2: + /@typescript-eslint/typescript-estree/5.26.0_typescript@4.7.4: resolution: {integrity: sha512-EyGpw6eQDsfD6jIqmXP3rU5oHScZ51tL/cZgFbFBvWuCwrIptl+oueUZzSmLtxFuSOQ9vDcJIs+279gnJkfd1w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -1013,14 +1108,14 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.7 - tsutils: 3.21.0_typescript@4.7.2 - typescript: 4.7.2 + tsutils: 3.21.0_typescript@4.7.4 + typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/typescript-estree/5.27.0_typescript@4.7.2: - resolution: {integrity: sha512-QywPMFvgZ+MHSLRofLI7BDL+UczFFHyj0vF5ibeChDAJgdTV8k4xgEwF0geFhVlPc1p8r70eYewzpo6ps+9LJQ==} + /@typescript-eslint/typescript-estree/5.32.0_typescript@4.7.4: + resolution: {integrity: sha512-ZVAUkvPk3ITGtCLU5J4atCw9RTxK+SRc6hXqLtllC2sGSeMFWN+YwbiJR9CFrSFJ3w4SJfcWtDwNb/DmUIHdhg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -1028,19 +1123,19 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.27.0 - '@typescript-eslint/visitor-keys': 5.27.0 + '@typescript-eslint/types': 5.32.0 + '@typescript-eslint/visitor-keys': 5.32.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.7 - tsutils: 3.21.0_typescript@4.7.2 - typescript: 4.7.2 + tsutils: 3.21.0_typescript@4.7.4 + typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/utils/5.26.0_eslint@8.16.0+typescript@4.7.2: + /@typescript-eslint/utils/5.26.0_eslint@8.21.0+typescript@4.7.4: resolution: {integrity: sha512-PJFwcTq2Pt4AMOKfe3zQOdez6InIDOjUJJD3v3LyEtxHGVVRK3Vo7Dd923t/4M9hSH2q2CLvcTdxlLPjcIk3eg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -1049,28 +1144,28 @@ packages: '@types/json-schema': 7.0.11 '@typescript-eslint/scope-manager': 5.26.0 '@typescript-eslint/types': 5.26.0 - '@typescript-eslint/typescript-estree': 5.26.0_typescript@4.7.2 - eslint: 8.16.0 + '@typescript-eslint/typescript-estree': 5.26.0_typescript@4.7.4 + eslint: 8.21.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.16.0 + eslint-utils: 3.0.0_eslint@8.21.0 transitivePeerDependencies: - supports-color - typescript dev: false - /@typescript-eslint/utils/5.27.0_eslint@8.16.0+typescript@4.7.2: - resolution: {integrity: sha512-nZvCrkIJppym7cIbP3pOwIkAefXOmfGPnCM0LQfzNaKxJHI6VjI8NC662uoiPlaf5f6ymkTy9C3NQXev2mdXmA==} + /@typescript-eslint/utils/5.32.0_eslint@8.21.0+typescript@4.7.4: + resolution: {integrity: sha512-W7lYIAI5Zlc5K082dGR27Fczjb3Q57ECcXefKU/f0ajM5ToM0P+N9NmJWip8GmGu/g6QISNT+K6KYB+iSHjXCQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@types/json-schema': 7.0.11 - '@typescript-eslint/scope-manager': 5.27.0 - '@typescript-eslint/types': 5.27.0 - '@typescript-eslint/typescript-estree': 5.27.0_typescript@4.7.2 - eslint: 8.16.0 + '@typescript-eslint/scope-manager': 5.32.0 + '@typescript-eslint/types': 5.32.0 + '@typescript-eslint/typescript-estree': 5.32.0_typescript@4.7.4 + eslint: 8.21.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.16.0 + eslint-utils: 3.0.0_eslint@8.21.0 transitivePeerDependencies: - supports-color - typescript @@ -1084,11 +1179,11 @@ packages: eslint-visitor-keys: 3.3.0 dev: false - /@typescript-eslint/visitor-keys/5.27.0: - resolution: {integrity: sha512-46cYrteA2MrIAjv9ai44OQDUoCZyHeGIc4lsjCUX2WT6r4C+kidz1bNiR4017wHOPUythYeH+Sc7/cFP97KEAA==} + /@typescript-eslint/visitor-keys/5.32.0: + resolution: {integrity: sha512-S54xOHZgfThiZ38/ZGTgB2rqx51CMJ5MCfVT2IplK4Q7hgzGfe0nLzLCcenDnc/cSjP568hdeKfeDcBgqNHD/g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.27.0 + '@typescript-eslint/types': 5.32.0 eslint-visitor-keys: 3.3.0 dev: false @@ -1100,14 +1195,14 @@ packages: resolution: {integrity: sha512-aurBNmMo0kz1O4qRoY+FM4epSA39y3ShWGuqfLRA/3z0oEJAdtoSfgA3aO98/PCCHAqMaduLxIxErWrVKIFzXA==} engines: {node: '>=12.0.0'} dependencies: - '@babel/core': 7.18.2 - '@babel/plugin-transform-react-jsx': 7.17.12_@babel+core@7.18.2 - '@babel/plugin-transform-react-jsx-development': 7.16.7_@babel+core@7.18.2 - '@babel/plugin-transform-react-jsx-self': 7.17.12_@babel+core@7.18.2 - '@babel/plugin-transform-react-jsx-source': 7.16.7_@babel+core@7.18.2 + '@babel/core': 7.18.10 + '@babel/plugin-transform-react-jsx': 7.18.10_@babel+core@7.18.10 + '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.18.10 + '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.18.10 + '@babel/plugin-transform-react-jsx-source': 7.18.6_@babel+core@7.18.10 '@rollup/pluginutils': 4.2.1 react-refresh: 0.13.0 - resolve: 1.22.0 + resolve: 1.22.1 transitivePeerDependencies: - supports-color dev: false @@ -1116,6 +1211,13 @@ packages: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} dev: false + /abort-controller/3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + dependencies: + event-target-shim: 5.0.1 + dev: false + /acorn-globals/6.0.0: resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} dependencies: @@ -1123,12 +1225,12 @@ packages: acorn-walk: 7.2.0 dev: false - /acorn-jsx/5.3.2_acorn@8.7.1: + /acorn-jsx/5.3.2_acorn@8.8.0: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.7.1 + acorn: 8.8.0 dev: false /acorn-walk/7.2.0: @@ -1142,8 +1244,8 @@ packages: hasBin: true dev: false - /acorn/8.7.1: - resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==} + /acorn/8.8.0: + resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} engines: {node: '>=0.4.0'} hasBin: true dev: false @@ -1180,11 +1282,6 @@ packages: engines: {node: '>=6'} dev: false - /ansi-regex/2.1.1: - resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} - engines: {node: '>=0.10.0'} - dev: false - /ansi-regex/5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -1212,17 +1309,6 @@ packages: picomatch: 2.3.1 dev: false - /aproba/1.2.0: - resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} - dev: false - - /are-we-there-yet/1.1.7: - resolution: {integrity: sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==} - dependencies: - delegates: 1.0.0 - readable-stream: 2.3.7 - dev: false - /argparse/1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: @@ -1259,8 +1345,8 @@ packages: requiresBuild: true dev: false - /azure-devops-node-api/11.1.1: - resolution: {integrity: sha512-XDG91XzLZ15reP12s3jFkKS8oiagSICjnLwxEYieme4+4h3ZveFOFRA4iYIG40RyHXsiI0mefFYYMFIJbMpWcg==} + /azure-devops-node-api/11.2.0: + resolution: {integrity: sha512-XdiGPhrpaT5J8wdERRKs5g8E0Zy1pvOYTli7z9E8nmOn3YGp4FhtjhrOyFmX/8veWCwdI69mCHKJw6l+4J/bHA==} dependencies: tunnel: 0.0.6 typed-rest-client: 1.8.9 @@ -1271,8 +1357,8 @@ packages: peerDependencies: styled-components: '>= 2' dependencies: - '@babel/helper-annotate-as-pure': 7.16.7 - '@babel/helper-module-imports': 7.16.7 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-module-imports': 7.18.6 babel-plugin-syntax-jsx: 6.18.0 lodash: 4.17.21 picomatch: 2.3.1 @@ -1330,16 +1416,15 @@ packages: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} dev: false - /browserslist/4.20.3: - resolution: {integrity: sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==} + /browserslist/4.21.3: + resolution: {integrity: sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001346 - electron-to-chromium: 1.4.145 - escalade: 3.1.1 - node-releases: 2.0.5 - picocolors: 1.0.0 + caniuse-lite: 1.0.30001373 + electron-to-chromium: 1.4.210 + node-releases: 2.0.6 + update-browserslist-db: 1.0.5_browserslist@4.21.3 dev: false /buffer-crc32/0.2.13: @@ -1373,10 +1458,10 @@ packages: foreground-child: 2.0.0 istanbul-lib-coverage: 3.2.0 istanbul-lib-report: 3.0.0 - istanbul-reports: 3.1.4 + istanbul-reports: 3.1.5 rimraf: 3.0.2 test-exclude: 6.0.0 - v8-to-istanbul: 9.0.0 + v8-to-istanbul: 9.0.1 yargs: 16.2.0 yargs-parser: 20.2.9 dev: false @@ -1385,7 +1470,7 @@ packages: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 - get-intrinsic: 1.1.1 + get-intrinsic: 1.1.2 dev: false /callsites/3.1.0: @@ -1409,8 +1494,8 @@ packages: resolution: {integrity: sha512-W2lPwkBkMZwFlPCXhIlYgxu+7gC/NUlCtdK652DAJ1JdgV0sTrvuPFshNPrFa1TY2JOkLhgdeEBplB4ezEa+xg==} dev: false - /caniuse-lite/1.0.30001346: - resolution: {integrity: sha512-q6ibZUO2t88QCIPayP/euuDREq+aMAxFE5S70PkrLh0iTDj/zEhgvJRKC2+CvXY6EWc6oQwUR48lL5vCW6jiXQ==} + /caniuse-lite/1.0.30001373: + resolution: {integrity: sha512-pJYArGHrPp3TUqQzFYRmP/lwJlj8RCbVe3Gd3eJQkAV8SAC6b19XS9BjMvRdvaS8RMkaTN8ZhoHP6S1y8zzwEQ==} dev: false /capital-case/1.0.4: @@ -1470,8 +1555,8 @@ packages: domutils: 3.0.1 dev: false - /cheerio/1.0.0-rc.11: - resolution: {integrity: sha512-bQwNaDIBKID5ts/DsdhxrjqFXYfLw4ste+wMKqWA8DyKcS4qwsPP4Bk8ZNaTJjvpiX/qW3BT4sU7d6Bh5i+dag==} + /cheerio/1.0.0-rc.12: + resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} engines: {node: '>= 6'} dependencies: cheerio-select: 2.1.0 @@ -1481,7 +1566,6 @@ packages: htmlparser2: 8.0.1 parse5: 7.0.0 parse5-htmlparser2-tree-adapter: 7.0.0 - tslib: 2.4.0 dev: false /chokidar/3.5.3: @@ -1503,8 +1587,8 @@ packages: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} dev: false - /ci-info/3.3.1: - resolution: {integrity: sha512-SXgeMX9VwDe7iFFaEWkA5AstuER9YKqy4EhHqr4DVqkwmD9rpVimkMKWHdjn30Ja45txyjhSn63lVX69eVCckg==} + /ci-info/3.3.2: + resolution: {integrity: sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==} dev: false /clean-regexp/1.0.0: @@ -1522,11 +1606,6 @@ packages: wrap-ansi: 7.0.0 dev: false - /code-point-at/1.1.0: - resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} - engines: {node: '>=0.10.0'} - dev: false - /color-convert/1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -1588,10 +1667,6 @@ packages: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: false - /console-control-strings/1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - dev: false - /constant-case/3.0.4: resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} dependencies: @@ -1606,10 +1681,6 @@ packages: safe-buffer: 5.1.2 dev: false - /core-util-is/1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: false - /cross-env/7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} @@ -1779,10 +1850,6 @@ packages: engines: {node: '>=0.4.0'} dev: false - /delegates/1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - dev: false - /detect-libc/2.0.1: resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} engines: {node: '>=8'} @@ -1812,7 +1879,7 @@ packages: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 - entities: 4.3.0 + entities: 4.3.1 dev: false /domelementtype/2.3.0: @@ -1848,8 +1915,8 @@ packages: tslib: 2.4.0 dev: false - /ecmarkdown/7.0.0: - resolution: {integrity: sha512-hJxPALjSOpSMMcFjSzwzJBk8EWOu20mYlTfV7BnVTh9er0FEaT2eSx16y36YxqQfdFxPUsa0CSH4fLf0qUclKw==} + /ecmarkdown/7.1.0: + resolution: {integrity: sha512-xTrf1Qj6nCsHGSHaOrAPfALoEH2nPSs+wclpzXEsozVJbEYcTkims59rJiJQB6TxAW2J4oFfoaB2up1wbb9k4w==} dependencies: escape-html: 1.0.3 dev: false @@ -1863,7 +1930,7 @@ packages: command-line-args: 5.2.1 command-line-usage: 6.1.3 dedent-js: 1.0.1 - ecmarkdown: 7.0.0 + ecmarkdown: 7.1.0 eslint-formatter-codeframe: 7.32.1 fast-glob: 3.2.11 grammarkdown: 3.2.0 @@ -1881,8 +1948,8 @@ packages: - utf-8-validate dev: false - /electron-to-chromium/1.4.145: - resolution: {integrity: sha512-g4VQCi61gA0t5fJHsalxAc8NpvxC/CEwLAGLfJ+DmkRXTEyntJA7H01771uVD6X6nnViv3GToPgb0QOVA8ivOQ==} + /electron-to-chromium/1.4.210: + resolution: {integrity: sha512-kSiX4tuyZijV7Cz0MWVmGT8K2siqaOA4Z66K5dCttPPRh0HicOcOAEj1KlC8O8J1aOS/1M8rGofOzksLKaHWcQ==} dev: false /emoji-regex/8.0.0: @@ -1899,8 +1966,8 @@ packages: resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} dev: false - /entities/4.3.0: - resolution: {integrity: sha512-/iP1rZrSEJ0DTlPiX+jbzlA3eVkY/e8L8SozroF395fIqE3TYF/Nz7YOMAawta+vLmyJ/hkGNNPcSbMADCCXbg==} + /entities/4.3.1: + resolution: {integrity: sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==} engines: {node: '>=0.12'} dev: false @@ -1910,8 +1977,8 @@ packages: is-arrayish: 0.2.1 dev: false - /esbuild-android-64/0.14.42: - resolution: {integrity: sha512-P4Y36VUtRhK/zivqGVMqhptSrFILAGlYp0Z8r9UQqHJ3iWztRCNWnlBzD9HRx0DbueXikzOiwyOri+ojAFfW6A==} + /esbuild-android-64/0.14.53: + resolution: {integrity: sha512-fIL93sOTnEU+NrTAVMIKiAw0YH22HWCAgg4N4Z6zov2t0kY9RAJ50zY9ZMCQ+RT6bnOfDt8gCTnt/RaSNA2yRA==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -1919,8 +1986,8 @@ packages: dev: false optional: true - /esbuild-android-arm64/0.14.42: - resolution: {integrity: sha512-0cOqCubq+RWScPqvtQdjXG3Czb3AWI2CaKw3HeXry2eoA2rrPr85HF7IpdU26UWdBXgPYtlTN1LUiuXbboROhg==} + /esbuild-android-arm64/0.14.53: + resolution: {integrity: sha512-PC7KaF1v0h/nWpvlU1UMN7dzB54cBH8qSsm7S9mkwFA1BXpaEOufCg8hdoEI1jep0KeO/rjZVWrsH8+q28T77A==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -1928,8 +1995,8 @@ packages: dev: false optional: true - /esbuild-darwin-64/0.14.42: - resolution: {integrity: sha512-ipiBdCA3ZjYgRfRLdQwP82rTiv/YVMtW36hTvAN5ZKAIfxBOyPXY7Cejp3bMXWgzKD8B6O+zoMzh01GZsCuEIA==} + /esbuild-darwin-64/0.14.53: + resolution: {integrity: sha512-gE7P5wlnkX4d4PKvLBUgmhZXvL7lzGRLri17/+CmmCzfncIgq8lOBvxGMiQ4xazplhxq+72TEohyFMZLFxuWvg==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -1937,8 +2004,8 @@ packages: dev: false optional: true - /esbuild-darwin-arm64/0.14.42: - resolution: {integrity: sha512-bU2tHRqTPOaoH/4m0zYHbFWpiYDmaA0gt90/3BMEFaM0PqVK/a6MA2V/ypV5PO0v8QxN6gH5hBPY4YJ2lopXgA==} + /esbuild-darwin-arm64/0.14.53: + resolution: {integrity: sha512-otJwDU3hnI15Q98PX4MJbknSZ/WSR1I45il7gcxcECXzfN4Mrpft5hBDHXNRnCh+5858uPXBXA1Vaz2jVWLaIA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -1946,8 +2013,8 @@ packages: dev: false optional: true - /esbuild-freebsd-64/0.14.42: - resolution: {integrity: sha512-75h1+22Ivy07+QvxHyhVqOdekupiTZVLN1PMwCDonAqyXd8TVNJfIRFrdL8QmSJrOJJ5h8H1I9ETyl2L8LQDaw==} + /esbuild-freebsd-64/0.14.53: + resolution: {integrity: sha512-WkdJa8iyrGHyKiPF4lk0MiOF87Q2SkE+i+8D4Cazq3/iqmGPJ6u49je300MFi5I2eUsQCkaOWhpCVQMTKGww2w==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -1955,8 +2022,8 @@ packages: dev: false optional: true - /esbuild-freebsd-arm64/0.14.42: - resolution: {integrity: sha512-W6Jebeu5TTDQMJUJVarEzRU9LlKpNkPBbjqSu+GUPTHDCly5zZEQq9uHkmHHl7OKm+mQ2zFySN83nmfCeZCyNA==} + /esbuild-freebsd-arm64/0.14.53: + resolution: {integrity: sha512-9T7WwCuV30NAx0SyQpw8edbKvbKELnnm1FHg7gbSYaatH+c8WJW10g/OdM7JYnv7qkimw2ZTtSA+NokOLd2ydQ==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -1964,8 +2031,8 @@ packages: dev: false optional: true - /esbuild-linux-32/0.14.42: - resolution: {integrity: sha512-Ooy/Bj+mJ1z4jlWcK5Dl6SlPlCgQB9zg1UrTCeY8XagvuWZ4qGPyYEWGkT94HUsRi2hKsXvcs6ThTOjBaJSMfg==} + /esbuild-linux-32/0.14.53: + resolution: {integrity: sha512-VGanLBg5en2LfGDgLEUxQko2lqsOS7MTEWUi8x91YmsHNyzJVT/WApbFFx3MQGhkf+XdimVhpyo5/G0PBY91zg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -1973,8 +2040,8 @@ packages: dev: false optional: true - /esbuild-linux-64/0.14.42: - resolution: {integrity: sha512-2L0HbzQfbTuemUWfVqNIjOfaTRt9zsvjnme6lnr7/MO9toz/MJ5tZhjqrG6uDWDxhsaHI2/nsDgrv8uEEN2eoA==} + /esbuild-linux-64/0.14.53: + resolution: {integrity: sha512-pP/FA55j/fzAV7N9DF31meAyjOH6Bjuo3aSKPh26+RW85ZEtbJv9nhoxmGTd9FOqjx59Tc1ZbrJabuiXlMwuZQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -1982,8 +2049,8 @@ packages: dev: false optional: true - /esbuild-linux-arm/0.14.42: - resolution: {integrity: sha512-STq69yzCMhdRaWnh29UYrLSr/qaWMm/KqwaRF1pMEK7kDiagaXhSL1zQGXbYv94GuGY/zAwzK98+6idCMUOOCg==} + /esbuild-linux-arm/0.14.53: + resolution: {integrity: sha512-/u81NGAVZMopbmzd21Nu/wvnKQK3pT4CrvQ8BTje1STXcQAGnfyKgQlj3m0j2BzYbvQxSy+TMck4TNV2onvoPA==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -1991,8 +2058,8 @@ packages: dev: false optional: true - /esbuild-linux-arm64/0.14.42: - resolution: {integrity: sha512-c3Ug3e9JpVr8jAcfbhirtpBauLxzYPpycjWulD71CF6ZSY26tvzmXMJYooQ2YKqDY4e/fPu5K8bm7MiXMnyxuA==} + /esbuild-linux-arm64/0.14.53: + resolution: {integrity: sha512-GDmWITT+PMsjCA6/lByYk7NyFssW4Q6in32iPkpjZ/ytSyH+xeEx8q7HG3AhWH6heemEYEWpTll/eui3jwlSnw==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -2000,8 +2067,8 @@ packages: dev: false optional: true - /esbuild-linux-mips64le/0.14.42: - resolution: {integrity: sha512-QuvpHGbYlkyXWf2cGm51LBCHx6eUakjaSrRpUqhPwjh/uvNUYvLmz2LgPTTPwCqaKt0iwL+OGVL0tXA5aDbAbg==} + /esbuild-linux-mips64le/0.14.53: + resolution: {integrity: sha512-d6/XHIQW714gSSp6tOOX2UscedVobELvQlPMkInhx1NPz4ThZI9uNLQ4qQJHGBGKGfu+rtJsxM4NVHLhnNRdWQ==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -2009,8 +2076,8 @@ packages: dev: false optional: true - /esbuild-linux-ppc64le/0.14.42: - resolution: {integrity: sha512-8ohIVIWDbDT+i7lCx44YCyIRrOW1MYlks9fxTo0ME2LS/fxxdoJBwHWzaDYhjvf8kNpA+MInZvyOEAGoVDrMHg==} + /esbuild-linux-ppc64le/0.14.53: + resolution: {integrity: sha512-ndnJmniKPCB52m+r6BtHHLAOXw+xBCWIxNnedbIpuREOcbSU/AlyM/2dA3BmUQhsHdb4w3amD5U2s91TJ3MzzA==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -2018,8 +2085,8 @@ packages: dev: false optional: true - /esbuild-linux-riscv64/0.14.42: - resolution: {integrity: sha512-DzDqK3TuoXktPyG1Lwx7vhaF49Onv3eR61KwQyxYo4y5UKTpL3NmuarHSIaSVlTFDDpcIajCDwz5/uwKLLgKiQ==} + /esbuild-linux-riscv64/0.14.53: + resolution: {integrity: sha512-yG2sVH+QSix6ct4lIzJj329iJF3MhloLE6/vKMQAAd26UVPVkhMFqFopY+9kCgYsdeWvXdPgmyOuKa48Y7+/EQ==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -2027,8 +2094,8 @@ packages: dev: false optional: true - /esbuild-linux-s390x/0.14.42: - resolution: {integrity: sha512-YFRhPCxl8nb//Wn6SiS5pmtplBi4z9yC2gLrYoYI/tvwuB1jldir9r7JwAGy1Ck4D7sE7wBN9GFtUUX/DLdcEQ==} + /esbuild-linux-s390x/0.14.53: + resolution: {integrity: sha512-OCJlgdkB+XPYndHmw6uZT7jcYgzmx9K+28PVdOa/eLjdoYkeAFvH5hTwX4AXGLZLH09tpl4bVsEtvuyUldaNCg==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -2036,8 +2103,8 @@ packages: dev: false optional: true - /esbuild-netbsd-64/0.14.42: - resolution: {integrity: sha512-QYSD2k+oT9dqB/4eEM9c+7KyNYsIPgzYOSrmfNGDIyJrbT1d+CFVKvnKahDKNJLfOYj8N4MgyFaU9/Ytc6w5Vw==} + /esbuild-netbsd-64/0.14.53: + resolution: {integrity: sha512-gp2SB+Efc7MhMdWV2+pmIs/Ja/Mi5rjw+wlDmmbIn68VGXBleNgiEZG+eV2SRS0kJEUyHNedDtwRIMzaohWedQ==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -2045,8 +2112,8 @@ packages: dev: false optional: true - /esbuild-openbsd-64/0.14.42: - resolution: {integrity: sha512-M2meNVIKWsm2HMY7+TU9AxM7ZVwI9havdsw6m/6EzdXysyCFFSoaTQ/Jg03izjCsK17FsVRHqRe26Llj6x0MNA==} + /esbuild-openbsd-64/0.14.53: + resolution: {integrity: sha512-eKQ30ZWe+WTZmteDYg8S+YjHV5s4iTxeSGhJKJajFfQx9TLZJvsJX0/paqwP51GicOUruFpSUAs2NCc0a4ivQQ==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -2054,8 +2121,8 @@ packages: dev: false optional: true - /esbuild-sunos-64/0.14.42: - resolution: {integrity: sha512-uXV8TAZEw36DkgW8Ak3MpSJs1ofBb3Smkc/6pZ29sCAN1KzCAQzsje4sUwugf+FVicrHvlamCOlFZIXgct+iqQ==} + /esbuild-sunos-64/0.14.53: + resolution: {integrity: sha512-OWLpS7a2FrIRukQqcgQqR1XKn0jSJoOdT+RlhAxUoEQM/IpytS3FXzCJM6xjUYtpO5GMY0EdZJp+ur2pYdm39g==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -2063,8 +2130,8 @@ packages: dev: false optional: true - /esbuild-windows-32/0.14.42: - resolution: {integrity: sha512-4iw/8qWmRICWi9ZOnJJf9sYt6wmtp3hsN4TdI5NqgjfOkBVMxNdM9Vt3626G1Rda9ya2Q0hjQRD9W1o+m6Lz6g==} + /esbuild-windows-32/0.14.53: + resolution: {integrity: sha512-m14XyWQP5rwGW0tbEfp95U6A0wY0DYPInWBB7D69FAXUpBpBObRoGTKRv36lf2RWOdE4YO3TNvj37zhXjVL5xg==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -2072,8 +2139,8 @@ packages: dev: false optional: true - /esbuild-windows-64/0.14.42: - resolution: {integrity: sha512-j3cdK+Y3+a5H0wHKmLGTJcq0+/2mMBHPWkItR3vytp/aUGD/ua/t2BLdfBIzbNN9nLCRL9sywCRpOpFMx3CxzA==} + /esbuild-windows-64/0.14.53: + resolution: {integrity: sha512-s9skQFF0I7zqnQ2K8S1xdLSfZFsPLuOGmSx57h2btSEswv0N0YodYvqLcJMrNMXh6EynOmWD7rz+0rWWbFpIHQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -2081,8 +2148,8 @@ packages: dev: false optional: true - /esbuild-windows-arm64/0.14.42: - resolution: {integrity: sha512-+lRAARnF+hf8J0mN27ujO+VbhPbDqJ8rCcJKye4y7YZLV6C4n3pTRThAb388k/zqF5uM0lS5O201u0OqoWSicw==} + /esbuild-windows-arm64/0.14.53: + resolution: {integrity: sha512-E+5Gvb+ZWts+00T9II6wp2L3KG2r3iGxByqd/a1RmLmYWVsSVUjkvIxZuJ3hYTIbhLkH5PRwpldGTKYqVz0nzQ==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -2090,32 +2157,33 @@ packages: dev: false optional: true - /esbuild/0.14.42: - resolution: {integrity: sha512-V0uPZotCEHokJdNqyozH6qsaQXqmZEOiZWrXnds/zaH/0SyrIayRXWRB98CENO73MIZ9T3HBIOsmds5twWtmgw==} + /esbuild/0.14.53: + resolution: {integrity: sha512-ohO33pUBQ64q6mmheX1mZ8mIXj8ivQY/L4oVuAshr+aJI+zLl+amrp3EodrUNDNYVrKJXGPfIHFGhO8slGRjuw==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - esbuild-android-64: 0.14.42 - esbuild-android-arm64: 0.14.42 - esbuild-darwin-64: 0.14.42 - esbuild-darwin-arm64: 0.14.42 - esbuild-freebsd-64: 0.14.42 - esbuild-freebsd-arm64: 0.14.42 - esbuild-linux-32: 0.14.42 - esbuild-linux-64: 0.14.42 - esbuild-linux-arm: 0.14.42 - esbuild-linux-arm64: 0.14.42 - esbuild-linux-mips64le: 0.14.42 - esbuild-linux-ppc64le: 0.14.42 - esbuild-linux-riscv64: 0.14.42 - esbuild-linux-s390x: 0.14.42 - esbuild-netbsd-64: 0.14.42 - esbuild-openbsd-64: 0.14.42 - esbuild-sunos-64: 0.14.42 - esbuild-windows-32: 0.14.42 - esbuild-windows-64: 0.14.42 - esbuild-windows-arm64: 0.14.42 + '@esbuild/linux-loong64': 0.14.53 + esbuild-android-64: 0.14.53 + esbuild-android-arm64: 0.14.53 + esbuild-darwin-64: 0.14.53 + esbuild-darwin-arm64: 0.14.53 + esbuild-freebsd-64: 0.14.53 + esbuild-freebsd-arm64: 0.14.53 + esbuild-linux-32: 0.14.53 + esbuild-linux-64: 0.14.53 + esbuild-linux-arm: 0.14.53 + esbuild-linux-arm64: 0.14.53 + esbuild-linux-mips64le: 0.14.53 + esbuild-linux-ppc64le: 0.14.53 + esbuild-linux-riscv64: 0.14.53 + esbuild-linux-s390x: 0.14.53 + esbuild-netbsd-64: 0.14.53 + esbuild-openbsd-64: 0.14.53 + esbuild-sunos-64: 0.14.53 + esbuild-windows-32: 0.14.53 + esbuild-windows-64: 0.14.53 + esbuild-windows-arm64: 0.14.53 dev: false /escalade/3.1.1: @@ -2150,13 +2218,13 @@ packages: source-map: 0.6.1 dev: false - /eslint-config-prettier/8.5.0_eslint@8.16.0: + /eslint-config-prettier/8.5.0_eslint@8.21.0: resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.16.0 + eslint: 8.21.0 dev: false /eslint-formatter-codeframe/7.32.1: @@ -2167,20 +2235,20 @@ packages: chalk: 4.1.2 dev: false - /eslint-plugin-mocha/10.0.5_eslint@8.16.0: - resolution: {integrity: sha512-H5xuD5NStlpaKLqUWYC5BsMx8fHgrIYsdloFbONUTc2vgVNiJcWdKoX29Tt0BO75QgAltplPLIziByMozGGixA==} + /eslint-plugin-mocha/10.1.0_eslint@8.21.0: + resolution: {integrity: sha512-xLqqWUF17llsogVOC+8C6/jvQ+4IoOREbN7ZCHuOHuD6cT5cDD4h7f2LgsZuzMAiwswWE21tO7ExaknHVDrSkw==} engines: {node: '>=14.0.0'} peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.16.0 - eslint-utils: 3.0.0_eslint@8.16.0 - rambda: 7.1.4 + eslint: 8.21.0 + eslint-utils: 3.0.0_eslint@8.21.0 + rambda: 7.2.0 dev: false - /eslint-plugin-prettier/4.0.0_f107880aaccee60d102dfc61a6b71e12: - resolution: {integrity: sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==} - engines: {node: '>=6.0.0'} + /eslint-plugin-prettier/4.2.1_3fb4ba81a229f81fc7d96e86670e27e9: + resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} + engines: {node: '>=12.0.0'} peerDependencies: eslint: '>=7.28.0' eslint-config-prettier: '*' @@ -2189,26 +2257,26 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.16.0 - eslint-config-prettier: 8.5.0_eslint@8.16.0 + eslint: 8.21.0 + eslint-config-prettier: 8.5.0_eslint@8.21.0 prettier: 2.7.1 prettier-linter-helpers: 1.0.0 dev: false - /eslint-plugin-unicorn/42.0.0_eslint@8.16.0: + /eslint-plugin-unicorn/42.0.0_eslint@8.21.0: resolution: {integrity: sha512-ixBsbhgWuxVaNlPTT8AyfJMlhyC5flCJFjyK3oKE8TRrwBnaHvUbuIkCM1lqg8ryYrFStL/T557zfKzX4GKSlg==} engines: {node: '>=12'} peerDependencies: eslint: '>=8.8.0' dependencies: - '@babel/helper-validator-identifier': 7.16.7 - ci-info: 3.3.1 + '@babel/helper-validator-identifier': 7.18.6 + ci-info: 3.3.2 clean-regexp: 1.0.0 - eslint: 8.16.0 - eslint-utils: 3.0.0_eslint@8.16.0 + eslint: 8.21.0 + eslint-utils: 3.0.0_eslint@8.21.0 esquery: 1.4.0 indent-string: 4.0.0 - is-builtin-module: 3.1.0 + is-builtin-module: 3.2.0 lodash: 4.17.21 pluralize: 8.0.0 read-pkg-up: 7.0.1 @@ -2234,13 +2302,13 @@ packages: estraverse: 5.3.0 dev: false - /eslint-utils/3.0.0_eslint@8.16.0: + /eslint-utils/3.0.0_eslint@8.21.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.16.0 + eslint: 8.21.0 eslint-visitor-keys: 2.1.0 dev: false @@ -2254,13 +2322,14 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false - /eslint/8.16.0: - resolution: {integrity: sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==} + /eslint/8.21.0: + resolution: {integrity: sha512-/XJ1+Qurf1T9G2M5IHrsjp+xrGT73RZf23xA1z5wB1ZzzEAWSZKvRwhWxTFp1rvkvCfwcvAUNAP31bhKTTGfDA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: '@eslint/eslintrc': 1.3.0 - '@humanwhocodes/config-array': 0.9.5 + '@humanwhocodes/config-array': 0.10.4 + '@humanwhocodes/gitignore-to-minimatch': 1.0.2 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 @@ -2268,16 +2337,19 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.16.0 + eslint-utils: 3.0.0_eslint@8.21.0 eslint-visitor-keys: 3.3.0 - espree: 9.3.2 + espree: 9.3.3 esquery: 1.4.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 + find-up: 5.0.0 functional-red-black-tree: 1.0.1 glob-parent: 6.0.2 - globals: 13.15.0 + globals: 13.17.0 + globby: 11.1.0 + grapheme-splitter: 1.0.4 ignore: 5.2.0 import-fresh: 3.3.0 imurmurhash: 0.1.4 @@ -2298,12 +2370,12 @@ packages: - supports-color dev: false - /espree/9.3.2: - resolution: {integrity: sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==} + /espree/9.3.3: + resolution: {integrity: sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.7.1 - acorn-jsx: 5.3.2_acorn@8.7.1 + acorn: 8.8.0 + acorn-jsx: 5.3.2_acorn@8.8.0 eslint-visitor-keys: 3.3.0 dev: false @@ -2350,12 +2422,21 @@ packages: engines: {node: '>=0.10.0'} dev: false + /event-target-shim/5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + dev: false + /exec-sh/0.2.2: resolution: {integrity: sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==} dependencies: merge: 1.2.1 dev: false + /exenv-es6/1.1.1: + resolution: {integrity: sha512-vlVu3N8d6yEMpMsEm+7sUBAI81aqYYuEvfK0jNqmdb/OPXzzH7QWDDnVjMvDSY47JdHEqx/dfC/q8WkfoTmpGQ==} + dev: false + /expand-template/2.0.3: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} @@ -2400,8 +2481,8 @@ packages: pend: 1.2.0 dev: false - /fetch-blob/3.1.5: - resolution: {integrity: sha512-N64ZpKqoLejlrwkIAnb9iLSA3Vx/kjgzpcDhygcqJ2KKjky8nCgUQ+dzXtbrLaWZGZNmNfQTsiQ0weZ1svglHg==} + /fetch-blob/3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} dependencies: node-domexception: 1.0.0 @@ -2449,7 +2530,7 @@ packages: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flatted: 3.2.5 + flatted: 3.2.6 rimraf: 3.0.2 dev: false @@ -2458,8 +2539,8 @@ packages: hasBin: true dev: false - /flatted/3.2.5: - resolution: {integrity: sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==} + /flatted/3.2.6: + resolution: {integrity: sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==} dev: false /foreground-child/2.0.0: @@ -2483,7 +2564,7 @@ packages: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} dependencies: - fetch-blob: 3.1.5 + fetch-blob: 3.2.0 dev: false /fs-constants/1.0.0: @@ -2510,19 +2591,6 @@ packages: resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} dev: false - /gauge/2.7.4: - resolution: {integrity: sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==} - dependencies: - aproba: 1.2.0 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 1.0.2 - strip-ansi: 3.0.1 - wide-align: 1.1.5 - dev: false - /gensync/1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -2533,8 +2601,8 @@ packages: engines: {node: 6.* || 8.* || >= 10.*} dev: false - /get-intrinsic/1.1.1: - resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==} + /get-intrinsic/1.1.2: + resolution: {integrity: sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==} dependencies: function-bind: 1.1.1 has: 1.0.3 @@ -2586,8 +2654,8 @@ packages: engines: {node: '>=4'} dev: false - /globals/13.15.0: - resolution: {integrity: sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==} + /globals/13.17.0: + resolution: {integrity: sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -2605,8 +2673,8 @@ packages: slash: 3.0.0 dev: false - /globby/13.1.1: - resolution: {integrity: sha512-XMzoDZbGZ37tufiv7g0N4F/zp3zkwdFtVbV3EHsVl1KQr4RPLfNoT068/97RPshz2J5xYNEjLKKBKaGHifBd3Q==} + /globby/13.1.2: + resolution: {integrity: sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 @@ -2632,6 +2700,10 @@ packages: '@esfx/cancelable': 1.0.0-pre.30 dev: false + /grapheme-splitter/1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: false + /growl/1.10.5: resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==} engines: {node: '>=4.x'} @@ -2652,10 +2724,6 @@ packages: engines: {node: '>= 0.4'} dev: false - /has-unicode/2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - dev: false - /has/1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} @@ -2680,6 +2748,12 @@ packages: engines: {node: '>=12.0.0'} dev: false + /history/5.3.0: + resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==} + dependencies: + '@babel/runtime': 7.18.9 + dev: false + /hoist-non-react-statics/3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} dependencies: @@ -2718,7 +2792,7 @@ packages: domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.0.1 - entities: 4.3.0 + entities: 4.3.1 dev: false /http-proxy-agent/5.0.0: @@ -2806,8 +2880,8 @@ packages: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} dev: false - /is-builtin-module/3.1.0: - resolution: {integrity: sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==} + /is-builtin-module/3.2.0: + resolution: {integrity: sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==} engines: {node: '>=6'} dependencies: builtin-modules: 3.3.0 @@ -2824,13 +2898,6 @@ packages: engines: {node: '>=0.10.0'} dev: false - /is-fullwidth-code-point/1.0.0: - resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} - engines: {node: '>=0.10.0'} - dependencies: - number-is-nan: 1.0.1 - dev: false - /is-fullwidth-code-point/3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -2864,7 +2931,7 @@ packages: /is-reference/1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: - '@types/estree': 0.0.51 + '@types/estree': 1.0.0 dev: false /is-unicode-supported/0.1.0: @@ -2872,10 +2939,6 @@ packages: engines: {node: '>=10'} dev: false - /isarray/1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: false - /isexe/2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: false @@ -2894,8 +2957,8 @@ packages: supports-color: 7.2.0 dev: false - /istanbul-reports/3.1.4: - resolution: {integrity: sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==} + /istanbul-reports/3.1.5: + resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 @@ -2931,7 +2994,7 @@ packages: optional: true dependencies: abab: 2.0.6 - acorn: 8.7.1 + acorn: 8.8.0 acorn-globals: 6.0.0 cssom: 0.5.0 cssstyle: 2.3.0 @@ -2944,7 +3007,7 @@ packages: http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.0 + nwsapi: 2.2.1 parse5: 6.0.1 saxes: 5.0.1 symbol-tree: 3.2.4 @@ -2955,7 +3018,7 @@ packages: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 10.0.0 - ws: 8.7.0 + ws: 8.8.1 xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -2996,7 +3059,7 @@ packages: requiresBuild: true dependencies: node-addon-api: 4.3.0 - prebuild-install: 7.1.0 + prebuild-install: 7.1.1 dev: false /kleur/3.0.3: @@ -3095,10 +3158,10 @@ packages: yallist: 4.0.0 dev: false - /lzutf8/0.6.2: - resolution: {integrity: sha512-+cXCQYarhT2BUW2S9m2sYs5w4q+uta5kW1qi5C7MVTfZKULMNiCou7K4bC2N1Wpw45cwfSx5fJ0LKhGuCMAZzA==} + /lzutf8/0.6.3: + resolution: {integrity: sha512-CAkF9HKrM+XpB0f3DepQ2to2iUEo0zrbh+XgBqgNBc1+k8HMM3u/YSfHI3Dr4GmoTIez2Pr/If1XFl3rU26AwA==} dependencies: - readable-stream: 3.6.0 + readable-stream: 4.1.0 dev: false /magic-string/0.25.9: @@ -3286,7 +3349,7 @@ packages: dev: false /ms/2.0.0: - resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: false /ms/2.1.2: @@ -3333,8 +3396,8 @@ packages: tslib: 2.4.0 dev: false - /node-abi/3.22.0: - resolution: {integrity: sha512-u4uAs/4Zzmp/jjsD9cyFYDXeISfUWaAVWshPmDZOFOv4Xl4SbzTXm53I04C2uRueYJ+0t5PEtLH/owbn2Npf/w==} + /node-abi/3.23.0: + resolution: {integrity: sha512-XWte/uvq7hmgY27WesfxLUAPejKUlkEbikhBFaIhxe+XkHa57rXBwYqGjsIyfVXaU8kC0Wp2p/qQroauDKs1XA==} engines: {node: '>=10'} dependencies: semver: 7.3.7 @@ -3349,17 +3412,17 @@ packages: engines: {node: '>=10.5.0'} dev: false - /node-fetch/3.2.5: - resolution: {integrity: sha512-u7zCHdJp8JXBwF09mMfo2CL6kp37TslDl1KP3hRGTlCInBtag+UO3LGVy+NF0VzvnL3PVMpA2hXh1EtECFnyhQ==} + /node-fetch/3.2.10: + resolution: {integrity: sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: data-uri-to-buffer: 4.0.0 - fetch-blob: 3.1.5 + fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 dev: false - /node-releases/2.0.5: - resolution: {integrity: sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==} + /node-releases/2.0.6: + resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} dev: false /node-watch/0.7.3: @@ -3371,7 +3434,7 @@ packages: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.0 + resolve: 1.22.1 semver: 5.7.1 validate-npm-package-license: 3.0.4 dev: false @@ -3381,33 +3444,14 @@ packages: engines: {node: '>=0.10.0'} dev: false - /npmlog/4.1.2: - resolution: {integrity: sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==} - dependencies: - are-we-there-yet: 1.1.7 - console-control-strings: 1.1.0 - gauge: 2.7.4 - set-blocking: 2.0.0 - dev: false - /nth-check/2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: boolbase: 1.0.0 dev: false - /number-is-nan/1.0.1: - resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} - engines: {node: '>=0.10.0'} - dev: false - - /nwsapi/2.2.0: - resolution: {integrity: sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==} - dev: false - - /object-assign/4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} + /nwsapi/2.2.1: + resolution: {integrity: sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==} dev: false /object-inspect/1.12.2: @@ -3501,7 +3545,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.16.7 + '@babel/code-frame': 7.18.6 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -3527,7 +3571,7 @@ packages: /parse5/7.0.0: resolution: {integrity: sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g==} dependencies: - entities: 4.3.0 + entities: 4.3.1 dev: false /pascal-case/3.1.2: @@ -3596,12 +3640,12 @@ packages: playwright-core: 1.22.2 dev: false - /plist/3.0.5: - resolution: {integrity: sha512-83vX4eYdQp3vP9SxuYgEM/G/pJQqLUz/V/xzPrzruLs7fz7jxGQ1msZ/mg1nwZxUSuOp4sb+/bEIbRrbzZRxDA==} + /plist/3.0.6: + resolution: {integrity: sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==} engines: {node: '>=6'} dependencies: base64-js: 1.5.1 - xmlbuilder: 9.0.7 + xmlbuilder: 15.1.1 dev: false /pluralize/8.0.0: @@ -3622,8 +3666,8 @@ packages: source-map-js: 1.0.2 dev: false - /prebuild-install/7.1.0: - resolution: {integrity: sha512-CNcMgI1xBypOyGqjp3wOc8AAo1nMhZS3Cwd3iHIxOdAUbb+YxdNuM4Z5iIrZ8RLvOsf3F3bl7b7xGq6DjQoNYA==} + /prebuild-install/7.1.1: + resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} engines: {node: '>=10'} hasBin: true dependencies: @@ -3633,8 +3677,7 @@ packages: minimist: 1.2.6 mkdirp-classic: 0.5.3 napi-build-utils: 1.0.2 - node-abi: 3.22.0 - npmlog: 4.1.2 + node-abi: 3.23.0 pump: 3.0.0 rc: 1.2.8 simple-get: 4.0.1 @@ -3659,14 +3702,14 @@ packages: fast-diff: 1.2.0 dev: false - /prettier-plugin-organize-imports/2.3.4_prettier@2.7.1+typescript@4.7.2: + /prettier-plugin-organize-imports/2.3.4_prettier@2.7.1+typescript@4.7.4: resolution: {integrity: sha512-R8o23sf5iVL/U71h9SFUdhdOEPsi3nm42FD/oDYIZ2PQa4TNWWuWecxln6jlIQzpZTDMUeO1NicJP6lLn2TtRw==} peerDependencies: prettier: '>=2.0' typescript: '>=2.9' dependencies: prettier: 2.7.1 - typescript: 4.7.2 + typescript: 4.7.4 dev: false /prettier/2.7.1: @@ -3682,10 +3725,6 @@ packages: '@esfx/disposable': 1.0.0-pre.30 dev: false - /process-nextick-args/2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: false - /promise-debounce/1.0.1: resolution: {integrity: sha512-jq3Crngf1DaaOXQIOUkPr7LsW4UsWyn0KW1MJ+yMn5njTJ+F1AuHmjjwJhod9HuoNSSMspSLS9PS3V7BrexwjQ==} dev: false @@ -3698,8 +3737,8 @@ packages: sisteransi: 1.0.5 dev: false - /psl/1.8.0: - resolution: {integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==} + /psl/1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: false /pump/3.0.0: @@ -3714,8 +3753,8 @@ packages: engines: {node: '>=6'} dev: false - /qs/6.10.3: - resolution: {integrity: sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==} + /qs/6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} dependencies: side-channel: 1.0.4 @@ -3725,8 +3764,8 @@ packages: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: false - /rambda/7.1.4: - resolution: {integrity: sha512-bPK8sSiVHIC7CqdWga8R+hRi5hfc4hK6S01lZW4KrLwSNryQoKaCOJA9GNiF20J7Nbe1vejRfR37/ASQXFL5EA==} + /rambda/7.2.0: + resolution: {integrity: sha512-xW2ZcQh+AtRHdIN0RUix+gAwyfAeMBZA6SnLSblw1+YRqUx+eV4Eppg/ayDdrvSs6KegZYHYtSF6+I86Z5Owqg==} dev: false /randombytes/2.1.0: @@ -3755,6 +3794,14 @@ packages: scheduler: 0.21.0 dev: false + /react-icons/4.4.0_react@18.0.0: + resolution: {integrity: sha512-fSbvHeVYo/B5/L4VhB7sBA1i2tS8MkT0Hb9t2H1AVPkwGfVHLJCqyr2Py9dKMxsyM63Eng1GkdZfbWj+Fmv8Rg==} + peerDependencies: + react: '*' + dependencies: + react: 18.0.0 + dev: false + /react-is/16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: false @@ -3763,11 +3810,46 @@ packages: resolution: {integrity: sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==} dev: false + /react-loader-spinner/5.1.7-beta.1_42bb643d0b268c4c5cb594c9f18cf5be: + resolution: {integrity: sha512-Lo5qVWUyhAMs92PffsJRwH6iqPTgBmC7pocFA8Z3fkxS8s9OVKTIKRMvgywQ+CAxEXN9H5AqziYS+8zT7yK3CQ==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.0.0 + react-dom: 18.0.0_react@18.0.0 + styled-components: 5.3.5_42bb643d0b268c4c5cb594c9f18cf5be + styled-tools: 1.7.2 + transitivePeerDependencies: + - react-is + dev: false + /react-refresh/0.13.0: resolution: {integrity: sha512-XP8A9BT0CpRBD+NYLLeIhld/RqG9+gktUjW1FkE+Vm7OCinbG1SshcK5tb9ls4kzvjZr9mOQc7HYgBngEyPAXg==} engines: {node: '>=0.10.0'} dev: false + /react-router-dom/6.3.0_react-dom@18.0.0+react@18.0.0: + resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + dependencies: + history: 5.3.0 + react: 18.0.0 + react-dom: 18.0.0_react@18.0.0 + react-router: 6.3.0_react@18.0.0 + dev: false + + /react-router/6.3.0_react@18.0.0: + resolution: {integrity: sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==} + peerDependencies: + react: '>=16.8' + dependencies: + history: 5.3.0 + react: 18.0.0 + dev: false + /react/18.0.0: resolution: {integrity: sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==} engines: {node: '>=0.10.0'} @@ -3795,24 +3877,12 @@ packages: dev: false /read/1.0.7: - resolution: {integrity: sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=} + resolution: {integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==} engines: {node: '>=0.8'} dependencies: mute-stream: 0.0.8 dev: false - /readable-stream/2.3.7: - resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: false - /readable-stream/3.6.0: resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} engines: {node: '>= 6'} @@ -3822,6 +3892,13 @@ packages: util-deprecate: 1.0.2 dev: false + /readable-stream/4.1.0: + resolution: {integrity: sha512-sVisi3+P2lJ2t0BPbpK629j8wRW06yKGJUcaLAGXPAUhyUxVJm7VsCTit1PFgT4JHUDMrGNR+ZjSKpzGaRF3zw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + abort-controller: 3.0.0 + dev: false + /readdirp/3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -3834,6 +3911,10 @@ packages: engines: {node: '>=6'} dev: false + /regenerator-runtime/0.13.9: + resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} + dev: false + /regexp-tree/0.1.24: resolution: {integrity: sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==} hasBin: true @@ -3845,7 +3926,7 @@ packages: dev: false /require-directory/2.1.1: - resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} dev: false @@ -3859,8 +3940,8 @@ packages: engines: {node: '>=4'} dev: false - /resolve/1.22.0: - resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} + /resolve/1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true dependencies: is-core-module: 2.9.0 @@ -3961,10 +4042,6 @@ packages: randombytes: 2.1.0 dev: false - /set-blocking/2.0.0: - resolution: {integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc=} - dev: false - /shallowequal/1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} dev: false @@ -3985,7 +4062,7 @@ packages: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.1 + get-intrinsic: 1.1.2 object-inspect: 1.12.2 dev: false @@ -4070,16 +4147,7 @@ packages: dev: false /sprintf-js/1.0.3: - resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} - dev: false - - /string-width/1.0.2: - resolution: {integrity: sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=} - engines: {node: '>=0.10.0'} - dependencies: - code-point-at: 1.1.0 - is-fullwidth-code-point: 1.0.0 - strip-ansi: 3.0.1 + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: false /string-width/4.2.3: @@ -4091,25 +4159,12 @@ packages: strip-ansi: 6.0.1 dev: false - /string_decoder/1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - dependencies: - safe-buffer: 5.1.2 - dev: false - /string_decoder/1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 dev: false - /strip-ansi/3.0.1: - resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-regex: 2.1.1 - dev: false - /strip-ansi/6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -4148,9 +4203,9 @@ packages: react-dom: '>= 16.8.0' react-is: '>= 16.8.0' dependencies: - '@babel/helper-module-imports': 7.16.7 - '@babel/traverse': 7.18.2_supports-color@5.5.0 - '@emotion/is-prop-valid': 1.1.2 + '@babel/helper-module-imports': 7.18.6 + '@babel/traverse': 7.18.10_supports-color@5.5.0 + '@emotion/is-prop-valid': 1.2.0 '@emotion/stylis': 0.8.5 '@emotion/unitless': 0.7.5 babel-plugin-styled-components: 2.0.7_styled-components@5.3.5 @@ -4163,6 +4218,10 @@ packages: supports-color: 5.5.0 dev: false + /styled-tools/1.7.2: + resolution: {integrity: sha512-IjLxzM20RMwAsx8M1QoRlCG/Kmq8lKzCGyospjtSXt/BTIIcvgTonaxQAsKnBrsZNwhpHzO9ADx5te0h76ILVg==} + dev: false + /supports-color/5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -4193,6 +4252,10 @@ packages: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: false + /tabbable/5.3.3: + resolution: {integrity: sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==} + dev: false + /table-layout/1.0.2: resolution: {integrity: sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==} engines: {node: '>=8.0.0'} @@ -4233,7 +4296,7 @@ packages: dev: false /text-table/0.2.0: - resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: false /tmp/0.2.1: @@ -4244,7 +4307,7 @@ packages: dev: false /to-fast-properties/2.0.0: - resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} dev: false @@ -4259,7 +4322,7 @@ packages: resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==} engines: {node: '>=6'} dependencies: - psl: 1.8.0 + psl: 1.9.0 punycode: 2.1.1 universalify: 0.1.2 dev: false @@ -4279,18 +4342,18 @@ packages: resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} dev: false - /tsutils/3.21.0_typescript@4.7.2: + /tsutils/3.21.0_typescript@4.7.4: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.7.2 + typescript: 4.7.4 dev: false /tunnel-agent/0.6.0: - resolution: {integrity: sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=} + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: safe-buffer: 5.2.1 dev: false @@ -4301,7 +4364,7 @@ packages: dev: false /type-check/0.3.2: - resolution: {integrity: sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=} + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 @@ -4332,13 +4395,13 @@ packages: /typed-rest-client/1.8.9: resolution: {integrity: sha512-uSmjE38B80wjL85UFX3sTYEUlvZ1JgCRhsWj/fJ4rZ0FqDUFoIuodtiVeE+cUqiVTOKPdKrp/sdftD15MDek6g==} dependencies: - qs: 6.10.3 + qs: 6.11.0 tunnel: 0.0.6 underscore: 1.13.4 dev: false - /typescript/4.7.2: - resolution: {integrity: sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==} + /typescript/4.7.4: + resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==} engines: {node: '>=4.2.0'} hasBin: true dev: false @@ -4366,6 +4429,17 @@ packages: engines: {node: '>= 4.0.0'} dev: false + /update-browserslist-db/1.0.5_browserslist@4.21.3: + resolution: {integrity: sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.3 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: false + /upper-case-first/2.0.2: resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} dependencies: @@ -4389,18 +4463,18 @@ packages: dev: false /util-deprecate/1.0.2: - resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: false /v8-compile-cache/2.3.0: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} dev: false - /v8-to-istanbul/9.0.0: - resolution: {integrity: sha512-HcvgY/xaRm7isYmyx+lFKA4uQmfUbN0J4M0nNItvzTvH/iQ9kW5j/t4YSR+Ge323/lrgDAWJoF46tzGQHwBHFw==} + /v8-to-istanbul/9.0.1: + resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} engines: {node: '>=10.12.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.14 '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.8.0 dev: false @@ -4412,8 +4486,8 @@ packages: spdx-expression-parse: 3.0.1 dev: false - /vite/2.9.9: - resolution: {integrity: sha512-ffaam+NgHfbEmfw/Vuh6BHKKlI/XIAhxE5QSS7gFLIngxg171mg1P3a4LSRME0z2ZU1ScxoKzphkipcYwSD5Ew==} + /vite/2.9.14: + resolution: {integrity: sha512-P/UCjSpSMcE54r4mPak55hWAZPlyfS369svib/gpmz8/01L822lMPOJ/RYW6tLCe1RPvMvOsJ17erf55bKp4Hw==} engines: {node: '>=12.2.0'} hasBin: true peerDependencies: @@ -4428,9 +4502,9 @@ packages: stylus: optional: true dependencies: - esbuild: 0.14.42 + esbuild: 0.14.53 postcss: 8.4.14 - resolve: 1.22.0 + resolve: 1.22.1 rollup: 2.70.2 optionalDependencies: fsevents: 2.3.2 @@ -4441,9 +4515,9 @@ packages: engines: {node: '>= 14'} hasBin: true dependencies: - azure-devops-node-api: 11.1.1 + azure-devops-node-api: 11.2.0 chalk: 2.4.2 - cheerio: 1.0.0-rc.11 + cheerio: 1.0.0-rc.12 commander: 6.2.1 glob: 7.2.3 hosted-git-info: 4.1.0 @@ -4468,18 +4542,18 @@ packages: engines: {node: '>=8.0.0 || >=10.0.0'} dev: false - /vscode-jsonrpc/8.0.1: - resolution: {integrity: sha512-N/WKvghIajmEvXpatSzvTvOIz61ZSmOSa4BRA4pTLi+1+jozquQKP/MkaylP9iB68k73Oua1feLQvH3xQuigiQ==} + /vscode-jsonrpc/8.0.2: + resolution: {integrity: sha512-RY7HwI/ydoC1Wwg4gJ3y6LpU9FJRZAUnTYMXthqhFXXu77ErDd/xkREpGuk4MyYkk4a+XDWAMqe0S3KkelYQEQ==} engines: {node: '>=14.0.0'} dev: false - /vscode-languageclient/8.0.1: - resolution: {integrity: sha512-9XoE+HJfaWvu7Y75H3VmLo5WLCtsbxEgEhrLPqwt7eyoR49lUIyyrjb98Yfa50JCMqF2cePJAEVI6oe2o1sIhw==} + /vscode-languageclient/8.0.2: + resolution: {integrity: sha512-lHlthJtphG9gibGb/y72CKqQUxwPsMXijJVpHEC2bvbFqxmkj9LwQ3aGU9dwjBLqsX1S4KjShYppLvg1UJDF/Q==} engines: {vscode: ^1.67.0} dependencies: minimatch: 3.1.2 semver: 7.3.7 - vscode-languageserver-protocol: 3.17.1 + vscode-languageserver-protocol: 3.17.2 dev: false /vscode-languageserver-protocol/3.16.0: @@ -4489,11 +4563,11 @@ packages: vscode-languageserver-types: 3.16.0 dev: false - /vscode-languageserver-protocol/3.17.1: - resolution: {integrity: sha512-BNlAYgQoYwlSgDLJhSG+DeA8G1JyECqRzM2YO6tMmMji3Ad9Mw6AW7vnZMti90qlAKb0LqAlJfSVGEdqMMNzKg==} + /vscode-languageserver-protocol/3.17.2: + resolution: {integrity: sha512-8kYisQ3z/SQ2kyjlNeQxbkkTNmVFoQCqkmGrzLH6A9ecPlgTbp3wDTnUNqaUxYr4vlAcloxx8zwy7G5WdguYNg==} dependencies: - vscode-jsonrpc: 8.0.1 - vscode-languageserver-types: 3.17.1 + vscode-jsonrpc: 8.0.2 + vscode-languageserver-types: 3.17.2 dev: false /vscode-languageserver-textdocument/1.0.5: @@ -4504,8 +4578,8 @@ packages: resolution: {integrity: sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==} dev: false - /vscode-languageserver-types/3.17.1: - resolution: {integrity: sha512-K3HqVRPElLZVVPtMeKlsyL9aK0GxGQpvtAUTfX4k7+iJ4mc1M+JM+zQwkgGy2LzY0f0IAafe8MKqIkJrxfGGjQ==} + /vscode-languageserver-types/3.17.2: + resolution: {integrity: sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==} dev: false /vscode-languageserver/7.0.0: @@ -4537,7 +4611,7 @@ packages: dev: false /watch/1.0.2: - resolution: {integrity: sha1-NApxe952Vyb6CqB9ch4BR6VR3ww=} + resolution: {integrity: sha512-1u+Z5n9Jc1E2c7qDO8SinPoZuHj7FgbgU1olSFoyaklduDvvtX7GMMtlE6OC9FTXq4KvNAOfj6Zu4vI1e9bAKA==} engines: {node: '>=0.1.95'} hasBin: true dependencies: @@ -4591,12 +4665,6 @@ packages: isexe: 2.0.0 dev: false - /wide-align/1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - dependencies: - string-width: 1.0.2 - dev: false - /word-wrap/1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} @@ -4624,11 +4692,11 @@ packages: dev: false /wrappy/1.0.2: - resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: false - /ws/8.7.0: - resolution: {integrity: sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg==} + /ws/8.8.1: + resolution: {integrity: sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -4667,11 +4735,6 @@ packages: engines: {node: '>=8.0'} dev: false - /xmlbuilder/9.0.7: - resolution: {integrity: sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=} - engines: {node: '>=4.0'} - dev: false - /xmlchars/2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} dev: false @@ -4741,7 +4804,7 @@ packages: dev: false /yauzl/2.10.0: - resolution: {integrity: sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=} + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} dependencies: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 @@ -4763,7 +4826,7 @@ packages: name: '@rush-temp/bundler' version: 0.0.0 dependencies: - '@rollup/plugin-commonjs': 22.0.0_rollup@2.70.2 + '@rollup/plugin-commonjs': 22.0.1_rollup@2.70.2 '@rollup/plugin-json': 4.1.0_rollup@2.70.2 '@rollup/plugin-multi-entry': 4.1.0_rollup@2.70.2 '@rollup/plugin-node-resolve': 13.1.3_rollup@2.70.2 @@ -4772,14 +4835,14 @@ packages: '@types/mocha': 9.1.1 '@types/node': 16.0.3 c8: 7.11.3 - eslint: 8.16.0 + eslint: 8.21.0 mocha: 9.2.2 mocha-junit-reporter: 2.0.2_mocha@9.2.2 mocha-multi-reporters: 1.5.1_mocha@9.2.2 rimraf: 3.0.2 rollup: 2.70.2 - typescript: 4.7.2 - vite: 2.9.9 + typescript: 4.7.4 + vite: 2.9.14 transitivePeerDependencies: - less - sass @@ -4798,25 +4861,23 @@ packages: name: '@rush-temp/cadl-vscode' version: 0.0.0 dependencies: - '@rollup/plugin-commonjs': 22.0.0_rollup@2.70.2 + '@rollup/plugin-commonjs': 22.0.1_rollup@2.70.2 '@rollup/plugin-node-resolve': 13.1.3_rollup@2.70.2 '@types/mkdirp': 1.0.2 '@types/mocha': 9.1.1 '@types/node': 16.0.3 '@types/vscode': 1.53.0 c8: 7.11.3 - eslint: 8.16.0 + eslint: 8.21.0 mkdirp: 1.0.4 mocha: 9.2.2 mocha-junit-reporter: 2.0.2_mocha@9.2.2 mocha-multi-reporters: 1.5.1_mocha@9.2.2 rimraf: 3.0.2 rollup: 2.70.2 - typescript: 4.7.2 + typescript: 4.7.4 vsce: 2.6.7 - vscode-languageclient: 8.0.1 - vscode-oniguruma: 1.6.2 - vscode-textmate: 6.0.0 + vscode-languageclient: 8.0.2 transitivePeerDependencies: - supports-color dev: false @@ -4839,8 +4900,8 @@ packages: ajv: 8.9.0 c8: 7.11.3 change-case: 4.1.2 - eslint: 8.16.0 - globby: 13.1.1 + eslint: 8.21.0 + globby: 13.1.2 grammarkdown: 3.1.2 js-yaml: 4.1.0 mkdirp: 1.0.4 @@ -4848,15 +4909,15 @@ packages: mocha-junit-reporter: 2.0.2_mocha@9.2.2 mocha-multi-reporters: 1.5.1_mocha@9.2.2 mustache: 4.2.0 - node-fetch: 3.2.5 + node-fetch: 3.2.10 node-watch: 0.7.3 picocolors: 1.0.0 prettier: 2.7.1 - prettier-plugin-organize-imports: 2.3.4_prettier@2.7.1+typescript@4.7.2 + prettier-plugin-organize-imports: 2.3.4_prettier@2.7.1+typescript@4.7.4 prompts: 2.4.2 rimraf: 3.0.2 source-map-support: 0.5.21 - typescript: 4.7.2 + typescript: 4.7.4 vscode-languageserver: 7.0.0 vscode-languageserver-textdocument: 1.0.5 vscode-oniguruma: 1.6.2 @@ -4873,14 +4934,14 @@ packages: version: 0.0.0 dependencies: '@rushstack/eslint-patch': 1.1.0 - '@typescript-eslint/eslint-plugin': 5.27.0_1cb21ecc3f04eca4a509631d5e40e8fa - '@typescript-eslint/parser': 5.27.0_eslint@8.16.0+typescript@4.7.2 - eslint: 8.16.0 - eslint-config-prettier: 8.5.0_eslint@8.16.0 - eslint-plugin-mocha: 10.0.5_eslint@8.16.0 - eslint-plugin-prettier: 4.0.0_f107880aaccee60d102dfc61a6b71e12 - eslint-plugin-unicorn: 42.0.0_eslint@8.16.0 - typescript: 4.7.2 + '@typescript-eslint/eslint-plugin': 5.32.0_43a51d9e2446a740dea4259743d3ab3e + '@typescript-eslint/parser': 5.32.0_eslint@8.21.0+typescript@4.7.4 + eslint: 8.21.0 + eslint-config-prettier: 8.5.0_eslint@8.21.0 + eslint-plugin-mocha: 10.1.0_eslint@8.21.0 + eslint-plugin-prettier: 4.2.1_3fb4ba81a229f81fc7d96e86670e27e9 + eslint-plugin-unicorn: 42.0.0_eslint@8.21.0 + typescript: 4.7.4 transitivePeerDependencies: - prettier - supports-color @@ -4893,14 +4954,14 @@ packages: dependencies: '@types/mocha': 9.1.1 '@types/node': 16.0.3 - '@typescript-eslint/utils': 5.26.0_eslint@8.16.0+typescript@4.7.2 + '@typescript-eslint/utils': 5.26.0_eslint@8.21.0+typescript@4.7.4 c8: 7.11.3 - eslint: 8.16.0 + eslint: 8.21.0 mocha: 9.2.2 mocha-junit-reporter: 2.0.2_mocha@9.2.2 mocha-multi-reporters: 1.5.1_mocha@9.2.2 rimraf: 3.0.2 - typescript: 4.7.2 + typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: false @@ -4913,11 +4974,11 @@ packages: '@types/mocha': 9.1.1 '@types/node': 16.0.3 '@types/prettier': 2.6.0 - '@types/react': 18.0.10 - '@types/react-dom': 18.0.5 + '@types/react': 18.0.15 + '@types/react-dom': 18.0.6 '@types/styled-components': 5.1.25 c8: 7.11.3 - eslint: 8.16.0 + eslint: 8.21.0 mocha: 9.2.2 mocha-junit-reporter: 2.0.2_mocha@9.2.2 mocha-multi-reporters: 1.5.1_mocha@9.2.2 @@ -4927,7 +4988,7 @@ packages: react-is: 18.1.0 rimraf: 3.0.2 styled-components: 5.3.5_42bb643d0b268c4c5cb594c9f18cf5be - typescript: 4.7.2 + typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: false @@ -4942,13 +5003,13 @@ packages: '@types/watch': 1.0.3 '@types/yargs': 17.0.10 c8: 7.11.3 - eslint: 8.16.0 + eslint: 8.21.0 mocha: 9.2.2 mocha-junit-reporter: 2.0.2_mocha@9.2.2 mocha-multi-reporters: 1.5.1_mocha@9.2.2 rimraf: 3.0.2 strip-json-comments: 4.0.0 - typescript: 4.7.2 + typescript: 4.7.4 watch: 1.0.2 yargs: 17.3.1 transitivePeerDependencies: @@ -4963,12 +5024,12 @@ packages: '@types/mocha': 9.1.1 '@types/node': 16.0.3 c8: 7.11.3 - eslint: 8.16.0 + eslint: 8.21.0 mocha: 9.2.2 mocha-junit-reporter: 2.0.2_mocha@9.2.2 mocha-multi-reporters: 1.5.1_mocha@9.2.2 rimraf: 3.0.2 - typescript: 4.7.2 + typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: false @@ -4981,12 +5042,12 @@ packages: '@types/mocha': 9.1.1 '@types/node': 16.0.3 c8: 7.11.3 - eslint: 8.16.0 + eslint: 8.21.0 mocha: 9.2.2 mocha-junit-reporter: 2.0.2_mocha@9.2.2 mocha-multi-reporters: 1.5.1_mocha@9.2.2 rimraf: 3.0.2 - typescript: 4.7.2 + typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: false @@ -4999,12 +5060,12 @@ packages: '@types/mocha': 9.1.1 '@types/node': 16.0.3 c8: 7.11.3 - eslint: 8.16.0 + eslint: 8.21.0 mocha: 9.2.2 mocha-junit-reporter: 2.0.2_mocha@9.2.2 mocha-multi-reporters: 1.5.1_mocha@9.2.2 rimraf: 3.0.2 - typescript: 4.7.2 + typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: false @@ -5020,14 +5081,14 @@ packages: '@types/mocha': 9.1.1 '@types/node': 16.0.3 '@types/prettier': 2.6.0 - '@types/react': 18.0.10 - '@types/react-dom': 18.0.5 + '@types/react': 18.0.15 + '@types/react-dom': 18.0.6 '@vitejs/plugin-react': 1.3.2 c8: 7.11.3 cross-env: 7.0.3 debounce: 1.2.1 - eslint: 8.16.0 - lzutf8: 0.6.2 + eslint: 8.21.0 + lzutf8: 0.6.3 mocha: 9.2.2 mocha-junit-reporter: 2.0.2_mocha@9.2.2 mocha-multi-reporters: 1.5.1_mocha@9.2.2 @@ -5037,8 +5098,8 @@ packages: react: 18.0.0 react-dom: 18.0.0_react@18.0.0 rimraf: 3.0.2 - typescript: 4.7.2 - vite: 2.9.9 + typescript: 4.7.4 + vite: 2.9.14 vscode-languageserver: 7.0.0 vscode-languageserver-textdocument: 1.0.5 transitivePeerDependencies: @@ -5053,7 +5114,7 @@ packages: name: '@rush-temp/prettier-plugin-cadl' version: 0.0.0 dependencies: - '@rollup/plugin-commonjs': 22.0.0_rollup@2.70.2 + '@rollup/plugin-commonjs': 22.0.1_rollup@2.70.2 '@rollup/plugin-json': 4.1.0_rollup@2.70.2 '@rollup/plugin-node-resolve': 13.1.3_rollup@2.70.2 '@rollup/plugin-replace': 2.4.2_rollup@2.70.2 @@ -5074,12 +5135,12 @@ packages: '@types/mocha': 9.1.1 '@types/node': 16.0.3 c8: 7.11.3 - eslint: 8.16.0 + eslint: 8.21.0 mocha: 9.2.2 mocha-junit-reporter: 2.0.2_mocha@9.2.2 mocha-multi-reporters: 1.5.1_mocha@9.2.2 rimraf: 3.0.2 - typescript: 4.7.2 + typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: false @@ -5116,11 +5177,11 @@ packages: dependencies: '@types/node': 16.0.3 '@types/plist': 3.0.2 - eslint: 8.16.0 + eslint: 8.21.0 onigasm: 2.2.5 - plist: 3.0.5 + plist: 3.0.6 rimraf: 3.0.2 - typescript: 4.7.2 + typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: false @@ -5133,35 +5194,38 @@ packages: '@types/mocha': 9.1.1 '@types/node': 16.0.3 c8: 7.11.3 - eslint: 8.16.0 + eslint: 8.21.0 mocha: 9.2.2 mocha-junit-reporter: 2.0.2_mocha@9.2.2 mocha-multi-reporters: 1.5.1_mocha@9.2.2 rimraf: 3.0.2 - typescript: 4.7.2 + typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: false - file:projects/website.tgz: - resolution: {integrity: sha512-kgauzdhS+8h9r690lNvDsl4aB/7R/X5ef8BF80fFutOoGb0UrxhnFmPckpHlyyUrDp6BOF7UKiiS398Q9SaUHQ==, tarball: file:projects/website.tgz} + file:projects/website.tgz_react-is@18.1.0: + resolution: {integrity: sha512-8NcccJkXS2suqs87bAE1rMGBZt3d5aIfDCQpWPXfnJiU3nf1pCZaaJTGCv5eaooPpHcp2UD+7i132yAtG+iO4g==, tarball: file:projects/website.tgz} + id: file:projects/website.tgz name: '@rush-temp/website' version: 0.0.0 dependencies: + '@fluentui/web-components': 2.5.3 '@playwright/test': 1.22.2 '@types/debounce': 1.2.1 '@types/lz-string': 1.3.34 '@types/mocha': 9.1.1 '@types/node': 16.0.3 '@types/prettier': 2.6.0 - '@types/react': 18.0.10 - '@types/react-dom': 18.0.5 + '@types/react': 18.0.15 + '@types/react-dom': 18.0.6 + '@types/react-router-dom': 5.3.3 '@vitejs/plugin-react': 1.3.2 c8: 7.11.3 cross-env: 7.0.3 debounce: 1.2.1 - eslint: 8.16.0 - lzutf8: 0.6.2 + eslint: 8.21.0 + lzutf8: 0.6.3 mocha: 9.2.2 mocha-junit-reporter: 2.0.2_mocha@9.2.2 mocha-multi-reporters: 1.5.1_mocha@9.2.2 @@ -5170,13 +5234,17 @@ packages: prettier: 2.7.1 react: 18.0.0 react-dom: 18.0.0_react@18.0.0 + react-icons: 4.4.0_react@18.0.0 + react-loader-spinner: 5.1.7-beta.1_42bb643d0b268c4c5cb594c9f18cf5be + react-router-dom: 6.3.0_react-dom@18.0.0+react@18.0.0 rimraf: 3.0.2 - typescript: 4.7.2 - vite: 2.9.9 + typescript: 4.7.4 + vite: 2.9.14 vscode-languageserver: 7.0.0 vscode-languageserver-textdocument: 1.0.5 transitivePeerDependencies: - less + - react-is - sass - stylus - supports-color diff --git a/packages/playground/src/components/openapi-output.tsx b/packages/playground/src/components/openapi-output.tsx new file mode 100644 index 0000000000..332f2ba402 --- /dev/null +++ b/packages/playground/src/components/openapi-output.tsx @@ -0,0 +1,32 @@ +import { FunctionComponent, useCallback, useState } from "react"; +import { OutputEditor } from "./cadl-editor"; +import { PlaygroundManifest } from "../manifest"; +import { SwaggerUI } from "./swagger-ui"; +export interface OpenAPIOutputProps { + content: string; +} + +export const OpenAPIOutput: FunctionComponent = (props)=> { + const[selected, setSelected] = useState<"raw"|"swagger-ui">("raw"); + const options = [ + {}, + {}, + ]; + const handleSelected = useCallback( + () => { setSelected(selected === "raw"?("swagger-ui"):("raw")); + }, + [selected], + ); + return( + <> + {PlaygroundManifest.enableSwaggerUI? ( + + ):(<>)} + + {selected === "raw"? ():()} + ); +} + diff --git a/packages/website/.eleventy.js b/packages/website/.eleventy.js new file mode 100644 index 0000000000..b219ef9c23 --- /dev/null +++ b/packages/website/.eleventy.js @@ -0,0 +1,12 @@ +module.exports = (eleventyConfig) => { + eleventyConfig.addPassthroughCopy("css"); + return { + markdownTemplateEngine: 'njk', + dataTemplateEngine: 'njk', + htmlTemplateEngine: 'njk', + dir: { + input: "src", + output: "_website", + } + }; +}; \ No newline at end of file diff --git a/packages/website/.eslintignore b/packages/website/.eslintignore deleted file mode 100644 index fc61e639c5..0000000000 --- a/packages/website/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -vite.config.ts diff --git a/packages/website/.eslintrc.cjs b/packages/website/.eslintrc.cjs deleted file mode 100644 index cffbd44f19..0000000000 --- a/packages/website/.eslintrc.cjs +++ /dev/null @@ -1,16 +0,0 @@ -require("@cadl-lang/eslint-config-cadl/patch/modern-module-resolution"); - -module.exports = { - extends: "@cadl-lang/eslint-config-cadl", - parserOptions: { tsconfigRootDir: __dirname }, - rules: { - "@typescript-eslint/no-misused-promises": [ - "error", - { - checksVoidReturn: { - arguments: false, // too much noise when adding async event listeners - }, - }, - ], - }, -}; diff --git a/packages/website/.gitignore b/packages/website/.gitignore index 07b2a9c70c..4949653068 100644 --- a/packages/website/.gitignore +++ b/packages/website/.gitignore @@ -1 +1,2 @@ -public/libs/ +#ignore output folder +/_website diff --git a/packages/website/README.md b/packages/website/README.md deleted file mode 100644 index e8c8a13682..0000000000 --- a/packages/website/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Cadl Playground - -A web app to play with Cadl in the browser. diff --git a/packages/website/e2e/playwright.config.ts b/packages/website/e2e/playwright.config.ts deleted file mode 100644 index f8001fb289..0000000000 --- a/packages/website/e2e/playwright.config.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { type PlaywrightTestConfig } from "@playwright/test"; -import { dirname, resolve } from "path"; -import { fileURLToPath } from "url"; - -const __dirname = dirname(fileURLToPath(import.meta.url)); -const root = resolve(__dirname, ".."); - -const config: PlaywrightTestConfig = { - forbidOnly: !!process.env.CI, - timeout: 120 * 1000, - webServer: { - command: "npm run watch", - port: 3000, - timeout: 120 * 1000, - reuseExistingServer: !process.env.CI, - }, - use: { - baseURL: resolve(root, "dist"), - trace: "retain-on-failure", - }, - testMatch: "*.e2e.ts", -}; -export default config; diff --git a/packages/website/e2e/ui.e2e.ts b/packages/website/e2e/ui.e2e.ts deleted file mode 100644 index 54c2edaea2..0000000000 --- a/packages/website/e2e/ui.e2e.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { expect, test } from "@playwright/test"; - -const host = `http://localhost:3000`; -const ctrlOrCmd = process.platform === "darwin" ? "Meta" : "Control"; - -test("compiled http sample", async ({ page }) => { - await page.goto(host); - const samplesDropDown = page.locator("select.sample-dropdown"); - await samplesDropDown.selectOption({ label: "Http" }); - const outputContainer = page.locator(".output-content"); - await expect(outputContainer).toContainText(`"title": "Widget Service"`); -}); - -test("shared link works", async ({ page }) => { - // Pass code "op sharedCode(): string;" - await page.goto(`${host}/?c=b3Agc2hhcmVkQ29kZSgpOiBzdHJpbmc7`); - const outputContainer = page.locator(".output-content"); - await expect(outputContainer).toContainText(`"operationId": "sharedCode"`); -}); - -test("save code with ctrl/cmd+S", async ({ page }) => { - await page.goto(host); - const cadlEditorContainer = page.locator("#editor"); - await cadlEditorContainer.click(); - await cadlEditorContainer.type("op sharedCode(): string;"); - await Promise.all([ - // It is important to call waitForNavigation before click to set up waiting. - page.waitForNavigation({ url: `${host}/?c=b3Agc2hhcmVkQ29kZSgpOiBzdHJpbmc7` }), - page.keyboard.press(`${ctrlOrCmd}+KeyS`), - ]); -}); diff --git a/packages/website/index.html b/packages/website/index.html deleted file mode 100644 index 0c29fc6606..0000000000 --- a/packages/website/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - Cadl Playground - - -
- - - diff --git a/packages/website/package.json b/packages/website/package.json index 19408adb5c..594b5ae19c 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -1,80 +1,16 @@ { - "name": "@cadl-lang/website", - "private": true, - "version": "0.1.0", - "author": "Microsoft Corporation", - "description": "An app to play with CADL in the browser", - "homepage": "https://github.com/microsoft/cadl", - "readme": "https://github.com/microsoft/cadl/blob/main/README.md", - "license": "MIT", - "repository": { - "type": "git", - "url": "git+https://github.com/Microsoft/cadl.git" - }, - "bugs": { - "url": "https://github.com/Microsoft/cadl/issues" - }, - "keywords": [ - "cadl" - ], - "type": "module", - "main": "dist/src/lib.js", - "engines": { - "node": ">=16.0.0" - }, - "scripts": { - "clean": "rimraf ./dist ./dist-dev ./temp ./cadlContents.json", - "build": "tsc -p . && vite build 2>&1", - "watch": "vite", - "e2e": "cross-env PW_EXPERIMENTAL_TS_ESM=1 playwright test -c e2e ", - "e2e:headed": "cross-env PW_EXPERIMENTAL_TS_ESM=1 playwright test -c e2e --headed", - "test": "npm run e2e", - "test-official": "npm run e2e", - "lint": "eslint . --ext .ts --max-warnings=0", - "lint:fix": "eslint . --fix --ext .ts" - }, - "files": [ - "lib/*.cadl", - "dist/**", - "!dist/test/**" - ], - "dependencies": { - "@cadl-lang/versioning": "~0.6.1", - "@cadl-lang/compiler": "~0.33.0", - "@cadl-lang/rest": "~0.15.1", - "@cadl-lang/openapi3": "~0.13.0", - "@cadl-lang/openapi": "~0.10.1", - "@cadl-lang/html-program-viewer": "~0.2.1", - "@vitejs/plugin-react": "~1.3.1", - "monaco-editor": "~0.32.1", - "prettier": "~2.7.1", - "react-dom": "~18.0.0", - "react": "~18.0.0", - "vite": "^2.9.9", - "vscode-languageserver-textdocument": "~1.0.1", - "vscode-languageserver": "~7.0.0", - "lzutf8": "~0.6.1", - "debounce": "~1.2.1" - }, - "devDependencies": { - "@types/mocha": "~9.1.0", - "@types/node": "~16.0.3", - "@types/prettier": "2.6.0", - "@types/react-dom": "~18.0.1", - "@types/react": "~18.0.5", - "@cadl-lang/eslint-config-cadl": "~0.3.0", - "@cadl-lang/bundler": "~0.1.0", - "eslint": "^8.12.0", - "mocha": "~9.2.0", - "mocha-junit-reporter": "~2.0.2", - "mocha-multi-reporters": "~1.5.1", - "c8": "~7.11.0", - "@playwright/test": "~1.22.2", - "playwright": "~1.22.2", - "rimraf": "~3.0.2", - "cross-env": "~7.0.3", - "typescript": "~4.7.2", - "@types/lz-string": "~1.3.34", - "@types/debounce": "~1.2.1" - } -} + "name": "website", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "npx @11ty/eleventy --serve --formats=md,css,njk,js", + "build": "npx @11ty/eleventy" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "@11ty/eleventy": "^1.0.1" + } +} \ No newline at end of file diff --git a/packages/website/samples/http.cadl b/packages/website/samples/http.cadl deleted file mode 100644 index 2d7c30f2d6..0000000000 --- a/packages/website/samples/http.cadl +++ /dev/null @@ -1,24 +0,0 @@ -import "@cadl-lang/rest"; - -@serviceTitle("Widget Service") -namespace DemoService; -using Cadl.Http; - -model Widget { - @key id: string; - weight: int32; - color: "red" | "blue"; -} - -@error -model Error { - code: int32; - message: string; -} - -interface WidgetService { - @get list(): Widget[] | Error; - @route("widgets/{id}") @get read(@path id: string): Widget | Error; - @post create(@body body: Widget): Widget | Error; - @route("customGet") @get customGet(): Widget | Error; -} diff --git a/packages/website/samples/rest.cadl b/packages/website/samples/rest.cadl deleted file mode 100644 index 32a68a4df8..0000000000 --- a/packages/website/samples/rest.cadl +++ /dev/null @@ -1,23 +0,0 @@ -import "@cadl-lang/rest"; - -@serviceTitle("Widget Service") -namespace DemoService; - -using Cadl.Http; -using Cadl.Rest; - -model Widget { - @key id: string; - weight: int32; - color: "red" | "blue"; -} - -@error -model Error { - code: int32; - message: string; -} - -interface WidgetService extends Resource.ResourceOperations { - @get @route("customGet") customGet(): Widget; -} diff --git a/packages/website/samples/versioning.cadl b/packages/website/samples/versioning.cadl deleted file mode 100644 index 40ce2c05e1..0000000000 --- a/packages/website/samples/versioning.cadl +++ /dev/null @@ -1,36 +0,0 @@ -import "@cadl-lang/rest"; -import "@cadl-lang/versioning"; - -using Cadl.Versioning; - -@versioned(Versions) -@serviceTitle("Widget Service") -namespace DemoService; - -enum Versions { - "v1", - "v2", -} - -using Cadl.Http; -using Cadl.Rest; - -model Widget { - @key id: string; - weight: int32; - color: "red" | "blue"; - @added(Versions.v2) name: string; -} - -@error -model Error { - code: int32; - message: string; -} - -interface WidgetService extends Resource.ResourceOperations { - @added(Versions.v2) - @get - @route("customGet") - customGet(): Widget; -} diff --git a/packages/website/src/_data/navbar.json b/packages/website/src/_data/navbar.json new file mode 100644 index 0000000000..12510cfc04 --- /dev/null +++ b/packages/website/src/_data/navbar.json @@ -0,0 +1,27 @@ +{ + "items": [{ + "url": "/blog/", + "name": "Blog" + }, + { + "url": "/community/", + "name": "Community" + }, + { + "url": "/docs/", + "name": "Docs" + }, + { + "url": "/download/", + "name": "Download" + }, + { + "url": "/play", + "name": "Playground" + }, + { + "url": "/tutorial/", + "name": "Tutorial" + } + ] +} \ No newline at end of file diff --git a/packages/website/src/_includes/layouts/base.njk b/packages/website/src/_includes/layouts/base.njk new file mode 100644 index 0000000000..f91c5ebe3e --- /dev/null +++ b/packages/website/src/_includes/layouts/base.njk @@ -0,0 +1,22 @@ + + + + + + + {{ title }} + + + +
+ {%include 'partials/navbar/navbar.njk'%} +
+ +
+ {{content | safe}} +
+
+ {%include 'partials/footer/footer.njk'%} +
+ + \ No newline at end of file diff --git a/packages/website/src/_includes/layouts/container.njk b/packages/website/src/_includes/layouts/container.njk new file mode 100644 index 0000000000..2f4a05da4a --- /dev/null +++ b/packages/website/src/_includes/layouts/container.njk @@ -0,0 +1,21 @@ + + + + + + + {{ title }} + + + +
+ {%include 'partials/navbar/navbar.njk'%} +
+
+ {{content | safe}} +
+
+ {%include 'partials/footer/footer.njk'%} +
+ + \ No newline at end of file diff --git a/packages/website/src/_includes/layouts/tutorial.njk b/packages/website/src/_includes/layouts/tutorial.njk new file mode 100644 index 0000000000..221ba696f2 --- /dev/null +++ b/packages/website/src/_includes/layouts/tutorial.njk @@ -0,0 +1,7 @@ +--- +layout: "layouts/container.njk" +--- + +
+ {{content | safe}} +
\ No newline at end of file diff --git a/packages/website/src/_includes/partials/footer/footer.njk b/packages/website/src/_includes/partials/footer/footer.njk new file mode 100644 index 0000000000..c225ca2afd --- /dev/null +++ b/packages/website/src/_includes/partials/footer/footer.njk @@ -0,0 +1,47 @@ + + \ No newline at end of file diff --git a/packages/website/src/_includes/partials/navbar/navbar.njk b/packages/website/src/_includes/partials/navbar/navbar.njk new file mode 100644 index 0000000000..3c512901c3 --- /dev/null +++ b/packages/website/src/_includes/partials/navbar/navbar.njk @@ -0,0 +1,15 @@ + \ No newline at end of file diff --git a/packages/website/src/app.tsx b/packages/website/src/app.tsx deleted file mode 100644 index a53659585f..0000000000 --- a/packages/website/src/app.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { FunctionComponent } from "react"; - -export const App: FunctionComponent = () => { - return <>Cadl Website; -}; diff --git a/packages/website/src/containers/blog/index.md b/packages/website/src/containers/blog/index.md new file mode 100644 index 0000000000..a51067576f --- /dev/null +++ b/packages/website/src/containers/blog/index.md @@ -0,0 +1,7 @@ +--- +title: Blogs about Cadl. +permalink: blog/index.html +layout: "layouts/container.njk" +--- + +Blogs about Cadl.SDFs \ No newline at end of file diff --git a/packages/website/src/containers/community/index.md b/packages/website/src/containers/community/index.md new file mode 100644 index 0000000000..8ade27d76b --- /dev/null +++ b/packages/website/src/containers/community/index.md @@ -0,0 +1,7 @@ +--- +title: Engage with the Community. +permalink: community/index.html +layout: "layouts/container.njk" +--- + +Found out about Cadl Developers. \ No newline at end of file diff --git a/packages/website/src/containers/docs/index.md b/packages/website/src/containers/docs/index.md new file mode 100644 index 0000000000..5d4bacb793 --- /dev/null +++ b/packages/website/src/containers/docs/index.md @@ -0,0 +1,7 @@ +--- +title: Cadl Docummentation. +permalink: docs/index.html +layout: "layouts/container.njk" +--- + +Cadl Documentations. \ No newline at end of file diff --git a/packages/website/src/containers/download/index.md b/packages/website/src/containers/download/index.md new file mode 100644 index 0000000000..6813a6d3f6 --- /dev/null +++ b/packages/website/src/containers/download/index.md @@ -0,0 +1,7 @@ +--- +title: Installing Cadl. +permalink: download/index.html +layout: "layouts/container.njk" +--- + +Installing Cadl. \ No newline at end of file diff --git a/packages/website/src/containers/playground/index.md b/packages/website/src/containers/playground/index.md new file mode 100644 index 0000000000..39f6598a0d --- /dev/null +++ b/packages/website/src/containers/playground/index.md @@ -0,0 +1,11 @@ +--- +title: Cadl Playground. +permalink: play/index.html +layout: "layouts/container.njk" +--- + +
+
+ +
+
\ No newline at end of file diff --git a/packages/website/src/containers/tutorial/index.md b/packages/website/src/containers/tutorial/index.md new file mode 100644 index 0000000000..e2f2f502a8 --- /dev/null +++ b/packages/website/src/containers/tutorial/index.md @@ -0,0 +1,1174 @@ +--- +title: Get Started with Cadl. +permalink: tutorial/index.html +layout: "layouts/tutorial.njk" +--- + +# Introduction to API Definition Language (Cadl) + +Cadl is a language for describing cloud service APIs and generating other API description languages, client and service code, documentation, and other assets. Cadl provides highly extensible core language primitives that can describe API shapes common among REST, GraphQL, gRPC, and other protocols. + +Cadl is an object oriented dynamic language whose evaluation results in an object model describing service APIs. Unlike typical programming languages, Cadl consists primarily of declarations, however these declarations can be decorated to provide highly dynamic behavior. + +Cadl's primary benefits include: + +- Protocol agnostic: it can describe and generate code for APIs across multiple protocols and serialization languages +- Modular: developers can group common API shapes and conventions together and reuse them +- Terse: the syntax is expressive, capable of describing complex APIs with minimal code +- Extensible: developers can customize the language to describe just about any style of API + +## Language Tour + +Cadl consists of the following language features: + +- [Models](#Models): data shapes or schemas +- [Type Literals](#Type-Literals): strings and numbers with specific values +- [Type Operators](#Type-Operators): syntax for composing model types into other types +- [Operations](#Operations): service endpoints with parameters and return values +- [Namespaces & Usings](#namespaces--usings): groups models and operations together into hierarchical groups with friendly names +- [Interfaces](#Interfaces): groups operations +- [Imports](#Imports): links declarations across multiple files and libraries together into a single program +- [Decorators](#Decorators): bits of TypeScript code that add metadata or sometimes mutate declarations +- [Libraries](#Libraries): encapsulate Cadl definitions into reusable components + +In addition, Cadl comes with a standard library for describing REST APIs and generating OpenAPI. Other protocol bindings are a work in progress! + +### Models + +Cadl models are used to describe data shapes or schemas. Models have any number of members and can extend and be composed with other models. Members are required by default, but can made optional by appending a "?" to the member name. A default value can also be provided with adding `= ` on an optional property. + +The following defines a data shape with three members: + +```cadl +model Dog { + name: string; + favoriteToy?: string; + bestTreat?: string = "chicken"; +} + +``` + +#### Built-in Models + +[Type relations](./type-relations.md) + +Cadl comes with built-in models for common data types: + +- `string`: sequence of characters +- `bytes`: a sequence of bytes +- `int8`: 8-bit signed integer +- `int16`: 16-bit signed integer +- `int32`: 32-bit signed integer +- `int64`: 64-bit signed integer +- `uint8`: 8-bit unsigned integer +- `uint16`: 16-bit unsigned integer +- `uint32`: 32-bit unsigned integer +- `uint64`: 64-bit unsigned integer +- `safeint`: an integer that is safe to store in a IEEE754 double and safe to round trip through all JSON processors. +- `float32`: IEEE 754 single-precision floating point number +- `float64`: IEEE 754 double-precision floating point number +- `plainDate`: A date on a calendar without a time zone, e.g. "April 10th" +- `plainTime`: A time on a clock without a time zone, e.g. "3:00 am" +- `zonedDateTime`: A date and time in a particular time zone, e.g. "April 10th at 3:00am in PST" +- `duration`: A duration/time period. e.g 5s, 10h +- `boolean`: true or false +- `null`: the null value found in e.g. JSON. +- `Record`: a dictionary with string K and value T. +- `unknown`: A top type in Cadl that all types can be assigned to. +- `void`: A function return type indicating the function doesn't return a value. +- `never`: The never type indicates the values that will never occur. Typically, you use the never type to represent the return type of a function that always throws an error. + +#### Spread + +The spread operator takes the members of a source model and copies them into a target model. Spread doesn't create any nominal relationship between source and target, and so it's useful when you want to reuse common properties without reasoning about or generating complex inheritance relationships. + +```cadl +model Animal { + species: string; +} + +model Pet { + name: string; +} + +model Dog { + ...Animal; + ...Pet; +} + +// Dog is equivalent to the following declaration: +model Dog { + species: string; + name: string; +} + +``` + +#### Extends + +Sometimes you want to create an explicit relationship between two models, for example when you want to emit class definitions in languages which support inheritance. The `extends` keyword can be used to establish such a relationship. It is also used extensively with `interface` to compose from existing interface building blocks. + +```cadl +model Animal { + species: string; +} + +model Dog extends Animal {} + +``` + +#### Is + +Sometimes you want to copy all aspects of a type without creating a nominal inheritance relationship. The `is` keyword can be used for this purpose. It is like spread, but also copies [decorators](#Decorators) in addition to properties. One common use case is to give a better name to a [template](#Templates) instantiation: + +```cadl +@decorator +model Thing { + property: T; +} + +model StringThing is Thing; + +// StringThing declaration is equivalent to the following declaration: +@decorator +model StringThing { + property: string; +} + +``` + +### Enums + +Enums define a type which can hold one of a set of constant values. + +```cadl +enum Color { + Red, + Blue, + Green, +} + +``` + +In this case, we haven't specified how the constants will be represented, allowing for different choices in different scenarios. For example, the OpenAPI emitter will choose string values "Red", "Green", "Blue". Another protocol might prefer to assign incrementing numeric values 0, 1, 2. + +We can also specify explicit string or numeric values: + +```cadl +enum Color { + Red: "red", + Blue: "blue", + Green: "green", +} + +enum Priority { + High: 100, + Low: 0, +} + +``` + +#### Templates + +It is often useful to let the users of a model fill in certain details. Model templates enable this pattern. Similar to generics found in other languages, model templates declare template parameters that users provide when referencing the model. + +```cadl +model Page { + size: number; + item: T[]; +} + +model DogPage { + ...Page; +} + +``` + +A template parameter can be given a default value with `= `. + +```cadl +model Page { + size: number; + item: T[]; +} + +``` + +#### Type Aliases + +Sometimes it's convenient to alias a model template instantiation or type produced via type operators (covered later) as a convenient name. Aliases allow this: + +```cadl +alias DogPage = Page; + +``` + +Unlike `model`, `alias` does not create a new entity, and as such will not change generated code in any way. An alias merely describes a source code shorthand to avoid repeating the right-hand side in multiple places. + +Because alias does not create a new entity, you cannot specify decorators on an alias. + +### Type Literals + +API authors often need to describe API shapes in terms of specific literal values. For example, this operation returns this specific integer status code, or this model member can be one of a few specific string values. It is also often useful to pass specific literal values to decorators. Cadl supports string, number, and boolean literal values to support these cases: + +```cadl +model BestDog { + name: "Suki"; + age: 14; + best: true; +} + +``` + +String literal types can also be created using the triple-quote syntax which enables multi-line strings: + +```cadl +model Dog { + favoriteFoods: """ + McDonalds + Chipotle + And so on + """; +} + +``` + +### Type Operators + +Cadl supports a few type operators that make it easy to compose new models from other models. + +#### Unions + +Unions describe a type that must be exactly one of the union's constituents. Create a union with the `|` operator. + +```cadl +alias GoodBreed = Beagle | GermanShepherd | GoldenRetriever; + +``` + +##### Named unions + +There is also a declaration syntax for naming a union and its options: + +```cadl +union GoodBreed { + beagle: Beagle, + shepherd: GermanShepherd, + retriever: GoldenRetriever, +} + +``` + +The above example is equivalent to the `GoodBreed` alias above, except that emitters can actually see `GoodBreed` as a named entity and also see the `beagle`, `shepherd`, and `retriever` names for the options. It also becomes possible to apply [decorators](#Decorators) to each of the options when using this form. + +#### Intersections + +Intersections describe a type that must include all the intersection's constituents. Create an intersection with the `&` operator. + +```cadl +alias Dog = Animal & Pet; + +``` + +#### Arrays + +Arrays describe lists of things. Create an Array type with the `[]` operator. + +```cadl +alias Pack = Dog[]; + +``` + +### Operations + +Operations describe service endpoints and consist of an operation name, parameters, and return type. Operations are declared using the `op` keyword: + +```cadl +op getDog(name: string): Dog; + +``` + +The operation's parameters describe a model, so anything you can do in a model you can do in a parameter list as well, including using the spread operator: + +```cadl +op getDog(...commonParams, name: string): Dog; + +``` + +Often an endpoint returns one of any number of models. For example, there might be a return type for when an item is found, and a return type for when an item isn't found. Unions are used to describe this pattern: + +```cadl +model DogNotFound { + error: "Not Found"; +} + +op getDog(name: string): Dog | DogNotFound; + +``` + +### Namespaces & Usings + +Namespaces let you group related types together into namespaces. This helps organize your types, making them easier to find and prevents name conflicts. Namespaces are merged across files, so you can reference any type anywhere in your Cadl program via its namespace. You can create namespace blocks like the following: + +```cadl +namespace Models { + model Dog {} +} + +op getDog(): Models.Dog; + +``` + +You can also put an entire Cadl file into a namespace by using the blockless namespace syntax: + +```cadl +// models.cadl +namespace Models; +model Dog {} + +``` + +```cadl +// main.cadl +import "./models.cadl"; +op getDog(): Models.Dog; + +``` + +Namespace declarations can declare multiple namespaces at once by using a dotted member expression. There's no need to declare nested namespace blocks if you don't want to. + +```cadl +namespace A.B; +namespace C.D { + +} +namespace C.D.E { + model M {} +} + +alias M = A.B.C.D.E.M; + +``` + +It can be convenient to add references to a namespace's declarations to your local namespace, especially when namespaces can become deeply nested. The `using` statement lets us do this: + +```cadl +// models.cadl +namespace Service.Models; +model Dog {} + +``` + +```cadl +// main.cadl +import "./models.cadl"; +using ServiceModels; +op getDog(): Dog; // here we can use Dog directly. + +``` + +The bindings introduced by a `using` statement are local to the namespace they are declared in. They do not become part of the namespace themselves. + +```cadl +namespace Test { + model A {} +} + +namespace Test2 { + using Test; + alias B = A; // ok +} + +alias C = Test2.A; // not ok +alias C = Test2.B; // ok + +``` + +### Interfaces + +Interfaces can be used to group operations. + +```cadl +interface A { + a(): string; +} + +interface B { + b(): string; +} + +``` + +And the keyword `extends` can be used to compose operations from other interfaces into a new interface: + +```cadl +interface C extends A, B { + c(): string; +} + +// C is equivalent to the following declaration +interface C { + a(): string; + b(): string; + c(): string; +} + +``` + +### Imports + +Imports add files or libraries to your Cadl program. When you compile a Cadl file, you provide a path to your root Cadl file, by convention called "main.cadl". From there, any files you import are added to your program. If you import a directory, Cadl will look for a `main.cadl` file inside that directory. + +The path you import must either begin with "./" or "../" or otherwise be an absolute path. The path must either refer to a directory, or else have an extension of either ".cadl" or ".js". The following demonstrates how to use imports to assemble a Cadl program from multiple files: + +```cadl +// main.cadl +import "./models"; +op getDog(): Dog; + +``` + +```cadl +// models/main.cadl +import "./dog.cadl"; + +``` + +```cadl +// models/dog.cadl +namespace Models; +model Dog {} + +``` + +### Decorators + +Decorators enable a developer to attach metadata to types in a Cadl program. They can also be used to calculate types based on their inputs. Decorators are the backbone of Cadl's extensibility and give it the flexibility to describe many different kinds of APIs and associated metadata like documentation, constraints, samples, and the like. + +Many Cadl constructs can be decorated, including namespaces, operations and their parameters, and models and their members. + +Decorators are defined using JavaScript functions that are exported from a standard ECMAScript module. When you import a JavaScript file, Cadl will look for any exported functions, and make them available as decorators inside the Cadl syntax. When a decorated declaration is evaluated by Cadl, it will invoke the decorator function, passing along a reference to the current compilation, an object representing the type it is attached to, and any arguments the user provided to the decorator. + +Decorators are attached by adding the decorator before the element you want to decorate, prefixing the name of the decorator with `@`. Arguments can be provided by using parentheses in a manner similar to many programming languages, e.g. `@dec(1, "hi", { a: string })`. The parentheses can be omitted when no arguments are provided. + +The following shows an example of declaring and then using a decorator: + +```js +// model.js +export function logType(compilation, targetType, name) { + console.log(name + ": " + targetType.kind); +} +``` + +```cadl +// main.cadl +import "./model.js"; + +@logType("Dog type") +model Dog { + @logType("Name type") + name: string; +} + +``` + +After running this Cadl program, the following will be printed to the console: + +``` +Name type: ModelProperty +Dog type: Model +``` + +#### Built-in decorators + +Cadl comes built-in with a number of decorators that are useful for defining service APIs regardless of what protocol or language you're targeting. + +- [@deprecated](#deprecated) - indicates that the decorator target has been deprecated. +- [@doc](#doc) - attach a documentation string. Works great with multi-line string literals. +- [@error](#error) - specify a model is representing an error +- [@format](#format) - specify the data format hint for a string type +- [@friendlyName](#friendlyname) - specify a friendly name to be used instead of declared model name +- @indexer +- [@inspectType/@inspectTypeName](#inspecttype) - displays information about a type during compilation +- [@key](#key) - mark a model property as the key to identify instances of that type +- [@knownValues](#knownvalues) - mark a string type with an enum that contains all known values +- @list - +- @minLength/@maxLength - set the min and max lengths for strings +- @minValue/@maxValue - set the min and max values of number types +- [@pattern](#pattern) - set the pattern for a string using regular expression syntax +- [@secret](#secret) - mark a string as a secret value that should be treated carefully to avoid exposure +- [@summary](#summary) - attach a documentation string, typically a short, single-line description. +- [@tag](#tag) - attach a simple tag to a declaration +- [@visibility/@withVisibility](#visibility-decorators) +- [@withDefaultKeyVisibility](#withefaultkeyvisibility) - set the visibility of key properties in a model if not already set. +- [@withOptionalProperties](#withoptionalproperties) - makes all properties of the target type optional. +- [@withoutDefaultValues](#withoutdefaultvalues) - removes all read-only properties from the target type. +- [@withoutOmittedProperties](#withoutomittedproperties) - removes all model properties that match a type. +- [@withUpdateableProperties](#withupdateableproperties) - remove all read-only properties from the target type + +##### @inspectType + +Syntax: + +``` +@inspectType(message) +@inspectTypeName(message) +``` + +`@inspectType` displays information about a type during compilation. +`@inspectTypeName` displays information and name of type during compilation. +They can be specified on any language element -- a model, an operation, a namespace, etc. + +##### @deprecated + +Syntax: + +``` +@deprecated(message) +``` + +`@deprecated` marks a type as deprecated. It can be specified on any language element -- a model, an operation, a namespace, etc. + +##### @friendlyName + +Syntax: + +``` +@friendlyName(string) +``` + +`@friendlyName` specifies an alternate model name to be used instead of declared model name. It can be specified on a model. + +##### @pattern + +Syntax: + +``` +@pattern(regularExpressionText) +``` + +`@pattern` specifies a regular expression on a string property. + +##### @summary + +Syntax: + +``` +@summary(text [, object]) +``` + +`@summary` attaches a documentation string. It is typically used to give a short, single-line +description, and can be used in combination with or instead of `@doc`. + +The first argument to `@summary` is a string, which may contain template parameters, enclosed in braces, +which are replaced with an attribute for the type (commonly "name") passed as the second (optional) argument. + +`@summary` can be specified on any language element -- a model, an operation, a namespace, etc. + +##### @doc + +Syntax: + +``` +@doc(text [, object]) +``` + +`@doc` attaches a documentation string. Works great with multi-line string literals. + +The first argument to `@doc` is a string, which may contain template parameters, enclosed in braces, +which are replaced with an attribute for the type (commonly "name") passed as the second (optional) argument. + +`@doc` can be specified on any language element -- a model, an operation, a namespace, etc. + +##### @knownValues + +Syntax: + +``` +@knownValues(enumTypeReference) +``` + +`@knownValues` marks a string type with an enum that contains all known values + +The first parameter is a reference to an enum type that enumerates all possible values that the +type accepts. + +`@knownValues` can only be applied to model types that extend `string`. + +Example: + +``` +enum OperationStateValues { + Running, + Completed, + Failed +} + +@knownValues(OperationStateValues) +model OperationState extends string { +} +``` + +##### @key + +Syntax: + +``` +@key([keyName]) +``` + +`@key` - mark a model property as the key to identify instances of that type + +The optional first argument accepts an alternate key name which may be used by emitters. +Otherwise, the name of the target property will be used. + +`@key` can only be applied to model properties. + +##### @secret + +Syntax: + +``` +@secret +``` + +`@secret` mark a string as a secret value that should be treated carefully to avoid exposure + +``` +@secret +model Password is string; + +``` + +`@secret` can only be applied to string model; + +##### @format + +Syntax: + +``` +@format(formatName) +``` + +`@format` - specify the data format hint for a string type + +The first argument is a string that identifies the format that the string type expects. Any string +can be entered here, but a Cadl emitter must know how to interpret + +For Cadl specs that will be used with an OpenAPI emitter, the OpenAPI specification describes possible +valid values for a string type's format: + +https://swagger.io/specification/#data-types + +`@format` can be applied to a type that extends from `string` or a `string`-typed model property. + +##### @error + +Syntax: + +``` +@error +``` + +`@format` - specify that this model is an error type + +For HTTP API this can be used to represent a failure. + +##### Visibility decorators + +Additionally, the decorators `@withVisibility` and `@visibility` provide an extensible visibility framework that allows for defining a canonical model with fine-grained visibility flags and derived models that apply those flags. Flags can be any string value and so can be customized to your application. Also, `@visibility` can take multiple string flags to set multiple flags at once, and `@withVisibility` can take multiple string flags to filter on at once. + +Consider the following example: + +```cadl +model Dog { + // the service will generate an ID, so you dont need to send it. + @visibility("read") id: int32; + // the service will store this secret name, but won't ever return it + @visibility("write") secretName: string; + // no flags are like specifying all flags at once, so in this case + // equivalent to @visibility("read", "write") + name: string; +} + +// The spread operator will copy all the properties of Dog into ReadDog, +// and withVisibility will remove any that don't match the current +// visibility setting +@withVisibility("read") +model ReadDog { + ...Dog; +} + +@withVisibility("write") +model WriteDog { + ...Dog; +} + +``` + +#### @withDefaultKeyVisibility + +Syntax: + +``` +@withDefaultKeyVisibility(string) +``` + +`@withDefaultKeyVisibility` - set the visibility of key properties in a model if not already set. The first argument accepts a string representing the desired default +visibility value. +If a key property already has a `visibility` decorator then the default visibility is not applied. + +`@withDefaultKeyVisibility` can only be applied to model types. + +#### @withOptionalProperties + +Syntax: + +``` +@withOptionalProperties() +``` + +`@withOptionalProperties` makes all properties of the target type optional. + +`@withOptionalProperties` can only be applied to model types. + +#### @withoutDefaultValues + +Syntax: + +``` +@withoutDefaultValues() +``` + +`@withoutDefaultValues` removes all read-only properties from the target type. + +`@withoutDefaultValues` can only be applied to model types. + +#### @withoutOmittedProperties + +Syntax: + +``` +@withoutOmittedProperties(type) +``` + +`@withoutOmittedProperties` removes all model properties that match a type. + +`@withoutOmittedProperties` can only be applied to model types. + +#### @withUpdateableProperties + +Syntax: + +``` +@withUpdateableProperties() +``` + +`@withUpdateableProperties` remove all read-only properties from the target type. + +`@withUpdateableProperties` can only be applied to model types. + +### Libraries + +Cadl libraries are bundles of useful Cadl declarations and decorators into reusable packages. Cadl libraries are actually npm packages under the covers. Official Cadl libraries can be found with the `@cadl-lang/` or `@azure-tools/cadl-` npm package name prefix. Libraries can be either a language library, an emitter library or both. + +#### Setting up Cadl library + +The first step in using a library is to install it via `npm`. You can get `npm` and `node` from the [Node.js website](https://nodejs.org). + +If you haven't already initialized your Cadl project's package.json file, now would be a good time to do so. The package.json file lets you track the dependencies your project depends on, and is a best practice to check in along with any Cadl files you create. Run `npm init` create your package.json file. + +Then, in your Cadl project directory, type `npm install libraryName` to install a library. For example, to install the official Cadl REST API bindings and OpenAPI generator, you would type `npm install @cadl-lang/rest @cadl-lang/openapi3`. + +#### Using language libraries + +Lastly, you need to import the libraries into your Cadl program. By convention, all external dependencies are imported in your `main.cadl` file, but can be in any Cadl file imported into your program. Importing the two libraries we installed above would look like this: + +```cadl +// in main.cadl +import "@cadl-lang/rest"; +import "@cadl-lang/openapi3"; + +``` + +#### Using emitter libraries + +The emitter needs to be referenced either via the cli `--emit` option or configured in the CADL config file. + +```bash +# Run openapi3 emitter on the spec +cadl compile . --emit=@cadl-lang/openapi3 +``` + +or in the config file `cadl-project.yaml` + +```yaml +emitters: + "@cadl-lang/openapi3": true +``` + +##### Configuring emitter libraries + +Emitters might provide some options to configure the generated output. Those options can be set either via the config `cadl-project.yaml` or the cli + +- Via config + +```yaml +emitters: + : + : + +# For example +emitters: + "@cadl-lang/openapi3": + output-file: my-custom-file.json +``` + +- Via cli + +```yaml +--option ".=" + +# For example +--option "@cadl-lang/openapi3.output-file=my-custom-file.json" +``` + +#### Standard emitter libraries + +Cadl has following standard libraries: +| Library | Package name | Documentation | Source | +|---|---|---|---| +| OpenAPI binding library | @cadl-lang/openapi| [Readme.md](https://github.com/microsoft/cadl/tree/main/packages/openapi/README.md)| [Link](https://github.com/microsoft/cadl/tree/main/packages/openapi) +| OpenAPI 3 | @cadl-lang/openapi3| [Readme.md](https://github.com/microsoft/cadl/tree/main/packages/openapi3/README.md)|[Link](https://github.com/microsoft/cadl/tree/main/packages/openapi) +| HTTP, REST | @cadl-lang/rest | [Readme.md](https://github.com/microsoft/cadl/tree/main/packages/rest/README.md)|[Link](https://github.com/microsoft/cadl/tree/main/packages/openapi) + +#### Creating libraries + +Creating a Cadl library is essentially the same as creating any NPM library. [Consult the official documentation for more info](https://docs.npmjs.com/creating-node-js-modules). `main` should refer to a JS file that exports all your library's decorators and helper utilities. + +The package.json file for a Cadl library requires one additional field: `cadlMain`, which refers to the root file of your Cadl program similar to how `main` refers to the root of a JS program. If you don't have any Cadl declarations, `cadlMain` can be identical to `main`. + +### REST APIs + +With the language building blocks we've covered so far we're ready to author our first REST API. Cadl has an official REST API "binding" called `@cadl-lang/rest`. It's a set of Cadl declarations and decorators that describe REST APIs and can be used by code generators to generate OpenAPI descriptions, implementation code, and the like. + +Cadl also has an official OpenAPI emitter called `@cadl-lang/openapi3` that consumes the REST API bindings and emits standard OpenAPI descriptions. This can then be fed in to any OpenAPI code generation pipeline. + +The following examples assume you have imported both `@cadl-lang/openapi3` and `@cadl-lang/rest` somewhere in your Cadl program (though importing them in `main.cadl` is the standard convention). For detailed library reference, please see rest library's [Readme.md](https://github.com/microsoft/cadl/blob/main/packages/rest/README.md). + +#### Service definition and metadata + +A definition for a service is the namespace that contains all the operations for the service and carries top-level metadata like service name and version. Cadl offers the following decorators for providing this metadata, and all are optional. + +- @serviceTitle - the title of the service +- @serviceVersion - the version of the service. Can be any string, but later version should lexicographically sort after earlier versions +- @server - the host of the service. Can accept parameters. +- @produces - the content types the service may produce +- @consumes - the content types that may be sent to the service + +Here's an example that uses these to define a Pet Store service: + +```cadl +@serviceTitle("Pet Store Service") +@serviceVersion("2021-03-25") +@server("https://example.com", "Single server endpoint") +@doc("This is a sample server Petstore server.") +@Cadl.Rest.produces("application/json", "image/png") +@Cadl.Rest.consumes("application/json") +namespace PetStore; + +``` + +The `server` keyword can take a third parameter with parameters as necessary: + +```cadl +@server("https://{region}.foo.com", "Regional endpoint", { + @doc("Region name") + region?: string = "westus", +}) +``` + +#### Resources & routes + +Resources are operations that are grouped in a namespace. You declare such a namespace by adding the `@route` decorator to provide the path to that resource: + +```cadl +using Cadl.Http; + +@route("/pets") +namespace Pets { + +} + +``` + +To define an operation on this resource, you need to provide the HTTP verb for the route using the `@get`, `@head` `@post`, `@put`, `@patch`, or `@delete` decorators. Alternatively, you can name your operation `list`, `create`, `read`, `update`, `delete`, or `deleteAll` and the appropriate verb will be used automatically. Lets add an operation to our `Pets` resource: + +```cadl +@route("/pets") +namespace Pets { + op list(): Pet[]; + + // or you could also use + @get op listPets(): Pet[]; +} + +``` + +##### Automatic route generation + +Instead of manually specifying routes using the `@route` decorator, you automatically generate +routes from operation parameters by applying the `@autoRoute` decorator to an operation, namespace, +or interface containing operations. + +For this to work, an operation's path parameters (those marked with `@path`) must also be marked with +the `@segment` decorator to define the preceding path segment. + +This is especially useful when reusing common parameter sets defined as model types. + +For example: + +``` +model CommonParameters { + @path + @segment("tenants") + tenantId: string; + + @path + @segment("users") + userName: string; +} + +@autoRoute +interface UserOperations { + @get + getUser(...CommonParameters): User | Error; + + @put + updateUser(...CommonParameters, user: User): User | Error; +} +``` + +This will result in the following route for both operations + +``` +/tenants/{tenantId}/users/{userName} +``` + +#### Path and query parameters + +Model properties and parameters which should be passed as path and query parameters use the `@path` and `@query` parameters respectively. Let's modify our list operation to support pagination, and add a read operation to our Pets resource: + +```cadl +@route("/pets") +namespace Pets { + op list(@query skip: int32, @query top: int32): Pet[]; + op read(@path petId: int32): Pet; +} + +``` + +Path parameters are appended to the URL unless a substitution with that parameter name exists on the resource path. For example, we might define a sub-resource using the following Cadl. Note how the path parameter for our sub-resource's list operation corresponds to the substitution in the URL. + +```cadl +@route("/pets/{petId}/toys") +namespace PetToys { + op list(@path petId: int32): Toy[]; +} + +``` + +#### Request & response bodies + +Request and response bodies can be declared explictly using the `@body` decorator. Let's add an endpoint to create a pet. Let's also use this decorator for the responses, although this doesn't change anything about the API. + +```cadl +@route("/pets") +namespace Pets { + op list(@query skip: int32, @query top: int32): { + @body pets: Pet[]; + }; + op read(@path petId: int32): { + @body pet: Pet; + }; + @post + op create(@body pet: Pet): {}; +} + +``` + +Note that in the absence of explicit `@body`: + +1. The set of parameters that are not marked @header, @query, or @path form the request body. +2. The set of properties of the return model that are not marked @header, @query, or @path form the response body. +3. If the return type is not a model, then it defines the response body. + +This is how we were able to return Pet and Pet[] bodies without using @body for list and read. We can actually write +create in the same terse style by spreading the Pet object into the parameter list like this: + +```cadl +@route("/pets") +namespace Pets { + @post + op create(...Pet): {}; +} + +``` + +#### Polymorphism with discriminators + +A pattern often used in REST APIs is to define a request or response body as having one of several different shapes, with a property called the +"discriminator" indicating which actual shape is used for a particular instance. +Cadl supports this pattern with the `@discriminator` decorator of the Rest library. + +The `@discrminator` decorator takes one argument, the name of the discriminator property, and should be placed on the +model for the request or response body. The different shapes are then defined by separate models that `extend` this request or response model. +The discriminator property is defined in the "child" models with the value or values that indicate an instance that conforms to its shape. + +As an example, a `Pet` model that allows instances that are either a `Cat` or a `Dog` can be defined with + +```cadl +@discriminator("kind") +model Pet { + name: string; + weight?: float32; +} +model Cat extends Pet { + kind: "cat"; + meow: int32; +} +model Dog extends Pet { + kind: "dog"; + bark: string; +} + +``` + +#### Headers + +Model properties and parameters that should be passed in a header use the `@header` decorator. The decorator takes the header name as a parameter. If a header name is not provided, it is inferred from the property or parameter name. Let's add `etag` support to our pet store's read operation. + +```cadl +@route("/pets") +namespace Pets { + op list(@query skip: int32, @query top: int32): { + @body pets: Pet[]; + }; + op read(@path petId: int32, @header ifMatch?: string): { + @header eTag: string; + @body pet: Pet; + }; + @post + op create(@body pet: Pet): {}; +} + +``` + +#### Status codes + +Use the `@header` decorator on a property named `statusCode` to declare a status code for a response. Generally, setting this to just `int32` isn't particularly useful. Instead, use number literal types to create a discriminated union of response types. Let's add status codes to our responses, and add a 404 response to our read endpoint. + +```cadl +@route("/pets") +namespace Pets { + op list(@query skip: int32, @query top: int32): { + @statusCode statusCode: 200; + @body pets: Pet[]; + }; + op read(@path petId: int32, @header ifMatch?: string): { + @statusCode statusCode: 200; + @header eTag: string; + @body pet: Pet; + } | { + @statusCode statusCode: 404; + }; + op create(@body pet: Pet): { + @statusCode statusCode: 204; + }; +} + +``` + +#### Built-in response shapes + +Since status codes are so common for REST APIs, Cadl comes with some built-in types for common status codes so you don't need to declare status codes so frequently. + +There is also a Body type, which can be used as a shorthand for { @body body: T } when an explicit body is required. + +Lets update our sample one last time to use these built-in types: + +```cadl +model ETag { + @header eTag: string; +} +@route("/pets") +namespace Pets { + op list(@query skip: int32, @query top: int32): OkResponse & Body; + op read(@path petId: int32, @header ifMatch?: string): (OkResponse & + Body & + ETag) | NotFoundResponse; + @post + op create(...Pet): NoContentResponse; +} + +``` + +Note that the default status code is 200 for non-empty bodies and 204 for empty bodies. Similarly, explicit `Body` is not required when T is known to be a model. So the following terser form is equivalent: + +```cadl +@route("/pets") +namespace Pets { + op list(@query skip: int32, @query top: int32): Pet[]; + op read(@path petId: int32, @header ifMatch?: string): (Pet & ETag) | NotFoundResponse; + @post + op create(...Pet): {}; +} + +``` + +Finally, another common style is to make helper response types that are +shared across a larger service definition. In this style, you can be +entirely explicit while also keeping operation definitions concise. + +For example, we could write : + +```cadl +model ListResponse { + ...OkResponse; + ...Body; +} + +model ReadSuccessResponse { + ...OkResponse; + ...ETag; + ...Body; +} + +alias ReadResponse = ReadSuccessResponse | NotFoundResponse; + +model CreateResponse { + ...NoContentResponse; +} + +@route("/pets") +namespace Pets { + op list(@query skip: int32, @query top: int32): ListResponse; + op read(@path petId: int32, @header ifMatch?: string): ReadResponse; + @post + op create(...Pet): CreateResponse; +} + +``` + +### CADL Config + +Cadl has a configuration file `cadl-project.yaml` that right now is only used to configure the default emitter to use. +The config file needs to be a sibling of the `package.json`. Cadl will look for the following files in that order and pick the 1st one found: + +Configuration schema: + +```yaml +# Map of the default emitters to use when not using `--emit` +emitters: + : true +``` \ No newline at end of file diff --git a/packages/website/src/css/footer.css b/packages/website/src/css/footer.css new file mode 100644 index 0000000000..263643ec51 --- /dev/null +++ b/packages/website/src/css/footer.css @@ -0,0 +1,72 @@ +footer { + position: fixed; + bottom: 0; + width: 100%; + height: auto; + padding-top: 0.2rem; + background-color: #222; + font-size: 12px; +} + +.footer { + background: var(--main-color); + width: 100%; + height: auto; + bottom: 0; + padding-bottom: .1rem; + color: var(--text-in-main-color); +} + +.footer-row { + display: grid; + padding-left: .5rem; + padding-right: .5rem; + margin: 0 auto; + max-width: 1040px; +} + +#cadl h1, +#microsoft a img, +.column2 h2, +.column3 h2 { + margin-bottom: -0.5rem; +} + +.column1 { + grid-column: 1; + grid-row: 3; + width: 250px; +} + +.column2 { + grid-column: 2; + grid-row: 3; + width: 350px; +} + +.column3 { + grid-column: 3; + grid-row: 3; + width: 350px; +} + +.column2 h2, +.column3 h2 { + text-align: center; +} + +.column2 ul, +.column3 ul { + columns: 2; +} + +.column2 ul li, +.column3 ul li { + margin-bottom: .8rem; + font-weight: 600; + list-style: none; +} + +.footer a { + color: var(--text-in-main-color); +} \ No newline at end of file diff --git a/packages/website/src/css/global.css b/packages/website/src/css/global.css new file mode 100644 index 0000000000..eb5ebe888b --- /dev/null +++ b/packages/website/src/css/global.css @@ -0,0 +1,54 @@ +* { + box-sizing: border-box; +} + +body { + margin: 0; + padding: 0; + font-family: var(--font-family); + overflow: auto; +} + +.app_version { + background: var(--version_bar-color); + color: var(--text-in-main-color); + text-align: center; +} + +:root { + --font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; + ; + --main-color: #0B6A0B; + --text-in-main-color: #ffffff; + --tab-inner-color: #095A09; + --version_bar-color: #013301; +} + +html { + height: 100%; +} + + +/* Extra small devices (phones, 600px and down) */ + +@media only screen and (max-width: 600px) {} + + +/* Small devices (portrait tablets and large phones, 600px and up) */ + +@media only screen and (min-width: 600px) {} + + +/* Medium devices (landscape tablets, 768px and up) */ + +@media only screen and (min-width: 768px) {} + + +/* Large devices (laptops/desktops, 992px and up) */ + +@media only screen and (min-width: 992px) {} + + +/* Extra large devices (large laptops and desktops, 1200px and up) */ + +@media only screen and (min-width: 1200px) {} \ No newline at end of file diff --git a/packages/website/src/css/navbar.css b/packages/website/src/css/navbar.css new file mode 100644 index 0000000000..ef276fb44c --- /dev/null +++ b/packages/website/src/css/navbar.css @@ -0,0 +1,63 @@ +.navbar { + display: flex; + justify-content: space-between; + align-items: center; + height: 3rem; + background: var(--main-color); +} + +.navbar-search_box { + background: var(--main-color); +} + +.navbar-search_box { + display: block; + float: right; +} + +.navbar-logo { + margin-right: 2rem; + float: left; +} + +.navbar-logo a { + color: white; + text-decoration: none; +} + +.navbar-links { + display: flex; + flex-direction: row; +} + +.navbar-sign { + display: flex; + justify-content: flex-end; + float: inline-start; +} + +.navbar-links p, +.navbar-sign p { + font-weight: 500; + font-size: 18px; + line-height: 25px; + text-transform: capitalize; + margin: 0 1rem; + cursor: pointer; +} + +.navbar-links ul li { + list-style: none; + font-weight: 500; + font-size: 18px; + line-height: 25px; + text-transform: capitalize; + display: inline; + margin: 0 1rem; + cursor: pointer; +} + +.navbar-links a { + text-decoration: none; + color: white; +} \ No newline at end of file diff --git a/packages/website/src/css/playground.css b/packages/website/src/css/playground.css new file mode 100644 index 0000000000..9c25806e08 --- /dev/null +++ b/packages/website/src/css/playground.css @@ -0,0 +1,16 @@ +.play-iframe iframe { + position: relative; + width: 100%; + height: 100%; + border: .1px solid; + left: 0; + top: 0; +} + +.play-iframe { + display: flex; + flex: 1 0 auto; + margin: 1.5rem; + overflow: hidden; + height: 70vh; +} \ No newline at end of file diff --git a/packages/website/src/css/style.css b/packages/website/src/css/style.css new file mode 100644 index 0000000000..11092976c2 --- /dev/null +++ b/packages/website/src/css/style.css @@ -0,0 +1,5 @@ +@import url("global.css"); +@import url("navbar.css"); +@import url("footer.css"); +@import url("tutorial.css"); +@import url("playground.css"); \ No newline at end of file diff --git a/packages/website/src/css/tutorial.css b/packages/website/src/css/tutorial.css new file mode 100644 index 0000000000..e742993811 --- /dev/null +++ b/packages/website/src/css/tutorial.css @@ -0,0 +1,6 @@ +.tutorial { + margin: auto; + width: 1024px; + padding: 0.5rem 1.5rem; + background-color: #ebebeb; +} \ No newline at end of file diff --git a/packages/website/src/index.md b/packages/website/src/index.md new file mode 100644 index 0000000000..c9ee8e6c5b --- /dev/null +++ b/packages/website/src/index.md @@ -0,0 +1,6 @@ +--- +title: Hello World +layout: "layouts/base.njk" +--- + +Getting started with Cadl. \ No newline at end of file diff --git a/packages/website/src/main.tsx b/packages/website/src/main.tsx deleted file mode 100644 index 8c86cfd5b1..0000000000 --- a/packages/website/src/main.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import editorWorker from "monaco-editor/esm/vs/editor/editor.worker?worker"; -import jsonWorker from "monaco-editor/esm/vs/language/json/json.worker?worker"; -import { createRoot } from "react-dom/client"; -import { App } from "./app"; -import "./style.css"; - -(self as any).MonacoEnvironment = { - getWorker(_: any, label: string) { - if (label === "json") { - return new jsonWorker(); - } - return new editorWorker(); - }, -}; - -const root = createRoot(document.getElementById("root")!); -root.render(); diff --git a/packages/website/src/style.css b/packages/website/src/style.css deleted file mode 100644 index 202324a4b6..0000000000 --- a/packages/website/src/style.css +++ /dev/null @@ -1,157 +0,0 @@ -body { - margin: 0; - padding: 0; - font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; - overflow: hidden; -} - -* { - box-sizing: content-box; -} - -#grid { - display: grid; - grid-template-columns: repeat(2, 1fr); - width: 100vw; - height: 100vh; - overflow: hidden; -} - -#grid > .footer { - grid-column-start: 1; - grid-column-end: 3; - grid-row: 3; - background-color: #007acc; - display: flex; - font-size: 14px; -} - -#grid > .footer.in-pr { - background-color: #ce662a; -} - -#grid > .footer > .item { - text-decoration: none; - color: #fefefe; - border-right: 1px solid #d5d5d5; - padding: 0 5px; -} -#grid > .footer > a.item:hover { - background-color: #063a5c; -} -#grid > .footer.in-pr > a.item:hover { - background-color: #b46e45; -} - -#commandBar > * { - padding: 2px 2px; -} - -#editorContainer { - grid-column: 1; - grid-row: 2; - overflow: hidden; -} - -#editor { - width: 100%; - height: 100%; - overflow: hidden; -} - -.output-panel { - grid-column: 2; - grid-row: 2; - overflow: hidden; - display: flex; - flex-direction: column; - border-left: 1px solid #c5c5c5; -} - -.output-tabs { - display: flex; - border-bottom: 1px solid #c5c5c5; -} - -.output-tabs a { - height: 26px; - padding: 0 5px; - border-right: 1px solid #ccc; - border-top: none; - border-bottom: none; - color: #000; - text-decoration: none; - cursor: pointer; -} - -.output-tabs a.active { - font-weight: bold; - background-color: #eee; -} - -.output-tabs .middle-spacer { - flex: 1; - border-right: 1px solid #ccc; -} - -.output-content { - width: 100%; - height: 100%; - overflow: hidden; -} - -.monaco-editor-container { - width: 100%; - height: 100%; - overflow: hidden; -} - -.type-graph-container { - height: 100%; - overflow: scroll; -} - -.error-tab-count { - background-color: #cc2222; - color: #f5f5f5; - padding: 0 5px; - border-radius: 20px; -} - -.diagnostic-list { - height: 100%; - overflow: auto; -} - -.diagnostic-item { - display: flex; -} -.diagnostic-item-severity { - padding: 0 5px; -} -.diagnostic-item-severity.error { - color: #cc2222; -} -.diagnostic-item-severity.warning { - color: orange; -} -.diagnostic-item-code { - padding: 0 5px; - color: #333333; -} -.diagnostic-item-message { - padding: 0 5px; -} - -.center { - display: flex; - height: 100%; - align-items: center; - justify-content: center; -} - -.internal-server-error { - border: 1px solid #cc2222; - padding: 10px; - margin: 20px; -} diff --git a/packages/website/src/vite-env.d.ts b/packages/website/src/vite-env.d.ts deleted file mode 100644 index 11f02fe2a0..0000000000 --- a/packages/website/src/vite-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/packages/website/tsconfig.json b/packages/website/tsconfig.json deleted file mode 100644 index b642a9baff..0000000000 --- a/packages/website/tsconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": "../tsconfig.json", - "references": [ - { "path": "../compiler/tsconfig.json" }, - { "path": "../rest/tsconfig.json" }, - { "path": "../openapi/tsconfig.json" }, - { "path": "../openapi3/tsconfig.json" } - ], - "compilerOptions": { - "outDir": "dist-dev", - "rootDir": ".", - "tsBuildInfoFile": "temp/tsconfig.tsbuildinfo", - "types": ["node", "mocha"], - "skipLibCheck": true, - "jsx": "react-jsx" - }, - "include": ["src/**/*.ts", "src/**/*.tsx", "test/**/*.ts", "e2e/**/*.ts", "vite.config.ts"] -} diff --git a/packages/website/vite.config.ts b/packages/website/vite.config.ts deleted file mode 100644 index 7d5b312e7d..0000000000 --- a/packages/website/vite.config.ts +++ /dev/null @@ -1,27 +0,0 @@ -import react from "@vitejs/plugin-react"; -import { defineConfig } from "vite"; - -export default defineConfig({ - base: "./", - build: { - target: "esnext", - chunkSizeWarningLimit: 4000, - }, - assetsInclude: [/\.cadl$/], - optimizeDeps: { - exclude: ["node-fetch"], - }, - plugins: [ - react(), - // playgroundManifestPlugin(config), - // cadlBundlePlugin({ - // folderName: "libs", - // libraries: config.libraries, - // }), - ], - server: { - fs: { - strict: false, - }, - }, -}); diff --git a/rush.json b/rush.json index 8c0a55ce66..8f717bc263 100644 --- a/rush.json +++ b/rush.json @@ -11,7 +11,7 @@ * Options that are only used when the PNPM package manager is selected */ "pnpmOptions": { - "strictPeerDependencies": true + "strictPeerDependencies": false }, "nodeSupportedVersionRange": ">=16.0.0", "suppressNodeLtsWarning": true, From a68cb68286266a81abb41169c15987e8d27e77a4 Mon Sep 17 00:00:00 2001 From: Descartes Date: Tue, 16 Aug 2022 09:50:58 -0700 Subject: [PATCH 48/81] Run rush format to solve formatting issues --- docs/tutorial.md | 2 +- packages/rest/lib/http.cadl | 14 ++--- packages/rest/lib/resource.cadl | 6 ++- .../samples/grpc-library-example/library.cadl | 4 +- packages/website/.eleventy.js | 22 ++++---- packages/website/package.json | 30 +++++------ packages/website/src/_data/navbar.json | 53 ++++++++++--------- packages/website/src/containers/blog/index.md | 2 +- .../website/src/containers/community/index.md | 2 +- packages/website/src/containers/docs/index.md | 2 +- .../website/src/containers/download/index.md | 2 +- .../src/containers/playground/index.md | 2 +- .../website/src/containers/tutorial/index.md | 2 +- packages/website/src/index.md | 2 +- 14 files changed, 74 insertions(+), 71 deletions(-) diff --git a/docs/tutorial.md b/docs/tutorial.md index b2dc9817a6..f567431a85 100644 --- a/docs/tutorial.md +++ b/docs/tutorial.md @@ -116,7 +116,7 @@ model Thing { property: T; } -model StringThing is Thing {} +model StringThing is Thing; // StringThing declaration is equivalent to the following declaration: @decorator diff --git a/packages/rest/lib/http.cadl b/packages/rest/lib/http.cadl index 29816b5d61..8097f16932 100644 --- a/packages/rest/lib/http.cadl +++ b/packages/rest/lib/http.cadl @@ -26,13 +26,13 @@ model LocationHeader { } @doc("The request has succeeded and a new resource has been created as a result.") -model CreatedResponse is Response<201> {} +model CreatedResponse is Response<201>; @doc("The request has been received but not yet acted upon.") -model AcceptedResponse is Response<202> {} +model AcceptedResponse is Response<202>; @doc("There is no content to send for this request, but the headers may be useful. ") -model NoContentResponse is Response<204> {} +model NoContentResponse is Response<204>; @doc("The URL of the requested resource has been changed permanently. The new URL is given in the response.") model MovedResponse is Response<301> { @@ -40,16 +40,16 @@ model MovedResponse is Response<301> { } @doc("This is used for caching purposes.") -model NotModifiedResponse is Response<304> {} +model NotModifiedResponse is Response<304>; @doc("The server could not understand the request due to invalid syntax.") -model UnauthorizedResponse is Response<401> {} +model UnauthorizedResponse is Response<401>; @doc("The server can not find the requested resource.") -model NotFoundResponse is Response<404> {} +model NotFoundResponse is Response<404>; @doc("This response is sent when a request conflicts with the current state of the server.") -model ConflictResponse is Response<409> {} +model ConflictResponse is Response<409>; // Produces a new model with the same properties as T, but with @query, // @header, @body, and @path decorators removed from all properties. diff --git a/packages/rest/lib/resource.cadl b/packages/rest/lib/resource.cadl index 6dd06adafb..28b1a3b941 100644 --- a/packages/rest/lib/resource.cadl +++ b/packages/rest/lib/resource.cadl @@ -49,7 +49,8 @@ model ResourceCreatedResponse { } @friendlyName("{name}Update", TResource) -model ResourceCreateOrUpdateModel is OptionalProperties>> {} +model ResourceCreateOrUpdateModel + is OptionalProperties>>; interface ResourceCreateOrUpdate { @autoRoute @@ -62,7 +63,8 @@ interface ResourceCreateOrUpdate { } @friendlyName("{name}Create", TResource) -model ResourceCreateModel is UpdateableProperties> {} +model ResourceCreateModel + is UpdateableProperties>; interface ResourceCreate { @autoRoute diff --git a/packages/samples/grpc-library-example/library.cadl b/packages/samples/grpc-library-example/library.cadl index 8964bdfc23..3a3d9d3d77 100644 --- a/packages/samples/grpc-library-example/library.cadl +++ b/packages/samples/grpc-library-example/library.cadl @@ -83,7 +83,7 @@ The name of a book. Book names have the form `shelves/{shelf_id}/books/{book_id}` """) @pattern("shelves/\\w+/books/\\w+") -model book_name is string {} +model book_name is string; @doc("A single book in the library.") model Book { @@ -109,7 +109,7 @@ The name of a shelf. Shelf names have the form `shelves/{shelf_id}`. """) @pattern("shelves/\\w+") -model shelf_name is string {} +model shelf_name is string; @doc("A Shelf contains a collection of books with a theme.") model Shelf { diff --git a/packages/website/.eleventy.js b/packages/website/.eleventy.js index b219ef9c23..9e9344ecd8 100644 --- a/packages/website/.eleventy.js +++ b/packages/website/.eleventy.js @@ -1,12 +1,12 @@ module.exports = (eleventyConfig) => { - eleventyConfig.addPassthroughCopy("css"); - return { - markdownTemplateEngine: 'njk', - dataTemplateEngine: 'njk', - htmlTemplateEngine: 'njk', - dir: { - input: "src", - output: "_website", - } - }; -}; \ No newline at end of file + eleventyConfig.addPassthroughCopy("css"); + return { + markdownTemplateEngine: "njk", + dataTemplateEngine: "njk", + htmlTemplateEngine: "njk", + dir: { + input: "src", + output: "_website", + }, + }; +}; diff --git a/packages/website/package.json b/packages/website/package.json index 594b5ae19c..77b377793e 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -1,16 +1,16 @@ { - "name": "website", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "start": "npx @11ty/eleventy --serve --formats=md,css,njk,js", - "build": "npx @11ty/eleventy" - }, - "keywords": [], - "author": "", - "license": "ISC", - "devDependencies": { - "@11ty/eleventy": "^1.0.1" - } -} \ No newline at end of file + "name": "website", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "npx @11ty/eleventy --serve --formats=md,css,njk,js", + "build": "npx @11ty/eleventy" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "@11ty/eleventy": "^1.0.1" + } +} diff --git a/packages/website/src/_data/navbar.json b/packages/website/src/_data/navbar.json index 12510cfc04..12153d78b0 100644 --- a/packages/website/src/_data/navbar.json +++ b/packages/website/src/_data/navbar.json @@ -1,27 +1,28 @@ { - "items": [{ - "url": "/blog/", - "name": "Blog" - }, - { - "url": "/community/", - "name": "Community" - }, - { - "url": "/docs/", - "name": "Docs" - }, - { - "url": "/download/", - "name": "Download" - }, - { - "url": "/play", - "name": "Playground" - }, - { - "url": "/tutorial/", - "name": "Tutorial" - } - ] -} \ No newline at end of file + "items": [ + { + "url": "/blog/", + "name": "Blog" + }, + { + "url": "/community/", + "name": "Community" + }, + { + "url": "/docs/", + "name": "Docs" + }, + { + "url": "/download/", + "name": "Download" + }, + { + "url": "/play", + "name": "Playground" + }, + { + "url": "/tutorial/", + "name": "Tutorial" + } + ] +} diff --git a/packages/website/src/containers/blog/index.md b/packages/website/src/containers/blog/index.md index a51067576f..a5fe1ceac3 100644 --- a/packages/website/src/containers/blog/index.md +++ b/packages/website/src/containers/blog/index.md @@ -4,4 +4,4 @@ permalink: blog/index.html layout: "layouts/container.njk" --- -Blogs about Cadl.SDFs \ No newline at end of file +Blogs about Cadl.SDFs diff --git a/packages/website/src/containers/community/index.md b/packages/website/src/containers/community/index.md index 8ade27d76b..1a6229d110 100644 --- a/packages/website/src/containers/community/index.md +++ b/packages/website/src/containers/community/index.md @@ -4,4 +4,4 @@ permalink: community/index.html layout: "layouts/container.njk" --- -Found out about Cadl Developers. \ No newline at end of file +Found out about Cadl Developers. diff --git a/packages/website/src/containers/docs/index.md b/packages/website/src/containers/docs/index.md index 5d4bacb793..c6bbd91582 100644 --- a/packages/website/src/containers/docs/index.md +++ b/packages/website/src/containers/docs/index.md @@ -4,4 +4,4 @@ permalink: docs/index.html layout: "layouts/container.njk" --- -Cadl Documentations. \ No newline at end of file +Cadl Documentations. diff --git a/packages/website/src/containers/download/index.md b/packages/website/src/containers/download/index.md index 6813a6d3f6..4e95298732 100644 --- a/packages/website/src/containers/download/index.md +++ b/packages/website/src/containers/download/index.md @@ -4,4 +4,4 @@ permalink: download/index.html layout: "layouts/container.njk" --- -Installing Cadl. \ No newline at end of file +Installing Cadl. diff --git a/packages/website/src/containers/playground/index.md b/packages/website/src/containers/playground/index.md index 39f6598a0d..57dc3baabb 100644 --- a/packages/website/src/containers/playground/index.md +++ b/packages/website/src/containers/playground/index.md @@ -8,4 +8,4 @@ layout: "layouts/container.njk"
- \ No newline at end of file + diff --git a/packages/website/src/containers/tutorial/index.md b/packages/website/src/containers/tutorial/index.md index e2f2f502a8..da6c56003b 100644 --- a/packages/website/src/containers/tutorial/index.md +++ b/packages/website/src/containers/tutorial/index.md @@ -1171,4 +1171,4 @@ Configuration schema: # Map of the default emitters to use when not using `--emit` emitters: : true -``` \ No newline at end of file +``` diff --git a/packages/website/src/index.md b/packages/website/src/index.md index c9ee8e6c5b..df5aeb938e 100644 --- a/packages/website/src/index.md +++ b/packages/website/src/index.md @@ -3,4 +3,4 @@ title: Hello World layout: "layouts/base.njk" --- -Getting started with Cadl. \ No newline at end of file +Getting started with Cadl. From baa743e971cb74be29afce169b3c8de86a83fcb8 Mon Sep 17 00:00:00 2001 From: Descartes Date: Tue, 16 Aug 2022 10:12:26 -0700 Subject: [PATCH 49/81] Remove unused dependencies and update rush --- common/config/rush/pnpm-lock.yaml | 1592 +++++++++++++++++++++++++---- packages/website/package.json | 2 +- 2 files changed, 1416 insertions(+), 178 deletions(-) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 7aec7e2330..befdd49115 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -1,8 +1,8 @@ lockfileVersion: 5.3 specifiers: + '@11ty/eleventy': ^1.0.1 '@babel/code-frame': ~7.16.7 - '@fluentui/web-components': ~2.5.3 '@playwright/test': ~1.22.2 '@rollup/plugin-commonjs': ~22.0.0-13 '@rollup/plugin-json': ~4.1.0 @@ -43,7 +43,6 @@ specifiers: '@types/prompts': ~2.0.14 '@types/react': ~18.0.5 '@types/react-dom': ~18.0.1 - '@types/react-router-dom': ~5.3.3 '@types/styled-components': ~5.1.25 '@types/vscode': ~1.53.0 '@types/watch': ~1.0.3 @@ -85,10 +84,7 @@ specifiers: prompts: ~2.4.1 react: ~18.0.0 react-dom: ~18.0.0 - react-icons: ~4.4.0 react-is: ~18.1.0 - react-loader-spinner: ~5.1.7-beta.1 - react-router-dom: ~6.3.0 rimraf: ~3.0.2 rollup: ~2.70.1 source-map-support: ~0.5.19 @@ -106,8 +102,8 @@ specifiers: yargs: ~17.3.1 dependencies: + '@11ty/eleventy': 1.0.2 '@babel/code-frame': 7.16.7 - '@fluentui/web-components': 2.5.3 '@playwright/test': 1.22.2 '@rollup/plugin-commonjs': 22.0.1_rollup@2.70.2 '@rollup/plugin-json': 4.1.0_rollup@2.70.2 @@ -133,7 +129,7 @@ dependencies: '@rush-temp/spec': file:projects/spec.tgz '@rush-temp/tmlanguage-generator': file:projects/tmlanguage-generator.tgz '@rush-temp/versioning': file:projects/versioning.tgz - '@rush-temp/website': file:projects/website.tgz_react-is@18.1.0 + '@rush-temp/website': file:projects/website.tgz '@rushstack/eslint-patch': 1.1.0 '@types/babel__code-frame': 7.0.3 '@types/debounce': 1.2.1 @@ -148,7 +144,6 @@ dependencies: '@types/prompts': 2.0.14 '@types/react': 18.0.15 '@types/react-dom': 18.0.6 - '@types/react-router-dom': 5.3.3 '@types/styled-components': 5.1.25 '@types/vscode': 1.53.0 '@types/watch': 1.0.3 @@ -190,10 +185,7 @@ dependencies: prompts: 2.4.2 react: 18.0.0 react-dom: 18.0.0_react@18.0.0 - react-icons: 4.4.0_react@18.0.0 react-is: 18.1.0 - react-loader-spinner: 5.1.7-beta.1_42bb643d0b268c4c5cb594c9f18cf5be - react-router-dom: 6.3.0_react-dom@18.0.0+react@18.0.0 rimraf: 3.0.2 rollup: 2.70.2 source-map-support: 0.5.21 @@ -212,6 +204,62 @@ dependencies: packages: + /@11ty/dependency-tree/2.0.1: + resolution: {integrity: sha512-5R+DsT9LJ9tXiSQ4y+KLFppCkQyXhzAm1AIuBWE/sbU0hSXY5pkhoqQYEcPJQFg/nglL+wD55iv2j+7O96UAvg==} + dev: false + + /@11ty/eleventy-utils/1.0.1: + resolution: {integrity: sha512-HPpCTz4PzudcQU+i+x6GSNHVqgnvRhnVYg5dLKaAoRWLN966odAGsBxKSyhF8i1MdlOPtsytYb2AGWP7jISC5w==} + engines: {node: '>=12'} + dependencies: + normalize-path: 3.0.0 + dev: false + + /@11ty/eleventy/1.0.2: + resolution: {integrity: sha512-03ER4zukR6BgwppI5DHRE11lc+8B0fWsBrqacVWo3o49QkdEFXnEWjhyI9qd9LrPlgQHK2/MYyxuOvNwecyCLQ==} + engines: {node: '>=12'} + hasBin: true + dependencies: + '@11ty/dependency-tree': 2.0.1 + '@11ty/eleventy-utils': 1.0.1 + '@iarna/toml': 2.2.5 + '@sindresorhus/slugify': 1.1.2 + browser-sync: 2.27.10_debug@4.3.4 + chokidar: 3.5.3 + cross-spawn: 7.0.3 + debug: 4.3.4 + dependency-graph: 0.11.0 + ejs: 3.1.8 + fast-glob: 3.2.11 + graceful-fs: 4.2.10 + gray-matter: 4.0.3 + hamljs: 0.6.2 + handlebars: 4.7.7 + is-glob: 4.0.3 + kleur: 4.1.5 + liquidjs: 9.40.0 + lodash: 4.17.21 + luxon: 2.5.0 + markdown-it: 12.3.2 + minimist: 1.2.6 + moo: 0.5.1 + multimatch: 5.0.0 + mustache: 4.2.0 + normalize-path: 3.0.0 + nunjucks: 3.2.3_chokidar@3.5.3 + path-to-regexp: 6.2.1 + please-upgrade-node: 3.2.0 + pretty: 2.0.0 + pug: 3.0.2 + recursive-copy: 2.0.14 + semver: 7.3.7 + slugify: 1.6.5 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + /@ampproject/remapping/2.2.0: resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} engines: {node: '>=6.0.0'} @@ -454,13 +502,6 @@ packages: '@babel/types': 7.18.10 dev: false - /@babel/runtime/7.18.9: - resolution: {integrity: sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.9 - dev: false - /@babel/template/7.18.10: resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} engines: {node: '>=6.9.0'} @@ -624,16 +665,6 @@ packages: - supports-color dev: false - /@fluentui/web-components/2.5.3: - resolution: {integrity: sha512-pIG7vxtQiEpllkRVSgzB2aDRZC9v6X8XHFRNgh8EcsfWhfL5c9Av2r6Xu1Mw7hHrEo3YoQqduk9Y/pdzyP3P4g==} - dependencies: - '@microsoft/fast-colors': 5.3.1 - '@microsoft/fast-element': 1.10.4 - '@microsoft/fast-foundation': 2.46.11 - '@microsoft/fast-web-utilities': 5.4.1 - tslib: 1.14.1 - dev: false - /@humanwhocodes/config-array/0.10.4: resolution: {integrity: sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==} engines: {node: '>=10.10.0'} @@ -653,6 +684,10 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: false + /@iarna/toml/2.2.5: + resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} + dev: false + /@istanbuljs/schema/0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} @@ -696,29 +731,6 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: false - /@microsoft/fast-colors/5.3.1: - resolution: {integrity: sha512-72RZXVfCbwQzvo5sXXkuLXLT7rMeYaSf5r/6ewQiv/trBtqpWRm4DEH2EilHw/iWTBKOXs1qZNQndgUMa5n4LA==} - dev: false - - /@microsoft/fast-element/1.10.4: - resolution: {integrity: sha512-SD0L3Kt++VSTqdkmGupB5tNaSLboEB7H/rh70a4eECpzCQewEzjd85jVNpgab1A8n5d3N9sPwZGIyfiUN6x4hg==} - dev: false - - /@microsoft/fast-foundation/2.46.11: - resolution: {integrity: sha512-5ehg6l2g/PsAR+90EEWSR7QAiAKsdscAnP6upE2ysp2U1luER4tAVDIP2wGQneLhaHq2i4Htnb4t+K1dcrw6AQ==} - dependencies: - '@microsoft/fast-element': 1.10.4 - '@microsoft/fast-web-utilities': 5.4.1 - tabbable: 5.3.3 - tslib: 1.14.1 - dev: false - - /@microsoft/fast-web-utilities/5.4.1: - resolution: {integrity: sha512-ReWYncndjV3c8D8iq9tp7NcFNc1vbVHvcBFPME2nNFKNbS1XCesYZGlIlf3ot5EmuOXPlrzUHOWzQ2vFpIkqDg==} - dependencies: - exenv-es6: 1.1.1 - dev: false - /@nodelib/fs.scandir/2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -843,6 +855,26 @@ packages: resolution: {integrity: sha512-JLo+Y592QzIE+q7Dl2pMUtt4q8SKYI5jDrZxrozEQxnGVOyYE+GWK9eLkwTaeN9DDctlaRAQ3TBmzZ1qdLE30A==} dev: false + /@sindresorhus/slugify/1.1.2: + resolution: {integrity: sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==} + engines: {node: '>=10'} + dependencies: + '@sindresorhus/transliterate': 0.1.2 + escape-string-regexp: 4.0.0 + dev: false + + /@sindresorhus/transliterate/0.1.2: + resolution: {integrity: sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + lodash.deburr: 4.1.0 + dev: false + + /@socket.io/component-emitter/3.1.0: + resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} + dev: false + /@tootallnate/once/2.0.0: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} @@ -852,6 +884,18 @@ packages: resolution: {integrity: sha512-2TN6oiwtNjOezilFVl77zwdNPwQWaDBBCCWWxyo1ctiO3vAtd7H/aB/CBJdw9+kqq3+latD0SXoedIuHySSZWw==} dev: false + /@types/component-emitter/1.2.11: + resolution: {integrity: sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==} + dev: false + + /@types/cookie/0.4.1: + resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} + dev: false + + /@types/cors/2.8.12: + resolution: {integrity: sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==} + dev: false + /@types/debounce/1.2.1: resolution: {integrity: sha512-epMsEE85fi4lfmJUH/89/iV/LI+F5CvNIvmgs5g5jYFPfhO2S/ae8WSsLOKWdwtoaZw9Q2IhJ4tQ5tFCcS/4HA==} dev: false @@ -864,10 +908,6 @@ packages: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} dev: false - /@types/history/4.7.11: - resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} - dev: false - /@types/hoist-non-react-statics/3.3.1: resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} dependencies: @@ -891,6 +931,10 @@ packages: resolution: {integrity: sha512-j6G1e8DULJx3ONf6NdR5JiR2ZY3K3PaaqiEuKYkLQO0Czfi1AzrtjfnfCROyWGeDd5IVMKCwsgSmMip9OWijow==} dev: false + /@types/minimatch/3.0.5: + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + dev: false + /@types/mkdirp/1.0.2: resolution: {integrity: sha512-o0K1tSO0Dx5X6xlU5F1D6625FawhC3dU3iqr25lluNv/+/QIVH8RLNEiVokgIZo+mz+87w/3Mkg/VvQS+J51fQ==} dependencies: @@ -940,21 +984,6 @@ packages: '@types/react': 18.0.15 dev: false - /@types/react-router-dom/5.3.3: - resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} - dependencies: - '@types/history': 4.7.11 - '@types/react': 18.0.15 - '@types/react-router': 5.1.18 - dev: false - - /@types/react-router/5.1.18: - resolution: {integrity: sha512-YYknwy0D0iOwKQgz9v8nOzt2J6l4gouBmDnWqUUznltOTaon+r8US8ky8HvN0tXvc38U9m6z/t2RsVsnd1zM0g==} - dependencies: - '@types/history': 4.7.11 - '@types/react': 18.0.15 - dev: false - /@types/react/18.0.15: resolution: {integrity: sha512-iz3BtLuIYH1uWdsv6wXYdhozhqj20oD4/Hk2DNXIn1kFsmp9x8d9QB6FnPhfkbhd2PgEONt9Q1x/ebkwjfFLow==} dependencies: @@ -1207,10 +1236,18 @@ packages: - supports-color dev: false + /a-sync-waterfall/1.0.1: + resolution: {integrity: sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==} + dev: false + /abab/2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} dev: false + /abbrev/1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + dev: false + /abort-controller/3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -1218,6 +1255,14 @@ packages: event-target-shim: 5.0.1 dev: false + /accepts/1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + dev: false + /acorn-globals/6.0.0: resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} dependencies: @@ -1282,11 +1327,21 @@ packages: engines: {node: '>=6'} dev: false + /ansi-regex/2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + dev: false + /ansi-regex/5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} dev: false + /ansi-styles/2.2.1: + resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} + engines: {node: '>=0.10.0'} + dev: false + /ansi-styles/3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -1329,11 +1384,66 @@ packages: engines: {node: '>=8'} dev: false + /array-differ/1.0.0: + resolution: {integrity: sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==} + engines: {node: '>=0.10.0'} + dev: false + + /array-differ/3.0.0: + resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} + engines: {node: '>=8'} + dev: false + + /array-union/1.0.2: + resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} + engines: {node: '>=0.10.0'} + dependencies: + array-uniq: 1.0.3 + dev: false + /array-union/2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} dev: false + /array-uniq/1.0.3: + resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} + engines: {node: '>=0.10.0'} + dev: false + + /arrify/1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + dev: false + + /arrify/2.0.1: + resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} + engines: {node: '>=8'} + dev: false + + /asap/2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + dev: false + + /assert-never/1.2.1: + resolution: {integrity: sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==} + dev: false + + /async-each-series/0.1.1: + resolution: {integrity: sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==} + engines: {node: '>=0.8.0'} + dev: false + + /async/2.6.4: + resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} + dependencies: + lodash: 4.17.21 + dev: false + + /async/3.2.4: + resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} + dev: false + /asynckit/0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: false @@ -1345,6 +1455,14 @@ packages: requiresBuild: true dev: false + /axios/0.21.4_debug@4.3.2: + resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} + dependencies: + follow-redirects: 1.15.1_debug@4.3.2 + transitivePeerDependencies: + - debug + dev: false + /azure-devops-node-api/11.2.0: resolution: {integrity: sha512-XdiGPhrpaT5J8wdERRKs5g8E0Zy1pvOYTli7z9E8nmOn3YGp4FhtjhrOyFmX/8veWCwdI69mCHKJw6l+4J/bHA==} dependencies: @@ -1369,6 +1487,13 @@ packages: resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==} dev: false + /babel-walk/3.0.0-canary-5: + resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} + engines: {node: '>= 10.0.0'} + dependencies: + '@babel/types': 7.18.10 + dev: false + /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: false @@ -1377,6 +1502,15 @@ packages: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: false + /base64id/2.0.0: + resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} + engines: {node: ^4.5.0 || >= 5.9} + dev: false + + /batch/0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + dev: false + /binary-extensions/2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} @@ -1401,6 +1535,12 @@ packages: concat-map: 0.0.1 dev: false + /brace-expansion/2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: false + /braces/3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} @@ -1416,6 +1556,74 @@ packages: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} dev: false + /browser-sync-client/2.27.10: + resolution: {integrity: sha512-KCFKA1YDj6cNul0VsA28apohtBsdk5Wv8T82ClOZPZMZWxPj4Ny5AUbrj9UlAb/k6pdxE5HABrWDhP9+cjt4HQ==} + engines: {node: '>=8.0.0'} + dependencies: + etag: 1.8.1 + fresh: 0.5.2 + mitt: 1.2.0 + rxjs: 5.5.12 + typescript: 4.7.4 + dev: false + + /browser-sync-ui/2.27.10: + resolution: {integrity: sha512-elbJILq4Uo6OQv6gsvS3Y9vRAJlWu+h8j0JDkF0X/ua+3S6SVbbiWnZc8sNOFlG7yvVGIwBED3eaYQ0iBo1Dtw==} + dependencies: + async-each-series: 0.1.1 + connect-history-api-fallback: 1.6.0 + immutable: 3.8.2 + server-destroy: 1.0.1 + socket.io-client: 4.5.1 + stream-throttle: 0.1.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + + /browser-sync/2.27.10_debug@4.3.4: + resolution: {integrity: sha512-xKm+6KJmJu6RuMWWbFkKwOCSqQOxYe3nOrFkKI5Tr/ZzjPxyU3pFShKK3tWnazBo/3lYQzN7fzjixG8fwJh1Xw==} + engines: {node: '>= 8.0.0'} + hasBin: true + dependencies: + browser-sync-client: 2.27.10 + browser-sync-ui: 2.27.10 + bs-recipes: 1.3.4 + bs-snippet-injector: 2.0.1 + chokidar: 3.5.3 + connect: 3.6.6 + connect-history-api-fallback: 1.6.0 + dev-ip: 1.0.1 + easy-extender: 2.3.4 + eazy-logger: 3.1.0 + etag: 1.8.1 + fresh: 0.5.2 + fs-extra: 3.0.1 + http-proxy: 1.18.1_debug@4.3.4 + immutable: 3.8.2 + localtunnel: 2.0.2 + micromatch: 4.0.5 + opn: 5.3.0 + portscanner: 2.2.0 + qs: 6.2.3 + raw-body: 2.5.1 + resp-modifier: 6.0.2 + rx: 4.1.0 + send: 0.16.2 + serve-index: 1.9.1 + serve-static: 1.13.2 + server-destroy: 1.0.1 + socket.io: 4.5.1 + ua-parser-js: 1.0.2 + yargs: 17.3.1 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + dev: false + /browserslist/4.21.3: resolution: {integrity: sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -1427,6 +1635,14 @@ packages: update-browserslist-db: 1.0.5_browserslist@4.21.3 dev: false + /bs-recipes/1.3.4: + resolution: {integrity: sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==} + dev: false + + /bs-snippet-injector/2.0.1: + resolution: {integrity: sha512-4u8IgB+L9L+S5hknOj3ddNSb42436gsnGm1AuM15B7CdbkpQTyVWgIM5/JUBiKiRwGOR86uo0Lu/OsX+SAlJmw==} + dev: false + /buffer-crc32/0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} dev: false @@ -1447,6 +1663,11 @@ packages: engines: {node: '>=6'} dev: false + /bytes/3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + dev: false + /c8/7.11.3: resolution: {integrity: sha512-6YBmsaNmqRm9OS3ZbIiL2EZgi1+Xc4O24jL3vMYGE6idixYuGdy76rIfIdltSKDj9DpLNrcXSonUTR1miBD0wA==} engines: {node: '>=10.12.0'} @@ -1506,6 +1727,17 @@ packages: upper-case-first: 2.0.2 dev: false + /chalk/1.1.3: + resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + dev: false + /chalk/2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -1540,6 +1772,12 @@ packages: tslib: 2.4.0 dev: false + /character-parser/2.2.0: + resolution: {integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==} + dependencies: + is-regex: 1.1.4 + dev: false + /charenc/0.0.2: resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} dev: false @@ -1654,6 +1892,15 @@ packages: typical: 5.2.0 dev: false + /commander/2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: false + + /commander/5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} + dev: false + /commander/6.2.1: resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} engines: {node: '>= 6'} @@ -1663,10 +1910,45 @@ packages: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} dev: false + /component-emitter/1.3.0: + resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} + dev: false + /concat-map/0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: false + /condense-newlines/0.2.1: + resolution: {integrity: sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + is-whitespace: 0.3.0 + kind-of: 3.2.2 + dev: false + + /config-chain/1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + dev: false + + /connect-history-api-fallback/1.6.0: + resolution: {integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==} + engines: {node: '>=0.8'} + dev: false + + /connect/3.6.6: + resolution: {integrity: sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==} + engines: {node: '>= 0.10.0'} + dependencies: + debug: 2.6.9 + finalhandler: 1.1.0 + parseurl: 1.3.3 + utils-merge: 1.0.1 + dev: false + /constant-case/3.0.4: resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} dependencies: @@ -1675,12 +1957,32 @@ packages: upper-case: 2.0.2 dev: false + /constantinople/4.0.1: + resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} + dependencies: + '@babel/parser': 7.18.10 + '@babel/types': 7.18.10 + dev: false + /convert-source-map/1.8.0: resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} dependencies: safe-buffer: 5.1.2 dev: false + /cookie/0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + dev: false + + /cors/2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + dev: false + /cross-env/7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} @@ -1773,6 +2075,18 @@ packages: ms: 2.0.0 dev: false + /debug/4.3.2: + resolution: {integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: false + /debug/4.3.3_supports-color@8.1.1: resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} engines: {node: '>=6.0'} @@ -1850,11 +2164,36 @@ packages: engines: {node: '>=0.4.0'} dev: false + /depd/1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + dev: false + + /depd/2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dev: false + + /dependency-graph/0.11.0: + resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} + engines: {node: '>= 0.6.0'} + dev: false + + /destroy/1.0.4: + resolution: {integrity: sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==} + dev: false + /detect-libc/2.0.1: resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} engines: {node: '>=8'} dev: false + /dev-ip/1.0.1: + resolution: {integrity: sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==} + engines: {node: '>= 0.8.0'} + hasBin: true + dev: false + /diff/5.0.0: resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} engines: {node: '>=0.3.1'} @@ -1867,6 +2206,10 @@ packages: path-type: 4.0.0 dev: false + /dlv/1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dev: false + /doctrine/3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -1874,6 +2217,10 @@ packages: esutils: 2.0.3 dev: false + /doctypes/1.1.0: + resolution: {integrity: sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==} + dev: false + /dom-serializer/2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} dependencies: @@ -1915,6 +2262,20 @@ packages: tslib: 2.4.0 dev: false + /easy-extender/2.3.4: + resolution: {integrity: sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==} + engines: {node: '>= 4.0.0'} + dependencies: + lodash: 4.17.21 + dev: false + + /eazy-logger/3.1.0: + resolution: {integrity: sha512-/snsn2JqBtUSSstEl4R0RKjkisGHAhvYj89i7r3ytNUKW12y178KDZwXLXIgwDqLW6E/VRMT9qfld7wvFae8bQ==} + engines: {node: '>= 0.8.0'} + dependencies: + tfunk: 4.0.0 + dev: false + /ecmarkdown/7.1.0: resolution: {integrity: sha512-xTrf1Qj6nCsHGSHaOrAPfALoEH2nPSs+wclpzXEsozVJbEYcTkims59rJiJQB6TxAW2J4oFfoaB2up1wbb9k4w==} dependencies: @@ -1948,20 +2309,86 @@ packages: - utf-8-validate dev: false - /electron-to-chromium/1.4.210: - resolution: {integrity: sha512-kSiX4tuyZijV7Cz0MWVmGT8K2siqaOA4Z66K5dCttPPRh0HicOcOAEj1KlC8O8J1aOS/1M8rGofOzksLKaHWcQ==} + /editorconfig/0.15.3: + resolution: {integrity: sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==} + hasBin: true + dependencies: + commander: 2.20.3 + lru-cache: 4.1.5 + semver: 5.7.1 + sigmund: 1.0.1 dev: false - /emoji-regex/8.0.0: + /ee-first/1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: false + + /ejs/3.1.8: + resolution: {integrity: sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + jake: 10.8.5 + dev: false + + /electron-to-chromium/1.4.210: + resolution: {integrity: sha512-kSiX4tuyZijV7Cz0MWVmGT8K2siqaOA4Z66K5dCttPPRh0HicOcOAEj1KlC8O8J1aOS/1M8rGofOzksLKaHWcQ==} + dev: false + + /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: false + /encodeurl/1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + dev: false + /end-of-stream/1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 dev: false + /engine.io-client/6.2.2: + resolution: {integrity: sha512-8ZQmx0LQGRTYkHuogVZuGSpDqYZtCM/nv8zQ68VZ+JkOpazJ7ICdsSpaO6iXwvaU30oFg5QJOJWj8zWqhbKjkQ==} + dependencies: + '@socket.io/component-emitter': 3.1.0 + debug: 4.3.4 + engine.io-parser: 5.0.4 + ws: 8.2.3 + xmlhttprequest-ssl: 2.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + + /engine.io-parser/5.0.4: + resolution: {integrity: sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==} + engines: {node: '>=10.0.0'} + dev: false + + /engine.io/6.2.0: + resolution: {integrity: sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==} + engines: {node: '>=10.0.0'} + dependencies: + '@types/cookie': 0.4.1 + '@types/cors': 2.8.12 + '@types/node': 16.0.3 + accepts: 1.3.8 + base64id: 2.0.0 + cookie: 0.4.2 + cors: 2.8.5 + debug: 4.3.4 + engine.io-parser: 5.0.4 + ws: 8.2.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + /entities/2.1.0: resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} dev: false @@ -1971,6 +2398,13 @@ packages: engines: {node: '>=0.12'} dev: false + /errno/0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + dependencies: + prr: 1.0.1 + dev: false + /error-ex/1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: @@ -2200,6 +2634,11 @@ packages: engines: {node: '>=0.8.0'} dev: false + /escape-string-regexp/2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: false + /escape-string-regexp/4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -2422,26 +2861,38 @@ packages: engines: {node: '>=0.10.0'} dev: false + /etag/1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + dev: false + /event-target-shim/5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} dev: false + /eventemitter3/4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + dev: false + /exec-sh/0.2.2: resolution: {integrity: sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==} dependencies: merge: 1.2.1 dev: false - /exenv-es6/1.1.1: - resolution: {integrity: sha512-vlVu3N8d6yEMpMsEm+7sUBAI81aqYYuEvfK0jNqmdb/OPXzzH7QWDDnVjMvDSY47JdHEqx/dfC/q8WkfoTmpGQ==} - dev: false - /expand-template/2.0.3: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} dev: false + /extend-shallow/2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + dependencies: + is-extendable: 0.1.1 + dev: false + /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: false @@ -2496,6 +2947,12 @@ packages: flat-cache: 3.0.4 dev: false + /filelist/1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + dependencies: + minimatch: 5.1.0 + dev: false + /fill-range/7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -2503,6 +2960,19 @@ packages: to-regex-range: 5.0.1 dev: false + /finalhandler/1.1.0: + resolution: {integrity: sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.3.1 + unpipe: 1.0.0 + dev: false + /find-replace/3.0.0: resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} engines: {node: '>=4.0.0'} @@ -2543,6 +3013,18 @@ packages: resolution: {integrity: sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==} dev: false + /follow-redirects/1.15.1_debug@4.3.2: + resolution: {integrity: sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dependencies: + debug: 4.3.2 + dev: false + /foreground-child/2.0.0: resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} engines: {node: '>=8.0.0'} @@ -2567,10 +3049,23 @@ packages: fetch-blob: 3.2.0 dev: false + /fresh/0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + dev: false + /fs-constants/1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} dev: false + /fs-extra/3.0.1: + resolution: {integrity: sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==} + dependencies: + graceful-fs: 4.2.10 + jsonfile: 3.0.1 + universalify: 0.1.2 + dev: false + /fs.realpath/1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: false @@ -2649,6 +3144,17 @@ packages: path-is-absolute: 1.0.1 dev: false + /glob/8.0.3: + resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==} + engines: {node: '>=12'} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.0 + once: 1.4.0 + dev: false + /globals/11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -2684,6 +3190,10 @@ packages: slash: 4.0.0 dev: false + /graceful-fs/4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + dev: false + /grammarkdown/3.1.2: resolution: {integrity: sha512-2WHeSg1sYjeeWMqnt0jEa4FyhofhE8T02a9PhBXvA1+6hLdZ39E753X05LYIdTff+1GYW6UMy+2nLfeQYQZ9Hw==} hasBin: true @@ -2704,11 +3214,45 @@ packages: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: false + /gray-matter/4.0.3: + resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} + engines: {node: '>=6.0'} + dependencies: + js-yaml: 3.14.1 + kind-of: 6.0.3 + section-matter: 1.0.0 + strip-bom-string: 1.0.0 + dev: false + /growl/1.10.5: resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==} engines: {node: '>=4.x'} dev: false + /hamljs/0.6.2: + resolution: {integrity: sha512-/chXRp4WpL47I+HX1vCCdSbEXAljEG2FBMmgO7Am0bYsqgnEjreeWzUdX1onXqwZtcfgxbCg5WtEYYvuZ5muBg==} + dev: false + + /handlebars/4.7.7: + resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} + engines: {node: '>=0.4.7'} + hasBin: true + dependencies: + minimist: 1.2.6 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.16.3 + dev: false + + /has-ansi/2.0.0: + resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: false + /has-flag/3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} @@ -2724,6 +3268,13 @@ packages: engines: {node: '>= 0.4'} dev: false + /has-tostringtag/1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: false + /has/1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} @@ -2748,12 +3299,6 @@ packages: engines: {node: '>=12.0.0'} dev: false - /history/5.3.0: - resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==} - dependencies: - '@babel/runtime': 7.18.9 - dev: false - /hoist-non-react-statics/3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} dependencies: @@ -2795,6 +3340,27 @@ packages: entities: 4.3.1 dev: false + /http-errors/1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + dev: false + + /http-errors/2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + dev: false + /http-proxy-agent/5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} @@ -2806,6 +3372,17 @@ packages: - supports-color dev: false + /http-proxy/1.18.1_debug@4.3.4: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.1_debug@4.3.2 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + dev: false + /https-proxy-agent/5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} @@ -2816,6 +3393,13 @@ packages: - supports-color dev: false + /iconv-lite/0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: false + /iconv-lite/0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} @@ -2832,6 +3416,11 @@ packages: engines: {node: '>= 4'} dev: false + /immutable/3.8.2: + resolution: {integrity: sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==} + engines: {node: '>=0.10.0'} + dev: false + /import-fresh/3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -2857,6 +3446,10 @@ packages: wrappy: 1.0.2 dev: false + /inherits/2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + dev: false + /inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: false @@ -2893,6 +3486,18 @@ packages: has: 1.0.3 dev: false + /is-expression/4.0.0: + resolution: {integrity: sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==} + dependencies: + acorn: 7.4.1 + object-assign: 4.1.1 + dev: false + + /is-extendable/0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + dev: false + /is-extglob/2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -2914,6 +3519,12 @@ packages: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} dev: false + /is-number-like/1.0.8: + resolution: {integrity: sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==} + dependencies: + lodash.isfinite: 3.3.2 + dev: false + /is-number/7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -2928,17 +3539,39 @@ packages: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: false + /is-promise/2.2.2: + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + dev: false + /is-reference/1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: '@types/estree': 1.0.0 dev: false + /is-regex/1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: false + /is-unicode-supported/0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} dev: false + /is-whitespace/0.3.0: + resolution: {integrity: sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==} + engines: {node: '>=0.10.0'} + dev: false + + /is-wsl/1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + dev: false + /isexe/2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: false @@ -2965,6 +3598,32 @@ packages: istanbul-lib-report: 3.0.0 dev: false + /jake/10.8.5: + resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + async: 3.2.4 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + dev: false + + /js-beautify/1.14.5: + resolution: {integrity: sha512-P2BfZBhXchh10uZ87qMKpM2tfcDXLA+jDiWU/OV864yWdTGzLUGNAdp9Y1ID5ubpNVGls3cZ1UMcO8myUB+UyA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + config-chain: 1.1.13 + editorconfig: 0.15.3 + glob: 8.0.3 + nopt: 6.0.0 + dev: false + + /js-stringify/1.0.2: + resolution: {integrity: sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==} + dev: false + /js-tokens/4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} dev: false @@ -3054,6 +3713,24 @@ packages: hasBin: true dev: false + /jsonfile/3.0.1: + resolution: {integrity: sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==} + optionalDependencies: + graceful-fs: 4.2.10 + dev: false + + /jstransformer/1.0.0: + resolution: {integrity: sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==} + dependencies: + is-promise: 2.2.2 + promise: 7.3.1 + dev: false + + /junk/1.0.3: + resolution: {integrity: sha512-3KF80UaaSSxo8jVnRYtMKNGFOoVPBdkkVPsw+Ad0y4oxKXPduS6G6iHkrf69yJVff/VAaYXkV42rtZ7daJxU3w==} + engines: {node: '>=0.10.0'} + dev: false + /keytar/7.9.0: resolution: {integrity: sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==} requiresBuild: true @@ -3062,11 +3739,28 @@ packages: prebuild-install: 7.1.1 dev: false + /kind-of/3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-buffer: 1.1.6 + dev: false + + /kind-of/6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: false + /kleur/3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} dev: false + /kleur/4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + dev: false + /leven/3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -3088,6 +3782,10 @@ packages: type-check: 0.4.0 dev: false + /limiter/1.1.5: + resolution: {integrity: sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==} + dev: false + /lines-and-columns/1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: false @@ -3098,6 +3796,25 @@ packages: uc.micro: 1.0.6 dev: false + /liquidjs/9.40.0: + resolution: {integrity: sha512-SFE+HAGVBpfdhM4h7ZovlC0sd7c6b52IHbztIWNaatDPAIsKdKHXSSphHEHk/7qi6NDOZ5BcK65a2YfCOGJrDg==} + engines: {node: '>=4.8.7'} + hasBin: true + dev: false + + /localtunnel/2.0.2: + resolution: {integrity: sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==} + engines: {node: '>=8.3.0'} + hasBin: true + dependencies: + axios: 0.21.4_debug@4.3.2 + debug: 4.3.2 + openurl: 1.1.1 + yargs: 17.1.1 + transitivePeerDependencies: + - supports-color + dev: false + /locate-path/5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -3116,6 +3833,14 @@ packages: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} dev: false + /lodash.deburr/4.1.0: + resolution: {integrity: sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==} + dev: false + + /lodash.isfinite/3.3.2: + resolution: {integrity: sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==} + dev: false + /lodash.merge/4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: false @@ -3145,6 +3870,13 @@ packages: tslib: 2.4.0 dev: false + /lru-cache/4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + dev: false + /lru-cache/5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: @@ -3158,6 +3890,11 @@ packages: yallist: 4.0.0 dev: false + /luxon/2.5.0: + resolution: {integrity: sha512-IDkEPB80Rb6gCAU+FEib0t4FeJ4uVOuX1CQ9GsvU3O+JAGIgu0J7sf1OarXKaKDygTZIoJyU6YdZzTFRu+YR0A==} + engines: {node: '>=12'} + dev: false + /lzutf8/0.6.3: resolution: {integrity: sha512-CAkF9HKrM+XpB0f3DepQ2to2iUEo0zrbh+XgBqgNBc1+k8HMM3u/YSfHI3Dr4GmoTIez2Pr/If1XFl3rU26AwA==} dependencies: @@ -3196,6 +3933,16 @@ packages: picomatch: 2.3.1 dev: false + /maximatch/0.1.0: + resolution: {integrity: sha512-9ORVtDUFk4u/NFfo0vG/ND/z7UQCVZBL539YW0+U1I7H1BkZwizcPx5foFv7LCPcBnm2U6RjFnQOsIvN4/Vm2A==} + engines: {node: '>=0.10.0'} + dependencies: + array-differ: 1.0.0 + array-union: 1.0.2 + arrify: 1.0.1 + minimatch: 3.1.2 + dev: false + /md5/2.3.0: resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} dependencies: @@ -3237,6 +3984,11 @@ packages: mime-db: 1.52.0 dev: false + /mime/1.4.1: + resolution: {integrity: sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==} + hasBin: true + dev: false + /mime/1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} @@ -3266,10 +4018,21 @@ packages: brace-expansion: 1.1.11 dev: false + /minimatch/5.1.0: + resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: false + /minimist/1.2.6: resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} dev: false + /mitt/1.2.0: + resolution: {integrity: sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==} + dev: false + /mkdirp-classic/0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} dev: false @@ -3348,6 +4111,10 @@ packages: resolution: {integrity: sha512-LUt2wsUvQmEi2tfTOK+tjAPvt7eQ+K5C4rZPr6SeuyzjAuAHrIvlUloTcOiGjZW3fn3a/jFQCONrEJbNOaCqbA==} dev: false + /moo/0.5.1: + resolution: {integrity: sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==} + dev: false + /ms/2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: false @@ -3360,6 +4127,17 @@ packages: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: false + /multimatch/5.0.0: + resolution: {integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==} + engines: {node: '>=10'} + dependencies: + '@types/minimatch': 3.0.5 + array-differ: 3.0.0 + array-union: 2.1.0 + arrify: 2.0.1 + minimatch: 3.1.2 + dev: false + /mustache/4.2.0: resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} hasBin: true @@ -3389,6 +4167,15 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: false + /negotiator/0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + dev: false + + /neo-async/2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: false + /no-case/3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: @@ -3430,6 +4217,14 @@ packages: engines: {node: '>=6'} dev: false + /nopt/6.0.0: + resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + hasBin: true + dependencies: + abbrev: 1.1.1 + dev: false + /normalize-package-data/2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -3450,12 +4245,40 @@ packages: boolbase: 1.0.0 dev: false + /nunjucks/3.2.3_chokidar@3.5.3: + resolution: {integrity: sha512-psb6xjLj47+fE76JdZwskvwG4MYsQKXUtMsPh6U0YMvmyjRtKRFcxnlXGWglNybtNTNVmGdp94K62/+NjF5FDQ==} + engines: {node: '>= 6.9.0'} + hasBin: true + peerDependencies: + chokidar: ^3.3.0 + peerDependenciesMeta: + chokidar: + optional: true + dependencies: + a-sync-waterfall: 1.0.1 + asap: 2.0.6 + chokidar: 3.5.3 + commander: 5.1.0 + dev: false + /nwsapi/2.2.1: resolution: {integrity: sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==} dev: false - /object-inspect/1.12.2: - resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} + /object-assign/4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: false + + /object-inspect/1.12.2: + resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} + dev: false + + /on-finished/2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 dev: false /once/1.4.0: @@ -3470,6 +4293,17 @@ packages: lru-cache: 5.1.1 dev: false + /openurl/1.1.1: + resolution: {integrity: sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==} + dev: false + + /opn/5.3.0: + resolution: {integrity: sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==} + engines: {node: '>=4'} + dependencies: + is-wsl: 1.1.0 + dev: false + /optionator/0.8.3: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} engines: {node: '>= 0.8.0'} @@ -3574,6 +4408,11 @@ packages: entities: 4.3.1 dev: false + /parseurl/1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + dev: false + /pascal-case/3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: @@ -3607,6 +4446,10 @@ packages: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: false + /path-to-regexp/6.2.1: + resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} + dev: false + /path-type/4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -3625,6 +4468,11 @@ packages: engines: {node: '>=8.6'} dev: false + /pify/2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: false + /playwright-core/1.22.2: resolution: {integrity: sha512-w/hc/Ld0RM4pmsNeE6aL/fPNWw8BWit2tg+TfqJ3+p59c6s3B6C8mXvXrIPmfQEobkcFDc+4KirNzOQ+uBSP1Q==} engines: {node: '>=14'} @@ -3640,6 +4488,12 @@ packages: playwright-core: 1.22.2 dev: false + /please-upgrade-node/3.2.0: + resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} + dependencies: + semver-compare: 1.0.0 + dev: false + /plist/3.0.6: resolution: {integrity: sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==} engines: {node: '>=6'} @@ -3653,6 +4507,14 @@ packages: engines: {node: '>=4'} dev: false + /portscanner/2.2.0: + resolution: {integrity: sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==} + engines: {node: '>=0.4', npm: '>=1.0.0'} + dependencies: + async: 2.6.4 + is-number-like: 1.0.8 + dev: false + /postcss-value-parser/4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: false @@ -3718,6 +4580,15 @@ packages: hasBin: true dev: false + /pretty/2.0.0: + resolution: {integrity: sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w==} + engines: {node: '>=0.10.0'} + dependencies: + condense-newlines: 0.2.1 + extend-shallow: 2.0.1 + js-beautify: 1.14.5 + dev: false + /prex/0.4.7: resolution: {integrity: sha512-ulhl3iyjmAW/GroRQJN4CG+pC6KJ+W+deNRBkEShQwe16wLP9k92+x6RmLJuLiVSGkbxhnAqHpGdJJCh3bRpUQ==} dependencies: @@ -3729,6 +4600,12 @@ packages: resolution: {integrity: sha512-jq3Crngf1DaaOXQIOUkPr7LsW4UsWyn0KW1MJ+yMn5njTJ+F1AuHmjjwJhod9HuoNSSMspSLS9PS3V7BrexwjQ==} dev: false + /promise/7.3.1: + resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} + dependencies: + asap: 2.0.6 + dev: false + /prompts/2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -3737,10 +4614,113 @@ packages: sisteransi: 1.0.5 dev: false + /proto-list/1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + dev: false + + /prr/1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + dev: false + + /pseudomap/1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + dev: false + /psl/1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: false + /pug-attrs/3.0.0: + resolution: {integrity: sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==} + dependencies: + constantinople: 4.0.1 + js-stringify: 1.0.2 + pug-runtime: 3.0.1 + dev: false + + /pug-code-gen/3.0.2: + resolution: {integrity: sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==} + dependencies: + constantinople: 4.0.1 + doctypes: 1.1.0 + js-stringify: 1.0.2 + pug-attrs: 3.0.0 + pug-error: 2.0.0 + pug-runtime: 3.0.1 + void-elements: 3.1.0 + with: 7.0.2 + dev: false + + /pug-error/2.0.0: + resolution: {integrity: sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==} + dev: false + + /pug-filters/4.0.0: + resolution: {integrity: sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==} + dependencies: + constantinople: 4.0.1 + jstransformer: 1.0.0 + pug-error: 2.0.0 + pug-walk: 2.0.0 + resolve: 1.22.1 + dev: false + + /pug-lexer/5.0.1: + resolution: {integrity: sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==} + dependencies: + character-parser: 2.2.0 + is-expression: 4.0.0 + pug-error: 2.0.0 + dev: false + + /pug-linker/4.0.0: + resolution: {integrity: sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==} + dependencies: + pug-error: 2.0.0 + pug-walk: 2.0.0 + dev: false + + /pug-load/3.0.0: + resolution: {integrity: sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==} + dependencies: + object-assign: 4.1.1 + pug-walk: 2.0.0 + dev: false + + /pug-parser/6.0.0: + resolution: {integrity: sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==} + dependencies: + pug-error: 2.0.0 + token-stream: 1.0.0 + dev: false + + /pug-runtime/3.0.1: + resolution: {integrity: sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==} + dev: false + + /pug-strip-comments/2.0.0: + resolution: {integrity: sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==} + dependencies: + pug-error: 2.0.0 + dev: false + + /pug-walk/2.0.0: + resolution: {integrity: sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==} + dev: false + + /pug/3.0.2: + resolution: {integrity: sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==} + dependencies: + pug-code-gen: 3.0.2 + pug-filters: 4.0.0 + pug-lexer: 5.0.1 + pug-linker: 4.0.0 + pug-load: 3.0.0 + pug-parser: 6.0.0 + pug-runtime: 3.0.1 + pug-strip-comments: 2.0.0 + dev: false + /pump/3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} dependencies: @@ -3760,6 +4740,11 @@ packages: side-channel: 1.0.4 dev: false + /qs/6.2.3: + resolution: {integrity: sha512-AY4g8t3LMboim0t6XWFdz6J5OuJ1ZNYu54SXihS/OMpgyCqYmcAJnWqkNSOjSjWmq3xxy+GF9uWQI2lI/7tKIA==} + engines: {node: '>=0.6'} + dev: false + /queue-microtask/1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: false @@ -3774,6 +4759,21 @@ packages: safe-buffer: 5.2.1 dev: false + /range-parser/1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + dev: false + + /raw-body/2.5.1: + resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + dev: false + /rc/1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true @@ -3794,14 +4794,6 @@ packages: scheduler: 0.21.0 dev: false - /react-icons/4.4.0_react@18.0.0: - resolution: {integrity: sha512-fSbvHeVYo/B5/L4VhB7sBA1i2tS8MkT0Hb9t2H1AVPkwGfVHLJCqyr2Py9dKMxsyM63Eng1GkdZfbWj+Fmv8Rg==} - peerDependencies: - react: '*' - dependencies: - react: 18.0.0 - dev: false - /react-is/16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: false @@ -3810,46 +4802,11 @@ packages: resolution: {integrity: sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==} dev: false - /react-loader-spinner/5.1.7-beta.1_42bb643d0b268c4c5cb594c9f18cf5be: - resolution: {integrity: sha512-Lo5qVWUyhAMs92PffsJRwH6iqPTgBmC7pocFA8Z3fkxS8s9OVKTIKRMvgywQ+CAxEXN9H5AqziYS+8zT7yK3CQ==} - peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 - dependencies: - react: 18.0.0 - react-dom: 18.0.0_react@18.0.0 - styled-components: 5.3.5_42bb643d0b268c4c5cb594c9f18cf5be - styled-tools: 1.7.2 - transitivePeerDependencies: - - react-is - dev: false - /react-refresh/0.13.0: resolution: {integrity: sha512-XP8A9BT0CpRBD+NYLLeIhld/RqG9+gktUjW1FkE+Vm7OCinbG1SshcK5tb9ls4kzvjZr9mOQc7HYgBngEyPAXg==} engines: {node: '>=0.10.0'} dev: false - /react-router-dom/6.3.0_react-dom@18.0.0+react@18.0.0: - resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - dependencies: - history: 5.3.0 - react: 18.0.0 - react-dom: 18.0.0_react@18.0.0 - react-router: 6.3.0_react@18.0.0 - dev: false - - /react-router/6.3.0_react@18.0.0: - resolution: {integrity: sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==} - peerDependencies: - react: '>=16.8' - dependencies: - history: 5.3.0 - react: 18.0.0 - dev: false - /react/18.0.0: resolution: {integrity: sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==} engines: {node: '>=0.10.0'} @@ -3906,15 +4863,25 @@ packages: picomatch: 2.3.1 dev: false + /recursive-copy/2.0.14: + resolution: {integrity: sha512-K8WNY8f8naTpfbA+RaXmkaQuD1IeW9EgNEfyGxSqqTQukpVtoOKros9jUqbpEsSw59YOmpd8nCBgtqJZy5nvog==} + dependencies: + errno: 0.1.8 + graceful-fs: 4.2.10 + junk: 1.0.3 + maximatch: 0.1.0 + mkdirp: 0.5.6 + pify: 2.3.0 + promise: 7.3.1 + rimraf: 2.7.1 + slash: 1.0.0 + dev: false + /reduce-flatten/2.0.0: resolution: {integrity: sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==} engines: {node: '>=6'} dev: false - /regenerator-runtime/0.13.9: - resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} - dev: false - /regexp-tree/0.1.24: resolution: {integrity: sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==} hasBin: true @@ -3935,6 +4902,10 @@ packages: engines: {node: '>=0.10.0'} dev: false + /requires-port/1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: false + /resolve-from/4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -3949,11 +4920,26 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: false + /resp-modifier/6.0.2: + resolution: {integrity: sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + minimatch: 3.1.2 + dev: false + /reusify/1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: false + /rimraf/2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: false + /rimraf/3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true @@ -3975,6 +4961,17 @@ packages: queue-microtask: 1.2.3 dev: false + /rx/4.1.0: + resolution: {integrity: sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==} + dev: false + + /rxjs/5.5.12: + resolution: {integrity: sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==} + engines: {npm: '>=2.0.0'} + dependencies: + symbol-observable: 1.0.1 + dev: false + /safe-buffer/5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: false @@ -4010,6 +5007,18 @@ packages: loose-envify: 1.4.0 dev: false + /section-matter/1.0.0: + resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} + engines: {node: '>=4'} + dependencies: + extend-shallow: 2.0.1 + kind-of: 6.0.3 + dev: false + + /semver-compare/1.0.0: + resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} + dev: false + /semver/5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true @@ -4028,6 +5037,25 @@ packages: lru-cache: 6.0.0 dev: false + /send/0.16.2: + resolution: {integrity: sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 1.1.2 + destroy: 1.0.4 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 1.6.3 + mime: 1.4.1 + ms: 2.0.0 + on-finished: 2.3.0 + range-parser: 1.2.1 + statuses: 1.4.0 + dev: false + /sentence-case/3.0.4: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} dependencies: @@ -4042,6 +5070,41 @@ packages: randombytes: 2.1.0 dev: false + /serve-index/1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.35 + parseurl: 1.3.3 + dev: false + + /serve-static/1.13.2: + resolution: {integrity: sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.16.2 + dev: false + + /server-destroy/1.0.1: + resolution: {integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==} + dev: false + + /setprototypeof/1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + dev: false + + /setprototypeof/1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + dev: false + /shallowequal/1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} dev: false @@ -4066,6 +5129,10 @@ packages: object-inspect: 1.12.2 dev: false + /sigmund/1.0.1: + resolution: {integrity: sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==} + dev: false + /signal-exit/3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: false @@ -4086,6 +5153,11 @@ packages: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} dev: false + /slash/1.0.0: + resolution: {integrity: sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==} + engines: {node: '>=0.10.0'} + dev: false + /slash/3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -4096,6 +5168,11 @@ packages: engines: {node: '>=12'} dev: false + /slugify/1.6.5: + resolution: {integrity: sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ==} + engines: {node: '>=8.0.0'} + dev: false + /snake-case/3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} dependencies: @@ -4103,6 +5180,61 @@ packages: tslib: 2.4.0 dev: false + /socket.io-adapter/2.4.0: + resolution: {integrity: sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==} + dev: false + + /socket.io-client/4.5.1: + resolution: {integrity: sha512-e6nLVgiRYatS+AHXnOnGi4ocOpubvOUCGhyWw8v+/FxW8saHkinG6Dfhi9TU0Kt/8mwJIAASxvw6eujQmjdZVA==} + engines: {node: '>=10.0.0'} + dependencies: + '@socket.io/component-emitter': 3.1.0 + debug: 4.3.4 + engine.io-client: 6.2.2 + socket.io-parser: 4.2.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + + /socket.io-parser/4.0.5: + resolution: {integrity: sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==} + engines: {node: '>=10.0.0'} + dependencies: + '@types/component-emitter': 1.2.11 + component-emitter: 1.3.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + + /socket.io-parser/4.2.1: + resolution: {integrity: sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==} + engines: {node: '>=10.0.0'} + dependencies: + '@socket.io/component-emitter': 3.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + + /socket.io/4.5.1: + resolution: {integrity: sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ==} + engines: {node: '>=10.0.0'} + dependencies: + accepts: 1.3.8 + base64id: 2.0.0 + debug: 4.3.4 + engine.io: 6.2.0 + socket.io-adapter: 2.4.0 + socket.io-parser: 4.0.5 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + /source-map-js/1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -4150,6 +5282,35 @@ packages: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: false + /statuses/1.3.1: + resolution: {integrity: sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==} + engines: {node: '>= 0.6'} + dev: false + + /statuses/1.4.0: + resolution: {integrity: sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==} + engines: {node: '>= 0.6'} + dev: false + + /statuses/1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: false + + /statuses/2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + dev: false + + /stream-throttle/0.1.3: + resolution: {integrity: sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==} + engines: {node: '>= 0.10.0'} + hasBin: true + dependencies: + commander: 2.20.3 + limiter: 1.1.5 + dev: false + /string-width/4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -4165,6 +5326,13 @@ packages: safe-buffer: 5.2.1 dev: false + /strip-ansi/3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: false + /strip-ansi/6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -4172,6 +5340,11 @@ packages: ansi-regex: 5.0.1 dev: false + /strip-bom-string/1.0.0: + resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} + engines: {node: '>=0.10.0'} + dev: false + /strip-indent/3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -4218,8 +5391,9 @@ packages: supports-color: 5.5.0 dev: false - /styled-tools/1.7.2: - resolution: {integrity: sha512-IjLxzM20RMwAsx8M1QoRlCG/Kmq8lKzCGyospjtSXt/BTIIcvgTonaxQAsKnBrsZNwhpHzO9ADx5te0h76ILVg==} + /supports-color/2.0.0: + resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} + engines: {node: '>=0.8.0'} dev: false /supports-color/5.5.0: @@ -4248,12 +5422,13 @@ packages: engines: {node: '>= 0.4'} dev: false - /symbol-tree/3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + /symbol-observable/1.0.1: + resolution: {integrity: sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==} + engines: {node: '>=0.10.0'} dev: false - /tabbable/5.3.3: - resolution: {integrity: sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==} + /symbol-tree/3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: false /table-layout/1.0.2: @@ -4299,6 +5474,13 @@ packages: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: false + /tfunk/4.0.0: + resolution: {integrity: sha512-eJQ0dGfDIzWNiFNYFVjJ+Ezl/GmwHaFTBTjrtqNPW0S7cuVDBrZrmzUz6VkMeCR4DZFqhd4YtLwsw3i2wYHswQ==} + dependencies: + chalk: 1.1.3 + dlv: 1.1.3 + dev: false + /tmp/0.2.1: resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} engines: {node: '>=8.17.0'} @@ -4318,6 +5500,15 @@ packages: is-number: 7.0.0 dev: false + /toidentifier/1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + dev: false + + /token-stream/1.0.0: + resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==} + dev: false + /tough-cookie/4.0.0: resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==} engines: {node: '>=6'} @@ -4416,10 +5607,22 @@ packages: engines: {node: '>=8'} dev: false + /ua-parser-js/1.0.2: + resolution: {integrity: sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg==} + dev: false + /uc.micro/1.0.6: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} dev: false + /uglify-js/3.16.3: + resolution: {integrity: sha512-uVbFqx9vvLhQg0iBaau9Z75AxWJ8tqM9AV890dIZCLApF4rTcyHwmAvLeEdYRs+BzYWu8Iw81F79ah0EfTXbaw==} + engines: {node: '>=0.8.0'} + hasBin: true + requiresBuild: true + dev: false + optional: true + /underscore/1.13.4: resolution: {integrity: sha512-BQFnUDuAQ4Yf/cYY5LNrK9NCJFKriaRbD9uR1fTeXnBeoa97W0i41qkZfGO9pSo8I5KzjAcSY2XYtdf0oKd7KQ==} dev: false @@ -4429,6 +5632,11 @@ packages: engines: {node: '>= 4.0.0'} dev: false + /unpipe/1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: false + /update-browserslist-db/1.0.5_browserslist@4.21.3: resolution: {integrity: sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==} hasBin: true @@ -4466,6 +5674,11 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: false + /utils-merge/1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + dev: false + /v8-compile-cache/2.3.0: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} dev: false @@ -4486,6 +5699,11 @@ packages: spdx-expression-parse: 3.0.1 dev: false + /vary/1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: false + /vite/2.9.14: resolution: {integrity: sha512-P/UCjSpSMcE54r4mPak55hWAZPlyfS369svib/gpmz8/01L822lMPOJ/RYW6tLCe1RPvMvOsJ17erf55bKp4Hw==} engines: {node: '>=12.2.0'} @@ -4510,6 +5728,11 @@ packages: fsevents: 2.3.2 dev: false + /void-elements/3.1.0: + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} + engines: {node: '>=0.10.0'} + dev: false + /vsce/2.6.7: resolution: {integrity: sha512-5dEtdi/yzWQbOU7JDUSOs8lmSzzkewBR5P122BUkmXE6A/DEdFsKNsg2773NGXJTwwF1MfsOgUR6QVF3cLLJNQ==} engines: {node: '>= 14'} @@ -4665,11 +5888,25 @@ packages: isexe: 2.0.0 dev: false + /with/7.0.2: + resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} + engines: {node: '>= 10.0.0'} + dependencies: + '@babel/parser': 7.18.10 + '@babel/types': 7.18.10 + assert-never: 1.2.1 + babel-walk: 3.0.0-canary-5 + dev: false + /word-wrap/1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} dev: false + /wordwrap/1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + dev: false + /wordwrapjs/4.0.1: resolution: {integrity: sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==} engines: {node: '>=8.0.0'} @@ -4695,6 +5932,19 @@ packages: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: false + /ws/8.2.3: + resolution: {integrity: sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false + /ws/8.8.1: resolution: {integrity: sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==} engines: {node: '>=10.0.0'} @@ -4739,11 +5989,20 @@ packages: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} dev: false + /xmlhttprequest-ssl/2.0.0: + resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==} + engines: {node: '>=0.4.0'} + dev: false + /y18n/5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} dev: false + /yallist/2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + dev: false + /yallist/3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} dev: false @@ -4790,6 +6049,19 @@ packages: yargs-parser: 20.2.9 dev: false + /yargs/17.1.1: + resolution: {integrity: sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==} + engines: {node: '>=12'} + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + dev: false + /yargs/17.3.1: resolution: {integrity: sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==} engines: {node: '>=12'} @@ -5204,48 +6476,14 @@ packages: - supports-color dev: false - file:projects/website.tgz_react-is@18.1.0: - resolution: {integrity: sha512-8NcccJkXS2suqs87bAE1rMGBZt3d5aIfDCQpWPXfnJiU3nf1pCZaaJTGCv5eaooPpHcp2UD+7i132yAtG+iO4g==, tarball: file:projects/website.tgz} - id: file:projects/website.tgz + file:projects/website.tgz: + resolution: {integrity: sha512-DLa0GjnvmX+H09W+dYQ3MWKzV1GPSjr+5ReuQtYeSu57EHjfm5ArJU4gDrubeVwZEWmAMQeHRqgtaSsfw68qEQ==, tarball: file:projects/website.tgz} name: '@rush-temp/website' version: 0.0.0 dependencies: - '@fluentui/web-components': 2.5.3 - '@playwright/test': 1.22.2 - '@types/debounce': 1.2.1 - '@types/lz-string': 1.3.34 - '@types/mocha': 9.1.1 - '@types/node': 16.0.3 - '@types/prettier': 2.6.0 - '@types/react': 18.0.15 - '@types/react-dom': 18.0.6 - '@types/react-router-dom': 5.3.3 - '@vitejs/plugin-react': 1.3.2 - c8: 7.11.3 - cross-env: 7.0.3 - debounce: 1.2.1 - eslint: 8.21.0 - lzutf8: 0.6.3 - mocha: 9.2.2 - mocha-junit-reporter: 2.0.2_mocha@9.2.2 - mocha-multi-reporters: 1.5.1_mocha@9.2.2 - monaco-editor: 0.32.1 - playwright: 1.22.2 - prettier: 2.7.1 - react: 18.0.0 - react-dom: 18.0.0_react@18.0.0 - react-icons: 4.4.0_react@18.0.0 - react-loader-spinner: 5.1.7-beta.1_42bb643d0b268c4c5cb594c9f18cf5be - react-router-dom: 6.3.0_react-dom@18.0.0+react@18.0.0 - rimraf: 3.0.2 - typescript: 4.7.4 - vite: 2.9.14 - vscode-languageserver: 7.0.0 - vscode-languageserver-textdocument: 1.0.5 + '@11ty/eleventy': 1.0.2 transitivePeerDependencies: - - less - - react-is - - sass - - stylus + - bufferutil - supports-color + - utf-8-validate dev: false diff --git a/packages/website/package.json b/packages/website/package.json index 77b377793e..4aff372943 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -1,5 +1,5 @@ { - "name": "website", + "name": "@cadl-lang/website", "version": "1.0.0", "description": "", "main": "index.js", From 0415ffc5d245b146073fcb70ff43bcab8e9560bd Mon Sep 17 00:00:00 2001 From: Descartes Date: Tue, 16 Aug 2022 10:40:25 -0700 Subject: [PATCH 50/81] Running git pull upstream main --- README.md | 7 + ...> documentHighlight_2022-08-05-17-28.json} | 2 +- ...ture-require-imports_2022-07-08-17-50.json | 10 - .../fix-clone-type_2022-07-19-15-33.json | 10 - ...fix-formatter-parens_2022-07-18-16-57.json | 10 - ...mport-error-location_2022-07-12-21-48.json | 10 - ...-property-directive_2022-08-11-15-31.json} | 2 +- ...-decorator-comments_2022-08-11-15-01.json} | 2 +- ...mplicit-request-body_2022-07-19-15-47.json | 10 - .../multi-reporter_2022-07-18-19-46.json | 10 - ...> nguerrera-patch-1_2022-08-15-15-23.json} | 0 ...=> remove-eval-cadl_2022-08-15-17-24.json} | 2 +- ... remove-type-suffix_2022-08-16-16-19.json} | 2 +- ...ion-with-server-path_2022-07-19-18-27.json | 10 - ...consistent-filenames_2022-06-13-23-28.json | 10 - ...-decorator-comments_2022-08-11-15-11.json} | 4 +- .../symbol-descriptions_2022-04-01-22-20.json | 10 - .../upgrade-ts-4.6_2022-04-08-20-39.json | 10 - .../upgrade-ts-4.7_2022-05-25-16-21.json | 10 - ...consistent-filenames_2022-06-13-23-28.json | 10 - ...nvestigate-test-fail_2022-07-12-16-42.json | 10 - .../multi-reporter_2022-07-18-19-46.json | 10 - ...nvestigate-test-fail_2022-07-12-16-42.json | 10 - ... remove-type-suffix_2022-08-16-16-19.json} | 4 +- ...consistent-filenames_2022-06-13-23-28.json | 10 - ...nvestigate-test-fail_2022-07-12-16-42.json | 10 - .../multi-reporter_2022-07-18-19-46.json | 10 - ...nvestigate-test-fail_2022-07-12-16-42.json | 10 - ... remove-type-suffix_2022-08-16-16-19.json} | 4 +- ...nvestigate-test-fail_2022-07-12-16-42.json | 10 - .../multi-reporter_2022-07-18-19-46.json | 10 - ... remove-type-suffix_2022-08-16-16-19.json} | 2 +- ...nvestigate-test-fail_2022-07-12-16-42.json | 10 - .../multi-reporter_2022-07-18-19-46.json | 10 - .../operation-id-better_2022-07-14-16-51.json | 10 - ... remove-type-suffix_2022-08-16-16-19.json} | 2 +- ...nvestigate-test-fail_2022-07-12-16-42.json | 10 - .../multi-reporter_2022-07-18-19-46.json | 10 - .../rest/fix-clone-type_2022-07-14-13-05.json | 10 - .../rest/fix-clone-type_2022-07-19-15-33.json | 10 - ...mplicit-request-body_2022-07-18-18-11.json | 10 - ...nvestigate-test-fail_2022-07-12-16-42.json | 10 - ...-path-param-required_2022-07-20-12-34.json | 10 - .../rest/multi-reporter_2022-07-18-19-46.json | 10 - ...nal-path-param-error_2022-07-08-20-29.json | 10 - ... remove-type-suffix_2022-08-16-16-19.json} | 2 +- .../multi-reporter_2022-07-18-19-46.json | 10 - ... remove-type-suffix_2022-08-16-16-19.json} | 4 +- .../fix-vs2019-build_2022-06-13-22-32.json | 10 - ...ion-with-server-path_2022-07-19-18-27.json | 10 - ...nvestigate-test-fail_2022-07-12-16-42.json | 10 - .../multi-reporter_2022-07-18-19-46.json | 10 - ...ion-with-server-path_2022-07-19-18-27.json | 10 - .../upgrade-ts-4.7_2022-05-25-16-21.json | 10 - docs/cadl-for-openapi-dev.md | 22 +- docs/release/release-2022-08-10.md | 304 +++ docs/spec.html | 368 ++-- docs/tutorial.md | 280 ++- docs/type-relations.md | 143 ++ eng/feeds/core-scaffolding.json | 13 + eng/scripts/helpers.js | 2 +- packages/bundler/package.json | 4 +- packages/bundler/src/bundler.ts | 1 - packages/cadl-vs/CHANGELOG.json | 20 + packages/cadl-vs/CHANGELOG.md | 9 +- packages/cadl-vs/package.json | 6 +- packages/cadl-vscode/CHANGELOG.json | 23 + packages/cadl-vscode/CHANGELOG.md | 9 +- packages/cadl-vscode/package.json | 8 +- packages/compiler/CHANGELOG.json | 136 ++ packages/compiler/CHANGELOG.md | 49 +- packages/compiler/core/checker.ts | 1940 +++++++++++------ packages/compiler/core/cli.ts | 8 + packages/compiler/core/decorator-utils.ts | 8 +- packages/compiler/core/emitter-utils.ts | 21 + packages/compiler/core/index.ts | 2 + packages/compiler/core/messages.ts | 52 +- packages/compiler/core/parser.ts | 66 +- packages/compiler/core/path-utils.ts | 117 +- packages/compiler/core/program.ts | 38 +- packages/compiler/core/projection-members.ts | 10 +- packages/compiler/core/projector.ts | 176 +- packages/compiler/core/scanner.ts | 9 +- packages/compiler/core/semantic-walker.ts | 72 +- packages/compiler/core/type-utils.ts | 44 + packages/compiler/core/types.ts | 240 +- packages/compiler/core/util.ts | 24 + .../formatter/print/comment-handler.ts | 11 +- packages/compiler/formatter/print/printer.ts | 74 +- packages/compiler/lib/decorators.ts | 165 +- packages/compiler/lib/lib.cadl | 33 +- packages/compiler/lib/service.ts | 10 +- packages/compiler/package.json | 8 +- packages/compiler/server/language-config.ts | 73 + packages/compiler/server/server.ts | 6 +- packages/compiler/server/serverlib.ts | 325 ++- packages/compiler/server/tmlanguage.ts | 58 +- packages/compiler/test/checker/alias.test.ts | 34 +- .../test/checker/duplicate-ids.test.ts | 59 +- .../test/checker/effective-type.test.ts | 129 +- packages/compiler/test/checker/enum.test.ts | 54 +- .../test/checker/global-namespace.test.ts | 4 +- .../compiler/test/checker/interface.test.ts | 44 +- .../test/checker/intersections.test.ts | 26 +- .../checker/model-circular-references.test.ts | 43 +- packages/compiler/test/checker/model.test.ts | 120 +- .../compiler/test/checker/namespaces.test.ts | 125 +- .../compiler/test/checker/operations.test.ts | 87 +- .../compiler/test/checker/projection.test.ts | 184 +- .../compiler/test/checker/references.test.ts | 52 +- .../compiler/test/checker/relation.test.ts | 727 ++++++ packages/compiler/test/checker/spread.test.ts | 60 +- .../compiler/test/checker/templates.test.ts | 159 +- packages/compiler/test/checker/union.test.ts | 26 +- packages/compiler/test/checker/using.test.ts | 50 +- .../test/decorators/decorators.test.ts | 259 ++- .../test/decorators/range-limits.test.ts | 4 +- .../compiler/test/decorators/tags.test.ts | 20 +- .../compiler/test/formatter/formatter.test.ts | 271 ++- .../formatter/scenarios/inputs/model.cadl | 9 + .../formatter/scenarios/outputs/model.cadl | 10 + packages/compiler/test/parser.test.ts | 10 +- packages/compiler/test/path-utils.test.ts | 18 +- packages/compiler/test/scanner.test.ts | 3 +- .../compiler/test/semantic-walker.test.ts | 28 +- .../compiler/test/server/colorization.test.ts | 72 + .../test/server/document-highlight.test.ts | 181 ++ .../test/server/documentsymbol.test.ts | 102 + .../test/server/server-file-handling.test.ts | 13 +- packages/compiler/test/type-utils.test.ts | 42 + packages/compiler/testing/expect.ts | 15 +- packages/compiler/testing/test-host.ts | 28 +- packages/compiler/testing/test-server-host.ts | 54 +- packages/eslint-config-cadl/CHANGELOG.json | 17 + packages/eslint-config-cadl/CHANGELOG.md | 9 +- packages/eslint-config-cadl/index.js | 1 + packages/eslint-config-cadl/package.json | 6 +- packages/eslint-plugin-cadl/CHANGELOG.json | 12 + packages/eslint-plugin-cadl/CHANGELOG.md | 7 +- packages/eslint-plugin-cadl/package.json | 5 +- .../test/rules/call-decorator.test.ts | 2 - .../eslint-plugin-cadl/test/rules/utils.ts | 2 + packages/html-program-viewer/CHANGELOG.json | 18 + packages/html-program-viewer/CHANGELOG.md | 7 +- packages/html-program-viewer/package.json | 8 +- packages/html-program-viewer/src/ui.tsx | 46 +- packages/internal-build-utils/CHANGELOG.json | 12 + packages/internal-build-utils/CHANGELOG.md | 7 +- packages/internal-build-utils/package.json | 4 +- packages/library-linter/CHANGELOG.json | 18 + packages/library-linter/CHANGELOG.md | 7 +- packages/library-linter/package.json | 8 +- packages/library-linter/src/linter.ts | 4 +- packages/openapi/CHANGELOG.json | 44 + packages/openapi/CHANGELOG.md | 12 +- packages/openapi/package.json | 16 +- packages/openapi/src/decorators.ts | 10 +- packages/openapi/src/helpers.ts | 71 +- packages/openapi/test/helpers.test.ts | 4 +- packages/openapi3/CHANGELOG.json | 96 + packages/openapi3/CHANGELOG.md | 26 +- packages/openapi3/README.md | 36 + packages/openapi3/package.json | 24 +- packages/openapi3/src/lib.ts | 19 +- packages/openapi3/src/openapi.ts | 358 ++- packages/openapi3/src/types.ts | 521 ++++- packages/openapi3/test/array.test.ts | 39 + packages/openapi3/test/discriminator.test.ts | 50 +- packages/openapi3/test/documentation.test.ts | 21 +- packages/openapi3/test/info.test.ts | 16 +- packages/openapi3/test/openapi-output.test.ts | 311 ++- packages/openapi3/test/parameters.test.ts | 13 +- .../openapi3/test/primitive-types.test.ts | 182 +- packages/openapi3/test/record.test.ts | 39 + packages/openapi3/test/return-types.test.ts | 200 +- packages/openapi3/test/security.test.ts | 145 ++ packages/openapi3/test/test-host.ts | 36 +- packages/openapi3/test/union-schema.test.ts | 22 + packages/openapi3/test/versioning.test.ts | 83 +- packages/playground/package.json | 20 +- packages/playground/src/app.tsx | 6 +- .../playground/src/components/cadl-editor.tsx | 16 +- .../src/components/diagnostic-list.tsx | 1 - .../playground/src/components/error-tab.tsx | 2 +- .../src/components/openapi-output.tsx | 32 - .../playground/src/components/swagger-ui.tsx | 21 + packages/playground/src/index.ts | 1 + packages/playground/src/services.ts | 52 +- packages/playground/src/style.css | 13 + packages/playground/vite.config.ts | 1 + packages/prettier-plugin-cadl/CHANGELOG.json | 15 + packages/prettier-plugin-cadl/CHANGELOG.md | 7 +- packages/prettier-plugin-cadl/package.json | 6 +- packages/rest/CHANGELOG.json | 84 + packages/rest/CHANGELOG.md | 28 +- packages/rest/README.md | 217 +- packages/rest/docs/authentication.md | 89 + packages/rest/lib/auth.cadl | 127 ++ packages/rest/lib/http.cadl | 31 +- packages/rest/lib/resource.cadl | 15 +- packages/rest/lib/rest.cadl | 6 + packages/rest/package.json | 12 +- packages/rest/src/diagnostics.ts | 20 +- packages/rest/src/http/decorators.ts | 210 +- packages/rest/src/http/index.ts | 1 + packages/rest/src/http/responses.ts | 51 +- packages/rest/src/http/route.ts | 176 +- packages/rest/src/http/types.ts | 146 ++ packages/rest/src/resource.ts | 35 +- packages/rest/src/rest.ts | 184 +- packages/rest/test/http-decorators.test.ts | 180 +- packages/rest/test/resource.test.ts | 116 +- packages/rest/test/responses.test.ts | 10 +- packages/rest/test/rest-decorators.test.ts | 38 +- packages/rest/test/routes.test.ts | 217 +- packages/rest/test/test-host.ts | 23 +- packages/samples/authentication/main.cadl | 22 + packages/samples/binary/binary.cadl | 3 + packages/samples/documentation/docs.cadl | 3 + .../samples/grpc-kiosk-example/kiosk.cadl | 3 + .../samples/grpc-library-example/library.cadl | 3 + .../samples/multiple-types-union/main.cadl | 2 +- packages/samples/nested/nested.cadl | 5 +- packages/samples/nullable/nullable.cadl | 3 + packages/samples/optional/optional.cadl | 9 + packages/samples/package.json | 14 +- .../param-decorators/param-decorators.cadl | 4 +- packages/samples/petstore/petstore.cadl | 12 +- .../samples/polymorphism/polymorphism.cadl | 3 + packages/samples/rest/petstore/petstore.cadl | 8 +- packages/samples/tags/tagged-operations.cadl | 3 + .../test/output/authentication/openapi.json | 73 + .../samples/test/output/binary/openapi.json | 10 +- .../test/output/documentation/openapi.json | 22 +- .../output/grpc-kiosk-example/openapi.json | 34 +- .../output/grpc-library-example/openapi.json | 28 +- .../samples/test/output/nested/openapi.json | 64 +- .../samples/test/output/nullable/openapi.json | 40 +- .../output/openapi-extensions/openapi.json | 2 +- .../samples/test/output/optional/openapi.json | 19 +- .../samples/test/output/petstore/openapi.json | 14 +- .../test/output/polymorphism/openapi.json | 4 +- .../test/output/rest/petstore/openapi.json | 138 +- .../test/output/signatures/openapi.json | 16 +- .../samples/test/output/simple/openapi.json | 4 +- .../samples/test/output/tags/openapi.json | 12 +- .../testserver/body-boolean/openapi.json | 26 +- .../testserver/body-complex/openapi.json | 83 +- .../testserver/body-string/openapi.json | 44 +- .../output/testserver/body-time/openapi.json | 8 +- .../testserver/media-types/openapi.json | 2 +- .../multiple-inheritance/openapi.json | 2 +- .../output/use-versioned-lib/openapi.json | 2 +- .../test/output/versioning/openapi.v1.json | 11 +- .../test/output/versioning/openapi.v2.json | 11 +- .../test/output/visibility/openapi.json | 8 +- .../testserver/body-boolean/body-boolean.cadl | 3 + .../testserver/body-complex/body-complex.cadl | 31 +- .../testserver/body-string/body-string.cadl | 17 +- .../testserver/body-time/body-time.cadl | 9 +- .../testserver/media-types/media-types.cadl | 7 +- .../multiple-inheritance.cadl | 23 +- packages/samples/versioning/main.cadl | 6 +- packages/samples/visibility/visibility.cadl | 3 + packages/spec/package.json | 2 +- packages/spec/src/spec.emu.html | 13 +- packages/tmlanguage-generator/CHANGELOG.json | 17 + packages/tmlanguage-generator/CHANGELOG.md | 7 +- packages/tmlanguage-generator/package.json | 4 +- packages/versioning/CHANGELOG.json | 34 + packages/versioning/CHANGELOG.md | 14 +- packages/versioning/lib/versioning.cadl | 2 +- packages/versioning/package.json | 10 +- packages/versioning/src/validate.ts | 15 +- packages/versioning/src/versioning.ts | 150 +- packages/versioning/test/utils.ts | 10 +- .../test/versioned-dependencies.test.ts | 118 +- packages/versioning/test/versioning.test.ts | 59 +- 278 files changed, 10684 insertions(+), 3995 deletions(-) rename common/changes/@cadl-lang/compiler/{commentBranch_2022-07-12-14-59.json => documentHighlight_2022-08-05-17-28.json} (71%) delete mode 100644 common/changes/@cadl-lang/compiler/feature-require-imports_2022-07-08-17-50.json delete mode 100644 common/changes/@cadl-lang/compiler/fix-clone-type_2022-07-19-15-33.json delete mode 100644 common/changes/@cadl-lang/compiler/fix-formatter-parens_2022-07-18-16-57.json delete mode 100644 common/changes/@cadl-lang/compiler/fix-import-error-location_2022-07-12-21-48.json rename common/changes/@cadl-lang/compiler/{fix-clone-type_2022-07-14-13-05.json => fix-model-property-directive_2022-08-11-15-31.json} (59%) rename common/changes/@cadl-lang/compiler/{commentBranch_2022-07-12-06-50.json => formatter-decorator-comments_2022-08-11-15-01.json} (55%) delete mode 100644 common/changes/@cadl-lang/compiler/implicit-request-body_2022-07-19-15-47.json delete mode 100644 common/changes/@cadl-lang/compiler/multi-reporter_2022-07-18-19-46.json rename common/changes/@cadl-lang/compiler/{investigate-test-fail_2022-07-12-16-42.json => nguerrera-patch-1_2022-08-15-15-23.json} (100%) rename common/changes/@cadl-lang/compiler/{commentsFoldingRanges_2022-07-08-14-30.json => remove-eval-cadl_2022-08-15-17-24.json} (66%) rename common/changes/@cadl-lang/compiler/{operation-id-better_2022-07-14-16-51.json => remove-type-suffix_2022-08-16-16-19.json} (63%) delete mode 100644 common/changes/@cadl-lang/compiler/skip-resolution-with-server-path_2022-07-19-18-27.json delete mode 100644 common/changes/@cadl-lang/eslint-config-cadl/consistent-filenames_2022-06-13-23-28.json rename common/changes/@cadl-lang/eslint-config-cadl/{eslint-mocha_2022-07-13-15-32.json => formatter-decorator-comments_2022-08-11-15-11.json} (55%) delete mode 100644 common/changes/@cadl-lang/eslint-config-cadl/symbol-descriptions_2022-04-01-22-20.json delete mode 100644 common/changes/@cadl-lang/eslint-config-cadl/upgrade-ts-4.6_2022-04-08-20-39.json delete mode 100644 common/changes/@cadl-lang/eslint-config-cadl/upgrade-ts-4.7_2022-05-25-16-21.json delete mode 100644 common/changes/@cadl-lang/eslint-plugin/consistent-filenames_2022-06-13-23-28.json delete mode 100644 common/changes/@cadl-lang/eslint-plugin/investigate-test-fail_2022-07-12-16-42.json delete mode 100644 common/changes/@cadl-lang/eslint-plugin/multi-reporter_2022-07-18-19-46.json delete mode 100644 common/changes/@cadl-lang/html-program-viewer/investigate-test-fail_2022-07-12-16-42.json rename common/changes/@cadl-lang/html-program-viewer/{multi-reporter_2022-07-18-19-46.json => remove-type-suffix_2022-08-16-16-19.json} (66%) delete mode 100644 common/changes/@cadl-lang/internal-build-utils/consistent-filenames_2022-06-13-23-28.json delete mode 100644 common/changes/@cadl-lang/internal-build-utils/investigate-test-fail_2022-07-12-16-42.json delete mode 100644 common/changes/@cadl-lang/internal-build-utils/multi-reporter_2022-07-18-19-46.json delete mode 100644 common/changes/@cadl-lang/library-linter/investigate-test-fail_2022-07-12-16-42.json rename common/changes/@cadl-lang/library-linter/{multi-reporter_2022-07-18-19-46.json => remove-type-suffix_2022-08-16-16-19.json} (64%) delete mode 100644 common/changes/@cadl-lang/openapi/investigate-test-fail_2022-07-12-16-42.json delete mode 100644 common/changes/@cadl-lang/openapi/multi-reporter_2022-07-18-19-46.json rename common/changes/@cadl-lang/openapi/{operation-id-better_2022-07-14-16-51.json => remove-type-suffix_2022-08-16-16-19.json} (70%) delete mode 100644 common/changes/@cadl-lang/openapi3/investigate-test-fail_2022-07-12-16-42.json delete mode 100644 common/changes/@cadl-lang/openapi3/multi-reporter_2022-07-18-19-46.json delete mode 100644 common/changes/@cadl-lang/openapi3/operation-id-better_2022-07-14-16-51.json rename common/changes/@cadl-lang/openapi3/{implicit-request-body_2022-07-18-18-11.json => remove-type-suffix_2022-08-16-16-19.json} (65%) delete mode 100644 common/changes/@cadl-lang/prettier-plugin-cadl/investigate-test-fail_2022-07-12-16-42.json delete mode 100644 common/changes/@cadl-lang/prettier-plugin-cadl/multi-reporter_2022-07-18-19-46.json delete mode 100644 common/changes/@cadl-lang/rest/fix-clone-type_2022-07-14-13-05.json delete mode 100644 common/changes/@cadl-lang/rest/fix-clone-type_2022-07-19-15-33.json delete mode 100644 common/changes/@cadl-lang/rest/implicit-request-body_2022-07-18-18-11.json delete mode 100644 common/changes/@cadl-lang/rest/investigate-test-fail_2022-07-12-16-42.json delete mode 100644 common/changes/@cadl-lang/rest/key-path-param-required_2022-07-20-12-34.json delete mode 100644 common/changes/@cadl-lang/rest/multi-reporter_2022-07-18-19-46.json delete mode 100644 common/changes/@cadl-lang/rest/optional-path-param-error_2022-07-08-20-29.json rename common/changes/@cadl-lang/rest/{operation-id-better_2022-07-14-17-06.json => remove-type-suffix_2022-08-16-16-19.json} (67%) delete mode 100644 common/changes/@cadl-lang/versioning/multi-reporter_2022-07-18-19-46.json rename common/changes/@cadl-lang/versioning/{investigate-test-fail_2022-07-12-16-42.json => remove-type-suffix_2022-08-16-16-19.json} (63%) delete mode 100644 common/changes/cadl-vs/fix-vs2019-build_2022-06-13-22-32.json delete mode 100644 common/changes/cadl-vs/skip-resolution-with-server-path_2022-07-19-18-27.json delete mode 100644 common/changes/cadl-vscode/investigate-test-fail_2022-07-12-16-42.json delete mode 100644 common/changes/cadl-vscode/multi-reporter_2022-07-18-19-46.json delete mode 100644 common/changes/cadl-vscode/skip-resolution-with-server-path_2022-07-19-18-27.json delete mode 100644 common/changes/tmlanguage-generator/upgrade-ts-4.7_2022-05-25-16-21.json create mode 100644 docs/release/release-2022-08-10.md create mode 100644 docs/type-relations.md create mode 100644 eng/feeds/core-scaffolding.json create mode 100644 packages/compiler/core/emitter-utils.ts create mode 100644 packages/compiler/core/type-utils.ts create mode 100644 packages/compiler/test/checker/relation.test.ts create mode 100644 packages/compiler/test/server/document-highlight.test.ts create mode 100644 packages/compiler/test/server/documentsymbol.test.ts create mode 100644 packages/compiler/test/type-utils.test.ts create mode 100644 packages/openapi3/test/array.test.ts create mode 100644 packages/openapi3/test/record.test.ts create mode 100644 packages/openapi3/test/security.test.ts create mode 100644 packages/openapi3/test/union-schema.test.ts create mode 100644 packages/playground/src/components/swagger-ui.tsx create mode 100644 packages/rest/docs/authentication.md create mode 100644 packages/rest/lib/auth.cadl create mode 100644 packages/rest/src/http/types.ts create mode 100644 packages/samples/authentication/main.cadl create mode 100644 packages/samples/test/output/authentication/openapi.json diff --git a/README.md b/README.md index 63c86fbd57..b022f58a91 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,13 @@ using the preview. `@next` version of the package are the latest versions available on the `main` branch. +## Try Cadl without installing anything + +You can try Cadl on the web without installing anything. + +- [Cadl playground](https://cadlplayground.z22.web.core.windows.net) +- [Cadl playground for Azure services](https://cadlplayground.z22.web.core.windows.net/cadl-azure/) + ## Getting Started ### Using Docker diff --git a/common/changes/@cadl-lang/compiler/commentBranch_2022-07-12-14-59.json b/common/changes/@cadl-lang/compiler/documentHighlight_2022-08-05-17-28.json similarity index 71% rename from common/changes/@cadl-lang/compiler/commentBranch_2022-07-12-14-59.json rename to common/changes/@cadl-lang/compiler/documentHighlight_2022-08-05-17-28.json index 456aa5cfda..3e9390c0f3 100644 --- a/common/changes/@cadl-lang/compiler/commentBranch_2022-07-12-14-59.json +++ b/common/changes/@cadl-lang/compiler/documentHighlight_2022-08-05-17-28.json @@ -2,7 +2,7 @@ "changes": [ { "packageName": "@cadl-lang/compiler", - "comment": "comment folding", + "comment": "implementation of documentHighlight", "type": "minor" } ], diff --git a/common/changes/@cadl-lang/compiler/feature-require-imports_2022-07-08-17-50.json b/common/changes/@cadl-lang/compiler/feature-require-imports_2022-07-08-17-50.json deleted file mode 100644 index 5e7c9ce2c9..0000000000 --- a/common/changes/@cadl-lang/compiler/feature-require-imports_2022-07-08-17-50.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/compiler", - "comment": "Feature: Emitter can specify a list of required imports", - "type": "minor" - } - ], - "packageName": "@cadl-lang/compiler" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/compiler/fix-clone-type_2022-07-19-15-33.json b/common/changes/@cadl-lang/compiler/fix-clone-type_2022-07-19-15-33.json deleted file mode 100644 index 57eeef572f..0000000000 --- a/common/changes/@cadl-lang/compiler/fix-clone-type_2022-07-19-15-33.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/compiler", - "comment": "Add DefaultKeyVisibility and @withDefaultKeyVisibility to assign a default visibility value to model @key properties in specific operation signatures", - "type": "patch" - } - ], - "packageName": "@cadl-lang/compiler" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/compiler/fix-formatter-parens_2022-07-18-16-57.json b/common/changes/@cadl-lang/compiler/fix-formatter-parens_2022-07-18-16-57.json deleted file mode 100644 index 356076367f..0000000000 --- a/common/changes/@cadl-lang/compiler/fix-formatter-parens_2022-07-18-16-57.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/compiler", - "comment": "Fix issue with required parentheses being dropped with union, intersection and array expressions", - "type": "patch" - } - ], - "packageName": "@cadl-lang/compiler" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/compiler/fix-import-error-location_2022-07-12-21-48.json b/common/changes/@cadl-lang/compiler/fix-import-error-location_2022-07-12-21-48.json deleted file mode 100644 index 0ef538465e..0000000000 --- a/common/changes/@cadl-lang/compiler/fix-import-error-location_2022-07-12-21-48.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/compiler", - "comment": "Fix parsing error locations for imports and blockless namespaces", - "type": "patch" - } - ], - "packageName": "@cadl-lang/compiler" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/compiler/fix-clone-type_2022-07-14-13-05.json b/common/changes/@cadl-lang/compiler/fix-model-property-directive_2022-08-11-15-31.json similarity index 59% rename from common/changes/@cadl-lang/compiler/fix-clone-type_2022-07-14-13-05.json rename to common/changes/@cadl-lang/compiler/fix-model-property-directive_2022-08-11-15-31.json index 29d331fc96..bea94704fb 100644 --- a/common/changes/@cadl-lang/compiler/fix-clone-type_2022-07-14-13-05.json +++ b/common/changes/@cadl-lang/compiler/fix-model-property-directive_2022-08-11-15-31.json @@ -2,7 +2,7 @@ "changes": [ { "packageName": "@cadl-lang/compiler", - "comment": "Improve `cloneType` implementation to duplicate decorator lists correctly", + "comment": "Formatter: Directive on model property with decorators will hug decorator.", "type": "patch" } ], diff --git a/common/changes/@cadl-lang/compiler/commentBranch_2022-07-12-06-50.json b/common/changes/@cadl-lang/compiler/formatter-decorator-comments_2022-08-11-15-01.json similarity index 55% rename from common/changes/@cadl-lang/compiler/commentBranch_2022-07-12-06-50.json rename to common/changes/@cadl-lang/compiler/formatter-decorator-comments_2022-08-11-15-01.json index 09851c1956..bc0cef30b3 100644 --- a/common/changes/@cadl-lang/compiler/commentBranch_2022-07-12-06-50.json +++ b/common/changes/@cadl-lang/compiler/formatter-decorator-comments_2022-08-11-15-01.json @@ -2,7 +2,7 @@ "changes": [ { "packageName": "@cadl-lang/compiler", - "comment": "combine consecutive single line comments that are separated by whitespace", + "comment": "Formatter: Comments in between decorators will stay between the decorators when formatting.", "type": "minor" } ], diff --git a/common/changes/@cadl-lang/compiler/implicit-request-body_2022-07-19-15-47.json b/common/changes/@cadl-lang/compiler/implicit-request-body_2022-07-19-15-47.json deleted file mode 100644 index f58e811df6..0000000000 --- a/common/changes/@cadl-lang/compiler/implicit-request-body_2022-07-19-15-47.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/compiler", - "comment": "Fix null reference in getTypeName API when called on anonymous models without a backing syntax node", - "type": "patch" - } - ], - "packageName": "@cadl-lang/compiler" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/compiler/multi-reporter_2022-07-18-19-46.json b/common/changes/@cadl-lang/compiler/multi-reporter_2022-07-18-19-46.json deleted file mode 100644 index 4d4df9f71b..0000000000 --- a/common/changes/@cadl-lang/compiler/multi-reporter_2022-07-18-19-46.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/compiler", - "comment": "", - "type": "none" - } - ], - "packageName": "@cadl-lang/compiler" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/compiler/investigate-test-fail_2022-07-12-16-42.json b/common/changes/@cadl-lang/compiler/nguerrera-patch-1_2022-08-15-15-23.json similarity index 100% rename from common/changes/@cadl-lang/compiler/investigate-test-fail_2022-07-12-16-42.json rename to common/changes/@cadl-lang/compiler/nguerrera-patch-1_2022-08-15-15-23.json diff --git a/common/changes/@cadl-lang/compiler/commentsFoldingRanges_2022-07-08-14-30.json b/common/changes/@cadl-lang/compiler/remove-eval-cadl_2022-08-15-17-24.json similarity index 66% rename from common/changes/@cadl-lang/compiler/commentsFoldingRanges_2022-07-08-14-30.json rename to common/changes/@cadl-lang/compiler/remove-eval-cadl_2022-08-15-17-24.json index 13808c38c5..46f233c01c 100644 --- a/common/changes/@cadl-lang/compiler/commentsFoldingRanges_2022-07-08-14-30.json +++ b/common/changes/@cadl-lang/compiler/remove-eval-cadl_2022-08-15-17-24.json @@ -2,7 +2,7 @@ "changes": [ { "packageName": "@cadl-lang/compiler", - "comment": "implemented folding for comments", + "comment": "Internal: Remove `evalCadlScript` from `Program`", "type": "minor" } ], diff --git a/common/changes/@cadl-lang/compiler/operation-id-better_2022-07-14-16-51.json b/common/changes/@cadl-lang/compiler/remove-type-suffix_2022-08-16-16-19.json similarity index 63% rename from common/changes/@cadl-lang/compiler/operation-id-better_2022-07-14-16-51.json rename to common/changes/@cadl-lang/compiler/remove-type-suffix_2022-08-16-16-19.json index e0b030e6e0..49239bb18c 100644 --- a/common/changes/@cadl-lang/compiler/operation-id-better_2022-07-14-16-51.json +++ b/common/changes/@cadl-lang/compiler/remove-type-suffix_2022-08-16-16-19.json @@ -2,7 +2,7 @@ "changes": [ { "packageName": "@cadl-lang/compiler", - "comment": "Added ability for decorator validator to accept any type", + "comment": "Remove Type suffix from most Types and deprecate old names", "type": "minor" } ], diff --git a/common/changes/@cadl-lang/compiler/skip-resolution-with-server-path_2022-07-19-18-27.json b/common/changes/@cadl-lang/compiler/skip-resolution-with-server-path_2022-07-19-18-27.json deleted file mode 100644 index 75353aae84..0000000000 --- a/common/changes/@cadl-lang/compiler/skip-resolution-with-server-path_2022-07-19-18-27.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/compiler", - "comment": "Providing `cadl.cadl-server.path` option will force the specified compiler to be used", - "type": "patch" - } - ], - "packageName": "@cadl-lang/compiler" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/eslint-config-cadl/consistent-filenames_2022-06-13-23-28.json b/common/changes/@cadl-lang/eslint-config-cadl/consistent-filenames_2022-06-13-23-28.json deleted file mode 100644 index 9120f0fbb3..0000000000 --- a/common/changes/@cadl-lang/eslint-config-cadl/consistent-filenames_2022-06-13-23-28.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/eslint-config-cadl", - "comment": "", - "type": "none" - } - ], - "packageName": "@cadl-lang/eslint-config-cadl" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/eslint-config-cadl/eslint-mocha_2022-07-13-15-32.json b/common/changes/@cadl-lang/eslint-config-cadl/formatter-decorator-comments_2022-08-11-15-11.json similarity index 55% rename from common/changes/@cadl-lang/eslint-config-cadl/eslint-mocha_2022-07-13-15-32.json rename to common/changes/@cadl-lang/eslint-config-cadl/formatter-decorator-comments_2022-08-11-15-11.json index 81fc22c5bf..c9fbd86e89 100644 --- a/common/changes/@cadl-lang/eslint-config-cadl/eslint-mocha_2022-07-13-15-32.json +++ b/common/changes/@cadl-lang/eslint-config-cadl/formatter-decorator-comments_2022-08-11-15-11.json @@ -2,8 +2,8 @@ "changes": [ { "packageName": "@cadl-lang/eslint-config-cadl", - "comment": "Add eslint-plugin-mocha", - "type": "minor" + "comment": "Add warning when using `.only` to remmeber to remove before pushing", + "type": "patch" } ], "packageName": "@cadl-lang/eslint-config-cadl" diff --git a/common/changes/@cadl-lang/eslint-config-cadl/symbol-descriptions_2022-04-01-22-20.json b/common/changes/@cadl-lang/eslint-config-cadl/symbol-descriptions_2022-04-01-22-20.json deleted file mode 100644 index 9120f0fbb3..0000000000 --- a/common/changes/@cadl-lang/eslint-config-cadl/symbol-descriptions_2022-04-01-22-20.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/eslint-config-cadl", - "comment": "", - "type": "none" - } - ], - "packageName": "@cadl-lang/eslint-config-cadl" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/eslint-config-cadl/upgrade-ts-4.6_2022-04-08-20-39.json b/common/changes/@cadl-lang/eslint-config-cadl/upgrade-ts-4.6_2022-04-08-20-39.json deleted file mode 100644 index 9120f0fbb3..0000000000 --- a/common/changes/@cadl-lang/eslint-config-cadl/upgrade-ts-4.6_2022-04-08-20-39.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/eslint-config-cadl", - "comment": "", - "type": "none" - } - ], - "packageName": "@cadl-lang/eslint-config-cadl" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/eslint-config-cadl/upgrade-ts-4.7_2022-05-25-16-21.json b/common/changes/@cadl-lang/eslint-config-cadl/upgrade-ts-4.7_2022-05-25-16-21.json deleted file mode 100644 index 59321febef..0000000000 --- a/common/changes/@cadl-lang/eslint-config-cadl/upgrade-ts-4.7_2022-05-25-16-21.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/eslint-config-cadl", - "comment": "Upgrade to TS4.7", - "type": "none" - } - ], - "packageName": "@cadl-lang/eslint-config-cadl" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/eslint-plugin/consistent-filenames_2022-06-13-23-28.json b/common/changes/@cadl-lang/eslint-plugin/consistent-filenames_2022-06-13-23-28.json deleted file mode 100644 index 11c6613daa..0000000000 --- a/common/changes/@cadl-lang/eslint-plugin/consistent-filenames_2022-06-13-23-28.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/eslint-plugin", - "comment": "", - "type": "none" - } - ], - "packageName": "@cadl-lang/eslint-plugin" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/eslint-plugin/investigate-test-fail_2022-07-12-16-42.json b/common/changes/@cadl-lang/eslint-plugin/investigate-test-fail_2022-07-12-16-42.json deleted file mode 100644 index 11c6613daa..0000000000 --- a/common/changes/@cadl-lang/eslint-plugin/investigate-test-fail_2022-07-12-16-42.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/eslint-plugin", - "comment": "", - "type": "none" - } - ], - "packageName": "@cadl-lang/eslint-plugin" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/eslint-plugin/multi-reporter_2022-07-18-19-46.json b/common/changes/@cadl-lang/eslint-plugin/multi-reporter_2022-07-18-19-46.json deleted file mode 100644 index 11c6613daa..0000000000 --- a/common/changes/@cadl-lang/eslint-plugin/multi-reporter_2022-07-18-19-46.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/eslint-plugin", - "comment": "", - "type": "none" - } - ], - "packageName": "@cadl-lang/eslint-plugin" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/html-program-viewer/investigate-test-fail_2022-07-12-16-42.json b/common/changes/@cadl-lang/html-program-viewer/investigate-test-fail_2022-07-12-16-42.json deleted file mode 100644 index 26db64b8d9..0000000000 --- a/common/changes/@cadl-lang/html-program-viewer/investigate-test-fail_2022-07-12-16-42.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/html-program-viewer", - "comment": "", - "type": "none" - } - ], - "packageName": "@cadl-lang/html-program-viewer" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/html-program-viewer/multi-reporter_2022-07-18-19-46.json b/common/changes/@cadl-lang/html-program-viewer/remove-type-suffix_2022-08-16-16-19.json similarity index 66% rename from common/changes/@cadl-lang/html-program-viewer/multi-reporter_2022-07-18-19-46.json rename to common/changes/@cadl-lang/html-program-viewer/remove-type-suffix_2022-08-16-16-19.json index 26db64b8d9..959387ea9b 100644 --- a/common/changes/@cadl-lang/html-program-viewer/multi-reporter_2022-07-18-19-46.json +++ b/common/changes/@cadl-lang/html-program-viewer/remove-type-suffix_2022-08-16-16-19.json @@ -2,8 +2,8 @@ "changes": [ { "packageName": "@cadl-lang/html-program-viewer", - "comment": "", - "type": "none" + "comment": "React to Type suffix removal", + "type": "minor" } ], "packageName": "@cadl-lang/html-program-viewer" diff --git a/common/changes/@cadl-lang/internal-build-utils/consistent-filenames_2022-06-13-23-28.json b/common/changes/@cadl-lang/internal-build-utils/consistent-filenames_2022-06-13-23-28.json deleted file mode 100644 index cac8356922..0000000000 --- a/common/changes/@cadl-lang/internal-build-utils/consistent-filenames_2022-06-13-23-28.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/internal-build-utils", - "comment": "", - "type": "none" - } - ], - "packageName": "@cadl-lang/internal-build-utils" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/internal-build-utils/investigate-test-fail_2022-07-12-16-42.json b/common/changes/@cadl-lang/internal-build-utils/investigate-test-fail_2022-07-12-16-42.json deleted file mode 100644 index cac8356922..0000000000 --- a/common/changes/@cadl-lang/internal-build-utils/investigate-test-fail_2022-07-12-16-42.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/internal-build-utils", - "comment": "", - "type": "none" - } - ], - "packageName": "@cadl-lang/internal-build-utils" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/internal-build-utils/multi-reporter_2022-07-18-19-46.json b/common/changes/@cadl-lang/internal-build-utils/multi-reporter_2022-07-18-19-46.json deleted file mode 100644 index cac8356922..0000000000 --- a/common/changes/@cadl-lang/internal-build-utils/multi-reporter_2022-07-18-19-46.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/internal-build-utils", - "comment": "", - "type": "none" - } - ], - "packageName": "@cadl-lang/internal-build-utils" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/library-linter/investigate-test-fail_2022-07-12-16-42.json b/common/changes/@cadl-lang/library-linter/investigate-test-fail_2022-07-12-16-42.json deleted file mode 100644 index efae102ee1..0000000000 --- a/common/changes/@cadl-lang/library-linter/investigate-test-fail_2022-07-12-16-42.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/library-linter", - "comment": "", - "type": "none" - } - ], - "packageName": "@cadl-lang/library-linter" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/library-linter/multi-reporter_2022-07-18-19-46.json b/common/changes/@cadl-lang/library-linter/remove-type-suffix_2022-08-16-16-19.json similarity index 64% rename from common/changes/@cadl-lang/library-linter/multi-reporter_2022-07-18-19-46.json rename to common/changes/@cadl-lang/library-linter/remove-type-suffix_2022-08-16-16-19.json index efae102ee1..fee2e51911 100644 --- a/common/changes/@cadl-lang/library-linter/multi-reporter_2022-07-18-19-46.json +++ b/common/changes/@cadl-lang/library-linter/remove-type-suffix_2022-08-16-16-19.json @@ -2,8 +2,8 @@ "changes": [ { "packageName": "@cadl-lang/library-linter", - "comment": "", - "type": "none" + "comment": "React to Type suffix removal", + "type": "minor" } ], "packageName": "@cadl-lang/library-linter" diff --git a/common/changes/@cadl-lang/openapi/investigate-test-fail_2022-07-12-16-42.json b/common/changes/@cadl-lang/openapi/investigate-test-fail_2022-07-12-16-42.json deleted file mode 100644 index 05bce127e5..0000000000 --- a/common/changes/@cadl-lang/openapi/investigate-test-fail_2022-07-12-16-42.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/openapi", - "comment": "", - "type": "none" - } - ], - "packageName": "@cadl-lang/openapi" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/openapi/multi-reporter_2022-07-18-19-46.json b/common/changes/@cadl-lang/openapi/multi-reporter_2022-07-18-19-46.json deleted file mode 100644 index 05bce127e5..0000000000 --- a/common/changes/@cadl-lang/openapi/multi-reporter_2022-07-18-19-46.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/openapi", - "comment": "", - "type": "none" - } - ], - "packageName": "@cadl-lang/openapi" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/openapi/operation-id-better_2022-07-14-16-51.json b/common/changes/@cadl-lang/openapi/remove-type-suffix_2022-08-16-16-19.json similarity index 70% rename from common/changes/@cadl-lang/openapi/operation-id-better_2022-07-14-16-51.json rename to common/changes/@cadl-lang/openapi/remove-type-suffix_2022-08-16-16-19.json index 52e65f38d5..35d20a7fae 100644 --- a/common/changes/@cadl-lang/openapi/operation-id-better_2022-07-14-16-51.json +++ b/common/changes/@cadl-lang/openapi/remove-type-suffix_2022-08-16-16-19.json @@ -2,7 +2,7 @@ "changes": [ { "packageName": "@cadl-lang/openapi", - "comment": "Added helper to resolve operation id", + "comment": "React to Type suffix removal", "type": "minor" } ], diff --git a/common/changes/@cadl-lang/openapi3/investigate-test-fail_2022-07-12-16-42.json b/common/changes/@cadl-lang/openapi3/investigate-test-fail_2022-07-12-16-42.json deleted file mode 100644 index d2cfff98b9..0000000000 --- a/common/changes/@cadl-lang/openapi3/investigate-test-fail_2022-07-12-16-42.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/openapi3", - "comment": "", - "type": "none" - } - ], - "packageName": "@cadl-lang/openapi3" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/openapi3/multi-reporter_2022-07-18-19-46.json b/common/changes/@cadl-lang/openapi3/multi-reporter_2022-07-18-19-46.json deleted file mode 100644 index d2cfff98b9..0000000000 --- a/common/changes/@cadl-lang/openapi3/multi-reporter_2022-07-18-19-46.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/openapi3", - "comment": "", - "type": "none" - } - ], - "packageName": "@cadl-lang/openapi3" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/openapi3/operation-id-better_2022-07-14-16-51.json b/common/changes/@cadl-lang/openapi3/operation-id-better_2022-07-14-16-51.json deleted file mode 100644 index afbf6bb69e..0000000000 --- a/common/changes/@cadl-lang/openapi3/operation-id-better_2022-07-14-16-51.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/openapi3", - "comment": "Uptake new `resolveOperationId` helper from openapi library improving the logic", - "type": "minor" - } - ], - "packageName": "@cadl-lang/openapi3" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/openapi3/implicit-request-body_2022-07-18-18-11.json b/common/changes/@cadl-lang/openapi3/remove-type-suffix_2022-08-16-16-19.json similarity index 65% rename from common/changes/@cadl-lang/openapi3/implicit-request-body_2022-07-18-18-11.json rename to common/changes/@cadl-lang/openapi3/remove-type-suffix_2022-08-16-16-19.json index 1b17e8b8cc..cd6e4c775f 100644 --- a/common/changes/@cadl-lang/openapi3/implicit-request-body_2022-07-18-18-11.json +++ b/common/changes/@cadl-lang/openapi3/remove-type-suffix_2022-08-16-16-19.json @@ -2,7 +2,7 @@ "changes": [ { "packageName": "@cadl-lang/openapi3", - "comment": "Support set of unannotated parameters as request body", + "comment": "React to Type suffix removal", "type": "minor" } ], diff --git a/common/changes/@cadl-lang/prettier-plugin-cadl/investigate-test-fail_2022-07-12-16-42.json b/common/changes/@cadl-lang/prettier-plugin-cadl/investigate-test-fail_2022-07-12-16-42.json deleted file mode 100644 index b89283c299..0000000000 --- a/common/changes/@cadl-lang/prettier-plugin-cadl/investigate-test-fail_2022-07-12-16-42.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/prettier-plugin-cadl", - "comment": "", - "type": "none" - } - ], - "packageName": "@cadl-lang/prettier-plugin-cadl" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/prettier-plugin-cadl/multi-reporter_2022-07-18-19-46.json b/common/changes/@cadl-lang/prettier-plugin-cadl/multi-reporter_2022-07-18-19-46.json deleted file mode 100644 index b89283c299..0000000000 --- a/common/changes/@cadl-lang/prettier-plugin-cadl/multi-reporter_2022-07-18-19-46.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/prettier-plugin-cadl", - "comment": "", - "type": "none" - } - ], - "packageName": "@cadl-lang/prettier-plugin-cadl" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/rest/fix-clone-type_2022-07-14-13-05.json b/common/changes/@cadl-lang/rest/fix-clone-type_2022-07-14-13-05.json deleted file mode 100644 index 45216f6a3f..0000000000 --- a/common/changes/@cadl-lang/rest/fix-clone-type_2022-07-14-13-05.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/rest", - "comment": "Improve `cloneKeyProperties` implementation so that original model type is not affected", - "type": "patch" - } - ], - "packageName": "@cadl-lang/rest" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/rest/fix-clone-type_2022-07-19-15-33.json b/common/changes/@cadl-lang/rest/fix-clone-type_2022-07-19-15-33.json deleted file mode 100644 index 971a0345d6..0000000000 --- a/common/changes/@cadl-lang/rest/fix-clone-type_2022-07-19-15-33.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/rest", - "comment": "Update resource operation interfaces to configure Create and Update model properties correctly", - "type": "minor" - } - ], - "packageName": "@cadl-lang/rest" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/rest/implicit-request-body_2022-07-18-18-11.json b/common/changes/@cadl-lang/rest/implicit-request-body_2022-07-18-18-11.json deleted file mode 100644 index bd6bb0b6ad..0000000000 --- a/common/changes/@cadl-lang/rest/implicit-request-body_2022-07-18-18-11.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/rest", - "comment": "Support set of unannotated parameters as request body", - "type": "minor" - } - ], - "packageName": "@cadl-lang/rest" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/rest/investigate-test-fail_2022-07-12-16-42.json b/common/changes/@cadl-lang/rest/investigate-test-fail_2022-07-12-16-42.json deleted file mode 100644 index 601b07abb6..0000000000 --- a/common/changes/@cadl-lang/rest/investigate-test-fail_2022-07-12-16-42.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/rest", - "comment": "", - "type": "none" - } - ], - "packageName": "@cadl-lang/rest" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/rest/key-path-param-required_2022-07-20-12-34.json b/common/changes/@cadl-lang/rest/key-path-param-required_2022-07-20-12-34.json deleted file mode 100644 index 5565ecb4f5..0000000000 --- a/common/changes/@cadl-lang/rest/key-path-param-required_2022-07-20-12-34.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/rest", - "comment": "Ensure that all @key properties turned into @path parameters by KeysOf are required even if the original is optional", - "type": "patch" - } - ], - "packageName": "@cadl-lang/rest" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/rest/multi-reporter_2022-07-18-19-46.json b/common/changes/@cadl-lang/rest/multi-reporter_2022-07-18-19-46.json deleted file mode 100644 index 601b07abb6..0000000000 --- a/common/changes/@cadl-lang/rest/multi-reporter_2022-07-18-19-46.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/rest", - "comment": "", - "type": "none" - } - ], - "packageName": "@cadl-lang/rest" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/rest/optional-path-param-error_2022-07-08-20-29.json b/common/changes/@cadl-lang/rest/optional-path-param-error_2022-07-08-20-29.json deleted file mode 100644 index 6d017a8a27..0000000000 --- a/common/changes/@cadl-lang/rest/optional-path-param-error_2022-07-08-20-29.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/rest", - "comment": "Emit diagnostic when defining @path property that is optional without a default value", - "type": "minor" - } - ], - "packageName": "@cadl-lang/rest" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/rest/operation-id-better_2022-07-14-17-06.json b/common/changes/@cadl-lang/rest/remove-type-suffix_2022-08-16-16-19.json similarity index 67% rename from common/changes/@cadl-lang/rest/operation-id-better_2022-07-14-17-06.json rename to common/changes/@cadl-lang/rest/remove-type-suffix_2022-08-16-16-19.json index 97afcb5789..4eeb80fd67 100644 --- a/common/changes/@cadl-lang/rest/operation-id-better_2022-07-14-17-06.json +++ b/common/changes/@cadl-lang/rest/remove-type-suffix_2022-08-16-16-19.json @@ -2,7 +2,7 @@ "changes": [ { "packageName": "@cadl-lang/rest", - "comment": "Remove `groupName` from `OperationDetails`", + "comment": "React to Type suffix removal", "type": "minor" } ], diff --git a/common/changes/@cadl-lang/versioning/multi-reporter_2022-07-18-19-46.json b/common/changes/@cadl-lang/versioning/multi-reporter_2022-07-18-19-46.json deleted file mode 100644 index b925a7f965..0000000000 --- a/common/changes/@cadl-lang/versioning/multi-reporter_2022-07-18-19-46.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@cadl-lang/versioning", - "comment": "", - "type": "none" - } - ], - "packageName": "@cadl-lang/versioning" -} \ No newline at end of file diff --git a/common/changes/@cadl-lang/versioning/investigate-test-fail_2022-07-12-16-42.json b/common/changes/@cadl-lang/versioning/remove-type-suffix_2022-08-16-16-19.json similarity index 63% rename from common/changes/@cadl-lang/versioning/investigate-test-fail_2022-07-12-16-42.json rename to common/changes/@cadl-lang/versioning/remove-type-suffix_2022-08-16-16-19.json index b925a7f965..d29f06f91d 100644 --- a/common/changes/@cadl-lang/versioning/investigate-test-fail_2022-07-12-16-42.json +++ b/common/changes/@cadl-lang/versioning/remove-type-suffix_2022-08-16-16-19.json @@ -2,8 +2,8 @@ "changes": [ { "packageName": "@cadl-lang/versioning", - "comment": "", - "type": "none" + "comment": "React to Type suffix removal", + "type": "minor" } ], "packageName": "@cadl-lang/versioning" diff --git a/common/changes/cadl-vs/fix-vs2019-build_2022-06-13-22-32.json b/common/changes/cadl-vs/fix-vs2019-build_2022-06-13-22-32.json deleted file mode 100644 index a4cdce0da0..0000000000 --- a/common/changes/cadl-vs/fix-vs2019-build_2022-06-13-22-32.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "cadl-vs", - "comment": "", - "type": "none" - } - ], - "packageName": "cadl-vs" -} \ No newline at end of file diff --git a/common/changes/cadl-vs/skip-resolution-with-server-path_2022-07-19-18-27.json b/common/changes/cadl-vs/skip-resolution-with-server-path_2022-07-19-18-27.json deleted file mode 100644 index b01483e04e..0000000000 --- a/common/changes/cadl-vs/skip-resolution-with-server-path_2022-07-19-18-27.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "cadl-vs", - "comment": "Providing `cadl.cadl-server.path` option will force the specified compiler to be used", - "type": "patch" - } - ], - "packageName": "cadl-vs" -} \ No newline at end of file diff --git a/common/changes/cadl-vscode/investigate-test-fail_2022-07-12-16-42.json b/common/changes/cadl-vscode/investigate-test-fail_2022-07-12-16-42.json deleted file mode 100644 index bc1c3e2f36..0000000000 --- a/common/changes/cadl-vscode/investigate-test-fail_2022-07-12-16-42.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "cadl-vscode", - "comment": "", - "type": "none" - } - ], - "packageName": "cadl-vscode" -} \ No newline at end of file diff --git a/common/changes/cadl-vscode/multi-reporter_2022-07-18-19-46.json b/common/changes/cadl-vscode/multi-reporter_2022-07-18-19-46.json deleted file mode 100644 index bc1c3e2f36..0000000000 --- a/common/changes/cadl-vscode/multi-reporter_2022-07-18-19-46.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "cadl-vscode", - "comment": "", - "type": "none" - } - ], - "packageName": "cadl-vscode" -} \ No newline at end of file diff --git a/common/changes/cadl-vscode/skip-resolution-with-server-path_2022-07-19-18-27.json b/common/changes/cadl-vscode/skip-resolution-with-server-path_2022-07-19-18-27.json deleted file mode 100644 index e1d5613ea1..0000000000 --- a/common/changes/cadl-vscode/skip-resolution-with-server-path_2022-07-19-18-27.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "cadl-vscode", - "comment": "Providing `cadl.cadl-server.path` option will force the specified compiler to be used", - "type": "patch" - } - ], - "packageName": "cadl-vscode" -} \ No newline at end of file diff --git a/common/changes/tmlanguage-generator/upgrade-ts-4.7_2022-05-25-16-21.json b/common/changes/tmlanguage-generator/upgrade-ts-4.7_2022-05-25-16-21.json deleted file mode 100644 index 4f38fd3b3a..0000000000 --- a/common/changes/tmlanguage-generator/upgrade-ts-4.7_2022-05-25-16-21.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "tmlanguage-generator", - "comment": "Upgrade to TS4.7", - "type": "none" - } - ], - "packageName": "tmlanguage-generator" -} \ No newline at end of file diff --git a/docs/cadl-for-openapi-dev.md b/docs/cadl-for-openapi-dev.md index 9084062e14..b0714c92d5 100644 --- a/docs/cadl-for-openapi-dev.md +++ b/docs/cadl-for-openapi-dev.md @@ -181,17 +181,17 @@ The responses object maps a HTTP response code to the expected response. In Cadl, operation responses are defined by the return types of the `op`. The status code for a response can be specified as a property in the return type with the `@statusCode` decorator (the property name is ignored). The Cadl.Http package also defines several standard response types: -| OpenAPI response | Cadl construct | Notes | -| ---------------- | ---------------------- | ------------------------------------ | -| `200` | `OkResponse` | `T` specifies the response body type | -| `201` | `CreatedResponse` | Probably should have `T` parameter | -| `202` | `AcceptedResponse` | | -| `204` | `NoContentResponse` | | -| `301` | `MovedResponse` | | -| `304` | `NotModifiedResponse` | | -| `401` | `UnauthorizedResponse` | | -| `404` | `NotFoundResponse` | | -| `409` | `ConflictResponse` | | +| OpenAPI response | Cadl construct | +| ---------------- | ---------------------- | +| `200` | `OkResponse` | +| `201` | `CreatedResponse` | +| `202` | `AcceptedResponse` | +| `204` | `NoContentResponse` | +| `301` | `MovedResponse` | +| `304` | `NotModifiedResponse` | +| `401` | `UnauthorizedResponse` | +| `404` | `NotFoundResponse` | +| `409` | `ConflictResponse` | If a return type does not contain a `statusCode`, it is assumed to be the `200` response. diff --git a/docs/release/release-2022-08-10.md b/docs/release/release-2022-08-10.md new file mode 100644 index 0000000000..6e7bbbd6e7 --- /dev/null +++ b/docs/release/release-2022-08-10.md @@ -0,0 +1,304 @@ +# Release Notes August 2022 (2022-08-10) + +This release contains **breaking changes** + +- Operation parameters without decorators +- OkResponse is no longer a template +- Route resolution changes +- Remove `Map` type +- `@path` may not decorate optional properties or parameters without a default value + +## Operation parameters without decorators + +A single undecorated (not marked `@query`, `@header`, `@body` or `@path`) operation parameter will now become a property of the request body rather than have its type define the request body. This allows defining the body with multiple unannotated parameters, which can include unannotated properties that are spread into parameters. (Previously, more than one unannotated parameter was an error.) + +For example, the following used to define a request body of type `string`, but now defines a request body that is an object with a property named `body` of type string. + +```cadl +op create(body: string): void; + +``` + +To get the previous behavior, the parameter now needs to be explicitly marked with `@body`: + +```cadl +op create(@body body: string): void; + +``` + +## OkResponse is no longer a template + +Previously, OkResponse took an argument for the body type. Now it is a simple model like the other XxxResponse types. Alone, it implies a status code of 200 with no body. + +Since 200 is the default status code for non-empty bodies, you can usually replace `OkResponse` with simply `T`. + +```cadl +op get(id: string): OkResponse; + +``` + +Can be: + +```cadl +op get(id: string): Pet; + +``` + +In certain situations where the body type is not (necessarily) a model, you will need to use the new `Body` type. For example. + +```cadl +op list(): OkResponse; + +``` + +Can become: + +```cadl +op list(): OkResponse & Body; + +``` + +Since 200 status code is used by default, this could also be: + +```cadl +op list(): Pet[]; + +``` + +Generic models based on `OkResponse` may also require `Body`. For example: + +```cadl +model MyResponse { + ...OkResponse; + @header example: string; +} + +``` + +Since T is not constrainted to be a model, it might be an intrinsic type, an array, or the like, the template should be changed to use `Body`: + +```cadl +model MyResponse { + ...OkResponse; + ...Body; + @header example: string; +} + +``` + +In general, the prior `OkResponse` is equivalent to `OkResponse & Body` now or, equivalently, `{ ...OkResponse, ...Body }`. In practice there are many situations where you can leave out OkResponse altogether and use plain `T` rather than `Body`. + +See also https://github.com/microsoft/cadl/blob/main/docs/tutorial.md#request--response-bodies + +## Route resolution changes + +Resolving operation routes now follows the following logic: + +- if there is a service namespace specified + - only emit the operations and interfaces under that namespace(recursively) +- if not: + - only emit the operations and interfaces defined at the root (DO NOT look into namespaces) + +### Action if applicable + +- If a cadl spec used a service namespace without `@serviceTitle` add the `@serviceTitle` decorator to the service namespace, otherwise no routes will be emitted. +- If a cadl spec contains service namespaces that are not child namespaces of the service namespace, move these namespaces under the service namespace. + +### Cases + +#### Operation at the root + +```cadl +op test(): void; + +``` + +✅ Stay the same + +| Before | After | +| ------- | ------- | +| `["/"]` | `["/"]` | + +#### Operation in namespace (not service namespace) + +```cadl +namespace DemoService; + +op test(): void; + +``` + +⚠️ Output stays the same but add warning that no routes are emitted + +| Before | After | +| ------ | ----- | +| `[]` | `[]` | + +#### Operation in namespace (not service namespace) with @route + +```cadl +namespace DemoService; + +@route("/") +op test(): void; + +``` + +⚠️ Now the same as previous case, no routes emitted and emit warning + +| Before | After | +| ------- | ----- | +| `["/"]` | `[]` | + +##### Resolve by adding the `@serviceTitle` decorator + +Add `@serviceTitle` to the namespace + +```cadl +@serviceTitle("DemoService") +namespace DemoService; + +@route("/") +op test(): void; + +``` + +#### Operation in service namespace + +```cadl +@serviceTitle("My Service") +namespace Foo; + +op test(): void; + +``` + +✅ Stay the same + +| Before | After | +| ------- | ------- | +| `["/"]` | `["/"]` | + +#### Operation in namespaces other than the service namespace + +```cadl +import "@cadl-lang/rest"; + +using Cadl.Http; + +@serviceTitle("My Service") +namespace Foo { + @route("in-service") + op test(): void; +} + +namespace MyLib { + @route("my-lib") + op test(): void; +} + +``` + +⚠️ Other namespace routes are not included anymore + +| Before | After | +| --------------------------- | ----------------- | +| `["/in-service", "my-lib"]` | `["/in-service"]` | + +##### Resolve by making additional namespaces children of the service namespace + +Make any added namespaces children of the service namespace + +```cadl +import "@cadl-lang/rest"; + +using Cadl.Http; + +@serviceTitle("My Service") +namespace Foo { + @route("in-service") + op test(): void; +} + +namespace Foo.MyLib { + @route("my-lib") + op test(): void; +} + +``` + +## Remove Map type + +`Map` type was removed. Usages of `Map` can be replaced with new type `Record`. Other usages of `Map` may be replaced with `object`. + +### Map using string key type + +```cadl +model Foo { + options: Map; +} + +``` + +#### Replace with `Record` + +```cadl +model Foo { + options: Record; +} + +``` + +### Map using non-string key type + +```cadl +model Foo { + options: Map; +} + +``` + +#### Replace with `object` + +```cadl +model Foo { + options: object; +} + +``` + +## `@path` may not decorate optional properties or parameters without a default + +Properties and parameters marked with the `@path` decorator should be required, but may be optional if they have a default value + +### optional path parameters + +```cadl +model Foo { + @path + name?: string; +} + +``` + +Was a bad practice, but was allowed in previous versions. This will now throw an error diagnostic. + +### Resolve by making the property required + +```cadl +model Foo { + @path + name: string; +} + +``` + +### Resolve by adding a default value + +```cadl +model Foo { + @path + name?: string = "singleton"; +} + +``` diff --git a/docs/spec.html b/docs/spec.html index f73fc4773b..573a620d3f 100644 --- a/docs/spec.html +++ b/docs/spec.html @@ -1255,7 +1255,7 @@ }); let sdoMap = JSON.parse(`{}`); -let biblio = JSON.parse(`{"refsByClause":{"lexical-grammar":["_ref_0","_ref_1","_ref_2","_ref_3","_ref_4","_ref_5","_ref_6","_ref_7","_ref_8","_ref_9","_ref_10","_ref_11","_ref_12","_ref_13","_ref_14","_ref_15","_ref_16","_ref_17","_ref_18","_ref_19","_ref_20","_ref_21","_ref_22","_ref_23","_ref_24","_ref_25","_ref_26","_ref_27","_ref_28","_ref_29","_ref_30","_ref_31","_ref_32","_ref_33","_ref_34","_ref_35","_ref_36","_ref_37","_ref_38","_ref_39","_ref_40","_ref_41","_ref_42","_ref_43","_ref_44","_ref_45","_ref_46","_ref_47","_ref_48","_ref_49","_ref_50","_ref_51","_ref_52","_ref_53","_ref_54","_ref_55","_ref_56","_ref_57","_ref_58","_ref_59","_ref_60","_ref_61","_ref_62","_ref_63","_ref_64","_ref_65","_ref_66","_ref_67","_ref_68","_ref_69"],"syntactic-grammar":["_ref_70","_ref_71","_ref_72","_ref_73","_ref_74","_ref_75","_ref_76","_ref_77","_ref_78","_ref_79","_ref_80","_ref_81","_ref_82","_ref_83","_ref_84","_ref_85","_ref_86","_ref_87","_ref_88","_ref_89","_ref_90","_ref_91","_ref_92","_ref_93","_ref_94","_ref_95","_ref_96","_ref_97","_ref_98","_ref_99","_ref_100","_ref_101","_ref_102","_ref_103","_ref_104","_ref_105","_ref_106","_ref_107","_ref_108","_ref_109","_ref_110","_ref_111","_ref_112","_ref_113","_ref_114","_ref_115","_ref_116","_ref_117","_ref_118","_ref_119","_ref_120","_ref_121","_ref_122","_ref_123","_ref_124","_ref_125","_ref_126","_ref_127","_ref_128","_ref_129","_ref_130","_ref_131","_ref_132","_ref_133","_ref_134","_ref_135","_ref_136","_ref_137","_ref_138","_ref_139","_ref_140","_ref_141","_ref_142","_ref_143","_ref_144","_ref_145","_ref_146","_ref_147","_ref_148","_ref_149","_ref_150","_ref_151","_ref_152","_ref_153","_ref_154","_ref_155","_ref_156","_ref_157","_ref_158","_ref_159","_ref_160","_ref_161","_ref_162","_ref_163","_ref_164","_ref_165","_ref_166","_ref_167","_ref_168","_ref_169","_ref_170","_ref_171","_ref_172","_ref_173","_ref_174","_ref_175","_ref_176","_ref_177","_ref_178","_ref_179","_ref_180","_ref_181","_ref_182","_ref_183","_ref_184","_ref_185","_ref_186","_ref_187","_ref_188","_ref_189","_ref_190","_ref_191","_ref_192","_ref_193","_ref_194","_ref_195","_ref_196","_ref_197","_ref_198","_ref_199","_ref_200","_ref_201","_ref_202","_ref_203","_ref_204","_ref_205","_ref_206","_ref_207","_ref_208","_ref_209","_ref_210","_ref_211","_ref_212","_ref_213","_ref_214","_ref_215","_ref_216","_ref_217","_ref_218","_ref_219","_ref_220","_ref_221","_ref_222","_ref_223","_ref_224","_ref_225","_ref_226","_ref_227","_ref_228","_ref_229","_ref_230","_ref_231","_ref_232","_ref_233","_ref_234","_ref_235","_ref_236","_ref_237","_ref_238","_ref_239","_ref_240","_ref_241","_ref_242","_ref_243","_ref_244","_ref_245","_ref_246","_ref_247","_ref_248","_ref_249","_ref_250","_ref_251","_ref_252","_ref_253","_ref_254","_ref_255","_ref_256","_ref_257","_ref_258","_ref_259","_ref_260","_ref_261","_ref_262","_ref_263","_ref_264","_ref_265","_ref_266","_ref_267","_ref_268","_ref_269","_ref_270","_ref_271","_ref_272","_ref_273","_ref_274","_ref_275","_ref_276","_ref_277","_ref_278","_ref_279","_ref_280","_ref_281","_ref_282","_ref_283","_ref_284","_ref_285","_ref_286","_ref_287","_ref_288","_ref_289","_ref_290","_ref_291","_ref_292","_ref_293","_ref_294","_ref_295","_ref_296","_ref_297","_ref_298","_ref_299","_ref_300","_ref_301","_ref_302","_ref_303","_ref_304","_ref_305","_ref_306","_ref_307","_ref_308","_ref_309","_ref_310","_ref_311","_ref_312","_ref_313","_ref_314"]},"entries":[{"type":"clause","id":"intro","titleHTML":"Introduction","number":""},{"type":"production","id":"prod-SourceCharacter","name":"SourceCharacter","referencingIds":["_ref_49","_ref_53","_ref_64","_ref_65","_ref_69"]},{"type":"production","id":"prod-InputElement","name":"InputElement"},{"type":"production","id":"prod-Token","name":"Token","referencingIds":["_ref_0"]},{"type":"production","id":"prod-Trivia","name":"Trivia","referencingIds":["_ref_1"]},{"type":"production","id":"prod-Keyword","name":"Keyword","referencingIds":["_ref_2","_ref_11"]},{"type":"production","id":"prod-Identifier","name":"Identifier","referencingIds":["_ref_3","_ref_89","_ref_92","_ref_108","_ref_114","_ref_121","_ref_124","_ref_131","_ref_137","_ref_147","_ref_154","_ref_160","_ref_163","_ref_165","_ref_175","_ref_200","_ref_202","_ref_222","_ref_267","_ref_269","_ref_275","_ref_277","_ref_278","_ref_304"]},{"type":"production","id":"prod-IdentifierName","name":"IdentifierName","referencingIds":["_ref_10","_ref_13"]},{"type":"production","id":"prod-IdentifierStart","name":"IdentifierStart","referencingIds":["_ref_12"]},{"type":"production","id":"prod-IdentifierContinue","name":"IdentifierContinue","referencingIds":["_ref_14","_ref_15"]},{"type":"production","id":"prod-AsciiLetter","name":"AsciiLetter","referencingIds":["_ref_17"]},{"type":"production","id":"prod-BooleanLiteral","name":"BooleanLiteral","referencingIds":["_ref_9","_ref_193"]},{"type":"production","id":"prod-NumericLiteral","name":"NumericLiteral","referencingIds":["_ref_4","_ref_153","_ref_194"]},{"type":"production","id":"prod-DecimalLiteral","name":"DecimalLiteral","referencingIds":["_ref_19"]},{"type":"production","id":"prod-DecimalIntegerLiteral","name":"DecimalIntegerLiteral","referencingIds":["_ref_22","_ref_25","_ref_33"]},{"type":"production","id":"prod-DecimalDigits","name":"DecimalDigits","referencingIds":["_ref_23","_ref_27","_ref_28","_ref_29","_ref_31","_ref_34","_ref_35","_ref_36"]},{"type":"production","id":"prod-DecimalDigit","name":"DecimalDigit","referencingIds":["_ref_16","_ref_18","_ref_30","_ref_32"]},{"type":"production","id":"prod-ExponentPart","name":"ExponentPart","referencingIds":["_ref_24","_ref_26"]},{"type":"production","id":"prod-DecimalIntegerInteger","name":"DecimalIntegerInteger"},{"type":"production","id":"prod-HexIntegerLiteral","name":"HexIntegerLiteral","referencingIds":["_ref_20"]},{"type":"production","id":"prod-HexDigits","name":"HexDigits","referencingIds":["_ref_37","_ref_39"]},{"type":"production","id":"prod-HexDigit","name":"HexDigit","referencingIds":["_ref_38","_ref_40"]},{"type":"production","id":"prod-BinaryIntegerLiteral","name":"BinaryIntegerLiteral","referencingIds":["_ref_21"]},{"type":"production","id":"prod-BinaryDigits","name":"BinaryDigits","referencingIds":["_ref_41","_ref_43"]},{"type":"production","id":"prod-BinaryDigit","name":"BinaryDigit","referencingIds":["_ref_42","_ref_44"]},{"type":"production","id":"prod-StringLiteral","name":"StringLiteral","referencingIds":["_ref_5","_ref_77","_ref_111","_ref_134","_ref_150","_ref_152","_ref_192","_ref_307"]},{"type":"production","id":"prod-StringCharacters","name":"StringCharacters","referencingIds":["_ref_45","_ref_48"]},{"type":"production","id":"prod-StringCharacter","name":"StringCharacter","referencingIds":["_ref_47"]},{"type":"production","id":"prod-TripleQuotedStringCharacters","name":"TripleQuotedStringCharacters","referencingIds":["_ref_46","_ref_52"]},{"type":"production","id":"prod-TripleQuotedStringCharacter","name":"TripleQuotedStringCharacter","referencingIds":["_ref_51"]},{"type":"production","id":"prod-EscapeCharacter","name":"EscapeCharacter","referencingIds":["_ref_50","_ref_54"]},{"type":"production","id":"prod-Punctuator","name":"Punctuator","referencingIds":["_ref_6"]},{"type":"production","id":"prod-WhiteSpace","name":"WhiteSpace","referencingIds":["_ref_8"]},{"type":"production","id":"prod-Comment","name":"Comment","referencingIds":["_ref_7"]},{"type":"production","id":"prod-MultiLineComment","name":"MultiLineComment","referencingIds":["_ref_55"]},{"type":"production","id":"prod-MultiLineCommentChars","name":"MultiLineCommentChars","referencingIds":["_ref_57","_ref_59","_ref_62"]},{"type":"production","id":"prod-PostAsteriskCommentChars","name":"PostAsteriskCommentChars","referencingIds":["_ref_60","_ref_63"]},{"type":"production","id":"prod-MultiLineNotAsteriskChar","name":"MultiLineNotAsteriskChar","referencingIds":["_ref_58"]},{"type":"production","id":"prod-MultiLineNotForwardSlashOrAsteriskChar","name":"MultiLineNotForwardSlashOrAsteriskChar","referencingIds":["_ref_61"]},{"type":"production","id":"prod-SingleLineComment","name":"SingleLineComment","referencingIds":["_ref_56"]},{"type":"production","id":"prod-SingleLineCommentChars","name":"SingleLineCommentChars","referencingIds":["_ref_66","_ref_68"]},{"type":"production","id":"prod-SingleLineCommentChar","name":"SingleLineCommentChar","referencingIds":["_ref_67"]},{"type":"clause","id":"lexical-grammar","titleHTML":"Lexical Grammar","number":"1"},{"type":"production","id":"prod-CadlScriptItemList","name":"CadlScriptItemList","referencingIds":["_ref_70"]},{"type":"production","id":"prod-CadlScriptItem","name":"CadlScriptItem","referencingIds":["_ref_71"]},{"type":"production","id":"prod-BlocklessNamespaceStatement","name":"BlocklessNamespaceStatement","referencingIds":["_ref_72"]},{"type":"production","id":"prod-ImportStatement","name":"ImportStatement","referencingIds":["_ref_73"]},{"type":"production","id":"prod-StatementList","name":"StatementList","referencingIds":["_ref_78","_ref_168"]},{"type":"production","id":"prod-Statement","name":"Statement","referencingIds":["_ref_74","_ref_79"]},{"type":"production","id":"prod-UsingStatement","name":"UsingStatement","referencingIds":["_ref_84"]},{"type":"production","id":"prod-ModelStatement","name":"ModelStatement","referencingIds":["_ref_80"]},{"type":"production","id":"prod-IsModelHeritage","name":"IsModelHeritage","referencingIds":["_ref_90","_ref_97"]},{"type":"production","id":"prod-ExtendsModelHeritage","name":"ExtendsModelHeritage","referencingIds":["_ref_98"]},{"type":"production","id":"prod-ModelHeritage","name":"ModelHeritage","referencingIds":["_ref_93"]},{"type":"production","id":"prod-ModelBody","name":"ModelBody","referencingIds":["_ref_94","_ref_206"]},{"type":"production","id":"prod-ModelPropertyList","name":"ModelPropertyList","referencingIds":["_ref_99","_ref_100","_ref_102","_ref_104","_ref_169"]},{"type":"production","id":"prod-ModelProperty","name":"ModelProperty","referencingIds":["_ref_101","_ref_103","_ref_105"]},{"type":"production","id":"prod-ModelSpreadProperty","name":"ModelSpreadProperty","referencingIds":["_ref_106"]},{"type":"production","id":"prod-InterfaceStatement","name":"InterfaceStatement","referencingIds":["_ref_81"]},{"type":"production","id":"prod-InterfaceHeritage","name":"InterfaceHeritage","referencingIds":["_ref_115"]},{"type":"production","id":"prod-InterfaceMemberList","name":"InterfaceMemberList","referencingIds":["_ref_117","_ref_119"]},{"type":"production","id":"prod-InterfaceMember","name":"InterfaceMember","referencingIds":["_ref_118","_ref_120"]},{"type":"production","id":"prod-UnionStatement","name":"UnionStatement"},{"type":"production","id":"prod-UnionBody","name":"UnionBody","referencingIds":["_ref_125"]},{"type":"production","id":"prod-UnionVariantList","name":"UnionVariantList","referencingIds":["_ref_126","_ref_128"]},{"type":"production","id":"prod-UnionVariant","name":"UnionVariant","referencingIds":["_ref_127","_ref_129"]},{"type":"production","id":"prod-EnumStatement","name":"EnumStatement","referencingIds":["_ref_85"]},{"type":"production","id":"prod-EnumBody","name":"EnumBody","referencingIds":["_ref_138"]},{"type":"production","id":"prod-EnumMemberList","name":"EnumMemberList","referencingIds":["_ref_139","_ref_140","_ref_142","_ref_144"]},{"type":"production","id":"prod-EnumMember","name":"EnumMember","referencingIds":["_ref_141","_ref_143","_ref_145"]},{"type":"production","id":"prod-EnumMemberValue","name":"EnumMemberValue","referencingIds":["_ref_148","_ref_151"]},{"type":"production","id":"prod-AliasStatement","name":"AliasStatement","referencingIds":["_ref_86"]},{"type":"production","id":"prod-TemplateParameterList","name":"TemplateParameterList","referencingIds":["_ref_156","_ref_158"]},{"type":"production","id":"prod-TemplateParameter","name":"TemplateParameter","referencingIds":["_ref_157","_ref_159"]},{"type":"production","id":"prod-TemplateParameterDefault","name":"TemplateParameterDefault","referencingIds":["_ref_161"]},{"type":"production","id":"prod-IdentifierList","name":"IdentifierList","referencingIds":["_ref_164","_ref_223","_ref_314"]},{"type":"production","id":"prod-NamespaceStatement","name":"NamespaceStatement","referencingIds":["_ref_82"]},{"type":"production","id":"prod-OperationSignatureDeclaration","name":"OperationSignatureDeclaration","referencingIds":["_ref_172"]},{"type":"production","id":"prod-OperationSignatureReference","name":"OperationSignatureReference","referencingIds":["_ref_173"]},{"type":"production","id":"prod-OperationSignature","name":"OperationSignature","referencingIds":["_ref_122","_ref_177"]},{"type":"production","id":"prod-OperationStatement","name":"OperationStatement","referencingIds":["_ref_83"]},{"type":"production","id":"prod-Expression","name":"Expression","referencingIds":["_ref_109","_ref_112","_ref_132","_ref_135","_ref_155","_ref_162","_ref_170","_ref_205","_ref_208","_ref_210"]},{"type":"production","id":"prod-UnionExpressionOrHigher","name":"UnionExpressionOrHigher","referencingIds":["_ref_178","_ref_180"]},{"type":"production","id":"prod-IntersectionExpressionOrHigher","name":"IntersectionExpressionOrHigher","referencingIds":["_ref_179","_ref_181","_ref_183"]},{"type":"production","id":"prod-ArrayExpressionOrHigher","name":"ArrayExpressionOrHigher","referencingIds":["_ref_182","_ref_184","_ref_186"]},{"type":"production","id":"prod-PrimaryExpression","name":"PrimaryExpression","referencingIds":["_ref_185"]},{"type":"production","id":"prod-Literal","name":"Literal","referencingIds":["_ref_187","_ref_281"]},{"type":"production","id":"prod-ReferenceExpression","name":"ReferenceExpression","referencingIds":["_ref_95","_ref_96","_ref_113","_ref_171","_ref_188","_ref_197","_ref_199","_ref_221"]},{"type":"production","id":"prod-ReferenceExpressionList","name":"ReferenceExpressionList","referencingIds":["_ref_116","_ref_198"]},{"type":"production","id":"prod-IdentifierOrMemberExpression","name":"IdentifierOrMemberExpression","referencingIds":["_ref_76","_ref_87","_ref_167","_ref_195","_ref_201","_ref_213","_ref_272"]},{"type":"production","id":"prod-TemplateArguments","name":"TemplateArguments","referencingIds":["_ref_176","_ref_196"]},{"type":"production","id":"prod-ProjectionArguments","name":"ProjectionArguments"},{"type":"production","id":"prod-ParenthesizedExpression","name":"ParenthesizedExpression","referencingIds":["_ref_189"]},{"type":"production","id":"prod-ModelExpression","name":"ModelExpression","referencingIds":["_ref_190"]},{"type":"production","id":"prod-TupleExpression","name":"TupleExpression","referencingIds":["_ref_191"]},{"type":"production","id":"prod-ExpressionList","name":"ExpressionList","referencingIds":["_ref_203","_ref_204","_ref_207","_ref_209","_ref_215"]},{"type":"production","id":"prod-DecoratorList","name":"DecoratorList","referencingIds":["_ref_75","_ref_88","_ref_91","_ref_107","_ref_110","_ref_123","_ref_130","_ref_133","_ref_136","_ref_146","_ref_149","_ref_166","_ref_174","_ref_211","_ref_303","_ref_306"]},{"type":"production","id":"prod-Decorator","name":"Decorator","referencingIds":["_ref_212"]},{"type":"production","id":"prod-DecoratorArguments","name":"DecoratorArguments","referencingIds":["_ref_214"]},{"type":"production","id":"prod-ProjectionStatement","name":"ProjectionStatement"},{"type":"production","id":"prod-ProjectionSelector","name":"ProjectionSelector","referencingIds":["_ref_216"]},{"type":"production","id":"prod-ProjectionDirection","name":"ProjectionDirection","referencingIds":["_ref_217"]},{"type":"production","id":"prod-ProjectionTag","name":"ProjectionTag","referencingIds":["_ref_218"]},{"type":"production","id":"prod-ProjectionParameters","name":"ProjectionParameters","referencingIds":["_ref_219"]},{"type":"production","id":"prod-ProjectionBody","name":"ProjectionBody","referencingIds":["_ref_220"]},{"type":"production","id":"prod-ProjectionStatementList","name":"ProjectionStatementList","referencingIds":["_ref_224","_ref_226"]},{"type":"production","id":"prod-ProjectionStatementItem","name":"ProjectionStatementItem","referencingIds":["_ref_225","_ref_227"]},{"type":"production","id":"prod-ProjectionExpression","name":"ProjectionExpression","referencingIds":["_ref_230","_ref_286","_ref_288","_ref_289","_ref_290","_ref_292","_ref_305","_ref_308","_ref_309"]},{"type":"production","id":"prod-ProjectionReturnExpression","name":"ProjectionReturnExpression","referencingIds":["_ref_228"]},{"type":"production","id":"prod-ProjectionLogicalOrExpression","name":"ProjectionLogicalOrExpression","referencingIds":["_ref_229","_ref_232"]},{"type":"production","id":"prod-ProjectionLogicalAndExpression","name":"ProjectionLogicalAndExpression","referencingIds":["_ref_231","_ref_233","_ref_235"]},{"type":"production","id":"prod-ProjectionEqualityExpression","name":"ProjectionEqualityExpression","referencingIds":["_ref_238","_ref_240"]},{"type":"production","id":"prod-ProjectionRelationalExpression","name":"ProjectionRelationalExpression","referencingIds":["_ref_234","_ref_236","_ref_237","_ref_239","_ref_241","_ref_243","_ref_245","_ref_247","_ref_249"]},{"type":"production","id":"prod-ProjectionAdditiveExpression","name":"ProjectionAdditiveExpression","referencingIds":["_ref_242","_ref_244","_ref_246","_ref_248","_ref_250","_ref_252","_ref_254"]},{"type":"production","id":"prod-ProjectionMultiplicativeExpression","name":"ProjectionMultiplicativeExpression","referencingIds":["_ref_251","_ref_253","_ref_255","_ref_257","_ref_259"]},{"type":"production","id":"prod-ProjectionUnaryExpression","name":"ProjectionUnaryExpression","referencingIds":["_ref_256","_ref_258","_ref_260","_ref_262"]},{"type":"production","id":"prod-ProjectionCallExpression","name":"ProjectionCallExpression","referencingIds":["_ref_261","_ref_264","_ref_266","_ref_268"]},{"type":"production","id":"prod-ProjectionCallArguments","name":"ProjectionCallArguments","referencingIds":["_ref_265"]},{"type":"production","id":"prod-ProjectionDecoratorReferenceExpression","name":"ProjectionDecoratorReferenceExpression","referencingIds":["_ref_263"]},{"type":"production","id":"prod-ProjectionMemberExpression","name":"ProjectionMemberExpression","referencingIds":["_ref_271","_ref_274","_ref_276"]},{"type":"production","id":"prod-ProjectionPrimaryExpression","name":"ProjectionPrimaryExpression","referencingIds":["_ref_273"]},{"type":"production","id":"prod-CoverProjectionParenthesizedExpressionAndLambdaParameterList","name":"CoverProjectionParenthesizedExpressionAndLambdaParameterList","referencingIds":["_ref_284","_ref_311"]},{"type":"production","id":"prod-ProjectionExpressionList","name":"ProjectionExpressionList","referencingIds":["_ref_270","_ref_285","_ref_287","_ref_310","_ref_313"]},{"type":"production","id":"prod-ProjectionIfExpression","name":"ProjectionIfExpression","referencingIds":["_ref_279","_ref_293"]},{"type":"production","id":"prod-ProjectionModelExpression","name":"ProjectionModelExpression","referencingIds":["_ref_282"]},{"type":"production","id":"prod-ProjectionModelBody","name":"ProjectionModelBody","referencingIds":["_ref_294"]},{"type":"production","id":"prod-ProjectionModelPropertyList","name":"ProjectionModelPropertyList","referencingIds":["_ref_295","_ref_296","_ref_298","_ref_300"]},{"type":"production","id":"prod-ProjectionModelProperty","name":"ProjectionModelProperty","referencingIds":["_ref_297","_ref_299","_ref_301"]},{"type":"production","id":"prod-ProjectionModelSpreadProperty","name":"ProjectionModelSpreadProperty","referencingIds":["_ref_302"]},{"type":"production","id":"prod-ProjectionTupleExpression","name":"ProjectionTupleExpression","referencingIds":["_ref_283"]},{"type":"production","id":"prod-ProjectionLambdaExpression","name":"ProjectionLambdaExpression","referencingIds":["_ref_280"]},{"type":"production","id":"prod-ProjectionBlockExpression","name":"ProjectionBlockExpression","referencingIds":["_ref_291","_ref_312"]},{"type":"production","id":"prod-LambdaParameters","name":"LambdaParameters"},{"type":"clause","id":"syntactic-grammar","titleHTML":"Syntactic Grammar","number":"2"}]}`); +let biblio = JSON.parse(`{"refsByClause":{"lexical-grammar":["_ref_0","_ref_1","_ref_2","_ref_3","_ref_4","_ref_5","_ref_6","_ref_7","_ref_8","_ref_9","_ref_10","_ref_11","_ref_12","_ref_13","_ref_14","_ref_15","_ref_16","_ref_17","_ref_18","_ref_19","_ref_20","_ref_21","_ref_22","_ref_23","_ref_24","_ref_25","_ref_26","_ref_27","_ref_28","_ref_29","_ref_30","_ref_31","_ref_32","_ref_33","_ref_34","_ref_35","_ref_36","_ref_37","_ref_38","_ref_39","_ref_40","_ref_41","_ref_42","_ref_43","_ref_44","_ref_45","_ref_46","_ref_47","_ref_48","_ref_49","_ref_50","_ref_51","_ref_52","_ref_53","_ref_54","_ref_55","_ref_56","_ref_57","_ref_58","_ref_59","_ref_60","_ref_61","_ref_62","_ref_63","_ref_64","_ref_65","_ref_66","_ref_67","_ref_68","_ref_69"],"syntactic-grammar":["_ref_70","_ref_71","_ref_72","_ref_73","_ref_74","_ref_75","_ref_76","_ref_77","_ref_78","_ref_79","_ref_80","_ref_81","_ref_82","_ref_83","_ref_84","_ref_85","_ref_86","_ref_87","_ref_88","_ref_89","_ref_90","_ref_91","_ref_92","_ref_93","_ref_94","_ref_95","_ref_96","_ref_97","_ref_98","_ref_99","_ref_100","_ref_101","_ref_102","_ref_103","_ref_104","_ref_105","_ref_106","_ref_107","_ref_108","_ref_109","_ref_110","_ref_111","_ref_112","_ref_113","_ref_114","_ref_115","_ref_116","_ref_117","_ref_118","_ref_119","_ref_120","_ref_121","_ref_122","_ref_123","_ref_124","_ref_125","_ref_126","_ref_127","_ref_128","_ref_129","_ref_130","_ref_131","_ref_132","_ref_133","_ref_134","_ref_135","_ref_136","_ref_137","_ref_138","_ref_139","_ref_140","_ref_141","_ref_142","_ref_143","_ref_144","_ref_145","_ref_146","_ref_147","_ref_148","_ref_149","_ref_150","_ref_151","_ref_152","_ref_153","_ref_154","_ref_155","_ref_156","_ref_157","_ref_158","_ref_159","_ref_160","_ref_161","_ref_162","_ref_163","_ref_164","_ref_165","_ref_166","_ref_167","_ref_168","_ref_169","_ref_170","_ref_171","_ref_172","_ref_173","_ref_174","_ref_175","_ref_176","_ref_177","_ref_178","_ref_179","_ref_180","_ref_181","_ref_182","_ref_183","_ref_184","_ref_185","_ref_186","_ref_187","_ref_188","_ref_189","_ref_190","_ref_191","_ref_192","_ref_193","_ref_194","_ref_195","_ref_196","_ref_197","_ref_198","_ref_199","_ref_200","_ref_201","_ref_202","_ref_203","_ref_204","_ref_205","_ref_206","_ref_207","_ref_208","_ref_209","_ref_210","_ref_211","_ref_212","_ref_213","_ref_214","_ref_215","_ref_216","_ref_217","_ref_218","_ref_219","_ref_220","_ref_221","_ref_222","_ref_223","_ref_224","_ref_225","_ref_226","_ref_227","_ref_228","_ref_229","_ref_230","_ref_231","_ref_232","_ref_233","_ref_234","_ref_235","_ref_236","_ref_237","_ref_238","_ref_239","_ref_240","_ref_241","_ref_242","_ref_243","_ref_244","_ref_245","_ref_246","_ref_247","_ref_248","_ref_249","_ref_250","_ref_251","_ref_252","_ref_253","_ref_254","_ref_255","_ref_256","_ref_257","_ref_258","_ref_259","_ref_260","_ref_261","_ref_262","_ref_263","_ref_264","_ref_265","_ref_266","_ref_267","_ref_268","_ref_269","_ref_270","_ref_271","_ref_272","_ref_273","_ref_274","_ref_275","_ref_276","_ref_277","_ref_278","_ref_279","_ref_280","_ref_281","_ref_282","_ref_283","_ref_284","_ref_285","_ref_286","_ref_287","_ref_288","_ref_289","_ref_290","_ref_291","_ref_292","_ref_293","_ref_294","_ref_295","_ref_296","_ref_297","_ref_298","_ref_299","_ref_300","_ref_301","_ref_302","_ref_303","_ref_304","_ref_305","_ref_306","_ref_307","_ref_308","_ref_309","_ref_310","_ref_311","_ref_312","_ref_313","_ref_314","_ref_315","_ref_316","_ref_317","_ref_318"]},"entries":[{"type":"clause","id":"intro","titleHTML":"Introduction","number":""},{"type":"production","id":"prod-SourceCharacter","name":"SourceCharacter","referencingIds":["_ref_49","_ref_53","_ref_64","_ref_65","_ref_69"]},{"type":"production","id":"prod-InputElement","name":"InputElement"},{"type":"production","id":"prod-Token","name":"Token","referencingIds":["_ref_0"]},{"type":"production","id":"prod-Trivia","name":"Trivia","referencingIds":["_ref_1"]},{"type":"production","id":"prod-Keyword","name":"Keyword","referencingIds":["_ref_2","_ref_11"]},{"type":"production","id":"prod-Identifier","name":"Identifier","referencingIds":["_ref_3","_ref_89","_ref_92","_ref_108","_ref_114","_ref_121","_ref_124","_ref_131","_ref_137","_ref_148","_ref_156","_ref_162","_ref_167","_ref_169","_ref_179","_ref_204","_ref_206","_ref_226","_ref_271","_ref_273","_ref_279","_ref_281","_ref_282","_ref_308"]},{"type":"production","id":"prod-IdentifierName","name":"IdentifierName","referencingIds":["_ref_10","_ref_13"]},{"type":"production","id":"prod-IdentifierStart","name":"IdentifierStart","referencingIds":["_ref_12"]},{"type":"production","id":"prod-IdentifierContinue","name":"IdentifierContinue","referencingIds":["_ref_14","_ref_15"]},{"type":"production","id":"prod-AsciiLetter","name":"AsciiLetter","referencingIds":["_ref_17"]},{"type":"production","id":"prod-BooleanLiteral","name":"BooleanLiteral","referencingIds":["_ref_9","_ref_197"]},{"type":"production","id":"prod-NumericLiteral","name":"NumericLiteral","referencingIds":["_ref_4","_ref_155","_ref_198"]},{"type":"production","id":"prod-DecimalLiteral","name":"DecimalLiteral","referencingIds":["_ref_19"]},{"type":"production","id":"prod-DecimalIntegerLiteral","name":"DecimalIntegerLiteral","referencingIds":["_ref_22","_ref_25","_ref_33"]},{"type":"production","id":"prod-DecimalDigits","name":"DecimalDigits","referencingIds":["_ref_23","_ref_27","_ref_28","_ref_29","_ref_31","_ref_34","_ref_35","_ref_36"]},{"type":"production","id":"prod-DecimalDigit","name":"DecimalDigit","referencingIds":["_ref_16","_ref_18","_ref_30","_ref_32"]},{"type":"production","id":"prod-ExponentPart","name":"ExponentPart","referencingIds":["_ref_24","_ref_26"]},{"type":"production","id":"prod-DecimalIntegerInteger","name":"DecimalIntegerInteger"},{"type":"production","id":"prod-HexIntegerLiteral","name":"HexIntegerLiteral","referencingIds":["_ref_20"]},{"type":"production","id":"prod-HexDigits","name":"HexDigits","referencingIds":["_ref_37","_ref_39"]},{"type":"production","id":"prod-HexDigit","name":"HexDigit","referencingIds":["_ref_38","_ref_40"]},{"type":"production","id":"prod-BinaryIntegerLiteral","name":"BinaryIntegerLiteral","referencingIds":["_ref_21"]},{"type":"production","id":"prod-BinaryDigits","name":"BinaryDigits","referencingIds":["_ref_41","_ref_43"]},{"type":"production","id":"prod-BinaryDigit","name":"BinaryDigit","referencingIds":["_ref_42","_ref_44"]},{"type":"production","id":"prod-StringLiteral","name":"StringLiteral","referencingIds":["_ref_5","_ref_77","_ref_111","_ref_134","_ref_151","_ref_154","_ref_196","_ref_311"]},{"type":"production","id":"prod-StringCharacters","name":"StringCharacters","referencingIds":["_ref_45","_ref_48"]},{"type":"production","id":"prod-StringCharacter","name":"StringCharacter","referencingIds":["_ref_47"]},{"type":"production","id":"prod-TripleQuotedStringCharacters","name":"TripleQuotedStringCharacters","referencingIds":["_ref_46","_ref_52"]},{"type":"production","id":"prod-TripleQuotedStringCharacter","name":"TripleQuotedStringCharacter","referencingIds":["_ref_51"]},{"type":"production","id":"prod-EscapeCharacter","name":"EscapeCharacter","referencingIds":["_ref_50","_ref_54"]},{"type":"production","id":"prod-Punctuator","name":"Punctuator","referencingIds":["_ref_6"]},{"type":"production","id":"prod-WhiteSpace","name":"WhiteSpace","referencingIds":["_ref_8"]},{"type":"production","id":"prod-Comment","name":"Comment","referencingIds":["_ref_7"]},{"type":"production","id":"prod-MultiLineComment","name":"MultiLineComment","referencingIds":["_ref_55"]},{"type":"production","id":"prod-MultiLineCommentChars","name":"MultiLineCommentChars","referencingIds":["_ref_57","_ref_59","_ref_62"]},{"type":"production","id":"prod-PostAsteriskCommentChars","name":"PostAsteriskCommentChars","referencingIds":["_ref_60","_ref_63"]},{"type":"production","id":"prod-MultiLineNotAsteriskChar","name":"MultiLineNotAsteriskChar","referencingIds":["_ref_58"]},{"type":"production","id":"prod-MultiLineNotForwardSlashOrAsteriskChar","name":"MultiLineNotForwardSlashOrAsteriskChar","referencingIds":["_ref_61"]},{"type":"production","id":"prod-SingleLineComment","name":"SingleLineComment","referencingIds":["_ref_56"]},{"type":"production","id":"prod-SingleLineCommentChars","name":"SingleLineCommentChars","referencingIds":["_ref_66","_ref_68"]},{"type":"production","id":"prod-SingleLineCommentChar","name":"SingleLineCommentChar","referencingIds":["_ref_67"]},{"type":"clause","id":"lexical-grammar","titleHTML":"Lexical Grammar","number":"1"},{"type":"production","id":"prod-CadlScriptItemList","name":"CadlScriptItemList","referencingIds":["_ref_70"]},{"type":"production","id":"prod-CadlScriptItem","name":"CadlScriptItem","referencingIds":["_ref_71"]},{"type":"production","id":"prod-BlocklessNamespaceStatement","name":"BlocklessNamespaceStatement","referencingIds":["_ref_72"]},{"type":"production","id":"prod-ImportStatement","name":"ImportStatement","referencingIds":["_ref_73"]},{"type":"production","id":"prod-StatementList","name":"StatementList","referencingIds":["_ref_78","_ref_172"]},{"type":"production","id":"prod-Statement","name":"Statement","referencingIds":["_ref_74","_ref_79"]},{"type":"production","id":"prod-UsingStatement","name":"UsingStatement","referencingIds":["_ref_84"]},{"type":"production","id":"prod-ModelStatement","name":"ModelStatement","referencingIds":["_ref_80"]},{"type":"production","id":"prod-IsModelHeritage","name":"IsModelHeritage","referencingIds":["_ref_90","_ref_97"]},{"type":"production","id":"prod-ExtendsModelHeritage","name":"ExtendsModelHeritage","referencingIds":["_ref_98"]},{"type":"production","id":"prod-ModelHeritage","name":"ModelHeritage","referencingIds":["_ref_93"]},{"type":"production","id":"prod-ModelBody","name":"ModelBody","referencingIds":["_ref_94","_ref_210"]},{"type":"production","id":"prod-ModelPropertyList","name":"ModelPropertyList","referencingIds":["_ref_99","_ref_100","_ref_102","_ref_104","_ref_173"]},{"type":"production","id":"prod-ModelProperty","name":"ModelProperty","referencingIds":["_ref_101","_ref_103","_ref_105"]},{"type":"production","id":"prod-ModelSpreadProperty","name":"ModelSpreadProperty","referencingIds":["_ref_106"]},{"type":"production","id":"prod-InterfaceStatement","name":"InterfaceStatement","referencingIds":["_ref_81"]},{"type":"production","id":"prod-InterfaceHeritage","name":"InterfaceHeritage","referencingIds":["_ref_115"]},{"type":"production","id":"prod-InterfaceMemberList","name":"InterfaceMemberList","referencingIds":["_ref_117","_ref_119"]},{"type":"production","id":"prod-InterfaceMember","name":"InterfaceMember","referencingIds":["_ref_118","_ref_120"]},{"type":"production","id":"prod-UnionStatement","name":"UnionStatement"},{"type":"production","id":"prod-UnionBody","name":"UnionBody","referencingIds":["_ref_125"]},{"type":"production","id":"prod-UnionVariantList","name":"UnionVariantList","referencingIds":["_ref_126","_ref_128"]},{"type":"production","id":"prod-UnionVariant","name":"UnionVariant","referencingIds":["_ref_127","_ref_129"]},{"type":"production","id":"prod-EnumStatement","name":"EnumStatement","referencingIds":["_ref_85"]},{"type":"production","id":"prod-EnumBody","name":"EnumBody","referencingIds":["_ref_138"]},{"type":"production","id":"prod-EnumMemberList","name":"EnumMemberList","referencingIds":["_ref_139","_ref_140","_ref_142","_ref_144"]},{"type":"production","id":"prod-EnumMember","name":"EnumMember","referencingIds":["_ref_141","_ref_143","_ref_145"]},{"type":"production","id":"prod-EnumSpreadMember","name":"EnumSpreadMember","referencingIds":["_ref_146"]},{"type":"production","id":"prod-EnumMemberValue","name":"EnumMemberValue","referencingIds":["_ref_149","_ref_152"]},{"type":"production","id":"prod-AliasStatement","name":"AliasStatement","referencingIds":["_ref_86"]},{"type":"production","id":"prod-TemplateParameterList","name":"TemplateParameterList","referencingIds":["_ref_158","_ref_160"]},{"type":"production","id":"prod-TemplateParameter","name":"TemplateParameter","referencingIds":["_ref_159","_ref_161"]},{"type":"production","id":"prod-TemplateParameterConstraint","name":"TemplateParameterConstraint","referencingIds":["_ref_163"]},{"type":"production","id":"prod-TemplateParameterDefault","name":"TemplateParameterDefault","referencingIds":["_ref_164"]},{"type":"production","id":"prod-IdentifierList","name":"IdentifierList","referencingIds":["_ref_168","_ref_227","_ref_318"]},{"type":"production","id":"prod-NamespaceStatement","name":"NamespaceStatement","referencingIds":["_ref_82"]},{"type":"production","id":"prod-OperationSignatureDeclaration","name":"OperationSignatureDeclaration","referencingIds":["_ref_176"]},{"type":"production","id":"prod-OperationSignatureReference","name":"OperationSignatureReference","referencingIds":["_ref_177"]},{"type":"production","id":"prod-OperationSignature","name":"OperationSignature","referencingIds":["_ref_122","_ref_181"]},{"type":"production","id":"prod-OperationStatement","name":"OperationStatement","referencingIds":["_ref_83"]},{"type":"production","id":"prod-Expression","name":"Expression","referencingIds":["_ref_95","_ref_96","_ref_109","_ref_112","_ref_132","_ref_135","_ref_157","_ref_165","_ref_166","_ref_174","_ref_209","_ref_212","_ref_214"]},{"type":"production","id":"prod-UnionExpressionOrHigher","name":"UnionExpressionOrHigher","referencingIds":["_ref_182","_ref_184"]},{"type":"production","id":"prod-IntersectionExpressionOrHigher","name":"IntersectionExpressionOrHigher","referencingIds":["_ref_183","_ref_185","_ref_187"]},{"type":"production","id":"prod-ArrayExpressionOrHigher","name":"ArrayExpressionOrHigher","referencingIds":["_ref_186","_ref_188","_ref_190"]},{"type":"production","id":"prod-PrimaryExpression","name":"PrimaryExpression","referencingIds":["_ref_189"]},{"type":"production","id":"prod-Literal","name":"Literal","referencingIds":["_ref_191","_ref_285"]},{"type":"production","id":"prod-ReferenceExpression","name":"ReferenceExpression","referencingIds":["_ref_113","_ref_153","_ref_175","_ref_192","_ref_201","_ref_203","_ref_225"]},{"type":"production","id":"prod-ReferenceExpressionList","name":"ReferenceExpressionList","referencingIds":["_ref_116","_ref_202"]},{"type":"production","id":"prod-IdentifierOrMemberExpression","name":"IdentifierOrMemberExpression","referencingIds":["_ref_76","_ref_87","_ref_171","_ref_199","_ref_205","_ref_217","_ref_276"]},{"type":"production","id":"prod-TemplateArguments","name":"TemplateArguments","referencingIds":["_ref_180","_ref_200"]},{"type":"production","id":"prod-ProjectionArguments","name":"ProjectionArguments"},{"type":"production","id":"prod-ParenthesizedExpression","name":"ParenthesizedExpression","referencingIds":["_ref_193"]},{"type":"production","id":"prod-ModelExpression","name":"ModelExpression","referencingIds":["_ref_194"]},{"type":"production","id":"prod-TupleExpression","name":"TupleExpression","referencingIds":["_ref_195"]},{"type":"production","id":"prod-ExpressionList","name":"ExpressionList","referencingIds":["_ref_207","_ref_208","_ref_211","_ref_213","_ref_219"]},{"type":"production","id":"prod-DecoratorList","name":"DecoratorList","referencingIds":["_ref_75","_ref_88","_ref_91","_ref_107","_ref_110","_ref_123","_ref_130","_ref_133","_ref_136","_ref_147","_ref_150","_ref_170","_ref_178","_ref_215","_ref_307","_ref_310"]},{"type":"production","id":"prod-Decorator","name":"Decorator","referencingIds":["_ref_216"]},{"type":"production","id":"prod-DecoratorArguments","name":"DecoratorArguments","referencingIds":["_ref_218"]},{"type":"production","id":"prod-ProjectionStatement","name":"ProjectionStatement"},{"type":"production","id":"prod-ProjectionSelector","name":"ProjectionSelector","referencingIds":["_ref_220"]},{"type":"production","id":"prod-ProjectionDirection","name":"ProjectionDirection","referencingIds":["_ref_221"]},{"type":"production","id":"prod-ProjectionTag","name":"ProjectionTag","referencingIds":["_ref_222"]},{"type":"production","id":"prod-ProjectionParameters","name":"ProjectionParameters","referencingIds":["_ref_223"]},{"type":"production","id":"prod-ProjectionBody","name":"ProjectionBody","referencingIds":["_ref_224"]},{"type":"production","id":"prod-ProjectionStatementList","name":"ProjectionStatementList","referencingIds":["_ref_228","_ref_230"]},{"type":"production","id":"prod-ProjectionStatementItem","name":"ProjectionStatementItem","referencingIds":["_ref_229","_ref_231"]},{"type":"production","id":"prod-ProjectionExpression","name":"ProjectionExpression","referencingIds":["_ref_234","_ref_290","_ref_292","_ref_293","_ref_294","_ref_296","_ref_309","_ref_312","_ref_313"]},{"type":"production","id":"prod-ProjectionReturnExpression","name":"ProjectionReturnExpression","referencingIds":["_ref_232"]},{"type":"production","id":"prod-ProjectionLogicalOrExpression","name":"ProjectionLogicalOrExpression","referencingIds":["_ref_233","_ref_236"]},{"type":"production","id":"prod-ProjectionLogicalAndExpression","name":"ProjectionLogicalAndExpression","referencingIds":["_ref_235","_ref_237","_ref_239"]},{"type":"production","id":"prod-ProjectionEqualityExpression","name":"ProjectionEqualityExpression","referencingIds":["_ref_242","_ref_244"]},{"type":"production","id":"prod-ProjectionRelationalExpression","name":"ProjectionRelationalExpression","referencingIds":["_ref_238","_ref_240","_ref_241","_ref_243","_ref_245","_ref_247","_ref_249","_ref_251","_ref_253"]},{"type":"production","id":"prod-ProjectionAdditiveExpression","name":"ProjectionAdditiveExpression","referencingIds":["_ref_246","_ref_248","_ref_250","_ref_252","_ref_254","_ref_256","_ref_258"]},{"type":"production","id":"prod-ProjectionMultiplicativeExpression","name":"ProjectionMultiplicativeExpression","referencingIds":["_ref_255","_ref_257","_ref_259","_ref_261","_ref_263"]},{"type":"production","id":"prod-ProjectionUnaryExpression","name":"ProjectionUnaryExpression","referencingIds":["_ref_260","_ref_262","_ref_264","_ref_266"]},{"type":"production","id":"prod-ProjectionCallExpression","name":"ProjectionCallExpression","referencingIds":["_ref_265","_ref_268","_ref_270","_ref_272"]},{"type":"production","id":"prod-ProjectionCallArguments","name":"ProjectionCallArguments","referencingIds":["_ref_269"]},{"type":"production","id":"prod-ProjectionDecoratorReferenceExpression","name":"ProjectionDecoratorReferenceExpression","referencingIds":["_ref_267"]},{"type":"production","id":"prod-ProjectionMemberExpression","name":"ProjectionMemberExpression","referencingIds":["_ref_275","_ref_278","_ref_280"]},{"type":"production","id":"prod-ProjectionPrimaryExpression","name":"ProjectionPrimaryExpression","referencingIds":["_ref_277"]},{"type":"production","id":"prod-CoverProjectionParenthesizedExpressionAndLambdaParameterList","name":"CoverProjectionParenthesizedExpressionAndLambdaParameterList","referencingIds":["_ref_288","_ref_315"]},{"type":"production","id":"prod-ProjectionExpressionList","name":"ProjectionExpressionList","referencingIds":["_ref_274","_ref_289","_ref_291","_ref_314","_ref_317"]},{"type":"production","id":"prod-ProjectionIfExpression","name":"ProjectionIfExpression","referencingIds":["_ref_283","_ref_297"]},{"type":"production","id":"prod-ProjectionModelExpression","name":"ProjectionModelExpression","referencingIds":["_ref_286"]},{"type":"production","id":"prod-ProjectionModelBody","name":"ProjectionModelBody","referencingIds":["_ref_298"]},{"type":"production","id":"prod-ProjectionModelPropertyList","name":"ProjectionModelPropertyList","referencingIds":["_ref_299","_ref_300","_ref_302","_ref_304"]},{"type":"production","id":"prod-ProjectionModelProperty","name":"ProjectionModelProperty","referencingIds":["_ref_301","_ref_303","_ref_305"]},{"type":"production","id":"prod-ProjectionModelSpreadProperty","name":"ProjectionModelSpreadProperty","referencingIds":["_ref_306"]},{"type":"production","id":"prod-ProjectionTupleExpression","name":"ProjectionTupleExpression","referencingIds":["_ref_287"]},{"type":"production","id":"prod-ProjectionLambdaExpression","name":"ProjectionLambdaExpression","referencingIds":["_ref_284"]},{"type":"production","id":"prod-ProjectionBlockExpression","name":"ProjectionBlockExpression","referencingIds":["_ref_295","_ref_316"]},{"type":"production","id":"prod-LambdaParameters","name":"LambdaParameters"},{"type":"clause","id":"syntactic-grammar","titleHTML":"Syntactic Grammar","number":"2"}]}`); ;let usesMultipage = false