@or-sdk/authorizer 0.25.0-beta.990.0 → 0.25.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.
Files changed (109) hide show
  1. package/CHANGELOG.md +317 -0
  2. package/README.md +12 -32
  3. package/dist/cjs/Basic/BasicCollection.js +166 -26
  4. package/dist/cjs/Basic/BasicCollection.js.map +1 -1
  5. package/dist/cjs/Basic/utils/createAuthKey.js +4 -0
  6. package/dist/cjs/Basic/utils/createAuthKey.js.map +1 -1
  7. package/dist/cjs/OAuth/OAuth.js +92 -138
  8. package/dist/cjs/OAuth/OAuth.js.map +1 -1
  9. package/dist/cjs/OAuth/index.js +1 -3
  10. package/dist/cjs/OAuth/index.js.map +1 -1
  11. package/dist/cjs/OAuth/types.js +1 -1
  12. package/dist/cjs/OAuth/types.js.map +1 -1
  13. package/dist/cjs/OAuth/utils/ServiceDefinition.js.map +1 -1
  14. package/dist/cjs/OAuth/utils/createAuthKey.js +4 -0
  15. package/dist/cjs/OAuth/utils/createAuthKey.js.map +1 -1
  16. package/dist/cjs/OAuth/utils/createOAuthHelper.js +379 -0
  17. package/dist/cjs/OAuth/utils/createOAuthHelper.js.map +1 -0
  18. package/dist/cjs/OAuth/utils/formatScope.js.map +1 -1
  19. package/dist/cjs/{OAuth → OAuthCollection}/OAuthCollection.js +132 -28
  20. package/dist/cjs/OAuthCollection/OAuthCollection.js.map +1 -0
  21. package/dist/cjs/OAuthCollection/index.js +21 -0
  22. package/dist/cjs/OAuthCollection/index.js.map +1 -0
  23. package/dist/cjs/Token/TokenCollection.js +166 -21
  24. package/dist/cjs/Token/TokenCollection.js.map +1 -1
  25. package/dist/cjs/Token/utils/createAuthKey.js +4 -0
  26. package/dist/cjs/Token/utils/createAuthKey.js.map +1 -1
  27. package/dist/cjs/constants.js +3 -2
  28. package/dist/cjs/constants.js.map +1 -1
  29. package/dist/cjs/index.js +2 -1
  30. package/dist/cjs/index.js.map +1 -1
  31. package/dist/esm/Basic/BasicCollection.js +115 -17
  32. package/dist/esm/Basic/BasicCollection.js.map +1 -1
  33. package/dist/esm/Basic/utils/createAuthKey.js +3 -0
  34. package/dist/esm/Basic/utils/createAuthKey.js.map +1 -1
  35. package/dist/esm/OAuth/OAuth.js +56 -115
  36. package/dist/esm/OAuth/OAuth.js.map +1 -1
  37. package/dist/esm/OAuth/index.js +0 -1
  38. package/dist/esm/OAuth/index.js.map +1 -1
  39. package/dist/esm/OAuth/types.js.map +1 -1
  40. package/dist/esm/OAuth/utils/ServiceDefinition.js.map +1 -1
  41. package/dist/esm/OAuth/utils/createAuthKey.js +3 -0
  42. package/dist/esm/OAuth/utils/createAuthKey.js.map +1 -1
  43. package/dist/esm/OAuth/utils/createOAuthHelper.js +262 -0
  44. package/dist/esm/OAuth/utils/createOAuthHelper.js.map +1 -0
  45. package/dist/esm/OAuth/utils/formatScope.js.map +1 -1
  46. package/dist/esm/OAuthCollection/OAuthCollection.js +190 -0
  47. package/dist/esm/OAuthCollection/OAuthCollection.js.map +1 -0
  48. package/dist/esm/OAuthCollection/index.js +3 -0
  49. package/dist/esm/OAuthCollection/index.js.map +1 -0
  50. package/dist/esm/Token/TokenCollection.js +115 -12
  51. package/dist/esm/Token/TokenCollection.js.map +1 -1
  52. package/dist/esm/Token/utils/createAuthKey.js +3 -0
  53. package/dist/esm/Token/utils/createAuthKey.js.map +1 -1
  54. package/dist/esm/constants.js +1 -0
  55. package/dist/esm/constants.js.map +1 -1
  56. package/dist/esm/index.js +2 -1
  57. package/dist/esm/index.js.map +1 -1
  58. package/dist/types/Basic/BasicCollection.d.ts +6 -4
  59. package/dist/types/Basic/BasicCollection.d.ts.map +1 -1
  60. package/dist/types/Basic/types.d.ts +20 -11
  61. package/dist/types/Basic/types.d.ts.map +1 -1
  62. package/dist/types/Basic/utils/createAuthKey.d.ts +1 -0
  63. package/dist/types/Basic/utils/createAuthKey.d.ts.map +1 -1
  64. package/dist/types/OAuth/OAuth.d.ts +8 -5
  65. package/dist/types/OAuth/OAuth.d.ts.map +1 -1
  66. package/dist/types/OAuth/index.d.ts +0 -1
  67. package/dist/types/OAuth/index.d.ts.map +1 -1
  68. package/dist/types/OAuth/types.d.ts +95 -19
  69. package/dist/types/OAuth/types.d.ts.map +1 -1
  70. package/dist/types/OAuth/utils/createAuthKey.d.ts +1 -0
  71. package/dist/types/OAuth/utils/createAuthKey.d.ts.map +1 -1
  72. package/dist/types/OAuth/utils/createOAuthHelper.d.ts +33 -0
  73. package/dist/types/OAuth/utils/createOAuthHelper.d.ts.map +1 -0
  74. package/dist/types/OAuthCollection/OAuthCollection.d.ts +27 -0
  75. package/dist/types/OAuthCollection/OAuthCollection.d.ts.map +1 -0
  76. package/dist/types/OAuthCollection/index.d.ts +3 -0
  77. package/dist/types/OAuthCollection/index.d.ts.map +1 -0
  78. package/dist/types/Token/TokenCollection.d.ts +5 -2
  79. package/dist/types/Token/TokenCollection.d.ts.map +1 -1
  80. package/dist/types/Token/types.d.ts +19 -5
  81. package/dist/types/Token/types.d.ts.map +1 -1
  82. package/dist/types/Token/utils/createAuthKey.d.ts +1 -0
  83. package/dist/types/Token/utils/createAuthKey.d.ts.map +1 -1
  84. package/dist/types/constants.d.ts +1 -0
  85. package/dist/types/constants.d.ts.map +1 -1
  86. package/dist/types/index.d.ts +2 -1
  87. package/dist/types/index.d.ts.map +1 -1
  88. package/package.json +32 -26
  89. package/src/Basic/BasicCollection.ts +170 -18
  90. package/src/Basic/types.ts +17 -14
  91. package/src/Basic/utils/createAuthKey.ts +4 -0
  92. package/src/OAuth/OAuth.ts +111 -195
  93. package/src/OAuth/index.ts +0 -1
  94. package/src/OAuth/types.ts +171 -15
  95. package/src/OAuth/utils/createAuthKey.ts +8 -0
  96. package/src/OAuth/utils/createOAuthHelper.ts +374 -0
  97. package/src/OAuthCollection/OAuthCollection.ts +348 -0
  98. package/src/OAuthCollection/index.ts +3 -0
  99. package/src/Token/TokenCollection.ts +174 -16
  100. package/src/Token/types.ts +15 -0
  101. package/src/Token/utils/createAuthKey.ts +4 -0
  102. package/src/constants.ts +1 -0
  103. package/src/index.ts +2 -1
  104. package/dist/cjs/OAuth/OAuthCollection.js.map +0 -1
  105. package/dist/esm/OAuth/OAuthCollection.js +0 -120
  106. package/dist/esm/OAuth/OAuthCollection.js.map +0 -1
  107. package/dist/types/OAuth/OAuthCollection.d.ts +0 -21
  108. package/dist/types/OAuth/OAuthCollection.d.ts.map +0 -1
  109. package/src/OAuth/OAuthCollection.ts +0 -206
@@ -0,0 +1,33 @@
1
+ import { CreateOAuthConfig } from './../types';
2
+ export default class OAuthCreator {
3
+ private params;
4
+ private app;
5
+ private authKey;
6
+ private service;
7
+ private readonly keyValueStorage;
8
+ private readonly providers;
9
+ constructor(params: CreateOAuthConfig);
10
+ getOAuthParams(): Promise<{
11
+ oAuthParams: {
12
+ accountId: string | undefined;
13
+ authKey: string;
14
+ authName: string;
15
+ discoveryUrl: string;
16
+ dynamicCollection: string | undefined;
17
+ eventManagerUrl: string | undefined;
18
+ providersAccountId: string | undefined;
19
+ serviceName: string;
20
+ token: import("@or-sdk/base").Token;
21
+ };
22
+ authorizeUrl: string;
23
+ }>;
24
+ private validateInput;
25
+ private resolveDiscoveryParams;
26
+ private getAppAndService;
27
+ private resolveReauthParams;
28
+ private getAuthKey;
29
+ private saveTempData;
30
+ private formAuthUrl;
31
+ private saveToDynamicCollection;
32
+ }
33
+ //# sourceMappingURL=createOAuthHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createOAuthHelper.d.ts","sourceRoot":"","sources":["../../../../src/OAuth/utils/createOAuthHelper.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,iBAAiB,EAIlB,MAAM,YAAY,CAAC;AAcpB,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,GAAG,CAAuB;IAClC,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAE1B,MAAM,EAAE,iBAAiB;IAkBxB,cAAc;;;;;;;;;;;;;;IAuC3B,OAAO,CAAC,aAAa;YAoCP,sBAAsB;YA8BtB,gBAAgB;YAiDhB,mBAAmB;IAqBjC,OAAO,CAAC,UAAU;YAyBJ,YAAY;IAqD1B,OAAO,CAAC,WAAW;YAsCL,uBAAuB;CA6BtC"}
@@ -0,0 +1,27 @@
1
+ import { List } from '@or-sdk/base';
2
+ import { OAuth } from '../OAuth/OAuth';
3
+ import { CreateOAuthInCollectionConfig, CreateOAuthResult, OAuthCollectionConfig, OAuthApp, OAuthCollectionInitConfig, OAuthService } from '../OAuth/types';
4
+ export declare class OAuthCollection {
5
+ private readonly token;
6
+ private readonly providers;
7
+ private readonly discoveryUrl;
8
+ private readonly accountId;
9
+ private readonly sdkUrl;
10
+ private readonly eventManagerUrl;
11
+ private readonly providersAccountId;
12
+ private readonly crossAccount;
13
+ private keyValueCollection;
14
+ private keyValueStorage;
15
+ private serviceName;
16
+ constructor(params: OAuthCollectionConfig);
17
+ init(params: OAuthCollectionInitConfig): void;
18
+ listAuthorizations(dynamicCollection?: string): Promise<List<string>>;
19
+ listOAuthApps(): Promise<List<OAuthApp>>;
20
+ getAuthorization(key: string, dynamicCollection?: string): Promise<OAuth>;
21
+ createAuthorization(params: CreateOAuthInCollectionConfig): Promise<CreateOAuthResult>;
22
+ listPredefinedServices(): Promise<Record<string, unknown>[]>;
23
+ defineService(params: Omit<OAuthService, 'serviceName'>): Promise<void>;
24
+ createDynamicCollection(dynamicCollectionName: string): Promise<void>;
25
+ deleteDynamicCollection(dynamicCollectionName: string): Promise<void>;
26
+ }
27
+ //# sourceMappingURL=OAuthCollection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OAuthCollection.d.ts","sourceRoot":"","sources":["../../../src/OAuthCollection/OAuthCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,IAAI,EAAY,MAAM,cAAc,CAAC;AAGrD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EACL,6BAA6B,EAC7B,iBAAiB,EACjB,qBAAqB,EACrB,QAAQ,EACR,yBAAyB,EAEzB,YAAY,EACb,MAAM,gBAAgB,CAAC;AAExB,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IACrD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,qBAAqB;IA0ClC,IAAI,CAAC,MAAM,EAAE,yBAAyB,GAAG,IAAI;IAevC,kBAAkB,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAcrE,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAyBxC,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAsFzE,mBAAmB,CAC9B,MAAM,EAAE,6BAA6B,GACpC,OAAO,CAAC,iBAAiB,CAAC;IAoBhB,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAkD5D,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBvE,uBAAuB,CAAC,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BrE,uBAAuB,CAAC,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAoBnF"}
@@ -0,0 +1,3 @@
1
+ export { OAuthCollection } from './OAuthCollection';
2
+ export * from '../OAuth/types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/OAuthCollection/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,cAAc,gBAAgB,CAAC"}
@@ -3,12 +3,15 @@ import { TokenCollectionConfig, CreateTokenAuthInCollectionConfig, TokenAuthData
3
3
  export declare class TokenCollection {
4
4
  private serviceName;
5
5
  private readonly keyValueStorage;
6
+ private readonly providers;
6
7
  constructor(params: TokenCollectionConfig);
7
8
  init(serviceName: string): void;
8
- listAuthorizations(): Promise<List<string>>;
9
- getAuthorization(key: string): Promise<TokenAuthData>;
9
+ listAuthorizations(dynamicCollectionName?: string): Promise<List<string>>;
10
+ getAuthorization(key: string, dynamicCollectionName: string): Promise<TokenAuthData>;
10
11
  createAuthorization(params: CreateTokenAuthInCollectionConfig): Promise<TokenAuthData>;
11
12
  updateAuthorization(tokenAuth: TokenAuthData, newCredentials: Record<string, unknown>): Promise<TokenAuthData>;
12
13
  deleteAuthorization(key: string): Promise<void>;
14
+ createDynamicCollection(dynamicCollectionName: string): Promise<void>;
15
+ deleteDynamicCollection(dynamicCollectionName: string): Promise<void>;
13
16
  }
14
17
  //# sourceMappingURL=TokenCollection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TokenCollection.d.ts","sourceRoot":"","sources":["../../../src/Token/TokenCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,IAAI,EAAE,MAAM,cAAc,CAAC;AAK9C,OAAO,EACL,qBAAqB,EACrB,iCAAiC,EACjC,aAAa,EACd,MAAM,SAAS,CAAC;AAEjB,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;gBAEtC,MAAM,EAAE,qBAAqB;IAelC,IAAI,CAAC,WAAW,EAAE,MAAM;IAUlB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAS3C,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAoCrD,mBAAmB,CAC9B,MAAM,EAAE,iCAAiC,GACxC,OAAO,CAAC,aAAa,CAAC;IA2BZ,mBAAmB,CAC9B,SAAS,EAAE,aAAa,EACxB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACtC,OAAO,CAAC,aAAa,CAAC;IAyBZ,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAK7D"}
1
+ {"version":3,"file":"TokenCollection.d.ts","sourceRoot":"","sources":["../../../src/Token/TokenCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,IAAI,EAAE,MAAM,cAAc,CAAC;AAK9C,OAAO,EACL,qBAAqB,EACrB,iCAAiC,EACjC,aAAa,EAEd,MAAM,SAAS,CAAC;AAIjB,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAE1B,MAAM,EAAE,qBAAqB;IAoBlC,IAAI,CAAC,WAAW,EAAE,MAAM;IAUlB,kBAAkB,CAAC,qBAAqB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAWzE,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAgDpF,mBAAmB,CAC9B,MAAM,EAAE,iCAAiC,GACxC,OAAO,CAAC,aAAa,CAAC;IA0EZ,mBAAmB,CAC9B,SAAS,EAAE,aAAa,EACxB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACtC,OAAO,CAAC,aAAa,CAAC;IAgCZ,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiC/C,uBAAuB,CAAC,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BrE,uBAAuB,CAAC,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAuBnF"}
@@ -1,28 +1,42 @@
1
1
  import { Token } from '@or-sdk/base';
2
- export declare type TokenAuthConfig = {
2
+ export type TokenAuthConfig = {
3
3
  token: Token;
4
4
  discoveryUrl: string;
5
5
  serviceName: string;
6
6
  authKey: string;
7
7
  };
8
- export declare type TokenAuthData = {
8
+ export type TokenAuthData = {
9
9
  auth_name: string;
10
10
  key: string;
11
11
  date_created: string;
12
12
  [credentialKey: string]: string;
13
13
  };
14
- export declare type CreateTokenAuthConfig = {
14
+ export type CreateTokenAuthConfig = {
15
15
  serviceName: string;
16
16
  authName: string;
17
17
  credentials: Record<string, unknown>;
18
18
  token: Token;
19
19
  discoveryUrl: string;
20
+ dynamicCollection?: string;
21
+ destinationAccount: 'CURRENT' | 'PROVIDER' | 'CUSTOM';
22
+ customAccountId?: string;
20
23
  };
21
- export declare type CreateTokenAuthInCollectionConfig = Omit<CreateTokenAuthConfig, 'serviceName' | 'discoveryUrl' | 'token'>;
22
- export declare type TokenCollectionConfig = {
24
+ export type CreateTokenAuthInCollectionConfig = Omit<CreateTokenAuthConfig, 'serviceName' | 'discoveryUrl' | 'token'>;
25
+ export type TokenCollectionConfig = {
23
26
  token: Token;
24
27
  discoveryUrl: string;
25
28
  serviceName: string;
26
29
  accountId?: string;
27
30
  };
31
+ export type TokenDynamicCollection = {
32
+ name: string;
33
+ type: string;
34
+ service: string;
35
+ serviceConfigName: string;
36
+ authorizations: {
37
+ [key: string]: string;
38
+ };
39
+ appId?: string;
40
+ scope?: string;
41
+ };
28
42
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/Token/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,oBAAY,eAAe,GAAG;IAI5B,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,oBAAY,aAAa,GAAG;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IAIZ,YAAY,EAAE,MAAM,CAAC;IAKrB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC;CACjC,CAAC;AAEF,oBAAY,qBAAqB,GAAG;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IAKjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAKrC,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,oBAAY,iCAAiC,GAAG,IAAI,CAAC,qBAAqB,EAAE,aAAa,GAAG,cAAc,GAAG,OAAO,CAAC,CAAC;AAEtH,oBAAY,qBAAqB,GAAG;IAIlC,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/Token/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,MAAM,MAAM,eAAe,GAAG;IAI5B,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IAIZ,YAAY,EAAE,MAAM,CAAC;IAKrB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IAKjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAKrC,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;IACtD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG,IAAI,CAAC,qBAAqB,EAAE,aAAa,GAAG,cAAc,GAAG,OAAO,CAAC,CAAC;AAEtH,MAAM,MAAM,qBAAqB,GAAG;IAIlC,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE;QACd,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;KACvB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export declare const createAuthKey: (id: string, authName: string) => string;
2
+ export declare function createDynamicKey(id: string, dynamicCollection: string): string;
2
3
  //# sourceMappingURL=createAuthKey.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createAuthKey.d.ts","sourceRoot":"","sources":["../../../../src/Token/utils/createAuthKey.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,OAAQ,MAAM,YAAY,MAAM,KAAG,MAE5D,CAAC"}
1
+ {"version":3,"file":"createAuthKey.d.ts","sourceRoot":"","sources":["../../../../src/Token/utils/createAuthKey.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,OAAQ,MAAM,YAAY,MAAM,KAAG,MAE5D,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAE9E"}
@@ -1,5 +1,6 @@
1
1
  export declare const SERVICE_PROVIDER_PATH = "/authorizer/services/list";
2
2
  export declare const OAUTH_REDIRECT_PROVIDER_PATH = "/authorizer/redirect";
3
+ export declare const NEXT_OAUTH_REDIRECT_PROVIDER_PATH = "/authorizer-next/redirect";
3
4
  export declare enum AuthStatus {
4
5
  NEW = "NEW",
5
6
  PENDING = "PENDING",
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,8BAA8B,CAAC;AACjE,eAAO,MAAM,4BAA4B,yBAAyB,CAAC;AAEnE,oBAAY,UAAU;IACpB,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,eAAO,MAAM,cAAc,eAAe,CAAC;AAE3C,eAAO,MAAM,8BAA8B,SAAS,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,8BAA8B,CAAC;AACjE,eAAO,MAAM,4BAA4B,yBAAyB,CAAC;AACnE,eAAO,MAAM,iCAAiC,8BAA8B,CAAC;AAE7E,oBAAY,UAAU;IACpB,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,eAAO,MAAM,cAAc,eAAe,CAAC;AAE3C,eAAO,MAAM,8BAA8B,SAAS,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export { BasicCollection } from './Basic/index';
2
2
  export { TokenCollection } from './Token/index';
3
- export { OAuth, OAuthCollection } from './OAuth/index';
3
+ export { OAuth } from './OAuth/index';
4
+ export { OAuthCollection } from './OAuthCollection/index';
4
5
  export * from './types';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEvD,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,cAAc,SAAS,CAAC"}
package/package.json CHANGED
@@ -1,22 +1,7 @@
1
1
  {
2
2
  "name": "@or-sdk/authorizer",
3
- "version": "0.25.0-beta.990.0",
4
- "main": "dist/cjs/index.js",
5
- "module": "dist/esm/index.js",
6
- "types": "dist/types/index.d.ts",
7
- "typesVersions": {
8
- "*": {
9
- "Basic": [
10
- "dist/types/Basic/index.d.ts"
11
- ],
12
- "OAuth": [
13
- "dist/types/OAuth/index.d.ts"
14
- ],
15
- "Token": [
16
- "dist/types/Token/index.d.ts"
17
- ]
18
- }
19
- },
3
+ "version": "0.25.0",
4
+ "license": "Apache-2.0",
20
5
  "exports": {
21
6
  ".": {
22
7
  "import": "./dist/esm/index.js",
@@ -33,10 +18,30 @@
33
18
  "./Token": {
34
19
  "import": "./dist/esm/Token/index.js",
35
20
  "require": "./dist/cjs/Token/index.js"
21
+ },
22
+ "./OAuthCollection": {
23
+ "import": "./dist/esm/OAuthCollection/index.js",
24
+ "require": "./dist/cjs/OAuthCollection/index.js"
25
+ }
26
+ },
27
+ "main": "dist/cjs/index.js",
28
+ "module": "dist/esm/index.js",
29
+ "types": "dist/types/index.d.ts",
30
+ "typesVersions": {
31
+ "*": {
32
+ "Basic": [
33
+ "dist/types/Basic/index.d.ts"
34
+ ],
35
+ "OAuth": [
36
+ "dist/types/OAuth/index.d.ts"
37
+ ],
38
+ "Token": [
39
+ "dist/types/Token/index.d.ts"
40
+ ]
36
41
  }
37
42
  },
38
43
  "scripts": {
39
- "build": "pnpm clean && pnpm build:esm && pnpm build:cjs",
44
+ "build": "pnpm clean && pnpm build:esm & pnpm build:cjs",
40
45
  "build:cjs": "tsc --project tsconfig.json",
41
46
  "build:esm": "tsc --project tsconfig.esm.json",
42
47
  "build:types": "tsc --project tsconfig.types.json",
@@ -48,19 +53,20 @@
48
53
  "dev": "pnpm build:watch:esm"
49
54
  },
50
55
  "dependencies": {
51
- "@or-sdk/base": "^0.28.0",
52
- "@or-sdk/discovery": "^1.6.1",
53
- "@or-sdk/event-manager": "^0.24.8",
54
- "@or-sdk/key-value-storage": "^0.25.8",
55
- "@or-sdk/providers": "^0.2.2-beta.990.0",
56
+ "@or-sdk/base": "^0.39.1",
57
+ "@or-sdk/discovery": "^1.8.14",
58
+ "@or-sdk/event-manager": "^0.24.24",
59
+ "@or-sdk/key-value-storage": "^0.27.0",
60
+ "@or-sdk/providers": "^0.2.38",
56
61
  "uuid": "^8.3.2"
57
62
  },
58
63
  "devDependencies": {
59
64
  "@types/uuid": "^8.3.1",
60
- "concurrently": "^6.4.0",
61
- "typescript": "^4.4.4"
65
+ "concurrently": "8.2.2",
66
+ "typescript": "5.5.4"
62
67
  },
63
68
  "publishConfig": {
64
69
  "access": "public"
65
- }
70
+ },
71
+ "gitHead": "a5a4137dd395e831d3ad344f194227a516fa2324"
66
72
  }
@@ -1,17 +1,20 @@
1
1
  import { List, makeList } from '@or-sdk/base';
2
+ import { Providers } from '@or-sdk/providers';
2
3
  import { KeyValueStorage } from '@or-sdk/key-value-storage';
3
- import { BasicAuthData } from './types';
4
- import { createAuthKey } from './utils/createAuthKey';
4
+ import { createAuthKey, createDynamicKey } from './utils/createAuthKey';
5
5
  import { v4 as uuidv4 } from 'uuid';
6
6
 
7
7
  import {
8
+ BasicAuthData,
8
9
  BasicCollectionConfig,
9
10
  CreateBasicAuthInCollectionConfig,
11
+ BasicDynamicCollection,
10
12
  } from './types';
11
13
 
12
14
  export class BasicCollection {
13
15
  private serviceName: string;
14
16
  private readonly keyValueStorage: KeyValueStorage;
17
+ private readonly providers: Providers;
15
18
 
16
19
  constructor(params: BasicCollectionConfig) {
17
20
  const { token, discoveryUrl, serviceName, accountId } = params;
@@ -22,6 +25,10 @@ export class BasicCollection {
22
25
  discoveryUrl,
23
26
  accountId,
24
27
  });
28
+ this.providers = new Providers({
29
+ token,
30
+ discoveryUrl,
31
+ });
25
32
  }
26
33
 
27
34
 
@@ -57,19 +64,37 @@ export class BasicCollection {
57
64
  /**
58
65
  * Returns array of auth keys from this collection
59
66
  */
60
- public async listAuthorizations(): Promise<List<string>> {
67
+ public async listAuthorizations(dynamicCollectionName?: string): Promise<List<string>> {
61
68
  const { items: records } = await this.keyValueStorage.listKeys(this.serviceName);
62
69
 
63
- return makeList<string>(records.map((record) => record.key).filter(key => key.includes('::basic')));
70
+ const pattern = dynamicCollectionName ? '::basic-collection::' + dynamicCollectionName : '::basic::';
71
+
72
+ return makeList<string>(records.map((record) => record.key).filter(key => key.includes(pattern)));
64
73
  }
65
74
 
66
75
 
67
76
  /**
68
77
  * Returns BasicAuth instance for given key
69
78
  */
70
- public async getAuthorization(key: string): Promise<BasicAuthData> {
79
+ public async getAuthorization(key: string, dynamicCollectionName?: string): Promise<BasicAuthData> {
71
80
  if (!this.serviceName) throw new Error('Service name is not defined.');
72
- if (!key.includes('::basic')) throw new Error('The basic authorization key should contain "basic" type specifier.');
81
+
82
+ if (dynamicCollectionName) {
83
+ const collectionRecord = await this.keyValueStorage.getValueByKey(
84
+ '__authorizer_dynamic_collections',
85
+ dynamicCollectionName
86
+ );
87
+
88
+ const collection = collectionRecord.value as BasicDynamicCollection;
89
+ if (!collection || collection.type !== 'basic') throw new Error('Dynamic collection name is invalid');
90
+
91
+ key = collection.authorizations[key];
92
+ if (!key) throw new Error('Dynamic collection does not have such key');
93
+
94
+ }
95
+ if (!key.includes('::basic')) {
96
+ throw new Error('The basic authorization key should contain "basic" type specifier.');
97
+ }
73
98
 
74
99
  const record = await this.keyValueStorage.getValueByKey(this.serviceName, encodeURIComponent(key));
75
100
 
@@ -77,17 +102,18 @@ export class BasicCollection {
77
102
  throw new Error('Authorization does not exist.');
78
103
  }
79
104
 
80
-
81
105
  const authRecord = record.value as Omit<BasicAuthData, 'key'>;
82
106
 
83
- if (!authRecord.auth_name || !authRecord.access_token || !authRecord.date_created) {
107
+ if (
108
+ !authRecord.auth_name ||
109
+ !authRecord.access_token ||
110
+ !(authRecord.date_created || authRecord._date_created)
111
+ ) {
84
112
  throw new Error('Authorization does not exist or invalid.');
85
113
  }
86
114
 
87
115
  return {
88
- auth_name: authRecord.auth_name,
89
- access_token: authRecord.access_token,
90
- date_created: authRecord.date_created,
116
+ ...authRecord,
91
117
  key,
92
118
  } as BasicAuthData;
93
119
  }
@@ -95,13 +121,14 @@ export class BasicCollection {
95
121
 
96
122
  /**
97
123
  * Creates a new auth record in current collection with the given config.
98
- * @returns BasicAuth instance connected to created auth
124
+ * @returns BasicAuthData object
99
125
  *
100
126
  * ```typescript
101
127
  * const basicAuthData = await basicCollectionInstance.createAuthorization({
102
128
  * authName: 'my-auth-name',
103
129
  * username: 'user',
104
- * password: 'pass'
130
+ * password: 'pass',
131
+ * dynamicCollection: 'my-dynamic-collection' // Optional
105
132
  * });
106
133
  * ```
107
134
  */
@@ -109,7 +136,7 @@ export class BasicCollection {
109
136
  params: CreateBasicAuthInCollectionConfig
110
137
  ): Promise<BasicAuthData> {
111
138
 
112
- const { authName, password, username } = params;
139
+ const { authName, password, username, dynamicCollection, destinationAccount = 'CURRENT', customAccountId } = params;
113
140
 
114
141
  if (!authName || !username || !password) {
115
142
  throw new Error('Invalid authorization config passed.');
@@ -119,15 +146,64 @@ export class BasicCollection {
119
146
 
120
147
 
121
148
  const id = uuidv4();
122
- const authKey = createAuthKey(id, authName);
149
+ const authKey = dynamicCollection ? createDynamicKey(id, dynamicCollection) : createAuthKey(id, authName);
123
150
 
124
151
  const authData = {
125
152
  auth_name: authName,
126
153
  access_token: BasicCollection.encodeAccessToken(username, password),
127
- date_created: new Date().toISOString(),
154
+ _date_created: new Date().toISOString(),
128
155
  } as Omit<BasicAuthData, 'key'>;
129
156
 
130
- await this.keyValueStorage.setValueByKey(this.serviceName, encodeURIComponent(authKey), authData);
157
+ if (dynamicCollection) {
158
+ const { value } = await this.keyValueStorage.getValueByKey(
159
+ '__authorizer_dynamic_collections',
160
+ dynamicCollection
161
+ );
162
+
163
+ const collection = value as BasicDynamicCollection;
164
+
165
+ if (!collection) throw new Error('Dynamic collection name is invalid');
166
+ if (collection.type !== 'basic' || collection.service !== this.serviceName) {
167
+ throw new Error('Dynamic collection\'s type or service is invalid');
168
+ }
169
+
170
+ collection.authorizations[authName] = authKey;
171
+ await this.keyValueStorage.setValueByKey(
172
+ '__authorizer_dynamic_collections',
173
+ dynamicCollection,
174
+ collection
175
+ );
176
+ }
177
+
178
+ // Accounts handling
179
+ if (destinationAccount === 'CURRENT') {
180
+ await this.keyValueStorage.setValueByKey(this.serviceName, encodeURIComponent(authKey), authData);
181
+ } else {
182
+ const localRecord = {
183
+ auth_name: authData.auth_name,
184
+ isRemote: true,
185
+ id,
186
+ };
187
+
188
+ if (destinationAccount === 'CUSTOM' && !customAccountId) {
189
+ throw new Error('Custom Account ID is required if destinationAccount === "CUSTOM"');
190
+ }
191
+
192
+ await this.providers.makeRequest({
193
+ route: 'authorizer/redirect',
194
+ params: {
195
+ method: 'PUT',
196
+ data: {
197
+ authData,
198
+ id,
199
+ storeAccount: destinationAccount,
200
+ storeCustomAccountId: destinationAccount === 'CUSTOM' ? customAccountId : undefined,
201
+ },
202
+ },
203
+ }).catch(() => { throw new Error('Could not save basic credentials to the specified account');});
204
+
205
+ await this.keyValueStorage.setValueByKey(this.serviceName, encodeURIComponent(authKey), localRecord);
206
+ }
131
207
 
132
208
  return {
133
209
  ...authData,
@@ -165,7 +241,7 @@ export class BasicCollection {
165
241
  encodeURIComponent(basicAuth.key),
166
242
  {
167
243
  auth_name: basicAuth.auth_name,
168
- date_created: basicAuth.date_created,
244
+ _date_created: basicAuth.date_created || basicAuth._date_created,
169
245
  access_token,
170
246
  }
171
247
  );
@@ -183,7 +259,83 @@ export class BasicCollection {
183
259
  */
184
260
  public async deleteAuthorization(authKey: string): Promise<void> {
185
261
  if (!this.serviceName) throw new Error('Service name is not defined.');
262
+
263
+ if (authKey.includes('::basic-collection::')) {
264
+ const dynamicCollectionName = authKey.split('::')[2].split(' ')[0];
265
+ const { value } = await this.keyValueStorage.getValueByKey(
266
+ '__authorizer_dynamic_collections',
267
+ dynamicCollectionName
268
+ );
269
+
270
+ const collection = value as BasicDynamicCollection;
271
+ if (collection) {
272
+ const authName = Object.keys(collection.authorizations)
273
+ .find(name => collection.authorizations[name] === authKey);
274
+
275
+ if (authName) {
276
+ delete collection.authorizations[authName];
277
+ await this.keyValueStorage.setValueByKey(
278
+ '__authorizer_dynamic_collections',
279
+ dynamicCollectionName,
280
+ collection
281
+ );
282
+ }
283
+ }
284
+ }
285
+
186
286
  await this.keyValueStorage.deleteKey(this.serviceName, encodeURIComponent(authKey));
187
287
  }
288
+
289
+
290
+ /**
291
+ * Creates a Dynamic Token collection
292
+ */
293
+ public async createDynamicCollection(dynamicCollectionName: string): Promise<void> {
294
+ if (!dynamicCollectionName) throw new Error('Dynamic collection name is empty or invalid');
295
+ const { value } = await this.keyValueStorage.getValueByKey(
296
+ '__authorizer_dynamic_collections',
297
+ dynamicCollectionName
298
+ );
299
+ const collection = value as BasicDynamicCollection;
300
+
301
+ if (!value) {
302
+ await this.keyValueStorage.setValueByKey(
303
+ '__authorizer_dynamic_collections',
304
+ dynamicCollectionName,
305
+ {
306
+ name: dynamicCollectionName,
307
+ type: 'basic',
308
+ service: this.serviceName,
309
+ serviceConfigName: this.serviceName,
310
+ authorizations: {},
311
+ });
312
+ } else if (collection.type === 'oauth' && collection.service === this.serviceName) {
313
+ throw new Error('Same collection already exists');
314
+ } else {
315
+ throw new Error('Different collection exists with this name');
316
+ }
317
+ }
318
+
319
+
320
+ /**
321
+ * Deletes a Dynamic collection
322
+ */
323
+ public async deleteDynamicCollection(dynamicCollectionName: string): Promise<void> {
324
+ if (!dynamicCollectionName) throw new Error('Dynamic collection name is empty or invalid');
325
+ const { value } = await this.keyValueStorage.getValueByKey('__authorizer_dynamic_collections', dynamicCollectionName);
326
+ const collection = value as BasicDynamicCollection;
327
+
328
+ await Promise.all(
329
+ Object.keys(collection.authorizations)
330
+ .map(authName => {
331
+ return this.keyValueStorage.deleteKey(
332
+ collection.service,
333
+ encodeURIComponent(collection.authorizations[authName])
334
+ );
335
+ })
336
+ ).catch(() => {});
337
+
338
+ await this.keyValueStorage.deleteKey('__authorizer_dynamic_collections', dynamicCollectionName);
339
+ }
188
340
  }
189
341
 
@@ -1,18 +1,5 @@
1
1
  import { Token } from '@or-sdk/base';
2
2
 
3
- export type BasicAuthConfig = {
4
- /**
5
- * token
6
- */
7
- token: Token;
8
- /**
9
- * function which return token
10
- */
11
- discoveryUrl: string;
12
- serviceName: string;
13
- authKey: string;
14
- };
15
-
16
3
  export type BasicAuthData = {
17
4
  key: string;
18
5
  auth_name: string;
@@ -25,7 +12,8 @@ export type BasicAuthData = {
25
12
  /**
26
13
  * Datetime of auth creation in YYYY-MM-DDTHH:MM:SSZ format
27
14
  */
28
- date_created: string;
15
+ date_created?: string;
16
+ _date_created?: string;
29
17
  };
30
18
 
31
19
  export type CreateBasicAuthConfig = {
@@ -38,6 +26,9 @@ export type CreateBasicAuthConfig = {
38
26
  * token
39
27
  */
40
28
  token: Token;
29
+ dynamicCollection?: string;
30
+ destinationAccount: 'CURRENT' | 'CUSTOM' | 'PROVIDER';
31
+ customAccountId?: string;
41
32
  };
42
33
 
43
34
  export type CreateBasicAuthInCollectionConfig = Omit<CreateBasicAuthConfig, 'serviceName' | 'discoveryUrl' | 'token'>;
@@ -54,3 +45,15 @@ export type BasicCollectionConfig = {
54
45
  accountId?: string;
55
46
  serviceName?: string;
56
47
  };
48
+
49
+ export type BasicDynamicCollection = {
50
+ name: string;
51
+ type: string;
52
+ service: string;
53
+ serviceConfigName: string;
54
+ authorizations: {
55
+ [key: string]: string;
56
+ };
57
+ appId?: string;
58
+ scope?: string;
59
+ };
@@ -1,3 +1,7 @@
1
1
  export const createAuthKey = (id: string, authName: string): string => {
2
2
  return `${id}::basic::${authName}`;
3
3
  };
4
+
5
+ export function createDynamicKey(id: string, dynamicCollection: string): string {
6
+ return `${id}::basic-collection::${dynamicCollection} collection auth`;
7
+ }