- 🎇 Benefits
- 📁 Dependencies
- ⏩ Get Started
- 💻 Prepare to develop
- 📍 Start Project
- 📨 Build and Run
- 🧪 Test Code
- 🚀 Speed start new project or package using typescript
- 🚨 Over 800 rules for pattern, possible errors and errors in Linter
- 🎇 Code quality guaranteed
- 📢 AutoReview when opening a pull-request/merge
- 🧪 Automatic Test when opening pull-request/merge
- 📈 Automatic Code Coverage when opening pull-request/merge
- 📦 Automatic Package and release generate on merge
- 🪝 Run Lint/Test command pre-commit execute
- ⚙️ IOT/IOC (Inversion of Control) for easy use of libraries
Create new instance config class
// Example transform config with zod
const zBoolean = zod.union([
zod.string().transform((value): boolean => value === "true" || value === "1"),
zod.boolean(),
]);
const myValidator = zod.object({
USE_HTTPS: zBoolean,
OPTIONAL: zod.string().optional(),
});
// Container Instance Configuration
const config = new JsonConfig<zod.infer<typeof myValidator>>({ ...process.env }, validator);
await config.init();
const config: ConfigInterface;
// Get Configs
const useHttps = await config.get("USE_HTTPS");
const optional = await config.get("OPTIONAL", () => "default value");
// Has Config
if (await config.has("OPTIONAL")) {
// Config key exists
}
// set Config
await config
.set("OPTIONAL", "filled")
.set("USE_HTTPS", false);
// All Configs
const all = config.all(); // Return Json with configs
// Prepare class to use
const all = config.init();
For packages and SDK, always prefer to send an object instead of the entire config class
new PackageClass({
timeout: await config.get("DEFAULT_TIMEOUT", () => 1000),
attempt: await config.get("ATTEMPT"),
})
Copy .env.example
to .env
and add the values according to your needs.
First install dependencies with the following command
yarn install
# or
npm install
To build the project, you can use the following command
if you change files, you need to run
yarn build
andyarn start
again
yarn build && yarn test
To Test execute this command
yarn test
# or
yarn test:watch