Product
Socket Now Supports uv.lock Files
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
@produck/mold
Advanced tools
A tool module for defining data type schemas to a normalize function. It published as a "Dual CommonJS/ES module" package but ESM first. It is very simple, flexible and extensible.
There is also some default "Catcher". It is helping to throw a "TypeError" with good readability messages. It can be also defined a completely custom catcher to handle the cause if a bad value provided.
It can work in "node.js" and browsers. It is also very friendly with "tree shaking", using "Rollup" so try ESM.
$ npm install @produck/mold
The "options" in fs.appendFile(path, data[, options], callback),
import { S, C, P, Normalizer } from '@produck/mold';
const flags = [
'a', 'ax', 'a+', 'ax+', 'as', 'as+',
'r', 'r+', 'rs+',
'w', 'wx', 'w+', 'wx+'
];
const schema = S.Object({
encoding: P.OrNull(P.String('utf-8')),
mode: P.Integer(0o666),
flag: P.Enum(flags);
});
const normalize = Normalizer(schema);
normalize(); // ok
normalize({ encoding: 'utf-8' }); // ok
normalize({ encoding: 123 }); // throws
normalize({ flag: 'f' }); // throws
As esModule,
import {
Simplex, Simp, S,
Compound, Comp, C,
Preset, Pre, P,
Normalizer, Circular, Custom,
Catcher
} from '@produck/mold';
// Or
import * as Mold from '@produck/mold';
// Your code...
As CommonJS,
const {
Simplex, Simp, S,
Compound, Comp, C,
Preset, Pre, P,
Normalizer, Circular, Custom,
Catcher
} = require('@produck/mold');
// Or
const Mold = require('@produck/mold');
// Your code...
import { S, P, Normalizer } from '@produck/mold';
const OptionsSchema = S.Object({
foo: P.String('bar')
});
const normalize = Normalizer(OptionsSchema);
const finalOptions = normalize();
import { Simplex } from '@produck/mold';
import net from 'node:net';
// A optional schema.
const IPv4 = Simplex.Value(net.isIPv4, 'IP string', () => '0.0.0.0');
// A required schmea
const IPv4 = Simplex.Value(net.isIPv4, 'IP string');
const l0 = (_value, _empty) => {
// Some statement...
}
import { S, Simp, Simplex } from '@produck/mold';
Simplex.Value();
Simplex.Object();
Simplex.Array();
Simplex.Tuple();
import { C, Comp, Compound } from '@produck/mold';
Compound.Not();
Compound.And();
Compound.Or();
Compound.If();
import { Circular, Custom } from '@produck/mold';
Circular();
Custom();
import { P, Pre, Preset } from '@produck/mold';
Preset.Constant();
Preset.Enum();
Preset.Null;
Preset.NotNull;
Preset.Instance();
Preset.OrNull();
Preset.Number();
...
FAQs
For helping to create a final options from a defined specification.
The npm package @produck/mold receives a total of 78 weekly downloads. As such, @produck/mold popularity was classified as not popular.
We found that @produck/mold demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 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 now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
Research
Security News
Socket researchers have discovered multiple malicious npm packages targeting Solana private keys, abusing Gmail to exfiltrate the data and drain Solana wallets.
Security News
PEP 770 proposes adding SBOM support to Python packages to improve transparency and catch hidden non-Python dependencies that security tools often miss.