mirror of
https://github.com/S2-/gitlit
synced 2025-08-03 12:50:04 +02:00
packager
This commit is contained in:
4
app/node_modules/plist/.jshintrc
generated
vendored
Normal file
4
app/node_modules/plist/.jshintrc
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"laxbreak": true,
|
||||
"laxcomma": true
|
||||
}
|
43
app/node_modules/plist/.travis.yml
generated
vendored
Normal file
43
app/node_modules/plist/.travis.yml
generated
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
sudo: false
|
||||
|
||||
language: node_js
|
||||
|
||||
node_js:
|
||||
- '0.10'
|
||||
- '0.12'
|
||||
- '1'
|
||||
- '2'
|
||||
- '3'
|
||||
- '4'
|
||||
- '5'
|
||||
- '6'
|
||||
|
||||
env:
|
||||
global:
|
||||
- secure: xlLmWO7akYQjmDgrv6/b/ZMGILF8FReD+k6A/u8pYRD2JW29hhwvRwIQGcKp9+zmJdn4i5M4D1/qJkCeI3pdhAYBDHvzHOHSEwLJz1ESB2Crv6fa69CtpIufQkWvIxmZoU49tCaLpMBaIroGihJ4DAXdIVOIz6Ur9vXLDhGsE4c=
|
||||
- secure: aQ46RdxL10xR5ZJJTMUKdH5k4tdrzgZ87nlwHC+pTr6bfRw3UKYC+6Rm7yQpg9wq0Io9O9dYCP007gQGSWstbjr1+jXNu/ubtNG+q5cpWBQZZZ013VHh9QJTf1MnetsZxbv8Yhrjg590s6vruT0oqesOnB2CizO/BsKxnY37Nos=
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- node_js: '0.10'
|
||||
env: BROWSER_NAME=chrome BROWSER_VERSION=latest
|
||||
- node_js: '0.10'
|
||||
env: BROWSER_NAME=chrome BROWSER_VERSION=29
|
||||
- node_js: '0.10'
|
||||
env: BROWSER_NAME=firefox BROWSER_VERSION=latest
|
||||
- node_js: '0.10'
|
||||
env: BROWSER_NAME=opera BROWSER_VERSION=latest
|
||||
- node_js: '0.10'
|
||||
env: BROWSER_NAME=safari BROWSER_VERSION=latest
|
||||
- node_js: '0.10'
|
||||
env: BROWSER_NAME=safari BROWSER_VERSION=7
|
||||
- node_js: '0.10'
|
||||
env: BROWSER_NAME=safari BROWSER_VERSION=6
|
||||
- node_js: '0.10'
|
||||
env: BROWSER_NAME=safari BROWSER_VERSION=5
|
||||
- node_js: '0.10'
|
||||
env: BROWSER_NAME=ie BROWSER_VERSION=11
|
||||
- node_js: '0.10'
|
||||
env: BROWSER_NAME=ie BROWSER_VERSION=10
|
||||
- node_js: '0.10'
|
||||
env: BROWSER_NAME=ie BROWSER_VERSION=9
|
149
app/node_modules/plist/History.md
generated
vendored
Normal file
149
app/node_modules/plist/History.md
generated
vendored
Normal file
@@ -0,0 +1,149 @@
|
||||
2.1.0 / 2017-05-04
|
||||
==================
|
||||
|
||||
* [[`e4f06669bb`]](https://github.com/TooTallNate/plist.js/commit/e4f06669bb51d2e65654df7c39aab52bc3bf4e8a) - update license (extend copyright term) (Mike Reinstein)
|
||||
* [[`edc6e41035`]](https://github.com/TooTallNate/plist.js/commit/edc6e4103546b1d7518a577e7c202c305a8abec0) - update module deps (Mike Reinstein)
|
||||
* [[`85d11c48ef`](https://github.com/TooTallNate/plist.js/commit/85d11c48eff02312cbdd67f46fd8e74b0d372ca1)] - Harden test-cases and implementation to align with other implementations (Björn Brauer)
|
||||
* [[`7619537eaa`]](https://github.com/TooTallNate/plist.js/commit/7619537eaa9e3e5a80829e759c004d2e017a07d2) review feedback: early returns and constants for nodeTypes (Björn Brauer)
|
||||
|
||||
2.0.1 / 2016-08-16
|
||||
==================
|
||||
|
||||
* [[`de136c8388`](https://github.com/TooTallNate/plist/commit/de136c8388)] - bad npm release… (Nathan Rajlich)
|
||||
|
||||
2.0.0 / 2016-08-16
|
||||
==================
|
||||
|
||||
* [[`90deef5d43`](https://github.com/TooTallNate/plist/commit/90deef5d43)] - remove deprecated functions (Nathan Rajlich)
|
||||
* [[`d475cd8ce9`](https://github.com/TooTallNate/plist/commit/d475cd8ce9)] - Added travis ci support for node 6 (Amila Welihinda)
|
||||
* [[`04c8ee7646`](https://github.com/TooTallNate/plist/commit/04c8ee7646)] - update dependencies (Mitchell Hentges)
|
||||
* [[`97c02b3f05`](https://github.com/TooTallNate/plist/commit/97c02b3f05)] - **travis**: add `sudo: false` and test more node versions (Nathan Rajlich)
|
||||
* [[`54c821ec29`](https://github.com/TooTallNate/plist/commit/54c821ec29)] - #71 - fixed and added test (Andrew Goldis)
|
||||
* [[`4afb7c5079`](https://github.com/TooTallNate/plist/commit/4afb7c5079)] - fix `Cannot read property 'nodeValue' of undefined exception` that is thrown when a `<key></key>` construct appears in plist (Chris Kinsman)
|
||||
* [[`f360d7d685`](https://github.com/TooTallNate/plist/commit/f360d7d685)] - #66 - fixed empty keys and added tests (Andrew Goldis)
|
||||
* [[`421c7f26e9`](https://github.com/TooTallNate/plist/commit/421c7f26e9)] - #66 - fixed empty key (Andrew Goldis)
|
||||
* [[`a88aa4dca7`](https://github.com/TooTallNate/plist/commit/a88aa4dca7)] - add verbose examples (mrzmyr)
|
||||
|
||||
1.2.0 / 2015-11-10
|
||||
==================
|
||||
|
||||
* package: update "browserify" to v12.0.1
|
||||
* package: update "zuul" to v3.7.2
|
||||
* package: update "xmlbuilder" to v4.0.0
|
||||
* package: update "util-deprecate" to v1.0.2
|
||||
* package: update "mocha" to v2.3.3
|
||||
* package: update "base64-js" to v0.0.8
|
||||
* build: omit undefined values
|
||||
* travis: add node 4.0 and 4.1 to test matrix
|
||||
|
||||
1.1.0 / 2014-08-27
|
||||
==================
|
||||
|
||||
* package: update "browserify" to v5.10.1
|
||||
* package: update "zuul" to v1.10.2
|
||||
* README: add "Sauce Test Status" build badge
|
||||
* travis: use new "plistjs" sauce credentials
|
||||
* travis: set up zuul saucelabs automated testing
|
||||
|
||||
1.0.1 / 2014-06-25
|
||||
==================
|
||||
|
||||
* add .zuul.yml file for browser testing
|
||||
* remove Testling stuff
|
||||
* build: fix global variable `val` leak
|
||||
* package: use --check-leaks when running mocha tests
|
||||
* README: update examples to use preferred API
|
||||
* package: add "browser" keyword
|
||||
|
||||
1.0.0 / 2014-05-20
|
||||
==================
|
||||
|
||||
* package: remove "android-browser"
|
||||
* test: add <dict> build() test
|
||||
* test: re-add the empty string build() test
|
||||
* test: remove "fixtures" and legacy "tests" dir
|
||||
* test: add some more build() tests
|
||||
* test: add a parse() CDATA test
|
||||
* test: starting on build() tests
|
||||
* test: more parse() tests
|
||||
* package: attempt to fix "android-browser" testling
|
||||
* parse: better <data> with newline handling
|
||||
* README: add Testling badge
|
||||
* test: add <data> node tests
|
||||
* test: add a <date> parse() test
|
||||
* travis: don't test node v0.6 or v0.8
|
||||
* test: some more parse() tests
|
||||
* test: add simple <string> parsing test
|
||||
* build: add support for an optional "opts" object
|
||||
* package: test mobile devices
|
||||
* test: use multiline to inline the XML
|
||||
* package: beautify
|
||||
* package: fix "mocha" harness
|
||||
* package: more testling browsers
|
||||
* build: add the "version=1.0" attribute
|
||||
* beginnings of "mocha" tests
|
||||
* build: more JSDocs
|
||||
* tests: add test that ensures that empty string conversion works
|
||||
* build: update "xmlbuilder" to v2.2.1
|
||||
* parse: ignore comment and cdata nodes
|
||||
* tests: make the "Newlines" test actually contain a newline
|
||||
* parse: lint
|
||||
* test travis
|
||||
* README: add Travis CI badge
|
||||
* add .travis.yml file
|
||||
* build: updated DTD to reflect name change
|
||||
* parse: return falsey values in an Array plist
|
||||
* build: fix encoding a typed array in the browser
|
||||
* build: add support for Typed Arrays and ArrayBuffers
|
||||
* build: more lint
|
||||
* build: slight cleanup and optimizations
|
||||
* build: use .txt() for the "date" value
|
||||
* parse: always return a Buffer for <data> nodes
|
||||
* build: don't interpret Strings as base64
|
||||
* dist: commit prebuilt plist*.js files
|
||||
* parse: fix typo in deprecate message
|
||||
* parse: fix parse() return value
|
||||
* parse: add jsdoc comments for the deprecated APIs
|
||||
* parse: add `parse()` function
|
||||
* node, parse: use `util-deprecate` module
|
||||
* re-implemented parseFile to be asynchronous
|
||||
* node: fix jsdoc comment
|
||||
* Makefile: fix "node" require stubbing
|
||||
* examples: add "browser" example
|
||||
* package: tweak "main"
|
||||
* package: remove "engines" field
|
||||
* Makefile: fix --exclude command for browserify
|
||||
* package: update "description"
|
||||
* lib: more styling
|
||||
* Makefile: add -build.js and -parse.js dist files
|
||||
* lib: separate out the parse and build logic into their own files
|
||||
* Makefile: add makefile with browserify build rules
|
||||
* package: add "browserify" as a dev dependency
|
||||
* plist: tabs to spaces (again)
|
||||
* add a .jshintrc file
|
||||
* LICENSE: update
|
||||
* node-webkit support
|
||||
* Ignore tests/ in .npmignore file
|
||||
* Remove duplicate devDependencies key
|
||||
* Remove trailing whitespace
|
||||
* adding recent contributors. Bumping npm package number (patch release)
|
||||
* Fixed node.js string handling
|
||||
* bumping version number
|
||||
* Fixed global variable plist leak
|
||||
* patch release 0.4.1
|
||||
* removed temporary debug output file
|
||||
* flipping the cases for writing data and string elements in build(). removed the 125 length check. Added validation of base64 encoding for data fields when parsing. added unit tests.
|
||||
* fixed syntax errors in README examples (issue #20)
|
||||
* added Sync versions of calls. added deprecation warnings for old method calls. updated documentation. If the resulting object from parseStringSync is an array with 1 element, return just the element. If a plist string or file doesnt have a <plist> tag as the document root element, fail noisily (issue #15)
|
||||
* incrementing package version
|
||||
* added cross platform base64 encode/decode for data elements (issue #17.) Comments and hygiene.
|
||||
* refactored the code to use a DOM parser instead of SAX. closes issues #5 and #16
|
||||
* rolling up package version
|
||||
* updated base64 detection regexp. updated README. hygiene.
|
||||
* refactored the build function. Fixes issue #14
|
||||
* refactored tests. Modified tests from issue #9. thanks @sylvinus
|
||||
* upgrade xmlbuilder package version. this is why .end() was needed in last commit; breaking change to xmlbuilder lib. :/
|
||||
* bug fix in build function, forgot to call .end() Refactored tests to use nodeunit
|
||||
* Implemented support for real, identity tests
|
||||
* Refactored base64 detection - still sloppy, fixed date building. Passing tests OK.
|
||||
* Implemented basic plist builder that turns an existing JS object into plist XML. date, real and data types still need to be implemented.
|
24
app/node_modules/plist/LICENSE
generated
vendored
Normal file
24
app/node_modules/plist/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
(The MIT License)
|
||||
|
||||
Copyright (c) 2010-2017 Nathan Rajlich <nathan@tootallnate.net>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
files (the "Software"), to deal in the Software without
|
||||
restriction, including without limitation the rights to use,
|
||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following
|
||||
conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
76
app/node_modules/plist/Makefile
generated
vendored
Normal file
76
app/node_modules/plist/Makefile
generated
vendored
Normal file
@@ -0,0 +1,76 @@
|
||||
|
||||
# get Makefile directory name: http://stackoverflow.com/a/5982798/376773
|
||||
THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
|
||||
THIS_DIR:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd)
|
||||
|
||||
# BIN directory
|
||||
BIN := $(THIS_DIR)/node_modules/.bin
|
||||
|
||||
# applications
|
||||
NODE ?= node
|
||||
NPM ?= $(NODE) $(shell which npm)
|
||||
BROWSERIFY ?= $(NODE) $(BIN)/browserify
|
||||
MOCHA ?= $(NODE) $(BIN)/mocha
|
||||
ZUUL ?= $(NODE) $(BIN)/zuul
|
||||
|
||||
REPORTER ?= spec
|
||||
|
||||
all: dist/plist.js dist/plist-build.js dist/plist-parse.js
|
||||
|
||||
install: node_modules
|
||||
|
||||
clean:
|
||||
@rm -rf node_modules dist
|
||||
|
||||
dist:
|
||||
@mkdir -p $@
|
||||
|
||||
dist/plist-build.js: node_modules lib/build.js dist
|
||||
@$(BROWSERIFY) \
|
||||
--standalone plist \
|
||||
lib/build.js > $@
|
||||
|
||||
dist/plist-parse.js: node_modules lib/parse.js dist
|
||||
@$(BROWSERIFY) \
|
||||
--standalone plist \
|
||||
lib/parse.js > $@
|
||||
|
||||
dist/plist.js: node_modules lib/*.js dist
|
||||
@$(BROWSERIFY) \
|
||||
--standalone plist \
|
||||
--ignore lib/node.js \
|
||||
lib/plist.js > $@
|
||||
|
||||
node_modules: package.json
|
||||
@NODE_ENV= $(NPM) install
|
||||
@touch node_modules
|
||||
|
||||
test:
|
||||
@if [ "x$(BROWSER_NAME)" = "x" ]; then \
|
||||
$(MAKE) test-node; \
|
||||
else \
|
||||
$(MAKE) test-zuul; \
|
||||
fi
|
||||
|
||||
test-node:
|
||||
@$(MOCHA) \
|
||||
--reporter $(REPORTER) \
|
||||
test/*.js
|
||||
|
||||
test-zuul:
|
||||
@if [ "x$(BROWSER_PLATFORM)" = "x" ]; then \
|
||||
$(ZUUL) \
|
||||
--ui mocha-bdd \
|
||||
--browser-name $(BROWSER_NAME) \
|
||||
--browser-version $(BROWSER_VERSION) \
|
||||
test/*.js; \
|
||||
else \
|
||||
$(ZUUL) \
|
||||
--ui mocha-bdd \
|
||||
--browser-name $(BROWSER_NAME) \
|
||||
--browser-version $(BROWSER_VERSION) \
|
||||
--browser-platform "$(BROWSER_PLATFORM)" \
|
||||
test/*.js; \
|
||||
fi
|
||||
|
||||
.PHONY: all install clean test test-node test-zuul
|
141
app/node_modules/plist/README.md
generated
vendored
Normal file
141
app/node_modules/plist/README.md
generated
vendored
Normal file
@@ -0,0 +1,141 @@
|
||||
plist.js
|
||||
========
|
||||
### Mac OS X Plist parser/builder for Node.js and browsers
|
||||
|
||||
[](https://saucelabs.com/u/plistjs)
|
||||
|
||||
[](https://travis-ci.org/TooTallNate/plist.js)
|
||||
|
||||
Provides facilities for reading and writing Mac OS X Plist (property list)
|
||||
files. These are often used in programming OS X and iOS applications, as
|
||||
well as the iTunes configuration XML file.
|
||||
|
||||
Plist files represent stored programming "object"s. They are very similar
|
||||
to JSON. A valid Plist file is representable as a native JavaScript Object
|
||||
and vice-versa.
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
### Node.js
|
||||
|
||||
Install using `npm`:
|
||||
|
||||
``` bash
|
||||
$ npm install --save plist
|
||||
```
|
||||
|
||||
Then `require()` the _plist_ module in your file:
|
||||
|
||||
``` js
|
||||
var plist = require('plist');
|
||||
|
||||
// now use the `parse()` and `build()` functions
|
||||
var val = plist.parse('<plist><string>Hello World!</string></plist>');
|
||||
console.log(val); // "Hello World!"
|
||||
```
|
||||
|
||||
|
||||
### Browser
|
||||
|
||||
Include the `dist/plist.js` in a `<script>` tag in your HTML file:
|
||||
|
||||
``` html
|
||||
<script src="plist.js"></script>
|
||||
<script>
|
||||
// now use the `parse()` and `build()` functions
|
||||
var val = plist.parse('<plist><string>Hello World!</string></plist>');
|
||||
console.log(val); // "Hello World!"
|
||||
</script>
|
||||
```
|
||||
|
||||
|
||||
## API
|
||||
|
||||
### Parsing
|
||||
|
||||
Parsing a plist from filename:
|
||||
|
||||
``` javascript
|
||||
var fs = require('fs');
|
||||
var plist = require('plist');
|
||||
|
||||
var obj = plist.parse(fs.readFileSync('myPlist.plist', 'utf8'));
|
||||
console.log(JSON.stringify(obj));
|
||||
```
|
||||
|
||||
Parsing a plist from string payload:
|
||||
|
||||
``` javascript
|
||||
var plist = require('plist');
|
||||
|
||||
var xml =
|
||||
'<?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">' +
|
||||
'<key>metadata</key>' +
|
||||
'<dict>' +
|
||||
'<key>bundle-identifier</key>' +
|
||||
'<string>com.company.app</string>' +
|
||||
'<key>bundle-version</key>' +
|
||||
'<string>0.1.1</string>' +
|
||||
'<key>kind</key>' +
|
||||
'<string>software</string>' +
|
||||
'<key>title</key>' +
|
||||
'<string>AppName</string>' +
|
||||
'</dict>' +
|
||||
'</plist>';
|
||||
|
||||
console.log(plist.parse(xml));
|
||||
|
||||
// [
|
||||
// "metadata",
|
||||
// {
|
||||
// "bundle-identifier": "com.company.app",
|
||||
// "bundle-version": "0.1.1",
|
||||
// "kind": "software",
|
||||
// "title": "AppName"
|
||||
// }
|
||||
// ]
|
||||
```
|
||||
|
||||
### Building
|
||||
|
||||
Given an existing JavaScript Object, you can turn it into an XML document
|
||||
that complies with the plist DTD:
|
||||
|
||||
``` javascript
|
||||
var plist = require('plist');
|
||||
|
||||
var json = [
|
||||
"metadata",
|
||||
{
|
||||
"bundle-identifier": "com.company.app",
|
||||
"bundle-version": "0.1.1",
|
||||
"kind": "software",
|
||||
"title": "AppName"
|
||||
}
|
||||
];
|
||||
|
||||
console.log(plist.build(json));
|
||||
|
||||
// <?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">
|
||||
// <key>metadata</key>
|
||||
// <dict>
|
||||
// <key>bundle-identifier</key>
|
||||
// <string>com.company.app</string>
|
||||
// <key>bundle-version</key>
|
||||
// <string>0.1.1</string>
|
||||
// <key>kind</key>
|
||||
// <string>software</string>
|
||||
// <key>title</key>
|
||||
// <string>AppName</string>
|
||||
// </dict>
|
||||
// </plist>
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
[(The MIT License)](LICENSE)
|
3982
app/node_modules/plist/dist/plist-build.js
generated
vendored
Normal file
3982
app/node_modules/plist/dist/plist-build.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4055
app/node_modules/plist/dist/plist-parse.js
generated
vendored
Normal file
4055
app/node_modules/plist/dist/plist-parse.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
7987
app/node_modules/plist/dist/plist.js
generated
vendored
Normal file
7987
app/node_modules/plist/dist/plist.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
14
app/node_modules/plist/examples/browser/index.html
generated
vendored
Normal file
14
app/node_modules/plist/examples/browser/index.html
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>plist.js browser example</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
</head>
|
||||
<body>
|
||||
<script src="../../dist/plist.js"></script>
|
||||
<script>
|
||||
// TODO: add <input type=file> drag and drop example
|
||||
console.log(plist);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
13
app/node_modules/plist/index.js
generated
vendored
Normal file
13
app/node_modules/plist/index.js
generated
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
/**
|
||||
* Parser functions.
|
||||
*/
|
||||
|
||||
var parserFunctions = require('./lib/parse');
|
||||
Object.keys(parserFunctions).forEach(function (k) { exports[k] = parserFunctions[k]; });
|
||||
|
||||
/**
|
||||
* Builder functions.
|
||||
*/
|
||||
|
||||
var builderFunctions = require('./lib/build');
|
||||
Object.keys(builderFunctions).forEach(function (k) { exports[k] = builderFunctions[k]; });
|
137
app/node_modules/plist/lib/build.js
generated
vendored
Normal file
137
app/node_modules/plist/lib/build.js
generated
vendored
Normal file
@@ -0,0 +1,137 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var base64 = require('base64-js');
|
||||
var xmlbuilder = require('xmlbuilder');
|
||||
|
||||
/**
|
||||
* Module exports.
|
||||
*/
|
||||
|
||||
exports.build = build;
|
||||
|
||||
/**
|
||||
* Accepts a `Date` instance and returns an ISO date string.
|
||||
*
|
||||
* @param {Date} d - Date instance to serialize
|
||||
* @returns {String} ISO date string representation of `d`
|
||||
* @api private
|
||||
*/
|
||||
|
||||
function ISODateString(d){
|
||||
function pad(n){
|
||||
return n < 10 ? '0' + n : n;
|
||||
}
|
||||
return d.getUTCFullYear()+'-'
|
||||
+ pad(d.getUTCMonth()+1)+'-'
|
||||
+ pad(d.getUTCDate())+'T'
|
||||
+ pad(d.getUTCHours())+':'
|
||||
+ pad(d.getUTCMinutes())+':'
|
||||
+ pad(d.getUTCSeconds())+'Z';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the internal "type" of `obj` via the
|
||||
* `Object.prototype.toString()` trick.
|
||||
*
|
||||
* @param {Mixed} obj - any value
|
||||
* @returns {String} the internal "type" name
|
||||
* @api private
|
||||
*/
|
||||
|
||||
var toString = Object.prototype.toString;
|
||||
function type (obj) {
|
||||
var m = toString.call(obj).match(/\[object (.*)\]/);
|
||||
return m ? m[1] : m;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate an XML plist string from the input object `obj`.
|
||||
*
|
||||
* @param {Object} obj - the object to convert
|
||||
* @param {Object} [opts] - optional options object
|
||||
* @returns {String} converted plist XML string
|
||||
* @api public
|
||||
*/
|
||||
|
||||
function build (obj, opts) {
|
||||
var XMLHDR = {
|
||||
version: '1.0',
|
||||
encoding: 'UTF-8'
|
||||
};
|
||||
|
||||
var XMLDTD = {
|
||||
pubid: '-//Apple//DTD PLIST 1.0//EN',
|
||||
sysid: 'http://www.apple.com/DTDs/PropertyList-1.0.dtd'
|
||||
};
|
||||
|
||||
var doc = xmlbuilder.create('plist');
|
||||
|
||||
doc.dec(XMLHDR.version, XMLHDR.encoding, XMLHDR.standalone);
|
||||
doc.dtd(XMLDTD.pubid, XMLDTD.sysid);
|
||||
doc.att('version', '1.0');
|
||||
|
||||
walk_obj(obj, doc);
|
||||
|
||||
if (!opts) opts = {};
|
||||
// default `pretty` to `true`
|
||||
opts.pretty = opts.pretty !== false;
|
||||
return doc.end(opts);
|
||||
}
|
||||
|
||||
/**
|
||||
* depth first, recursive traversal of a javascript object. when complete,
|
||||
* next_child contains a reference to the build XML object.
|
||||
*
|
||||
* @api private
|
||||
*/
|
||||
|
||||
function walk_obj(next, next_child) {
|
||||
var tag_type, i, prop;
|
||||
var name = type(next);
|
||||
|
||||
if ('Undefined' == name) {
|
||||
return;
|
||||
} else if (Array.isArray(next)) {
|
||||
next_child = next_child.ele('array');
|
||||
for (i = 0; i < next.length; i++) {
|
||||
walk_obj(next[i], next_child);
|
||||
}
|
||||
|
||||
} else if (Buffer.isBuffer(next)) {
|
||||
next_child.ele('data').raw(next.toString('base64'));
|
||||
|
||||
} else if ('Object' == name) {
|
||||
next_child = next_child.ele('dict');
|
||||
for (prop in next) {
|
||||
if (next.hasOwnProperty(prop)) {
|
||||
next_child.ele('key').txt(prop);
|
||||
walk_obj(next[prop], next_child);
|
||||
}
|
||||
}
|
||||
|
||||
} else if ('Number' == name) {
|
||||
// detect if this is an integer or real
|
||||
// TODO: add an ability to force one way or another via a "cast"
|
||||
tag_type = (next % 1 === 0) ? 'integer' : 'real';
|
||||
next_child.ele(tag_type).txt(next.toString());
|
||||
|
||||
} else if ('Date' == name) {
|
||||
next_child.ele('date').txt(ISODateString(new Date(next)));
|
||||
|
||||
} else if ('Boolean' == name) {
|
||||
next_child.ele(next ? 'true' : 'false');
|
||||
|
||||
} else if ('String' == name) {
|
||||
next_child.ele('string').txt(next);
|
||||
|
||||
} else if ('ArrayBuffer' == name) {
|
||||
next_child.ele('data').raw(base64.fromByteArray(next));
|
||||
|
||||
} else if (next && next.buffer && 'ArrayBuffer' == type(next.buffer)) {
|
||||
// a typed array
|
||||
next_child.ele('data').raw(base64.fromByteArray(new Uint8Array(next.buffer), next_child));
|
||||
|
||||
}
|
||||
}
|
215
app/node_modules/plist/lib/parse.js
generated
vendored
Normal file
215
app/node_modules/plist/lib/parse.js
generated
vendored
Normal file
@@ -0,0 +1,215 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var DOMParser = require('xmldom').DOMParser;
|
||||
|
||||
/**
|
||||
* Module exports.
|
||||
*/
|
||||
|
||||
exports.parse = parse;
|
||||
|
||||
var TEXT_NODE = 3;
|
||||
var CDATA_NODE = 4;
|
||||
var COMMENT_NODE = 8;
|
||||
|
||||
|
||||
/**
|
||||
* We ignore raw text (usually whitespace), <!-- xml comments -->,
|
||||
* and raw CDATA nodes.
|
||||
*
|
||||
* @param {Element} node
|
||||
* @returns {Boolean}
|
||||
* @api private
|
||||
*/
|
||||
|
||||
function shouldIgnoreNode (node) {
|
||||
return node.nodeType === TEXT_NODE
|
||||
|| node.nodeType === COMMENT_NODE
|
||||
|| node.nodeType === CDATA_NODE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the node is empty. Some plist file has such node:
|
||||
* <key />
|
||||
* this node shoud be ignored.
|
||||
*
|
||||
* @see https://github.com/TooTallNate/plist.js/issues/66
|
||||
* @param {Element} node
|
||||
* @returns {Boolean}
|
||||
* @api private
|
||||
*/
|
||||
function isEmptyNode(node){
|
||||
if(!node.childNodes || node.childNodes.length === 0) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function invariant(test, message) {
|
||||
if (!test) {
|
||||
throw new Error(message);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses a Plist XML string. Returns an Object.
|
||||
*
|
||||
* @param {String} xml - the XML String to decode
|
||||
* @returns {Mixed} the decoded value from the Plist XML
|
||||
* @api public
|
||||
*/
|
||||
|
||||
function parse (xml) {
|
||||
var doc = new DOMParser().parseFromString(xml);
|
||||
invariant(
|
||||
doc.documentElement.nodeName === 'plist',
|
||||
'malformed document. First element should be <plist>'
|
||||
);
|
||||
var plist = parsePlistXML(doc.documentElement);
|
||||
|
||||
// the root <plist> node gets interpreted as an Array,
|
||||
// so pull out the inner data first
|
||||
if (plist.length == 1) plist = plist[0];
|
||||
|
||||
return plist;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert an XML based plist document into a JSON representation.
|
||||
*
|
||||
* @param {Object} xml_node - current XML node in the plist
|
||||
* @returns {Mixed} built up JSON object
|
||||
* @api private
|
||||
*/
|
||||
|
||||
function parsePlistXML (node) {
|
||||
var i, new_obj, key, val, new_arr, res, counter, type;
|
||||
|
||||
if (!node)
|
||||
return null;
|
||||
|
||||
if (node.nodeName === 'plist') {
|
||||
new_arr = [];
|
||||
if (isEmptyNode(node)) {
|
||||
return new_arr;
|
||||
}
|
||||
for (i=0; i < node.childNodes.length; i++) {
|
||||
if (!shouldIgnoreNode(node.childNodes[i])) {
|
||||
new_arr.push( parsePlistXML(node.childNodes[i]));
|
||||
}
|
||||
}
|
||||
return new_arr;
|
||||
} else if (node.nodeName === 'dict') {
|
||||
new_obj = {};
|
||||
key = null;
|
||||
counter = 0;
|
||||
if (isEmptyNode(node)) {
|
||||
return new_obj;
|
||||
}
|
||||
for (i=0; i < node.childNodes.length; i++) {
|
||||
if (shouldIgnoreNode(node.childNodes[i])) continue;
|
||||
if (counter % 2 === 0) {
|
||||
invariant(
|
||||
node.childNodes[i].nodeName === 'key',
|
||||
'Missing key while parsing <dict/>.'
|
||||
);
|
||||
key = parsePlistXML(node.childNodes[i]);
|
||||
} else {
|
||||
invariant(
|
||||
node.childNodes[i].nodeName !== 'key',
|
||||
'Unexpected key "'
|
||||
+ parsePlistXML(node.childNodes[i])
|
||||
+ '" while parsing <dict/>.'
|
||||
);
|
||||
new_obj[key] = parsePlistXML(node.childNodes[i]);
|
||||
}
|
||||
counter += 1;
|
||||
}
|
||||
if (counter % 2 === 1) {
|
||||
throw new Error('Missing value for "' + key + '" while parsing <dict/>');
|
||||
}
|
||||
return new_obj;
|
||||
|
||||
} else if (node.nodeName === 'array') {
|
||||
new_arr = [];
|
||||
if (isEmptyNode(node)) {
|
||||
return new_arr;
|
||||
}
|
||||
for (i=0; i < node.childNodes.length; i++) {
|
||||
if (!shouldIgnoreNode(node.childNodes[i])) {
|
||||
res = parsePlistXML(node.childNodes[i]);
|
||||
if (null != res) new_arr.push(res);
|
||||
}
|
||||
}
|
||||
return new_arr;
|
||||
|
||||
} else if (node.nodeName === '#text') {
|
||||
// TODO: what should we do with text types? (CDATA sections)
|
||||
|
||||
} else if (node.nodeName === 'key') {
|
||||
if (isEmptyNode(node)) {
|
||||
return '';
|
||||
}
|
||||
return node.childNodes[0].nodeValue;
|
||||
} else if (node.nodeName === 'string') {
|
||||
res = '';
|
||||
if (isEmptyNode(node)) {
|
||||
return res;
|
||||
}
|
||||
for (i=0; i < node.childNodes.length; i++) {
|
||||
var type = node.childNodes[i].nodeType;
|
||||
if (type === TEXT_NODE || type === CDATA_NODE) {
|
||||
res += node.childNodes[i].nodeValue;
|
||||
}
|
||||
}
|
||||
return res;
|
||||
|
||||
} else if (node.nodeName === 'integer') {
|
||||
invariant(
|
||||
!isEmptyNode(node),
|
||||
'Cannot parse "" as integer.'
|
||||
);
|
||||
return parseInt(node.childNodes[0].nodeValue, 10);
|
||||
|
||||
} else if (node.nodeName === 'real') {
|
||||
invariant(
|
||||
!isEmptyNode(node),
|
||||
'Cannot parse "" as real.'
|
||||
);
|
||||
res = '';
|
||||
for (i=0; i < node.childNodes.length; i++) {
|
||||
if (node.childNodes[i].nodeType === TEXT_NODE) {
|
||||
res += node.childNodes[i].nodeValue;
|
||||
}
|
||||
}
|
||||
return parseFloat(res);
|
||||
|
||||
} else if (node.nodeName === 'data') {
|
||||
res = '';
|
||||
if (isEmptyNode(node)) {
|
||||
return new Buffer(res, 'base64');
|
||||
}
|
||||
for (i=0; i < node.childNodes.length; i++) {
|
||||
if (node.childNodes[i].nodeType === TEXT_NODE) {
|
||||
res += node.childNodes[i].nodeValue.replace(/\s+/g, '');
|
||||
}
|
||||
}
|
||||
return new Buffer(res, 'base64');
|
||||
|
||||
} else if (node.nodeName === 'date') {
|
||||
invariant(
|
||||
!isEmptyNode(node),
|
||||
'Cannot parse "" as Date.'
|
||||
)
|
||||
return new Date(node.childNodes[0].nodeValue);
|
||||
|
||||
} else if (node.nodeName === 'true') {
|
||||
return true;
|
||||
|
||||
} else if (node.nodeName === 'false') {
|
||||
return false;
|
||||
}
|
||||
}
|
86
app/node_modules/plist/package.json
generated
vendored
Normal file
86
app/node_modules/plist/package.json
generated
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
{
|
||||
"_from": "plist@^2.0.0",
|
||||
"_id": "plist@2.1.0",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha1-V8zbeggh3yGDEhejytVOPhRqECU=",
|
||||
"_location": "/plist",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "range",
|
||||
"registry": true,
|
||||
"raw": "plist@^2.0.0",
|
||||
"name": "plist",
|
||||
"escapedName": "plist",
|
||||
"rawSpec": "^2.0.0",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "^2.0.0"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/electron-osx-sign",
|
||||
"/electron-packager"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/plist/-/plist-2.1.0.tgz",
|
||||
"_shasum": "57ccdb7a0821df21831217a3cad54e3e146a1025",
|
||||
"_spec": "plist@^2.0.0",
|
||||
"_where": "E:\\projects\\p\\gitlit\\app\\node_modules\\electron-packager",
|
||||
"author": {
|
||||
"name": "Nathan Rajlich",
|
||||
"email": "nathan@tootallnate.net"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/TooTallNate/node-plist/issues"
|
||||
},
|
||||
"bundleDependencies": false,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Hans Huebner",
|
||||
"email": "hans.huebner@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Pierre Metrailler"
|
||||
},
|
||||
{
|
||||
"name": "Mike Reinstein",
|
||||
"email": "reinstein.mike@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Vladimir Tsvang"
|
||||
},
|
||||
{
|
||||
"name": "Mathieu D'Amours"
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"base64-js": "1.2.0",
|
||||
"xmlbuilder": "8.2.2",
|
||||
"xmldom": "0.1.x"
|
||||
},
|
||||
"deprecated": false,
|
||||
"description": "Mac OS X Plist parser/builder for Node.js and browsers",
|
||||
"devDependencies": {
|
||||
"browserify": "^14.3.0",
|
||||
"mocha": "^3.3.0",
|
||||
"multiline": "^1.0.2",
|
||||
"zuul": "^3.10.1"
|
||||
},
|
||||
"homepage": "https://github.com/TooTallNate/node-plist#readme",
|
||||
"keywords": [
|
||||
"apple",
|
||||
"browser",
|
||||
"mac",
|
||||
"plist",
|
||||
"parser",
|
||||
"xml"
|
||||
],
|
||||
"license": "MIT",
|
||||
"main": "index.js",
|
||||
"name": "plist",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/TooTallNate/node-plist.git"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "make test"
|
||||
},
|
||||
"version": "2.1.0"
|
||||
}
|
Reference in New Issue
Block a user