plist 4.0.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,151 +1,216 @@
1
- plist.js
2
- ========
3
- ### Apple's Property list parser/builder for Node.js and browsers
1
+ # plist.js
4
2
 
5
- [![ci](https://github.com/TooTallNate/plist.js/actions/workflows/ci.yml/badge.svg)](https://github.com/TooTallNate/plist.js/actions/workflows/ci.yml)
3
+ Apple property list parser/builder for Node.js and browsers. Supports **XML**, **binary** (bplist00), and **OpenStep** formats.
6
4
 
7
- Provides facilities for reading and writing Plist (property list) files.
8
- These are often used in programming OS X and iOS applications, as well
9
- as the iTunes configuration XML file.
5
+ [![CI](https://github.com/TooTallNate/plist.js/actions/workflows/ci.yml/badge.svg)](https://github.com/TooTallNate/plist.js/actions/workflows/ci.yml)
6
+ [![npm](https://img.shields.io/npm/v/plist)](https://www.npmjs.com/package/plist)
7
+ [![npm bundle size](https://img.shields.io/bundlephobia/minzip/plist)](https://bundlephobia.com/package/plist)
10
8
 
11
- Plist files represent stored programming "object"s. They are very similar
12
- to JSON. A valid Plist file is representable as a native JavaScript Object
13
- and vice-versa.
9
+ **[Try it in the browser →](https://plist.n8.io/)**
14
10
 
11
+ ## Features
15
12
 
16
- ## Usage
13
+ - **Parse** XML, binary, and OpenStep plists — format is auto-detected
14
+ - **Build** XML and binary plists from JavaScript objects
15
+ - **TypeScript** — written in TypeScript with full type declarations
16
+ - **Browser-optimized** — uses native `DOMParser` in browsers (zero dependencies)
17
+ - **Lightweight** — ~4 KB gzipped in the browser
17
18
 
18
- ### Node.js
19
+ ## Install
19
20
 
20
- Install using `npm`:
21
-
22
- ``` bash
23
- $ npm install plist
21
+ ```bash
22
+ npm install plist
24
23
  ```
25
24
 
26
- Then import the `parse()` and `build()` functions:
25
+ ## Quick Start
27
26
 
28
- ``` js
27
+ ```ts
29
28
  import { parse, build } from 'plist';
30
29
 
31
- const val = parse('<plist><string>Hello World!</string></plist>');
32
- console.log(val); // "Hello World!"
30
+ // Parse any plist format (auto-detected)
31
+ const obj = parse('<plist version="1.0"><string>Hello!</string></plist>');
32
+ console.log(obj); // "Hello!"
33
+
34
+ // Build an XML plist from a JS object
35
+ const xml = build({ name: 'My App', version: 42 });
36
+ console.log(xml);
37
+ ```
38
+
39
+ ## Parsing
40
+
41
+ ### XML Plists
42
+
43
+ ```ts
44
+ import { readFileSync } from 'node:fs';
45
+ import { parse } from 'plist';
46
+
47
+ const xml = readFileSync('Info.plist', 'utf8');
48
+ const obj = parse(xml);
33
49
  ```
34
50
 
51
+ ### Binary Plists
35
52
 
36
- ### Browser
53
+ Binary plists (bplist00) are auto-detected when passed as a `Uint8Array` or `ArrayBuffer`. You can also use `parseBinary()` directly:
37
54
 
38
- Use an [import map](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script/type/importmap)
39
- to resolve the bare module specifiers used by plist and its dependencies,
40
- then import directly from the source:
55
+ ```ts
56
+ import { readFileSync } from 'node:fs';
57
+ import { parse, parseBinary } from 'plist';
41
58
 
42
- ``` html
43
- <script type="importmap">
44
- {
45
- "imports": {
46
- "@xmldom/xmldom": "https://esm.sh/@xmldom/xmldom",
47
- "xmlbuilder": "https://esm.sh/xmlbuilder"
48
- }
49
- }
50
- </script>
51
- <script type="module">
52
- import { parse, build } from './node_modules/plist/index.js';
59
+ // Auto-detected from binary data
60
+ const buf = readFileSync('Info.plist');
61
+ const obj = parse(new Uint8Array(buf));
53
62
 
54
- const val = parse('<plist><string>Hello World!</string></plist>');
55
- console.log(val); // "Hello World!"
56
- </script>
63
+ // Or use parseBinary() directly
64
+ const obj2 = parseBinary(new Uint8Array(buf));
57
65
  ```
58
66
 
59
- See the [browser example](./examples/browser/) for a drag-and-drop demo.
67
+ ### OpenStep Plists
60
68
 
69
+ The old-style ASCII format (used by `defaults read` on macOS) is auto-detected when the input starts with `{` or `(`:
61
70
 
62
- ## API
71
+ ```ts
72
+ import { parse, parseOpenStep } from 'plist';
63
73
 
64
- ### Parsing
74
+ // Auto-detected
75
+ const obj = parse('{ CFBundleName = "My App"; CFBundleVersion = 42; }');
65
76
 
66
- Parsing a plist from filename:
77
+ // Or use parseOpenStep() directly
78
+ const obj2 = parseOpenStep('( item1, item2, item3 )');
79
+ ```
67
80
 
68
- ``` js
69
- import { readFileSync } from 'node:fs';
70
- import { parse } from 'plist';
81
+ ## Building
82
+
83
+ ### XML Output
71
84
 
72
- const obj = parse(readFileSync('myPlist.plist', 'utf8'));
73
- console.log(JSON.stringify(obj));
85
+ ```ts
86
+ import { build } from 'plist';
87
+
88
+ const xml = build({
89
+ CFBundleName: 'My App',
90
+ CFBundleVersion: '1.0',
91
+ LSRequiresIPhoneOS: true,
92
+ UISupportedInterfaceOrientations: [
93
+ 'UIInterfaceOrientationPortrait',
94
+ 'UIInterfaceOrientationLandscapeLeft',
95
+ ],
96
+ });
74
97
  ```
75
98
 
76
- Parsing a plist from string payload:
99
+ Output:
100
+
101
+ ```xml
102
+ <?xml version="1.0" encoding="UTF-8"?>
103
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
104
+ <plist version="1.0">
105
+ <dict>
106
+ <key>CFBundleName</key>
107
+ <string>My App</string>
108
+ <key>CFBundleVersion</key>
109
+ <string>1.0</string>
110
+ <key>LSRequiresIPhoneOS</key>
111
+ <true/>
112
+ <key>UISupportedInterfaceOrientations</key>
113
+ <array>
114
+ <string>UIInterfaceOrientationPortrait</string>
115
+ <string>UIInterfaceOrientationLandscapeLeft</string>
116
+ </array>
117
+ </dict>
118
+ </plist>
119
+ ```
77
120
 
78
- ``` js
79
- import { parse } from 'plist';
121
+ ### Binary Output
122
+
123
+ ```ts
124
+ import { writeFileSync } from 'node:fs';
125
+ import { buildBinary } from 'plist';
126
+
127
+ const data = buildBinary({
128
+ CFBundleName: 'My App',
129
+ CFBundleVersion: '1.0',
130
+ });
80
131
 
81
- const xml =
82
- '<?xml version="1.0" encoding="UTF-8"?>' +
83
- '<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">' +
84
- '<plist version="1.0">' +
85
- '<key>metadata</key>' +
86
- '<dict>' +
87
- '<key>bundle-identifier</key>' +
88
- '<string>com.company.app</string>' +
89
- '<key>bundle-version</key>' +
90
- '<string>0.1.1</string>' +
91
- '<key>kind</key>' +
92
- '<string>software</string>' +
93
- '<key>title</key>' +
94
- '<string>AppName</string>' +
95
- '</dict>' +
96
- '</plist>';
97
-
98
- console.log(parse(xml));
99
-
100
- // [
101
- // "metadata",
102
- // {
103
- // "bundle-identifier": "com.company.app",
104
- // "bundle-version": "0.1.1",
105
- // "kind": "software",
106
- // "title": "AppName"
107
- // }
108
- // ]
132
+ writeFileSync('Info.plist', data);
109
133
  ```
110
134
 
111
- ### Building
135
+ ## Type Mapping
112
136
 
113
- Given an existing JavaScript Object, you can turn it into an XML document
114
- that complies with the plist DTD:
137
+ | Plist Type | JavaScript Type |
138
+ |---|---|
139
+ | `<string>` | `string` |
140
+ | `<integer>` | `number` |
141
+ | `<real>` | `number` |
142
+ | `<true/>` / `<false/>` | `boolean` |
143
+ | `<date>` | `Date` |
144
+ | `<data>` | `Uint8Array` |
145
+ | `<array>` | `Array` |
146
+ | `<dict>` | `Object` |
115
147
 
116
- ``` js
117
- import { build } from 'plist';
148
+ ## Browser Usage
149
+
150
+ In bundled applications (Vite, webpack, etc.), just import normally — the browser-optimized build is selected automatically via [conditional exports](https://nodejs.org/api/packages.html#conditional-exports):
118
151
 
119
- const obj = [
120
- "metadata",
121
- {
122
- "bundle-identifier": "com.company.app",
123
- "bundle-version": "0.1.1",
124
- "kind": "software",
125
- "title": "AppName"
126
- }
127
- ];
128
-
129
- console.log(build(obj));
130
-
131
- // <?xml version="1.0" encoding="UTF-8"?>
132
- // <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
133
- // <plist version="1.0">
134
- // <key>metadata</key>
135
- // <dict>
136
- // <key>bundle-identifier</key>
137
- // <string>com.company.app</string>
138
- // <key>bundle-version</key>
139
- // <string>0.1.1</string>
140
- // <key>kind</key>
141
- // <string>software</string>
142
- // <key>title</key>
143
- // <string>AppName</string>
144
- // </dict>
145
- // </plist>
152
+ ```ts
153
+ import { parse, build } from 'plist';
146
154
  ```
147
155
 
156
+ The browser build uses native `DOMParser` and string-based XML building, so `@xmldom/xmldom` and `xmlbuilder` are not included in the bundle.
157
+
158
+ **[Try the interactive playground →](https://plist.n8.io/)**
159
+
160
+ ## API
161
+
162
+ ### `parse(input)`
163
+
164
+ Parse a plist. Format is auto-detected.
165
+
166
+ - **input**: `string | Uint8Array | ArrayBuffer`
167
+ - **returns**: `PlistValue`
168
+
169
+ ### `parseBinary(data)`
170
+
171
+ Parse a binary plist (bplist00).
172
+
173
+ - **data**: `Uint8Array`
174
+ - **returns**: `PlistValue`
175
+
176
+ ### `parseOpenStep(input)`
177
+
178
+ Parse an OpenStep/ASCII plist.
179
+
180
+ - **input**: `string`
181
+ - **returns**: `PlistValue`
182
+
183
+ ### `build(obj, opts?)`
184
+
185
+ Build an XML plist string.
186
+
187
+ - **obj**: `PlistValue`
188
+ - **opts.pretty**: `boolean` (default: `true`) — pretty-print with indentation
189
+ - **opts.indent**: `string` (default: `" "`) — indentation string
190
+ - **opts.newline**: `string` (default: `"\n"`) — newline string
191
+ - **returns**: `string`
192
+
193
+ ### `buildBinary(obj)`
194
+
195
+ Build a binary plist (bplist00).
196
+
197
+ - **obj**: `PlistValue`
198
+ - **returns**: `Uint8Array`
199
+
200
+ ### `PlistValue`
201
+
202
+ ```ts
203
+ type PlistValue =
204
+ | string
205
+ | number
206
+ | boolean
207
+ | Date
208
+ | Uint8Array
209
+ | PlistValue[]
210
+ | { [key: string]: PlistValue }
211
+ | null;
212
+ ```
148
213
 
149
214
  ## License
150
215
 
151
- [(The MIT License)](LICENSE)
216
+ [MIT](LICENSE)
@@ -0,0 +1,6 @@
1
+ import type { PlistValue } from './parse.js';
2
+ /**
3
+ * Serialize a PlistValue into binary plist format (bplist00).
4
+ */
5
+ export declare function buildBinary(value: PlistValue): Uint8Array;
6
+ //# sourceMappingURL=build-binary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-binary.d.ts","sourceRoot":"","sources":["../src/build-binary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAqQ7C;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAyDzD"}
@@ -0,0 +1,284 @@
1
+ const EPOCH_2001 = 978307200000; // ms between 1970-01-01 and 2001-01-01
2
+ function writeSizedInt(view, offset, size, value) {
3
+ switch (size) {
4
+ case 1:
5
+ view.setUint8(offset, value);
6
+ break;
7
+ case 2:
8
+ view.setUint16(offset, value);
9
+ break;
10
+ case 4:
11
+ view.setUint32(offset, value);
12
+ break;
13
+ }
14
+ }
15
+ function withSizeHeader(typeNibble, size, payload) {
16
+ if (size < 15) {
17
+ const buf = new Uint8Array(1 + payload.length);
18
+ buf[0] = (typeNibble << 4) | size;
19
+ buf.set(payload, 1);
20
+ return buf;
21
+ }
22
+ const pow = size <= 0xff ? 0 : size <= 0xffff ? 1 : 2;
23
+ const sizeBytes = 1 << pow;
24
+ const buf = new Uint8Array(1 + 1 + sizeBytes + payload.length);
25
+ const v = new DataView(buf.buffer);
26
+ buf[0] = (typeNibble << 4) | 0x0f;
27
+ buf[1] = 0x10 | pow;
28
+ if (sizeBytes === 1)
29
+ v.setUint8(2, size);
30
+ else if (sizeBytes === 2)
31
+ v.setUint16(2, size);
32
+ else
33
+ v.setUint32(2, size);
34
+ buf.set(payload, 2 + sizeBytes);
35
+ return buf;
36
+ }
37
+ /**
38
+ * Flatten a PlistValue into an object table, returning the list of entries.
39
+ * The root object is always at index 0.
40
+ */
41
+ function flattenObjects(root) {
42
+ const objects = [];
43
+ // Map for deduplicating primitives (strings, numbers, booleans, null)
44
+ const primitiveMap = new Map();
45
+ function addPrimitive(val) {
46
+ const key = typeof val === 'string'
47
+ ? `s:${val}`
48
+ : typeof val === 'number'
49
+ ? `n:${val}`
50
+ : typeof val === 'boolean'
51
+ ? `b:${val}`
52
+ : typeof val === 'bigint'
53
+ ? `bi:${val}`
54
+ : val === null
55
+ ? 'null'
56
+ : null;
57
+ if (key !== null) {
58
+ const existing = primitiveMap.get(key);
59
+ if (existing !== undefined)
60
+ return existing;
61
+ const idx = objects.length;
62
+ objects.push({ value: val });
63
+ primitiveMap.set(key, idx);
64
+ return idx;
65
+ }
66
+ // Non-deduplicable
67
+ const idx = objects.length;
68
+ objects.push({ value: val });
69
+ return idx;
70
+ }
71
+ function visit(val) {
72
+ if (val === null || typeof val === 'boolean' || typeof val === 'number' || typeof val === 'bigint' || typeof val === 'string') {
73
+ return addPrimitive(val);
74
+ }
75
+ if (val instanceof Date) {
76
+ const idx = objects.length;
77
+ objects.push({ value: val });
78
+ return idx;
79
+ }
80
+ if (val instanceof Uint8Array || val instanceof ArrayBuffer) {
81
+ const idx = objects.length;
82
+ objects.push({ value: val instanceof ArrayBuffer ? new Uint8Array(val) : val });
83
+ return idx;
84
+ }
85
+ if (Array.isArray(val)) {
86
+ const idx = objects.length;
87
+ objects.push({ value: val }); // placeholder
88
+ const childRefs = val.map((item) => visit(item));
89
+ objects[idx].childRefs = childRefs;
90
+ return idx;
91
+ }
92
+ // Check for UID
93
+ const obj = val;
94
+ if ('UID' in obj && typeof obj.UID === 'number' && Object.keys(obj).length === 1) {
95
+ const idx = objects.length;
96
+ objects.push({ value: val });
97
+ return idx;
98
+ }
99
+ // Dict
100
+ const idx = objects.length;
101
+ objects.push({ value: val }); // placeholder
102
+ const keys = Object.keys(obj);
103
+ const keyRefs = keys.map((k) => visit(k));
104
+ const valRefs = keys.map((k) => visit(obj[k]));
105
+ objects[idx].keyRefs = keyRefs;
106
+ objects[idx].valueRefs = valRefs;
107
+ return idx;
108
+ }
109
+ visit(root);
110
+ return objects;
111
+ }
112
+ function serializeObject(entry, refSize) {
113
+ const val = entry.value;
114
+ if (val === null)
115
+ return new Uint8Array([0x00]);
116
+ if (typeof val === 'boolean')
117
+ return new Uint8Array([val ? 0x09 : 0x08]);
118
+ if (typeof val === 'bigint') {
119
+ // Always use 8-byte int for bigint
120
+ const buf = new Uint8Array(9);
121
+ const v = new DataView(buf.buffer);
122
+ buf[0] = 0x13; // int, pow=3 (8 bytes)
123
+ const n = Number(val);
124
+ v.setInt32(1, Math.floor(n / 0x100000000));
125
+ v.setUint32(5, n >>> 0);
126
+ return buf;
127
+ }
128
+ if (typeof val === 'number') {
129
+ // Check if integer
130
+ if (Number.isInteger(val) && val >= -2147483648 && val <= 4294967295) {
131
+ const pow = val < 0 || val > 0xff
132
+ ? (val < 0 || val > 0xffff ? (val < 0 || val > 0xffffffff ? 3 : 2) : 1)
133
+ : 0;
134
+ const byteCount = 1 << pow;
135
+ const buf = new Uint8Array(1 + byteCount);
136
+ const v = new DataView(buf.buffer);
137
+ buf[0] = 0x10 | pow;
138
+ if (byteCount === 1)
139
+ v.setUint8(1, val);
140
+ else if (byteCount === 2)
141
+ v.setUint16(1, val);
142
+ else if (byteCount === 4) {
143
+ if (val < 0)
144
+ v.setInt32(1, val);
145
+ else
146
+ v.setUint32(1, val);
147
+ }
148
+ else {
149
+ v.setInt32(1, Math.floor(val / 0x100000000));
150
+ v.setUint32(5, val >>> 0);
151
+ }
152
+ return buf;
153
+ }
154
+ // Float64
155
+ const buf = new Uint8Array(9);
156
+ const v = new DataView(buf.buffer);
157
+ buf[0] = 0x23;
158
+ v.setFloat64(1, val);
159
+ return buf;
160
+ }
161
+ if (typeof val === 'string') {
162
+ // Check if ASCII
163
+ let isAscii = true;
164
+ for (let i = 0; i < val.length; i++) {
165
+ if (val.charCodeAt(i) > 127) {
166
+ isAscii = false;
167
+ break;
168
+ }
169
+ }
170
+ if (isAscii) {
171
+ const bytes = new Uint8Array(val.length);
172
+ for (let i = 0; i < val.length; i++)
173
+ bytes[i] = val.charCodeAt(i);
174
+ return withSizeHeader(0x5, val.length, bytes);
175
+ }
176
+ // UTF-16
177
+ const payload = new Uint8Array(val.length * 2);
178
+ const pv = new DataView(payload.buffer);
179
+ for (let i = 0; i < val.length; i++) {
180
+ pv.setUint16(i * 2, val.charCodeAt(i));
181
+ }
182
+ return withSizeHeader(0x6, val.length, payload);
183
+ }
184
+ if (val instanceof Date) {
185
+ const buf = new Uint8Array(9);
186
+ const v = new DataView(buf.buffer);
187
+ buf[0] = 0x33;
188
+ v.setFloat64(1, (val.getTime() - EPOCH_2001) / 1000);
189
+ return buf;
190
+ }
191
+ if (val instanceof Uint8Array) {
192
+ return withSizeHeader(0x4, val.length, val);
193
+ }
194
+ if (Array.isArray(val)) {
195
+ const refs = entry.childRefs;
196
+ const payload = new Uint8Array(refs.length * refSize);
197
+ const pv = new DataView(payload.buffer);
198
+ for (let i = 0; i < refs.length; i++) {
199
+ writeSizedInt(pv, i * refSize, refSize, refs[i]);
200
+ }
201
+ return withSizeHeader(0xa, refs.length, payload);
202
+ }
203
+ // Check for UID
204
+ const obj = val;
205
+ if ('UID' in obj && typeof obj.UID === 'number' && Object.keys(obj).length === 1) {
206
+ const uid = obj.UID;
207
+ const size = uid <= 0xff ? 1 : uid <= 0xffff ? 2 : 4;
208
+ const buf = new Uint8Array(1 + size);
209
+ const v = new DataView(buf.buffer);
210
+ buf[0] = 0x80 | (size - 1);
211
+ if (size === 1)
212
+ v.setUint8(1, uid);
213
+ else if (size === 2)
214
+ v.setUint16(1, uid);
215
+ else
216
+ v.setUint32(1, uid);
217
+ return buf;
218
+ }
219
+ // Dict
220
+ const keyRefs = entry.keyRefs;
221
+ const valueRefs = entry.valueRefs;
222
+ const n = keyRefs.length;
223
+ const payload = new Uint8Array(n * 2 * refSize);
224
+ const pv = new DataView(payload.buffer);
225
+ for (let i = 0; i < n; i++) {
226
+ writeSizedInt(pv, i * refSize, refSize, keyRefs[i]);
227
+ }
228
+ for (let i = 0; i < n; i++) {
229
+ writeSizedInt(pv, (n + i) * refSize, refSize, valueRefs[i]);
230
+ }
231
+ return withSizeHeader(0xd, n, payload);
232
+ }
233
+ /**
234
+ * Serialize a PlistValue into binary plist format (bplist00).
235
+ */
236
+ export function buildBinary(value) {
237
+ const entries = flattenObjects(value);
238
+ const objectRefSize = entries.length <= 256 ? 1 : 2;
239
+ // Serialize each object
240
+ const serialized = [];
241
+ for (const entry of entries) {
242
+ serialized.push(serializeObject(entry, objectRefSize));
243
+ }
244
+ // Build offset table
245
+ let currentOffset = 8; // header
246
+ const offsets = [];
247
+ for (const s of serialized) {
248
+ offsets.push(currentOffset);
249
+ currentOffset += s.length;
250
+ }
251
+ const offsetTableOffset = currentOffset;
252
+ const maxOffset = offsetTableOffset;
253
+ const offsetSize = maxOffset <= 0xff ? 1 : maxOffset <= 0xffff ? 2 : 4;
254
+ const totalSize = offsetTableOffset + entries.length * offsetSize + 32;
255
+ const buf = new Uint8Array(totalSize);
256
+ const view = new DataView(buf.buffer);
257
+ // Header
258
+ const header = 'bplist00';
259
+ for (let i = 0; i < 8; i++)
260
+ buf[i] = header.charCodeAt(i);
261
+ // Objects
262
+ let pos = 8;
263
+ for (const s of serialized) {
264
+ buf.set(s, pos);
265
+ pos += s.length;
266
+ }
267
+ // Offset table
268
+ for (let i = 0; i < entries.length; i++) {
269
+ writeSizedInt(view, pos, offsetSize, offsets[i]);
270
+ pos += offsetSize;
271
+ }
272
+ // Trailer (last 32 bytes)
273
+ const trailerStart = totalSize - 32;
274
+ view.setUint8(trailerStart + 6, offsetSize);
275
+ view.setUint8(trailerStart + 7, objectRefSize);
276
+ view.setUint32(trailerStart + 8, 0);
277
+ view.setUint32(trailerStart + 12, entries.length);
278
+ view.setUint32(trailerStart + 16, 0);
279
+ view.setUint32(trailerStart + 20, 0); // top object always 0
280
+ view.setUint32(trailerStart + 24, 0);
281
+ view.setUint32(trailerStart + 28, offsetTableOffset);
282
+ return buf;
283
+ }
284
+ //# sourceMappingURL=build-binary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-binary.js","sourceRoot":"","sources":["../src/build-binary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { PlistValue } from './parse.browser.js';
2
+ export interface BuildOptions {
3
+ pretty?: boolean;
4
+ indent?: string;
5
+ newline?: string;
6
+ [key: string]: unknown;
7
+ }
8
+ /**
9
+ * Generate an XML plist string from the input object `obj`.
10
+ *
11
+ * @param obj - the object to convert
12
+ * @param opts - optional options object
13
+ * @returns converted plist XML string
14
+ */
15
+ export declare function build(obj: PlistValue, opts?: BuildOptions): string;
16
+ //# sourceMappingURL=build.browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.browser.d.ts","sourceRoot":"","sources":["../src/build.browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAarD,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAMD;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,MAAM,CA0ElE"}