zavadil-ts-common 2.2.0 → 2.2.2

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 (33) hide show
  1. package/dist/index.d.ts +29 -24
  2. package/dist/index.esm.js +1 -1
  3. package/dist/index.esm.js.map +1 -1
  4. package/dist/index.js +1 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/oauth/OAuthRestClient.d.ts +1 -35
  7. package/dist/oauth/OAuthTokenManager.d.ts +2 -1
  8. package/dist/oauth/OAuthUtil.d.ts +19 -0
  9. package/dist/oauth/RestClientWithOAuth.d.ts +1 -1
  10. package/dist/oauth/Types.d.ts +35 -0
  11. package/dist/oauth/index.d.ts +2 -0
  12. package/dist/oauth/tokenprovider/OAuthRefreshTokenProvider.d.ts +1 -1
  13. package/dist/oauth/tokenprovider/RefreshTokenProviderDefault.d.ts +1 -1
  14. package/dist/oauth/tokenprovider/RefreshTokenProviderLogin.d.ts +1 -1
  15. package/dist/oauth/tokenprovider/RefreshTokenProviderStorage.d.ts +1 -1
  16. package/dist/oauth/tokenprovider/RefreshTokenProviderUrl.d.ts +1 -1
  17. package/dist/util/EmailUtil.d.ts +3 -0
  18. package/dist/util/index.d.ts +1 -1
  19. package/package.json +1 -1
  20. package/src/oauth/OAuthRestClient.ts +8 -47
  21. package/src/oauth/OAuthTokenManager.ts +3 -3
  22. package/src/{util → oauth}/OAuthUtil.ts +2 -7
  23. package/src/oauth/RestClientWithOAuth.ts +1 -1
  24. package/src/oauth/Types.ts +47 -0
  25. package/src/oauth/index.ts +2 -0
  26. package/src/oauth/tokenprovider/OAuthRefreshTokenProvider.ts +1 -1
  27. package/src/oauth/tokenprovider/RefreshTokenProviderDefault.ts +1 -1
  28. package/src/oauth/tokenprovider/RefreshTokenProviderLogin.ts +1 -1
  29. package/src/oauth/tokenprovider/RefreshTokenProviderStorage.ts +2 -2
  30. package/src/oauth/tokenprovider/RefreshTokenProviderUrl.ts +2 -3
  31. package/src/util/EmailUtil.ts +10 -0
  32. package/src/util/index.ts +1 -1
  33. package/tests/index.test.ts +16 -1
@@ -0,0 +1,35 @@
1
+ export declare const PERMISSION_LEVELS: readonly ["read", "write", "admin"];
2
+ export type PermissionLevel = (typeof PERMISSION_LEVELS)[number];
3
+ export type TokenRequestPayloadBase = {
4
+ targetAudience: string;
5
+ };
6
+ export type RequestAccessTokenPayload = TokenRequestPayloadBase & {
7
+ refreshToken: string;
8
+ scope: string;
9
+ };
10
+ export type RenewRefreshTokenPayload = {
11
+ refreshToken: string;
12
+ };
13
+ export type RequestRefreshTokenFromLoginPayload = TokenRequestPayloadBase & {
14
+ login: string;
15
+ password: string;
16
+ };
17
+ export type TokenResponsePayloadBase = {
18
+ token: string;
19
+ issuedAt: Date;
20
+ expires?: Date | null;
21
+ };
22
+ export type IdTokenPayload = TokenResponsePayloadBase & {};
23
+ export type AccessTokenPayload = TokenResponsePayloadBase & {
24
+ scopes?: Array<string>;
25
+ };
26
+ export type RefreshTokenPayload = TokenResponsePayloadBase & {};
27
+ export type JwKeyPayload = {
28
+ kty: string;
29
+ kid: string;
30
+ n: string;
31
+ e: string;
32
+ };
33
+ export type JwksPayload = {
34
+ keys: Array<JwKeyPayload>;
35
+ };
@@ -1,3 +1,5 @@
1
+ export * from './Types';
2
+ export * from './OAuthUtil';
1
3
  export * from "./tokenprovider";
2
4
  export * from "./OAuthRestClient";
3
5
  export * from "./OAuthTokenManager";
