This might be crazy, but why not something like:
```coffee
custom_t: custom_t =
  objectid:
    ref: "#/definitions/objectid"
    definition: objectid: { type: 'string', pattern: '^[0-9a-fA-F]{24}$' }
  date_or_datetime:
    ref: "#/definitions/date_or_datetime"
    definition: date_or_datetime: { type: 'string', pattern: DATE_OR_DATETIME_REGEX.toString()[1..-2] }

module.exports = () ->
  _.deepClone custom_t
```
I don't like the functions in the structure - then half the object is protected and half not, and things become hard to reason about and to select, filter, etc.