rut.ts 1.4.0 → 2.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/README.md CHANGED
@@ -10,6 +10,7 @@
10
10
  - **Formatting**: Convert RUTs into a standardized format, with or without dots.
11
11
  - **Decomposition**: Split a RUT into its body and verifier digit.
12
12
  - **Generation**: Generate valid random RUT numbers.
13
+ - **Calculate Verifier**: Calculate the verifier digit for a given RUT body.
13
14
 
14
15
  ## Installation
15
16
 
@@ -2,14 +2,66 @@ type DecomposedRut = {
2
2
  body: string;
3
3
  verifier: string;
4
4
  };
5
+ type FormatOptions = {
6
+ incremental?: boolean;
7
+ dots?: boolean;
8
+ };
5
9
  export declare const getInvalidRutError: (rut: string) => string;
6
- export declare const getInvalidRutBodyError: (rutBody: string) => string;
10
+ /**
11
+ * Cleans the input string by removing leading zeros, non-numeric characters, and ensures the RUT is uppercased. Throws an error if the cleaned RUT is not within the valid length range or if 'K' is not in the correct position.
12
+ * @param {string} rut - The RUT string to clean.
13
+ * @returns {string} The cleaned RUT string.
14
+ * @throws {Error} If the RUT is not valid.
15
+ */
7
16
  declare const clean: (rut: string) => string;
17
+ /**
18
+ * Extracts the body (part before the verifier digit) from a given RUT string.
19
+ * This function first cleans the input RUT string to ensure it is in a valid format before slicing.
20
+ * @param {string} rut - The RUT string from which to extract the body.
21
+ * @returns {string} The body of the RUT.
22
+ * @throws {Error} If the cleaned RUT is not valid.
23
+ */
8
24
  declare const getBody: (rut: string) => string;
25
+ /**
26
+ * Extracts the verifier digit (the last character) from a given RUT string.
27
+ * This function cleans the input RUT string to ensure it is in a valid format before extracting the verifier digit.
28
+ * @param {string} rut - The RUT string from which to extract the verifier digit.
29
+ * @returns {string} The verifier digit of the RUT.
30
+ * @throws {Error} If the cleaned RUT is not valid.
31
+ */
9
32
  declare const getVerifier: (rut: string) => string;
33
+ /**
34
+ * Decomposes the given RUT into its body and verifier parts.
35
+ * @param {string} rut - The RUT string to decompose.
36
+ * @returns {DecomposedRut} An object containing the body and verifier of the RUT.
37
+ */
10
38
  declare const decompose: (rut: string) => DecomposedRut;
39
+ /**
40
+ * Calculates the verifier digit for a given RUT body.
41
+ * @param {string} rutBody - The body of the RUT for which to calculate the verifier.
42
+ * @returns {string} The calculated verifier digit.
43
+ * @throws {Error} If the RUT body, after being cleaned, is empty.
44
+ */
11
45
  declare const calculateVerifier: (rutBody: string) => string;
46
+ /**
47
+ * Validates a given RUT string, optionally with strict mode to also check for suspicious patterns.
48
+ * @param {string} rut - The RUT string to validate.
49
+ * @param {boolean} [strict=false] - Whether to use strict mode for validation.
50
+ * @returns {boolean} True if the RUT is valid, false otherwise.
51
+ */
12
52
  declare const validate: (rut: string, strict?: boolean) => boolean;
13
- declare const format: (rut: string, dots?: boolean) => string;
53
+ /**
54
+ * Formats a given RUT string, with options for incremental formatting and dot separators.
55
+ * @param {string} rut - The RUT string to format.
56
+ * @param options {FormatOptions} - The formatting options.
57
+ * @param {boolean} options.incremental - Whether to format the RUT incrementally.
58
+ * @param {boolean} options.dots - Whether to include dot separators in the formatted RUT.
59
+ * @returns {string} The formatted RUT string.
60
+ */
61
+ declare const format: (rut: string, options?: FormatOptions) => string;
62
+ /**
63
+ * Generates a random valid RUT string.
64
+ * @returns {string} A randomly generated, valid RUT string.
65
+ */
14
66
  declare const generate: () => string;
