# keynote-parser

> A node library that parses Apple's keynote (.key) files.

Latest version **1.0.0** (published 2020-04-06) · 0 weekly downloads

## Install

```sh
npm install keynote-parser
pnpm add keynote-parser
yarn add keynote-parser
bun add keynote-parser
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; large bundle.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.0 |
| Published | 2020-04-06 |
| First published | 2020-04-06 |
| Weekly downloads | 0 |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 8 |
| Unpacked size | 12.5 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | pranaygp |

## Links

- npm: https://www.npmjs.com/package/keynote-parser
- npm.io page: https://npm.io/package/keynote-parser

## Dependencies (8)

- [unzip](https://npm.io/package/unzip.md) ^0.1.11
- [snappy](https://npm.io/package/snappy.md) ^6.2.3
- [varint](https://npm.io/package/varint.md) ^5.0.0
- [fstream](https://npm.io/package/fstream.md) ^1.0.12
- [through2](https://npm.io/package/through2.md) ^3.0.1
- [multipipe](https://npm.io/package/multipipe.md) ^4.0.0
- [node-protobuf](https://npm.io/package/node-protobuf.md) ^1.4.3
- [snappy-stream](https://npm.io/package/snappy-stream.md) ^3.0.1

## Recent versions

- 1.0.0 (latest) — 2020-04-06

## README

# keynote

A node library that parses Apple's keynote (.key) files.

## Usage

```bash
npm install --save keynoteParser
```

```javascript
const fs = require('fs')
const keynote = require('keynote-parser')

const keynoteFile = fs.createReadStream('myPresentation.key')

const data = await keynote(keynoteFile);

// use data
```

# Format for `data`

The data returned by this library is an object with numeric keys. Each record in the object contains a `messages` array with all the information from keynote you need. These message objects have a `type` that gives you information on what you're looking at (like information about s slide's layout, or a text chunk or styling) and also contains references to other objects in the `data` object. The numeric keys are thus useful to contruct a graph (or maybe it's a tree or DAG, but I can't confirm) between all these different messages. 

There are mny different types that you might see and so I haven't spent the time to document them well, so you'll have to rely on exploring the data structure yourself, looking at example projects _(TODO: add a link to example project)_ and looking through the [`.proto` files](/proto) that does a good job of showing you the different schemas for the data you might come accross

# Local setup

Just `git clone` and `npm install` as usual, but the important added step here is that you need to install `protoc` before you can run the `npm run build` step. The easiest way to get `protoc` setup is to go [here](https://github.com/google/protobuf/releases) and download one of the `protoc-{version}-{platform}.zip` files

# Thanks

This library would not have been possible if it wasn't for the all the work done by @obriensp in 2013 that he documented [here](https://github.com/obriensp/iWorkFileFormat/blob/master/Docs/index.md)

---
_Source: https://npm.io/package/keynote-parser · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
