@typespec/playground 0.1.0-alpha.0

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.
Files changed (134) hide show
  1. package/README.md +64 -0
  2. package/dist/src/browser-host.d.ts +11 -0
  3. package/dist/src/browser-host.d.ts.map +1 -0
  4. package/dist/src/browser-host.js +129 -0
  5. package/dist/src/browser-host.js.map +1 -0
  6. package/dist/src/core.d.ts +7 -0
  7. package/dist/src/core.d.ts.map +1 -0
  8. package/dist/src/core.js +17 -0
  9. package/dist/src/core.js.map +1 -0
  10. package/dist/src/index.d.ts +7 -0
  11. package/dist/src/index.d.ts.map +1 -0
  12. package/dist/src/index.js +6 -0
  13. package/dist/src/index.js.map +1 -0
  14. package/dist/src/manifest.d.ts +3 -0
  15. package/dist/src/manifest.d.ts.map +1 -0
  16. package/dist/src/manifest.js +5 -0
  17. package/dist/src/manifest.js.map +1 -0
  18. package/dist/src/monaco-worker.d.ts +2 -0
  19. package/dist/src/monaco-worker.d.ts.map +1 -0
  20. package/dist/src/monaco-worker.js +18 -0
  21. package/dist/src/monaco-worker.js.map +1 -0
  22. package/dist/src/react/diagnostic-list.d.ts +11 -0
  23. package/dist/src/react/diagnostic-list.d.ts.map +1 -0
  24. package/dist/src/react/diagnostic-list.js +16 -0
  25. package/dist/src/react/diagnostic-list.js.map +1 -0
  26. package/dist/src/react/editor-command-bar.d.ts +19 -0
  27. package/dist/src/react/editor-command-bar.d.ts.map +1 -0
  28. package/dist/src/react/editor-command-bar.js +15 -0
  29. package/dist/src/react/editor-command-bar.js.map +1 -0
  30. package/dist/src/react/editor.d.ts +14 -0
  31. package/dist/src/react/editor.d.ts.map +1 -0
  32. package/dist/src/react/editor.js +37 -0
  33. package/dist/src/react/editor.js.map +1 -0
  34. package/dist/src/react/emitter-dropdown.d.ts +8 -0
  35. package/dist/src/react/emitter-dropdown.d.ts.map +1 -0
  36. package/dist/src/react/emitter-dropdown.js +13 -0
  37. package/dist/src/react/emitter-dropdown.js.map +1 -0
  38. package/dist/src/react/error-tab.d.ts +12 -0
  39. package/dist/src/react/error-tab.d.ts.map +1 -0
  40. package/dist/src/react/error-tab.js +20 -0
  41. package/dist/src/react/error-tab.js.map +1 -0
  42. package/dist/src/react/file-output.d.ts +12 -0
  43. package/dist/src/react/file-output.d.ts.map +1 -0
  44. package/dist/src/react/file-output.js +31 -0
  45. package/dist/src/react/file-output.js.map +1 -0
  46. package/dist/src/react/footer.d.ts +3 -0
  47. package/dist/src/react/footer.d.ts.map +1 -0
  48. package/dist/src/react/footer.js +29 -0
  49. package/dist/src/react/footer.js.map +1 -0
  50. package/dist/src/react/hooks.d.ts +15 -0
  51. package/dist/src/react/hooks.d.ts.map +1 -0
  52. package/dist/src/react/hooks.js +50 -0
  53. package/dist/src/react/hooks.js.map +1 -0
  54. package/dist/src/react/index.d.ts +4 -0
  55. package/dist/src/react/index.d.ts.map +1 -0
  56. package/dist/src/react/index.js +4 -0
  57. package/dist/src/react/index.js.map +1 -0
  58. package/dist/src/react/output-tabs.d.ts +19 -0
  59. package/dist/src/react/output-tabs.d.ts.map +1 -0
  60. package/dist/src/react/output-tabs.js +38 -0
  61. package/dist/src/react/output-tabs.js.map +1 -0
  62. package/dist/src/react/output-view.d.ts +9 -0
  63. package/dist/src/react/output-view.d.ts.map +1 -0
  64. package/dist/src/react/output-view.js +99 -0
  65. package/dist/src/react/output-view.js.map +1 -0
  66. package/dist/src/react/playground.d.ts +56 -0
  67. package/dist/src/react/playground.d.ts.map +1 -0
  68. package/dist/src/react/playground.js +186 -0
  69. package/dist/src/react/playground.js.map +1 -0
  70. package/dist/src/react/samples-dropdown.d.ts +9 -0
  71. package/dist/src/react/samples-dropdown.d.ts.map +1 -0
  72. package/dist/src/react/samples-dropdown.js +15 -0
  73. package/dist/src/react/samples-dropdown.js.map +1 -0
  74. package/dist/src/react/settings/compiler-settings.d.ts +11 -0
  75. package/dist/src/react/settings/compiler-settings.d.ts.map +1 -0
  76. package/dist/src/react/settings/compiler-settings.js +42 -0
  77. package/dist/src/react/settings/compiler-settings.js.map +1 -0
  78. package/dist/src/react/settings/emitter-options-form.d.ts +10 -0
  79. package/dist/src/react/settings/emitter-options-form.d.ts.map +1 -0
  80. package/dist/src/react/settings/emitter-options-form.js +39 -0
  81. package/dist/src/react/settings/emitter-options-form.js.map +1 -0
  82. package/dist/src/react/settings/linter-form.d.ts +10 -0
  83. package/dist/src/react/settings/linter-form.d.ts.map +1 -0
  84. package/dist/src/react/settings/linter-form.js +33 -0
  85. package/dist/src/react/settings/linter-form.js.map +1 -0
  86. package/dist/src/react/standalone.d.ts +9 -0
  87. package/dist/src/react/standalone.d.ts.map +1 -0
  88. package/dist/src/react/standalone.js +63 -0
  89. package/dist/src/react/standalone.js.map +1 -0
  90. package/dist/src/react/swagger-ui.d.ts +6 -0
  91. package/dist/src/react/swagger-ui.d.ts.map +1 -0
  92. package/dist/src/react/swagger-ui.js +19 -0
  93. package/dist/src/react/swagger-ui.js.map +1 -0
  94. package/dist/src/react/types.d.ts +26 -0
  95. package/dist/src/react/types.d.ts.map +1 -0
  96. package/dist/src/react/types.js +2 -0
  97. package/dist/src/react/types.js.map +1 -0
  98. package/dist/src/react/typespec-editor.d.ts +12 -0
  99. package/dist/src/react/typespec-editor.d.ts.map +1 -0
  100. package/dist/src/react/typespec-editor.js +30 -0
  101. package/dist/src/react/typespec-editor.js.map +1 -0
  102. package/dist/src/react/viewers.d.ts +3 -0
  103. package/dist/src/react/viewers.d.ts.map +1 -0
  104. package/dist/src/react/viewers.js +8 -0
  105. package/dist/src/react/viewers.js.map +1 -0
  106. package/dist/src/services.d.ts +6 -0
  107. package/dist/src/services.d.ts.map +1 -0
  108. package/dist/src/services.js +323 -0
  109. package/dist/src/services.js.map +1 -0
  110. package/dist/src/state-storage.d.ts +21 -0
  111. package/dist/src/state-storage.d.ts.map +1 -0
  112. package/dist/src/state-storage.js +81 -0
  113. package/dist/src/state-storage.js.map +1 -0
  114. package/dist/src/types.d.ts +11 -0
  115. package/dist/src/types.d.ts.map +1 -0
  116. package/dist/src/types.js +2 -0
  117. package/dist/src/types.js.map +1 -0
  118. package/dist/src/utils.d.ts +8 -0
  119. package/dist/src/utils.d.ts.map +1 -0
  120. package/dist/src/utils.js +14 -0
  121. package/dist/src/utils.js.map +1 -0
  122. package/dist/src/vite/index.d.ts +4 -0
  123. package/dist/src/vite/index.d.ts.map +1 -0
  124. package/dist/src/vite/index.js +92 -0
  125. package/dist/src/vite/index.js.map +1 -0
  126. package/dist/src/vite/types.d.ts +15 -0
  127. package/dist/src/vite/types.d.ts.map +1 -0
  128. package/dist/src/vite/types.js +2 -0
  129. package/dist/src/vite/types.js.map +1 -0
  130. package/dist/vite.config.d.ts +3 -0
  131. package/dist/vite.config.d.ts.map +1 -0
  132. package/dist/vite.config.js +38 -0
  133. package/dist/vite.config.js.map +1 -0
  134. package/package.json +96 -0
@@ -0,0 +1,323 @@
1
+ import { TypeSpecLanguageConfiguration, } from "@typespec/compiler";
2
+ import * as monaco from "monaco-editor";
3
+ import * as lsp from "vscode-languageserver";
4
+ import { DocumentHighlightKind, FormattingOptions } from "vscode-languageserver";
5
+ import { TextDocument } from "vscode-languageserver-textdocument";
6
+ import { importTypeSpecCompiler } from "./core.js";
7
+ function getIndentAction(value) {
8
+ switch (value) {
9
+ case "none":
10
+ return monaco.languages.IndentAction.None;
11
+ case "indent":
12
+ return monaco.languages.IndentAction.Indent;
13
+ case "indentOutdent":
14
+ return monaco.languages.IndentAction.IndentOutdent;
15
+ case "outdent":
16
+ return monaco.languages.IndentAction.Outdent;
17
+ }
18
+ }
19
+ function getTypeSpecLanguageConfiguration() {
20
+ return {
21
+ ...TypeSpecLanguageConfiguration,
22
+ onEnterRules: TypeSpecLanguageConfiguration.onEnterRules.map((rule) => {
23
+ return {
24
+ beforeText: new RegExp(rule.beforeText.pattern),
25
+ previousLineText: "previousLineText" in rule ? new RegExp(rule.previousLineText.pattern) : undefined,
26
+ action: {
27
+ indentAction: getIndentAction(rule.action.indent),
28
+ appendText: "appendText" in rule.action ? rule.action.appendText : undefined,
29
+ removeText: "removeText" in rule.action ? rule.action.removeText : undefined,
30
+ },
31
+ };
32
+ }),
33
+ };
34
+ }
35
+ export async function registerMonacoLanguage(host) {
36
+ monaco.languages.register({ id: "typespec", extensions: [".tsp"] });
37
+ monaco.languages.setLanguageConfiguration("typespec", getTypeSpecLanguageConfiguration());
38
+ const serverHost = {
39
+ compilerHost: host,
40
+ getOpenDocumentByURL(url) {
41
+ const model = monaco.editor.getModel(monaco.Uri.parse(url));
42
+ return model ? textDocumentForModel(model) : undefined;
43
+ },
44
+ sendDiagnostics() { },
45
+ // eslint-disable-next-line no-console
46
+ log: console.log,
47
+ };
48
+ const { createServer } = await importTypeSpecCompiler();
49
+ const serverLib = createServer(serverHost);
50
+ const lsConfig = await serverLib.initialize({
51
+ capabilities: {},
52
+ processId: 1,
53
+ workspaceFolders: [],
54
+ rootUri: "inmemory://",
55
+ });
56
+ serverLib.initialized({});
57
+ function textDocumentForModel(model) {
58
+ return TextDocument.create(model.uri.toString(), "typespec", model.getVersionId(), model.getValue());
59
+ }
60
+ function lspDocumentArgs(model) {
61
+ return {
62
+ textDocument: textDocumentForModel(model),
63
+ };
64
+ }
65
+ function lspArgs(model, pos) {
66
+ return {
67
+ ...lspDocumentArgs(model),
68
+ position: lspPosition(pos),
69
+ };
70
+ }
71
+ function lspPosition(pos) {
72
+ return {
73
+ line: pos.lineNumber - 1,
74
+ character: pos.column - 1,
75
+ };
76
+ }
77
+ function lspFormattingOptions(options) {
78
+ return FormattingOptions.create(options.tabSize, options.insertSpaces);
79
+ }
80
+ function monacoLocation(loc) {
81
+ return {
82
+ uri: monaco.Uri.parse(loc.uri),
83
+ range: monacoRange(loc.range),
84
+ };
85
+ }
86
+ function monacoDocumentHighlight(highlight) {
87
+ return {
88
+ range: monacoRange(highlight.range),
89
+ kind: monacoDocumentHighlightKind(highlight.kind),
90
+ };
91
+ }
92
+ function monacoDocumentHighlightKind(kind) {
93
+ switch (kind) {
94
+ case DocumentHighlightKind.Text:
95
+ return monaco.languages.DocumentHighlightKind.Text;
96
+ case DocumentHighlightKind.Read:
97
+ return monaco.languages.DocumentHighlightKind.Read;
98
+ case DocumentHighlightKind.Write:
99
+ return monaco.languages.DocumentHighlightKind.Write;
100
+ default:
101
+ return undefined;
102
+ }
103
+ }
104
+ function monacoHoverContents(contents) {
105
+ return [{ value: contents.value }];
106
+ }
107
+ function monacoHover(hover) {
108
+ // eslint-disable-next-line deprecation/deprecation
109
+ if (Array.isArray(hover.contents) || lsp.MarkedString.is(hover.contents)) {
110
+ throw new Error("MarkedString (deprecated) not supported.");
111
+ }
112
+ return {
113
+ contents: monacoHoverContents(hover.contents),
114
+ range: hover.range ? monacoRange(hover.range) : undefined,
115
+ };
116
+ }
117
+ function monacoSignatureHelp(help) {
118
+ var _a, _b, _c;
119
+ return {
120
+ signatures: (_a = help === null || help === void 0 ? void 0 : help.signatures.map((x) => {
121
+ var _a;
122
+ return ({
123
+ ...x,
124
+ parameters: (_a = x.parameters) !== null && _a !== void 0 ? _a : [],
125
+ });
126
+ })) !== null && _a !== void 0 ? _a : [],
127
+ activeSignature: (_b = help === null || help === void 0 ? void 0 : help.activeSignature) !== null && _b !== void 0 ? _b : 0,
128
+ activeParameter: (_c = help === null || help === void 0 ? void 0 : help.activeParameter) !== null && _c !== void 0 ? _c : 0,
129
+ };
130
+ }
131
+ function monacoRange(range) {
132
+ return {
133
+ startColumn: range.start.character + 1,
134
+ startLineNumber: range.start.line + 1,
135
+ endColumn: range.end.character + 1,
136
+ endLineNumber: range.end.line + 1,
137
+ };
138
+ }
139
+ function monacoFoldingRange(range) {
140
+ return {
141
+ start: range.startLine + 1,
142
+ end: range.endLine + 1,
143
+ kind: range.kind ? new monaco.languages.FoldingRangeKind(range.kind) : undefined,
144
+ };
145
+ }
146
+ function monacoTextEdits(edit) {
147
+ return edit.map(monacoTextEdit);
148
+ }
149
+ function monacoTextEdit(edit) {
150
+ return {
151
+ range: monacoRange(edit.range),
152
+ text: edit.newText,
153
+ };
154
+ }
155
+ function monacoWorkspaceEdit(edit) {
156
+ var _a;
157
+ const edits = [];
158
+ for (const [uri, changes] of Object.entries((_a = edit.changes) !== null && _a !== void 0 ? _a : {})) {
159
+ const resource = monaco.Uri.parse(uri);
160
+ for (const change of changes) {
161
+ edits.push({ resource, textEdit: monacoTextEdit(change), versionId: undefined });
162
+ }
163
+ }
164
+ return { edits };
165
+ }
166
+ monaco.languages.registerDefinitionProvider("typespec", {
167
+ async provideDefinition(model, position) {
168
+ const results = await serverLib.gotoDefinition(lspArgs(model, position));
169
+ return results.map(monacoLocation);
170
+ },
171
+ });
172
+ monaco.languages.registerReferenceProvider("typespec", {
173
+ async provideReferences(model, position, context) {
174
+ const results = await serverLib.findReferences({ ...lspArgs(model, position), context });
175
+ return results.map(monacoLocation);
176
+ },
177
+ });
178
+ monaco.languages.registerRenameProvider("typespec", {
179
+ async resolveRenameLocation(model, position) {
180
+ var _a;
181
+ const result = await serverLib.prepareRename(lspArgs(model, position));
182
+ if (!result) {
183
+ throw new Error("This element can't be renamed.");
184
+ }
185
+ const text = (_a = model.getWordAtPosition(position)) === null || _a === void 0 ? void 0 : _a.word;
186
+ if (!text) {
187
+ throw new Error("Failed to obtain word at position.");
188
+ }
189
+ return { text, range: monacoRange(result) };
190
+ },
191
+ async provideRenameEdits(model, position, newName) {
192
+ const result = await serverLib.rename({ ...lspArgs(model, position), newName });
193
+ return monacoWorkspaceEdit(result);
194
+ },
195
+ });
196
+ monaco.languages.registerFoldingRangeProvider("typespec", {
197
+ async provideFoldingRanges(model) {
198
+ const ranges = await serverLib.getFoldingRanges(lspDocumentArgs(model));
199
+ const output = ranges.map(monacoFoldingRange);
200
+ return output;
201
+ },
202
+ });
203
+ monaco.languages.registerHoverProvider("typespec", {
204
+ async provideHover(model, position) {
205
+ const hover = await serverLib.getHover(lspArgs(model, position));
206
+ return monacoHover(hover);
207
+ },
208
+ });
209
+ monaco.languages.registerSignatureHelpProvider("typespec", {
210
+ signatureHelpTriggerCharacters: ["(", ",", "<"],
211
+ signatureHelpRetriggerCharacters: [")"],
212
+ async provideSignatureHelp(model, position) {
213
+ const help = await serverLib.getSignatureHelp(lspArgs(model, position));
214
+ return { value: monacoSignatureHelp(help), dispose: () => { } };
215
+ },
216
+ });
217
+ monaco.languages.registerDocumentFormattingEditProvider("typespec", {
218
+ async provideDocumentFormattingEdits(model, options, token) {
219
+ const edits = await serverLib.formatDocument({
220
+ ...lspDocumentArgs(model),
221
+ options: lspFormattingOptions(options),
222
+ });
223
+ return monacoTextEdits(edits);
224
+ },
225
+ });
226
+ monaco.languages.registerDocumentHighlightProvider("typespec", {
227
+ async provideDocumentHighlights(model, position) {
228
+ const highlights = await serverLib.findDocumentHighlight(lspArgs(model, position));
229
+ return highlights.map(monacoDocumentHighlight);
230
+ },
231
+ });
232
+ monaco.languages.registerCompletionItemProvider("typespec", {
233
+ triggerCharacters: lsConfig.capabilities.completionProvider.triggerCharacters,
234
+ async provideCompletionItems(model, position) {
235
+ var _a;
236
+ const result = await serverLib.complete(lspArgs(model, position));
237
+ const word = model.getWordUntilPosition(position);
238
+ const range = {
239
+ startLineNumber: position.lineNumber,
240
+ endLineNumber: position.lineNumber,
241
+ startColumn: word.startColumn,
242
+ endColumn: word.endColumn,
243
+ };
244
+ const suggestions = [];
245
+ for (const item of result.items) {
246
+ suggestions.push({
247
+ label: item.label,
248
+ kind: item.kind,
249
+ documentation: item.documentation,
250
+ insertText: item.insertText,
251
+ range,
252
+ commitCharacters: (_a = item.commitCharacters) !== null && _a !== void 0 ? _a : lsConfig.capabilities.completionProvider.allCommitCharacters,
253
+ tags: item.tags,
254
+ });
255
+ }
256
+ return { suggestions };
257
+ },
258
+ });
259
+ monaco.editor.defineTheme("typespec", {
260
+ base: "vs",
261
+ inherit: true,
262
+ colors: {},
263
+ rules: [
264
+ { token: "macro", foreground: "#800000" },
265
+ { token: "function", foreground: "#795E26" },
266
+ ],
267
+ });
268
+ monaco.editor.setTheme("typespec");
269
+ monaco.languages.registerDocumentSemanticTokensProvider("typespec", {
270
+ getLegend() {
271
+ const legend = lsConfig.capabilities.semanticTokensProvider.legend;
272
+ return {
273
+ tokenModifiers: legend.tokenModifiers,
274
+ tokenTypes: legend.tokenTypes.map((entry) => {
275
+ switch (entry) {
276
+ case "namespace":
277
+ case "class":
278
+ case "enum":
279
+ case "typeParameter":
280
+ case "struct":
281
+ case "interface":
282
+ return "type";
283
+ case "property":
284
+ case "enumMember":
285
+ return "variable";
286
+ case "docCommentTag":
287
+ return "keyword";
288
+ default:
289
+ return entry;
290
+ }
291
+ }),
292
+ };
293
+ },
294
+ async provideDocumentSemanticTokens(model) {
295
+ const result = await serverLib.buildSemanticTokens(lspDocumentArgs(model));
296
+ return {
297
+ resultId: result.resultId,
298
+ data: new Uint32Array(result.data),
299
+ };
300
+ },
301
+ releaseDocumentSemanticTokens() { },
302
+ });
303
+ }
304
+ export function getMarkerLocation(typespecCompiler, target) {
305
+ const loc = typespecCompiler.getSourceLocation(target);
306
+ if (loc === undefined || loc.file.path !== "/test/main.tsp") {
307
+ return {
308
+ startLineNumber: 1,
309
+ startColumn: 1,
310
+ endLineNumber: 1,
311
+ endColumn: 1,
312
+ };
313
+ }
314
+ const start = loc.file.getLineAndCharacterOfPosition(loc.pos);
315
+ const end = loc.file.getLineAndCharacterOfPosition(loc.end);
316
+ return {
317
+ startLineNumber: start.line + 1,
318
+ startColumn: start.character + 1,
319
+ endLineNumber: end.line + 1,
320
+ endColumn: end.character + 1,
321
+ };
322
+ }
323
+ //# sourceMappingURL=services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../../src/services.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export interface StateStorage<T extends object> {
2
+ load(): Partial<T>;
3
+ save(t: Partial<T>): void;
4
+ }
5
+ export type UrlStorageSchema<T> = {
6
+ [key in keyof T]: UrlStorageItem;
7
+ };
8
+ export interface UrlStorageItem {
9
+ /** Name of the query parameter where the data will be serialized. */
10
+ queryParam: string;
11
+ type?: "string" | "object";
12
+ /** Encoding the data should be compressed with. If undefined param will not be compressed. */
13
+ compress?: "lz-base64";
14
+ }
15
+ /**
16
+ * Generic storage mechanism for data in the playground.
17
+ * @param schema Schema of the data to be serialized in the query
18
+ * @returns
19
+ */
20
+ export declare function createUrlStateStorage<const T extends object>(schema: UrlStorageSchema<T>): StateStorage<T>;
21
+ //# sourceMappingURL=state-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-storage.d.ts","sourceRoot":"","sources":["../../src/state-storage.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,MAAM;IAC5C,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACnB,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;KAC/B,GAAG,IAAI,MAAM,CAAC,GAAG,cAAc;CACjC,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,qEAAqE;IACrE,UAAU,EAAE,MAAM,CAAC;IAEnB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAE3B,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,EAC1D,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAC1B,YAAY,CAAC,CAAC,CAAC,CAgFjB"}
@@ -0,0 +1,81 @@
1
+ import lzutf8 from "lzutf8";
2
+ /**
3
+ * Generic storage mechanism for data in the playground.
4
+ * @param schema Schema of the data to be serialized in the query
5
+ * @returns
6
+ */
7
+ export function createUrlStateStorage(schema) {
8
+ return { load, save };
9
+ function load() {
10
+ const result = {};
11
+ const parsed = new URLSearchParams(window.location.search);
12
+ for (const [key, item] of Object.entries(schema)) {
13
+ const value = parsed.get(item.queryParam);
14
+ const decompressed = value && decompress(item, value);
15
+ const deserialized = decompressed && deserialize(item, decompressed);
16
+ if (deserialized) {
17
+ result[key] = deserialized;
18
+ }
19
+ }
20
+ return result;
21
+ }
22
+ function decompress(item, value) {
23
+ if (item.compress) {
24
+ try {
25
+ return lzutf8.decompress(value, { inputEncoding: "Base64" });
26
+ }
27
+ catch (e) {
28
+ // eslint-disable-next-line no-console
29
+ console.error(`Error decompressing query parameter ${item.queryParam} with content:`, value);
30
+ return undefined;
31
+ }
32
+ }
33
+ else {
34
+ return value;
35
+ }
36
+ }
37
+ function deserialize(item, value) {
38
+ if (item.type === "object") {
39
+ try {
40
+ return JSON.parse(value);
41
+ }
42
+ catch (e) {
43
+ // eslint-disable-next-line no-console
44
+ console.error(`Error decompressing query parameter ${item.queryParam} with content:`, value);
45
+ return undefined;
46
+ }
47
+ }
48
+ else {
49
+ return value;
50
+ }
51
+ }
52
+ function save(data) {
53
+ const params = new URLSearchParams();
54
+ for (const [key, item] of Object.entries(schema)) {
55
+ const value = data[key];
56
+ if (value) {
57
+ const serialized = serialize(item, value);
58
+ const compressed = compress(item, serialized);
59
+ params.append(item.queryParam, compressed);
60
+ }
61
+ }
62
+ history.pushState(null, "", window.location.pathname + "?" + params.toString());
63
+ }
64
+ function compress(item, value) {
65
+ if (item.compress) {
66
+ return lzutf8.compress(value, { outputEncoding: "Base64" });
67
+ }
68
+ else {
69
+ return value;
70
+ }
71
+ }
72
+ function serialize(item, value) {
73
+ if (item.type === "object") {
74
+ return JSON.stringify(value);
75
+ }
76
+ else {
77
+ return value;
78
+ }
79
+ }
80
+ }
81
+ //# sourceMappingURL=state-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-storage.js","sourceRoot":"","sources":["../../src/state-storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { CompilerOptions } from "@typespec/compiler";
2
+ export interface PlaygroundSample {
3
+ filename: string;
4
+ preferredEmitter?: string;
5
+ content: string;
6
+ /**
7
+ * Compiler options for the sample.
8
+ */
9
+ compilerOptions?: CompilerOptions;
10
+ }
11
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import { PlaygroundTspLibrary } from "./react/types.js";
2
+ /**
3
+ * Filter emitters in given list of libraries
4
+ * @param names List of libraries that could include emitters
5
+ * @returns Names of all the emitters
6
+ */
7
+ export declare function resolveLibraries(names: string[]): Promise<PlaygroundTspLibrary[]>;
8
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAOvF"}
@@ -0,0 +1,14 @@
1
+ import { importLibrary } from "./core.js";
2
+ /**
3
+ * Filter emitters in given list of libraries
4
+ * @param names List of libraries that could include emitters
5
+ * @returns Names of all the emitters
6
+ */
7
+ export async function resolveLibraries(names) {
8
+ return await Promise.all(names.map(async (x) => {
9
+ var _a;
10
+ const lib = await importLibrary(x);
11
+ return { name: x, isEmitter: (_a = lib.$lib) === null || _a === void 0 ? void 0 : _a.emitter, definition: lib.$lib };
12
+ }));
13
+ }
14
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG1C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAe;IACpD,OAAO,MAAM,OAAO,CAAC,GAAG,CACtB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;;QACpB,MAAM,GAAG,GAAQ,MAAM,aAAa,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,MAAA,GAAG,CAAC,IAAI,0CAAE,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;IACzE,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { UserConfig } from "vite";
2
+ import { PlaygroundUserConfig } from "./types.js";
3
+ export declare function definePlaygroundViteConfig(config: PlaygroundUserConfig): UserConfig;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/vite/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0B,UAAU,EAAE,MAAM,MAAM,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,oBAAoB,GAAG,UAAU,CA2CnF"}
@@ -0,0 +1,92 @@
1
+ import { typespecBundlePlugin } from "@typespec/bundler";
2
+ import react from "@vitejs/plugin-react";
3
+ export function definePlaygroundViteConfig(config) {
4
+ return {
5
+ base: "./",
6
+ build: {
7
+ target: "esnext",
8
+ chunkSizeWarningLimit: 3000,
9
+ rollupOptions: {
10
+ output: {
11
+ manualChunks(id) {
12
+ if (id.includes("/node_modules/monaco-editor/esm/vs/editor")) {
13
+ return "monaco";
14
+ }
15
+ return undefined;
16
+ },
17
+ },
18
+ },
19
+ },
20
+ esbuild: {
21
+ logOverride: { "this-is-undefined-in-esm": "silent" },
22
+ },
23
+ assetsInclude: [/\.tsp$/],
24
+ optimizeDeps: {
25
+ exclude: ["swagger-ui"],
26
+ },
27
+ plugins: [
28
+ react({
29
+ jsxImportSource: "@emotion/react",
30
+ babel: {
31
+ plugins: ["@emotion/babel-plugin"],
32
+ },
33
+ }),
34
+ playgroundManifestPlugin(config),
35
+ typespecBundlePlugin({
36
+ folderName: "libs",
37
+ libraries: config.libraries,
38
+ }),
39
+ ],
40
+ server: {
41
+ fs: {
42
+ strict: false,
43
+ },
44
+ },
45
+ };
46
+ }
47
+ function playgroundManifestPlugin(config) {
48
+ const { samples, ...manifest } = config;
49
+ let viteConfig;
50
+ return {
51
+ name: "playground-manifest",
52
+ async configResolved(c) {
53
+ viteConfig = c;
54
+ },
55
+ resolveId(id) {
56
+ if (id === "playground-manifest.js") {
57
+ return id;
58
+ }
59
+ return null;
60
+ },
61
+ load(id) {
62
+ if (id === `playground-manifest.js`) {
63
+ const sampleImport = Object.values(samples)
64
+ .map((sampleValue, index) => `import s${index} from "${viteConfig.root}/${sampleValue.filename}?raw"`)
65
+ .join("\n");
66
+ const sampleObj = [
67
+ "{",
68
+ ...Object.entries(samples).map(([label, config], index) => `${JSON.stringify(label)}: {
69
+ fileName: ${JSON.stringify(config.filename)},
70
+ preferredEmitter: ${config.preferredEmitter ? JSON.stringify(config.preferredEmitter) : "undefined"},
71
+ content: s${index},
72
+ ${config.compilerOptions
73
+ ? `compilerOptions: ${JSON.stringify(config.compilerOptions)},`
74
+ : ""}
75
+
76
+ }, `),
77
+ "}",
78
+ ].join("\n");
79
+ const file = `
80
+ ${sampleImport};
81
+
82
+ export default {
83
+ ...${JSON.stringify(manifest)},
84
+ samples: ${sampleObj}
85
+ };`;
86
+ return file;
87
+ }
88
+ return undefined;
89
+ },
90
+ };
91
+ }
92
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/vite/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { PlaygroundLinks } from "../react/playground.js";
2
+ import { PlaygroundSample } from "../types.js";
3
+ type PlaygroundSampleConfig = Omit<PlaygroundSample, "content">;
4
+ export interface PlaygroundUserConfig extends Omit<PlaygroundConfig, "samples"> {
5
+ samples: Record<string, PlaygroundSampleConfig>;
6
+ }
7
+ export interface PlaygroundConfig {
8
+ defaultEmitter: string;
9
+ libraries: string[];
10
+ samples: Record<string, PlaygroundSample>;
11
+ enableSwaggerUI: boolean;
12
+ links?: PlaygroundLinks;
13
+ }
14
+ export {};
15
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/vite/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,KAAK,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;AAChE,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC;IAC7E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC1C,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/vite/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ declare const config: import("vite").UserConfig;
2
+ export default config;
3
+ //# sourceMappingURL=vite.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite.config.d.ts","sourceRoot":"","sources":["../vite.config.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,2BAiCV,CAAC;AAEH,eAAe,MAAM,CAAC"}