keycloakify 6.11.9 → 6.12.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.
- package/README.md +10 -7
- package/bin/create-keycloak-email-directory.js +1 -1
- package/bin/download-builtin-keycloak-theme.js +1 -1
- package/bin/keycloakify/BuildOptions.d.ts +2 -2
- package/bin/keycloakify/BuildOptions.js.map +1 -1
- package/bin/keycloakify/generateFtl/generateFtl.d.ts +2 -2
- package/bin/keycloakify/generateJavaStackFiles.d.ts +1 -1
- package/bin/keycloakify/generateKeycloakThemeResources.d.ts +1 -1
- package/bin/keycloakify/generateKeycloakThemeResources.js +1 -1
- package/bin/keycloakify/generateStartKeycloakTestingContainer.d.ts +1 -1
- package/bin/keycloakify/keycloakify.js +1 -1
- package/bin/keycloakify/replacers/replaceImportsFromStaticInJsCode.d.ts +1 -1
- package/bin/keycloakify/replacers/replaceImportsInCssCode.d.ts +1 -1
- package/bin/keycloakify/replacers/replaceImportsInInlineCssCode.d.ts +1 -1
- package/bin/promptKeycloakVersion.js +1 -1
- package/bin/tools/NpmModuleVersion.d.ts +1 -1
- package/bin/tools/cliOptions.d.ts +1 -1
- package/bin/tools/deflate.js +1 -1
- package/bin/tools/downloadAndUnzip.js +51 -44
- package/bin/tools/downloadAndUnzip.js.map +1 -1
- package/bin/tools/grant-exec-perms.js +3 -2
- package/bin/tools/grant-exec-perms.js.map +1 -1
- package/bin/tools/jar.d.ts +1 -1
- package/bin/tools/jar.js +1 -1
- package/bin/tools/logger.d.ts +2 -2
- package/bin/tools/octokit-addons/getLatestsSemVersionedTag.js +34 -27
- package/bin/tools/octokit-addons/getLatestsSemVersionedTag.js.map +1 -1
- package/bin/tools/octokit-addons/listTags.js +1 -1
- package/bin/tools/transformCodebase.d.ts +1 -1
- package/bin/tools/walk.js +1 -1
- package/bin/tools/zip.d.ts +2 -2
- package/bin/tools/zip.js +1 -1
- package/bin/tsconfig.tsbuildinfo +1 -1
- package/lib/KcApp.d.ts +6 -0
- package/lib/{components/KcApp.js → KcApp.js} +25 -26
- package/lib/KcApp.js.map +1 -0
- package/lib/{components/KcProps.d.ts → KcProps.d.ts} +30 -6
- package/lib/{components/KcProps.js → KcProps.js} +1 -1
- package/lib/KcProps.js.map +1 -0
- package/lib/Template.d.ts +18 -0
- package/lib/{components/Template.js → Template.js} +67 -55
- package/lib/Template.js.map +1 -0
- package/lib/getKcContext/KcContextBase.d.ts +6 -6
- package/lib/getKcContext/getKcContextFromWindow.d.ts +1 -1
- package/lib/getKcContext/{kcContextMocks/kcContextMocks.d.ts → kcContextMocks.d.ts} +1 -1
- package/lib/getKcContext/{kcContextMocks/kcContextMocks.js → kcContextMocks.js} +8 -5
- package/lib/getKcContext/kcContextMocks.js.map +1 -0
- package/lib/i18n/i18n.d.ts +100 -0
- package/lib/i18n/i18n.js +160 -0
- package/lib/i18n/i18n.js.map +1 -0
- package/lib/i18n/index.d.ts +1 -99
- package/lib/i18n/index.js +1 -159
- package/lib/i18n/index.js.map +1 -1
- package/lib/index.d.ts +3 -3
- package/lib/index.js +3 -3
- package/lib/index.js.map +1 -1
- package/lib/pages/Error.d.ts +5 -0
- package/lib/{components → pages}/Error.js +4 -6
- package/lib/pages/Error.js.map +1 -0
- package/lib/pages/IdpReviewUserProfile.d.ts +5 -0
- package/lib/{components → pages}/IdpReviewUserProfile.js +4 -6
- package/lib/pages/IdpReviewUserProfile.js.map +1 -0
- package/lib/pages/Info.d.ts +5 -0
- package/lib/{components → pages}/Info.js +4 -6
- package/lib/pages/Info.js.map +1 -0
- package/lib/pages/Login.d.ts +5 -0
- package/lib/{components → pages}/Login.js +5 -7
- package/lib/pages/Login.js.map +1 -0
- package/lib/pages/LoginConfigTotp.d.ts +5 -0
- package/lib/{components → pages}/LoginConfigTotp.js +4 -6
- package/lib/pages/LoginConfigTotp.js.map +1 -0
- package/lib/pages/LoginIdpLinkConfirm.d.ts +5 -0
- package/lib/{components → pages}/LoginIdpLinkConfirm.js +4 -6
- package/lib/pages/LoginIdpLinkConfirm.js.map +1 -0
- package/lib/pages/LoginIdpLinkEmail.d.ts +5 -0
- package/lib/{components → pages}/LoginIdpLinkEmail.js +4 -6
- package/lib/pages/LoginIdpLinkEmail.js.map +1 -0
- package/lib/pages/LoginOtp.d.ts +5 -0
- package/lib/{components → pages}/LoginOtp.js +4 -6
- package/lib/pages/LoginOtp.js.map +1 -0
- package/lib/pages/LoginPageExpired.d.ts +5 -0
- package/lib/{components → pages}/LoginPageExpired.js +4 -6
- package/lib/pages/LoginPageExpired.js.map +1 -0
- package/lib/pages/LoginPassword.d.ts +5 -0
- package/lib/{components → pages}/LoginPassword.js +5 -7
- package/lib/pages/LoginPassword.js.map +1 -0
- package/lib/pages/LoginResetPassword.d.ts +5 -0
- package/lib/{components → pages}/LoginResetPassword.js +4 -6
- package/lib/pages/LoginResetPassword.js.map +1 -0
- package/lib/pages/LoginUpdatePassword.d.ts +5 -0
- package/lib/{components → pages}/LoginUpdatePassword.js +4 -6
- package/lib/pages/LoginUpdatePassword.js.map +1 -0
- package/lib/pages/LoginUpdateProfile.d.ts +5 -0
- package/lib/{components → pages}/LoginUpdateProfile.js +4 -6
- package/lib/pages/LoginUpdateProfile.js.map +1 -0
- package/lib/pages/LoginUsername.d.ts +5 -0
- package/lib/{components → pages}/LoginUsername.js +5 -7
- package/lib/pages/LoginUsername.js.map +1 -0
- package/lib/pages/LoginVerifyEmail.d.ts +5 -0
- package/lib/{components → pages}/LoginVerifyEmail.js +4 -6
- package/lib/pages/LoginVerifyEmail.js.map +1 -0
- package/lib/pages/LogoutConfirm.d.ts +5 -0
- package/lib/{components → pages}/LogoutConfirm.js +4 -6
- package/lib/pages/LogoutConfirm.js.map +1 -0
- package/lib/pages/Register.d.ts +5 -0
- package/lib/{components → pages}/Register.js +4 -6
- package/lib/pages/Register.js.map +1 -0
- package/lib/pages/RegisterUserProfile.d.ts +5 -0
- package/lib/{components → pages}/RegisterUserProfile.js +4 -6
- package/lib/pages/RegisterUserProfile.js.map +1 -0
- package/lib/pages/Terms.d.ts +19 -0
- package/lib/{components → pages}/Terms.js +20 -22
- package/lib/pages/Terms.js.map +1 -0
- package/lib/pages/UpdateUserProfile.d.ts +5 -0
- package/lib/{components → pages}/UpdateUserProfile.js +4 -6
- package/lib/pages/UpdateUserProfile.js.map +1 -0
- package/lib/pages/WebauthnAuthenticate.d.ts +5 -0
- package/lib/{components → pages}/WebauthnAuthenticate.js +5 -7
- package/lib/pages/WebauthnAuthenticate.js.map +1 -0
- package/lib/{components → pages}/shared/UserProfileCommons.d.ts +6 -6
- package/lib/{components → pages}/shared/UserProfileCommons.js +4 -4
- package/lib/pages/shared/UserProfileCommons.js.map +1 -0
- package/lib/tools/AndByDiscriminatingKey.d.ts +1 -1
- package/lib/tools/DeepPartial.d.ts +1 -1
- package/lib/tools/ReactComponent.d.ts +1 -1
- package/lib/tools/SetOptional.d.ts +1 -0
- package/lib/tools/SetOptional.js +2 -0
- package/lib/tools/SetOptional.js.map +1 -0
- package/lib/tools/clsx.d.ts +2 -3
- package/lib/tools/clsx.js +39 -3
- package/lib/tools/clsx.js.map +1 -1
- package/lib/tools/deepAssign.js +1 -1
- package/lib/tools/deepAssign.js.map +1 -1
- package/lib/tools/memoize.d.ts +7 -0
- package/lib/tools/memoize.js +38 -0
- package/lib/tools/memoize.js.map +1 -0
- package/lib/tools/useCallbackFactory.d.ts +15 -0
- package/lib/tools/useCallbackFactory.js +28 -0
- package/lib/tools/useCallbackFactory.js.map +1 -0
- package/lib/tools/useConst.d.ts +5 -0
- package/lib/tools/useConst.js +10 -0
- package/lib/tools/useConst.js.map +1 -0
- package/lib/tools/useConstCallback.d.ts +2 -0
- package/lib/tools/useConstCallback.js +8 -0
- package/lib/tools/useConstCallback.js.map +1 -0
- package/lib/tools/useCssAndCx.d.ts +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/useFormValidationSlice.d.ts +4 -4
- package/lib/useFormValidationSlice.js +1 -1
- package/lib/useFormValidationSlice.js.map +1 -1
- package/package.json +133 -124
- package/src/bin/keycloakify/BuildOptions.ts +2 -2
- package/src/bin/keycloakify/generateFtl/generateFtl.ts +1 -1
- package/src/lib/{components/KcApp.tsx → KcApp.tsx} +29 -38
- package/src/lib/{components/KcProps.ts → KcProps.ts} +27 -1
- package/src/lib/{components/Template.tsx → Template.tsx} +111 -95
- package/src/lib/getKcContext/KcContextBase.ts +1 -1
- package/src/lib/getKcContext/{kcContextMocks/kcContextMocks.ts → kcContextMocks.ts} +9 -6
- package/src/lib/i18n/i18n.tsx +292 -0
- package/src/lib/i18n/index.tsx +1 -290
- package/src/lib/index.ts +3 -3
- package/src/lib/{components → pages}/Error.tsx +7 -18
- package/src/lib/{components → pages}/IdpReviewUserProfile.tsx +7 -18
- package/src/lib/{components → pages}/Info.tsx +7 -18
- package/src/lib/{components → pages}/Login.tsx +8 -20
- package/src/lib/{components → pages}/LoginConfigTotp.tsx +7 -18
- package/src/lib/{components → pages}/LoginIdpLinkConfirm.tsx +7 -18
- package/src/lib/{components → pages}/LoginIdpLinkEmail.tsx +7 -18
- package/src/lib/{components → pages}/LoginOtp.tsx +7 -18
- package/src/lib/{components → pages}/LoginPageExpired.tsx +7 -18
- package/src/lib/{components → pages}/LoginPassword.tsx +8 -19
- package/src/lib/{components → pages}/LoginResetPassword.tsx +7 -18
- package/src/lib/{components → pages}/LoginUpdatePassword.tsx +7 -18
- package/src/lib/{components → pages}/LoginUpdateProfile.tsx +7 -18
- package/src/lib/{components → pages}/LoginUsername.tsx +8 -19
- package/src/lib/{components → pages}/LoginVerifyEmail.tsx +7 -18
- package/src/lib/{components → pages}/LogoutConfirm.tsx +7 -18
- package/src/lib/{components → pages}/Register.tsx +7 -18
- package/src/lib/{components → pages}/RegisterUserProfile.tsx +7 -18
- package/src/lib/{components → pages}/Terms.tsx +50 -61
- package/src/lib/{components → pages}/UpdateUserProfile.tsx +7 -18
- package/src/lib/{components → pages}/WebauthnAuthenticate.tsx +9 -19
- package/src/lib/pages/shared/UserProfileCommons.tsx +178 -0
- package/src/lib/tools/SetOptional.ts +1 -0
- package/src/lib/tools/clsx.ts +42 -5
- package/src/lib/tools/deepAssign.ts +1 -1
- package/src/lib/tools/memoize.ts +55 -0
- package/src/lib/tools/useCallbackFactory.ts +45 -0
- package/src/lib/tools/useConst.ts +10 -0
- package/src/lib/tools/useConstCallback.ts +15 -0
- package/src/lib/useFormValidationSlice.tsx +4 -4
- package/bin/generate-i18n-messages.d.ts +0 -1
- package/bin/generate-i18n-messages.js +0 -126
- package/bin/generate-i18n-messages.js.map +0 -1
- package/bin/link_in_test_app.d.ts +0 -1
- package/bin/link_in_test_app.js +0 -141
- package/bin/link_in_test_app.js.map +0 -1
- package/lib/components/Error.d.ts +0 -13
- package/lib/components/Error.js.map +0 -1
- package/lib/components/IdpReviewUserProfile.d.ts +0 -13
- package/lib/components/IdpReviewUserProfile.js.map +0 -1
- package/lib/components/Info.d.ts +0 -13
- package/lib/components/Info.js.map +0 -1
- package/lib/components/KcApp.d.ts +0 -13
- package/lib/components/KcApp.js.map +0 -1
- package/lib/components/KcProps.js.map +0 -1
- package/lib/components/Login.d.ts +0 -13
- package/lib/components/Login.js.map +0 -1
- package/lib/components/LoginConfigTotp.d.ts +0 -13
- package/lib/components/LoginConfigTotp.js.map +0 -1
- package/lib/components/LoginIdpLinkConfirm.d.ts +0 -13
- package/lib/components/LoginIdpLinkConfirm.js.map +0 -1
- package/lib/components/LoginIdpLinkEmail.d.ts +0 -13
- package/lib/components/LoginIdpLinkEmail.js.map +0 -1
- package/lib/components/LoginOtp.d.ts +0 -13
- package/lib/components/LoginOtp.js.map +0 -1
- package/lib/components/LoginPageExpired.d.ts +0 -13
- package/lib/components/LoginPageExpired.js.map +0 -1
- package/lib/components/LoginPassword.d.ts +0 -13
- package/lib/components/LoginPassword.js.map +0 -1
- package/lib/components/LoginResetPassword.d.ts +0 -13
- package/lib/components/LoginResetPassword.js.map +0 -1
- package/lib/components/LoginUpdatePassword.d.ts +0 -13
- package/lib/components/LoginUpdatePassword.js.map +0 -1
- package/lib/components/LoginUpdateProfile.d.ts +0 -13
- package/lib/components/LoginUpdateProfile.js.map +0 -1
- package/lib/components/LoginUsername.d.ts +0 -13
- package/lib/components/LoginUsername.js.map +0 -1
- package/lib/components/LoginVerifyEmail.d.ts +0 -13
- package/lib/components/LoginVerifyEmail.js.map +0 -1
- package/lib/components/LogoutConfirm.d.ts +0 -13
- package/lib/components/LogoutConfirm.js.map +0 -1
- package/lib/components/Register.d.ts +0 -13
- package/lib/components/Register.js.map +0 -1
- package/lib/components/RegisterUserProfile.d.ts +0 -13
- package/lib/components/RegisterUserProfile.js.map +0 -1
- package/lib/components/Template.d.ts +0 -25
- package/lib/components/Template.js.map +0 -1
- package/lib/components/Terms.d.ts +0 -27
- package/lib/components/Terms.js.map +0 -1
- package/lib/components/UpdateUserProfile.d.ts +0 -13
- package/lib/components/UpdateUserProfile.js.map +0 -1
- package/lib/components/WebauthnAuthenticate.d.ts +0 -13
- package/lib/components/WebauthnAuthenticate.js.map +0 -1
- package/lib/components/shared/UserProfileCommons.js.map +0 -1
- package/lib/getKcContext/kcContextMocks/index.d.ts +0 -1
- package/lib/getKcContext/kcContextMocks/index.js +0 -2
- package/lib/getKcContext/kcContextMocks/index.js.map +0 -1
- package/lib/getKcContext/kcContextMocks/kcContextMocks.js.map +0 -1
- package/src/bin/generate-i18n-messages.ts +0 -86
- package/src/bin/link_in_test_app.ts +0 -128
- package/src/lib/components/shared/UserProfileCommons.tsx +0 -173
- package/src/lib/getKcContext/kcContextMocks/index.ts +0 -1
@@ -1,2 +1,2 @@
|
|
1
1
|
import type { FC, ComponentClass } from "react";
|
2
|
-
export
|
2
|
+
export type ReactComponent<Props extends Record<string, unknown> = {}> = ((props: Props) => ReturnType<FC>) | ComponentClass<Props>;
|
@@ -0,0 +1 @@
|
|
1
|
+
export type SetOptional<T extends Record<string, unknown>, K extends keyof T> = Omit<T, K> & Partial<Record<K, T[K]>>;
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"SetOptional.js","sourceRoot":"","sources":["../../src/lib/tools/SetOptional.ts"],"names":[],"mappings":""}
|
package/lib/tools/clsx.d.ts
CHANGED
@@ -1,3 +1,2 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
export declare const clsx: Cx;
|
1
|
+
export type CxArg = undefined | null | string | boolean | Partial<Record<string, boolean | null | undefined>> | readonly CxArg[];
|
2
|
+
export declare const clsx: (...args: CxArg[]) => string;
|
package/lib/tools/clsx.js
CHANGED
@@ -1,6 +1,42 @@
|
|
1
|
-
import {
|
2
|
-
|
1
|
+
import { assert } from "tsafe/assert";
|
2
|
+
import { typeGuard } from "tsafe/typeGuard";
|
3
3
|
export const clsx = (...args) => {
|
4
|
-
|
4
|
+
const len = args.length;
|
5
|
+
let i = 0;
|
6
|
+
let cls = "";
|
7
|
+
for (; i < len; i++) {
|
8
|
+
const arg = args[i];
|
9
|
+
if (arg == null)
|
10
|
+
continue;
|
11
|
+
let toAdd;
|
12
|
+
switch (typeof arg) {
|
13
|
+
case "boolean":
|
14
|
+
break;
|
15
|
+
case "object": {
|
16
|
+
if (Array.isArray(arg)) {
|
17
|
+
toAdd = clsx(...arg);
|
18
|
+
}
|
19
|
+
else {
|
20
|
+
assert(!typeGuard(arg, false));
|
21
|
+
toAdd = "";
|
22
|
+
for (const k in arg) {
|
23
|
+
if (arg[k] && k) {
|
24
|
+
toAdd && (toAdd += " ");
|
25
|
+
toAdd += k;
|
26
|
+
}
|
27
|
+
}
|
28
|
+
}
|
29
|
+
break;
|
30
|
+
}
|
31
|
+
default: {
|
32
|
+
toAdd = arg;
|
33
|
+
}
|
34
|
+
}
|
35
|
+
if (toAdd) {
|
36
|
+
cls && (cls += " ");
|
37
|
+
cls += toAdd;
|
38
|
+
}
|
39
|
+
}
|
40
|
+
return cls;
|
5
41
|
};
|
6
42
|
//# sourceMappingURL=clsx.js.map
|
package/lib/tools/clsx.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"clsx.js","sourceRoot":"","sources":["../../src/lib/tools/clsx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"clsx.js","sourceRoot":"","sources":["../../src/lib/tools/clsx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAa,EAAU,EAAE;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,IAAI,IAAI;YAAE,SAAS;QAE1B,IAAI,KAAK,CAAC;QACV,QAAQ,OAAO,GAAG,EAAE;YAChB,KAAK,SAAS;gBACV,MAAM;YACV,KAAK,QAAQ,CAAC,CAAC;gBACX,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBACpB,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;iBACxB;qBAAM;oBACH,MAAM,CAAC,CAAC,SAAS,CAAqB,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;oBAEnD,KAAK,GAAG,EAAE,CAAC;oBACX,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE;wBACjB,IAAI,GAAG,CAAC,CAAW,CAAC,IAAI,CAAC,EAAE;4BACvB,KAAK,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;4BACxB,KAAK,IAAI,CAAC,CAAC;yBACd;qBACJ;iBACJ;gBACD,MAAM;aACT;YACD,OAAO,CAAC,CAAC;gBACL,KAAK,GAAG,GAAG,CAAC;aACf;SACJ;QACD,IAAI,KAAK,EAAE;YACP,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;YACpB,GAAG,IAAI,KAAK,CAAC;SAChB;KACJ;IACD,OAAO,GAAG,CAAC;AACf,CAAC,CAAC"}
|
package/lib/tools/deepAssign.js
CHANGED
@@ -7,7 +7,7 @@ export function deepAssign(params) {
|
|
7
7
|
const source = deepClone(params.source);
|
8
8
|
Object.keys(source).forEach(key => {
|
9
9
|
var dereferencedSource = source[key];
|
10
|
-
if (target[key] === undefined || !(dereferencedSource instanceof Object)) {
|
10
|
+
if (target[key] === undefined || dereferencedSource instanceof Function || !(dereferencedSource instanceof Object)) {
|
11
11
|
Object.defineProperty(target, key, {
|
12
12
|
"enumerable": true,
|
13
13
|
"writable": true,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"deepAssign.js","sourceRoot":"","sources":["../../src/lib/tools/deepAssign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,mEAAmE;AACnE,MAAM,UAAU,UAAU,CAAC,MAA4E;IACnG,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAE1B,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAExC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC9B,IAAI,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAErC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,kBAAkB,YAAY,MAAM,CAAC,EAAE;
|
1
|
+
{"version":3,"file":"deepAssign.js","sourceRoot":"","sources":["../../src/lib/tools/deepAssign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,mEAAmE;AACnE,MAAM,UAAU,UAAU,CAAC,MAA4E;IACnG,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAE1B,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAExC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC9B,IAAI,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAErC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,kBAAkB,YAAY,QAAQ,IAAI,CAAC,CAAC,kBAAkB,YAAY,MAAM,CAAC,EAAE;YAChH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE;gBAC/B,YAAY,EAAE,IAAI;gBAClB,UAAU,EAAE,IAAI;gBAChB,cAAc,EAAE,IAAI;gBACpB,OAAO,EAAE,kBAAkB;aAC9B,CAAC,CAAC;YAEH,OAAO;SACV;QAED,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAEvC,IAAI,kBAAkB,YAAY,KAAK,EAAE;YACrC,MAAM,CAAC,EAAE,CAAY,kBAAkB,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,EAAE,CAAY,kBAAkB,CAAC,CAAC,CAAC;YAE1C,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAEpE,OAAO;SACV;QAED,MAAM,CAAC,EAAE,CAA0B,kBAAkB,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,EAAE,CAA0B,kBAAkB,CAAC,CAAC,CAAC;QAExD,UAAU,CAAC;YACP,QAAQ,EAAE,kBAAkB;YAC5B,QAAQ,EAAE,kBAAkB;SAC/B,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC"}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
type SimpleType = number | string | boolean | null | undefined;
|
2
|
+
type FuncWithSimpleParams<T extends SimpleType[], R> = (...args: T) => R;
|
3
|
+
export declare function memoize<T extends SimpleType[], R>(fn: FuncWithSimpleParams<T, R>, options?: {
|
4
|
+
argsLength?: number;
|
5
|
+
max?: number;
|
6
|
+
}): FuncWithSimpleParams<T, R>;
|
7
|
+
export {};
|
@@ -0,0 +1,38 @@
|
|
1
|
+
export function memoize(fn, options) {
|
2
|
+
const cache = new Map();
|
3
|
+
const { argsLength = fn.length, max = Infinity } = options !== null && options !== void 0 ? options : {};
|
4
|
+
return ((...args) => {
|
5
|
+
const key = JSON.stringify(args
|
6
|
+
.slice(0, argsLength)
|
7
|
+
.map(v => {
|
8
|
+
if (v === null) {
|
9
|
+
return "null";
|
10
|
+
}
|
11
|
+
if (v === undefined) {
|
12
|
+
return "undefined";
|
13
|
+
}
|
14
|
+
switch (typeof v) {
|
15
|
+
case "number":
|
16
|
+
return `number-${v}`;
|
17
|
+
case "string":
|
18
|
+
return `string-${v}`;
|
19
|
+
case "boolean":
|
20
|
+
return `boolean-${v ? "true" : "false"}`;
|
21
|
+
}
|
22
|
+
})
|
23
|
+
.join("-sIs9sAslOdeWlEdIos3-"));
|
24
|
+
if (cache.has(key)) {
|
25
|
+
return cache.get(key);
|
26
|
+
}
|
27
|
+
if (max === cache.size) {
|
28
|
+
for (const key of cache.keys()) {
|
29
|
+
cache.delete(key);
|
30
|
+
break;
|
31
|
+
}
|
32
|
+
}
|
33
|
+
const value = fn(...args);
|
34
|
+
cache.set(key, value);
|
35
|
+
return value;
|
36
|
+
});
|
37
|
+
}
|
38
|
+
//# sourceMappingURL=memoize.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"memoize.js","sourceRoot":"","sources":["../../src/lib/tools/memoize.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,OAAO,CACnB,EAA8B,EAC9B,OAGC;IAED,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkD,CAAC;IAExE,MAAM,EAAE,UAAU,GAAG,EAAE,CAAC,MAAM,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;IAEjE,OAAO,CAAC,CAAC,GAAG,IAA4C,EAAE,EAAE;QACxD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CACtB,IAAI;aACC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC;aACpB,GAAG,CAAC,CAAC,CAAC,EAAE;YACL,IAAI,CAAC,KAAK,IAAI,EAAE;gBACZ,OAAO,MAAM,CAAC;aACjB;YACD,IAAI,CAAC,KAAK,SAAS,EAAE;gBACjB,OAAO,WAAW,CAAC;aACtB;YACD,QAAQ,OAAO,CAAC,EAAE;gBACd,KAAK,QAAQ;oBACT,OAAO,UAAU,CAAC,EAAE,CAAC;gBACzB,KAAK,QAAQ;oBACT,OAAO,UAAU,CAAC,EAAE,CAAC;gBACzB,KAAK,SAAS;oBACV,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;aAChD;QACL,CAAC,CAAC;aACD,IAAI,CAAC,uBAAuB,CAAC,CACrC,CAAC;QAEF,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAChB,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACzB;QAED,IAAI,GAAG,KAAK,KAAK,CAAC,IAAI,EAAE;YACpB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE;gBAC5B,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAClB,MAAM;aACT;SACJ;QAED,MAAM,KAAK,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAE1B,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAEtB,OAAO,KAAK,CAAC;IACjB,CAAC,CAAQ,CAAC;AACd,CAAC"}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
export type CallbackFactory<FactoryArgs extends unknown[], Args extends unknown[], R> = (...factoryArgs: FactoryArgs) => (...args: Args) => R;
|
2
|
+
/**
|
3
|
+
* https://docs.powerhooks.dev/api-reference/usecallbackfactory
|
4
|
+
*
|
5
|
+
* const callbackFactory= useCallbackFactory(
|
6
|
+
* ([key]: [string], [params]: [{ foo: number; }]) => {
|
7
|
+
* ...
|
8
|
+
* },
|
9
|
+
* []
|
10
|
+
* );
|
11
|
+
*
|
12
|
+
* WARNING: Factory args should not be of variable length.
|
13
|
+
*
|
14
|
+
*/
|
15
|
+
export declare function useCallbackFactory<FactoryArgs extends (string | number | boolean)[], Args extends unknown[], R = void>(callback: (...callbackArgs: [FactoryArgs, Args]) => R): CallbackFactory<FactoryArgs, Args, R>;
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import { useRef, useState } from "react";
|
2
|
+
import { id } from "tsafe/id";
|
3
|
+
import { memoize } from "./memoize";
|
4
|
+
/**
|
5
|
+
* https://docs.powerhooks.dev/api-reference/usecallbackfactory
|
6
|
+
*
|
7
|
+
* const callbackFactory= useCallbackFactory(
|
8
|
+
* ([key]: [string], [params]: [{ foo: number; }]) => {
|
9
|
+
* ...
|
10
|
+
* },
|
11
|
+
* []
|
12
|
+
* );
|
13
|
+
*
|
14
|
+
* WARNING: Factory args should not be of variable length.
|
15
|
+
*
|
16
|
+
*/
|
17
|
+
export function useCallbackFactory(callback) {
|
18
|
+
const callbackRef = useRef(callback);
|
19
|
+
callbackRef.current = callback;
|
20
|
+
const memoizedRef = useRef(undefined);
|
21
|
+
return useState(() => id((...factoryArgs) => {
|
22
|
+
if (memoizedRef.current === undefined) {
|
23
|
+
memoizedRef.current = memoize((...factoryArgs) => (...args) => callbackRef.current(factoryArgs, args), { "argsLength": factoryArgs.length });
|
24
|
+
}
|
25
|
+
return memoizedRef.current(...factoryArgs);
|
26
|
+
}))[0];
|
27
|
+
}
|
28
|
+
//# sourceMappingURL=useCallbackFactory.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useCallbackFactory.js","sourceRoot":"","sources":["../../src/lib/tools/useCallbackFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAC9B,QAAqD;IAIrD,MAAM,WAAW,GAAG,MAAM,CAAkB,QAAQ,CAAC,CAAC;IAEtD,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IAE/B,MAAM,WAAW,GAAG,MAAM,CAAkB,SAAS,CAAC,CAAC;IAEvD,OAAO,QAAQ,CAAC,GAAG,EAAE,CACjB,EAAE,CAAM,CAAC,GAAG,WAAW,EAAE,EAAE;QACvB,IAAI,WAAW,CAAC,OAAO,KAAK,SAAS,EAAE;YACnC,WAAW,CAAC,OAAO,GAAG,OAAO,CACzB,CAAC,GAAG,WAAwB,EAAE,EAAE,CAC5B,CAAC,GAAG,IAAU,EAAE,EAAE,CACd,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,EAC9C,EAAE,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,CACvC,CAAC;SACL;QAED,OAAO,WAAW,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,CAAC;IAC/C,CAAC,CAAC,CACL,CAAC,CAAC,CAAC,CAAC;AACT,CAAC"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { useState } from "react";
|
2
|
+
/**
|
3
|
+
* Compute a value on first render and never again,
|
4
|
+
* Equivalent of const [x] = useState(()=> ...)
|
5
|
+
*/
|
6
|
+
export function useConst(getValue) {
|
7
|
+
const [value] = useState(getValue);
|
8
|
+
return value;
|
9
|
+
}
|
10
|
+
//# sourceMappingURL=useConst.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useConst.js","sourceRoot":"","sources":["../../src/lib/tools/useConst.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAI,QAAiB;IACzC,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC;AACjB,CAAC"}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { useRef, useState } from "react";
|
2
|
+
/** https://stackoverflow.com/questions/65890278/why-cant-usecallback-always-return-the-same-ref */
|
3
|
+
export function useConstCallback(callback) {
|
4
|
+
const callbackRef = useRef(null);
|
5
|
+
callbackRef.current = callback;
|
6
|
+
return useState(() => (...args) => callbackRef.current(...args))[0];
|
7
|
+
}
|
8
|
+
//# sourceMappingURL=useConstCallback.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useConstCallback.js","sourceRoot":"","sources":["../../src/lib/tools/useConstCallback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGzC,mGAAmG;AACnG,MAAM,UAAU,gBAAgB,CAA6D,QAAwB;IACjH,MAAM,WAAW,GAAG,MAAM,CAAkB,IAAW,CAAC,CAAC;IAEzD,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IAE/B,OAAO,QAAQ,CACX,GAAG,EAAE,CACD,CAAC,GAAG,IAAmB,EAAE,EAAE,CACvB,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CACvC,CAAC,CAAC,CAAM,CAAC;AACd,CAAC"}
|