National Palace Museum

    simple-plist
    TypeScript icon, indicating that this package has built-in type declarations

    1.3.1 • Public • Published

    simple-plist

    npm npm

    A simple API for interacting with binary and plain text plist data.

    Installation

    # via npm
    npm install simple-plist
    
    # via yarn
    yarn add simple-plist

    Synchronous API

    const plist = require("simple-plist");
    
    let data;
    
    // read
    data = plist.readFileSync("/path/to/some.plist");
    
    // write xml
    plist.writeFileSync("/path/to/plaintext.plist", data);
    
    // write binary
    plist.writeBinaryFileSync("/path/to/binary.plist", data);

    Asynchronous API

    Note: all of the async examples can optionally be converted to promises using node's util.promisify.

    const plist = require("simple-plist");
    
    let data;
    
    function callback(err, contents) {
      if (err) throw err;
      data = contents;
    }
    
    // read
    plist.readFile("/path/to/some.plist", callback);
    
    // write xml
    plist.writeFile("/path/to/plaintext.plist", data, callback);
    
    // write binary
    plist.writeBinaryFile("/path/to/binary.plist", data, callback);

    In Memory

    plist.stringify()

    const plist = require("simple-plist");
    
    // Convert an object to a plist xml string
    plist.stringify({ name: "Joe", answer: 42 });
    
    /*
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
      <dict>
        <key>name</key>
        <string>Joe</string>
        <key>answer</key>
        <integer>42</integer>
      </dict>
    </plist>
    */

    plist.parse()

    const plist = require("simple-plist");
    
    const xml = `<plist>
    	<dict>
    		<key>name</key>
    		<string>Joe</string>
    	</dict>
    </plist>`;
    
    plist.parse(xml);
    // { "name": "Joe" }

    TypeScript Support

    All functions have typescript signatures, but there are a few handy generics that are worth pointing out. Those generics belong to parse, readFile, and readFileSync. Here's an example:

    import { parse, readFile, readFileSync } from "simple-plist";
    
    type Profile = {
      name: string;
      answer: number;
    };
    
    const xml = `<plist>
    	<dict>
    		<key>name</key>
    		<string>Joe</string>
    		<key>answer</key>
    		<integer>42</integer>
    	</dict>
    </plist>`;
    
    // typed string parsing
    const { answer } = parse<Profile>(xml);
    // answer = 42;
    
    // typed file loading
    const { name } = readFileSync<Profile>("/path/to/profile.plist");

    Install

    npm i simple-plist

    DownloadsWeekly Downloads

    969,215

    Version

    1.3.1

    License

    MIT

    Unpacked Size

    20.1 kB

    Total Files

    23

    Last publish

    Collaborators

    • wollardj