2.2.12 • Published 8 months ago
@hv/datoloader v2.2.12
Dato Loader
Downloads all data from DatoCMS. Data will be simplified. Typescript can be generated.
Usage
import { writeFile } from 'fs/promises';
import { Loader, generateTypescript } from '@hv/datoloader';
const loader = new Loader(process.env.DATO_API_KEY, {
onUpdate,
languages: { de: ['en'] },
});
loader.start();
async function onUpdate(data) {
await writeFile('data.json', JSON.stringify(data, null, 2));
await writeFile('data.ts', generateTypescript(firstLang));
}
Options:
export interface Options {
onUpdate: (payload: Result) => void | null
watch: boolean // keep watching for changes, onUpdate will be called again
changeKey: (key: string) => string // how to change the keys of the data (default: camelcase)
languages?: string[] | { [language: string]: string[] } // langauge: fallbackLanguages
itemVersion: boolean // include item version?
itemCreatedAt: boolean // include item createdAt?
itemUpdatedAt: boolean // include item updatedAt?
environment?: string
draft?: boolean
headers?: Record<string, string>
}
Please note that the resulting data will be simplified to someting like this:
{
"de": {
"itemType": {
"anotherBlock": {
"fields": {
"title": {
"type": "string",
"localized": false,
"required": false
}
}
}
},
"site": {
"name": "Boilerplate",
...
},
"upload": {
"54053638": {
"_id": "54053638",
"size": 9207613,
"width": 3840,
"height": 2160,
"url": "https://www.datocms-assets.com/99255/1682668783-weitsicht-3840x2160.png",
...
}
},
"item": {
"146161091": {
"_id": "146161091",
"_type": "anotherBlock",
"title": "Just Another",
"_updatedAt": "2023-04-28T08:02:27.684Z",
"_createdAt": "2023-04-28T08:02:27.680Z",
"_version": 267617551
}
}
}
}
Later, you can use the generated data and typescript like this:
import { readFile } from 'fs/promises';
import { Result, resolve } from '@hv/datoloader';
export async function loadData() {
const data = JSON.parse(await readFile('data.json'));
return resolve(data) as Result;
}
Resolving will link actual items to their references. So anything like items: ["23434232", "23423423"]
will be resolved to items: [{_id: "23434232", ...}, {_id: "23423423", ...}]
.
2.2.12
8 months ago
2.2.11
9 months ago
2.2.10
9 months ago
2.2.8
2 years ago
2.2.5
2 years ago
2.2.7
2 years ago
2.2.6
2 years ago
2.2.4
2 years ago
2.2.1
2 years ago
2.1.2
2 years ago
2.2.0
2 years ago
2.1.1
2 years ago
2.2.3
2 years ago
2.2.2
2 years ago
2.1.3
2 years ago
2.1.0
2 years ago
2.0.0
2 years ago
1.1.0
2 years ago
1.0.4
2 years ago
1.0.3
3 years ago
1.0.2
3 years ago
1.0.1
3 years ago
1.0.0
3 years ago