keycloakify 4.2.8 β 4.2.12
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/CHANGELOG.md +16 -0
- package/README.md +12 -2
- package/bin/build-keycloak-theme/build-keycloak-theme.js +7 -5
- package/bin/build-keycloak-theme/build-keycloak-theme.js.map +1 -1
- package/lib/i18n/KcLanguageTag.d.ts +1 -0
- package/lib/i18n/KcLanguageTag.js +3 -3
- package/lib/i18n/KcLanguageTag.js.map +1 -1
- package/lib/i18n/useKcMessage.js +3 -3
- package/lib/i18n/useKcMessage.js.map +1 -1
- package/package.json +3 -3
- package/src/bin/build-keycloak-theme/build-keycloak-theme.ts +7 -5
- package/src/lib/i18n/KcLanguageTag.ts +2 -2
- package/src/lib/i18n/useKcMessage.tsx +3 -3
package/CHANGELOG.md
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
### **4.2.12** (2021-12-08)
|
2
|
+
|
3
|
+
- Update post build instructions
|
4
|
+
|
5
|
+
### **4.2.11** (2021-12-07)
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
### **4.2.10** (2021-11-12)
|
10
|
+
|
11
|
+
- Export an exaustive list of KcLanguageTag
|
12
|
+
|
13
|
+
### **4.2.9** (2021-11-11)
|
14
|
+
|
15
|
+
- Fix useAdvancedMsg
|
16
|
+
|
1
17
|
### **4.2.8** (2021-11-10)
|
2
18
|
|
3
19
|
- Update doc about pattern that can be used for user attributes #50
|
package/README.md
CHANGED
@@ -77,6 +77,7 @@ If you already have a Keycloak custom theme, it can be easily ported to Keycloak
|
|
77
77
|
- [Implement context persistence (optional)](#implement-context-persistence-optional)
|
78
78
|
- [Kickstart video](#kickstart-video)
|
79
79
|
- [About the errors related to `objectToJson` in Keycloak logs.](#about-the-errors-related-to-objecttojson-in-keycloak-logs)
|
80
|
+
- [The pages take too long to load ?](#the-pages-take-too-long-to-load-)
|
80
81
|
- [Adding custom message (to `i18n/useKcMessage.tsx`)](#adding-custom-message-to-i18nusekcmessagetsx)
|
81
82
|
- [Email domain whitelist](#email-domain-whitelist)
|
82
83
|
- [Changelog highlights](#changelog-highlights)
|
@@ -87,6 +88,8 @@ If you already have a Keycloak custom theme, it can be easily ported to Keycloak
|
|
87
88
|
|
88
89
|
# Requirements
|
89
90
|
|
91
|
+
On Windows OS you'll have to use [WSL](https://docs.microsoft.com/en-us/windows/wsl/install-win10). More info [here](https://github.com/InseeFrLab/keycloakify/issues/54%23issuecomment-984834217)
|
92
|
+
|
90
93
|
Tested with the following Keycloak versions:
|
91
94
|
|
92
95
|
- [11.0.3](https://hub.docker.com/layers/jboss/keycloak/11.0.3/images/sha256-4438f1e51c1369371cb807dffa526e1208086b3ebb9cab009830a178de949782?context=explore)
|
@@ -106,8 +109,6 @@ For more information see [this issue](https://github.com/InseeFrLab/keycloakify/
|
|
106
109
|
- `mvn` ([Maven](https://maven.apache.org/)), `rm`, `mkdir`, `curl`, `unzip` are assumed to be available.
|
107
110
|
- `docker` must be up and running when running `yarn keycloak`.
|
108
111
|
|
109
|
-
On Windows you'll have to use [WSL](https://docs.microsoft.com/en-us/windows/wsl/install-win10).
|
110
|
-
|
111
112
|
## My framework doesnβt seem to be supported, what can I do?
|
112
113
|
|
113
114
|
Currently Keycloakify is only compatible with `create-react-app` apps.
|
@@ -461,6 +462,15 @@ To [converts the `.ftl` values into a JavaScript object](https://github.com/Inse
|
|
461
462
|
without making assumptions on the `.data_model` we have to do things that throws.
|
462
463
|
It's all-right because every statement that can fail is inside an `<#attempt><#recorver>` block but it results in errors being printed to the logs.
|
463
464
|
|
465
|
+
# The pages take too long to load ?
|
466
|
+
|
467
|
+
The problem of templates taking a long time to load only happens in the test environment, when you have a console logging all the above-mentioned `.ftl` warnings in real time. Logging all those warnings is what takes time. Once in production page load is way faster.
|
468
|
+
|
469
|
+
If you run the docker container locally we aknowelage that the loading time is getting out of hand.
|
470
|
+
We are [in the process](https://github.com/InseeFrLab/keycloakify/pull/63) of resolving this issue.
|
471
|
+
|
472
|
+
In the meantime we recommend to run the docker container as a background task.
|
473
|
+
|
464
474
|
# Adding custom message (to `i18n/useKcMessage.tsx`)
|
465
475
|
|
466
476
|
You can reproduce [this approach](https://github.com/garronej/keycloakify-demo-app/blob/main/src/kcMessagesExtension.ts)
|
@@ -127,11 +127,13 @@ function main() {
|
|
127
127
|
"",
|
128
128
|
"\uD83D\uDC49 $ ./" + (0, path_1.relative)(reactProjectDirPath, (0, path_1.join)(exports.keycloakThemeBuildingDirPath, generateDebugFiles_1.containerLaunchScriptBasename)) + " \uD83D\uDC48",
|
129
129
|
"",
|
130
|
-
|
131
|
-
"
|
132
|
-
|
133
|
-
"",
|
134
|
-
"
|
130
|
+
"To test your theme: ",
|
131
|
+
"- Log into the admin console π http://localhost:8080 username: admin, password: admin π",
|
132
|
+
'- Create a realm named "myrealm"',
|
133
|
+
'- Create a client with id "myclient" and root url: "https://www.keycloak.org/app/"',
|
134
|
+
"- Select Login Theme: " + themeName + " (don't forget to save at the bottom of the page)",
|
135
|
+
"- Go to \uD83D\uDC49 https://www.keycloak.org/app/ \uD83D\uDC48 Click \"Save\" then \"Sign in\"",
|
136
|
+
"You should see your login page, More details: https://www.keycloak.org/getting-started/getting-started-docker",
|
135
137
|
"",
|
136
138
|
].join("\n"));
|
137
139
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"build-keycloak-theme.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/build-keycloak-theme.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"build-keycloak-theme.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/build-keycloak-theme.ts"],"names":[],"mappings":"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"}
|
@@ -24,6 +24,7 @@ declare const kcLanguageByTagLabel: {
|
|
24
24
|
};
|
25
25
|
export declare type LanguageLabel = typeof kcLanguageByTagLabel[keyof typeof kcLanguageByTagLabel];
|
26
26
|
export declare function getKcLanguageTagLabel(language: KcLanguageTag): LanguageLabel;
|
27
|
+
export declare const kcLanguageTags: ("tr" | "no" | "en" | "fr" | "ca" | "cs" | "da" | "de" | "es" | "hu" | "it" | "ja" | "lt" | "nl" | "pl" | "pt-BR" | "ru" | "sk" | "sv" | "zh-CN")[];
|
27
28
|
/**
|
28
29
|
* Pass in "fr-FR" or "franΓ§ais" for example, it will return the AvailableLanguage
|
29
30
|
* it corresponds to: "fr".
|
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.getBestMatchAmongKcLanguageTag = exports.getKcLanguageTagLabel = void 0;
|
3
|
+
exports.getBestMatchAmongKcLanguageTag = exports.kcLanguageTags = exports.getKcLanguageTagLabel = void 0;
|
4
4
|
var objectKeys_1 = require("tsafe/objectKeys");
|
5
5
|
var login_1 = require("./kcMessages/login");
|
6
6
|
var kcLanguageByTagLabel = {
|
@@ -32,7 +32,7 @@ function getKcLanguageTagLabel(language) {
|
|
32
32
|
return (_a = kcLanguageByTagLabel[language]) !== null && _a !== void 0 ? _a : language;
|
33
33
|
}
|
34
34
|
exports.getKcLanguageTagLabel = getKcLanguageTagLabel;
|
35
|
-
|
35
|
+
exports.kcLanguageTags = (0, objectKeys_1.objectKeys)(login_1.kcMessages);
|
36
36
|
/**
|
37
37
|
* Pass in "fr-FR" or "franΓ§ais" for example, it will return the AvailableLanguage
|
38
38
|
* it corresponds to: "fr".
|
@@ -41,7 +41,7 @@ var availableLanguages = (0, objectKeys_1.objectKeys)(login_1.kcMessages);
|
|
41
41
|
*/
|
42
42
|
function getBestMatchAmongKcLanguageTag(languageLike) {
|
43
43
|
var iso2LanguageLike = languageLike.split("-")[0].toLowerCase();
|
44
|
-
var kcLanguageTag =
|
44
|
+
var kcLanguageTag = exports.kcLanguageTags.find(function (language) {
|
45
45
|
return language.toLowerCase().includes(iso2LanguageLike) ||
|
46
46
|
getKcLanguageTagLabel(language).toLocaleLowerCase() === languageLike.toLocaleLowerCase();
|
47
47
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"KcLanguageTag.js","sourceRoot":"","sources":["../../src/lib/i18n/KcLanguageTag.ts"],"names":[],"mappings":";;;AAAA,+CAA8C;AAC9C,4CAAgD;AAIhD,IAAM,oBAAoB,GAAG;IACzB,4BAA4B;IAC5B,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,oBAAoB;IAC7B,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,QAAQ;IACd,2BAA2B;CACrB,CAAC;AAIX,SAAgB,qBAAqB,CAAC,QAAuB;;IACzD,OAAO,MAAA,oBAAoB,CAAC,QAAQ,CAAC,mCAAI,QAAQ,CAAC;AACtD,CAAC;AAFD,sDAEC;
|
1
|
+
{"version":3,"file":"KcLanguageTag.js","sourceRoot":"","sources":["../../src/lib/i18n/KcLanguageTag.ts"],"names":[],"mappings":";;;AAAA,+CAA8C;AAC9C,4CAAgD;AAIhD,IAAM,oBAAoB,GAAG;IACzB,4BAA4B;IAC5B,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,oBAAoB;IAC7B,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,QAAQ;IACd,2BAA2B;CACrB,CAAC;AAIX,SAAgB,qBAAqB,CAAC,QAAuB;;IACzD,OAAO,MAAA,oBAAoB,CAAC,QAAQ,CAAC,mCAAI,QAAQ,CAAC;AACtD,CAAC;AAFD,sDAEC;AAEY,QAAA,cAAc,GAAG,IAAA,uBAAU,EAAC,kBAAU,CAAC,CAAC;AAErD;;;;;GAKG;AACH,SAAgB,8BAA8B,CAAC,YAAoB;IAC/D,IAAM,gBAAgB,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAElE,IAAM,aAAa,GAAG,sBAAc,CAAC,IAAI,CACrC,UAAA,QAAQ;QACJ,OAAA,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACjD,qBAAqB,CAAC,QAAQ,CAAC,CAAC,iBAAiB,EAAE,KAAK,YAAY,CAAC,iBAAiB,EAAE;IADxF,CACwF,CAC/F,CAAC;IAEF,IAAI,aAAa,KAAK,SAAS,EAAE;QAC7B,OAAO,aAAa,CAAC;KACxB;IAED,IAAI,YAAY,KAAK,SAAS,CAAC,QAAQ,EAAE;QACrC,OAAO,8BAA8B,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;KAC7D;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAlBD,wEAkBC"}
|
package/lib/i18n/useKcMessage.js
CHANGED
@@ -68,14 +68,14 @@ function resolveMsg(props) {
|
|
68
68
|
function resolveMsgAdvanced(props) {
|
69
69
|
var key = props.key, args = props.args, kcLanguageTag = props.kcLanguageTag, doRenderMarkdown = props.doRenderMarkdown;
|
70
70
|
var match = key.match(/^\$\{([^{]+)\}$/);
|
71
|
-
var
|
71
|
+
var keyUnwrappedFromCurlyBraces = match === null ? key : match[1];
|
72
72
|
var out = resolveMsg({
|
73
|
-
"key":
|
73
|
+
"key": keyUnwrappedFromCurlyBraces,
|
74
74
|
args: args,
|
75
75
|
kcLanguageTag: kcLanguageTag,
|
76
76
|
doRenderMarkdown: doRenderMarkdown,
|
77
77
|
});
|
78
|
-
return (out !== undefined ? out :
|
78
|
+
return (out !== undefined ? out : doRenderMarkdown ? (0, jsx_runtime_1.jsx)("span", { children: keyUnwrappedFromCurlyBraces }, void 0) : keyUnwrappedFromCurlyBraces);
|
79
79
|
}
|
80
80
|
/**
|
81
81
|
* When the language is switched the page is reloaded, this may appear
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useKcMessage.js","sourceRoot":"","sources":["../../src/lib/i18n/useKcMessage.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAA8C;AAC9C,+BAAmC;AACnC,uDAAsD;AACtD,4CAAiE;AAMxD,2FANA,kBAAU,OAMA;AALnB,mCAAmC;AACnC,kIAAkI;AAClI,kEAA2C;AAC3C,kEAAiE;AAMjE,SAAS,UAAU,CAAuD,KAKzE;;IACW,IAAA,GAAG,GAA4C,KAAK,IAAjD,EAAE,IAAI,GAAsC,KAAK,KAA3C,EAAE,aAAa,GAAuB,KAAK,cAA5B,EAAE,gBAAgB,GAAK,KAAK,iBAAV,CAAW;IAE7D,IAAI,GAAG,GAAG,MAAA,kBAAU,CAAC,aAA4B,CAAC,CAAC,GAAiB,CAAC,mCAAI,kBAAU,CAAC,IAAI,CAAC,CAAC,GAAiB,CAAC,CAAC;IAE7G,IAAI,GAAG,KAAK,SAAS,EAAE;QACnB,OAAO,SAAgB,CAAC;KAC3B;IAED,GAAG,GAAG,CAAC;;QACH,IAAM,UAAU,GAAG,MAAA,GAAG;aACjB,KAAK,CAAC,WAAW,CAAC,0CACjB,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,CAAC,YAAY,CAAE,CAAC,CAAC,CAAC,EAAzB,CAAyB,EACnC,GAAG,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,QAAQ,CAAC,EAAlB,CAAkB,EAClC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,GAAG,CAAC,EAAL,CAAK,EAAE,CAAC,CAAC,CAAC;QAE9B,IAAI,UAAU,KAAK,SAAS,EAAE;YAC1B,OAAO,GAAG,CAAC;SACd;QAED,IAAI,CAAC,OAAO,CAAC,UAAC,GAAG,EAAE,CAAC;YAChB,IAAI,GAAG,KAAK,SAAS,EAAE;gBACnB,OAAO;aACV;YAED,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,SAAM,CAAC,GAAG,UAAU,SAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACf,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,CACH,gBAAgB,CAAC,CAAC,CAAC,CACf,uBAAC,wBAAa,aAAC,kBAAkB,QAAC,SAAS,EAAE,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,gBACjG,GAAG,YACQ,CACnB,CAAC,CAAC,CAAC,CACA,GAAG,CACN,CACG,CAAC;AACb,CAAC;AAED,SAAS,kBAAkB,CAAuD,KAKjF;IACW,IAAA,GAAG,GAA4C,KAAK,IAAjD,EAAE,IAAI,GAAsC,KAAK,KAA3C,EAAE,aAAa,GAAuB,KAAK,cAA5B,EAAE,gBAAgB,GAAK,KAAK,iBAAV,CAAW;IAE7D,IAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAE3C,IAAM,
|
1
|
+
{"version":3,"file":"useKcMessage.js","sourceRoot":"","sources":["../../src/lib/i18n/useKcMessage.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "keycloakify",
|
3
|
-
"version": "4.2.
|
3
|
+
"version": "4.2.12",
|
4
4
|
"description": "Keycloak theme generator for Reacts app",
|
5
5
|
"repository": {
|
6
6
|
"type": "git",
|
@@ -321,7 +321,7 @@
|
|
321
321
|
"@emotion/react": "^11.4.1",
|
322
322
|
"powerhooks": "^0.10.0",
|
323
323
|
"react": "^16.8.0 || ^17.0.0",
|
324
|
-
"tss-react": "^1.1.0"
|
324
|
+
"tss-react": "^1.1.0 || ^3.0.0"
|
325
325
|
},
|
326
326
|
"devDependencies": {
|
327
327
|
"@emotion/react": "^11.4.1",
|
@@ -335,7 +335,7 @@
|
|
335
335
|
"properties-parser": "^0.3.1",
|
336
336
|
"react": "^17.0.1",
|
337
337
|
"rimraf": "^3.0.2",
|
338
|
-
"tss-react": "^
|
338
|
+
"tss-react": "^3.0.0",
|
339
339
|
"typescript": "^4.2.3"
|
340
340
|
},
|
341
341
|
"dependencies": {
|
@@ -121,11 +121,13 @@ export function main() {
|
|
121
121
|
"",
|
122
122
|
`π $ ./${pathRelative(reactProjectDirPath, pathJoin(keycloakThemeBuildingDirPath, containerLaunchScriptBasename))} π`,
|
123
123
|
"",
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
"",
|
128
|
-
|
124
|
+
"To test your theme: ",
|
125
|
+
"- Log into the admin console π http://localhost:8080 username: admin, password: admin π",
|
126
|
+
'- Create a realm named "myrealm"',
|
127
|
+
'- Create a client with id "myclient" and root url: "https://www.keycloak.org/app/"',
|
128
|
+
`- Select Login Theme: ${themeName} (don't forget to save at the bottom of the page)`,
|
129
|
+
`- Go to π https://www.keycloak.org/app/ π Click "Save" then "Sign in"`,
|
130
|
+
`You should see your login page, More details: https://www.keycloak.org/getting-started/getting-started-docker`,
|
129
131
|
"",
|
130
132
|
].join("\n"),
|
131
133
|
);
|
@@ -34,7 +34,7 @@ export function getKcLanguageTagLabel(language: KcLanguageTag): LanguageLabel {
|
|
34
34
|
return kcLanguageByTagLabel[language] ?? language;
|
35
35
|
}
|
36
36
|
|
37
|
-
const
|
37
|
+
export const kcLanguageTags = objectKeys(kcMessages);
|
38
38
|
|
39
39
|
/**
|
40
40
|
* Pass in "fr-FR" or "franΓ§ais" for example, it will return the AvailableLanguage
|
@@ -45,7 +45,7 @@ const availableLanguages = objectKeys(kcMessages);
|
|
45
45
|
export function getBestMatchAmongKcLanguageTag(languageLike: string): KcLanguageTag {
|
46
46
|
const iso2LanguageLike = languageLike.split("-")[0].toLowerCase();
|
47
47
|
|
48
|
-
const kcLanguageTag =
|
48
|
+
const kcLanguageTag = kcLanguageTags.find(
|
49
49
|
language =>
|
50
50
|
language.toLowerCase().includes(iso2LanguageLike) ||
|
51
51
|
getKcLanguageTagLabel(language).toLocaleLowerCase() === languageLike.toLocaleLowerCase(),
|
@@ -68,16 +68,16 @@ function resolveMsgAdvanced<Key extends string, DoRenderMarkdown extends boolean
|
|
68
68
|
|
69
69
|
const match = key.match(/^\$\{([^{]+)\}$/);
|
70
70
|
|
71
|
-
const
|
71
|
+
const keyUnwrappedFromCurlyBraces = match === null ? key : match[1];
|
72
72
|
|
73
73
|
const out = resolveMsg({
|
74
|
-
"key":
|
74
|
+
"key": keyUnwrappedFromCurlyBraces,
|
75
75
|
args,
|
76
76
|
kcLanguageTag,
|
77
77
|
doRenderMarkdown,
|
78
78
|
});
|
79
79
|
|
80
|
-
return (out !== undefined ? out :
|
80
|
+
return (out !== undefined ? out : doRenderMarkdown ? <span>{keyUnwrappedFromCurlyBraces}</span> : keyUnwrappedFromCurlyBraces) as any;
|
81
81
|
}
|
82
82
|
|
83
83
|
/**
|