
Product
Introducing Tier 1 Reachability: Precision CVE Triage for Enterprise Teams
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.
@musicglue/joi-ts-generator
Advanced tools
Generate Typescript Types from Joi Schemae
yarn add --dev @musicglue/joi-ts-generator
Then you should add a script to your package json that you can use to regenerate your types, such as the following:
{
"scripts": {
"regenerate-joi-types": "joi-ts-gen"
},
"joiTsGenerator": {
"input": "./src/schemas/index.ts",
"outputs": {
"types": "./src/schemas/types.ts",
"utils": "./src/schemas/utils.ts"
}
}
}
You can then rebuild your types by running yarn regenerate-joi-types
.
If you define Joi schemae that look like the following:
import joi = require("joi");
export const Country = joi.string().notes("type:Country");
export const Currency = joi.string().notes("type:Currency");
export const Package = joi.string().valid(["gold", "silver", "bronze"]).notes("type:Package");
export const Purchase = joi.object().keys({
id: joi.string().guid().required(),
country: Country,
currency: Currency.required(),
cents: joi.number().required(),
notes: joi.array().items(joi.string()),
package: Package.required(),
}).notes("type:Purchase");
Then this project will generate you Typescript typings as follows:
export type Uuid = string;
export type Country = string;
export type Currency = string;
export type Package = "gold" | "silver" | "bronze";
export interface Purchase {
id: Uuid;
country?: Country;
currency: Currency;
cents: number;
notes?: string[];
package: Package;
}
If you are defining string types and find that you get unexpected results, please follow the following:
import * as joi from "joi";
import cloneSchema from "@musicglue/joi-ts-generator"
export const Country = cloneSchema(joi.string());
export const Currency = cloneSchema(joi.string());
This prevents our internals from overwriting themselves as we parse the schemae. Joi objects are immutable, other than the entrypoint...
FAQs
Generate Typescript Types from Joi schemas
We found that @musicglue/joi-ts-generator demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 8 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.
Research
/Security News
Ongoing npm supply chain attack spreads to DuckDB: multiple packages compromised with the same wallet-drainer malware.
Security News
The MCP Steering Committee has launched the official MCP Registry in preview, a central hub for discovering and publishing MCP servers.