15
67
  export { validate, clean, format, calculateVerifier, getBody, getVerifier, decompose, generate };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.generate=exports.decompose=exports.getVerifier=exports.getBody=exports.calculateVerifier=exports.format=exports.clean=exports.validate=exports.getInvalidRutBodyError=exports.getInvalidRutError=void 0;const getInvalidRutError=e=>`String "${e}" is not valid as a RUT input`;exports.getInvalidRutError=getInvalidRutError;const getInvalidRutBodyError=e=>`String "${e}" is not valid as a RUT Body input`;exports.getInvalidRutBodyError=getInvalidRutBodyError;const MIN_RUT_LENGTH=8,MAX_RUT_LENGTH=9,patterns={cleaning:/^0+|[^0-9kK]+/g,rutLike:/^0*(\d{1,3}(\.?\d{3})*)-?([\dkK])$/,suspicious:/^(\d)\1?\.?(\1{3})\.?(\1{3})-?(\d|k)?$/},clean=e=>{const t=e.replace(patterns.cleaning,"").toUpperCase();if(t.length<8||t.length>9)throw new Error((0,exports.getInvalidRutError)(e));if(t.includes("K")&&t.indexOf("K")!==t.length-1)throw new Error((0,exports.getInvalidRutError)(e));return t};exports.clean=clean;const getBody=e=>clean(e).slice(0,-1);exports.getBody=getBody;const getVerifier=e=>clean(e).slice(-1);exports.getVerifier=getVerifier;const decompose=e=>({body:getBody(e),verifier:getVerifier(e)});exports.decompose=decompose;const isRutLike=e=>patterns.rutLike.test(e),isSuspicious=e=>patterns.suspicious.test(e),calculateVerifier=e=>{const t=clean(e);if(0===t.length)throw new Error((0,exports.getInvalidRutError)(e));const r=11-t.split("").reverse().reduce(((e,t,r)=>e+Number(t)*(r%6+2)),0)%11;return 11===r?"0":10===r?"K":r.toString()};exports.calculateVerifier=calculateVerifier;const validate=(e,t)=>{if(!isRutLike(e))return!1;if(t&&isSuspicious(e))return!1;const{body:r,verifier:o}=decompose(e);return calculateVerifier(r)===o};exports.validate=validate;const format=(e,t=!0)=>{if(0===e.length)return"";const r=clean(e);if(t){let e=r.slice(-4,-1)+"-"+r.substring(r.length-1);for(let t=4;t<r.length;t+=3)e=r.slice(-3-t,-t)+"."+e;return e}return r.slice(0,-1)+"-"+r.substring(r.length-1)};exports.format=format;const generate=()=>{const e=Math.floor(10000003+9e7*Math.random()).toString(),t=calculateVerifier(e);return format(e+t)};exports.generate=generate;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.generate=exports.decompose=exports.getVerifier=exports.getBody=exports.calculateVerifier=exports.format=exports.clean=exports.validate=exports.getInvalidRutError=void 0;const getInvalidRutError=e=>`String "${e}" is not valid as a RUT input`;exports.getInvalidRutError=getInvalidRutError;const MIN_RUT_LENGTH=8,MAX_RUT_LENGTH=9,patterns={cleaning:/^0+|[^0-9kK]+/g,rutLike:/^0*(\d{1,3}(\.?\d{3})*)-?([\dkK])$/,suspicious:/^(\d)\1?\.?(\1{3})\.?(\1{3})-?(\d|k)?$/},clean=e=>{const t=e.replace(patterns.cleaning,"").toUpperCase();if(t.length<8||t.length>9)throw new Error((0,exports.getInvalidRutError)(e));if(t.includes("K")&&t.indexOf("K")!==t.length-1)throw new Error((0,exports.getInvalidRutError)(e));return t};exports.clean=clean;const getBody=e=>clean(e).slice(0,-1);exports.getBody=getBody;const getVerifier=e=>clean(e).slice(-1);exports.getVerifier=getVerifier;const decompose=e=>({body:getBody(e),verifier:getVerifier(e)});exports.decompose=decompose;const isRutLike=e=>patterns.rutLike.test(e),isSuspicious=e=>patterns.suspicious.test(e),calculateVerifier=e=>{const t=clean(e);if(0===t.length)throw new Error((0,exports.getInvalidRutError)(e));const r=11-t.split("").reverse().reduce(((e,t,r)=>e+Number(t)*(r%6+2)),0)%11;return 11===r?"0":10===r?"K":r.toString()};exports.calculateVerifier=calculateVerifier;const validate=(e,t)=>{if(!isRutLike(e))return!1;if(t&&isSuspicious(e))return!1;const{body:r,verifier:o}=decompose(e);return calculateVerifier(r)===o};exports.validate=validate;const format=(e,t)=>{var r,o;const i=null!==(r=null==t?void 0:t.incremental)&&void 0!==r&&r,n=null===(o=null==t?void 0:t.dots)||void 0===o||o;if(0===e.length)return"";if(e.length<=6&&!n)return e;const s=clean(e);if(i){let e=s.slice(-1);s.length>1&&(e=s.slice(-4,-1)+"-"+e);for(let t=4;t<s.length;t+=3){const r=s.length-3-t<0?0:s.length-3-t;e=n?s.slice(r,s.length-t)+"."+e:s.slice(r,s.length-t)+e}return e}if(n){let e=s.slice(-4,-1)+"-"+s.substring(s.length-1);for(let t=4;t<s.length;t+=3)e=s.slice(-3-t,-t)+"."+e;return e}return s.slice(0,-1)+"-"+s.substring(s.length-1)};exports.format=format;const generate=()=>{const e=Math.floor(10000003+9e7*Math.random()).toString(),t=calculateVerifier(e);return format(e+t)};exports.generate=generate;
