@typespec/playground 0.13.0-dev.3 → 0.13.0-dev.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { c as createBrowserHost, r as registerMonacoLanguage } from './services-CzxNzZLi.js';
1
+ export { c as createBrowserHost, r as registerMonacoLanguage } from './services-Z619RuQS.js';
2
2
  export { createUrlStateStorage } from './state-storage.js';
3
3
 
4
4
  function registerMonacoDefaultWorkersForVite() {
@@ -7,7 +7,7 @@ import { $ } from '@typespec/compiler/typekit';
7
7
  import { DocumentBulletList24Regular, Dismiss24Regular, Save16Regular, Broom16Filled, Bug16Regular, SettingsRegular, FolderListRegular, DataLineRegular, ErrorCircle16Filled, Warning16Filled, ChevronDown16Regular } from '@fluentui/react-icons';
8
8
  import debounce from 'debounce';
9
9
  import { CompletionItemTag } from 'vscode-languageserver';
10
- import { a as resolveVirtualPath, p as printDebugInfo, d as debugGlobals, g as getMonacoRange, u as updateDiagnosticsForCodeFixes, c as createBrowserHost, r as registerMonacoLanguage } from '../services-CzxNzZLi.js';
10
+ import { a as resolveVirtualPath, p as printDebugInfo, d as debugGlobals, g as getMonacoRange, u as updateDiagnosticsForCodeFixes, c as createBrowserHost, r as registerMonacoLanguage } from '../services-Z619RuQS.js';
11
11
  import { stringify, parse } from 'yaml';
12
12
  import { ErrorBoundary } from 'react-error-boundary';
13
13
  import { TypeGraph } from '@typespec/html-program-viewer/react';
@@ -1311,12 +1311,13 @@ const EmitterOptionsForm = ({
1311
1311
  }
1312
1312
  const entries = Object.entries(emitterOptionsSchema);
1313
1313
  return /* @__PURE__ */ jsx("div", { className: style$8["form"], children: entries.map(([key, value]) => {
1314
- return /* @__PURE__ */ jsx("div", { className: style$8["form-item"], children: value.type === "array" ? /* @__PURE__ */ jsx(
1314
+ const resolved = value.oneOf ? resolveOneOfProperty(value) : value;
1315
+ return /* @__PURE__ */ jsx("div", { className: style$8["form-item"], children: resolved.type === "array" ? /* @__PURE__ */ jsx(
1315
1316
  JsonSchemaArrayPropertyInput,
1316
1317
  {
1317
1318
  emitterOptions: options[library.name] ?? {},
1318
1319
  name: key,
1319
- prop: value,
1320
+ prop: resolved,
1320
1321
  onChange: handleChange
1321
1322
  }
1322
1323
  ) : /* @__PURE__ */ jsx(
@@ -1324,12 +1325,22 @@ const EmitterOptionsForm = ({
1324
1325
  {
1325
1326
  emitterOptions: options[library.name] ?? {},
1326
1327
  name: key,
1327
- prop: value,
1328
+ prop: resolved,
1328
1329
  onChange: handleChange
1329
1330
  }
1330
1331
  ) }, key);
1331
1332
  }) });
1332
1333
  };
1334
+ function resolveOneOfProperty(prop) {
1335
+ const arrayBranch = prop.oneOf.find(
1336
+ (branch) => branch.type === "array"
1337
+ );
1338
+ if (arrayBranch) {
1339
+ return { ...arrayBranch, description: arrayBranch.description ?? prop.description };
1340
+ }
1341
+ const first = prop.oneOf[0];
1342
+ return { ...first, description: first.description ?? prop.description };
1343
+ }
1333
1344
  const JsonSchemaArrayPropertyInput = ({
1334
1345
  emitterOptions,
1335
1346
  name,
@@ -1337,7 +1348,8 @@ const JsonSchemaArrayPropertyInput = ({
1337
1348
  onChange
1338
1349
  }) => {
1339
1350
  const itemsSchema = prop.items;
1340
- const value = emitterOptions[name] ?? itemsSchema.default;
1351
+ const rawValue = emitterOptions[name] ?? itemsSchema.default;
1352
+ const value = Array.isArray(rawValue) ? rawValue : rawValue != null ? [rawValue] : [];
1341
1353
  const prettyName = useMemo(
1342
1354
  () => name[0].toUpperCase() + name.slice(1).replace(/-/g, " "),
1343
1355
  [name]
@@ -47,24 +47,32 @@ function resolveVirtualPath(path, ...paths) {
47
47
  function createBrowserHostInternal(options) {
48
48
  const virtualFs = /* @__PURE__ */ new Map();
49
49
  const jsImports = /* @__PURE__ */ new Map();
50
- const libraries = options.libraries;
51
- for (const [libName, { _TypeSpecLibrary_ }] of Object.entries(libraries)) {
52
- for (const [key, value] of Object.entries(_TypeSpecLibrary_.typespecSourceFiles)) {
50
+ const libraries = {
51
+ ...options.libraries
52
+ };
53
+ function registerLibraryFiles(libName, lib) {
54
+ for (const [key, value] of Object.entries(lib._TypeSpecLibrary_.typespecSourceFiles)) {
53
55
  virtualFs.set(`/test/node_modules/${libName}/${key}`, value);
54
56
  }
55
- for (const [key, value] of Object.entries(_TypeSpecLibrary_.jsSourceFiles)) {
57
+ for (const [key, value] of Object.entries(lib._TypeSpecLibrary_.jsSourceFiles)) {
56
58
  addJsImport(`/test/node_modules/${libName}/${key}`, value);
57
59
  }
58
60
  }
59
- virtualFs.set(
60
- `/test/package.json`,
61
- JSON.stringify({
62
- name: "playground-pkg",
63
- dependencies: Object.fromEntries(
64
- Object.values(libraries).map((x) => [x.name, x.packageJson.version])
65
- )
66
- })
67
- );
61
+ function updatePackageJson() {
62
+ virtualFs.set(
63
+ `/test/package.json`,
64
+ JSON.stringify({
65
+ name: "playground-pkg",
66
+ dependencies: Object.fromEntries(
67
+ Object.values(libraries).map((x) => [x.name, x.packageJson.version])
68
+ )
69
+ })
70
+ );
71
+ }
72
+ for (const [libName, lib] of Object.entries(libraries)) {
73
+ registerLibraryFiles(libName, lib);
74
+ }
75
+ updatePackageJson();
68
76
  function addJsImport(path, value) {
69
77
  virtualFs.set(path, "");
70
78
  jsImports.set(path, value);
@@ -174,24 +182,33 @@ function createBrowserHostInternal(options) {
174
182
  }
175
183
  };
176
184
  }
185
+ async function loadLibraries(libsToLoad, importOptions = {}) {
186
+ const entries = await Promise.all(
187
+ libsToLoad.map(async (libName) => {
188
+ const { _TypeSpecLibrary_, $lib, $linter } = await importLibrary(
189
+ libName,
190
+ importOptions
191
+ );
192
+ const lib = {
193
+ name: libName,
194
+ isEmitter: $lib?.emitter,
195
+ definition: $lib,
196
+ packageJson: JSON.parse(_TypeSpecLibrary_.typespecSourceFiles["package.json"]),
197
+ linter: $linter,
198
+ _TypeSpecLibrary_
199
+ };
200
+ return [libName, lib];
201
+ })
202
+ );
203
+ return Object.fromEntries(entries);
204
+ }
177
205
  async function createBrowserHost(libsToLoad, importOptions = {}) {
178
- const libraries = {};
179
- for (const libName of libsToLoad) {
180
- const { _TypeSpecLibrary_, $lib, $linter } = await importLibrary(
181
- libName,
182
- importOptions
183
- );
184
- libraries[libName] = {
185
- name: libName,
186
- isEmitter: $lib?.emitter,
187
- definition: $lib,
188
- packageJson: JSON.parse(_TypeSpecLibrary_.typespecSourceFiles["package.json"]),
189
- linter: $linter,
190
- _TypeSpecLibrary_
191
- };
192
- }
206
+ const [libraries, compiler] = await Promise.all([
207
+ loadLibraries(libsToLoad, importOptions),
208
+ importTypeSpecCompiler(importOptions)
209
+ ]);
193
210
  return createBrowserHostInternal({
194
- compiler: await importTypeSpecCompiler(importOptions),
211
+ compiler,
195
212
  libraries
196
213
  });
197
214
  }
@@ -1,6 +1,14 @@
1
1
  import { LibraryImportOptions } from './core.js';
2
- import { BrowserHost } from './types.js';
2
+ import { BrowserHost, PlaygroundTspLibrary } from './types.js';
3
3
  export declare function resolveVirtualPath(path: string, ...paths: string[]): string;
4
+ /**
5
+ * Load libraries in parallel from the given list.
6
+ * @param libsToLoad List of library names. Must be available in the webpage importmap.
7
+ * @param importOptions Import configuration.
8
+ */
9
+ export declare function loadLibraries(libsToLoad: readonly string[], importOptions?: LibraryImportOptions): Promise<Record<string, PlaygroundTspLibrary & {
10
+ _TypeSpecLibrary_: any;
11
+ }>>;
4
12
  /**
5
13
  * Create the browser host from the list of libraries.
6
14
  * @param libsToLoad List of libraries to load. Those must be set in the webpage importmap.
@@ -1 +1 @@
1
- {"version":3,"file":"browser-host.d.ts","sourceRoot":"","sources":["../../src/browser-host.ts"],"names":[],"mappings":"AACA,OAAO,EAAyC,KAAK,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAC7F,OAAO,KAAK,EAAE,WAAW,EAAwB,MAAM,YAAY,CAAC;AAEpE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,UAElE;AAsKD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,aAAa,GAAE,oBAAyB,GACvC,OAAO,CAAC,WAAW,CAAC,CAoBtB"}
1
+ {"version":3,"file":"browser-host.d.ts","sourceRoot":"","sources":["../../src/browser-host.ts"],"names":[],"mappings":"AACA,OAAO,EAAyC,KAAK,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAC7F,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEpE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,UAElE;AAmLD;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,aAAa,GAAE,oBAAyB,GACvC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,GAAG;IAAE,iBAAiB,EAAE,GAAG,CAAA;CAAE,CAAC,CAAC,CAmB5E;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,aAAa,GAAE,oBAAyB,GACvC,OAAO,CAAC,WAAW,CAAC,CAStB"}
@@ -1 +1 @@
1
- {"version":3,"file":"emitter-options-form.d.ts","sourceRoot":"","sources":["../../../../src/react/settings/emitter-options-form.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAkC,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC/E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;CAC5D;AAED,eAAO,MAAM,kBAAkB,EAAE,iBAAiB,CAAC,uBAAuB,CAiDzE,CAAC"}
1
+ {"version":3,"file":"emitter-options-form.d.ts","sourceRoot":"","sources":["../../../../src/react/settings/emitter-options-form.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAkC,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC/E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;CAC5D;AAED,eAAO,MAAM,kBAAkB,EAAE,iBAAiB,CAAC,uBAAuB,CAoDzE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typespec/playground",
3
- "version": "0.13.0-dev.3",
3
+ "version": "0.13.0-dev.5",
4
4
  "author": "Microsoft Corporation",
5
5
  "description": "TypeSpec playground UI components.",
6
6
  "homepage": "https://typespec.io",
@@ -62,14 +62,14 @@
62
62
  "@fluentui/react-components": "~9.73.1",
63
63
  "@fluentui/react-icons": "^2.0.292",
64
64
  "@typespec/bundler": "^0.5.0 || >= 0.5.1-dev.1",
65
- "@typespec/compiler": "^1.9.0 || >= 1.10.0-dev.8",
66
- "@typespec/html-program-viewer": "^0.79.0 || >= 0.80.0-dev.2",
67
- "@typespec/http": "^1.9.1 || >= 1.10.0-dev.3",
65
+ "@typespec/compiler": "^1.9.0 || >= 1.10.0-dev.10",
66
+ "@typespec/html-program-viewer": "^0.79.0 || >= 0.80.0-dev.3",
67
+ "@typespec/http": "^1.9.1 || >= 1.10.0-dev.5",
68
68
  "@typespec/openapi": "^1.9.0 || >= 1.10.0-dev.4",
69
- "@typespec/openapi3": "^1.9.0 || >= 1.10.0-dev.6",
69
+ "@typespec/openapi3": "^1.9.0 || >= 1.10.0-dev.8",
70
70
  "@typespec/protobuf": "^0.79.0 || >= 0.80.0-dev.2",
71
71
  "@typespec/rest": "^0.79.0 || >= 0.80.0-dev.2",
72
- "@typespec/versioning": "^0.79.0 || >= 0.80.0-dev.2",
72
+ "@typespec/versioning": "^0.79.0 || >= 0.80.0-dev.3",
73
73
  "clsx": "^2.1.1",
74
74
  "debounce": "~3.0.0",
75
75
  "lzutf8": "0.6.3",