keycloakify 11.4.0-rc.0 → 11.4.1

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 (94) hide show
  1. package/README.md +2 -0
  2. package/account/i18n/noJsx/getI18n.js +5 -7
  3. package/account/i18n/noJsx/getI18n.js.map +1 -1
  4. package/account/i18n/withJsx/useI18n.js +15 -4
  5. package/account/i18n/withJsx/useI18n.js.map +1 -1
  6. package/bin/20.index.js +0 -85
  7. package/bin/33.index.js +55 -212
  8. package/bin/356.index.js +106 -45
  9. package/bin/36.index.js +1 -2922
  10. package/bin/{526.index.js → 392.index.js} +107 -3
  11. package/bin/40.index.js +1 -86
  12. package/bin/453.index.js +85 -22
  13. package/bin/573.index.js +5 -86
  14. package/bin/653.index.js +752 -0
  15. package/bin/658.index.js +197 -0
  16. package/bin/735.index.js +343 -116
  17. package/bin/786.index.js +78 -14
  18. package/bin/805.index.js +15 -18
  19. package/bin/921.index.js +79 -18
  20. package/bin/97.index.js +64 -13
  21. package/bin/main.js +165 -86
  22. package/bin/shared/constants.d.ts +2 -0
  23. package/bin/shared/constants.js +3 -1
  24. package/bin/shared/constants.js.map +1 -1
  25. package/bin/start-keycloak/startViteDevServer.d.ts +8 -0
  26. package/bin/tools/crawlAsync.d.ts +1 -1
  27. package/bin/tools/isTrackedByGit.d.ts +3 -0
  28. package/bin/tools/runPrettier.d.ts +5 -5
  29. package/bin/tools/untrackFromGit.d.ts +3 -0
  30. package/lib/getKcClsx.js +1 -2
  31. package/lib/getKcClsx.js.map +1 -1
  32. package/login/KcContext/KcContext.d.ts +2 -2
  33. package/login/KcContext/kcContextMocks.d.ts +1 -1
  34. package/login/TemplateProps.d.ts +0 -1
  35. package/login/i18n/noJsx/getI18n.js +5 -7
  36. package/login/i18n/noJsx/getI18n.js.map +1 -1
  37. package/login/i18n/withJsx/useI18n.js +15 -4
  38. package/login/i18n/withJsx/useI18n.js.map +1 -1
  39. package/login/pages/LoginConfigTotp.js +1 -1
  40. package/login/pages/LoginConfigTotp.js.map +1 -1
  41. package/login/pages/LoginPasskeysConditionalAuthenticate.js +16 -18
  42. package/login/pages/LoginPasskeysConditionalAuthenticate.js.map +1 -1
  43. package/package.json +17 -7
  44. package/src/account/i18n/noJsx/getI18n.tsx +5 -7
  45. package/src/account/i18n/withJsx/useI18n.tsx +18 -4
  46. package/src/bin/eject-page.ts +28 -10
  47. package/src/bin/initialize-account-theme/initializeAccountTheme_singlePage.ts +3 -18
  48. package/src/bin/initialize-account-theme/updateAccountThemeImplementationInConfig.ts +1 -2
  49. package/src/bin/keycloakify/generateFtl/generateFtl.ts +6 -1
  50. package/src/bin/keycloakify/generateFtl/kcContextDeclarationTemplate.ftl +39 -0
  51. package/src/bin/keycloakify/generateResources/generateResources.ts +6 -2
  52. package/src/bin/main.ts +51 -4
  53. package/src/bin/postinstall/getUiModuleFileSourceCodeReadyToBeCopied.ts +30 -19
  54. package/src/bin/postinstall/installUiModulesPeerDependencies.ts +3 -3
  55. package/src/bin/postinstall/managedGitignoreFile.ts +4 -3
  56. package/src/bin/postinstall/postinstall.ts +24 -2
  57. package/src/bin/postinstall/uiModuleMeta.ts +14 -9
  58. package/src/bin/shared/buildContext.ts +1 -2
  59. package/src/bin/shared/constants.ts +4 -1
  60. package/src/bin/start-keycloak/myrealm-realm-25.json +21 -34
  61. package/src/bin/start-keycloak/myrealm-realm-26.json +32 -35
  62. package/src/bin/start-keycloak/start-keycloak.ts +94 -1
  63. package/src/bin/start-keycloak/startViteDevServer.ts +66 -0
  64. package/src/bin/tools/crawlAsync.ts +6 -6
  65. package/src/bin/tools/isTrackedByGit.ts +29 -0
  66. package/src/bin/tools/listInstalledModules.ts +1 -2
  67. package/src/bin/tools/npmInstall.ts +396 -1
  68. package/src/bin/tools/runPrettier.ts +63 -14
  69. package/src/bin/tools/untrackFromGit.ts +24 -0
  70. package/src/bin/tsconfig.json +1 -1
  71. package/src/bin/update-kc-gen.ts +17 -2
  72. package/src/lib/getKcClsx.ts +1 -2
  73. package/src/login/KcContext/KcContext.ts +2 -2
  74. package/src/login/KcContext/kcContextMocks.ts +1 -1
  75. package/src/login/TemplateProps.ts +0 -1
  76. package/src/login/i18n/noJsx/getI18n.tsx +5 -7
  77. package/src/login/i18n/withJsx/useI18n.tsx +18 -4
  78. package/src/login/pages/LoginConfigTotp.tsx +18 -20
  79. package/src/login/pages/LoginPasskeysConditionalAuthenticate.tsx +51 -52
  80. package/src/tools/StatefulObservable/StatefulObservable.ts +1 -2
  81. package/src/tools/deepAssign.ts +1 -2
  82. package/src/tools/extractLastParenthesisContent.ts +43 -0
  83. package/src/vite-plugin/vite-plugin.ts +67 -0
  84. package/stories/login/pages/Info.stories.tsx +3 -39
  85. package/tools/StatefulObservable/StatefulObservable.js +1 -2
  86. package/tools/StatefulObservable/StatefulObservable.js.map +1 -1
  87. package/tools/deepAssign.js +1 -2
  88. package/tools/deepAssign.js.map +1 -1
  89. package/tools/extractLastParenthesisContent.d.ts +6 -0
  90. package/tools/extractLastParenthesisContent.js +36 -0
  91. package/tools/extractLastParenthesisContent.js.map +1 -0
  92. package/vite-plugin/index.js +326 -186
  93. package/bin/124.index.js +0 -348
  94. package/stories/login/pages/LoginDeviceVerifyUserCode.stories.tsx +0 -18