@@ -2,14 +2,66 @@ type DecomposedRut = {
2
2
  body: string;
3
3
  verifier: string;
4
4
  };
5
+ type FormatOptions = {
6
+ incremental?: boolean;
7
+ dots?: boolean;
8
+ };
5
9
  export declare const getInvalidRutError: (rut: string) => string;
6
- export declare const getInvalidRutBodyError: (rutBody: string) => string;
10
+ /**
11
+ * Cleans the input string by removing leading zeros, non-numeric characters, and ensures the RUT is uppercased. Throws an error if the cleaned RUT is not within the valid length range or if 'K' is not in the correct position.
12
+ * @param {string} rut - The RUT string to clean.
13
+ * @returns {string} The cleaned RUT string.
14
+ * @throws {Error} If the RUT is not valid.
15
+ */
7
16
  declare const clean: (rut: string) => string;
17
+ /**
18
+ * Extracts the body (part before the verifier digit) from a given RUT string.
19
+ * This function first cleans the input RUT string to ensure it is in a valid format before slicing.
20
+ * @param {string} rut - The RUT string from which to extract the body.
21
+ * @returns {string} The body of the RUT.
22
+ * @throws {Error} If the cleaned RUT is not valid.
23
+ */
8
24
  declare const getBody: (rut: string) => string;
25
+ /**
26
+ * Extracts the verifier digit (the last character) from a given RUT string.
27
+ * This function cleans the input RUT string to ensure it is in a valid format before extracting the verifier digit.
28
+ * @param {string} rut - The RUT string from which to extract the verifier digit.
29
+ * @returns {string} The verifier digit of the RUT.
30
+ * @throws {Error} If the cleaned RUT is not valid.
31
+ */
9
32
  declare const getVerifier: (rut: string) => string;
33
+ /**
34
+ * Decomposes the given RUT into its body and verifier parts.
35
+ * @param {string} rut - The RUT string to decompose.
36
+ * @returns {DecomposedRut} An object containing the body and verifier of the RUT.
37
+ */
10
38
  declare const decompose: (rut: string) => DecomposedRut;
39
+ /**
40
+ * Calculates the verifier digit for a given RUT body.
41
+ * @param {string} rutBody - The body of the RUT for which to calculate the verifier.
42
+ * @returns {string} The calculated verifier digit.
43
+ * @throws {Error} If the RUT body, after being cleaned, is empty.
44
+ */
11
45
  declare const calculateVerifier: (rutBody: string) => string;
46
+ /**
47
+ * Validates a given RUT string, optionally with strict mode to also check for suspicious patterns.
48
+ * @param {string} rut - The RUT string to validate.
49
+ * @param {boolean} [strict=false] - Whether to use strict mode for validation.
50
+ * @returns {boolean} True if the RUT is valid, false otherwise.
51
+ */
12
52
  declare const validate: (rut: string, strict?: boolean) => boolean;
13
- declare const format: (rut: string, dots?: boolean) => string;
53
+ /**
54
+ * Formats a given RUT string, with options for incremental formatting and dot separators.
55
+ * @param {string} rut - The RUT string to format.
56
+ * @param options {FormatOptions} - The formatting options.
57
+ * @param {boolean} options.incremental - Whether to format the RUT incrementally.
58
+ * @param {boolean} options.dots - Whether to include dot separators in the formatted RUT.
59
+ * @returns {string} The formatted RUT string.
60
+ */
61
+ declare const format: (rut: string, options?: FormatOptions) => string;
62
+ /**
63
+ * Generates a random valid RUT string.
64
+ * @returns {string} A randomly generated, valid RUT string.
65
+ */
14
66
  declare const generate: () => string;
15
67
  export { validate, clean, format, calculateVerifier, getBody, getVerifier, decompose, generate };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,WAAW,GAAG,+BAA+B,CAAA;AACxG,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,OAAe,EAAU,EAAE,CAChE,WAAW,OAAO,oCAAoC,CAAA;AACxD,MAAM,cAAc,GAAG,CAAC,CAAA;AACxB,MAAM,cAAc,GAAG,CAAC,CAAA;AAExB,MAAM,QAAQ,GAAuB;IACnC,QAAQ,EAAE,gBAAgB;IAC1B,OAAO,EAAE,oCAAoC;IAC7C,UAAU,EAAE,wCAAwC;CACrD,CAAA;AAED,MAAM,KAAK,GAAG,CAAC,GAAW,EAAU,EAAE;IACpC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;IACjE,IAAI,QAAQ,CAAC,MAAM,GAAG,cAAc,IAAI,QAAQ,CAAC,MAAM,GAAG,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAA;IAClH,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAA;IACrH,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAED,MAAM,OAAO,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AAChE,MAAM,WAAW,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACjE,MAAM,SAAS,GAAG,CAAC,GAAW,EAAiB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AAEtG,MAAM,SAAS,GAAG,CAAC,GAAW,EAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAEtE,MAAM,YAAY,GAAG,CAAC,GAAW,EAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAE5E,MAAM,iBAAiB,GAAG,CAAC,OAAe,EAAU,EAAE;IACpD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;IACjC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAA;IAEzE,MAAM,GAAG,GAAG,UAAU;SACnB,KAAK,CAAC,EAAE,CAAC;SACT,OAAO,EAAE;SACT,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAE5E,MAAM,UAAU,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAA;IAClC,OAAO,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAA;AAClF,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,MAAgB,EAAW,EAAE;IAC1D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IACjC,IAAI,MAAM,IAAI,YAAY,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IAE7C,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;IACzC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;IAElD,OAAO,kBAAkB,KAAK,QAAQ,CAAA;AACxC,CAAC,CAAA;AAED,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,OAAgB,IAAI,EAAU,EAAE;IAC3D,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;IAC3B,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACnF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAA;QACpD,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AAC9E,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,GAAW,EAAE;IAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAA;IACvE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;IACxC,OAAO,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAA;AAChC,CAAC,CAAA;AAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export const getInvalidRutError=e=>`String "${e}" is not valid as a RUT input`;export const getInvalidRutBodyError=e=>`String "${e}" is not valid as a RUT Body input`;const MIN_RUT_LENGTH=8,MAX_RUT_LENGTH=9,patterns={cleaning:/^0+|[^0-9kK]+/g,rutLike:/^0*(\d{1,3}(\.?\d{3})*)-?([\dkK])$/,suspicious:/^(\d)\1?\.?(\1{3})\.?(\1{3})-?(\d|k)?$/},clean=e=>{const t=e.replace(patterns.cleaning,"").toUpperCase();if(t.length<8||t.length>9)throw new Error(getInvalidRutError(e));if(t.includes("K")&&t.indexOf("K")!==t.length-1)throw new Error(getInvalidRutError(e));return t},getBody=e=>clean(e).slice(0,-1),getVerifier=e=>clean(e).slice(-1),decompose=e=>({body:getBody(e),verifier:getVerifier(e)}),isRutLike=e=>patterns.rutLike.test(e),isSuspicious=e=>patterns.suspicious.test(e),calculateVerifier=e=>{const t=clean(e);if(0===t.length)throw new Error(getInvalidRutError(e));const r=11-t.split("").reverse().reduce(((e,t,r)=>e+Number(t)*(r%6+2)),0)%11;return 11===r?"0":10===r?"K":r.toString()},validate=(e,t)=>{if(!isRutLike(e))return!1;if(t&&isSuspicious(e))return!1;const{body:r,verifier:i}=decompose(e);return calculateVerifier(r)===i},format=(e,t=!0)=>{if(0===e.length)return"";const r=clean(e);if(t){let e=r.slice(-4,-1)+"-"+r.substring(r.length-1);for(let t=4;t<r.length;t+=3)e=r.slice(-3-t,-t)+"."+e;return e}return r.slice(0,-1)+"-"+r.substring(r.length-1)},generate=()=>{const e=Math.floor(10000003+9e7*Math.random()).toString(),t=calculateVerifier(e);return format(e+t)};export{validate,clean,format,calculateVerifier,getBody,getVerifier,decompose,generate};
1
+ export const getInvalidRutError=e=>`String "${e}" is not valid as a RUT input`;const MIN_RUT_LENGTH=8,MAX_RUT_LENGTH=9,patterns={cleaning:/^0+|[^0-9kK]+/g,rutLike:/^0*(\d{1,3}(\.?\d{3})*)-?([\dkK])$/,suspicious:/^(\d)\1?\.?(\1{3})\.?(\1{3})-?(\d|k)?$/},clean=e=>{const t=e.replace(patterns.cleaning,"").toUpperCase();if(t.length<8||t.length>9)throw new Error(getInvalidRutError(e));if(t.includes("K")&&t.indexOf("K")!==t.length-1)throw new Error(getInvalidRutError(e));return t},getBody=e=>clean(e).slice(0,-1),getVerifier=e=>clean(e).slice(-1),decompose=e=>({body:getBody(e),verifier:getVerifier(e)}),isRutLike=e=>patterns.rutLike.test(e),isSuspicious=e=>patterns.suspicious.test(e),calculateVerifier=e=>{const t=clean(e);if(0===t.length)throw new Error(getInvalidRutError(e));const r=11-t.split("").reverse().reduce(((e,t,r)=>e+Number(t)*(r%6+2)),0)%11;return 11===r?"0":10===r?"K":r.toString()},validate=(e,t)=>{if(!isRutLike(e))return!1;if(t&&isSuspicious(e))return!1;const{body:r,verifier:i}=decompose(e);return calculateVerifier(r)===i},format=(e,t)=>{var r,i;const n=null!==(r=null==t?void 0:t.incremental)&&void 0!==r&&r,l=null===(i=null==t?void 0:t.dots)||void 0===i||i;if(0===e.length)return"";if(e.length<=6&&!l)return e;const o=clean(e);if(n){let e=o.slice(-1);o.length>1&&(e=o.slice(-4,-1)+"-"+e);for(let t=4;t<o.length;t+=3){const r=o.length-3-t<0?0:o.length-3-t;e=l?o.slice(r,o.length-t)+"."+e:o.slice(r,o.length-t)+e}return e}if(l){let e=o.slice(-4,-1)+"-"+o.substring(o.length-1);for(let t=4;t<o.length;t+=3)e=o.slice(-3-t,-t)+"."+e;return e}return o.slice(0,-1)+"-"+o.substring(o.length-1)},generate=()=>{const e=Math.floor(10000003+9e7*Math.random()).toString(),t=calculateVerifier(e);return format(e+t)};export{validate,clean,format,calculateVerifier,getBody,getVerifier,decompose,generate};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rut.ts",
3
- "version": "1.4.0",
3
+ "version": "2.1.0",
4
4
  "description": "Handle chilean RUT values with ease.",
5
5
  "author": "hansfpc",
6
6
  "main": "./dist/cjs/index.min.js",