Transforms a JSON Schema to a type tcomb type.
- Clone the latest repo
- Make sure you have 2FA turned on for your npm account, you will need that on to update the package. If you do not have access to the Rhumbix npm account - ask a fellow dev to add you.
- Login to npm -
npm login
- Install node modules -
yarn install
- Update “version” in
package.json
within the repo directory to the next version number - Create a new build -
yarn run build
- Publish the new build -
npm publish
(It will say “This operation requires a one-time password.” - enter your 6-digit 2FA code)
- tcomb ^2.0.0 -> tcomb-json-schema ^0.2.5
- tcomb ^3.0.0 -> tcomb-json-schema ^0.3.0
If you want to get a general feel for how this works please head over to https://gcanti.github.io/resources/json-schema-to-tcomb/playground/playground.html
Example
var transform = require('tcomb-json-schema');
var TcombType = transform({
"type": "string",
"enum": ["Street", "Avenue", "Boulevard"]
});
Registers a new format.
Example
function isEmail(x) {
return /(.)+@(.)+/.test(x);
}
transform.registerFormat('email', isEmail);
var TcombType = transform({
"type": "string",
"format": 'email'
});
Removes all registered formats.
transform.resetFormats();
Registers a new type.
Example
var Str10 = t.subtype(t.Str, function (s) {
return s.length <= 10;
}, 'Str10');
transform.registerType('string10', Str10);
var TcombType = transform({
type: "string10"
});
Removes all registered types.
transform.resetTypes();
type string
accepts the property pattern
which will be used as a predicate (the value of the string must match the regular expression defined in pattern
). Example:
{
"type": "string",
"pattern": "^abc$"
}
The pattern may be either
- a simple string with a regex pattern, e.g.
^abc$
(example matching the exact wordabc
), or - a string version of a regex literal with a leading and trailing slash and optional regex flags after the last slash, e.g.
/^abc$/i
(example matchingabc
case insensetive)
If you don't care of values you can describe enums as an array:
"street_type": {
"type": "string",
"enum": ["Street", "Avenue", "Boulevard"]
}
or if you want to specify values, describe it as an object where the keys are the values:
"street_type": {
"type": "string",
"enum": {
st: "Street",
ave: "Avenue",
blvd: "Boulevard"
}
}