ayiin 2.0.32 → 2.0.33

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/bin/cli.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/bin/cli.js ADDED
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ // CLI entry point
5
+ console.log("Welcome to ayiin CLI!");
6
+ const args = process.argv.slice(2);
7
+ if (args.length === 0) {
8
+ console.log("Usage: ayiin <command>");
9
+ process.exit(0);
10
+ }
11
+ switch (args[0]) {
12
+ case "hello":
13
+ console.log("Hai Ayiin, CLI sudah jalan!");
14
+ break;
15
+ case "version":
16
+ console.log(`ayiin CLI v2.0.20`);
17
+ break;
18
+ case "help":
19
+ console.log("Available commands: hello, version, help");
20
+ break;
21
+ default:
22
+ console.log(`Unknown command: ${args[0]}`);
23
+ }
package/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ import Methods from "./methods";
2
+ export default class Ayiin extends Methods {
3
+ version: string;
4
+ constructor();
5
+ }
package/index.js ADDED
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ // @ts-ignore
7
+ const package_json_1 = __importDefault(require("./package.json"));
8
+ const methods_1 = __importDefault(require("./methods"));
9
+ class Ayiin extends methods_1.default {
10
+ version = package_json_1.default.version;
11
+ constructor() {
12
+ super();
13
+ }
14
+ }
15
+ exports.default = Ayiin;
package/package.json CHANGED
@@ -1,21 +1,13 @@
1
1
  {
2
2
  "name": "ayiin",
3
- "version": "2.0.32",
3
+ "version": "2.0.33",
4
4
  "description": "Library Pribadi Yang Gak Ada Isinya",
5
- "exports": {
6
- ".": {
7
- "require": "./dist/index.cjs",
8
- "import": "./dist/index.js",
9
- "types": "./dist/index.d.ts"
10
- }
5
+ "main": "index.js",
6
+ "bin": {
7
+ "axd": "./bin/cli.js"
11
8
  },
12
- "files": [
13
- "dist/**/*"
14
- ],
15
9
  "scripts": {
16
- "build:cjs": "rollup -c rollup.config.mjs",
17
- "build:types": "tsc",
18
- "build": "bun run build:cjs && bun run build:types"
10
+ "build": "tsc"
19
11
  },
20
12
  "repository": {
21
13
  "type": "git",
@@ -30,11 +22,7 @@
30
22
  ],
31
23
  "license": "GPL-3.0-only",
32
24
  "devDependencies": {
33
- "@rollup/plugin-json": "^6.1.0",
34
- "@types/bun": "^1.4.1",
35
25
  "@types/node": "^26.3.0",
36
- "rollup": "^4.63.1",
37
- "rollup-plugin-swc3": "^0.12.1",
38
26
  "typescript": "^7"
39
27
  }
40
28
  }
package/dist/index.cjs DELETED
@@ -1,11 +0,0 @@
1
- 'use strict';
2
-
3
- var methods_index = require('./methods/index.cjs');
4
-
5
- class Ayiin {
6
- }
7
- // copy instance properties
8
- Object.assign(Ayiin.prototype, new methods_index());
9
-
10
- module.exports = Ayiin;
11
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["import Methods from \"./methods/index\";\n\nclass Ayiin {}\n\n// copy instance properties\nObject.assign(Ayiin.prototype, new Methods());\n\ninterface Ayiin extends Methods {}\n\nexport default Ayiin;\n"],"names":["Ayiin","Object","assign","prototype","Methods"],"mappings":";;;;AAEA,MAAMA,KAAAA,CAAAA;AAAO;AAEb;AACAC,MAAAA,CAAOC,MAAM,CAACF,KAAAA,CAAMG,SAAS,EAAE,IAAIC,aAAAA,EAAAA,CAAAA;;"}
package/dist/index.d.ts DELETED
@@ -1,6 +0,0 @@
1
- import Methods from "./methods/index";
2
- declare class Ayiin {
3
- }
4
- interface Ayiin extends Methods {
5
- }
6
- export default Ayiin;
package/dist/index.js DELETED
@@ -1,11 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const index_1 = __importDefault(require("./methods/index"));
7
- class Ayiin {
8
- }
9
- // copy instance properties
10
- Object.assign(Ayiin.prototype, new index_1.default());
11
- exports.default = Ayiin;
@@ -1,63 +0,0 @@
1
- 'use strict';
2
-
3
- var crypto = require('crypto');
4
-
5
- class Crypt {
6
- /**
7
- * Performs Base encryption and decryption.
8
- * @param {string | Buffer} input - The input data to be encrypted or decrypted.
9
- * @param {string} key - The encryption/decryption key.
10
- * @returns {Buffer} - The encrypted or decrypted data as a Buffer.
11
- */ baseCrypt = (input, key)=>{
12
- const inputBuffer = Buffer.from(input, "ascii");
13
- const keyBuffer = Buffer.from(key, "ascii");
14
- const resultBuffer = Buffer.alloc(inputBuffer.length);
15
- for(let i = 0; i < inputBuffer.length; i++){
16
- resultBuffer[i] = inputBuffer[i] ^ keyBuffer[i % keyBuffer.length];
17
- }
18
- return resultBuffer;
19
- };
20
- /**
21
- * Encrypts a plaintext message using the given key.
22
- * @param {string} text - The plaintext message to be encrypted.
23
- * @param {string} key - The encryption key.
24
- * @returns {string} - The encrypted data in Hex format.
25
- */ encrypt = (text, key, bufferEncoding = "base64")=>{
26
- const encryptedBuffer = this.baseCrypt(text, key);
27
- return encryptedBuffer.toString(bufferEncoding);
28
- };
29
- /**
30
- * Decrypts an encrypted message using the given key.
31
- * @param {string} encrypted - The encrypted data in Hex format.
32
- * @param {string} key - The decryption key.
33
- * @returns {string} - The decrypted plaintext message.
34
- */ decrypt = (encrypted, key, bufferEncoding = "base64")=>{
35
- const encryptedBuffer = Buffer.from(encrypted, bufferEncoding);
36
- const decryptedBuffer = this.baseCrypt(encryptedBuffer, key);
37
- return decryptedBuffer.toString("ascii");
38
- };
39
- /**
40
- * Converts a Hex string to its corresponding ASCII representation.
41
- * @param {string} hexString - The Hex string to be converted.
42
- * @returns {string} - The ASCII representation of the Hex string.
43
- */ hexToAscii = (hexString)=>{
44
- const hexBuffer = Buffer.from(hexString, "hex");
45
- return hexBuffer.toString("ascii");
46
- };
47
- /**
48
- * Converts an ASCII string to its corresponding Hex representation.
49
- * @param {string} asciiString - The ASCII string to be converted.
50
- * @returns {string} - The Hex representation of the ASCII string.
51
- */ asciiToHex = (asciiString)=>{
52
- const asciiBuffer = Buffer.from(asciiString, "ascii");
53
- return asciiBuffer.toString("hex");
54
- };
55
- md5 = (data, encoding)=>{
56
- if (!encoding) encoding = "hex";
57
- let hasho = crypto.createHash("md5").update(data).digest(encoding);
58
- return hasho;
59
- };
60
- }
61
-
62
- module.exports = Crypt;
63
- //# sourceMappingURL=crypt.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crypt.cjs","sources":["../../src/methods/crypt.ts"],"sourcesContent":["import crypto from \"crypto\";\n\nclass Crypt {\n /**\n * Performs Base encryption and decryption.\n * @param {string | Buffer} input - The input data to be encrypted or decrypted.\n * @param {string} key - The encryption/decryption key.\n * @returns {Buffer} - The encrypted or decrypted data as a Buffer.\n */\n private baseCrypt = (input: any, key: string) => {\n const inputBuffer = Buffer.from(input, \"ascii\");\n const keyBuffer = Buffer.from(key, \"ascii\");\n const resultBuffer = Buffer.alloc(inputBuffer.length);\n\n for (let i = 0; i < inputBuffer.length; i++) {\n resultBuffer[i] = inputBuffer[i]! ^ keyBuffer[i % keyBuffer.length]!;\n }\n\n return resultBuffer;\n };\n\n /**\n * Encrypts a plaintext message using the given key.\n * @param {string} text - The plaintext message to be encrypted.\n * @param {string} key - The encryption key.\n * @returns {string} - The encrypted data in Hex format.\n */\n encrypt = (\n text: string,\n key: string,\n bufferEncoding: BufferEncoding = \"base64\",\n ) => {\n const encryptedBuffer = this.baseCrypt(text, key);\n return encryptedBuffer.toString(bufferEncoding);\n };\n\n /**\n * Decrypts an encrypted message using the given key.\n * @param {string} encrypted - The encrypted data in Hex format.\n * @param {string} key - The decryption key.\n * @returns {string} - The decrypted plaintext message.\n */\n decrypt = (\n encrypted: string,\n key: string,\n bufferEncoding: BufferEncoding = \"base64\",\n ) => {\n const encryptedBuffer = Buffer.from(encrypted, bufferEncoding);\n const decryptedBuffer = this.baseCrypt(encryptedBuffer, key);\n return decryptedBuffer.toString(\"ascii\");\n };\n\n /**\n * Converts a Hex string to its corresponding ASCII representation.\n * @param {string} hexString - The Hex string to be converted.\n * @returns {string} - The ASCII representation of the Hex string.\n */\n hexToAscii = (hexString: string) => {\n const hexBuffer = Buffer.from(hexString, \"hex\");\n return hexBuffer.toString(\"ascii\");\n };\n\n /**\n * Converts an ASCII string to its corresponding Hex representation.\n * @param {string} asciiString - The ASCII string to be converted.\n * @returns {string} - The Hex representation of the ASCII string.\n */\n asciiToHex = (asciiString: string) => {\n const asciiBuffer = Buffer.from(asciiString, \"ascii\");\n return asciiBuffer.toString(\"hex\");\n };\n\n md5 = (data: string, encoding: BufferEncoding) => {\n if (!encoding) encoding = \"hex\";\n let hasho = crypto.createHash(\"md5\").update(data).digest(encoding);\n return hasho;\n };\n}\n\nexport default Crypt;\n"],"names":["Crypt","baseCrypt","input","key","inputBuffer","Buffer","from","keyBuffer","resultBuffer","alloc","length","i","encrypt","text","bufferEncoding","encryptedBuffer","toString","decrypt","encrypted","decryptedBuffer","hexToAscii","hexString","hexBuffer","asciiToHex","asciiString","asciiBuffer","md5","data","encoding","hasho","crypto","createHash","update","digest"],"mappings":";;;;AAEA,MAAMA,KAAAA,CAAAA;AACJ;;;;;MAMQC,SAAAA,GAAY,CAACC,KAAAA,EAAYC,GAAAA,GAAAA;AAC/B,QAAA,MAAMC,WAAAA,GAAcC,MAAAA,CAAOC,IAAI,CAACJ,KAAAA,EAAO,OAAA,CAAA;AACvC,QAAA,MAAMK,SAAAA,GAAYF,MAAAA,CAAOC,IAAI,CAACH,GAAAA,EAAK,OAAA,CAAA;AACnC,QAAA,MAAMK,YAAAA,GAAeH,MAAAA,CAAOI,KAAK,CAACL,YAAYM,MAAM,CAAA;AAEpD,QAAA,IAAK,IAAIC,CAAAA,GAAI,CAAA,EAAGA,IAAIP,WAAAA,CAAYM,MAAM,EAAEC,CAAAA,EAAAA,CAAK;AAC3CH,YAAAA,YAAY,CAACG,CAAAA,CAAE,GAAGP,WAAW,CAACO,CAAAA,CAAE,GAAIJ,SAAS,CAACI,CAAAA,GAAIJ,SAAAA,CAAUG,MAAM,CAAC;AACrE,QAAA;QAEA,OAAOF,YAAAA;IACT,CAAA;AAEA;;;;;AAKC,MACDI,OAAAA,GAAU,CACRC,IAAAA,EACAV,GAAAA,EACAW,iBAAiC,QAAQ,GAAA;AAEzC,QAAA,MAAMC,eAAAA,GAAkB,IAAI,CAACd,SAAS,CAACY,IAAAA,EAAMV,GAAAA,CAAAA;QAC7C,OAAOY,eAAAA,CAAgBC,QAAQ,CAACF,cAAAA,CAAAA;IAClC,CAAA;AAEA;;;;;AAKC,MACDG,OAAAA,GAAU,CACRC,SAAAA,EACAf,GAAAA,EACAW,iBAAiC,QAAQ,GAAA;AAEzC,QAAA,MAAMC,eAAAA,GAAkBV,MAAAA,CAAOC,IAAI,CAACY,SAAAA,EAAWJ,cAAAA,CAAAA;AAC/C,QAAA,MAAMK,eAAAA,GAAkB,IAAI,CAAClB,SAAS,CAACc,eAAAA,EAAiBZ,GAAAA,CAAAA;QACxD,OAAOgB,eAAAA,CAAgBH,QAAQ,CAAC,OAAA,CAAA;IAClC,CAAA;AAEA;;;;AAIC,MACDI,aAAa,CAACC,SAAAA,GAAAA;AACZ,QAAA,MAAMC,SAAAA,GAAYjB,MAAAA,CAAOC,IAAI,CAACe,SAAAA,EAAW,KAAA,CAAA;QACzC,OAAOC,SAAAA,CAAUN,QAAQ,CAAC,OAAA,CAAA;IAC5B,CAAA;AAEA;;;;AAIC,MACDO,aAAa,CAACC,WAAAA,GAAAA;AACZ,QAAA,MAAMC,WAAAA,GAAcpB,MAAAA,CAAOC,IAAI,CAACkB,WAAAA,EAAa,OAAA,CAAA;QAC7C,OAAOC,WAAAA,CAAYT,QAAQ,CAAC,KAAA,CAAA;IAC9B,CAAA;AAEAU,IAAAA,GAAAA,GAAM,CAACC,IAAAA,EAAcC,QAAAA,GAAAA;QACnB,IAAI,CAACA,UAAUA,QAAAA,GAAW,KAAA;QAC1B,IAAIC,KAAAA,GAAQC,OAAOC,UAAU,CAAC,OAAOC,MAAM,CAACL,IAAAA,CAAAA,CAAMM,MAAM,CAACL,QAAAA,CAAAA;QACzD,OAAOC,KAAAA;IACT,CAAA;AACF;;"}
@@ -1,15 +0,0 @@
1
- 'use strict';
2
-
3
- var methods_crypt = require('./crypt.cjs');
4
- var methods_tools = require('./tools.cjs');
5
- var methods_response = require('./response.cjs');
6
-
7
- class Methods {
8
- }
9
- // copy instance properties
10
- Object.assign(Methods.prototype, new methods_tools());
11
- Object.assign(Methods.prototype, new methods_crypt());
12
- Object.assign(Methods.prototype, new methods_response());
13
-
14
- module.exports = Methods;
15
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/methods/index.ts"],"sourcesContent":["import Crypt from \"./crypt\";\nimport Tools from \"./tools\";\nimport ResponseApi from \"./response\";\n\nclass Methods {}\n\n// copy instance properties\nObject.assign(Methods.prototype, new Tools());\nObject.assign(Methods.prototype, new Crypt());\nObject.assign(Methods.prototype, new ResponseApi());\n\ninterface Methods extends Crypt, Tools, ResponseApi {}\n\nexport default Methods;\n"],"names":["Methods","Object","assign","prototype","Tools","Crypt","ResponseApi"],"mappings":";;;;;;AAIA,MAAMA,OAAAA,CAAAA;AAAS;AAEf;AACAC,MAAAA,CAAOC,MAAM,CAACF,OAAAA,CAAQG,SAAS,EAAE,IAAIC,aAAAA,EAAAA,CAAAA;AACrCH,MAAAA,CAAOC,MAAM,CAACF,OAAAA,CAAQG,SAAS,EAAE,IAAIE,aAAAA,EAAAA,CAAAA;AACrCJ,MAAAA,CAAOC,MAAM,CAACF,OAAAA,CAAQG,SAAS,EAAE,IAAIG,gBAAAA,EAAAA,CAAAA;;"}
@@ -1,56 +0,0 @@
1
- 'use strict';
2
-
3
- class ResponseApi {
4
- success = ({ caption, data, code })=>{
5
- code = code ? Number(String(code) + "7400") : 2007400;
6
- return {
7
- responseCode: code,
8
- responseSuccess: true,
9
- responseMessage: `[Success] - ${caption}`,
10
- responseData: data
11
- };
12
- };
13
- badRequest = ({ caption, title, data })=>{
14
- return {
15
- responseCode: 4007400,
16
- responseSuccess: false,
17
- responseMessage: `[${title ? title : "Bad Request"}] - ${caption}`,
18
- responseData: data
19
- };
20
- };
21
- invalidFields = ({ caption, data })=>{
22
- return {
23
- responseCode: 4007401,
24
- responseSuccess: false,
25
- responseMessage: `[Invalid Fields] - ${caption}`,
26
- responseData: data
27
- };
28
- };
29
- notFound = ({ caption, data })=>{
30
- return {
31
- responseCode: 4047400,
32
- responseSuccess: false,
33
- responseMessage: `[Not Found] - ${caption}`,
34
- responseData: data
35
- };
36
- };
37
- unauthorized = ({ caption, data })=>{
38
- return {
39
- responseCode: 4017400,
40
- responseSuccess: false,
41
- responseMessage: `[Unauthorized] - ${caption}`,
42
- responseData: data
43
- };
44
- };
45
- internalServer = ({ caption, data })=>{
46
- return {
47
- responseCode: 5007400,
48
- responseSuccess: false,
49
- responseMessage: `[Internal Server Error] - ${caption}`,
50
- responseData: data
51
- };
52
- };
53
- }
54
-
55
- module.exports = ResponseApi;
56
- //# sourceMappingURL=response.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"response.cjs","sources":["../../src/methods/response.ts"],"sourcesContent":["class ResponseApi {\n success = ({\n caption,\n data,\n code,\n }: {\n caption: string;\n data: any;\n code?: number | string;\n }) => {\n code = code ? Number(String(code) + \"7400\") : 2007400;\n return {\n responseCode: code,\n responseSuccess: true,\n responseMessage: `[Success] - ${caption}`,\n responseData: data,\n };\n };\n\n badRequest = ({\n caption,\n title,\n data,\n }: {\n caption: string;\n title?: string;\n data?: any;\n }) => {\n return {\n responseCode: 4007400,\n responseSuccess: false,\n responseMessage: `[${title ? title : \"Bad Request\"}] - ${caption}`,\n responseData: data,\n };\n };\n\n invalidFields = ({ caption, data }: { caption: string; data?: any }) => {\n return {\n responseCode: 4007401,\n responseSuccess: false,\n responseMessage: `[Invalid Fields] - ${caption}`,\n responseData: data,\n };\n };\n\n notFound = ({ caption, data }: { caption: string; data?: any }) => {\n return {\n responseCode: 4047400,\n responseSuccess: false,\n responseMessage: `[Not Found] - ${caption}`,\n responseData: data,\n };\n };\n\n unauthorized = ({ caption, data }: { caption: string; data?: any }) => {\n return {\n responseCode: 4017400,\n responseSuccess: false,\n responseMessage: `[Unauthorized] - ${caption}`,\n responseData: data,\n };\n };\n\n internalServer = ({ caption, data }: { caption: string; data?: any }) => {\n return {\n responseCode: 5007400,\n responseSuccess: false,\n responseMessage: `[Internal Server Error] - ${caption}`,\n responseData: data,\n };\n };\n}\n\nexport default ResponseApi;\n"],"names":["ResponseApi","success","caption","data","code","Number","String","responseCode","responseSuccess","responseMessage","responseData","badRequest","title","invalidFields","notFound","unauthorized","internalServer"],"mappings":";;AAAA,MAAMA,WAAAA,CAAAA;AACJC,IAAAA,OAAAA,GAAU,CAAC,EACTC,OAAO,EACPC,IAAI,EACJC,IAAI,EAKL,GAAA;AACCA,QAAAA,IAAAA,GAAOA,IAAAA,GAAOC,MAAAA,CAAOC,MAAAA,CAAOF,IAAAA,CAAAA,GAAQ,MAAA,CAAA,GAAU,OAAA;QAC9C,OAAO;YACLG,YAAAA,EAAcH,IAAAA;YACdI,eAAAA,EAAiB,IAAA;YACjBC,eAAAA,EAAiB,CAAC,YAAY,EAAEP,OAAAA,CAAAA,CAAS;YACzCQ,YAAAA,EAAcP;AAChB,SAAA;IACF,CAAA;AAEAQ,IAAAA,UAAAA,GAAa,CAAC,EACZT,OAAO,EACPU,KAAK,EACLT,IAAI,EAKL,GAAA;QACC,OAAO;YACLI,YAAAA,EAAc,OAAA;YACdC,eAAAA,EAAiB,KAAA;YACjBC,eAAAA,EAAiB,CAAC,CAAC,EAAEG,KAAAA,GAAQA,QAAQ,aAAA,CAAc,IAAI,EAAEV,OAAAA,CAAAA,CAAS;YAClEQ,YAAAA,EAAcP;AAChB,SAAA;IACF,CAAA;AAEAU,IAAAA,aAAAA,GAAgB,CAAC,EAAEX,OAAO,EAAEC,IAAI,EAAmC,GAAA;QACjE,OAAO;YACLI,YAAAA,EAAc,OAAA;YACdC,eAAAA,EAAiB,KAAA;YACjBC,eAAAA,EAAiB,CAAC,mBAAmB,EAAEP,OAAAA,CAAAA,CAAS;YAChDQ,YAAAA,EAAcP;AAChB,SAAA;IACF,CAAA;AAEAW,IAAAA,QAAAA,GAAW,CAAC,EAAEZ,OAAO,EAAEC,IAAI,EAAmC,GAAA;QAC5D,OAAO;YACLI,YAAAA,EAAc,OAAA;YACdC,eAAAA,EAAiB,KAAA;YACjBC,eAAAA,EAAiB,CAAC,cAAc,EAAEP,OAAAA,CAAAA,CAAS;YAC3CQ,YAAAA,EAAcP;AAChB,SAAA;IACF,CAAA;AAEAY,IAAAA,YAAAA,GAAe,CAAC,EAAEb,OAAO,EAAEC,IAAI,EAAmC,GAAA;QAChE,OAAO;YACLI,YAAAA,EAAc,OAAA;YACdC,eAAAA,EAAiB,KAAA;YACjBC,eAAAA,EAAiB,CAAC,iBAAiB,EAAEP,OAAAA,CAAAA,CAAS;YAC9CQ,YAAAA,EAAcP;AAChB,SAAA;IACF,CAAA;AAEAa,IAAAA,cAAAA,GAAiB,CAAC,EAAEd,OAAO,EAAEC,IAAI,EAAmC,GAAA;QAClE,OAAO;YACLI,YAAAA,EAAc,OAAA;YACdC,eAAAA,EAAiB,KAAA;YACjBC,eAAAA,EAAiB,CAAC,0BAA0B,EAAEP,OAAAA,CAAAA,CAAS;YACvDQ,YAAAA,EAAcP;AAChB,SAAA;IACF,CAAA;AACF;;"}
@@ -1,162 +0,0 @@
1
- 'use strict';
2
-
3
- class Tools {
4
- /**
5
- * Format money ke string sesuai locale
6
- * @memberof Tools
7
- * @param {number | string} amount - jumlah uang
8
- * @param {Intl.LocalesArgument} locales - default "id-ID"
9
- * @param {Intl.NumberFormatOptions} options - default currency IDR
10
- * @returns {string} string
11
- */ formatMoney = (amount, locales = "id-ID", options = {
12
- style: "currency",
13
- currency: "IDR",
14
- minimumFractionDigits: 0
15
- })=>{
16
- return new Intl.NumberFormat(locales, options).format(Number(amount));
17
- };
18
- /**
19
- * Generate unique ID dengan pilihan tipe
20
- * @param {"number"|"string"|"mixed"} type - tipe ID (angka, string, atau campuran)
21
- * @param {number} length - panjang ID (default 8)
22
- * @returns {string} ID unik acak
23
- */ uniqueId = ({ type = "mixed", length = 8, prefix })=>{
24
- let chars;
25
- switch(type){
26
- case "number":
27
- chars = "0123456789";
28
- break;
29
- case "string":
30
- chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
31
- break;
32
- default:
33
- chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
34
- }
35
- let id = "";
36
- for(let i = 0; i < Number(length); i++){
37
- id += chars[Math.floor(Math.random() * chars.length)];
38
- }
39
- return prefix ? prefix + id : id;
40
- };
41
- /**
42
- * Generate UUID v4 sederhana
43
- * @returns {string}
44
- */ randomUuid = ()=>{
45
- return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c)=>{
46
- const r = Math.random() * 16 | 0;
47
- const v = c === "x" ? r : r & 0x3 | 0x8;
48
- return v.toString(16);
49
- });
50
- };
51
- /**
52
- * Pick a random from array
53
- * @param {T[]} array
54
- * @memberof Tools
55
- * @returns {T} item acak dari array
56
- */ randomItem = (array)=>{
57
- return array[Math.floor(Math.random() * array.length)];
58
- };
59
- /**
60
- * Ambil beberapa item acak unik dari array
61
- * @param {T[]} array
62
- * @param {number} count - jumlah item
63
- * @returns {T[]} array item acak unik dari array
64
- */ randomMany = (array, count)=>{
65
- const copy = [
66
- ...array
67
- ];
68
- for(let i = copy.length - 1; i > 0; i--){
69
- const j = Math.floor(Math.random() * (i + 1));
70
- [copy[i], copy[j]] = [
71
- copy[j],
72
- copy[i]
73
- ];
74
- }
75
- return copy.slice(0, Number(count));
76
- };
77
- /**
78
- * Validasi apakah string adalah email
79
- * @param {string} str
80
- * @returns {boolean} true jika string adalah email, false jika bukan
81
- */ isEmail = (str)=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(str);
82
- /**
83
- * Validasi apakah string adalah URL
84
- * @param {string} str
85
- * @returns {boolean} true jika string adalah URL, false jika bukan
86
- */ isUrl = (str)=>{
87
- try {
88
- new URL(str);
89
- return true;
90
- } catch {
91
- return false;
92
- }
93
- };
94
- /**
95
- * Format tanggal ke string sesuai locale
96
- * @param {Date} date
97
- * @param {Intl.LocalesArgument} locales - default "id-ID"
98
- * @returns {string} string
99
- */ formatDate = (date, locales = "id-ID")=>new Intl.DateTimeFormat(locales, {
100
- year: "numeric",
101
- month: "long",
102
- day: "numeric",
103
- hour: "2-digit",
104
- minute: "2-digit"
105
- }).format(date);
106
- /**
107
- * Hitung waktu relatif (misalnya "5 menit lalu")
108
- * @param {Date} date
109
- * @returns {string} string
110
- */ timeAgo = (date)=>{
111
- const diff = Date.now() - date.getTime();
112
- const seconds = Math.floor(diff / 1000);
113
- if (seconds < 60) return `${seconds} detik lalu`;
114
- const minutes = Math.floor(seconds / 60);
115
- if (minutes < 60) return `${minutes} menit lalu`;
116
- const hours = Math.floor(minutes / 60);
117
- if (hours < 24) return `${hours} jam lalu`;
118
- const days = Math.floor(hours / 24);
119
- return `${days} hari lalu`;
120
- };
121
- /**
122
- * Convert string menjadi camelCase
123
- * @param {string} input - string yang akan diubah
124
- * @returns {string} camelCase string
125
- */ toCamelCase = (input)=>{
126
- return input.toLowerCase().replace(/[-_\s]+(.)?/g, (_, chr)=>chr ? chr.toUpperCase() : "");
127
- };
128
- /**
129
- * Capitalize string (huruf pertama jadi kapital)
130
- * @param {string} input - string yang akan diubah
131
- * @returns {string} string dengan huruf pertama kapital
132
- */ capitalize = (input)=>{
133
- if (!input) return "";
134
- return input.charAt(0).toUpperCase() + input.slice(1);
135
- };
136
- slugify = (str)=>{
137
- return str.toLowerCase().replace(/\s+/g, "-").replace(/[^\w-]+/g, "");
138
- };
139
- deepClone = (obj)=>{
140
- return JSON.parse(JSON.stringify(obj));
141
- };
142
- isEmptyObject = (obj)=>{
143
- return Object.keys(obj).length === 0;
144
- };
145
- sleep = (ms)=>{
146
- return new Promise((resolve)=>setTimeout(resolve, ms));
147
- };
148
- retry = async (fn, retries = 3)=>{
149
- let error;
150
- for(let i = 0; i < retries; i++){
151
- try {
152
- return await fn();
153
- } catch (err) {
154
- error = err;
155
- }
156
- }
157
- throw error;
158
- };
159
- }
160
-
161
- module.exports = Tools;
162
- //# sourceMappingURL=tools.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tools.cjs","sources":["../../src/methods/tools.ts"],"sourcesContent":["class Tools {\n /**\n * Format money ke string sesuai locale\n * @memberof Tools\n * @param {number | string} amount - jumlah uang\n * @param {Intl.LocalesArgument} locales - default \"id-ID\"\n * @param {Intl.NumberFormatOptions} options - default currency IDR\n * @returns {string} string\n */\n formatMoney = (\n amount: number | string,\n locales: Intl.LocalesArgument = \"id-ID\",\n options: Intl.NumberFormatOptions = {\n style: \"currency\",\n currency: \"IDR\",\n minimumFractionDigits: 0,\n },\n ) => {\n return new Intl.NumberFormat(locales, options).format(Number(amount));\n };\n\n /**\n * Generate unique ID dengan pilihan tipe\n * @param {\"number\"|\"string\"|\"mixed\"} type - tipe ID (angka, string, atau campuran)\n * @param {number} length - panjang ID (default 8)\n * @returns {string} ID unik acak\n */\n uniqueId = ({\n type = \"mixed\",\n length = 8,\n prefix,\n }: {\n type?: \"number\" | \"string\" | \"mixed\";\n length?: number | string;\n prefix?: string;\n }): string => {\n let chars: string;\n\n switch (type) {\n case \"number\":\n chars = \"0123456789\";\n break;\n case \"string\":\n chars = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n break;\n default:\n chars =\n \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\n }\n\n let id = \"\";\n for (let i = 0; i < Number(length); i++) {\n id += chars[Math.floor(Math.random() * chars.length)];\n }\n\n return prefix ? prefix + id : id;\n };\n\n /**\n * Generate UUID v4 sederhana\n * @returns {string}\n */\n randomUuid = (): string => {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n };\n\n /**\n * Pick a random from array\n * @param {T[]} array\n * @memberof Tools\n * @returns {T} item acak dari array\n */\n randomItem = <T>(array: T[]): T | undefined => {\n return array[Math.floor(Math.random() * array.length)];\n };\n\n /**\n * Ambil beberapa item acak unik dari array\n * @param {T[]} array\n * @param {number} count - jumlah item\n * @returns {T[]} array item acak unik dari array\n */\n randomMany = <T>(array: T[], count: number | string): T[] => {\n const copy = [...array];\n for (let i = copy.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [copy[i]!, copy[j]!] = [copy[j]!, copy[i]!];\n }\n return copy.slice(0, Number(count));\n };\n\n /**\n * Validasi apakah string adalah email\n * @param {string} str\n * @returns {boolean} true jika string adalah email, false jika bukan\n */\n isEmail = (str: string): boolean => /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(str);\n\n /**\n * Validasi apakah string adalah URL\n * @param {string} str\n * @returns {boolean} true jika string adalah URL, false jika bukan\n */\n isUrl = (str: string): boolean => {\n try {\n new URL(str);\n return true;\n } catch {\n return false;\n }\n };\n\n /**\n * Format tanggal ke string sesuai locale\n * @param {Date} date\n * @param {Intl.LocalesArgument} locales - default \"id-ID\"\n * @returns {string} string\n */\n formatDate = (date: Date, locales: Intl.LocalesArgument = \"id-ID\"): string =>\n new Intl.DateTimeFormat(locales, {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n }).format(date);\n\n /**\n * Hitung waktu relatif (misalnya \"5 menit lalu\")\n * @param {Date} date\n * @returns {string} string\n */\n timeAgo = (date: Date): string => {\n const diff = Date.now() - date.getTime();\n const seconds = Math.floor(diff / 1000);\n if (seconds < 60) return `${seconds} detik lalu`;\n const minutes = Math.floor(seconds / 60);\n if (minutes < 60) return `${minutes} menit lalu`;\n const hours = Math.floor(minutes / 60);\n if (hours < 24) return `${hours} jam lalu`;\n const days = Math.floor(hours / 24);\n return `${days} hari lalu`;\n };\n\n /**\n * Convert string menjadi camelCase\n * @param {string} input - string yang akan diubah\n * @returns {string} camelCase string\n */\n toCamelCase = (input: string): string => {\n return input\n .toLowerCase()\n .replace(/[-_\\s]+(.)?/g, (_, chr) => (chr ? chr.toUpperCase() : \"\"));\n };\n\n /**\n * Capitalize string (huruf pertama jadi kapital)\n * @param {string} input - string yang akan diubah\n * @returns {string} string dengan huruf pertama kapital\n */\n capitalize = (input: string): string => {\n if (!input) return \"\";\n return input.charAt(0).toUpperCase() + input.slice(1);\n };\n\n slugify = (str: string): string => {\n return str\n .toLowerCase()\n .replace(/\\s+/g, \"-\")\n .replace(/[^\\w-]+/g, \"\");\n };\n\n deepClone = <T>(obj: T): T => {\n return JSON.parse(JSON.stringify(obj));\n };\n\n isEmptyObject = (obj: object): boolean => {\n return Object.keys(obj).length === 0;\n };\n\n sleep = (ms: number): Promise<void> => {\n return new Promise((resolve) => setTimeout(resolve, ms));\n };\n\n retry = async <T>(fn: () => Promise<T>, retries = 3): Promise<T> => {\n let error;\n for (let i = 0; i < retries; i++) {\n try {\n return await fn();\n } catch (err) {\n error = err;\n }\n }\n throw error;\n };\n}\n\nexport default Tools;\n"],"names":["Tools","formatMoney","amount","locales","options","style","currency","minimumFractionDigits","Intl","NumberFormat","format","Number","uniqueId","type","length","prefix","chars","id","i","Math","floor","random","randomUuid","replace","c","r","v","toString","randomItem","array","randomMany","count","copy","j","slice","isEmail","str","test","isUrl","URL","formatDate","date","DateTimeFormat","year","month","day","hour","minute","timeAgo","diff","Date","now","getTime","seconds","minutes","hours","days","toCamelCase","input","toLowerCase","_","chr","toUpperCase","capitalize","charAt","slugify","deepClone","obj","JSON","parse","stringify","isEmptyObject","Object","keys","sleep","ms","Promise","resolve","setTimeout","retry","fn","retries","error","err"],"mappings":"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"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes