storybook 10.0.0-beta.4 → 10.0.0-beta.6

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 (107) hide show
  1. package/assets/server/openBrowser.applescript +94 -0
  2. package/dist/_browser-chunks/Color-KPLIACXP.js +1569 -0
  3. package/dist/_browser-chunks/{WithTooltip-ERFLZL6W.js → WithTooltip-SK46ZJ2J.js} +1 -1
  4. package/dist/_browser-chunks/{chunk-YY5GICNT.js → chunk-6E2SHJSL.js} +175 -32
  5. package/dist/_browser-chunks/{chunk-MZNYTCNT.js → chunk-AM4PZYVQ.js} +10 -63
  6. package/dist/_browser-chunks/{chunk-EOILZP2R.js → chunk-BOOOPFZF.js} +7 -2
  7. package/dist/_browser-chunks/{chunk-YWDKX534.js → chunk-FA42P6MO.js} +49 -4
  8. package/dist/_browser-chunks/chunk-G33S6YM3.js +521 -0
  9. package/dist/_browser-chunks/chunk-GJ67EE65.js +67 -0
  10. package/dist/_browser-chunks/{chunk-4QPX7WIQ.js → chunk-JJZMHC3A.js} +57 -166
  11. package/dist/_browser-chunks/{chunk-MD2FTHCZ.js → chunk-JVSKG4YS.js} +3 -16
  12. package/dist/_browser-chunks/{chunk-E7VLET3C.js → chunk-KSCAWCCE.js} +3947 -4291
  13. package/dist/_browser-chunks/chunk-QK3L5AXO.js +372 -0
  14. package/dist/_browser-chunks/chunk-VUAFL5XK.js +20 -0
  15. package/dist/_browser-chunks/{chunk-T7RCAJIX.js → chunk-Y3M7TW6K.js} +43 -47
  16. package/dist/_browser-chunks/{chunk-PYK5ZTFK.js → chunk-YQV3EGQ5.js} +5 -5
  17. package/dist/_browser-chunks/{syntaxhighlighter-YYAA4CS4.js → syntaxhighlighter-RJW7FE3A.js} +3 -2
  18. package/dist/_node-chunks/{builder-manager-IKHPPPFE.js → builder-manager-V33CQT2M.js} +26 -151
  19. package/dist/_node-chunks/camelcase-BZ55OCHI.js +18 -0
  20. package/dist/_node-chunks/{chunk-5OILJTZE.js → chunk-2DMFI367.js} +7 -7
  21. package/dist/_node-chunks/{chunk-DCHFG5TX.js → chunk-4TOI4VSK.js} +7 -7
  22. package/dist/_node-chunks/{chunk-XA4TAMUS.js → chunk-55VWKF63.js} +710 -935
  23. package/dist/_node-chunks/{chunk-N3GFXZDP.js → chunk-5IEY46LQ.js} +7 -7
  24. package/dist/_node-chunks/{chunk-YRPXGWKW.js → chunk-6PTV7XGR.js} +8 -8
  25. package/dist/_node-chunks/{chunk-4FMOVB65.js → chunk-7NJGTQ3W.js} +223 -243
  26. package/dist/_node-chunks/{chunk-4VGW2SQA.js → chunk-7WH7AGOR.js} +7 -7
  27. package/dist/_node-chunks/{camelcase-O2O7JODG.js → chunk-A7CUP23N.js} +9 -8
  28. package/dist/_node-chunks/{chunk-XT6O5CVI.js → chunk-B3AMFGAL.js} +30 -21
  29. package/dist/_node-chunks/{chunk-IB5AEYPX.js → chunk-BNOZ3EKF.js} +7 -7
  30. package/dist/_node-chunks/{chunk-TTQRDWDJ.js → chunk-DC7OWBHB.js} +12 -12
  31. package/dist/_node-chunks/{chunk-3J7DQ6TI.js → chunk-E6TLN2J2.js} +7 -7
  32. package/dist/_node-chunks/{chunk-JP4LEAXM.js → chunk-EAOPWIKA.js} +623 -750
  33. package/dist/_node-chunks/{chunk-YJHXEN7U.js → chunk-EY5PTUZL.js} +583 -180
  34. package/dist/_node-chunks/{chunk-JSSBBVU5.js → chunk-F3PO67U3.js} +7 -7
  35. package/dist/_node-chunks/chunk-FDDJHDCE.js +62 -0
  36. package/dist/_node-chunks/{chunk-6COBULLV.js → chunk-HEBHWRWL.js} +162 -103
  37. package/dist/_node-chunks/{chunk-USDZSU5L.js → chunk-HPFXREVG.js} +7 -7
  38. package/dist/_node-chunks/{chunk-JECCFKKM.js → chunk-IINJT47N.js} +7 -7
  39. package/dist/_node-chunks/{chunk-OL2HWCBH.js → chunk-JNHUDBJL.js} +7 -7
  40. package/dist/_node-chunks/{chunk-NF3GXIEK.js → chunk-JOXYGIZK.js} +9 -9
  41. package/dist/_node-chunks/{chunk-NOSGJ5PL.js → chunk-MLBTKECD.js} +7 -7
  42. package/dist/_node-chunks/{chunk-TYGVOW7L.js → chunk-NJXBURX7.js} +8 -8
  43. package/dist/_node-chunks/{chunk-AXFNB3AN.js → chunk-NKZ4UPPV.js} +7 -7
  44. package/dist/_node-chunks/{chunk-HAVE6SGK.js → chunk-NUVGSFQI.js} +7 -7
  45. package/dist/_node-chunks/chunk-R5DIBOM6.js +18 -0
  46. package/dist/_node-chunks/{chunk-AC3BNULF.js → chunk-RIPA4LFD.js} +22 -22
  47. package/dist/_node-chunks/{chunk-TBAIXCHN.js → chunk-TJIMCNYJ.js} +8 -8
  48. package/dist/_node-chunks/{chunk-SF2IETZ2.js → chunk-UYKQJMQY.js} +36 -23
  49. package/dist/_node-chunks/{chunk-7IIAUEWB.js → chunk-VQH4ZFTS.js} +8 -8
  50. package/dist/_node-chunks/{chunk-FWFQ2GU7.js → chunk-VSC6LSCQ.js} +6 -6
  51. package/dist/_node-chunks/{chunk-MOO2Y4GI.js → chunk-XZTBG2TG.js} +6 -6
  52. package/dist/_node-chunks/{dist-BMKSKYDI.js → dist-CGGAYWME.js} +9 -9
  53. package/dist/_node-chunks/{globby-DASPUXWI.js → globby-3IFB7BJC.js} +17 -13
  54. package/dist/_node-chunks/{lib-L6BIH4EV.js → lib-IT6OBSID.js} +36 -12
  55. package/dist/_node-chunks/{mdx-N42X6CFJ-2COTUDSL.js → mdx-N42X6CFJ-WM36SSZ6.js} +8 -8
  56. package/dist/_node-chunks/{p-limit-HVR3I7TJ.js → p-limit-3V5XIKA7.js} +7 -7
  57. package/dist/_node-chunks/{plugin-FZOHPRK7.js → plugin-3YREMMJJ.js} +10 -10
  58. package/dist/_node-chunks/{plugin-2XPSFYWZ.js → plugin-GJUBUKCT.js} +10 -10
  59. package/dist/_node-chunks/{webpack-inject-mocker-runtime-plugin-FGQM2EPC.js → webpack-inject-mocker-runtime-plugin-DCJQFJQ5.js} +1307 -847
  60. package/dist/_node-chunks/{webpack-mock-plugin-4HOAIYSX.js → webpack-mock-plugin-XJNFAHBI.js} +9 -9
  61. package/dist/babel/index.d.ts +1 -1
  62. package/dist/babel/index.js +11 -11
  63. package/dist/bin/core.js +638 -187
  64. package/dist/bin/dispatcher.js +11 -11
  65. package/dist/bin/loader.js +8 -8
  66. package/dist/cli/index.d.ts +61 -74
  67. package/dist/cli/index.js +56 -44
  68. package/dist/common/index.js +21 -21
  69. package/dist/components/index.js +27 -23
  70. package/dist/core-events/index.d.ts +18 -2
  71. package/dist/core-events/index.js +7 -1
  72. package/dist/core-server/index.js +4545 -4115
  73. package/dist/core-server/presets/common-manager.js +507 -747
  74. package/dist/core-server/presets/common-override-preset.js +9 -9
  75. package/dist/core-server/presets/common-preset.js +691 -29
  76. package/dist/core-server/presets/webpack/loaders/storybook-mock-transform-loader.js +9 -9
  77. package/dist/core-server/presets/webpack/loaders/webpack-automock-loader.js +10 -10
  78. package/dist/csf/index.js +6 -6
  79. package/dist/csf-tools/index.js +9 -9
  80. package/dist/docs-tools/index.js +4 -4
  81. package/dist/instrumenter/index.js +1 -1
  82. package/dist/manager/globals-runtime.js +9164 -18083
  83. package/dist/manager/globals.d.ts +0 -4
  84. package/dist/manager/globals.js +1 -6
  85. package/dist/manager/runtime.js +12967 -11396
  86. package/dist/manager-api/index.d.ts +2 -0
  87. package/dist/manager-api/index.js +303 -64
  88. package/dist/node-logger/index.d.ts +1 -1
  89. package/dist/node-logger/index.js +1136 -661
  90. package/dist/preview/runtime.js +12068 -21585
  91. package/dist/preview-api/index.d.ts +68 -67
  92. package/dist/preview-api/index.js +6 -6
  93. package/dist/router/index.js +2 -2
  94. package/dist/server-errors.js +10 -10
  95. package/dist/telemetry/index.d.ts +1 -1
  96. package/dist/telemetry/index.js +24 -24
  97. package/dist/test/index.js +1872 -4023
  98. package/dist/theming/index.d.ts +2 -2
  99. package/dist/theming/index.js +6 -6
  100. package/dist/types/index.d.ts +4 -0
  101. package/package.json +7 -6
  102. package/dist/_browser-chunks/Color-SFYJJKWL.js +0 -605
  103. package/dist/_browser-chunks/chunk-DHO2SA6L.js +0 -12
  104. package/dist/_browser-chunks/chunk-WPHPDNUA.js +0 -974
  105. package/dist/_node-chunks/chunk-CHJLO2LV.js +0 -62
  106. package/dist/_node-chunks/chunk-MNG223PY.js +0 -18
  107. package/dist/_node-chunks/default-browser-id-J4OIAAJ5.js +0 -1719
