@juniyadi/cognito 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -21,6 +21,17 @@ interface ICognitoInviteUser {
21
21
  attributes?: ICognitoAttributes[];
22
22
  group?: string;
23
23
  }
24
+ interface ICognitoAdminLoginResponse {
25
+ TokenType: string;
26
+ ExpiresIn: number;
27
+ AccessToken: string;
28
+ IdToken: string;
29
+ RefreshToken: string;
30
+ NewDeviceMetadata: {
31
+ DeviceKey: string | null;
32
+ DeviceGroupKey: null;
33
+ };
34
+ }
24
35
  declare class Cognito {
25
36
  region: string;
26
37
  userPoolId: string;
@@ -121,6 +132,27 @@ declare class Cognito {
121
132
  * @see https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminAddUserToGroup.html
122
133
  */
123
134
  addUserToGroup: (username: string, groupName: string) => Promise<AdminAddUserToGroupCommandOutput>;
135
+ /**
136
+ * Login as an admin to Cognito User Pool with username and password
137
+ *
138
+ * @param username string
139
+ * @param password string
140
+ * @returns Promise<ICognitoAdminLoginResponse>
141
+ *
142
+ * @example
143
+ * const cognito = new Cognito();
144
+ * const response = await cognito.adminLogin("username", "password");
145
+ * console.log(response);
146
+ */
147
+ adminLogin: (username: string, password: string) => Promise<ICognitoAdminLoginResponse>;
148
+ /**
149
+ * Refresh Token for Admin User
150
+ *
151
+ * @param refreshToken string
152
+ * @param deviceKey string
153
+ * @returns Promise<AdminInitiateAuthCommandOutput>
154
+ */
155
+ adminRefreshToken: (refreshToken: string, deviceKey: string) => Promise<_aws_sdk_client_cognito_identity_provider.AdminInitiateAuthCommandOutput>;
124
156
  }
125
157
 
126
- export { Cognito, type ICognito, type ICognitoAttributes, type ICognitoInviteUser };
158
+ export { Cognito, type ICognito, type ICognitoAdminLoginResponse, type ICognitoAttributes, type ICognitoInviteUser };
package/dist/index.js CHANGED
@@ -1,8 +1,14 @@
1
1
  'use strict';
2
2
 
3
3
  var clientCognitoIdentityProvider = require('@aws-sdk/client-cognito-identity-provider');
4
+ var amazonCognitoIdentityJs = require('amazon-cognito-identity-js');
4
5
  var randomString = require('@juniyadi/random-string');
6
+ var m = require('dayjs');
5
7
 
6
- var s=class{constructor(e){this.randomPassword=(e=12)=>randomString.generate(e,{lowercase:!0,uppercase:!0,numbers:!0});this.inviteUser=async e=>{let r=e.password||this.randomPassword(10),i=e.passwordTemporary||this.randomPassword(12),t={UserPoolId:this.userPoolId,Username:e.email,UserAttributes:[{Name:"email",Value:e.email},{Name:"name",Value:e.name},{Name:"email_verified",Value:"true"}],DesiredDeliveryMediums:["EMAIL"],ForceAliasCreation:!1,MessageAction:e.sendEmail?"RESEND":"SUPPRESS",TemporaryPassword:i};e.phoneNumber&&t.UserAttributes&&t.UserAttributes.push({Name:"phone_number",Value:e.phoneNumber}),e.attributes&&t.UserAttributes&&(t.UserAttributes=t.UserAttributes.concat(e.attributes));let o=new clientCognitoIdentityProvider.AdminCreateUserCommand(t);try{let n=await this.cognitoIdentityProvider.send(o);return e.autoConfirm&&n?.User?.UserStatus==="FORCE_CHANGE_PASSWORD"&&await this.changePassword(e.email,r),e.group&&await this.addUserToGroup(e.email,e.group),n}catch(n){throw n}};this.changePassword=async(e,r)=>{let i=new clientCognitoIdentityProvider.AdminSetUserPasswordCommand({UserPoolId:this.userPoolId,Username:e,Password:r,Permanent:!0});return this.cognitoIdentityProvider.send(i)};this.disableUser=async e=>{let r=new clientCognitoIdentityProvider.AdminDisableUserCommand({UserPoolId:this.userPoolId,Username:e});return this.cognitoIdentityProvider.send(r)};this.enableUser=async e=>{let r=new clientCognitoIdentityProvider.AdminEnableUserCommand({UserPoolId:this.userPoolId,Username:e});return this.cognitoIdentityProvider.send(r)};this.deleteUser=async e=>{await this.disableUser(e);let r=new clientCognitoIdentityProvider.AdminDeleteUserCommand({UserPoolId:this.userPoolId,Username:e});return this.cognitoIdentityProvider.send(r)};this.listUsers=async e=>{let r=new clientCognitoIdentityProvider.ListUsersCommand({UserPoolId:this.userPoolId,Filter:e||void 0});return this.cognitoIdentityProvider.send(r)};this.addUserToGroup=async(e,r)=>{let i=new clientCognitoIdentityProvider.AdminAddUserToGroupCommand({UserPoolId:this.userPoolId,Username:e,GroupName:r});return this.cognitoIdentityProvider.send(i)};if(this.region=e?.region||process.env.AWS_REGION||"",this.userPoolId=e?.userPoolId||process.env.COGNITO_USER_POOL_ID||"",this.clientId=e?.clientId||process.env.COGNITO_CLIENT_ID||"",!this.region)throw new Error("AWS Region is required");if(!this.userPoolId)throw new Error("Cognito User Pool ID is required");if(!this.clientId)throw new Error("Cognito Client ID is required");this.cognitoIdentityProvider=new clientCognitoIdentityProvider.CognitoIdentityProviderClient({region:this.region});}};
8
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
7
9
 
8
- exports.Cognito = s;
10
+ var m__default = /*#__PURE__*/_interopDefault(m);
11
+
12
+ var u=class{constructor(e){this.randomPassword=(e=12)=>randomString.generate(e,{lowercase:!0,uppercase:!0,numbers:!0});this.inviteUser=async e=>{let n=e.password||this.randomPassword(10),r=e.passwordTemporary||this.randomPassword(12),t={UserPoolId:this.userPoolId,Username:e.email,UserAttributes:[{Name:"email",Value:e.email},{Name:"name",Value:e.name},{Name:"email_verified",Value:"true"}],DesiredDeliveryMediums:["EMAIL"],ForceAliasCreation:!1,MessageAction:e.sendEmail?"RESEND":"SUPPRESS",TemporaryPassword:r};e.phoneNumber&&t.UserAttributes&&t.UserAttributes.push({Name:"phone_number",Value:e.phoneNumber}),e.attributes&&t.UserAttributes&&(t.UserAttributes=t.UserAttributes.concat(e.attributes));let s=new clientCognitoIdentityProvider.AdminCreateUserCommand(t);try{let i=await this.cognitoIdentityProvider.send(s);return e.autoConfirm&&i?.User?.UserStatus==="FORCE_CHANGE_PASSWORD"&&await this.changePassword(e.email,n),e.group&&await this.addUserToGroup(e.email,e.group),i}catch(i){throw i}};this.changePassword=async(e,n)=>{let r=new clientCognitoIdentityProvider.AdminSetUserPasswordCommand({UserPoolId:this.userPoolId,Username:e,Password:n,Permanent:!0});return this.cognitoIdentityProvider.send(r)};this.disableUser=async e=>{let n=new clientCognitoIdentityProvider.AdminDisableUserCommand({UserPoolId:this.userPoolId,Username:e});return this.cognitoIdentityProvider.send(n)};this.enableUser=async e=>{let n=new clientCognitoIdentityProvider.AdminEnableUserCommand({UserPoolId:this.userPoolId,Username:e});return this.cognitoIdentityProvider.send(n)};this.deleteUser=async e=>{await this.disableUser(e);let n=new clientCognitoIdentityProvider.AdminDeleteUserCommand({UserPoolId:this.userPoolId,Username:e});return this.cognitoIdentityProvider.send(n)};this.listUsers=async e=>{let n=new clientCognitoIdentityProvider.ListUsersCommand({UserPoolId:this.userPoolId,Filter:e||void 0});return this.cognitoIdentityProvider.send(n)};this.addUserToGroup=async(e,n)=>{let r=new clientCognitoIdentityProvider.AdminAddUserToGroupCommand({UserPoolId:this.userPoolId,Username:e,GroupName:n});return this.cognitoIdentityProvider.send(r)};this.adminLogin=async(e,n)=>new Promise((r,t)=>{let s=new amazonCognitoIdentityJs.AuthenticationDetails({Username:e,Password:n}),i=new amazonCognitoIdentityJs.CognitoUserPool({UserPoolId:this.userPoolId,ClientId:this.clientId}),a=new amazonCognitoIdentityJs.CognitoUser({Username:e,Pool:i});a.authenticateUser(s,{onSuccess:o=>{a.getDevice({onSuccess:d=>{let c=o.getIdToken().getExpiration(),l=m__default.default.unix(c).diff(m__default.default(),"second")+1;r({TokenType:"Bearer",ExpiresIn:l,AccessToken:o.getAccessToken().getJwtToken(),IdToken:o.getIdToken().getJwtToken(),RefreshToken:o.getRefreshToken().getToken(),NewDeviceMetadata:{DeviceKey:d?.Device?.DeviceKey,DeviceGroupKey:null}});},onFailure:d=>{t(d);}});},onFailure:o=>{t(o);}});});this.adminRefreshToken=async(e,n)=>{let r=new clientCognitoIdentityProvider.AdminInitiateAuthCommand({UserPoolId:this.userPoolId,ClientId:this.clientId,AuthFlow:"REFRESH_TOKEN_AUTH",AuthParameters:{REFRESH_TOKEN:e,DEVICE_KEY:n}});return this.cognitoIdentityProvider.send(r)};if(this.region=e?.region||process.env.AWS_REGION||"",this.userPoolId=e?.userPoolId||process.env.COGNITO_USER_POOL_ID||"",this.clientId=e?.clientId||process.env.COGNITO_CLIENT_ID||"",!this.region)throw new Error("AWS Region is required");if(!this.userPoolId)throw new Error("Cognito User Pool ID is required");if(!this.clientId)throw new Error("Cognito Client ID is required");this.cognitoIdentityProvider=new clientCognitoIdentityProvider.CognitoIdentityProviderClient({region:this.region});}};
13
+
14
+ exports.Cognito = u;
package/package.json CHANGED
@@ -1,20 +1,8 @@
1
1
  {
2
2
  "name": "@juniyadi/cognito",
3
- "version": "1.0.0",
4
- "main": "./dist/index.js",
3
+ "version": "1.1.0",
5
4
  "types": "./dist/index.d.ts",
6
- "exports": {
7
- ".": {
8
- "import": {
9
- "default": "./dist/index.mjs",
10
- "types": "./dist/index.d.mts"
11
- },
12
- "require": {
13
- "default": "./dist/index.js",
14
- "types": "./dist/index.d.ts"
15
- }
16
- }
17
- },
5
+ "main": "./dist/index.js",
18
6
  "sideEffects": false,
19
7
  "license": "MIT",
20
8
  "files": [
@@ -30,7 +18,9 @@
30
18
  "@aws-sdk/client-cognito-identity-provider": "^3.388.0",
31
19
  "@types/jest": "^29.5.12",
32
20
  "@types/node": "^20.12.8",
21
+ "amazon-cognito-identity-js": "^6.3.12",
33
22
  "aws-sdk-client-mock": "^3.0.0",
23
+ "dayjs": "^1.11.11",
34
24
  "eslint": "^8.57.0",
35
25
  "jest": "^29.7.0",
36
26
  "ts-jest": "^29.1.2",
@@ -48,6 +38,8 @@
48
38
  "peerDependencies": {
49
39
  "@aws-sdk/client-cognito-identity": "^3.388.0",
50
40
  "@aws-sdk/client-cognito-identity-provider": "^3.388.0",
41
+ "amazon-cognito-identity-js": "^6.3.12",
42
+ "dayjs": "^1.11.11",
51
43
  "@juniyadi/random-string": "0.2.0"
52
44
  },
53
45
  "scripts": {
package/dist/index.d.mts DELETED
@@ -1,126 +0,0 @@
1
- import * as _aws_sdk_client_cognito_identity_provider from '@aws-sdk/client-cognito-identity-provider';
2
- import { CognitoIdentityProviderClient, AdminSetUserPasswordCommandOutput, AdminDisableUserCommandOutput, AdminEnableUserCommandOutput, AdminDeleteUserCommandOutput, AdminAddUserToGroupCommandOutput } from '@aws-sdk/client-cognito-identity-provider';
3
-
4
- interface ICognito {
5
- region?: string;
6
- userPoolId?: string;
7
- clientId?: string;
8
- }
9
- interface ICognitoAttributes {
10
- Name: string;
11
- Value: string;
12
- }
13
- interface ICognitoInviteUser {
14
- name: string;
15
- email: string;
16
- password?: string;
17
- passwordTemporary?: string;
18
- autoConfirm?: boolean;
19
- phoneNumber?: string;
20
- sendEmail?: boolean;
21
- attributes?: ICognitoAttributes[];
22
- group?: string;
23
- }
24
- declare class Cognito {
25
- region: string;
26
- userPoolId: string;
27
- clientId: string;
28
- cognitoIdentityProvider: CognitoIdentityProviderClient;
29
- /**
30
- * Create a new Cognito instance
31
- * @param opts
32
- * @example
33
- * const cognito = new Cognito({
34
- * region: "us-east-1",
35
- * userPoolId: "us-east-1_123456789",
36
- * clientId: "12345678901234567890",
37
- * });
38
- */
39
- constructor(opts?: ICognito);
40
- /**
41
- * Generate a random password of a given length
42
- * @param length
43
- * @returns string
44
- * @example
45
- * const password = randomPassword(12);
46
- * console.log(password);
47
- */
48
- randomPassword: (length?: number) => string;
49
- /**
50
- * Invite a user to the Cognito User Pool
51
- * @param opts
52
- */
53
- inviteUser: (opts: ICognitoInviteUser) => Promise<_aws_sdk_client_cognito_identity_provider.AdminCreateUserCommandOutput>;
54
- /**
55
- * Change user password in Cognito User Pool
56
- * @param username - Username of the user
57
- * @param password - New password for the user
58
- * @returns Promise<AdminSetUserPasswordCommandOutput>
59
- * @example
60
- * const cognito = new Cognito();
61
- * const users = await cognito.changePassword("johndoe@example.com", "newPassword");
62
- * console.log(users.Users);
63
- * @see https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html
64
- */
65
- changePassword: (username: string, password: string) => Promise<AdminSetUserPasswordCommandOutput>;
66
- /**
67
- * Disable a user in Cognito User Pool
68
- * @param username - Username of the user
69
- * @returns Promise<AdminDisableUserCommandOutput>
70
- * @example
71
- * const cognito = new Cognito();
72
- * const users = await cognito.disableUser("johndoe@example.com");
73
- * console.log(users.Users);
74
- * @see https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDisableUser.html
75
- */
76
- disableUser: (username: string) => Promise<AdminDisableUserCommandOutput>;
77
- /**
78
- * Enable a user in Cognito User Pool
79
- * @param username - Username of the user
80
- * @returns Promise<AdminEnableUserCommandOutput>
81
- * @example
82
- * const cognito = new Cognito();
83
- * const users = await cognito.enableUser("johndoe@example.com");
84
- * console.log(users.Users);
85
- *
86
- * @see https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminEnableUser.html
87
- */
88
- enableUser: (username: string) => Promise<AdminEnableUserCommandOutput>;
89
- /**
90
- * Delete a user in Cognito User Pool
91
- * @param username - Username of the user
92
- * @returns Promise<AdminDeleteUserCommandOutput>
93
- * @example
94
- * const cognito = new Cognito();
95
- * const users = await cognito.deleteUser("johndoe@example.com");
96
- * console.log(users.Users);
97
- * @see https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDeleteUser.html
98
- */
99
- deleteUser: (username: string) => Promise<AdminDeleteUserCommandOutput>;
100
- /**
101
- * List for users in Cognito User Pool
102
- * @param opts
103
- * @returns Promise<ListUsersCommandOutput>
104
- * @example
105
- * const cognito = new Cognito();
106
- * const users = await cognito.listUsers({ email: "johndoe@example.com" });
107
- * console.log(users.Users);
108
- * @see https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html
109
- */
110
- listUsers: (filter?: string) => Promise<_aws_sdk_client_cognito_identity_provider.ListUsersCommandOutput>;
111
- /**
112
- * Add a user to a group in Cognito User Pool
113
- * @param username - Username of the user
114
- * @param groupName - Name of the group
115
- * @returns Promise<AdminAddUserToGroupCommandOutput>
116
- * @example
117
- * const cognito = new Cognito();
118
- * const users = await cognito.addUserToGroup("johndoe@example.com", "Admin");
119
- * console.log(users.Users);
120
- *
121
- * @see https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminAddUserToGroup.html
122
- */
123
- addUserToGroup: (username: string, groupName: string) => Promise<AdminAddUserToGroupCommandOutput>;
124
- }
125
-
126
- export { Cognito, type ICognito, type ICognitoAttributes, type ICognitoInviteUser };
package/dist/index.mjs DELETED
@@ -1,6 +0,0 @@
1
- import { AdminCreateUserCommand, AdminSetUserPasswordCommand, AdminDisableUserCommand, AdminEnableUserCommand, AdminDeleteUserCommand, ListUsersCommand, AdminAddUserToGroupCommand, CognitoIdentityProviderClient } from '@aws-sdk/client-cognito-identity-provider';
2
- import { generate } from '@juniyadi/random-string';
3
-
4
- var s=class{constructor(e){this.randomPassword=(e=12)=>generate(e,{lowercase:!0,uppercase:!0,numbers:!0});this.inviteUser=async e=>{let r=e.password||this.randomPassword(10),i=e.passwordTemporary||this.randomPassword(12),t={UserPoolId:this.userPoolId,Username:e.email,UserAttributes:[{Name:"email",Value:e.email},{Name:"name",Value:e.name},{Name:"email_verified",Value:"true"}],DesiredDeliveryMediums:["EMAIL"],ForceAliasCreation:!1,MessageAction:e.sendEmail?"RESEND":"SUPPRESS",TemporaryPassword:i};e.phoneNumber&&t.UserAttributes&&t.UserAttributes.push({Name:"phone_number",Value:e.phoneNumber}),e.attributes&&t.UserAttributes&&(t.UserAttributes=t.UserAttributes.concat(e.attributes));let o=new AdminCreateUserCommand(t);try{let n=await this.cognitoIdentityProvider.send(o);return e.autoConfirm&&n?.User?.UserStatus==="FORCE_CHANGE_PASSWORD"&&await this.changePassword(e.email,r),e.group&&await this.addUserToGroup(e.email,e.group),n}catch(n){throw n}};this.changePassword=async(e,r)=>{let i=new AdminSetUserPasswordCommand({UserPoolId:this.userPoolId,Username:e,Password:r,Permanent:!0});return this.cognitoIdentityProvider.send(i)};this.disableUser=async e=>{let r=new AdminDisableUserCommand({UserPoolId:this.userPoolId,Username:e});return this.cognitoIdentityProvider.send(r)};this.enableUser=async e=>{let r=new AdminEnableUserCommand({UserPoolId:this.userPoolId,Username:e});return this.cognitoIdentityProvider.send(r)};this.deleteUser=async e=>{await this.disableUser(e);let r=new AdminDeleteUserCommand({UserPoolId:this.userPoolId,Username:e});return this.cognitoIdentityProvider.send(r)};this.listUsers=async e=>{let r=new ListUsersCommand({UserPoolId:this.userPoolId,Filter:e||void 0});return this.cognitoIdentityProvider.send(r)};this.addUserToGroup=async(e,r)=>{let i=new AdminAddUserToGroupCommand({UserPoolId:this.userPoolId,Username:e,GroupName:r});return this.cognitoIdentityProvider.send(i)};if(this.region=e?.region||process.env.AWS_REGION||"",this.userPoolId=e?.userPoolId||process.env.COGNITO_USER_POOL_ID||"",this.clientId=e?.clientId||process.env.COGNITO_CLIENT_ID||"",!this.region)throw new Error("AWS Region is required");if(!this.userPoolId)throw new Error("Cognito User Pool ID is required");if(!this.clientId)throw new Error("Cognito Client ID is required");this.cognitoIdentityProvider=new CognitoIdentityProviderClient({region:this.region});}};
5
-
6
- export { s as Cognito };