package/bin/356.index.js CHANGED
@@ -25,27 +25,31 @@ exports.modules = {
25
25
  async function getUiModuleFileSourceCodeReadyToBeCopied(params) {
26
26
  const { buildContext, uiModuleDirPath, fileRelativePath, isForEjection, uiModuleName, uiModuleVersion } = params;
27
27
  let sourceCode = (await fs_promises__WEBPACK_IMPORTED_MODULE_1__.readFile((0,path__WEBPACK_IMPORTED_MODULE_2__.join)(uiModuleDirPath, _shared_constants__WEBPACK_IMPORTED_MODULE_4__/* .KEYCLOAK_THEME */ .PC, fileRelativePath))).toString("utf8");
28
- const comment = (() => {
29
- if (isForEjection) {
30
- return [
31
- `/*`,
32
- `This file was ejected from ${uiModuleName} version ${uiModuleVersion}.`,
33
- `*/`
34
- ].join("\n");
28
+ const toComment = (lines) => {
29
+ for (const ext of [".ts", ".tsx", ".css", ".less", ".sass", ".js", ".jsx"]) {
30
+ if (!fileRelativePath.endsWith(ext)) {
31
+ continue;
32
+ }
33
+ return [`/**`, ...lines.map(line => ` * ${line}`), ` */`].join("\n");
35
34
  }
36
- else {
37
- return [
38
- `/*`,
39
- `WARNING: Before modifying this file run the following command:`,
40
- ``,
41
- `npx keycloakify eject-file --file ${fileRelativePath.split(path__WEBPACK_IMPORTED_MODULE_2__.sep).join("/")}\``,
42
- ``,
43
- `This file comes from ${uiModuleName} version ${uiModuleVersion}.`,
44
- `*/`
45
- ];
35
+ if (fileRelativePath.endsWith(".html")) {
36
+ return [`<!--`, ...lines.map(line => ` ${line}`), `-->`].join("\n");
46
37
  }
47
- })();
48
- sourceCode = [comment, ``, sourceCode].join("\n");
38
+ return undefined;
39
+ };
40
+ const comment = toComment(isForEjection
41
+ ? [`This file was ejected from ${uiModuleName} version ${uiModuleVersion}.`]
42
+ : [
43
+ `WARNING: Before modifying this file run the following command:`,
44
+ ``,
45
+ `$ npx keycloakify eject-file --file ${fileRelativePath.split(path__WEBPACK_IMPORTED_MODULE_2__.sep).join("/")}`,
46
+ ``,
47
+ `This file comes from ${uiModuleName} version ${uiModuleVersion}.`,
48
+ `This file has been copied over to your repo by your postinstall script: \`npx keycloakify postinstall\``
49
+ ]);
50
+ if (comment !== undefined) {
51
+ sourceCode = [comment, ``, sourceCode].join("\n");
52
+ }
49
53
  const destFilePath = (0,path__WEBPACK_IMPORTED_MODULE_2__.join)(buildContext.themeSrcDirPath, fileRelativePath);
50
54
  format: {
51
55
  if (!(await (0,_tools_runPrettier__WEBPACK_IMPORTED_MODULE_0__/* .getIsPrettierAvailable */ .MT)())) {
@@ -94,7 +98,9 @@ async function writeManagedGitignoreFile(params) {
94
98
  `# This file is managed by Keycloakify, do not edit it manually.`,
95
99
  ``,
96
100
  DELIMITER_START,
97
- ...ejectedFilesRelativePaths.map(fileRelativePath => fileRelativePath.split(path__WEBPACK_IMPORTED_MODULE_1__.sep).join("/")),
101
+ ...ejectedFilesRelativePaths
102
+ .map(fileRelativePath => fileRelativePath.split(path__WEBPACK_IMPORTED_MODULE_1__.sep).join("/"))
103
+ .map(line => `# ${line}`),
98
104
  DELIMITER_END,
99
105
  ``,
100
106
  ...uiModuleMetas
@@ -147,6 +153,7 @@ async function readManagedGitignoreFile(params) {
147
153
  const ejectedFilesRelativePaths = payload
148
154
  .split("\n")
149
155
  .map(line => line.trim())
156
+ .map(line => line.replace(/^# /, ""))
150
157
  .filter(line => line !== "")
151
158
  .map(line => (0,_tools_getAbsoluteAndInOsFormatPath__WEBPACK_IMPORTED_MODULE_4__/* .getAbsoluteAndInOsFormatPath */ .c)({
152
159
  cwd: buildContext.themeSrcDirPath,
@@ -179,8 +186,6 @@ var lib = __webpack_require__(52300);
179
186
  var external_path_ = __webpack_require__(71017);
180
187
  // EXTERNAL MODULE: external "fs/promises"
181
188
  var promises_ = __webpack_require__(73292);
182
- // EXTERNAL MODULE: ./node_modules/tsafe/esm/is.mjs
183
- var is = __webpack_require__(16453);
184
189
  // EXTERNAL MODULE: ./dist/bin/tools/fs.existsAsync.js
185
190
  var fs_existsAsync = __webpack_require__(43765);
186
191
  // EXTERNAL MODULE: ./dist/bin/tools/getInstalledModuleDirPath.js
@@ -195,7 +200,6 @@ var exclude = __webpack_require__(83101);
195
200
 
196
201
 
197
202
 
198
-
199
203
  async function listInstalledModules(params) {
200
204
  const { packageJsonFilePath, projectDirPath, filter } = params;
201
205
  const parsedPackageJson = await readPackageJsonDependencies({
@@ -232,7 +236,7 @@ const { readPackageJsonDependencies } = (() => {
232
236
  const { packageJsonFilePath } = params;
233
237
  const parsedPackageJson = JSON.parse((await promises_.readFile(packageJsonFilePath)).toString("utf8"));
234
238
  zParsedPackageJson.parse(parsedPackageJson);
235
- (0,assert/* assert */.h)((0,is.is)(parsedPackageJson));
239
+ (0,assert/* assert */.h)((0,assert.is)(parsedPackageJson));
236
240
  return parsedPackageJson;
237
241
  }
238
242
  return { readPackageJsonDependencies };
@@ -251,7 +255,7 @@ const { readPackageJsonVersionAndPeerDependencies } = (() => {
251
255
  const { packageJsonFilePath } = params;
252
256
  const parsedPackageJson = JSON.parse((await promises_.readFile(packageJsonFilePath)).toString("utf8"));
253
257
  zParsedPackageJson.parse(parsedPackageJson);
254
- (0,assert/* assert */.h)((0,is.is)(parsedPackageJson));
258
+ (0,assert/* assert */.h)((0,assert.is)(parsedPackageJson));
255
259
  return {
256
260
  version: parsedPackageJson.version,
257
261
  peerDependencies: (_a = parsedPackageJson.peerDependencies) !== null && _a !== void 0 ? _a : {}
@@ -269,13 +273,13 @@ async function crawlAsync(params) {
269
273
  const { dirPath, returnedPathsType, onFileFound } = params;
270
274
  await crawlAsyncRec({
271
275
  dirPath,
272
- onFileFound: ({ filePath }) => {
276
+ onFileFound: async ({ filePath }) => {
273
277
  switch (returnedPathsType) {
274
278
  case "absolute":
275
- onFileFound(filePath);
279
+ await onFileFound(filePath);
276
280
  return;
277
281
  case "relative to dirPath":
278
- onFileFound((0,external_path_.relative)(dirPath, filePath));
282
+ await onFileFound((0,external_path_.relative)(dirPath, filePath));
279
283
  return;
280
284
  }
281
285
  (0,assert/* assert */.h)();
@@ -292,7 +296,7 @@ async function crawlAsyncRec(params) {
292
296
  await crawlAsyncRec({ dirPath: fileOrDirPath, onFileFound });
293
297
  return;
294
298
  }
295
- onFileFound({ filePath: fileOrDirPath });
299
+ await onFileFound({ filePath: fileOrDirPath });
296
300
  }));
297
301
  }
298
302
  //# sourceMappingURL=crawlAsync.js.map
@@ -355,8 +359,8 @@ async function getUiModuleMetas(params) {
355
359
  if (!(await (0,runPrettier/* getIsPrettierAvailable */.MT)())) {
356
360
  return null;
357
361
  }
358
- const { config } = await (0,runPrettier/* getPrettierAndConfig */.cI)();
359
- return external_crypto_.createHash("sha256").update(JSON.stringify(config)).digest("hex");
362
+ const { configHash } = await (0,runPrettier/* getPrettier */.LG)();
363
+ return configHash;
360
364
  })();
361
365
  const installedUiModules = await (async () => {
362
366
  const installedModulesWithKeycloakifyInTheName = await listInstalledModules({
@@ -364,7 +368,12 @@ async function getUiModuleMetas(params) {
364
368
  projectDirPath: buildContext.packageJsonFilePath,
365
369
  filter: ({ moduleName }) => moduleName.includes("keycloakify") && moduleName !== "keycloakify"
366
370
  });
367
- return Promise.all(installedModulesWithKeycloakifyInTheName.filter(async ({ dirPath }) => (0,fs_existsAsync/* existsAsync */.o)((0,external_path_.join)(dirPath, constants/* KEYCLOAK_THEME */.PC))));
371
+ return (await Promise.all(installedModulesWithKeycloakifyInTheName.map(async (entry) => {
372
+ if (!(await (0,fs_existsAsync/* existsAsync */.o)((0,external_path_.join)(entry.dirPath, constants/* KEYCLOAK_THEME */.PC)))) {
373
+ return undefined;
374
+ }
375
+ return entry;
376
+ }))).filter((0,exclude/* exclude */.D)(undefined));
368
377
  })();
369
378
  const cacheContent = await (async () => {
370
379
  if (!(await (0,fs_existsAsync/* existsAsync */.o)(cacheFilePath))) {
@@ -391,7 +400,7 @@ async function getUiModuleMetas(params) {
391
400
  catch (_b) {
392
401
  return undefined;
393
402
  }
394
- (0,assert/* assert */.h)((0,is.is)(parsedCacheFile));
403
+ (0,assert/* assert */.h)((0,assert.is)(parsedCacheFile));
395
404
  return parsedCacheFile;
396
405
  })();
397
406
  if (parsedCacheFile === undefined) {
@@ -604,8 +613,8 @@ function getNodeModulesBinDirPath() {
604
613
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
605
614
 
606
615
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
616
+ /* harmony export */ "LG": () => (/* binding */ getPrettier),
607
617
  /* harmony export */ "MT": () => (/* binding */ getIsPrettierAvailable),
608
- /* harmony export */ "cI": () => (/* binding */ getPrettierAndConfig),
609
618
  /* harmony export */ "eY": () => (/* binding */ runPrettier)
610
619
  /* harmony export */ });
611
620
  /* harmony import */ var _nodeModulesBinDirPath__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(73776);
@@ -613,17 +622,24 @@ function getNodeModulesBinDirPath() {
613
622
  /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__);
614
623
  /* harmony import */ var fs_promises__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(73292);
615
624
  /* harmony import */ var fs_promises__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(fs_promises__WEBPACK_IMPORTED_MODULE_2__);
616
- /* harmony import */ var tsafe_id__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(38469);
625
+ /* harmony import */ var tsafe_id__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(38469);
617
626
  /* harmony import */ var tsafe_assert__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(29041);
618
627
  /* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(78818);
619
628
  /* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(chalk__WEBPACK_IMPORTED_MODULE_4__);
629
+ /* harmony import */ var crypto__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(6113);
630
+ /* harmony import */ var crypto__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(crypto__WEBPACK_IMPORTED_MODULE_5__);
631
+ /* harmony import */ var tsafe_symToStr__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(76030);
632
+ /* harmony import */ var _readThisNpmPackageVersion__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(64795);
620
633
 
621
634
 
622
635
 
623
636
 
624
637
 
625
638
 
626
- getIsPrettierAvailable.cache = (0,tsafe_id__WEBPACK_IMPORTED_MODULE_5__.id)(undefined);
639
+
640
+
641
+
642
+ getIsPrettierAvailable.cache = (0,tsafe_id__WEBPACK_IMPORTED_MODULE_7__.id)(undefined);
627
643
  async function getIsPrettierAvailable() {
628
644
  var _a;
629
645
  if (getIsPrettierAvailable.cache !== undefined) {
@@ -636,26 +652,53 @@ async function getIsPrettierAvailable() {
636
652
  getIsPrettierAvailable.cache = isPrettierAvailable;
637
653
  return isPrettierAvailable;
638
654
  }
639
- getPrettierAndConfig.cache = (0,tsafe_id__WEBPACK_IMPORTED_MODULE_5__.id)(undefined);
640
- async function getPrettierAndConfig() {
655
+ getPrettier.cache = (0,tsafe_id__WEBPACK_IMPORTED_MODULE_7__.id)(undefined);
656
+ async function getPrettier() {
641
657
  (0,tsafe_assert__WEBPACK_IMPORTED_MODULE_3__/* .assert */ .h)(getIsPrettierAvailable());
642
- if (getPrettierAndConfig.cache !== undefined) {
643
- return getPrettierAndConfig.cache;
658
+ if (getPrettier.cache !== undefined) {
659
+ return getPrettier.cache;
644
660
  }
645
- const prettier = await Promise.resolve(/* import() */).then(__webpack_require__.t.bind(__webpack_require__, 79421, 23));
661
+ let prettier = (0,tsafe_id__WEBPACK_IMPORTED_MODULE_7__.id)(undefined);
662
+ import_prettier: {
663
+ // NOTE: When module is linked we want to make sure we import the correct version
664
+ // of prettier, that is the one of the project, not the one of this repo.
665
+ // So we do a sketchy eval to bypass ncc.
666
+ // We make sure to only do that when linking, otherwise we import properly.
667
+ if ((0,_readThisNpmPackageVersion__WEBPACK_IMPORTED_MODULE_6__/* .readThisNpmPackageVersion */ .K)().startsWith("0.0.0")) {
668
+ eval(`${(0,tsafe_symToStr__WEBPACK_IMPORTED_MODULE_8__/* .symToStr */ .r)({ prettier })} = require("${(0,path__WEBPACK_IMPORTED_MODULE_1__.resolve)((0,path__WEBPACK_IMPORTED_MODULE_1__.join)((0,_nodeModulesBinDirPath__WEBPACK_IMPORTED_MODULE_0__/* .getNodeModulesBinDirPath */ .K)(), "..", "prettier"))}")`);
669
+ (0,tsafe_assert__WEBPACK_IMPORTED_MODULE_3__/* .assert */ .h)(!(0,tsafe_assert__WEBPACK_IMPORTED_MODULE_3__.is)(prettier));
670
+ break import_prettier;
671
+ }
672
+ prettier = await Promise.resolve(/* import() */).then(__webpack_require__.t.bind(__webpack_require__, 79421, 23));
673
+ }
674
+ const configHash = await (async () => {
675
+ const configFilePath = await prettier.resolveConfigFile((0,path__WEBPACK_IMPORTED_MODULE_1__.join)((0,_nodeModulesBinDirPath__WEBPACK_IMPORTED_MODULE_0__/* .getNodeModulesBinDirPath */ .K)(), ".."));
676
+ if (configFilePath === null) {
677
+ return "";
678
+ }
679
+ const data = await fs_promises__WEBPACK_IMPORTED_MODULE_2__.readFile(configFilePath);
680
+ return crypto__WEBPACK_IMPORTED_MODULE_5__.createHash("sha256").update(data).digest("hex");
681
+ })();
646
682
  const prettierAndConfig = {
647
683
  prettier,
648
- config: await prettier.resolveConfig((0,path__WEBPACK_IMPORTED_MODULE_1__.join)((0,_nodeModulesBinDirPath__WEBPACK_IMPORTED_MODULE_0__/* .getNodeModulesBinDirPath */ .K)(), ".."))
684
+ configHash
649
685
  };
650
- getPrettierAndConfig.cache = prettierAndConfig;
686
+ getPrettier.cache = prettierAndConfig;
651
687
  return prettierAndConfig;
652
688
  }
653
689
  async function runPrettier(params) {
654
690
  const { sourceCode, filePath } = params;
655
691
  let formattedSourceCode;
656
692
  try {
657
- const { prettier, config } = await getPrettierAndConfig();
658
- formattedSourceCode = await prettier.format(sourceCode, Object.assign(Object.assign({}, config), { filePath }));
693
+ const { prettier } = await getPrettier();
694
+ const { ignored, inferredParser } = await prettier.getFileInfo(filePath, {
695
+ resolveConfig: true
696
+ });
697
+ if (ignored) {
698
+ return sourceCode;
699
+ }
700
+ const config = await prettier.resolveConfig(filePath);
701
+ formattedSourceCode = await prettier.format(sourceCode, Object.assign(Object.assign({}, config), { filePath, parser: inferredParser !== null && inferredParser !== void 0 ? inferredParser : undefined }));
659
702
  }
660
703
  catch (error) {
661
704
  console.log(chalk__WEBPACK_IMPORTED_MODULE_4___default().red(`You probably need to upgrade the version of prettier in your project`));
@@ -665,6 +708,24 @@ async function runPrettier(params) {
665
708
  }
666
709
  //# sourceMappingURL=runPrettier.js.map
667
710
 
711
+ /***/ }),
712
+
713
+ /***/ 76030:
714
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
715
+
716
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
717
+ /* harmony export */ "r": () => (/* binding */ symToStr)
718
+ /* harmony export */ });
719
+ /** @see <https://docs.tsafe.dev/main/symtostr> */
720
+ function symToStr(wrap) {
721
+ // @ts-expect-error: We know better
722
+ return Object.keys(wrap)[0];
723
+ }
724
+
725
+
726
+ //# sourceMappingURL=symToStr.mjs.map
727
+
728
+
668
729
  /***/ })
669
730
 
670
731
  };