@@ -1,10 +1,10 @@
1
- import CJS_COMPAT_NODE_URL_bdftjtsviyb from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_bdftjtsviyb from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_bdftjtsviyb from "node:module";
1
+ import CJS_COMPAT_NODE_URL_0v1evul49qdo from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_0v1evul49qdo from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_0v1evul49qdo from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_bdftjtsviyb.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_bdftjtsviyb.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_bdftjtsviyb.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_0v1evul49qdo.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_0v1evul49qdo.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_0v1evul49qdo.createRequire(import.meta.url);
8
8
 
9
9
  // ------------------------------------------------------------
10
10
  // end of CJS compatibility banner, injected by Storybook's esbuild configuration
@@ -14,7 +14,7 @@ import {
14
14
  __name,
15
15
  __require,
16
16
  __toESM
17
- } from "./chunk-MOO2Y4GI.js";
17
+ } from "./chunk-XZTBG2TG.js";
18
18
 
19
19
  // ../node_modules/app-root-dir/lib/index.js
20
20
  var require_lib = __commonJS({
@@ -58,7 +58,7 @@ var require_package = __commonJS({
58
58
  "../node_modules/dotenv/package.json"(exports, module) {
59
59
  module.exports = {
60
60
  name: "dotenv",
61
- version: "16.5.0",
61
+ version: "16.6.1",
62
62
  description: "Loads environment variables from .env file",
63
63
  main: "lib/main.js",
64
64
  types: "lib/main.d.ts",
@@ -81,7 +81,7 @@ var require_package = __commonJS({
81
81
  lint: "standard",
82
82
  pretest: "npm run lint && npm run dts-check",
83
83
  test: "tap run --allow-empty-coverage --disable-coverage --timeout=60000",
84
- "test:coverage": "tap run --show-full-coverage --timeout=60000 --coverage-report=lcov",
84
+ "test:coverage": "tap run --show-full-coverage --timeout=60000 --coverage-report=text --coverage-report=lcov",
85
85
  prerelease: "npm test",
86
86
  release: "standard-version"
87
87
  },
@@ -152,8 +152,10 @@ var require_main = __commonJS({
152
152
  }
153
153
  __name(parse, "parse");
154
154
  function _parseVault(options) {
155
+ options = options || {};
155
156
  const vaultPath = _vaultPath(options);
156
- const result = DotenvModule.configDotenv({ path: vaultPath });
157
+ options.path = vaultPath;
158
+ const result = DotenvModule.configDotenv(options);
157
159
  if (!result.parsed) {
158
160
  const err = new Error(`MISSING_DATA: Cannot parse ${vaultPath} for an unknown reason`);
159
161
  err.code = "MISSING_DATA";
@@ -185,6 +187,10 @@ var require_main = __commonJS({
185
187
  console.log(`[dotenv@${version}][DEBUG] ${message}`);
186
188
  }
187
189
  __name(_debug, "_debug");
190
+ function _log(message) {
191
+ console.log(`[dotenv@${version}] ${message}`);
192
+ }
193
+ __name(_log, "_log");
188
194
  function _dotenvKey(options) {
189
195
  if (options && options.DOTENV_KEY && options.DOTENV_KEY.length > 0) {
190
196
  return options.DOTENV_KEY;
@@ -256,8 +262,9 @@ var require_main = __commonJS({
256
262
  __name(_resolveHome, "_resolveHome");
257
263
  function _configVault(options) {
258
264
  const debug = Boolean(options && options.debug);
259
- if (debug) {
260
- _debug("Loading env from encrypted .env.vault");
265
+ const quiet = options && "quiet" in options ? options.quiet : true;
266
+ if (debug || !quiet) {
267
+ _log("Loading env from encrypted .env.vault");
261
268
  }
262
269
  const parsed = DotenvModule._parseVault(options);
263
270
  let processEnv = process.env;
@@ -272,6 +279,7 @@ var require_main = __commonJS({
272
279
  const dotenvPath = path2.resolve(process.cwd(), ".env");
273
280
  let encoding = "utf8";
274
281
  const debug = Boolean(options && options.debug);
282
+ const quiet = options && "quiet" in options ? options.quiet : true;
275
283
  if (options && options.encoding) {
276
284
  encoding = options.encoding;
277
285
  } else {
@@ -308,6 +316,22 @@ var require_main = __commonJS({
308
316
  processEnv = options.processEnv;
309
317
  }
310
318
  DotenvModule.populate(processEnv, parsedAll, options);
319
+ if (debug || !quiet) {
320
+ const keysCount = Object.keys(parsedAll).length;
321
+ const shortPaths = [];
322
+ for (const filePath of optionPaths) {
323
+ try {
324
+ const relative = path2.relative(process.cwd(), filePath);
325
+ shortPaths.push(relative);
326
+ } catch (e) {
327
+ if (debug) {
328
+ _debug(`Failed to load ${filePath} ${e.message}`);
329
+ }
330
+ lastError = e;
331
+ }
332
+ }
333
+ _log(`injecting env (${keysCount}) from ${shortPaths.join(",")}`);
334
+ }
311
335
  if (lastError) {
312
336
  return { parsed: parsedAll, error: lastError };
313
337
  } else {
@@ -1,10 +1,10 @@
1
- import CJS_COMPAT_NODE_URL_bdftjtsviyb from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_bdftjtsviyb from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_bdftjtsviyb from "node:module";
1
+ import CJS_COMPAT_NODE_URL_0v1evul49qdo from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_0v1evul49qdo from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_0v1evul49qdo from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_bdftjtsviyb.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_bdftjtsviyb.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_bdftjtsviyb.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_0v1evul49qdo.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_0v1evul49qdo.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_0v1evul49qdo.createRequire(import.meta.url);
8
8
 
9
9
  // ------------------------------------------------------------
10
10
  // end of CJS compatibility banner, injected by Storybook's esbuild configuration
@@ -23,10 +23,10 @@ import {
23
23
  start,
24
24
  toEstree,
25
25
  unreachable
26
- } from "./chunk-IB5AEYPX.js";
26
+ } from "./chunk-BNOZ3EKF.js";
27
27
  import {
28
28
  __name
29
- } from "./chunk-MOO2Y4GI.js";
29
+ } from "./chunk-XZTBG2TG.js";
30
30
 
31
31
  // ../node_modules/@storybook/docs-mdx/dist/mdx-N42X6CFJ.js
32
32
  import { default as default2 } from "path";
@@ -1,17 +1,17 @@
1
- import CJS_COMPAT_NODE_URL_bdftjtsviyb from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_bdftjtsviyb from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_bdftjtsviyb from "node:module";
1
+ import CJS_COMPAT_NODE_URL_0v1evul49qdo from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_0v1evul49qdo from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_0v1evul49qdo from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_bdftjtsviyb.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_bdftjtsviyb.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_bdftjtsviyb.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_0v1evul49qdo.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_0v1evul49qdo.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_0v1evul49qdo.createRequire(import.meta.url);
8
8
 
9
9
  // ------------------------------------------------------------
10
10
  // end of CJS compatibility banner, injected by Storybook's esbuild configuration
11
11
  // ------------------------------------------------------------
12
12
  import {
13
13
  __name
14
- } from "./chunk-MOO2Y4GI.js";
14
+ } from "./chunk-XZTBG2TG.js";
15
15
 
16
16
  // ../node_modules/yocto-queue/index.js
17
17
  var Node = class {
@@ -1,29 +1,29 @@
1
- import CJS_COMPAT_NODE_URL_bdftjtsviyb from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_bdftjtsviyb from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_bdftjtsviyb from "node:module";
1
+ import CJS_COMPAT_NODE_URL_0v1evul49qdo from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_0v1evul49qdo from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_0v1evul49qdo from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_bdftjtsviyb.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_bdftjtsviyb.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_bdftjtsviyb.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_0v1evul49qdo.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_0v1evul49qdo.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_0v1evul49qdo.createRequire(import.meta.url);
8
8
 
9
9
  // ------------------------------------------------------------
10
10
  // end of CJS compatibility banner, injected by Storybook's esbuild configuration
11
11
  // ------------------------------------------------------------
12
12
  import {
13
13
  getAutomockCode
14
- } from "./chunk-XT6O5CVI.js";
14
+ } from "./chunk-B3AMFGAL.js";
15
15
  import {
16
16
  babelParser,
17
17
  extractMockCalls,
18
18
  getRealPath,
19
19
  rewriteSbMockImportCalls
20
- } from "./chunk-7IIAUEWB.js";
20
+ } from "./chunk-VQH4ZFTS.js";
21
21
  import {
22
22
  normalize
23
- } from "./chunk-4VGW2SQA.js";
23
+ } from "./chunk-7WH7AGOR.js";
24
24
  import {
25
25
  __name
26
- } from "./chunk-MOO2Y4GI.js";
26
+ } from "./chunk-XZTBG2TG.js";
27
27
 
28
28
  // src/core-server/presets/vitePlugins/vite-mock/plugin.ts
29
29
  import { readFileSync } from "node:fs";
@@ -1,25 +1,25 @@
1
- import CJS_COMPAT_NODE_URL_bdftjtsviyb from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_bdftjtsviyb from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_bdftjtsviyb from "node:module";
1
+ import CJS_COMPAT_NODE_URL_0v1evul49qdo from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_0v1evul49qdo from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_0v1evul49qdo from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_bdftjtsviyb.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_bdftjtsviyb.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_bdftjtsviyb.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_0v1evul49qdo.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_0v1evul49qdo.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_0v1evul49qdo.createRequire(import.meta.url);
8
8
 
9
9
  // ------------------------------------------------------------
10
10
  // end of CJS compatibility banner, injected by Storybook's esbuild configuration
11
11
  // ------------------------------------------------------------
12
12
  import {
13
13
  resolvePackageDir
14
- } from "./chunk-TBAIXCHN.js";
15
- import "./chunk-4VGW2SQA.js";
14
+ } from "./chunk-TJIMCNYJ.js";
15
+ import "./chunk-7WH7AGOR.js";
16
16
  import {
17
17
  require_dist
18
- } from "./chunk-NOSGJ5PL.js";
18
+ } from "./chunk-MLBTKECD.js";
19
19
  import {
20
20
  __name,
21
21
  __toESM
22
- } from "./chunk-MOO2Y4GI.js";
22
+ } from "./chunk-XZTBG2TG.js";
23
23
 
24
24
  // src/core-server/presets/vitePlugins/vite-inject-mocker/plugin.ts
25
25
  import { readFileSync } from "node:fs";