storemw-core-api 1.0.139 → 1.0.140

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 (55) hide show
  1. package/dist/app.js +1 -1
  2. package/dist/app.js.map +1 -1
  3. package/dist/controllers/index.d.ts +1 -2
  4. package/dist/controllers/index.js +5 -4
  5. package/dist/controllers/index.js.map +1 -1
  6. package/dist/controllers/user/userMeController.d.ts +3 -0
  7. package/dist/controllers/user/userMeController.js +52 -361
  8. package/dist/controllers/user/userMeController.js.map +1 -1
  9. package/dist/controllers/utils/unuse/changePasswordUtilController.d.ts +1 -0
  10. package/dist/controllers/utils/unuse/changePasswordUtilController.js +55 -0
  11. package/dist/controllers/utils/unuse/changePasswordUtilController.js.map +1 -0
  12. package/dist/middlewares/route/index.d.ts +1 -1
  13. package/dist/middlewares/route/index.js +4 -2
  14. package/dist/middlewares/route/index.js.map +1 -1
  15. package/dist/middlewares/route/validateUserMe.d.ts +2 -0
  16. package/dist/middlewares/route/validateUserMe.js +9 -1
  17. package/dist/middlewares/route/validateUserMe.js.map +1 -1
  18. package/dist/routes/index.d.ts +0 -1
  19. package/dist/routes/index.js +2 -3
  20. package/dist/routes/index.js.map +1 -1
  21. package/dist/routes/user/userMeRoutes.js +4 -0
  22. package/dist/routes/user/userMeRoutes.js.map +1 -1
  23. package/dist/routes/utils/unuse/changePasswordUtilRoutes.d.ts +1 -0
  24. package/dist/routes/utils/unuse/changePasswordUtilRoutes.js +10 -0
  25. package/dist/routes/utils/unuse/changePasswordUtilRoutes.js.map +1 -0
  26. package/dist/schema/payload/index.d.ts +2 -2
  27. package/dist/schema/payload/index.js +7 -4
  28. package/dist/schema/payload/index.js.map +1 -1
  29. package/dist/schema/payload/user/schemaUserMe.d.ts +31 -0
  30. package/dist/schema/payload/user/schemaUserMe.js +17 -0
  31. package/dist/schema/payload/user/schemaUserMe.js.map +1 -0
  32. package/dist/schema/payload/utils/unuse/schemaChangePasswordUtil.d.ts +53 -0
  33. package/dist/schema/payload/utils/unuse/schemaChangePasswordUtil.js +18 -0
  34. package/dist/schema/payload/utils/unuse/schemaChangePasswordUtil.js.map +1 -0
  35. package/dist/services/auth/AuthService.js +4 -1
  36. package/dist/services/auth/AuthService.js.map +1 -1
  37. package/dist/services/index.d.ts +1 -3
  38. package/dist/services/index.js +3 -3
  39. package/dist/services/index.js.map +1 -1
  40. package/dist/services/user/UserMeService.d.ts +30 -7
  41. package/dist/services/user/UserMeService.js +71 -3
  42. package/dist/services/user/UserMeService.js.map +1 -1
  43. package/dist/services/user/UserService.d.ts +22 -1
  44. package/dist/services/user/UserService.js +21 -22
  45. package/dist/services/user/UserService.js.map +1 -1
  46. package/dist/services/utils/unuse/ChangePasswordUtilService.d.ts +13 -0
  47. package/dist/services/utils/unuse/ChangePasswordUtilService.js +78 -0
  48. package/dist/services/utils/unuse/ChangePasswordUtilService.js.map +1 -0
  49. package/dist/utils/index.d.ts +1 -1
  50. package/dist/utils/index.js +3 -1
  51. package/dist/utils/index.js.map +1 -1
  52. package/dist/utils/passwordUtils.d.ts +3 -0
  53. package/dist/utils/passwordUtils.js +22 -0
  54. package/dist/utils/passwordUtils.js.map +1 -1
  55. package/package.json +1 -1
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.validateFormatMobileNumber = exports.validateFormatEmailAddress = exports.generateFileThumbnailBuffer = exports.verifyPassword = exports.hashPassword = exports.decryptAccessKeySecret = exports.encryptAccessKeySecret = exports.hashAccessKeySecret = exports.generateAccessKeySecret = exports.generateAccessKeyId = exports.verifyAuthToken = exports.generateAuthToken = exports.groupPayloadInjectionFields = exports.buildFullFieldName = exports.generateServiceProps = exports.getDefaultServiceProps = exports.buildCommonStatusSchema = exports.getFormattedZodErrorsIntoString = exports.getFormattedZodErrors = exports.logError = exports.throwError = exports.logger = exports.normalizePublicScopeFromBody = exports.createPublicScopeSchema = exports.validateModelFieldsWithData = exports.convertPayloadByTableSchema = exports.validateMultipleSchemas = exports.validateWithSchema = exports.formatDisplayDateTime = exports.getCurrentDateTimeISO = exports.getCurrentDateTime = exports.dayjs = exports.sendSuccess = exports.sendError = exports.HTTP_STATUS = exports.sharp = exports._ = exports.getCoreConfiguration = void 0;
6
+ exports.validateFormatMobileNumber = exports.validateFormatEmailAddress = exports.generateFileThumbnailBuffer = exports.verifyPassword = exports.hashPassword = exports.validateLoginPasswordFormat = exports.loginPasswordFormatSchema = exports.decryptAccessKeySecret = exports.encryptAccessKeySecret = exports.hashAccessKeySecret = exports.generateAccessKeySecret = exports.generateAccessKeyId = exports.verifyAuthToken = exports.generateAuthToken = exports.groupPayloadInjectionFields = exports.buildFullFieldName = exports.generateServiceProps = exports.getDefaultServiceProps = exports.buildCommonStatusSchema = exports.getFormattedZodErrorsIntoString = exports.getFormattedZodErrors = exports.logError = exports.throwError = exports.logger = exports.normalizePublicScopeFromBody = exports.createPublicScopeSchema = exports.validateModelFieldsWithData = exports.convertPayloadByTableSchema = exports.validateMultipleSchemas = exports.validateWithSchema = exports.formatDisplayDateTime = exports.getCurrentDateTimeISO = exports.getCurrentDateTime = exports.dayjs = exports.sendSuccess = exports.sendError = exports.HTTP_STATUS = exports.sharp = exports._ = exports.getCoreConfiguration = void 0;
7
7
  var coreConfigUtils_1 = require("./coreConfigUtils");
