cadl/packages/playground
Timothee Guerin d4823c089b
Fix swagger ui build (#3091)
Missed that when doing the PR, the default import tries to load the
`path` library, recommendation is just to import the right bundle
directly.
2024-04-02 09:33:15 -07:00
..
definitions Add support for resizing panes in the playground (#2581) 2023-10-18 15:59:03 +00:00
src Fix swagger ui build (#3091) 2024-04-02 09:33:15 -07:00
.eslintignore Turn on promise linting and fix issues (#362) 2022-03-28 11:02:24 -05:00
.eslintrc.cjs Vitest improvements: vitest-ui, watch mode for deps, debug config (#2791) 2024-01-22 09:56:55 -08:00
CHANGELOG.json Prepare Publish for January Release (#2816) 2024-01-24 11:14:23 -08:00
CHANGELOG.md Remove old message burried in changelog (#2989) 2024-03-05 16:05:57 -08:00
README.md Clean up capitalization, parentheses, and phrasing in docs (#2817) 2024-01-25 10:40:16 -08:00
package.json Playground: Migrate from swagger-ui-react to swagger-ui-dist (#3089) 2024-04-01 17:13:08 -07:00
rollup.config.ts Fix swagger ui build (#3091) 2024-04-02 09:33:15 -07:00
tsconfig.build.json Use rollup in playground (#2584) 2023-11-01 16:52:45 +00:00
tsconfig.config.json Vitest improvements: vitest-ui, watch mode for deps, debug config (#2791) 2024-01-22 09:56:55 -08:00
tsconfig.json Migrate test framework to vitest (#2769) 2024-01-02 11:40:29 -08:00
vite.config.ts More UI changes to the playground (#2683) 2023-11-22 08:43:13 -08:00

README.md

TypeSpec Playground

Contains react components for the TypeSpec playground.

It can be used as a standalone custom playground with your own libraries or components can be used individually to customize the UI as you see fit.

Usage

Standalone

The stanalone playground provides some vite helpers to make it easy to get started.

In vite.config.ts:

import { definePlaygroundViteConfig } from "@typespec/playground/vite";

const config = definePlaygroundViteConfig({
  defaultEmitter: "@typespec/openapi3",
  libraries: [
    "@typespec/compiler",
    "@typespec/http",
    "@typespec/openapi3",

    // Add any other libraries here. Make sure those libraries are also dependencies of that package.
  ],
  samples: {
    "My sample": {
      filename: "samples/my.tsp",
      preferredEmitter: "@typespec/openapi3",
    },
  },
  links: {
    documentationUrl: "<link to your website>",
  },
});

export default config;

In src/main.tsx:

import { registerMonacoDefaultWorkersForVite } from "@typespec/playground";
import PlaygroundManifest from "@typespec/playground/manifest";
import { renderReactPlayground } from "@typespec/playground/react";
import { SwaggerUIViewer } from "@typespec/playground/react/viewers";

// Import styles
import "@typespec/playground/styles.css";

registerMonacoDefaultWorkersForVite();

await renderReactPlayground({
  ...PlaygroundManifest,
  emitterViewers: {
    "@typespec/openapi3": [SwaggerUIViewer],
  },
});

Individual components

Playground react components can be used individually. For the TypeSpec compiler to be working correctly, the following conditions need to be met: