1.0.4 • Published 3 years ago

@pa-media-group/ts-iptc-ninjs-type v1.0.4

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

IPTC NinJS V1.3 Type Definition

Typescript type definition of IPTCs NinJS V1.3 standard.

Installation

npm i @pa-media-group/ts-iptc-ninjs-type

Usage

IptcNinjs Type

import { IptcNinjs } from 'ts-iptc-ninjs-type';

const typed: IptcNinjs = {
  "uri": "https://myuri.com/test/1"
};

The IPTC NinJS 1.3 schema allows for pattern properties as defined at the top level by: -

"^description_[a-zA-Z0-9_]+": {
  "title": "Description",
  "description": "A free-form textual description of the content of the item. (The string appended to description_ in the property name should reflect the format and/or the purpose of the text, separating the parts with _). nar:description",
  "type": "string"
},
"^body_[a-zA-Z0-9_]+": {
  "title": "Body",
  "description": "The textual content of the news object. (The string appended to body_ in the property name should reflect the format and/or the purpose of the text, separating the parts with _). nar:inlineData or nar:inlineXML",
  "type": "string"
},
"^headline_[a-zA-Z0-9_]+": {
  "title": "Extra headlines",
  "description": "Additional headlines or strings of that type can be handled here. This is not replacing the main headline-property in ninjs. (The string appended to headline_ in the property name should reflect the format and/or the purpose of the text, separating the parts with _) nar:headline with roles issue #13. (Added in 1.3)",
  "type": "string"
}

Also within 'place': -

"^geometry_[a-zA-Z0-9_]+": {
  "description": "An object holding geo data of this place. Could be of any relevant geo data JSON object definition.",
  "type": "object"
}

Without being opinionated on the patterns users of the IptcNinjs interface will choose to use these partially defined pattern properties could not be represented in the interface.

To use these it is recommended you extend the interface to your needs e.g.

import { IptcNinjs } from 'ts-iptc-ninjs-type';

interface Ninjs extends IptcNinjs {
  description_html?: string,
  description_text?: string,
}
import { IptcNinjs, NinjsLink } from 'ts-iptc-ninjs-type';

interface NinjsPlace extends NinjsLink {
  geometry_example?: Record<string, unknown>;
}

interface Ninjs extends IptcNinjs {
  place?: NinjsPlace[]
}

Validating JSON

Included is a validator which can be used to ensure JSON conforms to the IPTC Ninjs 1.3 schema it can be used as follows: -

import { IptcNinjs, IptcNinjsValidator } from 'ts-iptc-ninjs-type';

const validator: IptcNinjsValidator = new IptcNinjsValidator();
const typed: IptcNinjs = {
  "uri": "https://myuri.com/test/1"
};
const valid: boolean = validator.validate(typed);
1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago