keycloakify 11.4.0-rc.0 → 11.4.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.
- package/README.md +2 -0
- package/account/i18n/noJsx/getI18n.js +5 -7
- package/account/i18n/noJsx/getI18n.js.map +1 -1
- package/account/i18n/withJsx/useI18n.js +15 -4
- package/account/i18n/withJsx/useI18n.js.map +1 -1
- package/bin/20.index.js +0 -85
- package/bin/33.index.js +55 -212
- package/bin/356.index.js +106 -45
- package/bin/36.index.js +1 -2922
- package/bin/{526.index.js → 392.index.js} +89 -3
- package/bin/40.index.js +1 -86
- package/bin/453.index.js +85 -22
- package/bin/573.index.js +4 -86
- package/bin/653.index.js +752 -0
- package/bin/658.index.js +197 -0
- package/bin/735.index.js +343 -116
- package/bin/786.index.js +78 -14
- package/bin/805.index.js +15 -18
- package/bin/921.index.js +79 -18
- package/bin/97.index.js +64 -13
- package/bin/main.js +165 -86
- package/bin/shared/constants.d.ts +2 -0
- package/bin/shared/constants.js +3 -1
- package/bin/shared/constants.js.map +1 -1
- package/bin/start-keycloak/startViteDevServer.d.ts +7 -0
- package/bin/tools/crawlAsync.d.ts +1 -1
- package/bin/tools/isTrackedByGit.d.ts +3 -0
- package/bin/tools/runPrettier.d.ts +5 -5
- package/bin/tools/untrackFromGit.d.ts +3 -0
- package/lib/getKcClsx.js +1 -2
- package/lib/getKcClsx.js.map +1 -1
- package/login/KcContext/KcContext.d.ts +2 -2
- package/login/KcContext/kcContextMocks.d.ts +1 -1
- package/login/TemplateProps.d.ts +0 -1
- package/login/i18n/noJsx/getI18n.js +5 -7
- package/login/i18n/noJsx/getI18n.js.map +1 -1
- package/login/i18n/withJsx/useI18n.js +15 -4
- package/login/i18n/withJsx/useI18n.js.map +1 -1
- package/login/pages/LoginConfigTotp.js +1 -1
- package/login/pages/LoginConfigTotp.js.map +1 -1
- package/login/pages/LoginPasskeysConditionalAuthenticate.js +16 -18
- package/login/pages/LoginPasskeysConditionalAuthenticate.js.map +1 -1
- package/package.json +17 -7
- package/src/account/i18n/noJsx/getI18n.tsx +5 -7
- package/src/account/i18n/withJsx/useI18n.tsx +18 -4
- package/src/bin/eject-page.ts +28 -10
- package/src/bin/initialize-account-theme/initializeAccountTheme_singlePage.ts +3 -18
- package/src/bin/initialize-account-theme/updateAccountThemeImplementationInConfig.ts +1 -2
- package/src/bin/keycloakify/generateFtl/kcContextDeclarationTemplate.ftl +39 -0
- package/src/bin/keycloakify/generateResources/generateResources.ts +6 -2
- package/src/bin/main.ts +51 -4
- package/src/bin/postinstall/getUiModuleFileSourceCodeReadyToBeCopied.ts +30 -19
- package/src/bin/postinstall/installUiModulesPeerDependencies.ts +3 -3
- package/src/bin/postinstall/managedGitignoreFile.ts +4 -3
- package/src/bin/postinstall/postinstall.ts +24 -2
- package/src/bin/postinstall/uiModuleMeta.ts +14 -9
- package/src/bin/shared/buildContext.ts +1 -2
- package/src/bin/shared/constants.ts +4 -1
- package/src/bin/start-keycloak/myrealm-realm-25.json +21 -34
- package/src/bin/start-keycloak/myrealm-realm-26.json +32 -35
- package/src/bin/start-keycloak/start-keycloak.ts +93 -1
- package/src/bin/start-keycloak/startViteDevServer.ts +39 -0
- package/src/bin/tools/crawlAsync.ts +6 -6
- package/src/bin/tools/isTrackedByGit.ts +29 -0
- package/src/bin/tools/listInstalledModules.ts +1 -2
- package/src/bin/tools/npmInstall.ts +396 -1
- package/src/bin/tools/runPrettier.ts +63 -14
- package/src/bin/tools/untrackFromGit.ts +24 -0
- package/src/bin/tsconfig.json +1 -1
- package/src/bin/update-kc-gen.ts +17 -2
- package/src/lib/getKcClsx.ts +1 -2
- package/src/login/KcContext/KcContext.ts +2 -2
- package/src/login/KcContext/kcContextMocks.ts +1 -1
- package/src/login/TemplateProps.ts +0 -1
- package/src/login/i18n/noJsx/getI18n.tsx +5 -7
- package/src/login/i18n/withJsx/useI18n.tsx +18 -4
- package/src/login/pages/LoginConfigTotp.tsx +18 -20
- package/src/login/pages/LoginPasskeysConditionalAuthenticate.tsx +51 -52
- package/src/tools/StatefulObservable/StatefulObservable.ts +1 -2
- package/src/tools/deepAssign.ts +1 -2
- package/src/tools/extractLastParenthesisContent.ts +43 -0
- package/src/vite-plugin/vite-plugin.ts +67 -0
- package/stories/login/pages/Info.stories.tsx +3 -39
- package/tools/StatefulObservable/StatefulObservable.js +1 -2
- package/tools/StatefulObservable/StatefulObservable.js.map +1 -1
- package/tools/deepAssign.js +1 -2
- package/tools/deepAssign.js.map +1 -1
- package/tools/extractLastParenthesisContent.d.ts +6 -0
- package/tools/extractLastParenthesisContent.js +36 -0
- package/tools/extractLastParenthesisContent.js.map +1 -0
- package/vite-plugin/index.js +326 -186
- package/bin/124.index.js +0 -348
- 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
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
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
|
-
|
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
|
-
|
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
|
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,
|
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,
|
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 {
|
359
|
-
return
|
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.
|
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,
|
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
|
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
|
-
|
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
|
-
|
640
|
-
async function
|
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 (
|
643
|
-
return
|
658
|
+
if (getPrettier.cache !== undefined) {
|
659
|
+
return getPrettier.cache;
|
644
660
|
}
|
645
|
-
|
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
|
-
|
684
|
+
configHash
|
649
685
|
};
|
650
|
-
|
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
|
658
|
-
|
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
|
};
|