8
8
  Object.defineProperty(exports, "getCoreConfiguration", { enumerable: true, get: function () { return coreConfigUtils_1.getCoreConfiguration; } });
9
9
  var lodash_1 = require("lodash");
@@ -55,6 +55,8 @@ Object.defineProperty(exports, "hashAccessKeySecret", { enumerable: true, get: f
55
55
  Object.defineProperty(exports, "encryptAccessKeySecret", { enumerable: true, get: function () { return accessKeyUtils_1.encryptAccessKeySecret; } });
56
56
  Object.defineProperty(exports, "decryptAccessKeySecret", { enumerable: true, get: function () { return accessKeyUtils_1.decryptAccessKeySecret; } });
57
57
  var passwordUtils_1 = require("./passwordUtils");
58
+ Object.defineProperty(exports, "loginPasswordFormatSchema", { enumerable: true, get: function () { return passwordUtils_1.loginPasswordFormatSchema; } });
59
+ Object.defineProperty(exports, "validateLoginPasswordFormat", { enumerable: true, get: function () { return passwordUtils_1.validateLoginPasswordFormat; } });
58
60
  Object.defineProperty(exports, "hashPassword", { enumerable: true, get: function () { return passwordUtils_1.hashPassword; } });
59
61
  Object.defineProperty(exports, "verifyPassword", { enumerable: true, get: function () { return passwordUtils_1.verifyPassword; } });
60
62
  var fileThumbnail_1 = require("./fileThumbnail");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;AAAA,qDAAyD;AAAhD,uHAAA,oBAAoB,OAAA;AAC7B,iCAAsC;AAA7B,4GAAA,OAAO,OAAK;AACrB,+BAAyC;AAAhC,+GAAA,OAAO,OAAS;AACzB,iDAAsE;AAA7D,4GAAA,WAAW,OAAA;AAAE,0GAAA,SAAS,OAAA;AAAE,4GAAA,WAAW,OAAA;AAC5C,yCAAsG;AAA7F,kGAAA,KAAK,OAAA;AAAE,+GAAA,kBAAkB,OAAA;AAAE,kHAAA,qBAAqB,OAAA;AAAE,kHAAA,qBAAqB,OAAA;AAChF,6CAA6L;AAApL,iHAAA,kBAAkB,OAAA;AAAE,sHAAA,uBAAuB,OAAA;AAAE,0HAAA,2BAA2B,OAAA;AAAE,0HAAA,2BAA2B,OAAA;AAAE,sHAAA,uBAAuB,OAAA;AAAE,2HAAA,4BAA4B,OAAA;AACrK,uCAA+C;AAAtC,mHAAA,OAAO,OAAU;AAC1B,mDAAwD;AAA/C,4GAAA,UAAU,OAAA;AAAE,0GAAA,QAAQ,OAAA;AAC7B,2CAA2C;AAC3C,wFAAwF;AACxF,mEAAmE;AACnE,mDAAmD;AACnD,uCAA4G;AAAnG,iHAAA,qBAAqB,OAAA;AAAE,2HAAA,+BAA+B,OAAA;AAAE,mHAAA,uBAAuB,OAAA;AAExF,+CAA6E;AAApE,sHAAA,sBAAsB,OAAA;AAAE,oHAAA,oBAAoB,OAAA;AACrD,6DAAuF;AAA9E,yHAAA,kBAAkB,OAAA;AAAE,kIAAA,2BAA2B,OAAA;AACxD,yCAAgE;AAAvD,8GAAA,iBAAiB,OAAA;AAAE,4GAAA,eAAe,OAAA;AAC3C,mDAAoJ;AAA3I,qHAAA,mBAAmB,OAAA;AAAE,yHAAA,uBAAuB,OAAA;AAAE,qHAAA,mBAAmB,OAAA;AAAE,wHAAA,sBAAsB,OAAA;AAAE,wHAAA,sBAAsB,OAAA;AAC1H,iDAA8D;AAArD,6GAAA,YAAY,OAAA;AAAE,+GAAA,cAAc,OAAA;AACrC,iDAA6D;AAApD,4HAAA,2BAA2B,OAAA;AACpC,6DAA8F;AAArF,iIAAA,0BAA0B,OAAA;AAAE,iIAAA,0BAA0B,OAAA","sourcesContent":["export { getCoreConfiguration } from \"./coreConfigUtils\";\nexport { default as _ } from \"lodash\";\nexport { default as sharp } from \"sharp\";\nexport { HTTP_STATUS, sendError, sendSuccess } from \"./responseUtils\";\nexport { dayjs, getCurrentDateTime, getCurrentDateTimeISO, formatDisplayDateTime } from \"./dateUtils\";\nexport { validateWithSchema, validateMultipleSchemas, convertPayloadByTableSchema, validateModelFieldsWithData, createPublicScopeSchema, normalizePublicScopeFromBody } from \"./schemaUtils\";\nexport { default as logger } from \"./logUtils\";\nexport { throwError, logError } from \"./exceptionUtils\";\n// export { getSwmAuth } from \"./smwUtils\";\n// export { getRequestHeaderLocCode, checkRequestContentIsEmpty } from \"./requestUtils\";\n// export { storeJwtInMemory, getJwtFromMemory } from \"./jwtUtils\";\n// export { resizeImageBuffer } from \"./shapeUtils\"\nexport { getFormattedZodErrors, getFormattedZodErrorsIntoString, buildCommonStatusSchema } from \"./zodUtils\"\nexport type { DefaultServiceProps } from \"./serviceUtils\"\nexport { getDefaultServiceProps, generateServiceProps } from \"./serviceUtils\"\nexport { buildFullFieldName, groupPayloadInjectionFields } from \"./injectionFieldUtils\"\nexport { generateAuthToken, verifyAuthToken } from \"./authUtils\"\nexport { generateAccessKeyId, generateAccessKeySecret, hashAccessKeySecret, encryptAccessKeySecret, decryptAccessKeySecret } from \"./accessKeyUtils\"\nexport { hashPassword, verifyPassword } from \"./passwordUtils\"\nexport { generateFileThumbnailBuffer } from \"./fileThumbnail\"\nexport { validateFormatEmailAddress, validateFormatMobileNumber } from \"./validateFormatUtils\""]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;AAAA,qDAAyD;AAAhD,uHAAA,oBAAoB,OAAA;AAC7B,iCAAsC;AAA7B,4GAAA,OAAO,OAAK;AACrB,+BAAyC;AAAhC,+GAAA,OAAO,OAAS;AACzB,iDAAsE;AAA7D,4GAAA,WAAW,OAAA;AAAE,0GAAA,SAAS,OAAA;AAAE,4GAAA,WAAW,OAAA;AAC5C,yCAAsG;AAA7F,kGAAA,KAAK,OAAA;AAAE,+GAAA,kBAAkB,OAAA;AAAE,kHAAA,qBAAqB,OAAA;AAAE,kHAAA,qBAAqB,OAAA;AAChF,6CAA6L;AAApL,iHAAA,kBAAkB,OAAA;AAAE,sHAAA,uBAAuB,OAAA;AAAE,0HAAA,2BAA2B,OAAA;AAAE,0HAAA,2BAA2B,OAAA;AAAE,sHAAA,uBAAuB,OAAA;AAAE,2HAAA,4BAA4B,OAAA;AACrK,uCAA+C;AAAtC,mHAAA,OAAO,OAAU;AAC1B,mDAAwD;AAA/C,4GAAA,UAAU,OAAA;AAAE,0GAAA,QAAQ,OAAA;AAC7B,2CAA2C;AAC3C,wFAAwF;AACxF,mEAAmE;AACnE,mDAAmD;AACnD,uCAA4G;AAAnG,iHAAA,qBAAqB,OAAA;AAAE,2HAAA,+BAA+B,OAAA;AAAE,mHAAA,uBAAuB,OAAA;AAExF,+CAA6E;AAApE,sHAAA,sBAAsB,OAAA;AAAE,oHAAA,oBAAoB,OAAA;AACrD,6DAAuF;AAA9E,yHAAA,kBAAkB,OAAA;AAAE,kIAAA,2BAA2B,OAAA;AACxD,yCAAgE;AAAvD,8GAAA,iBAAiB,OAAA;AAAE,4GAAA,eAAe,OAAA;AAC3C,mDAAoJ;AAA3I,qHAAA,mBAAmB,OAAA;AAAE,yHAAA,uBAAuB,OAAA;AAAE,qHAAA,mBAAmB,OAAA;AAAE,wHAAA,sBAAsB,OAAA;AAAE,wHAAA,sBAAsB,OAAA;AAC1H,iDAAsH;AAA7G,0HAAA,yBAAyB,OAAA;AAAE,4HAAA,2BAA2B,OAAA;AAAE,6GAAA,YAAY,OAAA;AAAE,+GAAA,cAAc,OAAA;AAC7F,iDAA6D;AAApD,4HAAA,2BAA2B,OAAA;AACpC,6DAA8F;AAArF,iIAAA,0BAA0B,OAAA;AAAE,iIAAA,0BAA0B,OAAA","sourcesContent":["export { getCoreConfiguration } from \"./coreConfigUtils\";\nexport { default as _ } from \"lodash\";\nexport { default as sharp } from \"sharp\";\nexport { HTTP_STATUS, sendError, sendSuccess } from \"./responseUtils\";\nexport { dayjs, getCurrentDateTime, getCurrentDateTimeISO, formatDisplayDateTime } from \"./dateUtils\";\nexport { validateWithSchema, validateMultipleSchemas, convertPayloadByTableSchema, validateModelFieldsWithData, createPublicScopeSchema, normalizePublicScopeFromBody } from \"./schemaUtils\";\nexport { default as logger } from \"./logUtils\";\nexport { throwError, logError } from \"./exceptionUtils\";\n// export { getSwmAuth } from \"./smwUtils\";\n// export { getRequestHeaderLocCode, checkRequestContentIsEmpty } from \"./requestUtils\";\n// export { storeJwtInMemory, getJwtFromMemory } from \"./jwtUtils\";\n// export { resizeImageBuffer } from \"./shapeUtils\"\nexport { getFormattedZodErrors, getFormattedZodErrorsIntoString, buildCommonStatusSchema } from \"./zodUtils\"\nexport type { DefaultServiceProps } from \"./serviceUtils\"\nexport { getDefaultServiceProps, generateServiceProps } from \"./serviceUtils\"\nexport { buildFullFieldName, groupPayloadInjectionFields } from \"./injectionFieldUtils\"\nexport { generateAuthToken, verifyAuthToken } from \"./authUtils\"\nexport { generateAccessKeyId, generateAccessKeySecret, hashAccessKeySecret, encryptAccessKeySecret, decryptAccessKeySecret } from \"./accessKeyUtils\"\nexport { loginPasswordFormatSchema, validateLoginPasswordFormat, hashPassword, verifyPassword } from \"./passwordUtils\"\nexport { generateFileThumbnailBuffer } from \"./fileThumbnail\"\nexport { validateFormatEmailAddress, validateFormatMobileNumber } from \"./validateFormatUtils\""]}
@@ -1,2 +1,5 @@
1
+ import z from "zod";
2
+ export declare const loginPasswordFormatSchema: z.ZodString;
3
+ export declare const validateLoginPasswordFormat: (loginPassword: string) => string;
1
4
  export declare function hashPassword(password: string): Promise<string>;
2
5
  export declare function verifyPassword(password: string, hash: string): Promise<boolean>;
@@ -3,9 +3,31 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.validateLoginPasswordFormat = exports.loginPasswordFormatSchema = void 0;
6
7
  exports.hashPassword = hashPassword;
7
8
  exports.verifyPassword = verifyPassword;
8
9
  const bcrypt_1 = __importDefault(require("bcrypt"));
10
+ const zod_1 = __importDefault(require("zod"));
11
+ // Zod schema for password format
12
+ exports.loginPasswordFormatSchema = zod_1.default
13
+ .string()
14
+ .min(8, { message: "Password must be at least 8 characters" })
15
+ .max(64, { message: "Password must be at most 64 characters" })
16
+ .regex(/[a-zA-Z]/, "Password must include at least one letter")
17
+ .regex(/[0-9!@#$%^&*()_\-+=]/, "Password must include at least one number or special character");
18
+ const validateLoginPasswordFormat = (loginPassword) => {
19
+ try {
20
+ return exports.loginPasswordFormatSchema.parse(loginPassword); // throws if invalid
21
+ }
22
+ catch (err) {
23
+ if (err instanceof zod_1.default.ZodError) {
24
+ throw new Error(`Invalid login password criteria: "${loginPassword}". ` +
25
+ err.errors.map((e) => e.message).join("; "));
26
+ }
27
+ throw err;
28
+ }
29
+ };
30
+ exports.validateLoginPasswordFormat = validateLoginPasswordFormat;
9
31
  // Hash a password
10
32
  async function hashPassword(password) {
11
33
  const saltRounds = 12; // Adjust for security vs performance
@@ -1 +1 @@
1
- {"version":3,"file":"passwordUtils.js","sourceRoot":"","sources":["../../src/utils/passwordUtils.ts"],"names":[],"mappings":";;;;;AAGA,oCAIC;AAGD,wCAMC;AAhBD,oDAA4B;AAE5B,kBAAkB;AACX,KAAK,UAAU,YAAY,CAAC,QAAgB;IAC/C,MAAM,UAAU,GAAG,EAAE,CAAC,CAAC,qCAAqC;IAC5D,MAAM,IAAI,GAAG,MAAM,gBAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,kBAAkB;AACX,KAAK,UAAU,cAAc,CAAC,QAAgB,EAAE,IAAY;IAC/D,IAAI,CAAC;QACD,OAAO,MAAM,gBAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,KAAK,CAAC,8BAA8B,QAAQ,EAAE,CAAC,CAAA;IACzD,CAAC;AACL,CAAC","sourcesContent":["import bcrypt from \"bcrypt\";\n\n// Hash a password\nexport async function hashPassword(password: string): Promise<string> {\n const saltRounds = 12; // Adjust for security vs performance\n const hash = await bcrypt.hash(password, saltRounds);\n return hash;\n}\n\n// Verify password\nexport async function verifyPassword(password: string, hash: string): Promise<boolean> {\n try {\n return await bcrypt.compare(password, hash);\n } catch (error) {\n throw Error(`Failed to verify password: ${password}`)\n }\n}"]}
1
+ {"version":3,"file":"passwordUtils.js","sourceRoot":"","sources":["../../src/utils/passwordUtils.ts"],"names":[],"mappings":";;;;;;AA2BA,oCAIC;AAGD,wCAMC;AAxCD,oDAA4B;AAE5B,8CAAoB;AAEpB,iCAAiC;AACpB,QAAA,yBAAyB,GAAG,aAAC;KACrC,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,wCAAwC,EAAE,CAAC;KAC7D,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,wCAAwC,EAAE,CAAC;KAC9D,KAAK,CAAC,UAAU,EAAE,2CAA2C,CAAC;KAC9D,KAAK,CAAC,sBAAsB,EAAE,gEAAgE,CAAC,CAAC;AAE9F,MAAM,2BAA2B,GAAG,CAAC,aAAqB,EAAE,EAAE;IACjE,IAAI,CAAC;QACD,OAAO,iCAAyB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB;IAC/E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,IAAI,GAAG,YAAY,aAAC,CAAC,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACX,qCAAqC,aAAa,KAAK;gBACvD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC9C,CAAC;QACN,CAAC;QACD,MAAM,GAAG,CAAC;IACd,CAAC;AACL,CAAC,CAAC;AAZW,QAAA,2BAA2B,+BAYtC;AAEF,kBAAkB;AACX,KAAK,UAAU,YAAY,CAAC,QAAgB;IAC/C,MAAM,UAAU,GAAG,EAAE,CAAC,CAAC,qCAAqC;IAC5D,MAAM,IAAI,GAAG,MAAM,gBAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,kBAAkB;AACX,KAAK,UAAU,cAAc,CAAC,QAAgB,EAAE,IAAY;IAC/D,IAAI,CAAC;QACD,OAAO,MAAM,gBAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,KAAK,CAAC,8BAA8B,QAAQ,EAAE,CAAC,CAAA;IACzD,CAAC;AACL,CAAC","sourcesContent":["import bcrypt from \"bcrypt\";\n\nimport z from \"zod\";\n\n// Zod schema for password format\nexport const loginPasswordFormatSchema = z\n .string()\n .min(8, { message: \"Password must be at least 8 characters\" })\n .max(64, { message: \"Password must be at most 64 characters\" })\n .regex(/[a-zA-Z]/, \"Password must include at least one letter\")\n .regex(/[0-9!@#$%^&*()_\\-+=]/, \"Password must include at least one number or special character\");\n\nexport const validateLoginPasswordFormat = (loginPassword: string) => {\n try {\n return loginPasswordFormatSchema.parse(loginPassword); // throws if invalid\n } catch (err) {\n if (err instanceof z.ZodError) {\n throw new Error(\n `Invalid login password criteria: \"${loginPassword}\". ` +\n err.errors.map((e) => e.message).join(\"; \")\n );\n }\n throw err;\n }\n};\n\n// Hash a password\nexport async function hashPassword(password: string): Promise<string> {\n const saltRounds = 12; // Adjust for security vs performance\n const hash = await bcrypt.hash(password, saltRounds);\n return hash;\n}\n\n// Verify password\nexport async function verifyPassword(password: string, hash: string): Promise<boolean> {\n try {\n return await bcrypt.compare(password, hash);\n } catch (error) {\n throw Error(`Failed to verify password: ${password}`)\n }\n}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "storemw-core-api",
3
- "version": "1.0.139",
3
+ "version": "1.0.140",
4
4
  "description": "STOREMW Core API",
5
5
  "main": "dist/app.js",
6
6
  "types": "dist/app.d.ts",