@@ -1,4 +1,4 @@
1
- import { RefreshTokenPayload } from "../OAuthRestClient";
1
+ import { RefreshTokenPayload } from "../Types";
2
2
  export interface OAuthRefreshTokenProvider {
3
3
  getRefreshToken(): Promise<RefreshTokenPayload>;
4
4
  reset(): Promise<any>;
@@ -1,5 +1,5 @@
1
1
  import { OAuthRefreshTokenProvider } from "./OAuthRefreshTokenProvider";
2
- import { IdTokenPayload } from "../OAuthRestClient";
2
+ import { IdTokenPayload } from "../Types";
3
3
  import { RefreshTokenProviderLogin } from "./RefreshTokenProviderLogin";
4
4
  import { RestClientWithOAuth } from "../RestClientWithOAuth";
5
5
  import { RefreshTokenProviderUrl } from "./RefreshTokenProviderUrl";
@@ -1,5 +1,5 @@
1
1
  import { OAuthRefreshTokenProvider } from "./OAuthRefreshTokenProvider";
2
- import { IdTokenPayload } from "../OAuthRestClient";
2
+ import { IdTokenPayload } from "../Types";
3
3
  import { RedirectionProvider } from "./RedirectionProvider";
4
4
  import { RestClientWithOAuth } from "../RestClientWithOAuth";
5
5
  export declare class RefreshTokenProviderLogin extends RedirectionProvider implements OAuthRefreshTokenProvider {
@@ -1,5 +1,5 @@
1
1
  import { OAuthRefreshTokenProvider } from "./OAuthRefreshTokenProvider";
2
- import { RefreshTokenPayload } from "../OAuthRestClient";
2
+ import { RefreshTokenPayload } from "../Types";
3
3
  export declare class RefreshTokenProviderStorage implements OAuthRefreshTokenProvider {
4
4
  key: string;
5
5
  constructor(storageKey?: string);
@@ -1,5 +1,5 @@
1
1
  import { OAuthRefreshTokenProvider } from "./OAuthRefreshTokenProvider";
2
- import { RefreshTokenPayload } from "../OAuthRestClient";
2
+ import { RefreshTokenPayload } from "../Types";
3
3
  import { RestClientWithOAuth } from "../RestClientWithOAuth";
4
4
  import { RedirectionProvider } from "./RedirectionProvider";
5
5
  export declare class RefreshTokenProviderUrl extends RedirectionProvider implements OAuthRefreshTokenProvider {
@@ -0,0 +1,3 @@
1
+ export declare class EmailUtil {
2
+ static isValidEmail(email?: string | null): boolean;
3
+ }
@@ -9,4 +9,4 @@ export { NumberUtil } from './NumberUtil';
9
9
  export { JsonUtil } from './JsonUtil';
10
10
  export { HashUtil } from './HashUtil';
11
11
  export { UrlUtil } from './UrlUtil';
12
- export { OAuthUtil } from './OAuthUtil';
12
+ export { EmailUtil } from './EmailUtil';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zavadil-ts-common",
3
- "version": "2.2.0",
3
+ "version": "2.2.2",
4
4
  "description": "Common types and components for Typescript UI apps.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",
@@ -1,52 +1,13 @@
1
1
  import { RestClient } from "../client";
2
2
  import { StringUtil } from "../util";
3
-
4
- export const PERMISSION_LEVELS = ["read", "write", "admin"] as const;
5
-
6
- export type PermissionLevel = (typeof PERMISSION_LEVELS)[number];
7
-
8
- export type TokenRequestPayloadBase = {
9
- targetAudience: string;
10
- };
11
-
12
- export type RequestAccessTokenPayload = TokenRequestPayloadBase & {
13
- refreshToken: string;
14
- scope: string;
15
- };
16
-
17
- export type RenewRefreshTokenPayload = {
18
- refreshToken: string;
19
- };
20
-
21
- export type RequestRefreshTokenFromLoginPayload = TokenRequestPayloadBase & {
22
- login: string;
23
- password: string;
24
- };
25
-
26
- export type TokenResponsePayloadBase = {
27
- token: string;
28
- issuedAt: Date;
29
- expires?: Date | null;
30
- };
31
-
32
- export type IdTokenPayload = TokenResponsePayloadBase & {};
33
-
34
- export type AccessTokenPayload = TokenResponsePayloadBase & {
35
- scopes?: Array<string>;
36
- };
37
-
38
- export type RefreshTokenPayload = TokenResponsePayloadBase & {};
39
-
40
- export type JwKeyPayload = {
41
- kty: string;
42
- kid: string;
43
- n: string;
44
- e: string;
45
- };
46
-
47
- export type JwksPayload = {
48
- keys: Array<JwKeyPayload>;
49
- };
3
+ import {
4
+ AccessTokenPayload,
5
+ IdTokenPayload,
6
+ JwksPayload,
7
+ RefreshTokenPayload,
8
+ RenewRefreshTokenPayload, RequestAccessTokenPayload,
9
+ RequestRefreshTokenFromLoginPayload
10
+ } from "./Types";
50
11
 
51
12
  /**
52
13
  * This implements rest client for OAuth server - https://github.com/lotcz/oauth-server
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  AccessTokenPayload,
3
3
  IdTokenPayload,
4
- OAuthRestClient,
5
4
  RefreshTokenPayload,
6
- } from "./OAuthRestClient";
5
+ } from "./Types";
7
6
  import {OAuthRefreshTokenProvider} from "./tokenprovider/OAuthRefreshTokenProvider";
8
- import {OAuthUtil} from "../util/OAuthUtil";
7
+ import {OAuthUtil} from "./OAuthUtil";
8
+ import {OAuthRestClient} from "./OAuthRestClient";
9
9
 
10
10
  /**
11
11
  * Manages refresh of id and access tokens.
@@ -1,10 +1,5 @@
1
- import {
2
- PermissionLevel,
3
- PERMISSION_LEVELS,
4
- TokenResponsePayloadBase,
5
- } from "../oauth";
6
- import { StringUtil } from "./StringUtil";
7
- import { ObjectUtil } from "./ObjectUtil";
1
+ import { StringUtil, ObjectUtil } from "../util";
2
+ import {PERMISSION_LEVELS, PermissionLevel, TokenResponsePayloadBase} from "./Types";
8
3
 
9
4
  export class OAuthUtil {
10
5
  static isValidToken(token?: TokenResponsePayloadBase | null): boolean {
@@ -1,9 +1,9 @@
1
1
  import { OAuthTokenManager } from "./OAuthTokenManager";
2
2
  import { RestClient } from "../client";
3
- import { IdTokenPayload, RefreshTokenPayload } from "./OAuthRestClient";
4
3
  import { LazyAsync } from "../cache";
5
4
  import { OAuthRefreshTokenProvider } from "./tokenprovider/OAuthRefreshTokenProvider";
6
5
  import { RefreshTokenProviderDefault } from "./tokenprovider/RefreshTokenProviderDefault";
6
+ import {IdTokenPayload, RefreshTokenPayload} from "./Types";
7
7
 
8
8
  export type ServerOAuthInfoPayload = {
9
9
  debugMode?: boolean;
@@ -0,0 +1,47 @@
1
+
2
+ export const PERMISSION_LEVELS = ["read", "write", "admin"] as const;
3
+
4
+ export type PermissionLevel = (typeof PERMISSION_LEVELS)[number];
5
+
6
+ export type TokenRequestPayloadBase = {
7
+ targetAudience: string;
8
+ };
9
+
10
+ export type RequestAccessTokenPayload = TokenRequestPayloadBase & {
11
+ refreshToken: string;
12
+ scope: string;
13
+ };
14
+
15
+ export type RenewRefreshTokenPayload = {
16
+ refreshToken: string;
17
+ };
18
+
19
+ export type RequestRefreshTokenFromLoginPayload = TokenRequestPayloadBase & {
20
+ login: string;
21
+ password: string;
22
+ };
23
+
24
+ export type TokenResponsePayloadBase = {
25
+ token: string;
26
+ issuedAt: Date;
27
+ expires?: Date | null;
28
+ };
29
+
30
+ export type IdTokenPayload = TokenResponsePayloadBase & {};
31
+
32
+ export type AccessTokenPayload = TokenResponsePayloadBase & {
33
+ scopes?: Array<string>;
34
+ };
35
+
36
+ export type RefreshTokenPayload = TokenResponsePayloadBase & {};
37
+
38
+ export type JwKeyPayload = {
39
+ kty: string;
40
+ kid: string;
41
+ n: string;
42
+ e: string;
43
+ };
44
+
45
+ export type JwksPayload = {
46
+ keys: Array<JwKeyPayload>;
47
+ };
@@ -1,3 +1,5 @@
1
+ export * from './Types';
2
+ export * from './OAuthUtil';
1
3
  export * from "./tokenprovider";
2
4
  export * from "./OAuthRestClient";
3
5
  export * from "./OAuthTokenManager";
@@ -1,4 +1,4 @@
1
- import { RefreshTokenPayload } from "../OAuthRestClient";
1
+ import { RefreshTokenPayload } from "../Types";
2
2
 
3
3
  export interface OAuthRefreshTokenProvider {
4
4
  getRefreshToken(): Promise<RefreshTokenPayload>;
@@ -1,5 +1,5 @@
1
1
  import {OAuthRefreshTokenProvider} from "./OAuthRefreshTokenProvider";
2
- import {IdTokenPayload} from "../OAuthRestClient";
2
+ import {IdTokenPayload} from "../Types";
3
3
  import {RefreshTokenProviderLogin} from "./RefreshTokenProviderLogin";
4
4
  import {RestClientWithOAuth} from "../RestClientWithOAuth";
5
5
  import {RefreshTokenProviderUrl} from "./RefreshTokenProviderUrl";
@@ -1,5 +1,5 @@
1
1
  import {OAuthRefreshTokenProvider} from "./OAuthRefreshTokenProvider";
2
- import {IdTokenPayload} from "../OAuthRestClient";
2
+ import {IdTokenPayload} from "../Types";
3
3
  import {RedirectionProvider} from "./RedirectionProvider";
4
4
  import {RestClientWithOAuth} from "../RestClientWithOAuth";
5
5
  import {UrlUtil} from "../../util";
@@ -1,7 +1,7 @@
1
1
  import {OAuthRefreshTokenProvider} from "./OAuthRefreshTokenProvider";
2
- import {RefreshTokenPayload} from "../OAuthRestClient";
2
+ import {RefreshTokenPayload} from "../Types";
3
3
  import {JsonUtil} from "../../util";
4
- import {OAuthUtil} from "../../util/OAuthUtil";
4
+ import {OAuthUtil} from "../OAuthUtil";
5
5
 
6
6
  export class RefreshTokenProviderStorage implements OAuthRefreshTokenProvider {
7
7
 
@@ -1,8 +1,7 @@
1
1
  import {OAuthRefreshTokenProvider} from "./OAuthRefreshTokenProvider";
2
- import {RefreshTokenPayload} from "../OAuthRestClient";
2
+ import {RefreshTokenPayload} from "../Types";
3
3
  import {RestClientWithOAuth} from "../RestClientWithOAuth";
4
- import {StringUtil} from "../../util";
5
- import {UrlUtil} from "../../util";
4
+ import {StringUtil, UrlUtil} from "../../util";
6
5
  import {RedirectionProvider} from "./RedirectionProvider";
7
6
 
8
7
  export class RefreshTokenProviderUrl extends RedirectionProvider implements OAuthRefreshTokenProvider {
@@ -0,0 +1,10 @@
1
+ import {StringUtil} from "./StringUtil";
2
+
3
+ export class EmailUtil {
4
+
5
+ static isValidEmail(email?: string | null): boolean {
6
+ if (StringUtil.isBlank(email)) return false;
7
+ return /^[a-zA-Z0-9!#$%&'*+/=?^_`{|}~.-]{1,64}@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z]{2,}$/.test(email);
8
+ }
9
+
10
+ }
package/src/util/index.ts CHANGED
@@ -9,4 +9,4 @@ export { NumberUtil } from './NumberUtil';
9
9
  export { JsonUtil } from './JsonUtil';
10
10
  export { HashUtil } from './HashUtil';
11
11
  export { UrlUtil } from './UrlUtil';
12
- export { OAuthUtil } from './OAuthUtil';
12
+ export { EmailUtil } from './EmailUtil';
@@ -1,4 +1,4 @@
1
- import {StringUtil, JsonUtil, RestClient, UrlUtil} from '../src';
1
+ import {StringUtil, JsonUtil, RestClient, UrlUtil, EmailUtil} from '../src';
2
2
 
3
3
  describe('testing StringUtil', () => {
4
4
  test('isEmpty', () => {
@@ -77,3 +77,18 @@ describe('testing RestClient', () => {
77
77
  expect(clientNoLead.getUrl('test').href).toBe('http://localhost/rel/test');
78
78
  });
79
79
  });
80
+
81
+
82
+ describe('testing EmailUtil', () => {
83
+ test('isValidEmail', () => {
84
+ expect(EmailUtil.isValidEmail(undefined)).toBe(false);
85
+ expect(EmailUtil.isValidEmail(null)).toBe(false);
86
+ expect(EmailUtil.isValidEmail('')).toBe(false);
87
+ expect(EmailUtil.isValidEmail('very#broken.e/mail')).toBe(false);
88
+ expect(EmailUtil.isValidEmail('almost-okay@brokenemai.l')).toBe(false);
89
+
90
+ expect(EmailUtil.isValidEmail('karel@zavadil.eu')).toBe(true);
91
+ expect(EmailUtil.isValidEmail('karelzav@gmail.com')).toBe(true);
92
+ expect(EmailUtil.isValidEmail('some.rather-complicated@email-to.be.checked')).toBe(true);
93
+ });
94
+ });