{"_id":"@codismart/architect-toolkit","_rev":"6-53eccd0cb143c816737a7211f76f6ee1","name":"@codismart/architect-toolkit","dist-tags":{"latest":"0.0.7"},"versions":{"0.0.1":{"name":"@codismart/architect-toolkit","version":"0.0.1","keywords":[],"author":"","license":"ISC","_id":"@codismart/architect-toolkit@0.0.1","maintainers":[{"name":"coder_0806","email":"cesarbyte4bit@gmail.com"}],"dist":{"shasum":"5284f53c103aa8ea57594172be97462de23aec89","tarball":"https://registry.npmjs.org/@codismart/architect-toolkit/-/architect-toolkit-0.0.1.tgz","fileCount":251,"integrity":"sha512-vxc+SQXpnOU6RvunlK+Ey1ubiiltTHT8QJB5nt3E2gmRjJ2jhwSHVdi6+KqSgN1CxSqO+md5Uad4Ff08k6AIcg==","signatures":[{"sig":"MEQCIEhsUR9FJ/q4u2qaMkfT56nSA56TTuaYGrs9extmv7EAAiB+owFhf5WmQ042VHSqeIWLgn0lOXxpfbwEcEAmlH2Gzg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":222492},"main":"build/cjs/index.js","types":"./build/cjs/index.d.ts","gitHead":"4dfe12c3fa7ae2f4f596105fe4dc46935fdc72a0","scripts":{"flb":"npm run prettier:fix && npm run lint:fix && npm run build","lint":"eslint \"{src,apps,libs,test}/**/*.ts\"","build":"npm run build:cjs && npm run build:esm","lint:fix":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","prettier":"prettier --config .prettierrc --check .","build:cjs":"tsc -p tsconfig.json --module commonjs --outDir build/cjs","build:esm":"tsc -p tsconfig.json --module esnext --outDir build/esm","prettier:fix":"prettier --config .prettierrc --write ."},"_npmUser":{"name":"coder_0806","email":"cesarbyte4bit@gmail.com"},"_npmVersion":"10.8.3","description":"Este repositorio está diseñado para facilitar el uso de diferentes patrones de diseño en proyectos de desarrollo de software, proporcionando una estructura modular y organizada para implementar soluciones escalables y reutilizables. Dentro del repositorio","directories":{},"_nodeVersion":"20.14.0","dependencies":{"tslib":"^2.8.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.4","tslib":"~2.4","eslint":"^8.48.0","tsutils":"~3.21","prettier":"^3.0.3","typescript":"^5.2.2","eslint-plugin-n":"^16.0.2","semantic-release":"^22.0.7","eslint-plugin-jest":"^27.2.3","eslint-plugin-import":"^2.28.1","@semantic-release/git":"^10.0.1","eslint-plugin-promise":"^6.1.1","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.0","eslint-plugin-sort-exports":"^0.8.0","@semantic-release/changelog":"^6.0.3","@typescript-eslint/eslint-plugin":"^6.5.0","eslint-config-standard-with-typescript":"^39.0.0"},"_npmOperationalInternal":{"tmp":"tmp/architect-toolkit_0.0.1_1729214670641_0.7256924290362345","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"@codismart/architect-toolkit","version":"0.0.2","keywords":[],"author":"","license":"ISC","_id":"@codismart/architect-toolkit@0.0.2","maintainers":[{"name":"coder_0806","email":"cesarbyte4bit@gmail.com"}],"dist":{"shasum":"adfa05cef4ede882f3a73de2c20bf7f35f4203db","tarball":"https://registry.npmjs.org/@codismart/architect-toolkit/-/architect-toolkit-0.0.2.tgz","fileCount":251,"integrity":"sha512-RDv2CF1EmN2b/GDGnvNfbL0IOdWLnMc/XKs/yo/sOfb7lr40hA/+03JE7voJAqWtZNRnx15Ate0b9hEqqai/rg==","signatures":[{"sig":"MEUCIDi3ftqQhPq83cTQngmWfqntwhe+fZjgDl6Zz+3nBe50AiEA1rm9/4LadELSKJBcyEx7raeQe/iJWWX9EbRrFjip12A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":224364},"main":"build/cjs/index.js","types":"./build/cjs/index.d.ts","gitHead":"9604e2fc4fe2088544de3c1b6028663a3d37f974","scripts":{"flb":"npm run prettier:fix && npm run lint:fix && npm run build","lint":"eslint \"{src,apps,libs,test}/**/*.ts\"","build":"npm run build:cjs && npm run build:esm","lint:fix":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","prettier":"prettier --config .prettierrc --check .","build:cjs":"tsc -p tsconfig.json --module commonjs --outDir build/cjs","build:esm":"tsc -p tsconfig.json --module esnext --outDir build/esm","prettier:fix":"prettier --config .prettierrc --write ."},"_npmUser":{"name":"coder_0806","email":"cesarbyte4bit@gmail.com"},"_npmVersion":"10.8.3","description":"Este repositorio está diseñado para facilitar el uso de diferentes patrones de diseño en proyectos de desarrollo de software, proporcionando una estructura modular y organizada para implementar soluciones escalables y reutilizables. Dentro del repositorio","directories":{},"_nodeVersion":"20.14.0","dependencies":{"tslib":"^2.8.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.4","tslib":"~2.4","eslint":"^8.48.0","tsutils":"~3.21","prettier":"^3.0.3","typescript":"^5.2.2","eslint-plugin-n":"^16.0.2","semantic-release":"^22.0.7","eslint-plugin-jest":"^27.2.3","eslint-plugin-import":"^2.28.1","@semantic-release/git":"^10.0.1","eslint-plugin-promise":"^6.1.1","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.0","eslint-plugin-sort-exports":"^0.8.0","@semantic-release/changelog":"^6.0.3","@typescript-eslint/eslint-plugin":"^6.5.0","eslint-config-standard-with-typescript":"^39.0.0"},"_npmOperationalInternal":{"tmp":"tmp/architect-toolkit_0.0.2_1729816126085_0.6291284562651225","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"@codismart/architect-toolkit","version":"0.0.3","keywords":[],"author":{"name":"Cesar Augusto Ruiz Puentes"},"license":"ISC","_id":"@codismart/architect-toolkit@0.0.3","maintainers":[{"name":"coder_0806","email":"cesarbyte4bit@gmail.com"}],"dist":{"shasum":"15078bd872bf6019fa1beb94d246411aa6f6996d","tarball":"https://registry.npmjs.org/@codismart/architect-toolkit/-/architect-toolkit-0.0.3.tgz","fileCount":252,"integrity":"sha512-ohTHALMhLtnfwSVRwAvBT4Hw3iIlVgMV7ejqF/bFOD2mh+1J2nKmN/uqikXJP5nKppofxyMzZyo+PH9+Bj96+g==","signatures":[{"sig":"MEYCIQCnpaKpO5Yinn2n9APvlfOgEYQ84M66WISXMaOO3YTPmgIhAILiWRbBzWs4ib99I15ntS3G8cZ8DZgD/5AnM0tjMOE8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":232160},"main":"build/cjs/index.js","types":"./build/cjs/index.d.ts","gitHead":"1626cfb4202246ae3772f60af018a6090f06e78b","scripts":{"flb":"npm run prettier:fix && npm run lint:fix && npm run build","lint":"eslint \"{src,apps,libs,test}/**/*.ts\"","build":"npm run build:cjs && npm run build:esm","lint:fix":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","prettier":"prettier --config .prettierrc --check .","build:cjs":"tsc -p tsconfig.json --module commonjs --outDir build/cjs","build:esm":"tsc -p tsconfig.json --module esnext --outDir build/esm","prettier:fix":"prettier --config .prettierrc --write ."},"_npmUser":{"name":"coder_0806","email":"cesarbyte4bit@gmail.com"},"_npmVersion":"10.8.3","description":"Este repositorio está diseñado para facilitar el uso de diferentes patrones de diseño en proyectos de desarrollo de software, proporcionando una estructura modular y organizada para implementar soluciones escalables y reutilizables. Dentro del repositorio","directories":{},"_nodeVersion":"20.14.0","dependencies":{"tslib":"^2.8.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.4","tslib":"~2.4","eslint":"^8.48.0","tsutils":"~3.21","prettier":"^3.0.3","typescript":"^5.2.2","eslint-plugin-n":"^16.0.2","semantic-release":"^22.0.7","eslint-plugin-jest":"^27.2.3","eslint-plugin-import":"^2.28.1","@semantic-release/git":"^10.0.1","eslint-plugin-promise":"^6.1.1","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.0","eslint-plugin-sort-exports":"^0.8.0","@semantic-release/changelog":"^6.0.3","@typescript-eslint/eslint-plugin":"^6.5.0","eslint-config-standard-with-typescript":"^39.0.0"},"_npmOperationalInternal":{"tmp":"tmp/architect-toolkit_0.0.3_1729821364751_0.32713470673054235","host":"s3://npm-registry-packages"}},"0.0.4":{"name":"@codismart/architect-toolkit","version":"0.0.4","keywords":[],"author":{"name":"Cesar Augusto Ruiz Puentes"},"license":"ISC","_id":"@codismart/architect-toolkit@0.0.4","maintainers":[{"name":"coder_0806","email":"cesarbyte4bit@gmail.com"}],"homepage":"https://github.com/cr8297408/architect-toolkit","dist":{"shasum":"b67cad6610e94a4720064727633dbcc001f93cc4","tarball":"https://registry.npmjs.org/@codismart/architect-toolkit/-/architect-toolkit-0.0.4.tgz","fileCount":252,"integrity":"sha512-prUIoFrk14AC4b8BGXaad9NauN9+Kj2EERyQ/gY94tMnUFvcDpndEU/rw/oBj5GhrmYh3DX7JNOBRIJejo6X7g==","signatures":[{"sig":"MEUCIQCLXW7TCfu4+rg2J/CCDe2Gb3EERcK2mpoPvlOXst4/KQIgXme3CQEJ0XwB04tLnl0DtcWB6RKKE0dR4nsNdLoTfRM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":232224},"main":"build/cjs/index.js","types":"./build/cjs/index.d.ts","gitHead":"1626cfb4202246ae3772f60af018a6090f06e78b","scripts":{"flb":"npm run prettier:fix && npm run lint:fix && npm run build","lint":"eslint \"{src,apps,libs,test}/**/*.ts\"","build":"npm run build:cjs && npm run build:esm","lint:fix":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","prettier":"prettier --config .prettierrc --check .","build:cjs":"tsc -p tsconfig.json --module commonjs --outDir build/cjs","build:esm":"tsc -p tsconfig.json --module esnext --outDir build/esm","prettier:fix":"prettier --config .prettierrc --write ."},"_npmUser":{"name":"coder_0806","email":"cesarbyte4bit@gmail.com"},"_npmVersion":"10.8.3","description":"Este repositorio está diseñado para facilitar el uso de diferentes patrones de diseño en proyectos de desarrollo de software, proporcionando una estructura modular y organizada para implementar soluciones escalables y reutilizables. Dentro del repositorio","directories":{},"_nodeVersion":"20.14.0","dependencies":{"tslib":"^2.8.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.4","tslib":"~2.4","eslint":"^8.48.0","tsutils":"~3.21","prettier":"^3.0.3","typescript":"^5.2.2","eslint-plugin-n":"^16.0.2","semantic-release":"^22.0.7","eslint-plugin-jest":"^27.2.3","eslint-plugin-import":"^2.28.1","@semantic-release/git":"^10.0.1","eslint-plugin-promise":"^6.1.1","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.0","eslint-plugin-sort-exports":"^0.8.0","@semantic-release/changelog":"^6.0.3","@typescript-eslint/eslint-plugin":"^6.5.0","eslint-config-standard-with-typescript":"^39.0.0"},"_npmOperationalInternal":{"tmp":"tmp/architect-toolkit_0.0.4_1729821396090_0.9303046454319224","host":"s3://npm-registry-packages"}},"0.0.5":{"name":"@codismart/architect-toolkit","version":"0.0.5","keywords":[],"author":{"name":"Cesar Augusto Ruiz Puentes"},"license":"ISC","_id":"@codismart/architect-toolkit@0.0.5","maintainers":[{"name":"coder_0806","email":"cesarbyte4bit@gmail.com"}],"homepage":"https://github.com/cr8297408/architect-toolkit","dist":{"shasum":"7d6b5f9bcdc6bee47508fd6174bbe5b9ea5feb39","tarball":"https://registry.npmjs.org/@codismart/architect-toolkit/-/architect-toolkit-0.0.5.tgz","fileCount":252,"integrity":"sha512-OgfKTuAb66fxyU2y8CoyRAW5u9NwT7Sm1CEQixELUAa8seDckFT2wqbs+fa/F84jXfp+zRpfVineNeeD7xgLUw==","signatures":[{"sig":"MEYCIQD6Az65Afm7+rjdKBVqcs010OSD5rG5Q5/9qFBB4q2eQgIhAKKU4l4xpQxVzp9305Y3sYD7ZV01jyMNcBEsCbuW4OKS","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":232522},"main":"build/cjs/index.js","types":"./build/cjs/index.d.ts","gitHead":"15039468c765091fc1981fc9a026b12e92d9bdf2","scripts":{"flb":"npm run prettier:fix && npm run lint:fix && npm run build","lint":"eslint \"{src,apps,libs,test}/**/*.ts\"","build":"npm run build:cjs && npm run build:esm","lint:fix":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","prettier":"prettier --config .prettierrc --check .","build:cjs":"tsc -p tsconfig.json --module commonjs --outDir build/cjs","build:esm":"tsc -p tsconfig.json --module esnext --outDir build/esm","prettier:fix":"prettier --config .prettierrc --write ."},"_npmUser":{"name":"coder_0806","email":"cesarbyte4bit@gmail.com"},"_npmVersion":"10.8.3","description":"Este repositorio está diseñado para facilitar el uso de diferentes patrones de diseño en proyectos de desarrollo de software, proporcionando una estructura modular y organizada para implementar soluciones escalables y reutilizables. Dentro del repositorio","directories":{},"_nodeVersion":"20.14.0","dependencies":{"tslib":"^2.8.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.4","tslib":"~2.4","eslint":"^8.48.0","tsutils":"~3.21","prettier":"^3.0.3","typescript":"^5.2.2","eslint-plugin-n":"^16.0.2","semantic-release":"^22.0.7","eslint-plugin-jest":"^27.2.3","eslint-plugin-import":"^2.28.1","@semantic-release/git":"^10.0.1","eslint-plugin-promise":"^6.1.1","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.0","eslint-plugin-sort-exports":"^0.8.0","@semantic-release/changelog":"^6.0.3","@typescript-eslint/eslint-plugin":"^6.5.0","eslint-config-standard-with-typescript":"^39.0.0"},"_npmOperationalInternal":{"tmp":"tmp/architect-toolkit_0.0.5_1729821936747_0.3870838930542828","host":"s3://npm-registry-packages"}},"0.0.6":{"name":"@codismart/architect-toolkit","version":"0.0.6","keywords":[],"author":{"name":"Cesar Augusto Ruiz Puentes"},"license":"ISC","_id":"@codismart/architect-toolkit@0.0.6","maintainers":[{"name":"coder_0806","email":"cesarbyte4bit@gmail.com"}],"homepage":"https://github.com/cr8297408/architect-toolkit","dist":{"shasum":"a8151c204930dc1cba763963ff315773550d28c4","tarball":"https://registry.npmjs.org/@codismart/architect-toolkit/-/architect-toolkit-0.0.6.tgz","fileCount":252,"integrity":"sha512-0smMVani4yLG6mD8+lGZ/L76sXUlwgfTUwcE9R8UPiRt2Zixs/hhJ3G1CUDuN1QED2aozmh5vE+vCkJUGMUA8Q==","signatures":[{"sig":"MEQCIDCsM/8/mw9mRZa2RqdYdrPfMLWqy4SPgKUfYaS8yb4gAiAognmvV5wV/mIyHQCctGQyDXcoKR9wjwee5SHw4l7yIQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":232149},"main":"build/cjs/index.js","types":"./build/cjs/index.d.ts","gitHead":"e5dfe207b8ddf04e6f20db5ee524056b3e432986","scripts":{"flb":"npm run prettier:fix && npm run lint:fix && npm run build","lint":"eslint \"{src,apps,libs,test}/**/*.ts\"","build":"npm run build:cjs && npm run build:esm","lint:fix":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","prettier":"prettier --config .prettierrc --check .","build:cjs":"tsc -p tsconfig.json --module commonjs --outDir build/cjs","build:esm":"tsc -p tsconfig.json --module esnext --outDir build/esm","prettier:fix":"prettier --config .prettierrc --write ."},"_npmUser":{"name":"coder_0806","email":"cesarbyte4bit@gmail.com"},"_npmVersion":"10.8.3","description":"Este repositorio está diseñado para facilitar el uso de diferentes patrones de diseño en proyectos de desarrollo de software, proporcionando una estructura modular y organizada para implementar soluciones escalables y reutilizables. Dentro del repositorio","directories":{},"_nodeVersion":"20.14.0","dependencies":{"tslib":"^2.8.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.4","tslib":"~2.4","eslint":"^8.48.0","tsutils":"~3.21","prettier":"^3.0.3","typescript":"^5.2.2","eslint-plugin-n":"^16.0.2","semantic-release":"^22.0.7","eslint-plugin-jest":"^27.2.3","eslint-plugin-import":"^2.28.1","@semantic-release/git":"^10.0.1","eslint-plugin-promise":"^6.1.1","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.0","eslint-plugin-sort-exports":"^0.8.0","@semantic-release/changelog":"^6.0.3","@typescript-eslint/eslint-plugin":"^6.5.0","eslint-config-standard-with-typescript":"^39.0.0"},"_npmOperationalInternal":{"tmp":"tmp/architect-toolkit_0.0.6_1729826620589_0.10333091982937481","host":"s3://npm-registry-packages"}},"0.0.7":{"name":"@codismart/architect-toolkit","version":"0.0.7","main":"build/cjs/index.js","scripts":{"build":"npm run build:cjs && npm run build:esm","build:esm":"tsc -p tsconfig.json --module esnext --outDir build/esm","build:cjs":"tsc -p tsconfig.json --module commonjs --outDir build/cjs","lint":"eslint \"{src,apps,libs,test}/**/*.ts\"","lint:fix":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","prettier:fix":"prettier --config .prettierrc --write .","prettier":"prettier --config .prettierrc --check .","flb":"npm run prettier:fix && npm run lint:fix && npm run build"},"keywords":[],"author":{"name":"Cesar Augusto Ruiz Puentes"},"license":"ISC","homepage":"https://github.com/cr8297408/architect-toolkit","description":"Este repositorio está diseñado para facilitar el uso de diferentes patrones de diseño en proyectos de desarrollo de software, proporcionando una estructura modular y organizada para implementar soluciones escalables y reutilizables. Dentro del repositorio","devDependencies":{"@semantic-release/changelog":"^6.0.3","@semantic-release/git":"^10.0.1","@typescript-eslint/eslint-plugin":"^6.5.0","eslint":"^8.48.0","eslint-config-prettier":"^9.0.0","eslint-config-standard-with-typescript":"^39.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-jest":"^27.2.3","eslint-plugin-n":"^16.0.2","eslint-plugin-prettier":"^5.0.0","eslint-plugin-promise":"^6.1.1","eslint-plugin-sort-exports":"^0.8.0","jest":"^29.6.4","prettier":"^3.0.3","semantic-release":"^22.0.7","tslib":"~2.4","tsutils":"~3.21","typescript":"^5.2.2"},"dependencies":{"tslib":"^2.8.0"},"_id":"@codismart/architect-toolkit@0.0.7","gitHead":"e5dfe207b8ddf04e6f20db5ee524056b3e432986","types":"./build/cjs/index.d.ts","_nodeVersion":"20.14.0","_npmVersion":"10.8.3","dist":{"integrity":"sha512-XSLVOIElcirTkCkQbXW4B1PeNnTN/HMSVTLYBlK4Op7aw7XFxM94ytTcT6nXtM4PfqBraeuGIw/TB91yb8O1dg==","shasum":"c558f48851329c3dd278656b985ecb2780bc7f20","tarball":"https://registry.npmjs.org/@codismart/architect-toolkit/-/architect-toolkit-0.0.7.tgz","fileCount":252,"unpackedSize":232240,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHdZMJWwyd5rBMAmlXxaDca9YX+M5pefyv9SUbeeISuIAiEAntU23oB1S5iSdlE1gu/aDzMxEbe4BP4M4c6fTf2UmUw="}]},"_npmUser":{"name":"coder_0806","email":"cesarbyte4bit@gmail.com"},"directories":{},"maintainers":[{"name":"coder_0806","email":"cesarbyte4bit@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/architect-toolkit_0.0.7_1729826706823_0.4092048369404411"},"_hasShrinkwrap":false}},"time":{"created":"2024-10-18T01:24:30.521Z","modified":"2024-10-25T03:25:07.261Z","0.0.1":"2024-10-18T01:24:30.867Z","0.0.2":"2024-10-25T00:28:46.291Z","0.0.3":"2024-10-25T01:56:04.970Z","0.0.4":"2024-10-25T01:56:36.291Z","0.0.5":"2024-10-25T02:05:36.964Z","0.0.6":"2024-10-25T03:23:40.796Z","0.0.7":"2024-10-25T03:25:07.051Z"},"author":{"name":"Cesar Augusto Ruiz Puentes"},"license":"ISC","homepage":"https://github.com/cr8297408/architect-toolkit","keywords":[],"description":"Este repositorio está diseñado para facilitar el uso de diferentes patrones de diseño en proyectos de desarrollo de software, proporcionando una estructura modular y organizada para implementar soluciones escalables y reutilizables. Dentro del repositorio","maintainers":[{"name":"coder_0806","email":"cesarbyte4bit@gmail.com"}],"readme":"# Architect Toolkit\n\nEste repositorio está diseñado para facilitar el uso de diferentes patrones de diseño en proyectos de desarrollo de software, proporcionando una estructura modular y organizada para implementar soluciones escalables y reutilizables. Dentro del repositorio, se incluyen implementaciones de patrones como el Builder, State, Repository, y Specification, además de una amplia gama de errores personalizados que permiten manejar situaciones específicas de la aplicación.\n\n## Contenidos\n\n- [Características](#características)\n- [Instalación](#instalación)\n- [Uso](#uso)\n  - [Builder Pattern](#builder-pattern)\n  - [Step Pattern](#step-pattern)\n  - [State Pattern](#state-pattern)\n  - [Repository Pattern](#repository-pattern)\n  - [Command Pattern](#command-pattern)\n\n## Características\n\n- Implementaciones de patrones de diseño como Builder, State, Repository, Specification.\n- Módulos para trabajar con bases de datos como Cassandra y MongoDB.\n- Manejo de errores personalizados para situaciones como fallos de red, base de datos, validación de datos, etc.\n- Conversión de nomenclaturas entre diferentes formatos como camelCase, snake_case, kebab-case, etc.\n\n## Instalación\n\nPuedes instalar el paquete desde npm:\n\n```bash\n  npm i @codismart/architect-toolkit\n```\n\nO sigue estos pasos para instalar y configurar el proyecto en tu entorno local:\n\n```bash\n# Clonar el repositorio\ngit clone https://github.com/cr8297408/architect-toolkit\n\n# Navegar al directorio del proyecto\ncd architect-toolkit\n\n# Instalar dependencias\nnpm install\n```\n\n## Uso\n\nA continuación se presentan algunos ejemplos de uso con base en los archivos y módulos proporcionados:\n\n### Builder Pattern\n\nEjemplo de uso del Builder Pattern para construir consultas en Cassandra:\n\n```typescript\nimport { GeneralCassandraQueryBuilder, CassandraOperator } from '@codismart/architect-toolkit';\n\nexport class ExampleBuilder extends GeneralCassandraQueryBuilder<IExample> {\n  constructor(props) {\n    super({\n      ...props,\n      tableName: 'example',\n    });\n  }\n\n  whereConditionUuid(uuid: string): this {\n    this.where('uuid', CassandraOperator.EQUALS, uuid);\n    return this;\n  }\n}\n\nconst builder = new ExampleBuilder({ keyspace: 'example_keyspace' });\nbuilder.whereConditionUuid('123e4567-e89b-12d3-a456-426614174000');\nbuilder.set('name', 'John');\nconst resultBuild = builder.buildUpdateQuery();\nconsole.log(resultBuild); // { query: UPDATE example_keyspace.example SET name = ? WHERE uuid = ?, parameters: ['John', '123e4567-e89b-12d3-a456-426614174000'] }\n\n```\n\nEjemplo de uso del Builder Pattern para construir consultas en SQL:\n\n```typescript\nclass ConfigurationUpdateBuilder extends GeneralSQLQueryBuilder<Configuration> {\n  constructor(options: IGeneralSqlQueryBuilderOptions) {\n    super(options);\n  }\n\n  whereConditionUuid(uuid: string): this {\n    this.where('conditionUuid', SqlOperator.EQUALS, uuid);\n    return this;\n  }\n}\n\nconst builder = new ConfigurationUpdateBuilder({ tableName: 'configurations' });\nbuilder.whereConditionUuid('123e4567-e89b-12d3-a456-426614174000');\nbuilder.set('name', 'John');\nconst resultBuild = builder.buildUpdateQuery();\nconsole.log(resultBuild); // { query: UPDATE configurations SET name = ? WHERE conditionUuid = ?, parameters: ['John', '123e4567-e89b-12d3-a456-426614174000'] }\n```\n\n## Step Pattern\n\nEjemplo de uso del Step Pattern para abstraer la lógica de un proceso en diferentes etapas:\n\n```typescript\n\nimport { Step } from '@codismart/architect-toolkit';\n\nclass ExampleStep extends Step {\n  name = 'ExampleStep';\n  async exec(state: State): Promise<void> {\n    // TODO: Implement your logic here\n  }\n}\n\nclass ExampleStep2 extends Step {\n  name = 'ExampleStep2';\n  async exec(state: ExampleState): Promise<void> {\n    // TODO: Implement your logic of second step here\n    console.log(state.uuid);\n  }\n}\n\n\n\n```\n\n### State Pattern\n\nEjemplo de uso del State Pattern para manejar el estado de una entidad en una aplicación:\n\n```typescript\nimport { State } from '@codismart/architect-toolkit';\n\nclass ExampleState extends State<IExample> {\n  #uuid: string;\n  constructor(example: IExample) {\n    super();\n    this.#uuid = example.uuid;\n  }  \n\n  set uuid(uuid: string) {\n    this.#uuid = uuid;\n  }\n\n  get uuid(): string {\n    return this.#uuid;\n  }\n}\n```\n\nEjemplo de uso del State Pattern combinado con el Step Pattern para crear una cadena de responsabilidades que ejecute diferentes procesos en orden:\n\n```typescript\n\nimport { ExampleState } from '../state/ExampleState';\nimport { ExampleStep } from '../step/ExampleStep';\nimport { StateMachine } from '@codismart/architect-toolkit';\n\nconst yourExampleServiceOrModule = (example: IExample) => {\n  const state = new ExampleState(example);\n\n  await state.accept(new ExampleStep(state));\n  await state.accept(new ExampleStep2(state));\n  await state.accept(new ExampleStep3(state));\n  // ... Todos los pasos que necesites\n  await state.accept(new ExampleStepN(state));\n}\n\n```\n\n### Repository Pattern\n\nEjemplo de uso del Repository Pattern para interactuar con una base de datos:\n\n```typescript\nimport { Repository } from '@codismart/architect-toolkit';\n\nclass ConfigurationRepository extends Repository<Configuration> {\n  constructor(private readonly dbService: DbService) {\n    super();\n  }\n\n  async findAll(): Promise<Configuration[]> {\n    const { query, parameters } = this.build();\n    const result = await this.executeQuery(query, parameters);\n    return result.rows.map((row) => this.mapRowToEntity(row));\n  }\n\n  async update(configuration: Configuration): Promise<Configuration> {\n    const { query, parameters } = this.buildUpdateQuery(configuration);\n    const result = await this.executeQuery(query, parameters);\n    return this.mapRowToEntity(result.rows[0]);\n  }\n\n  // si usas specifications para tus filtros:\n  async getExampleBySpecifications({\n    specifications,\n  }: exampleDependences): Promise<IExample[]> {\n    const { sql, params } = this.combineFilterSpecifications(specifications);\n    const query = `\n      SELECT * FROM example\n      WHERE ${sql}\n    `;\n    const result = await this.dbService.read(query, params);\n    return result.map((row) => this.#rowToModel(row));\n  }\n}\n```\n\n## Command Pattern\n\nEjemplo de uso del Command Pattern para implementar un comando en una el update de una aplicación:\n\n```typescript\nimport { ICommand, GeneralCommandManager } from '@codismart/architect-toolkit';\n\nclass UpdateExampleCommand implements ICommand {\n  private oldExample: IExample;\n  constructor(\n    private id: string,\n    private exampleNewData: Partial<IExample>,\n    private repository: Repository<IExample>\n  ) {}\n\n  // metodo para ejecutar el comando\n  async execute(): Promise<void> {\n    this.oldExample = await this.repository.getById(this.id);\n    await this.repository.update(this.id, this.exampleNewData);\n  }\n\n  // metodo para revertir los cambios\n  async undo(): Promise<void> {\n    await this.repository.update(this.id, this.oldExample);\n  }\n}\n\nasync function yourServideOrModule(exampleId: string, updateData: Partial<IExample>): Promise<void> {\n  const productRepository = new ExampleRepository();\n  const invoker = new GeneralCommandManager();\n\n  const command = new UpdateExampleCommand(exampleId, updateData, productRepository);\n  invoker.addCommand(command);\n\n  await invoker.executeSingleCommand();\n}\n```\n","readmeFilename":"readme.md"}