@deot/docs-playground 1.1.3 → 1.1.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/README.md CHANGED
@@ -156,6 +156,7 @@ const handleMessage = async () => {
156
156
  - Playground 运行时通过公共 CDN 加载 Vue 和默认 import map 中的依赖,手工预览需要网络访问。
157
157
  - 默认 CDN 为 `https://cdn.jsdelivr.net/npm`,可通过 `options.cdnURL` 换成 unpkg 等兼容 `/{package}/{file}` 路径的镜像;该地址用于预览样式和内置 import map。
158
158
  - `lodash-es` 和在线 Sass 编译器使用 jsDelivr 的 `/+esm` 入口;unpkg 等 CDN 不支持该路径。
159
+ - 直接渲染时,未配置的 npm 模块(含作用域包和子路径)自动从 jsDelivr 的 `/+esm` 入口加载;组件包的传递依赖也适用,`import()` 在调用时加载。`@deot/vc` 的组件、hooks 和 locale 走远程模块加载器,Vue 保持与宿主共用。可用 `options.builtinImportMap.imports` 指定依赖的版本和 URL。
159
160
  - Vue SFC 的 `<style lang="scss">` / `lang="sass"` 以及独立 `.scss` / `.sass` 文件会在浏览器里编译;`_partial.scss` 只作为 `@use` 依赖。
160
161
  - `options.builtinImportMap.imports` 可以覆盖默认模块 URL。Vue 运行时仍从 `play.vuejs.org` 加载。
161
162
  - 每个 Playground 实例都使用自己的 preview 配置和 iframe 消息来源校验。
@@ -1,7 +1,4 @@
1
- const require_scss = require("./scss-DaIqB_qT.cjs");
2
- const require_files = require("./files-D5LNOtjp.cjs");
3
- const require_script = require("./script-5Xzzx7u5.cjs");
4
- const require_local_sandbox = require("./local-sandbox-DnkKrBhf.cjs");
1
+ const require_css = require("./css-DpqJBQ5c.cjs");
5
2
  let sass = require("sass");
6
3
  //#region packages/playground/src/core/runtime/local/compile/scss.ts
7
4
  /**
@@ -21,7 +18,7 @@ var toScssFiles = (files) => {
21
18
  };
22
19
  var compileLocalScss = (source, filename, files, lang) => {
23
20
  try {
24
- return require_scss.compileScssSource(source, filename.replace(/^\/+/u, ""), compiler, toScssFiles(files), lang);
21
+ return require_css.compileScssSource(source, filename.replace(/^\/+/u, ""), compiler, toScssFiles(files), lang);
25
22
  } catch (error) {
26
23
  /* istanbul ignore next -- Sass 失败时 message 总是字符串 */
27
24
  const message = error instanceof Error ? error.message : String(error);
@@ -188,7 +185,7 @@ var transformJson = (parsed, filename) => {
188
185
  return lines.join("\n");
189
186
  };
190
187
  var compileOne = async (filename, code, files) => {
191
- const ext = require_files.getExtension(filename);
188
+ const ext = require_css.getExtension(filename);
192
189
  const errors = [];
193
190
  if (ext === ".vue") {
194
191
  if (/lang\s*=\s*["']jsx["']/iu.test(code) || /lang\s*=\s*["']tsx["']/iu.test(code)) {
@@ -204,7 +201,7 @@ var compileOne = async (filename, code, files) => {
204
201
  errors.push(...result.errors);
205
202
  return {
206
203
  filename,
207
- js: require_script.transformScript(result.js, filename, { typescript: true }),
204
+ js: require_css.transformScript(result.js, filename, { typescript: true }),
208
205
  css: result.css,
209
206
  errors
210
207
  };
@@ -216,10 +213,10 @@ var compileOne = async (filename, code, files) => {
216
213
  errors
217
214
  };
218
215
  if (ext === ".scss" || ext === ".sass") try {
219
- const css = compileLocalScss(code, filename, files);
216
+ const { css, exports: styleExports } = require_css.extractScssExports(compileLocalScss(code, filename, files), filename);
220
217
  return {
221
218
  filename,
222
- js: `exports.default = {};\n//# sourceURL=playground://${filename}`,
219
+ js: `exports.__esModule = true; exports.default = ${JSON.stringify(styleExports)};\n//# sourceURL=playground://${filename}`,
223
220
  css,
224
221
  errors
225
222
  };
@@ -248,32 +245,24 @@ var compileOne = async (filename, code, files) => {
248
245
  errors
249
246
  };
250
247
  }
251
- if (ext === ".js" || ext === ".ts" || ext === ".jsx" || ext === ".tsx") {
252
- if (ext === ".jsx" || ext === ".tsx") {
253
- errors.push(`[Playground] JSX/TSX 暂不支持: ${filename}`);
254
- return {
255
- filename,
256
- js: "exports.default = {};",
257
- css: "",
258
- errors
259
- };
260
- }
261
- try {
262
- return {
263
- filename,
264
- js: require_script.transformScript(code, filename, { typescript: ext === ".ts" }),
265
- css: "",
266
- errors
267
- };
268
- } catch (error) {
269
- errors.push(messageOf(error));
270
- return {
271
- filename,
272
- js: "exports.default = {};",
273
- css: "",
274
- errors
275
- };
276
- }
248
+ if (ext === ".js" || ext === ".ts" || ext === ".jsx" || ext === ".tsx") try {
249
+ return {
250
+ filename,
251
+ js: require_css.transformScript(code, filename, {
252
+ typescript: ext === ".ts" || ext === ".tsx",
253
+ jsx: ext === ".jsx" || ext === ".tsx"
254
+ }),
255
+ css: "",
256
+ errors
257
+ };
258
+ } catch (error) {
259
+ errors.push(messageOf(error));
260
+ return {
261
+ filename,
262
+ js: "exports.default = {};",
263
+ css: "",
264
+ errors
265
+ };
277
266
  }
278
267
  errors.push(`[Playground] 不支持的文件类型: ${filename}`);
279
268
  return {
@@ -294,7 +283,7 @@ var compilePlayground = async (files, entryOrOptions) => {
294
283
  const errors = [];
295
284
  let entry;
296
285
  try {
297
- entry = require_files.resolveEntry(files, options.entry);
286
+ entry = require_css.resolveEntry(files, options.entry);
298
287
  } catch (error) {
299
288
  return {
300
289
  entry: "",
@@ -303,8 +292,8 @@ var compilePlayground = async (files, entryOrOptions) => {
303
292
  errors: [messageOf(error)]
304
293
  };
305
294
  }
306
- const fileIndex = require_files.createFileIndex(files);
307
- const reachable = require_files.collectReachableFilenames(files, entry);
295
+ const fileIndex = require_css.createFileIndex(files);
296
+ const reachable = require_css.collectReachableFilenames(files, entry);
308
297
  const modules = {};
309
298
  const cssChunks = [];
310
299
  for (const filename of reachable) {
@@ -317,9 +306,9 @@ var compilePlayground = async (files, entryOrOptions) => {
317
306
  js: compiled.js,
318
307
  css: compiled.css
319
308
  };
320
- cssChunks.push(...require_local_sandbox.collectCss([compiled.css]));
309
+ cssChunks.push(...require_css.collectCss([compiled.css]));
321
310
  }
322
- const normalizedEntry = require_files.normalizeVirtualPath(entry);
311
+ const normalizedEntry = require_css.normalizeVirtualPath(entry);
323
312
  /* istanbul ignore if -- 可达编译总会留下入口模块 */
324
313
  if (!modules[normalizedEntry]) errors.push(`[Playground] 入口编译结果缺失: ${normalizedEntry}`);
325
314
  return {
@@ -1,7 +1,4 @@
1
- import { n as compileScssSource } from "./scss-Co2it4vB.js";
2
- import { collectReachableFilenames, createFileIndex, getExtension, normalizeVirtualPath, resolveEntry } from "./files-C5UMzYxA.js";
3
- import { n as transformScript } from "./script-xKUjE8pf.js";
4
- import { n as collectCss } from "./local-sandbox-B8IJ5jWb.js";
1
+ import { a as transformScript, c as createFileIndex, h as resolveEntry, m as normalizeVirtualPath, s as collectReachableFilenames, t as collectCss, u as getExtension, v as compileScssSource, y as extractScssExports } from "./css-DleINdoA.js";
5
2
  import { compileString } from "sass";
6
3
  //#region packages/playground/src/core/runtime/local/compile/scss.ts
7
4
  /**
@@ -216,10 +213,10 @@ var compileOne = async (filename, code, files) => {
216
213
  errors
217
214
  };
218
215
  if (ext === ".scss" || ext === ".sass") try {
219
- const css = compileLocalScss(code, filename, files);
216
+ const { css, exports: styleExports } = extractScssExports(compileLocalScss(code, filename, files), filename);
220
217
  return {
221
218
  filename,
222
- js: `exports.default = {};\n//# sourceURL=playground://${filename}`,
219
+ js: `exports.__esModule = true; exports.default = ${JSON.stringify(styleExports)};\n//# sourceURL=playground://${filename}`,
223
220
  css,
224
221
  errors
225
222
  };
@@ -248,32 +245,24 @@ var compileOne = async (filename, code, files) => {
248
245
  errors
249
246
  };
250
247
  }
251
- if (ext === ".js" || ext === ".ts" || ext === ".jsx" || ext === ".tsx") {
252
- if (ext === ".jsx" || ext === ".tsx") {
253
- errors.push(`[Playground] JSX/TSX 暂不支持: ${filename}`);
254
- return {
255
- filename,
256
- js: "exports.default = {};",
257
- css: "",
258
- errors
259
- };
260
- }
261
- try {
262
- return {
263
- filename,
264
- js: transformScript(code, filename, { typescript: ext === ".ts" }),
265
- css: "",
266
- errors
267
- };
268
- } catch (error) {
269
- errors.push(messageOf(error));
270
- return {
271
- filename,
272
- js: "exports.default = {};",
273
- css: "",
274
- errors
275
- };
276
- }
248
+ if (ext === ".js" || ext === ".ts" || ext === ".jsx" || ext === ".tsx") try {
249
+ return {
250
+ filename,
251
+ js: transformScript(code, filename, {
252
+ typescript: ext === ".ts" || ext === ".tsx",
253
+ jsx: ext === ".jsx" || ext === ".tsx"
254
+ }),
255
+ css: "",
256
+ errors
257
+ };
258
+ } catch (error) {
259
+ errors.push(messageOf(error));
260
+ return {
261
+ filename,
262
+ js: "exports.default = {};",
263
+ css: "",
264
+ errors
265
+ };
277
266
  }
278
267
  errors.push(`[Playground] 不支持的文件类型: ${filename}`);
279
268
  return {