Compare commits
14 commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
64652af779 | ||
![]() |
9eab32d573 | ||
![]() |
2cb46cd485 | ||
![]() |
6f1437b55a | ||
![]() |
8ddba38bd5 | ||
![]() |
c5d52a7df5 | ||
![]() |
b86e1b62e2 | ||
![]() |
ef879bb81b | ||
![]() |
54e27f2ad9 | ||
![]() |
b5b5dde9e3 | ||
![]() |
5de4728901 | ||
![]() |
9d1fd0b55f | ||
![]() |
1127130b00 | ||
![]() |
d6af72a3e0 |
104 changed files with 42312 additions and 2137 deletions
|
@ -4,7 +4,8 @@
|
||||||
{
|
{
|
||||||
"kind": "stdout",
|
"kind": "stdout",
|
||||||
"data": {
|
"data": {
|
||||||
"threshold": "info"
|
"threshold": "info",
|
||||||
|
"format": "jsonl_structured"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
|
@ -44,12 +44,12 @@
|
||||||
"name": "Aufstand: Mieten",
|
"name": "Aufstand: Mieten",
|
||||||
"begin": {
|
"begin": {
|
||||||
"timezone_shift": 2,
|
"timezone_shift": 2,
|
||||||
"date": {"year": 2024, "month": 10, "day": 14},
|
"date": {"year": 2024, "month": 11, "day": 14},
|
||||||
"time": {"hour": 12, "minute": 0, "second": 0}
|
"time": {"hour": 12, "minute": 0, "second": 0}
|
||||||
},
|
},
|
||||||
"end": {
|
"end": {
|
||||||
"timezone_shift": 2,
|
"timezone_shift": 2,
|
||||||
"date": {"year": 2024, "month": 10, "day": 14},
|
"date": {"year": 2024, "month": 11, "day": 14},
|
||||||
"time": {"hour": 15, "minute": 0, "second": 0}
|
"time": {"hour": 15, "minute": 0, "second": 0}
|
||||||
},
|
},
|
||||||
"location": "Porada Ninfu, Haupt-Markt",
|
"location": "Porada Ninfu, Haupt-Markt",
|
||||||
|
@ -59,12 +59,12 @@
|
||||||
"name": "Aufstand: Waffen",
|
"name": "Aufstand: Waffen",
|
||||||
"begin": {
|
"begin": {
|
||||||
"timezone_shift": 2,
|
"timezone_shift": 2,
|
||||||
"date": {"year": 2024, "month": 10, "day": 21},
|
"date": {"year": 2024, "month": 11, "day": 21},
|
||||||
"time": {"hour": 12, "minute": 0, "second": 0}
|
"time": {"hour": 12, "minute": 0, "second": 0}
|
||||||
},
|
},
|
||||||
"end": {
|
"end": {
|
||||||
"timezone_shift": 2,
|
"timezone_shift": 2,
|
||||||
"date": {"year": 2024, "month": 10, "day": 21},
|
"date": {"year": 2024, "month": 11, "day": 21},
|
||||||
"time": {"hour": 15, "minute": 0, "second": 0}
|
"time": {"hour": 15, "minute": 0, "second": 0}
|
||||||
},
|
},
|
||||||
"location": "Tandreell, Stoiber-Platz",
|
"location": "Tandreell, Stoiber-Platz",
|
||||||
|
@ -74,12 +74,12 @@
|
||||||
"name": "Aufstand: Essen",
|
"name": "Aufstand: Essen",
|
||||||
"begin": {
|
"begin": {
|
||||||
"timezone_shift": 2,
|
"timezone_shift": 2,
|
||||||
"date": {"year": 2024, "month": 11, "day": 28},
|
"date": {"year": 2024, "month": 12, "day": 28},
|
||||||
"time": {"hour": 12, "minute": 0, "second": 0}
|
"time": {"hour": 12, "minute": 0, "second": 0}
|
||||||
},
|
},
|
||||||
"end": {
|
"end": {
|
||||||
"timezone_shift": 2,
|
"timezone_shift": 2,
|
||||||
"date": {"year": 2024, "month": 11, "day": 28},
|
"date": {"year": 2024, "month": 12, "day": 28},
|
||||||
"time": {"hour": 15, "minute": 0, "second": 0}
|
"time": {"hour": 15, "minute": 0, "second": 0}
|
||||||
},
|
},
|
||||||
"location": "Kawanda, Nord-Bahnhof",
|
"location": "Kawanda, Nord-Bahnhof",
|
||||||
|
@ -113,12 +113,12 @@
|
||||||
"name": "Feier: Bier",
|
"name": "Feier: Bier",
|
||||||
"begin": {
|
"begin": {
|
||||||
"timezone_shift": 2,
|
"timezone_shift": 2,
|
||||||
"date": {"year": 2024, "month": 10, "day": 18},
|
"date": {"year": 2024, "month": 11, "day": 18},
|
||||||
"time": {"hour": 18, "minute": 0, "second": 0}
|
"time": {"hour": 18, "minute": 0, "second": 0}
|
||||||
},
|
},
|
||||||
"end": {
|
"end": {
|
||||||
"timezone_shift": 2,
|
"timezone_shift": 2,
|
||||||
"date": {"year": 2024, "month": 10, "day": 18},
|
"date": {"year": 2024, "month": 11, "day": 18},
|
||||||
"time": {"hour": 23, "minute": 0, "second": 0}
|
"time": {"hour": 23, "minute": 0, "second": 0}
|
||||||
},
|
},
|
||||||
"location": "Rudschadinedschad, Schlamm-Park",
|
"location": "Rudschadinedschad, Schlamm-Park",
|
||||||
|
@ -128,12 +128,12 @@
|
||||||
"name": "Feier: Schnapps",
|
"name": "Feier: Schnapps",
|
||||||
"begin": {
|
"begin": {
|
||||||
"timezone_shift": 2,
|
"timezone_shift": 2,
|
||||||
"date": {"year": 2024, "month": 11, "day": 1},
|
"date": {"year": 2024, "month": 12, "day": 1},
|
||||||
"time": {"hour": 18, "minute": 0, "second": 0}
|
"time": {"hour": 18, "minute": 0, "second": 0}
|
||||||
},
|
},
|
||||||
"end": {
|
"end": {
|
||||||
"timezone_shift": 2,
|
"timezone_shift": 2,
|
||||||
"date": {"year": 2024, "month": 11, "day": 1},
|
"date": {"year": 2024, "month": 12, "day": 1},
|
||||||
"time": {"hour": 23, "minute": 0, "second": 0}
|
"time": {"hour": 23, "minute": 0, "second": 0}
|
||||||
},
|
},
|
||||||
"location": "Kawanda, Ratten-Platz",
|
"location": "Kawanda, Ratten-Platz",
|
||||||
|
@ -163,12 +163,12 @@
|
||||||
"name": "Aufräumen: Flaschen",
|
"name": "Aufräumen: Flaschen",
|
||||||
"begin": {
|
"begin": {
|
||||||
"timezone_shift": 2,
|
"timezone_shift": 2,
|
||||||
"date": {"year": 2024, "month": 10, "day": 24},
|
"date": {"year": 2024, "month": 11, "day": 24},
|
||||||
"time": {"hour": 15, "minute": 0, "second": 0}
|
"time": {"hour": 15, "minute": 0, "second": 0}
|
||||||
},
|
},
|
||||||
"end": {
|
"end": {
|
||||||
"timezone_shift": 2,
|
"timezone_shift": 2,
|
||||||
"date": {"year": 2024, "month": 10, "day": 24},
|
"date": {"year": 2024, "month": 11, "day": 24},
|
||||||
"time": {"hour": 17, "minute": 0, "second": 0}
|
"time": {"hour": 17, "minute": 0, "second": 0}
|
||||||
},
|
},
|
||||||
"location": "Kawanda, Penner-Allee",
|
"location": "Kawanda, Penner-Allee",
|
||||||
|
@ -202,12 +202,12 @@
|
||||||
"name": "Infostand",
|
"name": "Infostand",
|
||||||
"begin": {
|
"begin": {
|
||||||
"timezone_shift": 2,
|
"timezone_shift": 2,
|
||||||
"date": {"year": 2024, "month": 10, "day": 16},
|
"date": {"year": 2024, "month": 11, "day": 16},
|
||||||
"time": {"hour": 10, "minute": 0, "second": 0}
|
"time": {"hour": 10, "minute": 0, "second": 0}
|
||||||
},
|
},
|
||||||
"end": {
|
"end": {
|
||||||
"timezone_shift": 2,
|
"timezone_shift": 2,
|
||||||
"date": {"year": 2024, "month": 10, "day": 16},
|
"date": {"year": 2024, "month": 11, "day": 16},
|
||||||
"time": {"hour": 14, "minute": 0, "second": 0}
|
"time": {"hour": 14, "minute": 0, "second": 0}
|
||||||
},
|
},
|
||||||
"location": "Rudschadinedschad, Schabracken-Markt",
|
"location": "Rudschadinedschad, Schabracken-Markt",
|
||||||
|
|
25
lib/node/node_modules/.package-lock.json
generated
vendored
25
lib/node/node_modules/.package-lock.json
generated
vendored
|
@ -1245,6 +1245,11 @@
|
||||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
|
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
|
"node_modules/sax": {
|
||||||
|
"version": "1.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz",
|
||||||
|
"integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg=="
|
||||||
|
},
|
||||||
"node_modules/semver": {
|
"node_modules/semver": {
|
||||||
"version": "7.6.3",
|
"version": "7.6.3",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
|
||||||
|
@ -1577,6 +1582,26 @@
|
||||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||||
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
|
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
|
||||||
},
|
},
|
||||||
|
"node_modules/xml2js": {
|
||||||
|
"version": "0.6.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz",
|
||||||
|
"integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==",
|
||||||
|
"dependencies": {
|
||||||
|
"sax": ">=0.6.0",
|
||||||
|
"xmlbuilder": "~11.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/xmlbuilder": {
|
||||||
|
"version": "11.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
|
||||||
|
"integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/xtend": {
|
"node_modules/xtend": {
|
||||||
"version": "4.0.2",
|
"version": "4.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
|
||||||
|
|
41
lib/node/node_modules/sax/LICENSE
generated
vendored
Normal file
41
lib/node/node_modules/sax/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
The ISC License
|
||||||
|
|
||||||
|
Copyright (c) 2010-2024 Isaac Z. Schlueter and Contributors
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted, provided that the above
|
||||||
|
copyright notice and this permission notice appear in all copies.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
|
||||||
|
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
====
|
||||||
|
|
||||||
|
`String.fromCodePoint` by Mathias Bynens used according to terms of MIT
|
||||||
|
License, as follows:
|
||||||
|
|
||||||
|
Copyright (c) 2010-2024 Mathias Bynens <https://mathiasbynens.be/>
|
||||||
|
|
||||||
|
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.
|
228
lib/node/node_modules/sax/README.md
generated
vendored
Normal file
228
lib/node/node_modules/sax/README.md
generated
vendored
Normal file
|
@ -0,0 +1,228 @@
|
||||||
|
# sax js
|
||||||
|
|
||||||
|
A sax-style parser for XML and HTML.
|
||||||
|
|
||||||
|
Designed with [node](http://nodejs.org/) in mind, but should work fine in
|
||||||
|
the browser or other CommonJS implementations.
|
||||||
|
|
||||||
|
## What This Is
|
||||||
|
|
||||||
|
* A very simple tool to parse through an XML string.
|
||||||
|
* A stepping stone to a streaming HTML parser.
|
||||||
|
* A handy way to deal with RSS and other mostly-ok-but-kinda-broken XML
|
||||||
|
docs.
|
||||||
|
|
||||||
|
## What This Is (probably) Not
|
||||||
|
|
||||||
|
* An HTML Parser - That's a fine goal, but this isn't it. It's just
|
||||||
|
XML.
|
||||||
|
* A DOM Builder - You can use it to build an object model out of XML,
|
||||||
|
but it doesn't do that out of the box.
|
||||||
|
* XSLT - No DOM = no querying.
|
||||||
|
* 100% Compliant with (some other SAX implementation) - Most SAX
|
||||||
|
implementations are in Java and do a lot more than this does.
|
||||||
|
* An XML Validator - It does a little validation when in strict mode, but
|
||||||
|
not much.
|
||||||
|
* A Schema-Aware XSD Thing - Schemas are an exercise in fetishistic
|
||||||
|
masochism.
|
||||||
|
* A DTD-aware Thing - Fetching DTDs is a much bigger job.
|
||||||
|
|
||||||
|
## Regarding `<!DOCTYPE`s and `<!ENTITY`s
|
||||||
|
|
||||||
|
The parser will handle the basic XML entities in text nodes and attribute
|
||||||
|
values: `& < > ' "`. It's possible to define additional
|
||||||
|
entities in XML by putting them in the DTD. This parser doesn't do anything
|
||||||
|
with that. If you want to listen to the `ondoctype` event, and then fetch
|
||||||
|
the doctypes, and read the entities and add them to `parser.ENTITIES`, then
|
||||||
|
be my guest.
|
||||||
|
|
||||||
|
Unknown entities will fail in strict mode, and in loose mode, will pass
|
||||||
|
through unmolested.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var sax = require("./lib/sax"),
|
||||||
|
strict = true, // set to false for html-mode
|
||||||
|
parser = sax.parser(strict);
|
||||||
|
|
||||||
|
parser.onerror = function (e) {
|
||||||
|
// an error happened.
|
||||||
|
};
|
||||||
|
parser.ontext = function (t) {
|
||||||
|
// got some text. t is the string of text.
|
||||||
|
};
|
||||||
|
parser.onopentag = function (node) {
|
||||||
|
// opened a tag. node has "name" and "attributes"
|
||||||
|
};
|
||||||
|
parser.onattribute = function (attr) {
|
||||||
|
// an attribute. attr has "name" and "value"
|
||||||
|
};
|
||||||
|
parser.onend = function () {
|
||||||
|
// parser stream is done, and ready to have more stuff written to it.
|
||||||
|
};
|
||||||
|
|
||||||
|
parser.write('<xml>Hello, <who name="world">world</who>!</xml>').close();
|
||||||
|
|
||||||
|
// stream usage
|
||||||
|
// takes the same options as the parser
|
||||||
|
var saxStream = require("sax").createStream(strict, options)
|
||||||
|
saxStream.on("error", function (e) {
|
||||||
|
// unhandled errors will throw, since this is a proper node
|
||||||
|
// event emitter.
|
||||||
|
console.error("error!", e)
|
||||||
|
// clear the error
|
||||||
|
this._parser.error = null
|
||||||
|
this._parser.resume()
|
||||||
|
})
|
||||||
|
saxStream.on("opentag", function (node) {
|
||||||
|
// same object as above
|
||||||
|
})
|
||||||
|
// pipe is supported, and it's readable/writable
|
||||||
|
// same chunks coming in also go out.
|
||||||
|
fs.createReadStream("file.xml")
|
||||||
|
.pipe(saxStream)
|
||||||
|
.pipe(fs.createWriteStream("file-copy.xml"))
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Arguments
|
||||||
|
|
||||||
|
Pass the following arguments to the parser function. All are optional.
|
||||||
|
|
||||||
|
`strict` - Boolean. Whether or not to be a jerk. Default: `false`.
|
||||||
|
|
||||||
|
`opt` - Object bag of settings regarding string formatting. All default to `false`.
|
||||||
|
|
||||||
|
Settings supported:
|
||||||
|
|
||||||
|
* `trim` - Boolean. Whether or not to trim text and comment nodes.
|
||||||
|
* `normalize` - Boolean. If true, then turn any whitespace into a single
|
||||||
|
space.
|
||||||
|
* `lowercase` - Boolean. If true, then lowercase tag names and attribute names
|
||||||
|
in loose mode, rather than uppercasing them.
|
||||||
|
* `xmlns` - Boolean. If true, then namespaces are supported.
|
||||||
|
* `position` - Boolean. If false, then don't track line/col/position.
|
||||||
|
* `strictEntities` - Boolean. If true, only parse [predefined XML
|
||||||
|
entities](http://www.w3.org/TR/REC-xml/#sec-predefined-ent)
|
||||||
|
(`&`, `'`, `>`, `<`, and `"`)
|
||||||
|
* `unquotedAttributeValues` - Boolean. If true, then unquoted
|
||||||
|
attribute values are allowed. Defaults to `false` when `strict`
|
||||||
|
is true, `true` otherwise.
|
||||||
|
|
||||||
|
## Methods
|
||||||
|
|
||||||
|
`write` - Write bytes onto the stream. You don't have to do this all at
|
||||||
|
once. You can keep writing as much as you want.
|
||||||
|
|
||||||
|
`close` - Close the stream. Once closed, no more data may be written until
|
||||||
|
it is done processing the buffer, which is signaled by the `end` event.
|
||||||
|
|
||||||
|
`resume` - To gracefully handle errors, assign a listener to the `error`
|
||||||
|
event. Then, when the error is taken care of, you can call `resume` to
|
||||||
|
continue parsing. Otherwise, the parser will not continue while in an error
|
||||||
|
state.
|
||||||
|
|
||||||
|
## Members
|
||||||
|
|
||||||
|
At all times, the parser object will have the following members:
|
||||||
|
|
||||||
|
`line`, `column`, `position` - Indications of the position in the XML
|
||||||
|
document where the parser currently is looking.
|
||||||
|
|
||||||
|
`startTagPosition` - Indicates the position where the current tag starts.
|
||||||
|
|
||||||
|
`closed` - Boolean indicating whether or not the parser can be written to.
|
||||||
|
If it's `true`, then wait for the `ready` event to write again.
|
||||||
|
|
||||||
|
`strict` - Boolean indicating whether or not the parser is a jerk.
|
||||||
|
|
||||||
|
`opt` - Any options passed into the constructor.
|
||||||
|
|
||||||
|
`tag` - The current tag being dealt with.
|
||||||
|
|
||||||
|
And a bunch of other stuff that you probably shouldn't touch.
|
||||||
|
|
||||||
|
## Events
|
||||||
|
|
||||||
|
All events emit with a single argument. To listen to an event, assign a
|
||||||
|
function to `on<eventname>`. Functions get executed in the this-context of
|
||||||
|
the parser object. The list of supported events are also in the exported
|
||||||
|
`EVENTS` array.
|
||||||
|
|
||||||
|
When using the stream interface, assign handlers using the EventEmitter
|
||||||
|
`on` function in the normal fashion.
|
||||||
|
|
||||||
|
`error` - Indication that something bad happened. The error will be hanging
|
||||||
|
out on `parser.error`, and must be deleted before parsing can continue. By
|
||||||
|
listening to this event, you can keep an eye on that kind of stuff. Note:
|
||||||
|
this happens *much* more in strict mode. Argument: instance of `Error`.
|
||||||
|
|
||||||
|
`text` - Text node. Argument: string of text.
|
||||||
|
|
||||||
|
`doctype` - The `<!DOCTYPE` declaration. Argument: doctype string.
|
||||||
|
|
||||||
|
`processinginstruction` - Stuff like `<?xml foo="blerg" ?>`. Argument:
|
||||||
|
object with `name` and `body` members. Attributes are not parsed, as
|
||||||
|
processing instructions have implementation dependent semantics.
|
||||||
|
|
||||||
|
`sgmldeclaration` - Random SGML declarations. Stuff like `<!ENTITY p>`
|
||||||
|
would trigger this kind of event. This is a weird thing to support, so it
|
||||||
|
might go away at some point. SAX isn't intended to be used to parse SGML,
|
||||||
|
after all.
|
||||||
|
|
||||||
|
`opentagstart` - Emitted immediately when the tag name is available,
|
||||||
|
but before any attributes are encountered. Argument: object with a
|
||||||
|
`name` field and an empty `attributes` set. Note that this is the
|
||||||
|
same object that will later be emitted in the `opentag` event.
|
||||||
|
|
||||||
|
`opentag` - An opening tag. Argument: object with `name` and `attributes`.
|
||||||
|
In non-strict mode, tag names are uppercased, unless the `lowercase`
|
||||||
|
option is set. If the `xmlns` option is set, then it will contain
|
||||||
|
namespace binding information on the `ns` member, and will have a
|
||||||
|
`local`, `prefix`, and `uri` member.
|
||||||
|
|
||||||
|
`closetag` - A closing tag. In loose mode, tags are auto-closed if their
|
||||||
|
parent closes. In strict mode, well-formedness is enforced. Note that
|
||||||
|
self-closing tags will have `closeTag` emitted immediately after `openTag`.
|
||||||
|
Argument: tag name.
|
||||||
|
|
||||||
|
`attribute` - An attribute node. Argument: object with `name` and `value`.
|
||||||
|
In non-strict mode, attribute names are uppercased, unless the `lowercase`
|
||||||
|
option is set. If the `xmlns` option is set, it will also contains namespace
|
||||||
|
information.
|
||||||
|
|
||||||
|
`comment` - A comment node. Argument: the string of the comment.
|
||||||
|
|
||||||
|
`opencdata` - The opening tag of a `<![CDATA[` block.
|
||||||
|
|
||||||
|
`cdata` - The text of a `<![CDATA[` block. Since `<![CDATA[` blocks can get
|
||||||
|
quite large, this event may fire multiple times for a single block, if it
|
||||||
|
is broken up into multiple `write()`s. Argument: the string of random
|
||||||
|
character data.
|
||||||
|
|
||||||
|
`closecdata` - The closing tag (`]]>`) of a `<![CDATA[` block.
|
||||||
|
|
||||||
|
`opennamespace` - If the `xmlns` option is set, then this event will
|
||||||
|
signal the start of a new namespace binding.
|
||||||
|
|
||||||
|
`closenamespace` - If the `xmlns` option is set, then this event will
|
||||||
|
signal the end of a namespace binding.
|
||||||
|
|
||||||
|
`end` - Indication that the closed stream has ended.
|
||||||
|
|
||||||
|
`ready` - Indication that the stream has reset, and is ready to be written
|
||||||
|
to.
|
||||||
|
|
||||||
|
`noscript` - In non-strict mode, `<script>` tags trigger a `"script"`
|
||||||
|
event, and their contents are not checked for special xml characters.
|
||||||
|
If you pass `noscript: true`, then this behavior is suppressed.
|
||||||
|
|
||||||
|
## Reporting Problems
|
||||||
|
|
||||||
|
It's best to write a failing test if you find an issue. I will always
|
||||||
|
accept pull requests with failing tests if they demonstrate intended
|
||||||
|
behavior, but it is very hard to figure out what issue you're describing
|
||||||
|
without a test. Writing a test is also the best way for you yourself
|
||||||
|
to figure out if you really understand the issue you think you have with
|
||||||
|
sax-js.
|
1597
lib/node/node_modules/sax/lib/sax.js
generated
vendored
Normal file
1597
lib/node/node_modules/sax/lib/sax.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load diff
29
lib/node/node_modules/sax/package.json
generated
vendored
Normal file
29
lib/node/node_modules/sax/package.json
generated
vendored
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
{
|
||||||
|
"name": "sax",
|
||||||
|
"description": "An evented streaming XML parser in JavaScript",
|
||||||
|
"author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
|
||||||
|
"version": "1.4.1",
|
||||||
|
"main": "lib/sax.js",
|
||||||
|
"license": "ISC",
|
||||||
|
"scripts": {
|
||||||
|
"test": "tap test/*.js --cov -j4",
|
||||||
|
"preversion": "npm test",
|
||||||
|
"postversion": "npm publish",
|
||||||
|
"postpublish": "git push origin --all; git push origin --tags"
|
||||||
|
},
|
||||||
|
"repository": "git://github.com/isaacs/sax-js.git",
|
||||||
|
"files": [
|
||||||
|
"lib/sax.js",
|
||||||
|
"LICENSE",
|
||||||
|
"README.md"
|
||||||
|
],
|
||||||
|
"devDependencies": {
|
||||||
|
"tap": "^15.1.6"
|
||||||
|
},
|
||||||
|
"tap": {
|
||||||
|
"statements": 79,
|
||||||
|
"branches": 75,
|
||||||
|
"functions": 80,
|
||||||
|
"lines": 79
|
||||||
|
}
|
||||||
|
}
|
19
lib/node/node_modules/xml2js/LICENSE
generated
vendored
Normal file
19
lib/node/node_modules/xml2js/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
Copyright 2010, 2011, 2012, 2013. All rights reserved.
|
||||||
|
|
||||||
|
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.
|
507
lib/node/node_modules/xml2js/README.md
generated
vendored
Normal file
507
lib/node/node_modules/xml2js/README.md
generated
vendored
Normal file
|
@ -0,0 +1,507 @@
|
||||||
|
node-xml2js
|
||||||
|
===========
|
||||||
|
|
||||||
|
Ever had the urge to parse XML? And wanted to access the data in some sane,
|
||||||
|
easy way? Don't want to compile a C parser, for whatever reason? Then xml2js is
|
||||||
|
what you're looking for!
|
||||||
|
|
||||||
|
Description
|
||||||
|
===========
|
||||||
|
|
||||||
|
Simple XML to JavaScript object converter. It supports bi-directional conversion.
|
||||||
|
Uses [sax-js](https://github.com/isaacs/sax-js/) and
|
||||||
|
[xmlbuilder-js](https://github.com/oozcitak/xmlbuilder-js/).
|
||||||
|
|
||||||
|
Note: If you're looking for a full DOM parser, you probably want
|
||||||
|
[JSDom](https://github.com/tmpvar/jsdom).
|
||||||
|
|
||||||
|
Installation
|
||||||
|
============
|
||||||
|
|
||||||
|
Simplest way to install `xml2js` is to use [npm](http://npmjs.org), just `npm
|
||||||
|
install xml2js` which will download xml2js and all dependencies.
|
||||||
|
|
||||||
|
xml2js is also available via [Bower](http://bower.io/), just `bower install
|
||||||
|
xml2js` which will download xml2js and all dependencies.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
=====
|
||||||
|
|
||||||
|
No extensive tutorials required because you are a smart developer! The task of
|
||||||
|
parsing XML should be an easy one, so let's make it so! Here's some examples.
|
||||||
|
|
||||||
|
Shoot-and-forget usage
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
You want to parse XML as simple and easy as possible? It's dangerous to go
|
||||||
|
alone, take this:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var parseString = require('xml2js').parseString;
|
||||||
|
var xml = "<root>Hello xml2js!</root>"
|
||||||
|
parseString(xml, function (err, result) {
|
||||||
|
console.dir(result);
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
Can't get easier than this, right? This works starting with `xml2js` 0.2.3.
|
||||||
|
With CoffeeScript it looks like this:
|
||||||
|
|
||||||
|
```coffeescript
|
||||||
|
{parseString} = require 'xml2js'
|
||||||
|
xml = "<root>Hello xml2js!</root>"
|
||||||
|
parseString xml, (err, result) ->
|
||||||
|
console.dir result
|
||||||
|
```
|
||||||
|
|
||||||
|
If you need some special options, fear not, `xml2js` supports a number of
|
||||||
|
options (see below), you can specify these as second argument:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
parseString(xml, {trim: true}, function (err, result) {
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
Simple as pie usage
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
That's right, if you have been using xml-simple or a home-grown
|
||||||
|
wrapper, this was added in 0.1.11 just for you:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var fs = require('fs'),
|
||||||
|
xml2js = require('xml2js');
|
||||||
|
|
||||||
|
var parser = new xml2js.Parser();
|
||||||
|
fs.readFile(__dirname + '/foo.xml', function(err, data) {
|
||||||
|
parser.parseString(data, function (err, result) {
|
||||||
|
console.dir(result);
|
||||||
|
console.log('Done');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
Look ma, no event listeners!
|
||||||
|
|
||||||
|
You can also use `xml2js` from
|
||||||
|
[CoffeeScript](https://github.com/jashkenas/coffeescript), further reducing
|
||||||
|
the clutter:
|
||||||
|
|
||||||
|
```coffeescript
|
||||||
|
fs = require 'fs',
|
||||||
|
xml2js = require 'xml2js'
|
||||||
|
|
||||||
|
parser = new xml2js.Parser()
|
||||||
|
fs.readFile __dirname + '/foo.xml', (err, data) ->
|
||||||
|
parser.parseString data, (err, result) ->
|
||||||
|
console.dir result
|
||||||
|
console.log 'Done.'
|
||||||
|
```
|
||||||
|
|
||||||
|
But what happens if you forget the `new` keyword to create a new `Parser`? In
|
||||||
|
the middle of a nightly coding session, it might get lost, after all. Worry
|
||||||
|
not, we got you covered! Starting with 0.2.8 you can also leave it out, in
|
||||||
|
which case `xml2js` will helpfully add it for you, no bad surprises and
|
||||||
|
inexplicable bugs!
|
||||||
|
|
||||||
|
Promise usage
|
||||||
|
-------------
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var xml2js = require('xml2js');
|
||||||
|
var xml = '<foo></foo>';
|
||||||
|
|
||||||
|
// With parser
|
||||||
|
var parser = new xml2js.Parser(/* options */);
|
||||||
|
parser.parseStringPromise(xml).then(function (result) {
|
||||||
|
console.dir(result);
|
||||||
|
console.log('Done');
|
||||||
|
})
|
||||||
|
.catch(function (err) {
|
||||||
|
// Failed
|
||||||
|
});
|
||||||
|
|
||||||
|
// Without parser
|
||||||
|
xml2js.parseStringPromise(xml /*, options */).then(function (result) {
|
||||||
|
console.dir(result);
|
||||||
|
console.log('Done');
|
||||||
|
})
|
||||||
|
.catch(function (err) {
|
||||||
|
// Failed
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
Parsing multiple files
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
If you want to parse multiple files, you have multiple possibilities:
|
||||||
|
|
||||||
|
* You can create one `xml2js.Parser` per file. That's the recommended one
|
||||||
|
and is promised to always *just work*.
|
||||||
|
* You can call `reset()` on your parser object.
|
||||||
|
* You can hope everything goes well anyway. This behaviour is not
|
||||||
|
guaranteed work always, if ever. Use option #1 if possible. Thanks!
|
||||||
|
|
||||||
|
So you wanna some JSON?
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
Just wrap the `result` object in a call to `JSON.stringify` like this
|
||||||
|
`JSON.stringify(result)`. You get a string containing the JSON representation
|
||||||
|
of the parsed object that you can feed to JSON-hungry consumers.
|
||||||
|
|
||||||
|
Displaying results
|
||||||
|
------------------
|
||||||
|
|
||||||
|
You might wonder why, using `console.dir` or `console.log` the output at some
|
||||||
|
level is only `[Object]`. Don't worry, this is not because `xml2js` got lazy.
|
||||||
|
That's because Node uses `util.inspect` to convert the object into strings and
|
||||||
|
that function stops after `depth=2` which is a bit low for most XML.
|
||||||
|
|
||||||
|
To display the whole deal, you can use `console.log(util.inspect(result, false,
|
||||||
|
null))`, which displays the whole result.
|
||||||
|
|
||||||
|
So much for that, but what if you use
|
||||||
|
[eyes](https://github.com/cloudhead/eyes.js) for nice colored output and it
|
||||||
|
truncates the output with `…`? Don't fear, there's also a solution for that,
|
||||||
|
you just need to increase the `maxLength` limit by creating a custom inspector
|
||||||
|
`var inspect = require('eyes').inspector({maxLength: false})` and then you can
|
||||||
|
easily `inspect(result)`.
|
||||||
|
|
||||||
|
XML builder usage
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
Since 0.4.0, objects can be also be used to build XML:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var xml2js = require('xml2js');
|
||||||
|
|
||||||
|
var obj = {name: "Super", Surname: "Man", age: 23};
|
||||||
|
|
||||||
|
var builder = new xml2js.Builder();
|
||||||
|
var xml = builder.buildObject(obj);
|
||||||
|
```
|
||||||
|
will result in:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<root>
|
||||||
|
<name>Super</name>
|
||||||
|
<Surname>Man</Surname>
|
||||||
|
<age>23</age>
|
||||||
|
</root>
|
||||||
|
```
|
||||||
|
|
||||||
|
At the moment, a one to one bi-directional conversion is guaranteed only for
|
||||||
|
default configuration, except for `attrkey`, `charkey` and `explicitArray` options
|
||||||
|
you can redefine to your taste. Writing CDATA is supported via setting the `cdata`
|
||||||
|
option to `true`.
|
||||||
|
|
||||||
|
To specify attributes:
|
||||||
|
```javascript
|
||||||
|
var xml2js = require('xml2js');
|
||||||
|
|
||||||
|
var obj = {root: {$: {id: "my id"}, _: "my inner text"}};
|
||||||
|
|
||||||
|
var builder = new xml2js.Builder();
|
||||||
|
var xml = builder.buildObject(obj);
|
||||||
|
```
|
||||||
|
will result in:
|
||||||
|
```xml
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<root id="my id">my inner text</root>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Adding xmlns attributes
|
||||||
|
|
||||||
|
You can generate XML that declares XML namespace prefix / URI pairs with xmlns attributes.
|
||||||
|
|
||||||
|
Example declaring a default namespace on the root element:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
let obj = {
|
||||||
|
Foo: {
|
||||||
|
$: {
|
||||||
|
"xmlns": "http://foo.com"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
```
|
||||||
|
Result of `buildObject(obj)`:
|
||||||
|
```xml
|
||||||
|
<Foo xmlns="http://foo.com"/>
|
||||||
|
```
|
||||||
|
Example declaring non-default namespaces on non-root elements:
|
||||||
|
```javascript
|
||||||
|
let obj = {
|
||||||
|
'foo:Foo': {
|
||||||
|
$: {
|
||||||
|
'xmlns:foo': 'http://foo.com'
|
||||||
|
},
|
||||||
|
'bar:Bar': {
|
||||||
|
$: {
|
||||||
|
'xmlns:bar': 'http://bar.com'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Result of `buildObject(obj)`:
|
||||||
|
```xml
|
||||||
|
<foo:Foo xmlns:foo="http://foo.com">
|
||||||
|
<bar:Bar xmlns:bar="http://bar.com"/>
|
||||||
|
</foo:Foo>
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Processing attribute, tag names and values
|
||||||
|
------------------------------------------
|
||||||
|
|
||||||
|
Since 0.4.1 you can optionally provide the parser with attribute name and tag name processors as well as element value processors (Since 0.4.14, you can also optionally provide the parser with attribute value processors):
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
|
||||||
|
function nameToUpperCase(name){
|
||||||
|
return name.toUpperCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
//transform all attribute and tag names and values to uppercase
|
||||||
|
parseString(xml, {
|
||||||
|
tagNameProcessors: [nameToUpperCase],
|
||||||
|
attrNameProcessors: [nameToUpperCase],
|
||||||
|
valueProcessors: [nameToUpperCase],
|
||||||
|
attrValueProcessors: [nameToUpperCase]},
|
||||||
|
function (err, result) {
|
||||||
|
// processed data
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
The `tagNameProcessors` and `attrNameProcessors` options
|
||||||
|
accept an `Array` of functions with the following signature:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
function (name){
|
||||||
|
//do something with `name`
|
||||||
|
return name
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
The `attrValueProcessors` and `valueProcessors` options
|
||||||
|
accept an `Array` of functions with the following signature:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
function (value, name) {
|
||||||
|
//`name` will be the node name or attribute name
|
||||||
|
//do something with `value`, (optionally) dependent on the node/attr name
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Some processors are provided out-of-the-box and can be found in `lib/processors.js`:
|
||||||
|
|
||||||
|
- `normalize`: transforms the name to lowercase.
|
||||||
|
(Automatically used when `options.normalize` is set to `true`)
|
||||||
|
|
||||||
|
- `firstCharLowerCase`: transforms the first character to lower case.
|
||||||
|
E.g. 'MyTagName' becomes 'myTagName'
|
||||||
|
|
||||||
|
- `stripPrefix`: strips the xml namespace prefix. E.g `<foo:Bar/>` will become 'Bar'.
|
||||||
|
(N.B.: the `xmlns` prefix is NOT stripped.)
|
||||||
|
|
||||||
|
- `parseNumbers`: parses integer-like strings as integers and float-like strings as floats
|
||||||
|
E.g. "0" becomes 0 and "15.56" becomes 15.56
|
||||||
|
|
||||||
|
- `parseBooleans`: parses boolean-like strings to booleans
|
||||||
|
E.g. "true" becomes true and "False" becomes false
|
||||||
|
|
||||||
|
Options
|
||||||
|
=======
|
||||||
|
|
||||||
|
Apart from the default settings, there are a number of options that can be
|
||||||
|
specified for the parser. Options are specified by ``new Parser({optionName:
|
||||||
|
value})``. Possible options are:
|
||||||
|
|
||||||
|
* `attrkey` (default: `$`): Prefix that is used to access the attributes.
|
||||||
|
Version 0.1 default was `@`.
|
||||||
|
* `charkey` (default: `_`): Prefix that is used to access the character
|
||||||
|
content. Version 0.1 default was `#`.
|
||||||
|
* `explicitCharkey` (default: `false`) Determines whether or not to use
|
||||||
|
a `charkey` prefix for elements with no attributes.
|
||||||
|
* `trim` (default: `false`): Trim the whitespace at the beginning and end of
|
||||||
|
text nodes.
|
||||||
|
* `normalizeTags` (default: `false`): Normalize all tag names to lowercase.
|
||||||
|
* `normalize` (default: `false`): Trim whitespaces inside text nodes.
|
||||||
|
* `explicitRoot` (default: `true`): Set this if you want to get the root
|
||||||
|
node in the resulting object.
|
||||||
|
* `emptyTag` (default: `''`): what will the value of empty nodes be. In case
|
||||||
|
you want to use an empty object as a default value, it is better to provide a factory
|
||||||
|
function `() => ({})` instead. Without this function a plain object would
|
||||||
|
become a shared reference across all occurrences with unwanted behavior.
|
||||||
|
* `explicitArray` (default: `true`): Always put child nodes in an array if
|
||||||
|
true; otherwise an array is created only if there is more than one.
|
||||||
|
* `ignoreAttrs` (default: `false`): Ignore all XML attributes and only create
|
||||||
|
text nodes.
|
||||||
|
* `mergeAttrs` (default: `false`): Merge attributes and child elements as
|
||||||
|
properties of the parent, instead of keying attributes off a child
|
||||||
|
attribute object. This option is ignored if `ignoreAttrs` is `true`.
|
||||||
|
* `validator` (default `null`): You can specify a callable that validates
|
||||||
|
the resulting structure somehow, however you want. See unit tests
|
||||||
|
for an example.
|
||||||
|
* `xmlns` (default `false`): Give each element a field usually called '$ns'
|
||||||
|
(the first character is the same as attrkey) that contains its local name
|
||||||
|
and namespace URI.
|
||||||
|
* `explicitChildren` (default `false`): Put child elements to separate
|
||||||
|
property. Doesn't work with `mergeAttrs = true`. If element has no children
|
||||||
|
then "children" won't be created. Added in 0.2.5.
|
||||||
|
* `childkey` (default `$$`): Prefix that is used to access child elements if
|
||||||
|
`explicitChildren` is set to `true`. Added in 0.2.5.
|
||||||
|
* `preserveChildrenOrder` (default `false`): Modifies the behavior of
|
||||||
|
`explicitChildren` so that the value of the "children" property becomes an
|
||||||
|
ordered array. When this is `true`, every node will also get a `#name` field
|
||||||
|
whose value will correspond to the XML nodeName, so that you may iterate
|
||||||
|
the "children" array and still be able to determine node names. The named
|
||||||
|
(and potentially unordered) properties are also retained in this
|
||||||
|
configuration at the same level as the ordered "children" array. Added in
|
||||||
|
0.4.9.
|
||||||
|
* `charsAsChildren` (default `false`): Determines whether chars should be
|
||||||
|
considered children if `explicitChildren` is on. Added in 0.2.5.
|
||||||
|
* `includeWhiteChars` (default `false`): Determines whether whitespace-only
|
||||||
|
text nodes should be included. Added in 0.4.17.
|
||||||
|
* `async` (default `false`): Should the callbacks be async? This *might* be
|
||||||
|
an incompatible change if your code depends on sync execution of callbacks.
|
||||||
|
Future versions of `xml2js` might change this default, so the recommendation
|
||||||
|
is to not depend on sync execution anyway. Added in 0.2.6.
|
||||||
|
* `strict` (default `true`): Set sax-js to strict or non-strict parsing mode.
|
||||||
|
Defaults to `true` which is *highly* recommended, since parsing HTML which
|
||||||
|
is not well-formed XML might yield just about anything. Added in 0.2.7.
|
||||||
|
* `attrNameProcessors` (default: `null`): Allows the addition of attribute
|
||||||
|
name processing functions. Accepts an `Array` of functions with following
|
||||||
|
signature:
|
||||||
|
```javascript
|
||||||
|
function (name){
|
||||||
|
//do something with `name`
|
||||||
|
return name
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Added in 0.4.14
|
||||||
|
* `attrValueProcessors` (default: `null`): Allows the addition of attribute
|
||||||
|
value processing functions. Accepts an `Array` of functions with following
|
||||||
|
signature:
|
||||||
|
```javascript
|
||||||
|
function (value, name){
|
||||||
|
//do something with `name`
|
||||||
|
return name
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Added in 0.4.1
|
||||||
|
* `tagNameProcessors` (default: `null`): Allows the addition of tag name
|
||||||
|
processing functions. Accepts an `Array` of functions with following
|
||||||
|
signature:
|
||||||
|
```javascript
|
||||||
|
function (name){
|
||||||
|
//do something with `name`
|
||||||
|
return name
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Added in 0.4.1
|
||||||
|
* `valueProcessors` (default: `null`): Allows the addition of element value
|
||||||
|
processing functions. Accepts an `Array` of functions with following
|
||||||
|
signature:
|
||||||
|
```javascript
|
||||||
|
function (value, name){
|
||||||
|
//do something with `name`
|
||||||
|
return name
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Added in 0.4.6
|
||||||
|
|
||||||
|
Options for the `Builder` class
|
||||||
|
-------------------------------
|
||||||
|
These options are specified by ``new Builder({optionName: value})``.
|
||||||
|
Possible options are:
|
||||||
|
|
||||||
|
* `attrkey` (default: `$`): Prefix that is used to access the attributes.
|
||||||
|
Version 0.1 default was `@`.
|
||||||
|
* `charkey` (default: `_`): Prefix that is used to access the character
|
||||||
|
content. Version 0.1 default was `#`.
|
||||||
|
* `rootName` (default `root` or the root key name): root element name to be used in case
|
||||||
|
`explicitRoot` is `false` or to override the root element name.
|
||||||
|
* `renderOpts` (default `{ 'pretty': true, 'indent': ' ', 'newline': '\n' }`):
|
||||||
|
Rendering options for xmlbuilder-js.
|
||||||
|
* pretty: prettify generated XML
|
||||||
|
* indent: whitespace for indentation (only when pretty)
|
||||||
|
* newline: newline char (only when pretty)
|
||||||
|
* `xmldec` (default `{ 'version': '1.0', 'encoding': 'UTF-8', 'standalone': true }`:
|
||||||
|
XML declaration attributes.
|
||||||
|
* `xmldec.version` A version number string, e.g. 1.0
|
||||||
|
* `xmldec.encoding` Encoding declaration, e.g. UTF-8
|
||||||
|
* `xmldec.standalone` standalone document declaration: true or false
|
||||||
|
* `doctype` (default `null`): optional DTD. Eg. `{'ext': 'hello.dtd'}`
|
||||||
|
* `headless` (default: `false`): omit the XML header. Added in 0.4.3.
|
||||||
|
* `allowSurrogateChars` (default: `false`): allows using characters from the Unicode
|
||||||
|
surrogate blocks.
|
||||||
|
* `cdata` (default: `false`): wrap text nodes in `<![CDATA[ ... ]]>` instead of
|
||||||
|
escaping when necessary. Does not add `<![CDATA[ ... ]]>` if it is not required.
|
||||||
|
Added in 0.4.5.
|
||||||
|
|
||||||
|
`renderOpts`, `xmldec`,`doctype` and `headless` pass through to
|
||||||
|
[xmlbuilder-js](https://github.com/oozcitak/xmlbuilder-js).
|
||||||
|
|
||||||
|
Updating to new version
|
||||||
|
=======================
|
||||||
|
|
||||||
|
Version 0.2 changed the default parsing settings, but version 0.1.14 introduced
|
||||||
|
the default settings for version 0.2, so these settings can be tried before the
|
||||||
|
migration.
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var xml2js = require('xml2js');
|
||||||
|
var parser = new xml2js.Parser(xml2js.defaults["0.2"]);
|
||||||
|
```
|
||||||
|
|
||||||
|
To get the 0.1 defaults in version 0.2 you can just use
|
||||||
|
`xml2js.defaults["0.1"]` in the same place. This provides you with enough time
|
||||||
|
to migrate to the saner way of parsing in `xml2js` 0.2. We try to make the
|
||||||
|
migration as simple and gentle as possible, but some breakage cannot be
|
||||||
|
avoided.
|
||||||
|
|
||||||
|
So, what exactly did change and why? In 0.2 we changed some defaults to parse
|
||||||
|
the XML in a more universal and sane way. So we disabled `normalize` and `trim`
|
||||||
|
so `xml2js` does not cut out any text content. You can reenable this at will of
|
||||||
|
course. A more important change is that we return the root tag in the resulting
|
||||||
|
JavaScript structure via the `explicitRoot` setting, so you need to access the
|
||||||
|
first element. This is useful for anybody who wants to know what the root node
|
||||||
|
is and preserves more information. The last major change was to enable
|
||||||
|
`explicitArray`, so everytime it is possible that one might embed more than one
|
||||||
|
sub-tag into a tag, xml2js >= 0.2 returns an array even if the array just
|
||||||
|
includes one element. This is useful when dealing with APIs that return
|
||||||
|
variable amounts of subtags.
|
||||||
|
|
||||||
|
Running tests, development
|
||||||
|
==========================
|
||||||
|
|
||||||
|
[](https://travis-ci.org/Leonidas-from-XIV/node-xml2js)
|
||||||
|
[](https://coveralls.io/r/Leonidas-from-XIV/node-xml2js?branch=master)
|
||||||
|
[](https://david-dm.org/Leonidas-from-XIV/node-xml2js)
|
||||||
|
|
||||||
|
The development requirements are handled by npm, you just need to install them.
|
||||||
|
We also have a number of unit tests, they can be run using `npm test` directly
|
||||||
|
from the project root. This runs zap to discover all the tests and execute
|
||||||
|
them.
|
||||||
|
|
||||||
|
If you like to contribute, keep in mind that `xml2js` is written in
|
||||||
|
CoffeeScript, so don't develop on the JavaScript files that are checked into
|
||||||
|
the repository for convenience reasons. Also, please write some unit test to
|
||||||
|
check your behaviour and if it is some user-facing thing, add some
|
||||||
|
documentation to this README, so people will know it exists. Thanks in advance!
|
||||||
|
|
||||||
|
Getting support
|
||||||
|
===============
|
||||||
|
|
||||||
|
Please, if you have a problem with the library, first make sure you read this
|
||||||
|
README. If you read this far, thanks, you're good. Then, please make sure your
|
||||||
|
problem really is with `xml2js`. It is? Okay, then I'll look at it. Send me a
|
||||||
|
mail and we can talk. Please don't open issues, as I don't think that is the
|
||||||
|
proper forum for support problems. Some problems might as well really be bugs
|
||||||
|
in `xml2js`, if so I'll let you know to open an issue instead :)
|
||||||
|
|
||||||
|
But if you know you really found a bug, feel free to open an issue instead.
|
12
lib/node/node_modules/xml2js/lib/bom.js
generated
vendored
Normal file
12
lib/node/node_modules/xml2js/lib/bom.js
generated
vendored
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
"use strict";
|
||||||
|
exports.stripBOM = function(str) {
|
||||||
|
if (str[0] === '\uFEFF') {
|
||||||
|
return str.substring(1);
|
||||||
|
} else {
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
}).call(this);
|
127
lib/node/node_modules/xml2js/lib/builder.js
generated
vendored
Normal file
127
lib/node/node_modules/xml2js/lib/builder.js
generated
vendored
Normal file
|
@ -0,0 +1,127 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
"use strict";
|
||||||
|
var builder, defaults, escapeCDATA, requiresCDATA, wrapCDATA,
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
builder = require('xmlbuilder');
|
||||||
|
|
||||||
|
defaults = require('./defaults').defaults;
|
||||||
|
|
||||||
|
requiresCDATA = function(entry) {
|
||||||
|
return typeof entry === "string" && (entry.indexOf('&') >= 0 || entry.indexOf('>') >= 0 || entry.indexOf('<') >= 0);
|
||||||
|
};
|
||||||
|
|
||||||
|
wrapCDATA = function(entry) {
|
||||||
|
return "<![CDATA[" + (escapeCDATA(entry)) + "]]>";
|
||||||
|
};
|
||||||
|
|
||||||
|
escapeCDATA = function(entry) {
|
||||||
|
return entry.replace(']]>', ']]]]><![CDATA[>');
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.Builder = (function() {
|
||||||
|
function Builder(opts) {
|
||||||
|
var key, ref, value;
|
||||||
|
this.options = {};
|
||||||
|
ref = defaults["0.2"];
|
||||||
|
for (key in ref) {
|
||||||
|
if (!hasProp.call(ref, key)) continue;
|
||||||
|
value = ref[key];
|
||||||
|
this.options[key] = value;
|
||||||
|
}
|
||||||
|
for (key in opts) {
|
||||||
|
if (!hasProp.call(opts, key)) continue;
|
||||||
|
value = opts[key];
|
||||||
|
this.options[key] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Builder.prototype.buildObject = function(rootObj) {
|
||||||
|
var attrkey, charkey, render, rootElement, rootName;
|
||||||
|
attrkey = this.options.attrkey;
|
||||||
|
charkey = this.options.charkey;
|
||||||
|
if ((Object.keys(rootObj).length === 1) && (this.options.rootName === defaults['0.2'].rootName)) {
|
||||||
|
rootName = Object.keys(rootObj)[0];
|
||||||
|
rootObj = rootObj[rootName];
|
||||||
|
} else {
|
||||||
|
rootName = this.options.rootName;
|
||||||
|
}
|
||||||
|
render = (function(_this) {
|
||||||
|
return function(element, obj) {
|
||||||
|
var attr, child, entry, index, key, value;
|
||||||
|
if (typeof obj !== 'object') {
|
||||||
|
if (_this.options.cdata && requiresCDATA(obj)) {
|
||||||
|
element.raw(wrapCDATA(obj));
|
||||||
|
} else {
|
||||||
|
element.txt(obj);
|
||||||
|
}
|
||||||
|
} else if (Array.isArray(obj)) {
|
||||||
|
for (index in obj) {
|
||||||
|
if (!hasProp.call(obj, index)) continue;
|
||||||
|
child = obj[index];
|
||||||
|
for (key in child) {
|
||||||
|
entry = child[key];
|
||||||
|
element = render(element.ele(key), entry).up();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (key in obj) {
|
||||||
|
if (!hasProp.call(obj, key)) continue;
|
||||||
|
child = obj[key];
|
||||||
|
if (key === attrkey) {
|
||||||
|
if (typeof child === "object") {
|
||||||
|
for (attr in child) {
|
||||||
|
value = child[attr];
|
||||||
|
element = element.att(attr, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (key === charkey) {
|
||||||
|
if (_this.options.cdata && requiresCDATA(child)) {
|
||||||
|
element = element.raw(wrapCDATA(child));
|
||||||
|
} else {
|
||||||
|
element = element.txt(child);
|
||||||
|
}
|
||||||
|
} else if (Array.isArray(child)) {
|
||||||
|
for (index in child) {
|
||||||
|
if (!hasProp.call(child, index)) continue;
|
||||||
|
entry = child[index];
|
||||||
|
if (typeof entry === 'string') {
|
||||||
|
if (_this.options.cdata && requiresCDATA(entry)) {
|
||||||
|
element = element.ele(key).raw(wrapCDATA(entry)).up();
|
||||||
|
} else {
|
||||||
|
element = element.ele(key, entry).up();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
element = render(element.ele(key), entry).up();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (typeof child === "object") {
|
||||||
|
element = render(element.ele(key), child).up();
|
||||||
|
} else {
|
||||||
|
if (typeof child === 'string' && _this.options.cdata && requiresCDATA(child)) {
|
||||||
|
element = element.ele(key).raw(wrapCDATA(child)).up();
|
||||||
|
} else {
|
||||||
|
if (child == null) {
|
||||||
|
child = '';
|
||||||
|
}
|
||||||
|
element = element.ele(key, child.toString()).up();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return element;
|
||||||
|
};
|
||||||
|
})(this);
|
||||||
|
rootElement = builder.create(rootName, this.options.xmldec, this.options.doctype, {
|
||||||
|
headless: this.options.headless,
|
||||||
|
allowSurrogateChars: this.options.allowSurrogateChars
|
||||||
|
});
|
||||||
|
return render(rootElement, rootObj).end(this.options.renderOpts);
|
||||||
|
};
|
||||||
|
|
||||||
|
return Builder;
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
}).call(this);
|
72
lib/node/node_modules/xml2js/lib/defaults.js
generated
vendored
Normal file
72
lib/node/node_modules/xml2js/lib/defaults.js
generated
vendored
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
exports.defaults = {
|
||||||
|
"0.1": {
|
||||||
|
explicitCharkey: false,
|
||||||
|
trim: true,
|
||||||
|
normalize: true,
|
||||||
|
normalizeTags: false,
|
||||||
|
attrkey: "@",
|
||||||
|
charkey: "#",
|
||||||
|
explicitArray: false,
|
||||||
|
ignoreAttrs: false,
|
||||||
|
mergeAttrs: false,
|
||||||
|
explicitRoot: false,
|
||||||
|
validator: null,
|
||||||
|
xmlns: false,
|
||||||
|
explicitChildren: false,
|
||||||
|
childkey: '@@',
|
||||||
|
charsAsChildren: false,
|
||||||
|
includeWhiteChars: false,
|
||||||
|
async: false,
|
||||||
|
strict: true,
|
||||||
|
attrNameProcessors: null,
|
||||||
|
attrValueProcessors: null,
|
||||||
|
tagNameProcessors: null,
|
||||||
|
valueProcessors: null,
|
||||||
|
emptyTag: ''
|
||||||
|
},
|
||||||
|
"0.2": {
|
||||||
|
explicitCharkey: false,
|
||||||
|
trim: false,
|
||||||
|
normalize: false,
|
||||||
|
normalizeTags: false,
|
||||||
|
attrkey: "$",
|
||||||
|
charkey: "_",
|
||||||
|
explicitArray: true,
|
||||||
|
ignoreAttrs: false,
|
||||||
|
mergeAttrs: false,
|
||||||
|
explicitRoot: true,
|
||||||
|
validator: null,
|
||||||
|
xmlns: false,
|
||||||
|
explicitChildren: false,
|
||||||
|
preserveChildrenOrder: false,
|
||||||
|
childkey: '$$',
|
||||||
|
charsAsChildren: false,
|
||||||
|
includeWhiteChars: false,
|
||||||
|
async: false,
|
||||||
|
strict: true,
|
||||||
|
attrNameProcessors: null,
|
||||||
|
attrValueProcessors: null,
|
||||||
|
tagNameProcessors: null,
|
||||||
|
valueProcessors: null,
|
||||||
|
rootName: 'root',
|
||||||
|
xmldec: {
|
||||||
|
'version': '1.0',
|
||||||
|
'encoding': 'UTF-8',
|
||||||
|
'standalone': true
|
||||||
|
},
|
||||||
|
doctype: null,
|
||||||
|
renderOpts: {
|
||||||
|
'pretty': true,
|
||||||
|
'indent': ' ',
|
||||||
|
'newline': '\n'
|
||||||
|
},
|
||||||
|
headless: false,
|
||||||
|
chunkSize: 10000,
|
||||||
|
emptyTag: '',
|
||||||
|
cdata: false
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
}).call(this);
|
395
lib/node/node_modules/xml2js/lib/parser.js
generated
vendored
Normal file
395
lib/node/node_modules/xml2js/lib/parser.js
generated
vendored
Normal file
|
@ -0,0 +1,395 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
"use strict";
|
||||||
|
var bom, defaults, defineProperty, events, isEmpty, processItem, processors, sax, setImmediate,
|
||||||
|
bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
|
||||||
|
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
sax = require('sax');
|
||||||
|
|
||||||
|
events = require('events');
|
||||||
|
|
||||||
|
bom = require('./bom');
|
||||||
|
|
||||||
|
processors = require('./processors');
|
||||||
|
|
||||||
|
setImmediate = require('timers').setImmediate;
|
||||||
|
|
||||||
|
defaults = require('./defaults').defaults;
|
||||||
|
|
||||||
|
isEmpty = function(thing) {
|
||||||
|
return typeof thing === "object" && (thing != null) && Object.keys(thing).length === 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
processItem = function(processors, item, key) {
|
||||||
|
var i, len, process;
|
||||||
|
for (i = 0, len = processors.length; i < len; i++) {
|
||||||
|
process = processors[i];
|
||||||
|
item = process(item, key);
|
||||||
|
}
|
||||||
|
return item;
|
||||||
|
};
|
||||||
|
|
||||||
|
defineProperty = function(obj, key, value) {
|
||||||
|
var descriptor;
|
||||||
|
descriptor = Object.create(null);
|
||||||
|
descriptor.value = value;
|
||||||
|
descriptor.writable = true;
|
||||||
|
descriptor.enumerable = true;
|
||||||
|
descriptor.configurable = true;
|
||||||
|
return Object.defineProperty(obj, key, descriptor);
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.Parser = (function(superClass) {
|
||||||
|
extend(Parser, superClass);
|
||||||
|
|
||||||
|
function Parser(opts) {
|
||||||
|
this.parseStringPromise = bind(this.parseStringPromise, this);
|
||||||
|
this.parseString = bind(this.parseString, this);
|
||||||
|
this.reset = bind(this.reset, this);
|
||||||
|
this.assignOrPush = bind(this.assignOrPush, this);
|
||||||
|
this.processAsync = bind(this.processAsync, this);
|
||||||
|
var key, ref, value;
|
||||||
|
if (!(this instanceof exports.Parser)) {
|
||||||
|
return new exports.Parser(opts);
|
||||||
|
}
|
||||||
|
this.options = {};
|
||||||
|
ref = defaults["0.2"];
|
||||||
|
for (key in ref) {
|
||||||
|
if (!hasProp.call(ref, key)) continue;
|
||||||
|
value = ref[key];
|
||||||
|
this.options[key] = value;
|
||||||
|
}
|
||||||
|
for (key in opts) {
|
||||||
|
if (!hasProp.call(opts, key)) continue;
|
||||||
|
value = opts[key];
|
||||||
|
this.options[key] = value;
|
||||||
|
}
|
||||||
|
if (this.options.xmlns) {
|
||||||
|
this.options.xmlnskey = this.options.attrkey + "ns";
|
||||||
|
}
|
||||||
|
if (this.options.normalizeTags) {
|
||||||
|
if (!this.options.tagNameProcessors) {
|
||||||
|
this.options.tagNameProcessors = [];
|
||||||
|
}
|
||||||
|
this.options.tagNameProcessors.unshift(processors.normalize);
|
||||||
|
}
|
||||||
|
this.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
Parser.prototype.processAsync = function() {
|
||||||
|
var chunk, err;
|
||||||
|
try {
|
||||||
|
if (this.remaining.length <= this.options.chunkSize) {
|
||||||
|
chunk = this.remaining;
|
||||||
|
this.remaining = '';
|
||||||
|
this.saxParser = this.saxParser.write(chunk);
|
||||||
|
return this.saxParser.close();
|
||||||
|
} else {
|
||||||
|
chunk = this.remaining.substr(0, this.options.chunkSize);
|
||||||
|
this.remaining = this.remaining.substr(this.options.chunkSize, this.remaining.length);
|
||||||
|
this.saxParser = this.saxParser.write(chunk);
|
||||||
|
return setImmediate(this.processAsync);
|
||||||
|
}
|
||||||
|
} catch (error1) {
|
||||||
|
err = error1;
|
||||||
|
if (!this.saxParser.errThrown) {
|
||||||
|
this.saxParser.errThrown = true;
|
||||||
|
return this.emit(err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Parser.prototype.assignOrPush = function(obj, key, newValue) {
|
||||||
|
if (!(key in obj)) {
|
||||||
|
if (!this.options.explicitArray) {
|
||||||
|
return defineProperty(obj, key, newValue);
|
||||||
|
} else {
|
||||||
|
return defineProperty(obj, key, [newValue]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!(obj[key] instanceof Array)) {
|
||||||
|
defineProperty(obj, key, [obj[key]]);
|
||||||
|
}
|
||||||
|
return obj[key].push(newValue);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Parser.prototype.reset = function() {
|
||||||
|
var attrkey, charkey, ontext, stack;
|
||||||
|
this.removeAllListeners();
|
||||||
|
this.saxParser = sax.parser(this.options.strict, {
|
||||||
|
trim: false,
|
||||||
|
normalize: false,
|
||||||
|
xmlns: this.options.xmlns
|
||||||
|
});
|
||||||
|
this.saxParser.errThrown = false;
|
||||||
|
this.saxParser.onerror = (function(_this) {
|
||||||
|
return function(error) {
|
||||||
|
_this.saxParser.resume();
|
||||||
|
if (!_this.saxParser.errThrown) {
|
||||||
|
_this.saxParser.errThrown = true;
|
||||||
|
return _this.emit("error", error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
})(this);
|
||||||
|
this.saxParser.onend = (function(_this) {
|
||||||
|
return function() {
|
||||||
|
if (!_this.saxParser.ended) {
|
||||||
|
_this.saxParser.ended = true;
|
||||||
|
return _this.emit("end", _this.resultObject);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
})(this);
|
||||||
|
this.saxParser.ended = false;
|
||||||
|
this.EXPLICIT_CHARKEY = this.options.explicitCharkey;
|
||||||
|
this.resultObject = null;
|
||||||
|
stack = [];
|
||||||
|
attrkey = this.options.attrkey;
|
||||||
|
charkey = this.options.charkey;
|
||||||
|
this.saxParser.onopentag = (function(_this) {
|
||||||
|
return function(node) {
|
||||||
|
var key, newValue, obj, processedKey, ref;
|
||||||
|
obj = {};
|
||||||
|
obj[charkey] = "";
|
||||||
|
if (!_this.options.ignoreAttrs) {
|
||||||
|
ref = node.attributes;
|
||||||
|
for (key in ref) {
|
||||||
|
if (!hasProp.call(ref, key)) continue;
|
||||||
|
if (!(attrkey in obj) && !_this.options.mergeAttrs) {
|
||||||
|
obj[attrkey] = {};
|
||||||
|
}
|
||||||
|
newValue = _this.options.attrValueProcessors ? processItem(_this.options.attrValueProcessors, node.attributes[key], key) : node.attributes[key];
|
||||||
|
processedKey = _this.options.attrNameProcessors ? processItem(_this.options.attrNameProcessors, key) : key;
|
||||||
|
if (_this.options.mergeAttrs) {
|
||||||
|
_this.assignOrPush(obj, processedKey, newValue);
|
||||||
|
} else {
|
||||||
|
defineProperty(obj[attrkey], processedKey, newValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
obj["#name"] = _this.options.tagNameProcessors ? processItem(_this.options.tagNameProcessors, node.name) : node.name;
|
||||||
|
if (_this.options.xmlns) {
|
||||||
|
obj[_this.options.xmlnskey] = {
|
||||||
|
uri: node.uri,
|
||||||
|
local: node.local
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return stack.push(obj);
|
||||||
|
};
|
||||||
|
})(this);
|
||||||
|
this.saxParser.onclosetag = (function(_this) {
|
||||||
|
return function() {
|
||||||
|
var cdata, emptyStr, key, node, nodeName, obj, objClone, old, s, xpath;
|
||||||
|
obj = stack.pop();
|
||||||
|
nodeName = obj["#name"];
|
||||||
|
if (!_this.options.explicitChildren || !_this.options.preserveChildrenOrder) {
|
||||||
|
delete obj["#name"];
|
||||||
|
}
|
||||||
|
if (obj.cdata === true) {
|
||||||
|
cdata = obj.cdata;
|
||||||
|
delete obj.cdata;
|
||||||
|
}
|
||||||
|
s = stack[stack.length - 1];
|
||||||
|
if (obj[charkey].match(/^\s*$/) && !cdata) {
|
||||||
|
emptyStr = obj[charkey];
|
||||||
|
delete obj[charkey];
|
||||||
|
} else {
|
||||||
|
if (_this.options.trim) {
|
||||||
|
obj[charkey] = obj[charkey].trim();
|
||||||
|
}
|
||||||
|
if (_this.options.normalize) {
|
||||||
|
obj[charkey] = obj[charkey].replace(/\s{2,}/g, " ").trim();
|
||||||
|
}
|
||||||
|
obj[charkey] = _this.options.valueProcessors ? processItem(_this.options.valueProcessors, obj[charkey], nodeName) : obj[charkey];
|
||||||
|
if (Object.keys(obj).length === 1 && charkey in obj && !_this.EXPLICIT_CHARKEY) {
|
||||||
|
obj = obj[charkey];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (isEmpty(obj)) {
|
||||||
|
if (typeof _this.options.emptyTag === 'function') {
|
||||||
|
obj = _this.options.emptyTag();
|
||||||
|
} else {
|
||||||
|
obj = _this.options.emptyTag !== '' ? _this.options.emptyTag : emptyStr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (_this.options.validator != null) {
|
||||||
|
xpath = "/" + ((function() {
|
||||||
|
var i, len, results;
|
||||||
|
results = [];
|
||||||
|
for (i = 0, len = stack.length; i < len; i++) {
|
||||||
|
node = stack[i];
|
||||||
|
results.push(node["#name"]);
|
||||||
|
}
|
||||||
|
return results;
|
||||||
|
})()).concat(nodeName).join("/");
|
||||||
|
(function() {
|
||||||
|
var err;
|
||||||
|
try {
|
||||||
|
return obj = _this.options.validator(xpath, s && s[nodeName], obj);
|
||||||
|
} catch (error1) {
|
||||||
|
err = error1;
|
||||||
|
return _this.emit("error", err);
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
}
|
||||||
|
if (_this.options.explicitChildren && !_this.options.mergeAttrs && typeof obj === 'object') {
|
||||||
|
if (!_this.options.preserveChildrenOrder) {
|
||||||
|
node = {};
|
||||||
|
if (_this.options.attrkey in obj) {
|
||||||
|
node[_this.options.attrkey] = obj[_this.options.attrkey];
|
||||||
|
delete obj[_this.options.attrkey];
|
||||||
|
}
|
||||||
|
if (!_this.options.charsAsChildren && _this.options.charkey in obj) {
|
||||||
|
node[_this.options.charkey] = obj[_this.options.charkey];
|
||||||
|
delete obj[_this.options.charkey];
|
||||||
|
}
|
||||||
|
if (Object.getOwnPropertyNames(obj).length > 0) {
|
||||||
|
node[_this.options.childkey] = obj;
|
||||||
|
}
|
||||||
|
obj = node;
|
||||||
|
} else if (s) {
|
||||||
|
s[_this.options.childkey] = s[_this.options.childkey] || [];
|
||||||
|
objClone = {};
|
||||||
|
for (key in obj) {
|
||||||
|
if (!hasProp.call(obj, key)) continue;
|
||||||
|
defineProperty(objClone, key, obj[key]);
|
||||||
|
}
|
||||||
|
s[_this.options.childkey].push(objClone);
|
||||||
|
delete obj["#name"];
|
||||||
|
if (Object.keys(obj).length === 1 && charkey in obj && !_this.EXPLICIT_CHARKEY) {
|
||||||
|
obj = obj[charkey];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (stack.length > 0) {
|
||||||
|
return _this.assignOrPush(s, nodeName, obj);
|
||||||
|
} else {
|
||||||
|
if (_this.options.explicitRoot) {
|
||||||
|
old = obj;
|
||||||
|
obj = {};
|
||||||
|
defineProperty(obj, nodeName, old);
|
||||||
|
}
|
||||||
|
_this.resultObject = obj;
|
||||||
|
_this.saxParser.ended = true;
|
||||||
|
return _this.emit("end", _this.resultObject);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
})(this);
|
||||||
|
ontext = (function(_this) {
|
||||||
|
return function(text) {
|
||||||
|
var charChild, s;
|
||||||
|
s = stack[stack.length - 1];
|
||||||
|
if (s) {
|
||||||
|
s[charkey] += text;
|
||||||
|
if (_this.options.explicitChildren && _this.options.preserveChildrenOrder && _this.options.charsAsChildren && (_this.options.includeWhiteChars || text.replace(/\\n/g, '').trim() !== '')) {
|
||||||
|
s[_this.options.childkey] = s[_this.options.childkey] || [];
|
||||||
|
charChild = {
|
||||||
|
'#name': '__text__'
|
||||||
|
};
|
||||||
|
charChild[charkey] = text;
|
||||||
|
if (_this.options.normalize) {
|
||||||
|
charChild[charkey] = charChild[charkey].replace(/\s{2,}/g, " ").trim();
|
||||||
|
}
|
||||||
|
s[_this.options.childkey].push(charChild);
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
})(this);
|
||||||
|
this.saxParser.ontext = ontext;
|
||||||
|
return this.saxParser.oncdata = (function(_this) {
|
||||||
|
return function(text) {
|
||||||
|
var s;
|
||||||
|
s = ontext(text);
|
||||||
|
if (s) {
|
||||||
|
return s.cdata = true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
})(this);
|
||||||
|
};
|
||||||
|
|
||||||
|
Parser.prototype.parseString = function(str, cb) {
|
||||||
|
var err;
|
||||||
|
if ((cb != null) && typeof cb === "function") {
|
||||||
|
this.on("end", function(result) {
|
||||||
|
this.reset();
|
||||||
|
return cb(null, result);
|
||||||
|
});
|
||||||
|
this.on("error", function(err) {
|
||||||
|
this.reset();
|
||||||
|
return cb(err);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
str = str.toString();
|
||||||
|
if (str.trim() === '') {
|
||||||
|
this.emit("end", null);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
str = bom.stripBOM(str);
|
||||||
|
if (this.options.async) {
|
||||||
|
this.remaining = str;
|
||||||
|
setImmediate(this.processAsync);
|
||||||
|
return this.saxParser;
|
||||||
|
}
|
||||||
|
return this.saxParser.write(str).close();
|
||||||
|
} catch (error1) {
|
||||||
|
err = error1;
|
||||||
|
if (!(this.saxParser.errThrown || this.saxParser.ended)) {
|
||||||
|
this.emit('error', err);
|
||||||
|
return this.saxParser.errThrown = true;
|
||||||
|
} else if (this.saxParser.ended) {
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Parser.prototype.parseStringPromise = function(str) {
|
||||||
|
return new Promise((function(_this) {
|
||||||
|
return function(resolve, reject) {
|
||||||
|
return _this.parseString(str, function(err, value) {
|
||||||
|
if (err) {
|
||||||
|
return reject(err);
|
||||||
|
} else {
|
||||||
|
return resolve(value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
})(this));
|
||||||
|
};
|
||||||
|
|
||||||
|
return Parser;
|
||||||
|
|
||||||
|
})(events);
|
||||||
|
|
||||||
|
exports.parseString = function(str, a, b) {
|
||||||
|
var cb, options, parser;
|
||||||
|
if (b != null) {
|
||||||
|
if (typeof b === 'function') {
|
||||||
|
cb = b;
|
||||||
|
}
|
||||||
|
if (typeof a === 'object') {
|
||||||
|
options = a;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (typeof a === 'function') {
|
||||||
|
cb = a;
|
||||||
|
}
|
||||||
|
options = {};
|
||||||
|
}
|
||||||
|
parser = new exports.Parser(options);
|
||||||
|
return parser.parseString(str, cb);
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.parseStringPromise = function(str, a) {
|
||||||
|
var options, parser;
|
||||||
|
if (typeof a === 'object') {
|
||||||
|
options = a;
|
||||||
|
}
|
||||||
|
parser = new exports.Parser(options);
|
||||||
|
return parser.parseStringPromise(str);
|
||||||
|
};
|
||||||
|
|
||||||
|
}).call(this);
|
34
lib/node/node_modules/xml2js/lib/processors.js
generated
vendored
Normal file
34
lib/node/node_modules/xml2js/lib/processors.js
generated
vendored
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
"use strict";
|
||||||
|
var prefixMatch;
|
||||||
|
|
||||||
|
prefixMatch = new RegExp(/(?!xmlns)^.*:/);
|
||||||
|
|
||||||
|
exports.normalize = function(str) {
|
||||||
|
return str.toLowerCase();
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.firstCharLowerCase = function(str) {
|
||||||
|
return str.charAt(0).toLowerCase() + str.slice(1);
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.stripPrefix = function(str) {
|
||||||
|
return str.replace(prefixMatch, '');
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.parseNumbers = function(str) {
|
||||||
|
if (!isNaN(str)) {
|
||||||
|
str = str % 1 === 0 ? parseInt(str, 10) : parseFloat(str);
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.parseBooleans = function(str) {
|
||||||
|
if (/^(?:true|false)$/i.test(str)) {
|
||||||
|
str = str.toLowerCase() === 'true';
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
};
|
||||||
|
|
||||||
|
}).call(this);
|
28337
lib/node/node_modules/xml2js/lib/xml2js.bc.js
generated
vendored
Normal file
28337
lib/node/node_modules/xml2js/lib/xml2js.bc.js
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
39
lib/node/node_modules/xml2js/lib/xml2js.js
generated
vendored
Normal file
39
lib/node/node_modules/xml2js/lib/xml2js.js
generated
vendored
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
"use strict";
|
||||||
|
var builder, defaults, parser, processors,
|
||||||
|
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
defaults = require('./defaults');
|
||||||
|
|
||||||
|
builder = require('./builder');
|
||||||
|
|
||||||
|
parser = require('./parser');
|
||||||
|
|
||||||
|
processors = require('./processors');
|
||||||
|
|
||||||
|
exports.defaults = defaults.defaults;
|
||||||
|
|
||||||
|
exports.processors = processors;
|
||||||
|
|
||||||
|
exports.ValidationError = (function(superClass) {
|
||||||
|
extend(ValidationError, superClass);
|
||||||
|
|
||||||
|
function ValidationError(message) {
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ValidationError;
|
||||||
|
|
||||||
|
})(Error);
|
||||||
|
|
||||||
|
exports.Builder = builder.Builder;
|
||||||
|
|
||||||
|
exports.Parser = parser.Parser;
|
||||||
|
|
||||||
|
exports.parseString = parser.parseString;
|
||||||
|
|
||||||
|
exports.parseStringPromise = parser.parseStringPromise;
|
||||||
|
|
||||||
|
}).call(this);
|
93
lib/node/node_modules/xml2js/package.json
generated
vendored
Normal file
93
lib/node/node_modules/xml2js/package.json
generated
vendored
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
{
|
||||||
|
"name": "xml2js",
|
||||||
|
"description": "Simple XML to JavaScript object converter.",
|
||||||
|
"keywords": [
|
||||||
|
"xml",
|
||||||
|
"json"
|
||||||
|
],
|
||||||
|
"homepage": "https://github.com/Leonidas-from-XIV/node-xml2js",
|
||||||
|
"version": "0.6.2",
|
||||||
|
"author": "Marek Kubica <marek@xivilization.net> (https://xivilization.net)",
|
||||||
|
"contributors": [
|
||||||
|
"maqr <maqr.lollerskates@gmail.com> (https://github.com/maqr)",
|
||||||
|
"Ben Weaver (http://benweaver.com/)",
|
||||||
|
"Jae Kwon (https://github.com/jaekwon)",
|
||||||
|
"Jim Robert",
|
||||||
|
"Ștefan Rusu (http://www.saltwaterc.eu/)",
|
||||||
|
"Carter Cole <carter.cole@cartercole.com> (http://cartercole.com/)",
|
||||||
|
"Kurt Raschke <kurt@kurtraschke.com> (http://www.kurtraschke.com/)",
|
||||||
|
"Contra <contra@australia.edu> (https://github.com/Contra)",
|
||||||
|
"Marcelo Diniz <marudiniz@gmail.com> (https://github.com/mdiniz)",
|
||||||
|
"Michael Hart (https://github.com/mhart)",
|
||||||
|
"Zachary Scott <zachary@zacharyscott.net> (http://zacharyscott.net/)",
|
||||||
|
"Raoul Millais (https://github.com/raoulmillais)",
|
||||||
|
"Salsita Software (http://www.salsitasoft.com/)",
|
||||||
|
"Mike Schilling <mike@emotive.com> (http://www.emotive.com/)",
|
||||||
|
"Jackson Tian <shyvo1987@gmail.com> (http://weibo.com/shyvo)",
|
||||||
|
"Mikhail Zyatin <mikhail.zyatin@gmail.com> (https://github.com/Sitin)",
|
||||||
|
"Chris Tavares <ctavares@microsoft.com> (https://github.com/christav)",
|
||||||
|
"Frank Xu <yyfrankyy@gmail.com> (http://f2e.us/)",
|
||||||
|
"Guido D'Albore <guido@bitstorm.it> (http://www.bitstorm.it/)",
|
||||||
|
"Jack Senechal (http://jacksenechal.com/)",
|
||||||
|
"Matthias Hölzl <tc@xantira.com> (https://github.com/hoelzl)",
|
||||||
|
"Camille Reynders <info@creynders.be> (http://www.creynders.be/)",
|
||||||
|
"Taylor Gautier (https://github.com/tsgautier)",
|
||||||
|
"Todd Bryan (https://github.com/toddrbryan)",
|
||||||
|
"Leore Avidar <leore.avidar@gmail.com> (http://leoreavidar.com/)",
|
||||||
|
"Dave Aitken <dave.aitken@gmail.com> (http://www.actionshrimp.com/)",
|
||||||
|
"Shaney Orrowe <shaney.orrowe@practiceweb.co.uk>",
|
||||||
|
"Candle <candle@candle.me.uk>",
|
||||||
|
"Jess Telford <hi@jes.st> (http://jes.st)",
|
||||||
|
"Tom Hughes <<tom@compton.nu> (http://compton.nu/)",
|
||||||
|
"Piotr Rochala (http://rocha.la/)",
|
||||||
|
"Michael Avila (https://github.com/michaelavila)",
|
||||||
|
"Ryan Gahl (https://github.com/ryedin)",
|
||||||
|
"Eric Laberge <e.laberge@gmail.com> (https://github.com/elaberge)",
|
||||||
|
"Benjamin E. Coe <ben@npmjs.com> (https://twitter.com/benjamincoe)",
|
||||||
|
"Stephen Cresswell (https://github.com/cressie176)",
|
||||||
|
"Pascal Ehlert <pascal@hacksrus.net> (http://www.hacksrus.net/)",
|
||||||
|
"Tom Spencer <fiznool@gmail.com> (http://fiznool.com/)",
|
||||||
|
"Tristian Flanagan <tflanagan@datacollaborative.com> (https://github.com/tflanagan)",
|
||||||
|
"Tim Johns <timjohns@yahoo.com> (https://github.com/TimJohns)",
|
||||||
|
"Bogdan Chadkin <trysound@yandex.ru> (https://github.com/TrySound)",
|
||||||
|
"David Wood <david.p.wood@gmail.com> (http://codesleuth.co.uk/)",
|
||||||
|
"Nicolas Maquet (https://github.com/nmaquet)",
|
||||||
|
"Lovell Fuller (http://lovell.info/)",
|
||||||
|
"d3adc0d3 (https://github.com/d3adc0d3)",
|
||||||
|
"James Crosby (https://github.com/autopulated)"
|
||||||
|
],
|
||||||
|
"main": "./lib/xml2js",
|
||||||
|
"files": [
|
||||||
|
"lib"
|
||||||
|
],
|
||||||
|
"directories": {
|
||||||
|
"lib": "./lib"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"build": "cake build",
|
||||||
|
"test": "zap",
|
||||||
|
"coverage": "nyc npm test && nyc report",
|
||||||
|
"coveralls": "nyc npm test && nyc report --reporter=text-lcov | coveralls",
|
||||||
|
"doc": "cake doc"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/Leonidas-from-XIV/node-xml2js.git"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"sax": ">=0.6.0",
|
||||||
|
"xmlbuilder": "~11.0.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"coffeescript": ">=1.10.0 <2",
|
||||||
|
"coveralls": "^3.0.1",
|
||||||
|
"diff": ">=1.0.8",
|
||||||
|
"docco": ">=0.6.2",
|
||||||
|
"nyc": ">=2.2.1",
|
||||||
|
"zap": ">=0.2.9 <1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4.0.0"
|
||||||
|
},
|
||||||
|
"license": "MIT"
|
||||||
|
}
|
470
lib/node/node_modules/xmlbuilder/CHANGELOG.md
generated
vendored
Normal file
470
lib/node/node_modules/xmlbuilder/CHANGELOG.md
generated
vendored
Normal file
|
@ -0,0 +1,470 @@
|
||||||
|
# Change Log
|
||||||
|
|
||||||
|
All notable changes to this project are documented in this file. This project adheres to [Semantic Versioning](http://semver.org/#semantic-versioning-200).
|
||||||
|
|
||||||
|
## [11.0.0] - 2019-02-18
|
||||||
|
- Calling `end()` with arguments no longer overwrites writer options. See [#120](https://github.com/oozcitak/xmlbuilder-js/issues/120).
|
||||||
|
- Added writer state and customizable space and endline functions to help customize writer behavior. Also added `openNode` and `closeNode` functions to writer. See [#193](https://github.com/oozcitak/xmlbuilder-js/issues/193).
|
||||||
|
- Fixed a bug where writer functions would not be called for nodes with a single child node in pretty print mode. See [#195](https://github.com/oozcitak/xmlbuilder-js/issues/195).
|
||||||
|
- Renamed `elEscape` to `textEscape` in `XMLStringifier`.
|
||||||
|
- Fixed a bug where empty arrays would produce child nodes. See [#190](https://github.com/oozcitak/xmlbuilder-js/issues/190).
|
||||||
|
- Removed the `skipNullAttributes` option. `null` attributes are now skipped by default. Added the `keepNullAttributes` option in case someone needs the old behavior.
|
||||||
|
- Removed the `skipNullNodes` option. `null` nodes are now skipped by default. Added the `keepNullNodes` option in case someone needs the old behavior.
|
||||||
|
- `undefined` values are now skipped when converting JS objects.
|
||||||
|
- Renamed stringify functions. See [#194](https://github.com/oozcitak/xmlbuilder-js/issues/194):
|
||||||
|
* `eleName` -> `name`
|
||||||
|
* `attName` -> `name`
|
||||||
|
* `eleText` -> `text`
|
||||||
|
- Fixed argument order for `attribute` function in the writer. See [#196](https://github.com/oozcitak/xmlbuilder-js/issues/196).
|
||||||
|
- Added `openAttribute` and `closeAttribute` functions to writer. See [#196](https://github.com/oozcitak/xmlbuilder-js/issues/196).
|
||||||
|
- Added node types to node objects. Node types and writer states are exported by the module with the `nodeType` and `writerState` properties.
|
||||||
|
- Fixed a bug where array items would not be correctly converted. See [#159](https://github.com/oozcitak/xmlbuilder-js/issues/159).
|
||||||
|
- Fixed a bug where mixed-content inside JS objects with `#text` decorator would not be correctly converted. See [#171](https://github.com/oozcitak/xmlbuilder-js/issues/171).
|
||||||
|
- Fixed a bug where JS objects would not be expanded in callback mode. See [#173](https://github.com/oozcitak/xmlbuilder-js/issues/173).
|
||||||
|
- Fixed a bug where character validation would not obey document's XML version. Added separate validation for XML 1.0 and XML 1.1 documents. See [#169](https://github.com/oozcitak/xmlbuilder-js/issues/169).
|
||||||
|
- Fixed a bug where names would not be validated according to the spec. See [#49](https://github.com/oozcitak/xmlbuilder-js/issues/49).
|
||||||
|
- Renamed `text` property to `value` in comment and cdata nodes to unify the API.
|
||||||
|
- Removed `doctype` function to prevent name clash with DOM implementation. Use the `dtd` function instead.
|
||||||
|
- Removed dummy nodes from the XML tree (Those were created while chain-building the tree).
|
||||||
|
- Renamed `attributes`property to `attribs` to prevent name clash with DOM property with the same name.
|
||||||
|
- Implemented the DOM standard (read-only) to support XPath lookups. XML namespaces are not currently supported. See [#122](https://github.com/oozcitak/xmlbuilder-js/issues/122).
|
||||||
|
|
||||||
|
## [10.1.1] - 2018-10-24
|
||||||
|
- Fixed an edge case where a null node at root level would be printed although `skipNullNodes` was set. See [#187](https://github.com/oozcitak/xmlbuilder-js/issues/187).
|
||||||
|
|
||||||
|
## [10.1.0] - 2018-10-10
|
||||||
|
- Added the `skipNullNodes` option to skip nodes with null values. See [#158](https://github.com/oozcitak/xmlbuilder-js/issues/158).
|
||||||
|
|
||||||
|
## [10.0.0] - 2018-04-26
|
||||||
|
- Added current indentation level as a parameter to the onData function when in callback mode. See [#125](https://github.com/oozcitak/xmlbuilder-js/issues/125).
|
||||||
|
- Added name of the current node and parent node to error messages where possible. See [#152](https://github.com/oozcitak/xmlbuilder-js/issues/152). This has the potential to break code depending on the content of error messages.
|
||||||
|
- Fixed an issue where objects created with Object.create(null) created an error. See [#176](https://github.com/oozcitak/xmlbuilder-js/issues/176).
|
||||||
|
- Added test builds for node.js v8 and v10.
|
||||||
|
|
||||||
|
## [9.0.7] - 2018-02-09
|
||||||
|
- Simplified regex used for validating encoding.
|
||||||
|
|
||||||
|
## [9.0.4] - 2017-08-16
|
||||||
|
- `spacebeforeslash` writer option accepts `true` as well as space char(s).
|
||||||
|
|
||||||
|
## [9.0.3] - 2017-08-15
|
||||||
|
- `spacebeforeslash` writer option can now be used with XML fragments.
|
||||||
|
|
||||||
|
## [9.0.2] - 2017-08-15
|
||||||
|
- Added the `spacebeforeslash` writer option to add a space character before closing tags of empty elements. See
|
||||||
|
[#157](https://github.com/oozcitak/xmlbuilder-js/issues/157).
|
||||||
|
|
||||||
|
## [9.0.1] - 2017-06-19
|
||||||
|
- Fixed character validity checks to work with node.js 4.0 and 5.0. See
|
||||||
|
[#161](https://github.com/oozcitak/xmlbuilder-js/issues/161).
|
||||||
|
|
||||||
|
## [9.0.0] - 2017-05-05
|
||||||
|
- Removed case conversion options.
|
||||||
|
- Removed support for node.js 4.0 and 5.0. Minimum required version is now 6.0.
|
||||||
|
- Fixed valid char filter to use XML 1.1 instead of 1.0. See
|
||||||
|
[#147](https://github.com/oozcitak/xmlbuilder-js/issues/147).
|
||||||
|
- Added options for negative indentation and suppressing pretty printing of text
|
||||||
|
nodes. See
|
||||||
|
[#145](https://github.com/oozcitak/xmlbuilder-js/issues/145).
|
||||||
|
|
||||||
|
## [8.2.2] - 2016-04-08
|
||||||
|
- Falsy values can now be used as a text node in callback mode.
|
||||||
|
|
||||||
|
## [8.2.1] - 2016-04-07
|
||||||
|
- Falsy values can now be used as a text node. See
|
||||||
|
[#117](https://github.com/oozcitak/xmlbuilder-js/issues/117).
|
||||||
|
|
||||||
|
## [8.2.0] - 2016-04-01
|
||||||
|
- Removed lodash dependency to keep the library small and simple. See
|
||||||
|
[#114](https://github.com/oozcitak/xmlbuilder-js/issues/114),
|
||||||
|
[#53](https://github.com/oozcitak/xmlbuilder-js/issues/53),
|
||||||
|
and [#43](https://github.com/oozcitak/xmlbuilder-js/issues/43).
|
||||||
|
- Added title case to name conversion options.
|
||||||
|
|
||||||
|
## [8.1.0] - 2016-03-29
|
||||||
|
- Added the callback option to the `begin` export function. When used with a
|
||||||
|
callback function, the XML document will be generated in chunks and each chunk
|
||||||
|
will be passed to the supplied function. In this mode, `begin` uses a different
|
||||||
|
code path and the builder should use much less memory since the entire XML tree
|
||||||
|
is not kept. There are a few drawbacks though. For example, traversing the document
|
||||||
|
tree or adding attributes to a node after it is written is not possible. It is
|
||||||
|
also not possible to remove nodes or attributes.
|
||||||
|
|
||||||
|
``` js
|
||||||
|
var result = '';
|
||||||
|
|
||||||
|
builder.begin(function(chunk) { result += chunk; })
|
||||||
|
.dec()
|
||||||
|
.ele('root')
|
||||||
|
.ele('xmlbuilder').up()
|
||||||
|
.end();
|
||||||
|
```
|
||||||
|
|
||||||
|
- Replaced native `Object.assign` with `lodash.assign` to support old JS engines. See [#111](https://github.com/oozcitak/xmlbuilder-js/issues/111).
|
||||||
|
|
||||||
|
## [8.0.0] - 2016-03-25
|
||||||
|
- Added the `begin` export function. See the wiki for details.
|
||||||
|
- Added the ability to add comments and processing instructions before and after the root element. Added `commentBefore`, `commentAfter`, `instructionBefore` and `instructionAfter` functions for this purpose.
|
||||||
|
- Dropped support for old node.js releases. Minimum required node.js version is now 4.0.
|
||||||
|
|
||||||
|
## [7.0.0] - 2016-03-21
|
||||||
|
- Processing instructions are now created as regular nodes. This is a major breaking change if you are using processing instructions. Previously processing instructions were inserted before their parent node. After this change processing instructions are appended to the children of the parent node. Note that it is not currently possible to insert processing instructions before or after the root element.
|
||||||
|
```js
|
||||||
|
root.ele('node').ins('pi');
|
||||||
|
// pre-v7
|
||||||
|
<?pi?><node/>
|
||||||
|
// v7
|
||||||
|
<node><?pi?></node>
|
||||||
|
```
|
||||||
|
|
||||||
|
## [6.0.0] - 2016-03-20
|
||||||
|
- Added custom XML writers. The default string conversion functions are now collected under the `XMLStringWriter` class which can be accessed by the `stringWriter(options)` function exported by the module. An `XMLStreamWriter` is also added which outputs the XML document to a writable stream. A stream writer can be created by calling the `streamWriter(stream, options)` function exported by the module. Both classes are heavily customizable and the details are added to the wiki. It is also possible to write an XML writer from scratch and use it when calling `end()` on the XML document.
|
||||||
|
|
||||||
|
## [5.0.1] - 2016-03-08
|
||||||
|
- Moved require statements for text case conversion to the top of files to reduce lazy requires.
|
||||||
|
|
||||||
|
## [5.0.0] - 2016-03-05
|
||||||
|
- Added text case option for element names and attribute names. Valid cases are `lower`, `upper`, `camel`, `kebab` and `snake`.
|
||||||
|
- Attribute and element values are escaped according to the [Canonical XML 1.0 specification](http://www.w3.org/TR/2000/WD-xml-c14n-20000119.html#charescaping). See [#54](https://github.com/oozcitak/xmlbuilder-js/issues/54) and [#86](https://github.com/oozcitak/xmlbuilder-js/issues/86).
|
||||||
|
- Added the `allowEmpty` option to `end()`. When this option is set, empty elements are not self-closed.
|
||||||
|
- Added support for [nested CDATA](https://en.wikipedia.org/wiki/CDATA#Nesting). The triad `]]>` in CDATA is now automatically replaced with `]]]]><![CDATA[>`.
|
||||||
|
|
||||||
|
## [4.2.1] - 2016-01-15
|
||||||
|
- Updated lodash dependency to 4.0.0.
|
||||||
|
|
||||||
|
## [4.2.0] - 2015-12-16
|
||||||
|
- Added the `noDoubleEncoding` option to `create()` to control whether existing html entities are encoded.
|
||||||
|
|
||||||
|
## [4.1.0] - 2015-11-11
|
||||||
|
- Added the `separateArrayItems` option to `create()` to control how arrays are handled when converting from objects. e.g.
|
||||||
|
|
||||||
|
```js
|
||||||
|
root.ele({ number: [ "one", "two" ]});
|
||||||
|
// with separateArrayItems: true
|
||||||
|
<number>
|
||||||
|
<one/>
|
||||||
|
<two/>
|
||||||
|
</number>
|
||||||
|
// with separateArrayItems: false
|
||||||
|
<number>one</number>
|
||||||
|
<number>two</number>
|
||||||
|
```
|
||||||
|
|
||||||
|
## [4.0.0] - 2015-11-01
|
||||||
|
- Removed the `#list` decorator. Array items are now created as child nodes by default.
|
||||||
|
- Fixed a bug where the XML encoding string was checked partially.
|
||||||
|
|
||||||
|
## [3.1.0] - 2015-09-19
|
||||||
|
- `#list` decorator ignores empty arrays.
|
||||||
|
|
||||||
|
## [3.0.0] - 2015-09-10
|
||||||
|
- Allow `\r`, `\n` and `\t` in attribute values without escaping. See [#86](https://github.com/oozcitak/xmlbuilder-js/issues/86).
|
||||||
|
|
||||||
|
## [2.6.5] - 2015-09-09
|
||||||
|
- Use native `isArray` instead of lodash.
|
||||||
|
- Indentation of processing instructions are set to the parent element's.
|
||||||
|
|
||||||
|
## [2.6.4] - 2015-05-27
|
||||||
|
- Updated lodash dependency to 3.5.0.
|
||||||
|
|
||||||
|
## [2.6.3] - 2015-05-27
|
||||||
|
- Bumped version because previous release was not published on npm.
|
||||||
|
|
||||||
|
## [2.6.2] - 2015-03-10
|
||||||
|
- Updated lodash dependency to 3.5.0.
|
||||||
|
|
||||||
|
## [2.6.1] - 2015-02-20
|
||||||
|
- Updated lodash dependency to 3.3.0.
|
||||||
|
|
||||||
|
## [2.6.0] - 2015-02-20
|
||||||
|
- Fixed a bug where the `XMLNode` constructor overwrote the super class parent.
|
||||||
|
- Removed document property from cloned nodes.
|
||||||
|
- Switched to mocha.js for testing.
|
||||||
|
|
||||||
|
## [2.5.2] - 2015-02-16
|
||||||
|
- Updated lodash dependency to 3.2.0.
|
||||||
|
|
||||||
|
## [2.5.1] - 2015-02-09
|
||||||
|
- Updated lodash dependency to 3.1.0.
|
||||||
|
- Support all node >= 0.8.
|
||||||
|
|
||||||
|
## [2.5.0] - 2015-00-03
|
||||||
|
- Updated lodash dependency to 3.0.0.
|
||||||
|
|
||||||
|
## [2.4.6] - 2015-01-26
|
||||||
|
- Show more information from attribute creation with null values.
|
||||||
|
- Added iojs as an engine.
|
||||||
|
- Self close elements with empty text.
|
||||||
|
|
||||||
|
## [2.4.5] - 2014-11-15
|
||||||
|
- Fixed prepublish script to run on windows.
|
||||||
|
- Fixed bug in XMLStringifier where an undefined value was used while reporting an invalid encoding value.
|
||||||
|
- Moved require statements to the top of files to reduce lazy requires. See [#62](https://github.com/oozcitak/xmlbuilder-js/issues/62).
|
||||||
|
|
||||||
|
## [2.4.4] - 2014-09-08
|
||||||
|
- Added the `offset` option to `toString()` for use in XML fragments.
|
||||||
|
|
||||||
|
## [2.4.3] - 2014-08-13
|
||||||
|
- Corrected license in package description.
|
||||||
|
|
||||||
|
## [2.4.2] - 2014-08-13
|
||||||
|
- Dropped performance test and memwatch dependency.
|
||||||
|
|
||||||
|
## [2.4.1] - 2014-08-12
|
||||||
|
- Fixed a bug where empty indent string was omitted when pretty printing. See [#59](https://github.com/oozcitak/xmlbuilder-js/issues/59).
|
||||||
|
|
||||||
|
## [2.4.0] - 2014-08-04
|
||||||
|
- Correct cases of pubID and sysID.
|
||||||
|
- Use single lodash instead of separate npm modules. See [#53](https://github.com/oozcitak/xmlbuilder-js/issues/53).
|
||||||
|
- Escape according to Canonical XML 1.0. See [#54](https://github.com/oozcitak/xmlbuilder-js/issues/54).
|
||||||
|
|
||||||
|
## [2.3.0] - 2014-07-17
|
||||||
|
- Convert objects to JS primitives while sanitizing user input.
|
||||||
|
- Object builder preserves items with null values. See [#44](https://github.com/oozcitak/xmlbuilder-js/issues/44).
|
||||||
|
- Use modularized lodash functions to cut down dependencies.
|
||||||
|
- Process empty objects when converting from objects so that we don't throw on empty child objects.
|
||||||
|
|
||||||
|
## [2.2.1] - 2014-04-04
|
||||||
|
- Bumped version because previous release was not published on npm.
|
||||||
|
|
||||||
|
## [2.2.0] - 2014-04-04
|
||||||
|
- Switch to lodash from underscore.
|
||||||
|
- Removed legacy `ext` option from `create()`.
|
||||||
|
- Drop old node versions: 0.4, 0.5, 0.6. 0.8 is the minimum requirement from now on.
|
||||||
|
|
||||||
|
## [2.1.0] - 2013-12-30
|
||||||
|
- Removed duplicate null checks from constructors.
|
||||||
|
- Fixed node count in performance test.
|
||||||
|
- Added option for skipping null attribute values. See [#26](https://github.com/oozcitak/xmlbuilder-js/issues/26).
|
||||||
|
- Allow multiple values in `att()` and `ins()`.
|
||||||
|
- Added ability to run individual performance tests.
|
||||||
|
- Added flag for ignoring decorator strings.
|
||||||
|
|
||||||
|
## [2.0.1] - 2013-12-24
|
||||||
|
- Removed performance tests from npm package.
|
||||||
|
|
||||||
|
## [2.0.0] - 2013-12-24
|
||||||
|
- Combined loops for speed up.
|
||||||
|
- Added support for the DTD and XML declaration.
|
||||||
|
- `clone` includes attributes.
|
||||||
|
- Added performance tests.
|
||||||
|
- Evaluate attribute value if function.
|
||||||
|
- Evaluate instruction value if function.
|
||||||
|
|
||||||
|
## [1.1.2] - 2013-12-11
|
||||||
|
- Changed processing instruction decorator to `?`.
|
||||||
|
|
||||||
|
## [1.1.1] - 2013-12-11
|
||||||
|
- Added processing instructions to JS object conversion.
|
||||||
|
|
||||||
|
## [1.1.0] - 2013-12-10
|
||||||
|
- Added license to package.
|
||||||
|
- `create()` and `element()` accept JS object to fully build the document.
|
||||||
|
- Added `nod()` and `n()` aliases for `node()`.
|
||||||
|
- Renamed `convertAttChar` decorator to `convertAttKey`.
|
||||||
|
- Ignore empty decorator strings when converting JS objects.
|
||||||
|
|
||||||
|
## [1.0.2] - 2013-11-27
|
||||||
|
- Removed temp file which was accidentally included in the package.
|
||||||
|
|
||||||
|
## [1.0.1] - 2013-11-27
|
||||||
|
- Custom stringify functions affect current instance only.
|
||||||
|
|
||||||
|
## [1.0.0] - 2013-11-27
|
||||||
|
- Added processing instructions.
|
||||||
|
- Added stringify functions to sanitize and convert input values.
|
||||||
|
- Added option for headless XML documents.
|
||||||
|
- Added vows tests.
|
||||||
|
- Removed Makefile. Using npm publish scripts instead.
|
||||||
|
- Removed the `begin()` function. `create()` begins the document by creating the root node.
|
||||||
|
|
||||||
|
## [0.4.3] - 2013-11-08
|
||||||
|
- Added option to include surrogate pairs in XML content. See [#29](https://github.com/oozcitak/xmlbuilder-js/issues/29).
|
||||||
|
- Fixed empty value string representation in pretty mode.
|
||||||
|
- Added pre and postpublish scripts to package.json.
|
||||||
|
- Filtered out prototype properties when appending attributes. See [#31](https://github.com/oozcitak/xmlbuilder-js/issues/31).
|
||||||
|
|
||||||
|
## [0.4.2] - 2012-09-14
|
||||||
|
- Removed README.md from `.npmignore`.
|
||||||
|
|
||||||
|
## [0.4.1] - 2012-08-31
|
||||||
|
- Removed `begin()` calls in favor of `XMLBuilder` constructor.
|
||||||
|
- Added the `end()` function. `end()` is a convenience over `doc().toString()`.
|
||||||
|
|
||||||
|
## [0.4.0] - 2012-08-31
|
||||||
|
- Added arguments to `XMLBuilder` constructor to allow the name of the root element and XML prolog to be defined in one line.
|
||||||
|
- Soft deprecated `begin()`.
|
||||||
|
|
||||||
|
## [0.3.11] - 2012-08-13
|
||||||
|
- Package keywords are fixed to be an array of values.
|
||||||
|
|
||||||
|
## [0.3.10] - 2012-08-13
|
||||||
|
- Brought back npm package contents which were lost due to incorrect configuration of `package.json` in previous releases.
|
||||||
|
|
||||||
|
## [0.3.3] - 2012-07-27
|
||||||
|
- Implemented `importXMLBuilder()`.
|
||||||
|
|
||||||
|
## [0.3.2] - 2012-07-20
|
||||||
|
- Fixed a duplicated escaping problem on `element()`.
|
||||||
|
- Fixed a problem with text node creation from empty string.
|
||||||
|
- Calling `root()` on the document element returns the root element.
|
||||||
|
- `XMLBuilder` no longer extends `XMLFragment`.
|
||||||
|
|
||||||
|
## [0.3.1] - 2011-11-28
|
||||||
|
- Added guards for document element so that nodes cannot be inserted at document level.
|
||||||
|
|
||||||
|
## [0.3.0] - 2011-11-28
|
||||||
|
- Added `doc()` to return the document element.
|
||||||
|
|
||||||
|
## [0.2.2] - 2011-11-28
|
||||||
|
- Prevent code relying on `up()`'s older behavior to break.
|
||||||
|
|
||||||
|
## [0.2.1] - 2011-11-28
|
||||||
|
- Added the `root()` function.
|
||||||
|
|
||||||
|
## [0.2.0] - 2011-11-21
|
||||||
|
- Added Travis-CI integration.
|
||||||
|
- Added coffee-script dependency.
|
||||||
|
- Added insert, traversal and delete functions.
|
||||||
|
|
||||||
|
## [0.1.7] - 2011-10-25
|
||||||
|
- No changes. Accidental release.
|
||||||
|
|
||||||
|
## [0.1.6] - 2011-10-25
|
||||||
|
- Corrected `package.json` bugs link to `url` from `web`.
|
||||||
|
|
||||||
|
## [0.1.5] - 2011-08-08
|
||||||
|
- Added missing npm package contents.
|
||||||
|
|
||||||
|
## [0.1.4] - 2011-07-29
|
||||||
|
- Text-only nodes are no longer indented.
|
||||||
|
- Added documentation for multiple instances.
|
||||||
|
|
||||||
|
## [0.1.3] - 2011-07-27
|
||||||
|
- Exported the `create()` function to return a new instance. This allows multiple builder instances to be constructed.
|
||||||
|
- Fixed `u()` function so that it now correctly calls `up()`.
|
||||||
|
- Fixed typo in `element()` so that `attributes` and `text` can be passed interchangeably.
|
||||||
|
|
||||||
|
## [0.1.2] - 2011-06-03
|
||||||
|
- `ele()` accepts element text.
|
||||||
|
- `attributes()` now overrides existing attributes if passed the same attribute name.
|
||||||
|
|
||||||
|
## [0.1.1] - 2011-05-19
|
||||||
|
- Added the raw output option.
|
||||||
|
- Removed most validity checks.
|
||||||
|
|
||||||
|
## [0.1.0] - 2011-04-27
|
||||||
|
- `text()` and `cdata()` now return parent element.
|
||||||
|
- Attribute values are escaped.
|
||||||
|
|
||||||
|
## [0.0.7] - 2011-04-23
|
||||||
|
- Coerced text values to string.
|
||||||
|
|
||||||
|
## [0.0.6] - 2011-02-23
|
||||||
|
- Added support for XML comments.
|
||||||
|
- Text nodes are checked against CharData.
|
||||||
|
|
||||||
|
## [0.0.5] - 2010-12-31
|
||||||
|
- Corrected the name of the main npm module in `package.json`.
|
||||||
|
|
||||||
|
## [0.0.4] - 2010-12-28
|
||||||
|
- Added `.npmignore`.
|
||||||
|
|
||||||
|
## [0.0.3] - 2010-12-27
|
||||||
|
- root element is now constructed in `begin()`.
|
||||||
|
- moved prolog to `begin()`.
|
||||||
|
- Added the ability to have CDATA in element text.
|
||||||
|
- Removed unused prolog aliases.
|
||||||
|
- Removed `builder()` function from main module.
|
||||||
|
- Added the name of the main npm module in `package.json`.
|
||||||
|
|
||||||
|
## [0.0.2] - 2010-11-03
|
||||||
|
- `element()` expands nested arrays.
|
||||||
|
- Added pretty printing.
|
||||||
|
- Added the `up()`, `build()` and `prolog()` functions.
|
||||||
|
- Added readme.
|
||||||
|
|
||||||
|
## 0.0.1 - 2010-11-02
|
||||||
|
- Initial release
|
||||||
|
|
||||||
|
[11.0.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v10.1.1...v11.0.0
|
||||||
|
[10.1.1]: https://github.com/oozcitak/xmlbuilder-js/compare/v10.1.0...v10.1.1
|
||||||
|
[10.1.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v10.0.0...v10.1.0
|
||||||
|
[10.0.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v9.0.7...v10.0.0
|
||||||
|
[9.0.7]: https://github.com/oozcitak/xmlbuilder-js/compare/v9.0.4...v9.0.7
|
||||||
|
[9.0.4]: https://github.com/oozcitak/xmlbuilder-js/compare/v9.0.3...v9.0.4
|
||||||
|
[9.0.3]: https://github.com/oozcitak/xmlbuilder-js/compare/v9.0.2...v9.0.3
|
||||||
|
[9.0.2]: https://github.com/oozcitak/xmlbuilder-js/compare/v9.0.1...v9.0.2
|
||||||
|
[9.0.1]: https://github.com/oozcitak/xmlbuilder-js/compare/v9.0.0...v9.0.1
|
||||||
|
[9.0.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v8.2.2...v9.0.0
|
||||||
|
[8.2.2]: https://github.com/oozcitak/xmlbuilder-js/compare/v8.2.1...v8.2.2
|
||||||
|
[8.2.1]: https://github.com/oozcitak/xmlbuilder-js/compare/v8.2.0...v8.2.1
|
||||||
|
[8.2.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v8.1.0...v8.2.0
|
||||||
|
[8.1.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v8.0.0...v8.1.0
|
||||||
|
[8.0.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v7.0.0...v8.0.0
|
||||||
|
[7.0.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v6.0.0...v7.0.0
|
||||||
|
[6.0.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v5.0.1...v6.0.0
|
||||||
|
[5.0.1]: https://github.com/oozcitak/xmlbuilder-js/compare/v5.0.0...v5.0.1
|
||||||
|
[5.0.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v4.2.1...v5.0.0
|
||||||
|
[4.2.1]: https://github.com/oozcitak/xmlbuilder-js/compare/v4.2.0...v4.2.1
|
||||||
|
[4.2.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v4.1.0...v4.2.0
|
||||||
|
[4.1.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v4.0.0...v4.1.0
|
||||||
|
[4.0.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v3.1.0...v4.0.0
|
||||||
|
[3.1.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v3.0.0...v3.1.0
|
||||||
|
[3.0.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v2.6.5...v3.0.0
|
||||||
|
[2.6.5]: https://github.com/oozcitak/xmlbuilder-js/compare/v2.6.4...v2.6.5
|
||||||
|
[2.6.4]: https://github.com/oozcitak/xmlbuilder-js/compare/v2.6.3...v2.6.4
|
||||||
|
[2.6.3]: https://github.com/oozcitak/xmlbuilder-js/compare/v2.6.2...v2.6.3
|
||||||
|
[2.6.2]: https://github.com/oozcitak/xmlbuilder-js/compare/v2.6.1...v2.6.2
|
||||||
|
[2.6.1]: https://github.com/oozcitak/xmlbuilder-js/compare/v2.6.0...v2.6.1
|
||||||
|
[2.6.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v2.5.2...v2.6.0
|
||||||
|
[2.5.2]: https://github.com/oozcitak/xmlbuilder-js/compare/v2.5.1...v2.5.2
|
||||||
|
[2.5.1]: https://github.com/oozcitak/xmlbuilder-js/compare/v2.5.0...v2.5.1
|
||||||
|
[2.5.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v2.4.6...v2.5.0
|
||||||
|
[2.4.6]: https://github.com/oozcitak/xmlbuilder-js/compare/v2.4.5...v2.4.6
|
||||||
|
[2.4.5]: https://github.com/oozcitak/xmlbuilder-js/compare/v2.4.4...v2.4.5
|
||||||
|
[2.4.4]: https://github.com/oozcitak/xmlbuilder-js/compare/v2.4.3...v2.4.4
|
||||||
|
[2.4.3]: https://github.com/oozcitak/xmlbuilder-js/compare/v2.4.2...v2.4.3
|
||||||
|
[2.4.2]: https://github.com/oozcitak/xmlbuilder-js/compare/v2.4.1...v2.4.2
|
||||||
|
[2.4.1]: https://github.com/oozcitak/xmlbuilder-js/compare/v2.4.0...v2.4.1
|
||||||
|
[2.4.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v2.3.0...v2.4.0
|
||||||
|
[2.3.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v2.2.1...v2.3.0
|
||||||
|
[2.2.1]: https://github.com/oozcitak/xmlbuilder-js/compare/v2.2.0...v2.2.1
|
||||||
|
[2.2.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v2.1.0...v2.2.0
|
||||||
|
[2.1.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v2.0.1...v2.1.0
|
||||||
|
[2.0.1]: https://github.com/oozcitak/xmlbuilder-js/compare/v2.0.0...v2.0.1
|
||||||
|
[2.0.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v1.1.2...v2.0.0
|
||||||
|
[1.1.2]: https://github.com/oozcitak/xmlbuilder-js/compare/v1.1.1...v1.1.2
|
||||||
|
[1.1.1]: https://github.com/oozcitak/xmlbuilder-js/compare/v1.1.0...v1.1.1
|
||||||
|
[1.1.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v1.0.2...v1.1.0
|
||||||
|
[1.0.2]: https://github.com/oozcitak/xmlbuilder-js/compare/v1.0.1...v1.0.2
|
||||||
|
[1.0.1]: https://github.com/oozcitak/xmlbuilder-js/compare/v1.0.0...v1.0.1
|
||||||
|
[1.0.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.4.3...v1.0.0
|
||||||
|
[0.4.3]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.4.2...v0.4.3
|
||||||
|
[0.4.2]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.4.1...v0.4.2
|
||||||
|
[0.4.1]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.4.0...v0.4.1
|
||||||
|
[0.4.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.3.11...v0.4.0
|
||||||
|
[0.3.11]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.3.10...v0.3.11
|
||||||
|
[0.3.10]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.3.3...v0.3.10
|
||||||
|
[0.3.3]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.3.2...v0.3.3
|
||||||
|
[0.3.2]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.3.1...v0.3.2
|
||||||
|
[0.3.1]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.3.0...v0.3.1
|
||||||
|
[0.3.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.2.2...v0.3.0
|
||||||
|
[0.2.2]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.2.1...v0.2.2
|
||||||
|
[0.2.1]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.2.0...v0.2.1
|
||||||
|
[0.2.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.1.7...v0.2.0
|
||||||
|
[0.1.7]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.1.6...v0.1.7
|
||||||
|
[0.1.6]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.1.5...v0.1.6
|
||||||
|
[0.1.5]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.1.4...v0.1.5
|
||||||
|
[0.1.4]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.1.3...v0.1.4
|
||||||
|
[0.1.3]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.1.2...v0.1.3
|
||||||
|
[0.1.2]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.1.1...v0.1.2
|
||||||
|
[0.1.1]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.1.0...v0.1.1
|
||||||
|
[0.1.0]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.0.7...v0.1.0
|
||||||
|
[0.0.7]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.0.6...v0.0.7
|
||||||
|
[0.0.6]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.0.5...v0.0.6
|
||||||
|
[0.0.5]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.0.4...v0.0.5
|
||||||
|
[0.0.4]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.0.3...v0.0.4
|
||||||
|
[0.0.3]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.0.2...v0.0.3
|
||||||
|
[0.0.2]: https://github.com/oozcitak/xmlbuilder-js/compare/v0.0.1...v0.0.2
|
||||||
|
|
21
lib/node/node_modules/xmlbuilder/LICENSE
generated
vendored
Normal file
21
lib/node/node_modules/xmlbuilder/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2013 Ozgur Ozcitak
|
||||||
|
|
||||||
|
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.
|
86
lib/node/node_modules/xmlbuilder/README.md
generated
vendored
Normal file
86
lib/node/node_modules/xmlbuilder/README.md
generated
vendored
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
# xmlbuilder-js
|
||||||
|
|
||||||
|
An XML builder for [node.js](https://nodejs.org/) similar to
|
||||||
|
[java-xmlbuilder](https://github.com/jmurty/java-xmlbuilder).
|
||||||
|
|
||||||
|
[](http://opensource.org/licenses/MIT)
|
||||||
|
[](https://npmjs.com/package/xmlbuilder)
|
||||||
|
[](https://npmjs.com/package/xmlbuilder)
|
||||||
|
|
||||||
|
[](http://travis-ci.org/oozcitak/xmlbuilder-js)
|
||||||
|
[](https://ci.appveyor.com/project/oozcitak/xmlbuilder-js)
|
||||||
|
[](https://david-dm.org/oozcitak/xmlbuilder-js)
|
||||||
|
[](https://coveralls.io/github/oozcitak/xmlbuilder-js)
|
||||||
|
|
||||||
|
### Installation:
|
||||||
|
|
||||||
|
``` sh
|
||||||
|
npm install xmlbuilder
|
||||||
|
```
|
||||||
|
|
||||||
|
### Usage:
|
||||||
|
|
||||||
|
``` js
|
||||||
|
var builder = require('xmlbuilder');
|
||||||
|
var xml = builder.create('root')
|
||||||
|
.ele('xmlbuilder')
|
||||||
|
.ele('repo', {'type': 'git'}, 'git://github.com/oozcitak/xmlbuilder-js.git')
|
||||||
|
.end({ pretty: true});
|
||||||
|
|
||||||
|
console.log(xml);
|
||||||
|
```
|
||||||
|
|
||||||
|
will result in:
|
||||||
|
|
||||||
|
``` xml
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<root>
|
||||||
|
<xmlbuilder>
|
||||||
|
<repo type="git">git://github.com/oozcitak/xmlbuilder-js.git</repo>
|
||||||
|
</xmlbuilder>
|
||||||
|
</root>
|
||||||
|
```
|
||||||
|
|
||||||
|
It is also possible to convert objects into nodes:
|
||||||
|
|
||||||
|
``` js
|
||||||
|
builder.create({
|
||||||
|
root: {
|
||||||
|
xmlbuilder: {
|
||||||
|
repo: {
|
||||||
|
'@type': 'git', // attributes start with @
|
||||||
|
'#text': 'git://github.com/oozcitak/xmlbuilder-js.git' // text node
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
If you need to do some processing:
|
||||||
|
|
||||||
|
``` js
|
||||||
|
var root = builder.create('squares');
|
||||||
|
root.com('f(x) = x^2');
|
||||||
|
for(var i = 1; i <= 5; i++)
|
||||||
|
{
|
||||||
|
var item = root.ele('data');
|
||||||
|
item.att('x', i);
|
||||||
|
item.att('y', i * i);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
This will result in:
|
||||||
|
|
||||||
|
``` xml
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<squares>
|
||||||
|
<!-- f(x) = x^2 -->
|
||||||
|
<data x="1" y="1"/>
|
||||||
|
<data x="2" y="4"/>
|
||||||
|
<data x="3" y="9"/>
|
||||||
|
<data x="4" y="16"/>
|
||||||
|
<data x="5" y="25"/>
|
||||||
|
</squares>
|
||||||
|
```
|
||||||
|
|
||||||
|
See the [wiki](https://github.com/oozcitak/xmlbuilder-js/wiki) for details and [examples](https://github.com/oozcitak/xmlbuilder-js/wiki/Examples) for more complex examples.
|
20
lib/node/node_modules/xmlbuilder/appveyor.yml
generated
vendored
Normal file
20
lib/node/node_modules/xmlbuilder/appveyor.yml
generated
vendored
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
environment:
|
||||||
|
matrix:
|
||||||
|
- nodejs_version: "4"
|
||||||
|
- nodejs_version: "5"
|
||||||
|
- nodejs_version: "6"
|
||||||
|
- nodejs_version: "8"
|
||||||
|
- nodejs_version: "10"
|
||||||
|
- nodejs_version: "" # latest
|
||||||
|
|
||||||
|
install:
|
||||||
|
- ps: "Install-Product node $env:nodejs_version"
|
||||||
|
- "npm install"
|
||||||
|
|
||||||
|
test_script:
|
||||||
|
- "node --version"
|
||||||
|
- "npm --version"
|
||||||
|
- "npm test"
|
||||||
|
|
||||||
|
build: off
|
||||||
|
|
10
lib/node/node_modules/xmlbuilder/lib/Derivation.js
generated
vendored
Normal file
10
lib/node/node_modules/xmlbuilder/lib/Derivation.js
generated
vendored
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
module.exports = {
|
||||||
|
Restriction: 1,
|
||||||
|
Extension: 2,
|
||||||
|
Union: 4,
|
||||||
|
List: 8
|
||||||
|
};
|
||||||
|
|
||||||
|
}).call(this);
|
12
lib/node/node_modules/xmlbuilder/lib/DocumentPosition.js
generated
vendored
Normal file
12
lib/node/node_modules/xmlbuilder/lib/DocumentPosition.js
generated
vendored
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
module.exports = {
|
||||||
|
Disconnected: 1,
|
||||||
|
Preceding: 2,
|
||||||
|
Following: 4,
|
||||||
|
Contains: 8,
|
||||||
|
ContainedBy: 16,
|
||||||
|
ImplementationSpecific: 32
|
||||||
|
};
|
||||||
|
|
||||||
|
}).call(this);
|
23
lib/node/node_modules/xmlbuilder/lib/NodeType.js
generated
vendored
Normal file
23
lib/node/node_modules/xmlbuilder/lib/NodeType.js
generated
vendored
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
module.exports = {
|
||||||
|
Element: 1,
|
||||||
|
Attribute: 2,
|
||||||
|
Text: 3,
|
||||||
|
CData: 4,
|
||||||
|
EntityReference: 5,
|
||||||
|
EntityDeclaration: 6,
|
||||||
|
ProcessingInstruction: 7,
|
||||||
|
Comment: 8,
|
||||||
|
Document: 9,
|
||||||
|
DocType: 10,
|
||||||
|
DocumentFragment: 11,
|
||||||
|
NotationDeclaration: 12,
|
||||||
|
Declaration: 201,
|
||||||
|
Raw: 202,
|
||||||
|
AttributeDeclaration: 203,
|
||||||
|
ElementDeclaration: 204,
|
||||||
|
Dummy: 205
|
||||||
|
};
|
||||||
|
|
||||||
|
}).call(this);
|
11
lib/node/node_modules/xmlbuilder/lib/OperationType.js
generated
vendored
Normal file
11
lib/node/node_modules/xmlbuilder/lib/OperationType.js
generated
vendored
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
module.exports = {
|
||||||
|
Clones: 1,
|
||||||
|
Imported: 2,
|
||||||
|
Deleted: 3,
|
||||||
|
Renamed: 4,
|
||||||
|
Adopted: 5
|
||||||
|
};
|
||||||
|
|
||||||
|
}).call(this);
|
83
lib/node/node_modules/xmlbuilder/lib/Utility.js
generated
vendored
Normal file
83
lib/node/node_modules/xmlbuilder/lib/Utility.js
generated
vendored
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var assign, getValue, isArray, isEmpty, isFunction, isObject, isPlainObject,
|
||||||
|
slice = [].slice,
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
assign = function() {
|
||||||
|
var i, key, len, source, sources, target;
|
||||||
|
target = arguments[0], sources = 2 <= arguments.length ? slice.call(arguments, 1) : [];
|
||||||
|
if (isFunction(Object.assign)) {
|
||||||
|
Object.assign.apply(null, arguments);
|
||||||
|
} else {
|
||||||
|
for (i = 0, len = sources.length; i < len; i++) {
|
||||||
|
source = sources[i];
|
||||||
|
if (source != null) {
|
||||||
|
for (key in source) {
|
||||||
|
if (!hasProp.call(source, key)) continue;
|
||||||
|
target[key] = source[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return target;
|
||||||
|
};
|
||||||
|
|
||||||
|
isFunction = function(val) {
|
||||||
|
return !!val && Object.prototype.toString.call(val) === '[object Function]';
|
||||||
|
};
|
||||||
|
|
||||||
|
isObject = function(val) {
|
||||||
|
var ref;
|
||||||
|
return !!val && ((ref = typeof val) === 'function' || ref === 'object');
|
||||||
|
};
|
||||||
|
|
||||||
|
isArray = function(val) {
|
||||||
|
if (isFunction(Array.isArray)) {
|
||||||
|
return Array.isArray(val);
|
||||||
|
} else {
|
||||||
|
return Object.prototype.toString.call(val) === '[object Array]';
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
isEmpty = function(val) {
|
||||||
|
var key;
|
||||||
|
if (isArray(val)) {
|
||||||
|
return !val.length;
|
||||||
|
} else {
|
||||||
|
for (key in val) {
|
||||||
|
if (!hasProp.call(val, key)) continue;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
isPlainObject = function(val) {
|
||||||
|
var ctor, proto;
|
||||||
|
return isObject(val) && (proto = Object.getPrototypeOf(val)) && (ctor = proto.constructor) && (typeof ctor === 'function') && (ctor instanceof ctor) && (Function.prototype.toString.call(ctor) === Function.prototype.toString.call(Object));
|
||||||
|
};
|
||||||
|
|
||||||
|
getValue = function(obj) {
|
||||||
|
if (isFunction(obj.valueOf)) {
|
||||||
|
return obj.valueOf();
|
||||||
|
} else {
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports.assign = assign;
|
||||||
|
|
||||||
|
module.exports.isFunction = isFunction;
|
||||||
|
|
||||||
|
module.exports.isObject = isObject;
|
||||||
|
|
||||||
|
module.exports.isArray = isArray;
|
||||||
|
|
||||||
|
module.exports.isEmpty = isEmpty;
|
||||||
|
|
||||||
|
module.exports.isPlainObject = isPlainObject;
|
||||||
|
|
||||||
|
module.exports.getValue = getValue;
|
||||||
|
|
||||||
|
}).call(this);
|
10
lib/node/node_modules/xmlbuilder/lib/WriterState.js
generated
vendored
Normal file
10
lib/node/node_modules/xmlbuilder/lib/WriterState.js
generated
vendored
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
module.exports = {
|
||||||
|
None: 0,
|
||||||
|
OpenTag: 1,
|
||||||
|
InsideTag: 2,
|
||||||
|
CloseTag: 3
|
||||||
|
};
|
||||||
|
|
||||||
|
}).call(this);
|
108
lib/node/node_modules/xmlbuilder/lib/XMLAttribute.js
generated
vendored
Normal file
108
lib/node/node_modules/xmlbuilder/lib/XMLAttribute.js
generated
vendored
Normal file
|
@ -0,0 +1,108 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var NodeType, XMLAttribute, XMLNode;
|
||||||
|
|
||||||
|
NodeType = require('./NodeType');
|
||||||
|
|
||||||
|
XMLNode = require('./XMLNode');
|
||||||
|
|
||||||
|
module.exports = XMLAttribute = (function() {
|
||||||
|
function XMLAttribute(parent, name, value) {
|
||||||
|
this.parent = parent;
|
||||||
|
if (this.parent) {
|
||||||
|
this.options = this.parent.options;
|
||||||
|
this.stringify = this.parent.stringify;
|
||||||
|
}
|
||||||
|
if (name == null) {
|
||||||
|
throw new Error("Missing attribute name. " + this.debugInfo(name));
|
||||||
|
}
|
||||||
|
this.name = this.stringify.name(name);
|
||||||
|
this.value = this.stringify.attValue(value);
|
||||||
|
this.type = NodeType.Attribute;
|
||||||
|
this.isId = false;
|
||||||
|
this.schemaTypeInfo = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.defineProperty(XMLAttribute.prototype, 'nodeType', {
|
||||||
|
get: function() {
|
||||||
|
return this.type;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLAttribute.prototype, 'ownerElement', {
|
||||||
|
get: function() {
|
||||||
|
return this.parent;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLAttribute.prototype, 'textContent', {
|
||||||
|
get: function() {
|
||||||
|
return this.value;
|
||||||
|
},
|
||||||
|
set: function(value) {
|
||||||
|
return this.value = value || '';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLAttribute.prototype, 'namespaceURI', {
|
||||||
|
get: function() {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLAttribute.prototype, 'prefix', {
|
||||||
|
get: function() {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLAttribute.prototype, 'localName', {
|
||||||
|
get: function() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLAttribute.prototype, 'specified', {
|
||||||
|
get: function() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
XMLAttribute.prototype.clone = function() {
|
||||||
|
return Object.create(this);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLAttribute.prototype.toString = function(options) {
|
||||||
|
return this.options.writer.attribute(this, this.options.writer.filterOptions(options));
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLAttribute.prototype.debugInfo = function(name) {
|
||||||
|
name = name || this.name;
|
||||||
|
if (name == null) {
|
||||||
|
return "parent: <" + this.parent.name + ">";
|
||||||
|
} else {
|
||||||
|
return "attribute: {" + name + "}, parent: <" + this.parent.name + ">";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLAttribute.prototype.isEqualNode = function(node) {
|
||||||
|
if (node.namespaceURI !== this.namespaceURI) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (node.prefix !== this.prefix) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (node.localName !== this.localName) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (node.value !== this.value) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLAttribute;
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
}).call(this);
|
36
lib/node/node_modules/xmlbuilder/lib/XMLCData.js
generated
vendored
Normal file
36
lib/node/node_modules/xmlbuilder/lib/XMLCData.js
generated
vendored
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var NodeType, XMLCData, XMLCharacterData,
|
||||||
|
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
NodeType = require('./NodeType');
|
||||||
|
|
||||||
|
XMLCharacterData = require('./XMLCharacterData');
|
||||||
|
|
||||||
|
module.exports = XMLCData = (function(superClass) {
|
||||||
|
extend(XMLCData, superClass);
|
||||||
|
|
||||||
|
function XMLCData(parent, text) {
|
||||||
|
XMLCData.__super__.constructor.call(this, parent);
|
||||||
|
if (text == null) {
|
||||||
|
throw new Error("Missing CDATA text. " + this.debugInfo());
|
||||||
|
}
|
||||||
|
this.name = "#cdata-section";
|
||||||
|
this.type = NodeType.CData;
|
||||||
|
this.value = this.stringify.cdata(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLCData.prototype.clone = function() {
|
||||||
|
return Object.create(this);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLCData.prototype.toString = function(options) {
|
||||||
|
return this.options.writer.cdata(this, this.options.writer.filterOptions(options));
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLCData;
|
||||||
|
|
||||||
|
})(XMLCharacterData);
|
||||||
|
|
||||||
|
}).call(this);
|
79
lib/node/node_modules/xmlbuilder/lib/XMLCharacterData.js
generated
vendored
Normal file
79
lib/node/node_modules/xmlbuilder/lib/XMLCharacterData.js
generated
vendored
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var XMLCharacterData, XMLNode,
|
||||||
|
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
XMLNode = require('./XMLNode');
|
||||||
|
|
||||||
|
module.exports = XMLCharacterData = (function(superClass) {
|
||||||
|
extend(XMLCharacterData, superClass);
|
||||||
|
|
||||||
|
function XMLCharacterData(parent) {
|
||||||
|
XMLCharacterData.__super__.constructor.call(this, parent);
|
||||||
|
this.value = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.defineProperty(XMLCharacterData.prototype, 'data', {
|
||||||
|
get: function() {
|
||||||
|
return this.value;
|
||||||
|
},
|
||||||
|
set: function(value) {
|
||||||
|
return this.value = value || '';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLCharacterData.prototype, 'length', {
|
||||||
|
get: function() {
|
||||||
|
return this.value.length;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLCharacterData.prototype, 'textContent', {
|
||||||
|
get: function() {
|
||||||
|
return this.value;
|
||||||
|
},
|
||||||
|
set: function(value) {
|
||||||
|
return this.value = value || '';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
XMLCharacterData.prototype.clone = function() {
|
||||||
|
return Object.create(this);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLCharacterData.prototype.substringData = function(offset, count) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLCharacterData.prototype.appendData = function(arg) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLCharacterData.prototype.insertData = function(offset, arg) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLCharacterData.prototype.deleteData = function(offset, count) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLCharacterData.prototype.replaceData = function(offset, count, arg) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLCharacterData.prototype.isEqualNode = function(node) {
|
||||||
|
if (!XMLCharacterData.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (node.data !== this.data) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLCharacterData;
|
||||||
|
|
||||||
|
})(XMLNode);
|
||||||
|
|
||||||
|
}).call(this);
|
36
lib/node/node_modules/xmlbuilder/lib/XMLComment.js
generated
vendored
Normal file
36
lib/node/node_modules/xmlbuilder/lib/XMLComment.js
generated
vendored
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var NodeType, XMLCharacterData, XMLComment,
|
||||||
|
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
NodeType = require('./NodeType');
|
||||||
|
|
||||||
|
XMLCharacterData = require('./XMLCharacterData');
|
||||||
|
|
||||||
|
module.exports = XMLComment = (function(superClass) {
|
||||||
|
extend(XMLComment, superClass);
|
||||||
|
|
||||||
|
function XMLComment(parent, text) {
|
||||||
|
XMLComment.__super__.constructor.call(this, parent);
|
||||||
|
if (text == null) {
|
||||||
|
throw new Error("Missing comment text. " + this.debugInfo());
|
||||||
|
}
|
||||||
|
this.name = "#comment";
|
||||||
|
this.type = NodeType.Comment;
|
||||||
|
this.value = this.stringify.comment(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLComment.prototype.clone = function() {
|
||||||
|
return Object.create(this);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLComment.prototype.toString = function(options) {
|
||||||
|
return this.options.writer.comment(this, this.options.writer.filterOptions(options));
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLComment;
|
||||||
|
|
||||||
|
})(XMLCharacterData);
|
||||||
|
|
||||||
|
}).call(this);
|
64
lib/node/node_modules/xmlbuilder/lib/XMLDOMConfiguration.js
generated
vendored
Normal file
64
lib/node/node_modules/xmlbuilder/lib/XMLDOMConfiguration.js
generated
vendored
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var XMLDOMConfiguration, XMLDOMErrorHandler, XMLDOMStringList;
|
||||||
|
|
||||||
|
XMLDOMErrorHandler = require('./XMLDOMErrorHandler');
|
||||||
|
|
||||||
|
XMLDOMStringList = require('./XMLDOMStringList');
|
||||||
|
|
||||||
|
module.exports = XMLDOMConfiguration = (function() {
|
||||||
|
function XMLDOMConfiguration() {
|
||||||
|
var clonedSelf;
|
||||||
|
this.defaultParams = {
|
||||||
|
"canonical-form": false,
|
||||||
|
"cdata-sections": false,
|
||||||
|
"comments": false,
|
||||||
|
"datatype-normalization": false,
|
||||||
|
"element-content-whitespace": true,
|
||||||
|
"entities": true,
|
||||||
|
"error-handler": new XMLDOMErrorHandler(),
|
||||||
|
"infoset": true,
|
||||||
|
"validate-if-schema": false,
|
||||||
|
"namespaces": true,
|
||||||
|
"namespace-declarations": true,
|
||||||
|
"normalize-characters": false,
|
||||||
|
"schema-location": '',
|
||||||
|
"schema-type": '',
|
||||||
|
"split-cdata-sections": true,
|
||||||
|
"validate": false,
|
||||||
|
"well-formed": true
|
||||||
|
};
|
||||||
|
this.params = clonedSelf = Object.create(this.defaultParams);
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDOMConfiguration.prototype, 'parameterNames', {
|
||||||
|
get: function() {
|
||||||
|
return new XMLDOMStringList(Object.keys(this.defaultParams));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
XMLDOMConfiguration.prototype.getParameter = function(name) {
|
||||||
|
if (this.params.hasOwnProperty(name)) {
|
||||||
|
return this.params[name];
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDOMConfiguration.prototype.canSetParameter = function(name, value) {
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDOMConfiguration.prototype.setParameter = function(name, value) {
|
||||||
|
if (value != null) {
|
||||||
|
return this.params[name] = value;
|
||||||
|
} else {
|
||||||
|
return delete this.params[name];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLDOMConfiguration;
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
}).call(this);
|
16
lib/node/node_modules/xmlbuilder/lib/XMLDOMErrorHandler.js
generated
vendored
Normal file
16
lib/node/node_modules/xmlbuilder/lib/XMLDOMErrorHandler.js
generated
vendored
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var XMLDOMErrorHandler;
|
||||||
|
|
||||||
|
module.exports = XMLDOMErrorHandler = (function() {
|
||||||
|
function XMLDOMErrorHandler() {}
|
||||||
|
|
||||||
|
XMLDOMErrorHandler.prototype.handleError = function(error) {
|
||||||
|
throw new Error(error);
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLDOMErrorHandler;
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
}).call(this);
|
32
lib/node/node_modules/xmlbuilder/lib/XMLDOMImplementation.js
generated
vendored
Normal file
32
lib/node/node_modules/xmlbuilder/lib/XMLDOMImplementation.js
generated
vendored
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var XMLDOMImplementation;
|
||||||
|
|
||||||
|
module.exports = XMLDOMImplementation = (function() {
|
||||||
|
function XMLDOMImplementation() {}
|
||||||
|
|
||||||
|
XMLDOMImplementation.prototype.hasFeature = function(feature, version) {
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDOMImplementation.prototype.createDocumentType = function(qualifiedName, publicId, systemId) {
|
||||||
|
throw new Error("This DOM method is not implemented.");
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDOMImplementation.prototype.createDocument = function(namespaceURI, qualifiedName, doctype) {
|
||||||
|
throw new Error("This DOM method is not implemented.");
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDOMImplementation.prototype.createHTMLDocument = function(title) {
|
||||||
|
throw new Error("This DOM method is not implemented.");
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDOMImplementation.prototype.getFeature = function(feature, version) {
|
||||||
|
throw new Error("This DOM method is not implemented.");
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLDOMImplementation;
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
}).call(this);
|
28
lib/node/node_modules/xmlbuilder/lib/XMLDOMStringList.js
generated
vendored
Normal file
28
lib/node/node_modules/xmlbuilder/lib/XMLDOMStringList.js
generated
vendored
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var XMLDOMStringList;
|
||||||
|
|
||||||
|
module.exports = XMLDOMStringList = (function() {
|
||||||
|
function XMLDOMStringList(arr) {
|
||||||
|
this.arr = arr || [];
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDOMStringList.prototype, 'length', {
|
||||||
|
get: function() {
|
||||||
|
return this.arr.length;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
XMLDOMStringList.prototype.item = function(index) {
|
||||||
|
return this.arr[index] || null;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDOMStringList.prototype.contains = function(str) {
|
||||||
|
return this.arr.indexOf(str) !== -1;
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLDOMStringList;
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
}).call(this);
|
55
lib/node/node_modules/xmlbuilder/lib/XMLDTDAttList.js
generated
vendored
Normal file
55
lib/node/node_modules/xmlbuilder/lib/XMLDTDAttList.js
generated
vendored
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var NodeType, XMLDTDAttList, XMLNode,
|
||||||
|
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
XMLNode = require('./XMLNode');
|
||||||
|
|
||||||
|
NodeType = require('./NodeType');
|
||||||
|
|
||||||
|
module.exports = XMLDTDAttList = (function(superClass) {
|
||||||
|
extend(XMLDTDAttList, superClass);
|
||||||
|
|
||||||
|
function XMLDTDAttList(parent, elementName, attributeName, attributeType, defaultValueType, defaultValue) {
|
||||||
|
XMLDTDAttList.__super__.constructor.call(this, parent);
|
||||||
|
if (elementName == null) {
|
||||||
|
throw new Error("Missing DTD element name. " + this.debugInfo());
|
||||||
|
}
|
||||||
|
if (attributeName == null) {
|
||||||
|
throw new Error("Missing DTD attribute name. " + this.debugInfo(elementName));
|
||||||
|
}
|
||||||
|
if (!attributeType) {
|
||||||
|
throw new Error("Missing DTD attribute type. " + this.debugInfo(elementName));
|
||||||
|
}
|
||||||
|
if (!defaultValueType) {
|
||||||
|
throw new Error("Missing DTD attribute default. " + this.debugInfo(elementName));
|
||||||
|
}
|
||||||
|
if (defaultValueType.indexOf('#') !== 0) {
|
||||||
|
defaultValueType = '#' + defaultValueType;
|
||||||
|
}
|
||||||
|
if (!defaultValueType.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/)) {
|
||||||
|
throw new Error("Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT. " + this.debugInfo(elementName));
|
||||||
|
}
|
||||||
|
if (defaultValue && !defaultValueType.match(/^(#FIXED|#DEFAULT)$/)) {
|
||||||
|
throw new Error("Default value only applies to #FIXED or #DEFAULT. " + this.debugInfo(elementName));
|
||||||
|
}
|
||||||
|
this.elementName = this.stringify.name(elementName);
|
||||||
|
this.type = NodeType.AttributeDeclaration;
|
||||||
|
this.attributeName = this.stringify.name(attributeName);
|
||||||
|
this.attributeType = this.stringify.dtdAttType(attributeType);
|
||||||
|
if (defaultValue) {
|
||||||
|
this.defaultValue = this.stringify.dtdAttDefault(defaultValue);
|
||||||
|
}
|
||||||
|
this.defaultValueType = defaultValueType;
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLDTDAttList.prototype.toString = function(options) {
|
||||||
|
return this.options.writer.dtdAttList(this, this.options.writer.filterOptions(options));
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLDTDAttList;
|
||||||
|
|
||||||
|
})(XMLNode);
|
||||||
|
|
||||||
|
}).call(this);
|
38
lib/node/node_modules/xmlbuilder/lib/XMLDTDElement.js
generated
vendored
Normal file
38
lib/node/node_modules/xmlbuilder/lib/XMLDTDElement.js
generated
vendored
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var NodeType, XMLDTDElement, XMLNode,
|
||||||
|
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
XMLNode = require('./XMLNode');
|
||||||
|
|
||||||
|
NodeType = require('./NodeType');
|
||||||
|
|
||||||
|
module.exports = XMLDTDElement = (function(superClass) {
|
||||||
|
extend(XMLDTDElement, superClass);
|
||||||
|
|
||||||
|
function XMLDTDElement(parent, name, value) {
|
||||||
|
XMLDTDElement.__super__.constructor.call(this, parent);
|
||||||
|
if (name == null) {
|
||||||
|
throw new Error("Missing DTD element name. " + this.debugInfo());
|
||||||
|
}
|
||||||
|
if (!value) {
|
||||||
|
value = '(#PCDATA)';
|
||||||
|
}
|
||||||
|
if (Array.isArray(value)) {
|
||||||
|
value = '(' + value.join(',') + ')';
|
||||||
|
}
|
||||||
|
this.name = this.stringify.name(name);
|
||||||
|
this.type = NodeType.ElementDeclaration;
|
||||||
|
this.value = this.stringify.dtdElementValue(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLDTDElement.prototype.toString = function(options) {
|
||||||
|
return this.options.writer.dtdElement(this, this.options.writer.filterOptions(options));
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLDTDElement;
|
||||||
|
|
||||||
|
})(XMLNode);
|
||||||
|
|
||||||
|
}).call(this);
|
97
lib/node/node_modules/xmlbuilder/lib/XMLDTDEntity.js
generated
vendored
Normal file
97
lib/node/node_modules/xmlbuilder/lib/XMLDTDEntity.js
generated
vendored
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var NodeType, XMLDTDEntity, XMLNode, isObject,
|
||||||
|
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
isObject = require('./Utility').isObject;
|
||||||
|
|
||||||
|
XMLNode = require('./XMLNode');
|
||||||
|
|
||||||
|
NodeType = require('./NodeType');
|
||||||
|
|
||||||
|
module.exports = XMLDTDEntity = (function(superClass) {
|
||||||
|
extend(XMLDTDEntity, superClass);
|
||||||
|
|
||||||
|
function XMLDTDEntity(parent, pe, name, value) {
|
||||||
|
XMLDTDEntity.__super__.constructor.call(this, parent);
|
||||||
|
if (name == null) {
|
||||||
|
throw new Error("Missing DTD entity name. " + this.debugInfo(name));
|
||||||
|
}
|
||||||
|
if (value == null) {
|
||||||
|
throw new Error("Missing DTD entity value. " + this.debugInfo(name));
|
||||||
|
}
|
||||||
|
this.pe = !!pe;
|
||||||
|
this.name = this.stringify.name(name);
|
||||||
|
this.type = NodeType.EntityDeclaration;
|
||||||
|
if (!isObject(value)) {
|
||||||
|
this.value = this.stringify.dtdEntityValue(value);
|
||||||
|
this.internal = true;
|
||||||
|
} else {
|
||||||
|
if (!value.pubID && !value.sysID) {
|
||||||
|
throw new Error("Public and/or system identifiers are required for an external entity. " + this.debugInfo(name));
|
||||||
|
}
|
||||||
|
if (value.pubID && !value.sysID) {
|
||||||
|
throw new Error("System identifier is required for a public external entity. " + this.debugInfo(name));
|
||||||
|
}
|
||||||
|
this.internal = false;
|
||||||
|
if (value.pubID != null) {
|
||||||
|
this.pubID = this.stringify.dtdPubID(value.pubID);
|
||||||
|
}
|
||||||
|
if (value.sysID != null) {
|
||||||
|
this.sysID = this.stringify.dtdSysID(value.sysID);
|
||||||
|
}
|
||||||
|
if (value.nData != null) {
|
||||||
|
this.nData = this.stringify.dtdNData(value.nData);
|
||||||
|
}
|
||||||
|
if (this.pe && this.nData) {
|
||||||
|
throw new Error("Notation declaration is not allowed in a parameter entity. " + this.debugInfo(name));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDTDEntity.prototype, 'publicId', {
|
||||||
|
get: function() {
|
||||||
|
return this.pubID;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDTDEntity.prototype, 'systemId', {
|
||||||
|
get: function() {
|
||||||
|
return this.sysID;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDTDEntity.prototype, 'notationName', {
|
||||||
|
get: function() {
|
||||||
|
return this.nData || null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDTDEntity.prototype, 'inputEncoding', {
|
||||||
|
get: function() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDTDEntity.prototype, 'xmlEncoding', {
|
||||||
|
get: function() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDTDEntity.prototype, 'xmlVersion', {
|
||||||
|
get: function() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
XMLDTDEntity.prototype.toString = function(options) {
|
||||||
|
return this.options.writer.dtdEntity(this, this.options.writer.filterOptions(options));
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLDTDEntity;
|
||||||
|
|
||||||
|
})(XMLNode);
|
||||||
|
|
||||||
|
}).call(this);
|
52
lib/node/node_modules/xmlbuilder/lib/XMLDTDNotation.js
generated
vendored
Normal file
52
lib/node/node_modules/xmlbuilder/lib/XMLDTDNotation.js
generated
vendored
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var NodeType, XMLDTDNotation, XMLNode,
|
||||||
|
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
XMLNode = require('./XMLNode');
|
||||||
|
|
||||||
|
NodeType = require('./NodeType');
|
||||||
|
|
||||||
|
module.exports = XMLDTDNotation = (function(superClass) {
|
||||||
|
extend(XMLDTDNotation, superClass);
|
||||||
|
|
||||||
|
function XMLDTDNotation(parent, name, value) {
|
||||||
|
XMLDTDNotation.__super__.constructor.call(this, parent);
|
||||||
|
if (name == null) {
|
||||||
|
throw new Error("Missing DTD notation name. " + this.debugInfo(name));
|
||||||
|
}
|
||||||
|
if (!value.pubID && !value.sysID) {
|
||||||
|
throw new Error("Public or system identifiers are required for an external entity. " + this.debugInfo(name));
|
||||||
|
}
|
||||||
|
this.name = this.stringify.name(name);
|
||||||
|
this.type = NodeType.NotationDeclaration;
|
||||||
|
if (value.pubID != null) {
|
||||||
|
this.pubID = this.stringify.dtdPubID(value.pubID);
|
||||||
|
}
|
||||||
|
if (value.sysID != null) {
|
||||||
|
this.sysID = this.stringify.dtdSysID(value.sysID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDTDNotation.prototype, 'publicId', {
|
||||||
|
get: function() {
|
||||||
|
return this.pubID;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDTDNotation.prototype, 'systemId', {
|
||||||
|
get: function() {
|
||||||
|
return this.sysID;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
XMLDTDNotation.prototype.toString = function(options) {
|
||||||
|
return this.options.writer.dtdNotation(this, this.options.writer.filterOptions(options));
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLDTDNotation;
|
||||||
|
|
||||||
|
})(XMLNode);
|
||||||
|
|
||||||
|
}).call(this);
|
43
lib/node/node_modules/xmlbuilder/lib/XMLDeclaration.js
generated
vendored
Normal file
43
lib/node/node_modules/xmlbuilder/lib/XMLDeclaration.js
generated
vendored
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var NodeType, XMLDeclaration, XMLNode, isObject,
|
||||||
|
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
isObject = require('./Utility').isObject;
|
||||||
|
|
||||||
|
XMLNode = require('./XMLNode');
|
||||||
|
|
||||||
|
NodeType = require('./NodeType');
|
||||||
|
|
||||||
|
module.exports = XMLDeclaration = (function(superClass) {
|
||||||
|
extend(XMLDeclaration, superClass);
|
||||||
|
|
||||||
|
function XMLDeclaration(parent, version, encoding, standalone) {
|
||||||
|
var ref;
|
||||||
|
XMLDeclaration.__super__.constructor.call(this, parent);
|
||||||
|
if (isObject(version)) {
|
||||||
|
ref = version, version = ref.version, encoding = ref.encoding, standalone = ref.standalone;
|
||||||
|
}
|
||||||
|
if (!version) {
|
||||||
|
version = '1.0';
|
||||||
|
}
|
||||||
|
this.type = NodeType.Declaration;
|
||||||
|
this.version = this.stringify.xmlVersion(version);
|
||||||
|
if (encoding != null) {
|
||||||
|
this.encoding = this.stringify.xmlEncoding(encoding);
|
||||||
|
}
|
||||||
|
if (standalone != null) {
|
||||||
|
this.standalone = this.stringify.xmlStandalone(standalone);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLDeclaration.prototype.toString = function(options) {
|
||||||
|
return this.options.writer.declaration(this, this.options.writer.filterOptions(options));
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLDeclaration;
|
||||||
|
|
||||||
|
})(XMLNode);
|
||||||
|
|
||||||
|
}).call(this);
|
186
lib/node/node_modules/xmlbuilder/lib/XMLDocType.js
generated
vendored
Normal file
186
lib/node/node_modules/xmlbuilder/lib/XMLDocType.js
generated
vendored
Normal file
|
@ -0,0 +1,186 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var NodeType, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDocType, XMLNamedNodeMap, XMLNode, isObject,
|
||||||
|
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
isObject = require('./Utility').isObject;
|
||||||
|
|
||||||
|
XMLNode = require('./XMLNode');
|
||||||
|
|
||||||
|
NodeType = require('./NodeType');
|
||||||
|
|
||||||
|
XMLDTDAttList = require('./XMLDTDAttList');
|
||||||
|
|
||||||
|
XMLDTDEntity = require('./XMLDTDEntity');
|
||||||
|
|
||||||
|
XMLDTDElement = require('./XMLDTDElement');
|
||||||
|
|
||||||
|
XMLDTDNotation = require('./XMLDTDNotation');
|
||||||
|
|
||||||
|
XMLNamedNodeMap = require('./XMLNamedNodeMap');
|
||||||
|
|
||||||
|
module.exports = XMLDocType = (function(superClass) {
|
||||||
|
extend(XMLDocType, superClass);
|
||||||
|
|
||||||
|
function XMLDocType(parent, pubID, sysID) {
|
||||||
|
var child, i, len, ref, ref1, ref2;
|
||||||
|
XMLDocType.__super__.constructor.call(this, parent);
|
||||||
|
this.type = NodeType.DocType;
|
||||||
|
if (parent.children) {
|
||||||
|
ref = parent.children;
|
||||||
|
for (i = 0, len = ref.length; i < len; i++) {
|
||||||
|
child = ref[i];
|
||||||
|
if (child.type === NodeType.Element) {
|
||||||
|
this.name = child.name;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.documentObject = parent;
|
||||||
|
if (isObject(pubID)) {
|
||||||
|
ref1 = pubID, pubID = ref1.pubID, sysID = ref1.sysID;
|
||||||
|
}
|
||||||
|
if (sysID == null) {
|
||||||
|
ref2 = [pubID, sysID], sysID = ref2[0], pubID = ref2[1];
|
||||||
|
}
|
||||||
|
if (pubID != null) {
|
||||||
|
this.pubID = this.stringify.dtdPubID(pubID);
|
||||||
|
}
|
||||||
|
if (sysID != null) {
|
||||||
|
this.sysID = this.stringify.dtdSysID(sysID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDocType.prototype, 'entities', {
|
||||||
|
get: function() {
|
||||||
|
var child, i, len, nodes, ref;
|
||||||
|
nodes = {};
|
||||||
|
ref = this.children;
|
||||||
|
for (i = 0, len = ref.length; i < len; i++) {
|
||||||
|
child = ref[i];
|
||||||
|
if ((child.type === NodeType.EntityDeclaration) && !child.pe) {
|
||||||
|
nodes[child.name] = child;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new XMLNamedNodeMap(nodes);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDocType.prototype, 'notations', {
|
||||||
|
get: function() {
|
||||||
|
var child, i, len, nodes, ref;
|
||||||
|
nodes = {};
|
||||||
|
ref = this.children;
|
||||||
|
for (i = 0, len = ref.length; i < len; i++) {
|
||||||
|
child = ref[i];
|
||||||
|
if (child.type === NodeType.NotationDeclaration) {
|
||||||
|
nodes[child.name] = child;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new XMLNamedNodeMap(nodes);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDocType.prototype, 'publicId', {
|
||||||
|
get: function() {
|
||||||
|
return this.pubID;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDocType.prototype, 'systemId', {
|
||||||
|
get: function() {
|
||||||
|
return this.sysID;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDocType.prototype, 'internalSubset', {
|
||||||
|
get: function() {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
XMLDocType.prototype.element = function(name, value) {
|
||||||
|
var child;
|
||||||
|
child = new XMLDTDElement(this, name, value);
|
||||||
|
this.children.push(child);
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocType.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {
|
||||||
|
var child;
|
||||||
|
child = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);
|
||||||
|
this.children.push(child);
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocType.prototype.entity = function(name, value) {
|
||||||
|
var child;
|
||||||
|
child = new XMLDTDEntity(this, false, name, value);
|
||||||
|
this.children.push(child);
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocType.prototype.pEntity = function(name, value) {
|
||||||
|
var child;
|
||||||
|
child = new XMLDTDEntity(this, true, name, value);
|
||||||
|
this.children.push(child);
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocType.prototype.notation = function(name, value) {
|
||||||
|
var child;
|
||||||
|
child = new XMLDTDNotation(this, name, value);
|
||||||
|
this.children.push(child);
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocType.prototype.toString = function(options) {
|
||||||
|
return this.options.writer.docType(this, this.options.writer.filterOptions(options));
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocType.prototype.ele = function(name, value) {
|
||||||
|
return this.element(name, value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocType.prototype.att = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {
|
||||||
|
return this.attList(elementName, attributeName, attributeType, defaultValueType, defaultValue);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocType.prototype.ent = function(name, value) {
|
||||||
|
return this.entity(name, value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocType.prototype.pent = function(name, value) {
|
||||||
|
return this.pEntity(name, value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocType.prototype.not = function(name, value) {
|
||||||
|
return this.notation(name, value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocType.prototype.up = function() {
|
||||||
|
return this.root() || this.documentObject;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocType.prototype.isEqualNode = function(node) {
|
||||||
|
if (!XMLDocType.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (node.name !== this.name) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (node.publicId !== this.publicId) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (node.systemId !== this.systemId) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLDocType;
|
||||||
|
|
||||||
|
})(XMLNode);
|
||||||
|
|
||||||
|
}).call(this);
|
242
lib/node/node_modules/xmlbuilder/lib/XMLDocument.js
generated
vendored
Normal file
242
lib/node/node_modules/xmlbuilder/lib/XMLDocument.js
generated
vendored
Normal file
|
@ -0,0 +1,242 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var NodeType, XMLDOMConfiguration, XMLDOMImplementation, XMLDocument, XMLNode, XMLStringWriter, XMLStringifier, isPlainObject,
|
||||||
|
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
isPlainObject = require('./Utility').isPlainObject;
|
||||||
|
|
||||||
|
XMLDOMImplementation = require('./XMLDOMImplementation');
|
||||||
|
|
||||||
|
XMLDOMConfiguration = require('./XMLDOMConfiguration');
|
||||||
|
|
||||||
|
XMLNode = require('./XMLNode');
|
||||||
|
|
||||||
|
NodeType = require('./NodeType');
|
||||||
|
|
||||||
|
XMLStringifier = require('./XMLStringifier');
|
||||||
|
|
||||||
|
XMLStringWriter = require('./XMLStringWriter');
|
||||||
|
|
||||||
|
module.exports = XMLDocument = (function(superClass) {
|
||||||
|
extend(XMLDocument, superClass);
|
||||||
|
|
||||||
|
function XMLDocument(options) {
|
||||||
|
XMLDocument.__super__.constructor.call(this, null);
|
||||||
|
this.name = "#document";
|
||||||
|
this.type = NodeType.Document;
|
||||||
|
this.documentURI = null;
|
||||||
|
this.domConfig = new XMLDOMConfiguration();
|
||||||
|
options || (options = {});
|
||||||
|
if (!options.writer) {
|
||||||
|
options.writer = new XMLStringWriter();
|
||||||
|
}
|
||||||
|
this.options = options;
|
||||||
|
this.stringify = new XMLStringifier(options);
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDocument.prototype, 'implementation', {
|
||||||
|
value: new XMLDOMImplementation()
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDocument.prototype, 'doctype', {
|
||||||
|
get: function() {
|
||||||
|
var child, i, len, ref;
|
||||||
|
ref = this.children;
|
||||||
|
for (i = 0, len = ref.length; i < len; i++) {
|
||||||
|
child = ref[i];
|
||||||
|
if (child.type === NodeType.DocType) {
|
||||||
|
return child;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDocument.prototype, 'documentElement', {
|
||||||
|
get: function() {
|
||||||
|
return this.rootObject || null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDocument.prototype, 'inputEncoding', {
|
||||||
|
get: function() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDocument.prototype, 'strictErrorChecking', {
|
||||||
|
get: function() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDocument.prototype, 'xmlEncoding', {
|
||||||
|
get: function() {
|
||||||
|
if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) {
|
||||||
|
return this.children[0].encoding;
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDocument.prototype, 'xmlStandalone', {
|
||||||
|
get: function() {
|
||||||
|
if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) {
|
||||||
|
return this.children[0].standalone === 'yes';
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDocument.prototype, 'xmlVersion', {
|
||||||
|
get: function() {
|
||||||
|
if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) {
|
||||||
|
return this.children[0].version;
|
||||||
|
} else {
|
||||||
|
return "1.0";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDocument.prototype, 'URL', {
|
||||||
|
get: function() {
|
||||||
|
return this.documentURI;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDocument.prototype, 'origin', {
|
||||||
|
get: function() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDocument.prototype, 'compatMode', {
|
||||||
|
get: function() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDocument.prototype, 'characterSet', {
|
||||||
|
get: function() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLDocument.prototype, 'contentType', {
|
||||||
|
get: function() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
XMLDocument.prototype.end = function(writer) {
|
||||||
|
var writerOptions;
|
||||||
|
writerOptions = {};
|
||||||
|
if (!writer) {
|
||||||
|
writer = this.options.writer;
|
||||||
|
} else if (isPlainObject(writer)) {
|
||||||
|
writerOptions = writer;
|
||||||
|
writer = this.options.writer;
|
||||||
|
}
|
||||||
|
return writer.document(this, writer.filterOptions(writerOptions));
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocument.prototype.toString = function(options) {
|
||||||
|
return this.options.writer.document(this, this.options.writer.filterOptions(options));
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocument.prototype.createElement = function(tagName) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocument.prototype.createDocumentFragment = function() {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocument.prototype.createTextNode = function(data) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocument.prototype.createComment = function(data) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocument.prototype.createCDATASection = function(data) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocument.prototype.createProcessingInstruction = function(target, data) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocument.prototype.createAttribute = function(name) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocument.prototype.createEntityReference = function(name) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocument.prototype.getElementsByTagName = function(tagname) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocument.prototype.importNode = function(importedNode, deep) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocument.prototype.createElementNS = function(namespaceURI, qualifiedName) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocument.prototype.createAttributeNS = function(namespaceURI, qualifiedName) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocument.prototype.getElementsByTagNameNS = function(namespaceURI, localName) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocument.prototype.getElementById = function(elementId) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocument.prototype.adoptNode = function(source) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocument.prototype.normalizeDocument = function() {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocument.prototype.renameNode = function(node, namespaceURI, qualifiedName) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocument.prototype.getElementsByClassName = function(classNames) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocument.prototype.createEvent = function(eventInterface) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocument.prototype.createRange = function() {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocument.prototype.createNodeIterator = function(root, whatToShow, filter) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocument.prototype.createTreeWalker = function(root, whatToShow, filter) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLDocument;
|
||||||
|
|
||||||
|
})(XMLNode);
|
||||||
|
|
||||||
|
}).call(this);
|
528
lib/node/node_modules/xmlbuilder/lib/XMLDocumentCB.js
generated
vendored
Normal file
528
lib/node/node_modules/xmlbuilder/lib/XMLDocumentCB.js
generated
vendored
Normal file
|
@ -0,0 +1,528 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var NodeType, WriterState, XMLAttribute, XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLDocument, XMLDocumentCB, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStringWriter, XMLStringifier, XMLText, getValue, isFunction, isObject, isPlainObject, ref,
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, isPlainObject = ref.isPlainObject, getValue = ref.getValue;
|
||||||
|
|
||||||
|
NodeType = require('./NodeType');
|
||||||
|
|
||||||
|
XMLDocument = require('./XMLDocument');
|
||||||
|
|
||||||
|
XMLElement = require('./XMLElement');
|
||||||
|
|
||||||
|
XMLCData = require('./XMLCData');
|
||||||
|
|
||||||
|
XMLComment = require('./XMLComment');
|
||||||
|
|
||||||
|
XMLRaw = require('./XMLRaw');
|
||||||
|
|
||||||
|
XMLText = require('./XMLText');
|
||||||
|
|
||||||
|
XMLProcessingInstruction = require('./XMLProcessingInstruction');
|
||||||
|
|
||||||
|
XMLDeclaration = require('./XMLDeclaration');
|
||||||
|
|
||||||
|
XMLDocType = require('./XMLDocType');
|
||||||
|
|
||||||
|
XMLDTDAttList = require('./XMLDTDAttList');
|
||||||
|
|
||||||
|
XMLDTDEntity = require('./XMLDTDEntity');
|
||||||
|
|
||||||
|
XMLDTDElement = require('./XMLDTDElement');
|
||||||
|
|
||||||
|
XMLDTDNotation = require('./XMLDTDNotation');
|
||||||
|
|
||||||
|
XMLAttribute = require('./XMLAttribute');
|
||||||
|
|
||||||
|
XMLStringifier = require('./XMLStringifier');
|
||||||
|
|
||||||
|
XMLStringWriter = require('./XMLStringWriter');
|
||||||
|
|
||||||
|
WriterState = require('./WriterState');
|
||||||
|
|
||||||
|
module.exports = XMLDocumentCB = (function() {
|
||||||
|
function XMLDocumentCB(options, onData, onEnd) {
|
||||||
|
var writerOptions;
|
||||||
|
this.name = "?xml";
|
||||||
|
this.type = NodeType.Document;
|
||||||
|
options || (options = {});
|
||||||
|
writerOptions = {};
|
||||||
|
if (!options.writer) {
|
||||||
|
options.writer = new XMLStringWriter();
|
||||||
|
} else if (isPlainObject(options.writer)) {
|
||||||
|
writerOptions = options.writer;
|
||||||
|
options.writer = new XMLStringWriter();
|
||||||
|
}
|
||||||
|
this.options = options;
|
||||||
|
this.writer = options.writer;
|
||||||
|
this.writerOptions = this.writer.filterOptions(writerOptions);
|
||||||
|
this.stringify = new XMLStringifier(options);
|
||||||
|
this.onDataCallback = onData || function() {};
|
||||||
|
this.onEndCallback = onEnd || function() {};
|
||||||
|
this.currentNode = null;
|
||||||
|
this.currentLevel = -1;
|
||||||
|
this.openTags = {};
|
||||||
|
this.documentStarted = false;
|
||||||
|
this.documentCompleted = false;
|
||||||
|
this.root = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.createChildNode = function(node) {
|
||||||
|
var att, attName, attributes, child, i, len, ref1, ref2;
|
||||||
|
switch (node.type) {
|
||||||
|
case NodeType.CData:
|
||||||
|
this.cdata(node.value);
|
||||||
|
break;
|
||||||
|
case NodeType.Comment:
|
||||||
|
this.comment(node.value);
|
||||||
|
break;
|
||||||
|
case NodeType.Element:
|
||||||
|
attributes = {};
|
||||||
|
ref1 = node.attribs;
|
||||||
|
for (attName in ref1) {
|
||||||
|
if (!hasProp.call(ref1, attName)) continue;
|
||||||
|
att = ref1[attName];
|
||||||
|
attributes[attName] = att.value;
|
||||||
|
}
|
||||||
|
this.node(node.name, attributes);
|
||||||
|
break;
|
||||||
|
case NodeType.Dummy:
|
||||||
|
this.dummy();
|
||||||
|
break;
|
||||||
|
case NodeType.Raw:
|
||||||
|
this.raw(node.value);
|
||||||
|
break;
|
||||||
|
case NodeType.Text:
|
||||||
|
this.text(node.value);
|
||||||
|
break;
|
||||||
|
case NodeType.ProcessingInstruction:
|
||||||
|
this.instruction(node.target, node.value);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new Error("This XML node type is not supported in a JS object: " + node.constructor.name);
|
||||||
|
}
|
||||||
|
ref2 = node.children;
|
||||||
|
for (i = 0, len = ref2.length; i < len; i++) {
|
||||||
|
child = ref2[i];
|
||||||
|
this.createChildNode(child);
|
||||||
|
if (child.type === NodeType.Element) {
|
||||||
|
this.up();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.dummy = function() {
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.node = function(name, attributes, text) {
|
||||||
|
var ref1;
|
||||||
|
if (name == null) {
|
||||||
|
throw new Error("Missing node name.");
|
||||||
|
}
|
||||||
|
if (this.root && this.currentLevel === -1) {
|
||||||
|
throw new Error("Document can only have one root node. " + this.debugInfo(name));
|
||||||
|
}
|
||||||
|
this.openCurrent();
|
||||||
|
name = getValue(name);
|
||||||
|
if (attributes == null) {
|
||||||
|
attributes = {};
|
||||||
|
}
|
||||||
|
attributes = getValue(attributes);
|
||||||
|
if (!isObject(attributes)) {
|
||||||
|
ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];
|
||||||
|
}
|
||||||
|
this.currentNode = new XMLElement(this, name, attributes);
|
||||||
|
this.currentNode.children = false;
|
||||||
|
this.currentLevel++;
|
||||||
|
this.openTags[this.currentLevel] = this.currentNode;
|
||||||
|
if (text != null) {
|
||||||
|
this.text(text);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.element = function(name, attributes, text) {
|
||||||
|
var child, i, len, oldValidationFlag, ref1, root;
|
||||||
|
if (this.currentNode && this.currentNode.type === NodeType.DocType) {
|
||||||
|
this.dtdElement.apply(this, arguments);
|
||||||
|
} else {
|
||||||
|
if (Array.isArray(name) || isObject(name) || isFunction(name)) {
|
||||||
|
oldValidationFlag = this.options.noValidation;
|
||||||
|
this.options.noValidation = true;
|
||||||
|
root = new XMLDocument(this.options).element('TEMP_ROOT');
|
||||||
|
root.element(name);
|
||||||
|
this.options.noValidation = oldValidationFlag;
|
||||||
|
ref1 = root.children;
|
||||||
|
for (i = 0, len = ref1.length; i < len; i++) {
|
||||||
|
child = ref1[i];
|
||||||
|
this.createChildNode(child);
|
||||||
|
if (child.type === NodeType.Element) {
|
||||||
|
this.up();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.node(name, attributes, text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.attribute = function(name, value) {
|
||||||
|
var attName, attValue;
|
||||||
|
if (!this.currentNode || this.currentNode.children) {
|
||||||
|
throw new Error("att() can only be used immediately after an ele() call in callback mode. " + this.debugInfo(name));
|
||||||
|
}
|
||||||
|
if (name != null) {
|
||||||
|
name = getValue(name);
|
||||||
|
}
|
||||||
|
if (isObject(name)) {
|
||||||
|
for (attName in name) {
|
||||||
|
if (!hasProp.call(name, attName)) continue;
|
||||||
|
attValue = name[attName];
|
||||||
|
this.attribute(attName, attValue);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (isFunction(value)) {
|
||||||
|
value = value.apply();
|
||||||
|
}
|
||||||
|
if (this.options.keepNullAttributes && (value == null)) {
|
||||||
|
this.currentNode.attribs[name] = new XMLAttribute(this, name, "");
|
||||||
|
} else if (value != null) {
|
||||||
|
this.currentNode.attribs[name] = new XMLAttribute(this, name, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.text = function(value) {
|
||||||
|
var node;
|
||||||
|
this.openCurrent();
|
||||||
|
node = new XMLText(this, value);
|
||||||
|
this.onData(this.writer.text(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.cdata = function(value) {
|
||||||
|
var node;
|
||||||
|
this.openCurrent();
|
||||||
|
node = new XMLCData(this, value);
|
||||||
|
this.onData(this.writer.cdata(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.comment = function(value) {
|
||||||
|
var node;
|
||||||
|
this.openCurrent();
|
||||||
|
node = new XMLComment(this, value);
|
||||||
|
this.onData(this.writer.comment(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.raw = function(value) {
|
||||||
|
var node;
|
||||||
|
this.openCurrent();
|
||||||
|
node = new XMLRaw(this, value);
|
||||||
|
this.onData(this.writer.raw(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.instruction = function(target, value) {
|
||||||
|
var i, insTarget, insValue, len, node;
|
||||||
|
this.openCurrent();
|
||||||
|
if (target != null) {
|
||||||
|
target = getValue(target);
|
||||||
|
}
|
||||||
|
if (value != null) {
|
||||||
|
value = getValue(value);
|
||||||
|
}
|
||||||
|
if (Array.isArray(target)) {
|
||||||
|
for (i = 0, len = target.length; i < len; i++) {
|
||||||
|
insTarget = target[i];
|
||||||
|
this.instruction(insTarget);
|
||||||
|
}
|
||||||
|
} else if (isObject(target)) {
|
||||||
|
for (insTarget in target) {
|
||||||
|
if (!hasProp.call(target, insTarget)) continue;
|
||||||
|
insValue = target[insTarget];
|
||||||
|
this.instruction(insTarget, insValue);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (isFunction(value)) {
|
||||||
|
value = value.apply();
|
||||||
|
}
|
||||||
|
node = new XMLProcessingInstruction(this, target, value);
|
||||||
|
this.onData(this.writer.processingInstruction(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.declaration = function(version, encoding, standalone) {
|
||||||
|
var node;
|
||||||
|
this.openCurrent();
|
||||||
|
if (this.documentStarted) {
|
||||||
|
throw new Error("declaration() must be the first node.");
|
||||||
|
}
|
||||||
|
node = new XMLDeclaration(this, version, encoding, standalone);
|
||||||
|
this.onData(this.writer.declaration(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.doctype = function(root, pubID, sysID) {
|
||||||
|
this.openCurrent();
|
||||||
|
if (root == null) {
|
||||||
|
throw new Error("Missing root node name.");
|
||||||
|
}
|
||||||
|
if (this.root) {
|
||||||
|
throw new Error("dtd() must come before the root node.");
|
||||||
|
}
|
||||||
|
this.currentNode = new XMLDocType(this, pubID, sysID);
|
||||||
|
this.currentNode.rootNodeName = root;
|
||||||
|
this.currentNode.children = false;
|
||||||
|
this.currentLevel++;
|
||||||
|
this.openTags[this.currentLevel] = this.currentNode;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.dtdElement = function(name, value) {
|
||||||
|
var node;
|
||||||
|
this.openCurrent();
|
||||||
|
node = new XMLDTDElement(this, name, value);
|
||||||
|
this.onData(this.writer.dtdElement(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {
|
||||||
|
var node;
|
||||||
|
this.openCurrent();
|
||||||
|
node = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);
|
||||||
|
this.onData(this.writer.dtdAttList(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.entity = function(name, value) {
|
||||||
|
var node;
|
||||||
|
this.openCurrent();
|
||||||
|
node = new XMLDTDEntity(this, false, name, value);
|
||||||
|
this.onData(this.writer.dtdEntity(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.pEntity = function(name, value) {
|
||||||
|
var node;
|
||||||
|
this.openCurrent();
|
||||||
|
node = new XMLDTDEntity(this, true, name, value);
|
||||||
|
this.onData(this.writer.dtdEntity(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.notation = function(name, value) {
|
||||||
|
var node;
|
||||||
|
this.openCurrent();
|
||||||
|
node = new XMLDTDNotation(this, name, value);
|
||||||
|
this.onData(this.writer.dtdNotation(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.up = function() {
|
||||||
|
if (this.currentLevel < 0) {
|
||||||
|
throw new Error("The document node has no parent.");
|
||||||
|
}
|
||||||
|
if (this.currentNode) {
|
||||||
|
if (this.currentNode.children) {
|
||||||
|
this.closeNode(this.currentNode);
|
||||||
|
} else {
|
||||||
|
this.openNode(this.currentNode);
|
||||||
|
}
|
||||||
|
this.currentNode = null;
|
||||||
|
} else {
|
||||||
|
this.closeNode(this.openTags[this.currentLevel]);
|
||||||
|
}
|
||||||
|
delete this.openTags[this.currentLevel];
|
||||||
|
this.currentLevel--;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.end = function() {
|
||||||
|
while (this.currentLevel >= 0) {
|
||||||
|
this.up();
|
||||||
|
}
|
||||||
|
return this.onEnd();
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.openCurrent = function() {
|
||||||
|
if (this.currentNode) {
|
||||||
|
this.currentNode.children = true;
|
||||||
|
return this.openNode(this.currentNode);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.openNode = function(node) {
|
||||||
|
var att, chunk, name, ref1;
|
||||||
|
if (!node.isOpen) {
|
||||||
|
if (!this.root && this.currentLevel === 0 && node.type === NodeType.Element) {
|
||||||
|
this.root = node;
|
||||||
|
}
|
||||||
|
chunk = '';
|
||||||
|
if (node.type === NodeType.Element) {
|
||||||
|
this.writerOptions.state = WriterState.OpenTag;
|
||||||
|
chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + '<' + node.name;
|
||||||
|
ref1 = node.attribs;
|
||||||
|
for (name in ref1) {
|
||||||
|
if (!hasProp.call(ref1, name)) continue;
|
||||||
|
att = ref1[name];
|
||||||
|
chunk += this.writer.attribute(att, this.writerOptions, this.currentLevel);
|
||||||
|
}
|
||||||
|
chunk += (node.children ? '>' : '/>') + this.writer.endline(node, this.writerOptions, this.currentLevel);
|
||||||
|
this.writerOptions.state = WriterState.InsideTag;
|
||||||
|
} else {
|
||||||
|
this.writerOptions.state = WriterState.OpenTag;
|
||||||
|
chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + '<!DOCTYPE ' + node.rootNodeName;
|
||||||
|
if (node.pubID && node.sysID) {
|
||||||
|
chunk += ' PUBLIC "' + node.pubID + '" "' + node.sysID + '"';
|
||||||
|
} else if (node.sysID) {
|
||||||
|
chunk += ' SYSTEM "' + node.sysID + '"';
|
||||||
|
}
|
||||||
|
if (node.children) {
|
||||||
|
chunk += ' [';
|
||||||
|
this.writerOptions.state = WriterState.InsideTag;
|
||||||
|
} else {
|
||||||
|
this.writerOptions.state = WriterState.CloseTag;
|
||||||
|
chunk += '>';
|
||||||
|
}
|
||||||
|
chunk += this.writer.endline(node, this.writerOptions, this.currentLevel);
|
||||||
|
}
|
||||||
|
this.onData(chunk, this.currentLevel);
|
||||||
|
return node.isOpen = true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.closeNode = function(node) {
|
||||||
|
var chunk;
|
||||||
|
if (!node.isClosed) {
|
||||||
|
chunk = '';
|
||||||
|
this.writerOptions.state = WriterState.CloseTag;
|
||||||
|
if (node.type === NodeType.Element) {
|
||||||
|
chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + '</' + node.name + '>' + this.writer.endline(node, this.writerOptions, this.currentLevel);
|
||||||
|
} else {
|
||||||
|
chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + ']>' + this.writer.endline(node, this.writerOptions, this.currentLevel);
|
||||||
|
}
|
||||||
|
this.writerOptions.state = WriterState.None;
|
||||||
|
this.onData(chunk, this.currentLevel);
|
||||||
|
return node.isClosed = true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.onData = function(chunk, level) {
|
||||||
|
this.documentStarted = true;
|
||||||
|
return this.onDataCallback(chunk, level + 1);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.onEnd = function() {
|
||||||
|
this.documentCompleted = true;
|
||||||
|
return this.onEndCallback();
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.debugInfo = function(name) {
|
||||||
|
if (name == null) {
|
||||||
|
return "";
|
||||||
|
} else {
|
||||||
|
return "node: <" + name + ">";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.ele = function() {
|
||||||
|
return this.element.apply(this, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.nod = function(name, attributes, text) {
|
||||||
|
return this.node(name, attributes, text);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.txt = function(value) {
|
||||||
|
return this.text(value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.dat = function(value) {
|
||||||
|
return this.cdata(value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.com = function(value) {
|
||||||
|
return this.comment(value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.ins = function(target, value) {
|
||||||
|
return this.instruction(target, value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.dec = function(version, encoding, standalone) {
|
||||||
|
return this.declaration(version, encoding, standalone);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.dtd = function(root, pubID, sysID) {
|
||||||
|
return this.doctype(root, pubID, sysID);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.e = function(name, attributes, text) {
|
||||||
|
return this.element(name, attributes, text);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.n = function(name, attributes, text) {
|
||||||
|
return this.node(name, attributes, text);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.t = function(value) {
|
||||||
|
return this.text(value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.d = function(value) {
|
||||||
|
return this.cdata(value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.c = function(value) {
|
||||||
|
return this.comment(value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.r = function(value) {
|
||||||
|
return this.raw(value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.i = function(target, value) {
|
||||||
|
return this.instruction(target, value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.att = function() {
|
||||||
|
if (this.currentNode && this.currentNode.type === NodeType.DocType) {
|
||||||
|
return this.attList.apply(this, arguments);
|
||||||
|
} else {
|
||||||
|
return this.attribute.apply(this, arguments);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.a = function() {
|
||||||
|
if (this.currentNode && this.currentNode.type === NodeType.DocType) {
|
||||||
|
return this.attList.apply(this, arguments);
|
||||||
|
} else {
|
||||||
|
return this.attribute.apply(this, arguments);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.ent = function(name, value) {
|
||||||
|
return this.entity(name, value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.pent = function(name, value) {
|
||||||
|
return this.pEntity(name, value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDocumentCB.prototype.not = function(name, value) {
|
||||||
|
return this.notation(name, value);
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLDocumentCB;
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
}).call(this);
|
24
lib/node/node_modules/xmlbuilder/lib/XMLDocumentFragment.js
generated
vendored
Normal file
24
lib/node/node_modules/xmlbuilder/lib/XMLDocumentFragment.js
generated
vendored
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var NodeType, XMLDocumentFragment, XMLNode,
|
||||||
|
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
XMLNode = require('./XMLNode');
|
||||||
|
|
||||||
|
NodeType = require('./NodeType');
|
||||||
|
|
||||||
|
module.exports = XMLDocumentFragment = (function(superClass) {
|
||||||
|
extend(XMLDocumentFragment, superClass);
|
||||||
|
|
||||||
|
function XMLDocumentFragment() {
|
||||||
|
XMLDocumentFragment.__super__.constructor.call(this, null);
|
||||||
|
this.name = "#document-fragment";
|
||||||
|
this.type = NodeType.DocumentFragment;
|
||||||
|
}
|
||||||
|
|
||||||
|
return XMLDocumentFragment;
|
||||||
|
|
||||||
|
})(XMLNode);
|
||||||
|
|
||||||
|
}).call(this);
|
31
lib/node/node_modules/xmlbuilder/lib/XMLDummy.js
generated
vendored
Normal file
31
lib/node/node_modules/xmlbuilder/lib/XMLDummy.js
generated
vendored
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var NodeType, XMLDummy, XMLNode,
|
||||||
|
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
XMLNode = require('./XMLNode');
|
||||||
|
|
||||||
|
NodeType = require('./NodeType');
|
||||||
|
|
||||||
|
module.exports = XMLDummy = (function(superClass) {
|
||||||
|
extend(XMLDummy, superClass);
|
||||||
|
|
||||||
|
function XMLDummy(parent) {
|
||||||
|
XMLDummy.__super__.constructor.call(this, parent);
|
||||||
|
this.type = NodeType.Dummy;
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLDummy.prototype.clone = function() {
|
||||||
|
return Object.create(this);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLDummy.prototype.toString = function(options) {
|
||||||
|
return '';
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLDummy;
|
||||||
|
|
||||||
|
})(XMLNode);
|
||||||
|
|
||||||
|
}).call(this);
|
298
lib/node/node_modules/xmlbuilder/lib/XMLElement.js
generated
vendored
Normal file
298
lib/node/node_modules/xmlbuilder/lib/XMLElement.js
generated
vendored
Normal file
|
@ -0,0 +1,298 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var NodeType, XMLAttribute, XMLElement, XMLNamedNodeMap, XMLNode, getValue, isFunction, isObject, ref,
|
||||||
|
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, getValue = ref.getValue;
|
||||||
|
|
||||||
|
XMLNode = require('./XMLNode');
|
||||||
|
|
||||||
|
NodeType = require('./NodeType');
|
||||||
|
|
||||||
|
XMLAttribute = require('./XMLAttribute');
|
||||||
|
|
||||||
|
XMLNamedNodeMap = require('./XMLNamedNodeMap');
|
||||||
|
|
||||||
|
module.exports = XMLElement = (function(superClass) {
|
||||||
|
extend(XMLElement, superClass);
|
||||||
|
|
||||||
|
function XMLElement(parent, name, attributes) {
|
||||||
|
var child, j, len, ref1;
|
||||||
|
XMLElement.__super__.constructor.call(this, parent);
|
||||||
|
if (name == null) {
|
||||||
|
throw new Error("Missing element name. " + this.debugInfo());
|
||||||
|
}
|
||||||
|
this.name = this.stringify.name(name);
|
||||||
|
this.type = NodeType.Element;
|
||||||
|
this.attribs = {};
|
||||||
|
this.schemaTypeInfo = null;
|
||||||
|
if (attributes != null) {
|
||||||
|
this.attribute(attributes);
|
||||||
|
}
|
||||||
|
if (parent.type === NodeType.Document) {
|
||||||
|
this.isRoot = true;
|
||||||
|
this.documentObject = parent;
|
||||||
|
parent.rootObject = this;
|
||||||
|
if (parent.children) {
|
||||||
|
ref1 = parent.children;
|
||||||
|
for (j = 0, len = ref1.length; j < len; j++) {
|
||||||
|
child = ref1[j];
|
||||||
|
if (child.type === NodeType.DocType) {
|
||||||
|
child.name = this.name;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.defineProperty(XMLElement.prototype, 'tagName', {
|
||||||
|
get: function() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLElement.prototype, 'namespaceURI', {
|
||||||
|
get: function() {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLElement.prototype, 'prefix', {
|
||||||
|
get: function() {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLElement.prototype, 'localName', {
|
||||||
|
get: function() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLElement.prototype, 'id', {
|
||||||
|
get: function() {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLElement.prototype, 'className', {
|
||||||
|
get: function() {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLElement.prototype, 'classList', {
|
||||||
|
get: function() {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLElement.prototype, 'attributes', {
|
||||||
|
get: function() {
|
||||||
|
if (!this.attributeMap || !this.attributeMap.nodes) {
|
||||||
|
this.attributeMap = new XMLNamedNodeMap(this.attribs);
|
||||||
|
}
|
||||||
|
return this.attributeMap;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
XMLElement.prototype.clone = function() {
|
||||||
|
var att, attName, clonedSelf, ref1;
|
||||||
|
clonedSelf = Object.create(this);
|
||||||
|
if (clonedSelf.isRoot) {
|
||||||
|
clonedSelf.documentObject = null;
|
||||||
|
}
|
||||||
|
clonedSelf.attribs = {};
|
||||||
|
ref1 = this.attribs;
|
||||||
|
for (attName in ref1) {
|
||||||
|
if (!hasProp.call(ref1, attName)) continue;
|
||||||
|
att = ref1[attName];
|
||||||
|
clonedSelf.attribs[attName] = att.clone();
|
||||||
|
}
|
||||||
|
clonedSelf.children = [];
|
||||||
|
this.children.forEach(function(child) {
|
||||||
|
var clonedChild;
|
||||||
|
clonedChild = child.clone();
|
||||||
|
clonedChild.parent = clonedSelf;
|
||||||
|
return clonedSelf.children.push(clonedChild);
|
||||||
|
});
|
||||||
|
return clonedSelf;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.attribute = function(name, value) {
|
||||||
|
var attName, attValue;
|
||||||
|
if (name != null) {
|
||||||
|
name = getValue(name);
|
||||||
|
}
|
||||||
|
if (isObject(name)) {
|
||||||
|
for (attName in name) {
|
||||||
|
if (!hasProp.call(name, attName)) continue;
|
||||||
|
attValue = name[attName];
|
||||||
|
this.attribute(attName, attValue);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (isFunction(value)) {
|
||||||
|
value = value.apply();
|
||||||
|
}
|
||||||
|
if (this.options.keepNullAttributes && (value == null)) {
|
||||||
|
this.attribs[name] = new XMLAttribute(this, name, "");
|
||||||
|
} else if (value != null) {
|
||||||
|
this.attribs[name] = new XMLAttribute(this, name, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.removeAttribute = function(name) {
|
||||||
|
var attName, j, len;
|
||||||
|
if (name == null) {
|
||||||
|
throw new Error("Missing attribute name. " + this.debugInfo());
|
||||||
|
}
|
||||||
|
name = getValue(name);
|
||||||
|
if (Array.isArray(name)) {
|
||||||
|
for (j = 0, len = name.length; j < len; j++) {
|
||||||
|
attName = name[j];
|
||||||
|
delete this.attribs[attName];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
delete this.attribs[name];
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.toString = function(options) {
|
||||||
|
return this.options.writer.element(this, this.options.writer.filterOptions(options));
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.att = function(name, value) {
|
||||||
|
return this.attribute(name, value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.a = function(name, value) {
|
||||||
|
return this.attribute(name, value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.getAttribute = function(name) {
|
||||||
|
if (this.attribs.hasOwnProperty(name)) {
|
||||||
|
return this.attribs[name].value;
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.setAttribute = function(name, value) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.getAttributeNode = function(name) {
|
||||||
|
if (this.attribs.hasOwnProperty(name)) {
|
||||||
|
return this.attribs[name];
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.setAttributeNode = function(newAttr) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.removeAttributeNode = function(oldAttr) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.getElementsByTagName = function(name) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.getAttributeNS = function(namespaceURI, localName) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.setAttributeNS = function(namespaceURI, qualifiedName, value) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.removeAttributeNS = function(namespaceURI, localName) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.getAttributeNodeNS = function(namespaceURI, localName) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.setAttributeNodeNS = function(newAttr) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.getElementsByTagNameNS = function(namespaceURI, localName) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.hasAttribute = function(name) {
|
||||||
|
return this.attribs.hasOwnProperty(name);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.hasAttributeNS = function(namespaceURI, localName) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.setIdAttribute = function(name, isId) {
|
||||||
|
if (this.attribs.hasOwnProperty(name)) {
|
||||||
|
return this.attribs[name].isId;
|
||||||
|
} else {
|
||||||
|
return isId;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.setIdAttributeNS = function(namespaceURI, localName, isId) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.setIdAttributeNode = function(idAttr, isId) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.getElementsByTagName = function(tagname) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.getElementsByTagNameNS = function(namespaceURI, localName) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.getElementsByClassName = function(classNames) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLElement.prototype.isEqualNode = function(node) {
|
||||||
|
var i, j, ref1;
|
||||||
|
if (!XMLElement.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (node.namespaceURI !== this.namespaceURI) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (node.prefix !== this.prefix) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (node.localName !== this.localName) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (node.attribs.length !== this.attribs.length) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
for (i = j = 0, ref1 = this.attribs.length - 1; 0 <= ref1 ? j <= ref1 : j >= ref1; i = 0 <= ref1 ? ++j : --j) {
|
||||||
|
if (!this.attribs[i].isEqualNode(node.attribs[i])) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLElement;
|
||||||
|
|
||||||
|
})(XMLNode);
|
||||||
|
|
||||||
|
}).call(this);
|
58
lib/node/node_modules/xmlbuilder/lib/XMLNamedNodeMap.js
generated
vendored
Normal file
58
lib/node/node_modules/xmlbuilder/lib/XMLNamedNodeMap.js
generated
vendored
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var XMLNamedNodeMap;
|
||||||
|
|
||||||
|
module.exports = XMLNamedNodeMap = (function() {
|
||||||
|
function XMLNamedNodeMap(nodes) {
|
||||||
|
this.nodes = nodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.defineProperty(XMLNamedNodeMap.prototype, 'length', {
|
||||||
|
get: function() {
|
||||||
|
return Object.keys(this.nodes).length || 0;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
XMLNamedNodeMap.prototype.clone = function() {
|
||||||
|
return this.nodes = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNamedNodeMap.prototype.getNamedItem = function(name) {
|
||||||
|
return this.nodes[name];
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNamedNodeMap.prototype.setNamedItem = function(node) {
|
||||||
|
var oldNode;
|
||||||
|
oldNode = this.nodes[node.nodeName];
|
||||||
|
this.nodes[node.nodeName] = node;
|
||||||
|
return oldNode || null;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNamedNodeMap.prototype.removeNamedItem = function(name) {
|
||||||
|
var oldNode;
|
||||||
|
oldNode = this.nodes[name];
|
||||||
|
delete this.nodes[name];
|
||||||
|
return oldNode || null;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNamedNodeMap.prototype.item = function(index) {
|
||||||
|
return this.nodes[Object.keys(this.nodes)[index]] || null;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNamedNodeMap.prototype.getNamedItemNS = function(namespaceURI, localName) {
|
||||||
|
throw new Error("This DOM method is not implemented.");
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNamedNodeMap.prototype.setNamedItemNS = function(node) {
|
||||||
|
throw new Error("This DOM method is not implemented.");
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNamedNodeMap.prototype.removeNamedItemNS = function(namespaceURI, localName) {
|
||||||
|
throw new Error("This DOM method is not implemented.");
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLNamedNodeMap;
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
}).call(this);
|
785
lib/node/node_modules/xmlbuilder/lib/XMLNode.js
generated
vendored
Normal file
785
lib/node/node_modules/xmlbuilder/lib/XMLNode.js
generated
vendored
Normal file
|
@ -0,0 +1,785 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var DocumentPosition, NodeType, XMLCData, XMLComment, XMLDeclaration, XMLDocType, XMLDummy, XMLElement, XMLNamedNodeMap, XMLNode, XMLNodeList, XMLProcessingInstruction, XMLRaw, XMLText, getValue, isEmpty, isFunction, isObject, ref1,
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
ref1 = require('./Utility'), isObject = ref1.isObject, isFunction = ref1.isFunction, isEmpty = ref1.isEmpty, getValue = ref1.getValue;
|
||||||
|
|
||||||
|
XMLElement = null;
|
||||||
|
|
||||||
|
XMLCData = null;
|
||||||
|
|
||||||
|
XMLComment = null;
|
||||||
|
|
||||||
|
XMLDeclaration = null;
|
||||||
|
|
||||||
|
XMLDocType = null;
|
||||||
|
|
||||||
|
XMLRaw = null;
|
||||||
|
|
||||||
|
XMLText = null;
|
||||||
|
|
||||||
|
XMLProcessingInstruction = null;
|
||||||
|
|
||||||
|
XMLDummy = null;
|
||||||
|
|
||||||
|
NodeType = null;
|
||||||
|
|
||||||
|
XMLNodeList = null;
|
||||||
|
|
||||||
|
XMLNamedNodeMap = null;
|
||||||
|
|
||||||
|
DocumentPosition = null;
|
||||||
|
|
||||||
|
module.exports = XMLNode = (function() {
|
||||||
|
function XMLNode(parent1) {
|
||||||
|
this.parent = parent1;
|
||||||
|
if (this.parent) {
|
||||||
|
this.options = this.parent.options;
|
||||||
|
this.stringify = this.parent.stringify;
|
||||||
|
}
|
||||||
|
this.value = null;
|
||||||
|
this.children = [];
|
||||||
|
this.baseURI = null;
|
||||||
|
if (!XMLElement) {
|
||||||
|
XMLElement = require('./XMLElement');
|
||||||
|
XMLCData = require('./XMLCData');
|
||||||
|
XMLComment = require('./XMLComment');
|
||||||
|
XMLDeclaration = require('./XMLDeclaration');
|
||||||
|
XMLDocType = require('./XMLDocType');
|
||||||
|
XMLRaw = require('./XMLRaw');
|
||||||
|
XMLText = require('./XMLText');
|
||||||
|
XMLProcessingInstruction = require('./XMLProcessingInstruction');
|
||||||
|
XMLDummy = require('./XMLDummy');
|
||||||
|
NodeType = require('./NodeType');
|
||||||
|
XMLNodeList = require('./XMLNodeList');
|
||||||
|
XMLNamedNodeMap = require('./XMLNamedNodeMap');
|
||||||
|
DocumentPosition = require('./DocumentPosition');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.defineProperty(XMLNode.prototype, 'nodeName', {
|
||||||
|
get: function() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLNode.prototype, 'nodeType', {
|
||||||
|
get: function() {
|
||||||
|
return this.type;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLNode.prototype, 'nodeValue', {
|
||||||
|
get: function() {
|
||||||
|
return this.value;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLNode.prototype, 'parentNode', {
|
||||||
|
get: function() {
|
||||||
|
return this.parent;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLNode.prototype, 'childNodes', {
|
||||||
|
get: function() {
|
||||||
|
if (!this.childNodeList || !this.childNodeList.nodes) {
|
||||||
|
this.childNodeList = new XMLNodeList(this.children);
|
||||||
|
}
|
||||||
|
return this.childNodeList;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLNode.prototype, 'firstChild', {
|
||||||
|
get: function() {
|
||||||
|
return this.children[0] || null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLNode.prototype, 'lastChild', {
|
||||||
|
get: function() {
|
||||||
|
return this.children[this.children.length - 1] || null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLNode.prototype, 'previousSibling', {
|
||||||
|
get: function() {
|
||||||
|
var i;
|
||||||
|
i = this.parent.children.indexOf(this);
|
||||||
|
return this.parent.children[i - 1] || null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLNode.prototype, 'nextSibling', {
|
||||||
|
get: function() {
|
||||||
|
var i;
|
||||||
|
i = this.parent.children.indexOf(this);
|
||||||
|
return this.parent.children[i + 1] || null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLNode.prototype, 'ownerDocument', {
|
||||||
|
get: function() {
|
||||||
|
return this.document() || null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLNode.prototype, 'textContent', {
|
||||||
|
get: function() {
|
||||||
|
var child, j, len, ref2, str;
|
||||||
|
if (this.nodeType === NodeType.Element || this.nodeType === NodeType.DocumentFragment) {
|
||||||
|
str = '';
|
||||||
|
ref2 = this.children;
|
||||||
|
for (j = 0, len = ref2.length; j < len; j++) {
|
||||||
|
child = ref2[j];
|
||||||
|
if (child.textContent) {
|
||||||
|
str += child.textContent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
set: function(value) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
XMLNode.prototype.setParent = function(parent) {
|
||||||
|
var child, j, len, ref2, results;
|
||||||
|
this.parent = parent;
|
||||||
|
if (parent) {
|
||||||
|
this.options = parent.options;
|
||||||
|
this.stringify = parent.stringify;
|
||||||
|
}
|
||||||
|
ref2 = this.children;
|
||||||
|
results = [];
|
||||||
|
for (j = 0, len = ref2.length; j < len; j++) {
|
||||||
|
child = ref2[j];
|
||||||
|
results.push(child.setParent(this));
|
||||||
|
}
|
||||||
|
return results;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.element = function(name, attributes, text) {
|
||||||
|
var childNode, item, j, k, key, lastChild, len, len1, ref2, ref3, val;
|
||||||
|
lastChild = null;
|
||||||
|
if (attributes === null && (text == null)) {
|
||||||
|
ref2 = [{}, null], attributes = ref2[0], text = ref2[1];
|
||||||
|
}
|
||||||
|
if (attributes == null) {
|
||||||
|
attributes = {};
|
||||||
|
}
|
||||||
|
attributes = getValue(attributes);
|
||||||
|
if (!isObject(attributes)) {
|
||||||
|
ref3 = [attributes, text], text = ref3[0], attributes = ref3[1];
|
||||||
|
}
|
||||||
|
if (name != null) {
|
||||||
|
name = getValue(name);
|
||||||
|
}
|
||||||
|
if (Array.isArray(name)) {
|
||||||
|
for (j = 0, len = name.length; j < len; j++) {
|
||||||
|
item = name[j];
|
||||||
|
lastChild = this.element(item);
|
||||||
|
}
|
||||||
|
} else if (isFunction(name)) {
|
||||||
|
lastChild = this.element(name.apply());
|
||||||
|
} else if (isObject(name)) {
|
||||||
|
for (key in name) {
|
||||||
|
if (!hasProp.call(name, key)) continue;
|
||||||
|
val = name[key];
|
||||||
|
if (isFunction(val)) {
|
||||||
|
val = val.apply();
|
||||||
|
}
|
||||||
|
if (!this.options.ignoreDecorators && this.stringify.convertAttKey && key.indexOf(this.stringify.convertAttKey) === 0) {
|
||||||
|
lastChild = this.attribute(key.substr(this.stringify.convertAttKey.length), val);
|
||||||
|
} else if (!this.options.separateArrayItems && Array.isArray(val) && isEmpty(val)) {
|
||||||
|
lastChild = this.dummy();
|
||||||
|
} else if (isObject(val) && isEmpty(val)) {
|
||||||
|
lastChild = this.element(key);
|
||||||
|
} else if (!this.options.keepNullNodes && (val == null)) {
|
||||||
|
lastChild = this.dummy();
|
||||||
|
} else if (!this.options.separateArrayItems && Array.isArray(val)) {
|
||||||
|
for (k = 0, len1 = val.length; k < len1; k++) {
|
||||||
|
item = val[k];
|
||||||
|
childNode = {};
|
||||||
|
childNode[key] = item;
|
||||||
|
lastChild = this.element(childNode);
|
||||||
|
}
|
||||||
|
} else if (isObject(val)) {
|
||||||
|
if (!this.options.ignoreDecorators && this.stringify.convertTextKey && key.indexOf(this.stringify.convertTextKey) === 0) {
|
||||||
|
lastChild = this.element(val);
|
||||||
|
} else {
|
||||||
|
lastChild = this.element(key);
|
||||||
|
lastChild.element(val);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
lastChild = this.element(key, val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (!this.options.keepNullNodes && text === null) {
|
||||||
|
lastChild = this.dummy();
|
||||||
|
} else {
|
||||||
|
if (!this.options.ignoreDecorators && this.stringify.convertTextKey && name.indexOf(this.stringify.convertTextKey) === 0) {
|
||||||
|
lastChild = this.text(text);
|
||||||
|
} else if (!this.options.ignoreDecorators && this.stringify.convertCDataKey && name.indexOf(this.stringify.convertCDataKey) === 0) {
|
||||||
|
lastChild = this.cdata(text);
|
||||||
|
} else if (!this.options.ignoreDecorators && this.stringify.convertCommentKey && name.indexOf(this.stringify.convertCommentKey) === 0) {
|
||||||
|
lastChild = this.comment(text);
|
||||||
|
} else if (!this.options.ignoreDecorators && this.stringify.convertRawKey && name.indexOf(this.stringify.convertRawKey) === 0) {
|
||||||
|
lastChild = this.raw(text);
|
||||||
|
} else if (!this.options.ignoreDecorators && this.stringify.convertPIKey && name.indexOf(this.stringify.convertPIKey) === 0) {
|
||||||
|
lastChild = this.instruction(name.substr(this.stringify.convertPIKey.length), text);
|
||||||
|
} else {
|
||||||
|
lastChild = this.node(name, attributes, text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (lastChild == null) {
|
||||||
|
throw new Error("Could not create any elements with: " + name + ". " + this.debugInfo());
|
||||||
|
}
|
||||||
|
return lastChild;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.insertBefore = function(name, attributes, text) {
|
||||||
|
var child, i, newChild, refChild, removed;
|
||||||
|
if (name != null ? name.type : void 0) {
|
||||||
|
newChild = name;
|
||||||
|
refChild = attributes;
|
||||||
|
newChild.setParent(this);
|
||||||
|
if (refChild) {
|
||||||
|
i = children.indexOf(refChild);
|
||||||
|
removed = children.splice(i);
|
||||||
|
children.push(newChild);
|
||||||
|
Array.prototype.push.apply(children, removed);
|
||||||
|
} else {
|
||||||
|
children.push(newChild);
|
||||||
|
}
|
||||||
|
return newChild;
|
||||||
|
} else {
|
||||||
|
if (this.isRoot) {
|
||||||
|
throw new Error("Cannot insert elements at root level. " + this.debugInfo(name));
|
||||||
|
}
|
||||||
|
i = this.parent.children.indexOf(this);
|
||||||
|
removed = this.parent.children.splice(i);
|
||||||
|
child = this.parent.element(name, attributes, text);
|
||||||
|
Array.prototype.push.apply(this.parent.children, removed);
|
||||||
|
return child;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.insertAfter = function(name, attributes, text) {
|
||||||
|
var child, i, removed;
|
||||||
|
if (this.isRoot) {
|
||||||
|
throw new Error("Cannot insert elements at root level. " + this.debugInfo(name));
|
||||||
|
}
|
||||||
|
i = this.parent.children.indexOf(this);
|
||||||
|
removed = this.parent.children.splice(i + 1);
|
||||||
|
child = this.parent.element(name, attributes, text);
|
||||||
|
Array.prototype.push.apply(this.parent.children, removed);
|
||||||
|
return child;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.remove = function() {
|
||||||
|
var i, ref2;
|
||||||
|
if (this.isRoot) {
|
||||||
|
throw new Error("Cannot remove the root element. " + this.debugInfo());
|
||||||
|
}
|
||||||
|
i = this.parent.children.indexOf(this);
|
||||||
|
[].splice.apply(this.parent.children, [i, i - i + 1].concat(ref2 = [])), ref2;
|
||||||
|
return this.parent;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.node = function(name, attributes, text) {
|
||||||
|
var child, ref2;
|
||||||
|
if (name != null) {
|
||||||
|
name = getValue(name);
|
||||||
|
}
|
||||||
|
attributes || (attributes = {});
|
||||||
|
attributes = getValue(attributes);
|
||||||
|
if (!isObject(attributes)) {
|
||||||
|
ref2 = [attributes, text], text = ref2[0], attributes = ref2[1];
|
||||||
|
}
|
||||||
|
child = new XMLElement(this, name, attributes);
|
||||||
|
if (text != null) {
|
||||||
|
child.text(text);
|
||||||
|
}
|
||||||
|
this.children.push(child);
|
||||||
|
return child;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.text = function(value) {
|
||||||
|
var child;
|
||||||
|
if (isObject(value)) {
|
||||||
|
this.element(value);
|
||||||
|
}
|
||||||
|
child = new XMLText(this, value);
|
||||||
|
this.children.push(child);
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.cdata = function(value) {
|
||||||
|
var child;
|
||||||
|
child = new XMLCData(this, value);
|
||||||
|
this.children.push(child);
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.comment = function(value) {
|
||||||
|
var child;
|
||||||
|
child = new XMLComment(this, value);
|
||||||
|
this.children.push(child);
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.commentBefore = function(value) {
|
||||||
|
var child, i, removed;
|
||||||
|
i = this.parent.children.indexOf(this);
|
||||||
|
removed = this.parent.children.splice(i);
|
||||||
|
child = this.parent.comment(value);
|
||||||
|
Array.prototype.push.apply(this.parent.children, removed);
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.commentAfter = function(value) {
|
||||||
|
var child, i, removed;
|
||||||
|
i = this.parent.children.indexOf(this);
|
||||||
|
removed = this.parent.children.splice(i + 1);
|
||||||
|
child = this.parent.comment(value);
|
||||||
|
Array.prototype.push.apply(this.parent.children, removed);
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.raw = function(value) {
|
||||||
|
var child;
|
||||||
|
child = new XMLRaw(this, value);
|
||||||
|
this.children.push(child);
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.dummy = function() {
|
||||||
|
var child;
|
||||||
|
child = new XMLDummy(this);
|
||||||
|
return child;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.instruction = function(target, value) {
|
||||||
|
var insTarget, insValue, instruction, j, len;
|
||||||
|
if (target != null) {
|
||||||
|
target = getValue(target);
|
||||||
|
}
|
||||||
|
if (value != null) {
|
||||||
|
value = getValue(value);
|
||||||
|
}
|
||||||
|
if (Array.isArray(target)) {
|
||||||
|
for (j = 0, len = target.length; j < len; j++) {
|
||||||
|
insTarget = target[j];
|
||||||
|
this.instruction(insTarget);
|
||||||
|
}
|
||||||
|
} else if (isObject(target)) {
|
||||||
|
for (insTarget in target) {
|
||||||
|
if (!hasProp.call(target, insTarget)) continue;
|
||||||
|
insValue = target[insTarget];
|
||||||
|
this.instruction(insTarget, insValue);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (isFunction(value)) {
|
||||||
|
value = value.apply();
|
||||||
|
}
|
||||||
|
instruction = new XMLProcessingInstruction(this, target, value);
|
||||||
|
this.children.push(instruction);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.instructionBefore = function(target, value) {
|
||||||
|
var child, i, removed;
|
||||||
|
i = this.parent.children.indexOf(this);
|
||||||
|
removed = this.parent.children.splice(i);
|
||||||
|
child = this.parent.instruction(target, value);
|
||||||
|
Array.prototype.push.apply(this.parent.children, removed);
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.instructionAfter = function(target, value) {
|
||||||
|
var child, i, removed;
|
||||||
|
i = this.parent.children.indexOf(this);
|
||||||
|
removed = this.parent.children.splice(i + 1);
|
||||||
|
child = this.parent.instruction(target, value);
|
||||||
|
Array.prototype.push.apply(this.parent.children, removed);
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.declaration = function(version, encoding, standalone) {
|
||||||
|
var doc, xmldec;
|
||||||
|
doc = this.document();
|
||||||
|
xmldec = new XMLDeclaration(doc, version, encoding, standalone);
|
||||||
|
if (doc.children.length === 0) {
|
||||||
|
doc.children.unshift(xmldec);
|
||||||
|
} else if (doc.children[0].type === NodeType.Declaration) {
|
||||||
|
doc.children[0] = xmldec;
|
||||||
|
} else {
|
||||||
|
doc.children.unshift(xmldec);
|
||||||
|
}
|
||||||
|
return doc.root() || doc;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.dtd = function(pubID, sysID) {
|
||||||
|
var child, doc, doctype, i, j, k, len, len1, ref2, ref3;
|
||||||
|
doc = this.document();
|
||||||
|
doctype = new XMLDocType(doc, pubID, sysID);
|
||||||
|
ref2 = doc.children;
|
||||||
|
for (i = j = 0, len = ref2.length; j < len; i = ++j) {
|
||||||
|
child = ref2[i];
|
||||||
|
if (child.type === NodeType.DocType) {
|
||||||
|
doc.children[i] = doctype;
|
||||||
|
return doctype;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ref3 = doc.children;
|
||||||
|
for (i = k = 0, len1 = ref3.length; k < len1; i = ++k) {
|
||||||
|
child = ref3[i];
|
||||||
|
if (child.isRoot) {
|
||||||
|
doc.children.splice(i, 0, doctype);
|
||||||
|
return doctype;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
doc.children.push(doctype);
|
||||||
|
return doctype;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.up = function() {
|
||||||
|
if (this.isRoot) {
|
||||||
|
throw new Error("The root node has no parent. Use doc() if you need to get the document object.");
|
||||||
|
}
|
||||||
|
return this.parent;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.root = function() {
|
||||||
|
var node;
|
||||||
|
node = this;
|
||||||
|
while (node) {
|
||||||
|
if (node.type === NodeType.Document) {
|
||||||
|
return node.rootObject;
|
||||||
|
} else if (node.isRoot) {
|
||||||
|
return node;
|
||||||
|
} else {
|
||||||
|
node = node.parent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.document = function() {
|
||||||
|
var node;
|
||||||
|
node = this;
|
||||||
|
while (node) {
|
||||||
|
if (node.type === NodeType.Document) {
|
||||||
|
return node;
|
||||||
|
} else {
|
||||||
|
node = node.parent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.end = function(options) {
|
||||||
|
return this.document().end(options);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.prev = function() {
|
||||||
|
var i;
|
||||||
|
i = this.parent.children.indexOf(this);
|
||||||
|
if (i < 1) {
|
||||||
|
throw new Error("Already at the first node. " + this.debugInfo());
|
||||||
|
}
|
||||||
|
return this.parent.children[i - 1];
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.next = function() {
|
||||||
|
var i;
|
||||||
|
i = this.parent.children.indexOf(this);
|
||||||
|
if (i === -1 || i === this.parent.children.length - 1) {
|
||||||
|
throw new Error("Already at the last node. " + this.debugInfo());
|
||||||
|
}
|
||||||
|
return this.parent.children[i + 1];
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.importDocument = function(doc) {
|
||||||
|
var clonedRoot;
|
||||||
|
clonedRoot = doc.root().clone();
|
||||||
|
clonedRoot.parent = this;
|
||||||
|
clonedRoot.isRoot = false;
|
||||||
|
this.children.push(clonedRoot);
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.debugInfo = function(name) {
|
||||||
|
var ref2, ref3;
|
||||||
|
name = name || this.name;
|
||||||
|
if ((name == null) && !((ref2 = this.parent) != null ? ref2.name : void 0)) {
|
||||||
|
return "";
|
||||||
|
} else if (name == null) {
|
||||||
|
return "parent: <" + this.parent.name + ">";
|
||||||
|
} else if (!((ref3 = this.parent) != null ? ref3.name : void 0)) {
|
||||||
|
return "node: <" + name + ">";
|
||||||
|
} else {
|
||||||
|
return "node: <" + name + ">, parent: <" + this.parent.name + ">";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.ele = function(name, attributes, text) {
|
||||||
|
return this.element(name, attributes, text);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.nod = function(name, attributes, text) {
|
||||||
|
return this.node(name, attributes, text);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.txt = function(value) {
|
||||||
|
return this.text(value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.dat = function(value) {
|
||||||
|
return this.cdata(value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.com = function(value) {
|
||||||
|
return this.comment(value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.ins = function(target, value) {
|
||||||
|
return this.instruction(target, value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.doc = function() {
|
||||||
|
return this.document();
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.dec = function(version, encoding, standalone) {
|
||||||
|
return this.declaration(version, encoding, standalone);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.e = function(name, attributes, text) {
|
||||||
|
return this.element(name, attributes, text);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.n = function(name, attributes, text) {
|
||||||
|
return this.node(name, attributes, text);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.t = function(value) {
|
||||||
|
return this.text(value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.d = function(value) {
|
||||||
|
return this.cdata(value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.c = function(value) {
|
||||||
|
return this.comment(value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.r = function(value) {
|
||||||
|
return this.raw(value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.i = function(target, value) {
|
||||||
|
return this.instruction(target, value);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.u = function() {
|
||||||
|
return this.up();
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.importXMLBuilder = function(doc) {
|
||||||
|
return this.importDocument(doc);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.replaceChild = function(newChild, oldChild) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.removeChild = function(oldChild) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.appendChild = function(newChild) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.hasChildNodes = function() {
|
||||||
|
return this.children.length !== 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.cloneNode = function(deep) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.normalize = function() {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.isSupported = function(feature, version) {
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.hasAttributes = function() {
|
||||||
|
return this.attribs.length !== 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.compareDocumentPosition = function(other) {
|
||||||
|
var ref, res;
|
||||||
|
ref = this;
|
||||||
|
if (ref === other) {
|
||||||
|
return 0;
|
||||||
|
} else if (this.document() !== other.document()) {
|
||||||
|
res = DocumentPosition.Disconnected | DocumentPosition.ImplementationSpecific;
|
||||||
|
if (Math.random() < 0.5) {
|
||||||
|
res |= DocumentPosition.Preceding;
|
||||||
|
} else {
|
||||||
|
res |= DocumentPosition.Following;
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
} else if (ref.isAncestor(other)) {
|
||||||
|
return DocumentPosition.Contains | DocumentPosition.Preceding;
|
||||||
|
} else if (ref.isDescendant(other)) {
|
||||||
|
return DocumentPosition.Contains | DocumentPosition.Following;
|
||||||
|
} else if (ref.isPreceding(other)) {
|
||||||
|
return DocumentPosition.Preceding;
|
||||||
|
} else {
|
||||||
|
return DocumentPosition.Following;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.isSameNode = function(other) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.lookupPrefix = function(namespaceURI) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.isDefaultNamespace = function(namespaceURI) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.lookupNamespaceURI = function(prefix) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.isEqualNode = function(node) {
|
||||||
|
var i, j, ref2;
|
||||||
|
if (node.nodeType !== this.nodeType) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (node.children.length !== this.children.length) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
for (i = j = 0, ref2 = this.children.length - 1; 0 <= ref2 ? j <= ref2 : j >= ref2; i = 0 <= ref2 ? ++j : --j) {
|
||||||
|
if (!this.children[i].isEqualNode(node.children[i])) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.getFeature = function(feature, version) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.setUserData = function(key, data, handler) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.getUserData = function(key) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.contains = function(other) {
|
||||||
|
if (!other) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return other === this || this.isDescendant(other);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.isDescendant = function(node) {
|
||||||
|
var child, isDescendantChild, j, len, ref2;
|
||||||
|
ref2 = this.children;
|
||||||
|
for (j = 0, len = ref2.length; j < len; j++) {
|
||||||
|
child = ref2[j];
|
||||||
|
if (node === child) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
isDescendantChild = child.isDescendant(node);
|
||||||
|
if (isDescendantChild) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.isAncestor = function(node) {
|
||||||
|
return node.isDescendant(this);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.isPreceding = function(node) {
|
||||||
|
var nodePos, thisPos;
|
||||||
|
nodePos = this.treePosition(node);
|
||||||
|
thisPos = this.treePosition(this);
|
||||||
|
if (nodePos === -1 || thisPos === -1) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
return nodePos < thisPos;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.isFollowing = function(node) {
|
||||||
|
var nodePos, thisPos;
|
||||||
|
nodePos = this.treePosition(node);
|
||||||
|
thisPos = this.treePosition(this);
|
||||||
|
if (nodePos === -1 || thisPos === -1) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
return nodePos > thisPos;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.treePosition = function(node) {
|
||||||
|
var found, pos;
|
||||||
|
pos = 0;
|
||||||
|
found = false;
|
||||||
|
this.foreachTreeNode(this.document(), function(childNode) {
|
||||||
|
pos++;
|
||||||
|
if (!found && childNode === node) {
|
||||||
|
return found = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (found) {
|
||||||
|
return pos;
|
||||||
|
} else {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNode.prototype.foreachTreeNode = function(node, func) {
|
||||||
|
var child, j, len, ref2, res;
|
||||||
|
node || (node = this.document());
|
||||||
|
ref2 = node.children;
|
||||||
|
for (j = 0, len = ref2.length; j < len; j++) {
|
||||||
|
child = ref2[j];
|
||||||
|
if (res = func(child)) {
|
||||||
|
return res;
|
||||||
|
} else {
|
||||||
|
res = this.foreachTreeNode(child, func);
|
||||||
|
if (res) {
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLNode;
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
}).call(this);
|
48
lib/node/node_modules/xmlbuilder/lib/XMLNodeFilter.js
generated
vendored
Normal file
48
lib/node/node_modules/xmlbuilder/lib/XMLNodeFilter.js
generated
vendored
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var XMLNodeFilter;
|
||||||
|
|
||||||
|
module.exports = XMLNodeFilter = (function() {
|
||||||
|
function XMLNodeFilter() {}
|
||||||
|
|
||||||
|
XMLNodeFilter.prototype.FilterAccept = 1;
|
||||||
|
|
||||||
|
XMLNodeFilter.prototype.FilterReject = 2;
|
||||||
|
|
||||||
|
XMLNodeFilter.prototype.FilterSkip = 3;
|
||||||
|
|
||||||
|
XMLNodeFilter.prototype.ShowAll = 0xffffffff;
|
||||||
|
|
||||||
|
XMLNodeFilter.prototype.ShowElement = 0x1;
|
||||||
|
|
||||||
|
XMLNodeFilter.prototype.ShowAttribute = 0x2;
|
||||||
|
|
||||||
|
XMLNodeFilter.prototype.ShowText = 0x4;
|
||||||
|
|
||||||
|
XMLNodeFilter.prototype.ShowCDataSection = 0x8;
|
||||||
|
|
||||||
|
XMLNodeFilter.prototype.ShowEntityReference = 0x10;
|
||||||
|
|
||||||
|
XMLNodeFilter.prototype.ShowEntity = 0x20;
|
||||||
|
|
||||||
|
XMLNodeFilter.prototype.ShowProcessingInstruction = 0x40;
|
||||||
|
|
||||||
|
XMLNodeFilter.prototype.ShowComment = 0x80;
|
||||||
|
|
||||||
|
XMLNodeFilter.prototype.ShowDocument = 0x100;
|
||||||
|
|
||||||
|
XMLNodeFilter.prototype.ShowDocumentType = 0x200;
|
||||||
|
|
||||||
|
XMLNodeFilter.prototype.ShowDocumentFragment = 0x400;
|
||||||
|
|
||||||
|
XMLNodeFilter.prototype.ShowNotation = 0x800;
|
||||||
|
|
||||||
|
XMLNodeFilter.prototype.acceptNode = function(node) {
|
||||||
|
throw new Error("This DOM method is not implemented.");
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLNodeFilter;
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
}).call(this);
|
28
lib/node/node_modules/xmlbuilder/lib/XMLNodeList.js
generated
vendored
Normal file
28
lib/node/node_modules/xmlbuilder/lib/XMLNodeList.js
generated
vendored
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var XMLNodeList;
|
||||||
|
|
||||||
|
module.exports = XMLNodeList = (function() {
|
||||||
|
function XMLNodeList(nodes) {
|
||||||
|
this.nodes = nodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.defineProperty(XMLNodeList.prototype, 'length', {
|
||||||
|
get: function() {
|
||||||
|
return this.nodes.length || 0;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
XMLNodeList.prototype.clone = function() {
|
||||||
|
return this.nodes = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLNodeList.prototype.item = function(index) {
|
||||||
|
return this.nodes[index] || null;
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLNodeList;
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
}).call(this);
|
49
lib/node/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js
generated
vendored
Normal file
49
lib/node/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js
generated
vendored
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var NodeType, XMLCharacterData, XMLProcessingInstruction,
|
||||||
|
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
NodeType = require('./NodeType');
|
||||||
|
|
||||||
|
XMLCharacterData = require('./XMLCharacterData');
|
||||||
|
|
||||||
|
module.exports = XMLProcessingInstruction = (function(superClass) {
|
||||||
|
extend(XMLProcessingInstruction, superClass);
|
||||||
|
|
||||||
|
function XMLProcessingInstruction(parent, target, value) {
|
||||||
|
XMLProcessingInstruction.__super__.constructor.call(this, parent);
|
||||||
|
if (target == null) {
|
||||||
|
throw new Error("Missing instruction target. " + this.debugInfo());
|
||||||
|
}
|
||||||
|
this.type = NodeType.ProcessingInstruction;
|
||||||
|
this.target = this.stringify.insTarget(target);
|
||||||
|
this.name = this.target;
|
||||||
|
if (value) {
|
||||||
|
this.value = this.stringify.insValue(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLProcessingInstruction.prototype.clone = function() {
|
||||||
|
return Object.create(this);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLProcessingInstruction.prototype.toString = function(options) {
|
||||||
|
return this.options.writer.processingInstruction(this, this.options.writer.filterOptions(options));
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLProcessingInstruction.prototype.isEqualNode = function(node) {
|
||||||
|
if (!XMLProcessingInstruction.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (node.target !== this.target) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLProcessingInstruction;
|
||||||
|
|
||||||
|
})(XMLCharacterData);
|
||||||
|
|
||||||
|
}).call(this);
|
35
lib/node/node_modules/xmlbuilder/lib/XMLRaw.js
generated
vendored
Normal file
35
lib/node/node_modules/xmlbuilder/lib/XMLRaw.js
generated
vendored
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var NodeType, XMLNode, XMLRaw,
|
||||||
|
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
NodeType = require('./NodeType');
|
||||||
|
|
||||||
|
XMLNode = require('./XMLNode');
|
||||||
|
|
||||||
|
module.exports = XMLRaw = (function(superClass) {
|
||||||
|
extend(XMLRaw, superClass);
|
||||||
|
|
||||||
|
function XMLRaw(parent, text) {
|
||||||
|
XMLRaw.__super__.constructor.call(this, parent);
|
||||||
|
if (text == null) {
|
||||||
|
throw new Error("Missing raw text. " + this.debugInfo());
|
||||||
|
}
|
||||||
|
this.type = NodeType.Raw;
|
||||||
|
this.value = this.stringify.raw(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLRaw.prototype.clone = function() {
|
||||||
|
return Object.create(this);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLRaw.prototype.toString = function(options) {
|
||||||
|
return this.options.writer.raw(this, this.options.writer.filterOptions(options));
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLRaw;
|
||||||
|
|
||||||
|
})(XMLNode);
|
||||||
|
|
||||||
|
}).call(this);
|
176
lib/node/node_modules/xmlbuilder/lib/XMLStreamWriter.js
generated
vendored
Normal file
176
lib/node/node_modules/xmlbuilder/lib/XMLStreamWriter.js
generated
vendored
Normal file
|
@ -0,0 +1,176 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var NodeType, WriterState, XMLStreamWriter, XMLWriterBase,
|
||||||
|
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
NodeType = require('./NodeType');
|
||||||
|
|
||||||
|
XMLWriterBase = require('./XMLWriterBase');
|
||||||
|
|
||||||
|
WriterState = require('./WriterState');
|
||||||
|
|
||||||
|
module.exports = XMLStreamWriter = (function(superClass) {
|
||||||
|
extend(XMLStreamWriter, superClass);
|
||||||
|
|
||||||
|
function XMLStreamWriter(stream, options) {
|
||||||
|
this.stream = stream;
|
||||||
|
XMLStreamWriter.__super__.constructor.call(this, options);
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLStreamWriter.prototype.endline = function(node, options, level) {
|
||||||
|
if (node.isLastRootNode && options.state === WriterState.CloseTag) {
|
||||||
|
return '';
|
||||||
|
} else {
|
||||||
|
return XMLStreamWriter.__super__.endline.call(this, node, options, level);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStreamWriter.prototype.document = function(doc, options) {
|
||||||
|
var child, i, j, k, len, len1, ref, ref1, results;
|
||||||
|
ref = doc.children;
|
||||||
|
for (i = j = 0, len = ref.length; j < len; i = ++j) {
|
||||||
|
child = ref[i];
|
||||||
|
child.isLastRootNode = i === doc.children.length - 1;
|
||||||
|
}
|
||||||
|
options = this.filterOptions(options);
|
||||||
|
ref1 = doc.children;
|
||||||
|
results = [];
|
||||||
|
for (k = 0, len1 = ref1.length; k < len1; k++) {
|
||||||
|
child = ref1[k];
|
||||||
|
results.push(this.writeChildNode(child, options, 0));
|
||||||
|
}
|
||||||
|
return results;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStreamWriter.prototype.attribute = function(att, options, level) {
|
||||||
|
return this.stream.write(XMLStreamWriter.__super__.attribute.call(this, att, options, level));
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStreamWriter.prototype.cdata = function(node, options, level) {
|
||||||
|
return this.stream.write(XMLStreamWriter.__super__.cdata.call(this, node, options, level));
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStreamWriter.prototype.comment = function(node, options, level) {
|
||||||
|
return this.stream.write(XMLStreamWriter.__super__.comment.call(this, node, options, level));
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStreamWriter.prototype.declaration = function(node, options, level) {
|
||||||
|
return this.stream.write(XMLStreamWriter.__super__.declaration.call(this, node, options, level));
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStreamWriter.prototype.docType = function(node, options, level) {
|
||||||
|
var child, j, len, ref;
|
||||||
|
level || (level = 0);
|
||||||
|
this.openNode(node, options, level);
|
||||||
|
options.state = WriterState.OpenTag;
|
||||||
|
this.stream.write(this.indent(node, options, level));
|
||||||
|
this.stream.write('<!DOCTYPE ' + node.root().name);
|
||||||
|
if (node.pubID && node.sysID) {
|
||||||
|
this.stream.write(' PUBLIC "' + node.pubID + '" "' + node.sysID + '"');
|
||||||
|
} else if (node.sysID) {
|
||||||
|
this.stream.write(' SYSTEM "' + node.sysID + '"');
|
||||||
|
}
|
||||||
|
if (node.children.length > 0) {
|
||||||
|
this.stream.write(' [');
|
||||||
|
this.stream.write(this.endline(node, options, level));
|
||||||
|
options.state = WriterState.InsideTag;
|
||||||
|
ref = node.children;
|
||||||
|
for (j = 0, len = ref.length; j < len; j++) {
|
||||||
|
child = ref[j];
|
||||||
|
this.writeChildNode(child, options, level + 1);
|
||||||
|
}
|
||||||
|
options.state = WriterState.CloseTag;
|
||||||
|
this.stream.write(']');
|
||||||
|
}
|
||||||
|
options.state = WriterState.CloseTag;
|
||||||
|
this.stream.write(options.spaceBeforeSlash + '>');
|
||||||
|
this.stream.write(this.endline(node, options, level));
|
||||||
|
options.state = WriterState.None;
|
||||||
|
return this.closeNode(node, options, level);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStreamWriter.prototype.element = function(node, options, level) {
|
||||||
|
var att, child, childNodeCount, firstChildNode, j, len, name, prettySuppressed, ref, ref1;
|
||||||
|
level || (level = 0);
|
||||||
|
this.openNode(node, options, level);
|
||||||
|
options.state = WriterState.OpenTag;
|
||||||
|
this.stream.write(this.indent(node, options, level) + '<' + node.name);
|
||||||
|
ref = node.attribs;
|
||||||
|
for (name in ref) {
|
||||||
|
if (!hasProp.call(ref, name)) continue;
|
||||||
|
att = ref[name];
|
||||||
|
this.attribute(att, options, level);
|
||||||
|
}
|
||||||
|
childNodeCount = node.children.length;
|
||||||
|
firstChildNode = childNodeCount === 0 ? null : node.children[0];
|
||||||
|
if (childNodeCount === 0 || node.children.every(function(e) {
|
||||||
|
return (e.type === NodeType.Text || e.type === NodeType.Raw) && e.value === '';
|
||||||
|
})) {
|
||||||
|
if (options.allowEmpty) {
|
||||||
|
this.stream.write('>');
|
||||||
|
options.state = WriterState.CloseTag;
|
||||||
|
this.stream.write('</' + node.name + '>');
|
||||||
|
} else {
|
||||||
|
options.state = WriterState.CloseTag;
|
||||||
|
this.stream.write(options.spaceBeforeSlash + '/>');
|
||||||
|
}
|
||||||
|
} else if (options.pretty && childNodeCount === 1 && (firstChildNode.type === NodeType.Text || firstChildNode.type === NodeType.Raw) && (firstChildNode.value != null)) {
|
||||||
|
this.stream.write('>');
|
||||||
|
options.state = WriterState.InsideTag;
|
||||||
|
options.suppressPrettyCount++;
|
||||||
|
prettySuppressed = true;
|
||||||
|
this.writeChildNode(firstChildNode, options, level + 1);
|
||||||
|
options.suppressPrettyCount--;
|
||||||
|
prettySuppressed = false;
|
||||||
|
options.state = WriterState.CloseTag;
|
||||||
|
this.stream.write('</' + node.name + '>');
|
||||||
|
} else {
|
||||||
|
this.stream.write('>' + this.endline(node, options, level));
|
||||||
|
options.state = WriterState.InsideTag;
|
||||||
|
ref1 = node.children;
|
||||||
|
for (j = 0, len = ref1.length; j < len; j++) {
|
||||||
|
child = ref1[j];
|
||||||
|
this.writeChildNode(child, options, level + 1);
|
||||||
|
}
|
||||||
|
options.state = WriterState.CloseTag;
|
||||||
|
this.stream.write(this.indent(node, options, level) + '</' + node.name + '>');
|
||||||
|
}
|
||||||
|
this.stream.write(this.endline(node, options, level));
|
||||||
|
options.state = WriterState.None;
|
||||||
|
return this.closeNode(node, options, level);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStreamWriter.prototype.processingInstruction = function(node, options, level) {
|
||||||
|
return this.stream.write(XMLStreamWriter.__super__.processingInstruction.call(this, node, options, level));
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStreamWriter.prototype.raw = function(node, options, level) {
|
||||||
|
return this.stream.write(XMLStreamWriter.__super__.raw.call(this, node, options, level));
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStreamWriter.prototype.text = function(node, options, level) {
|
||||||
|
return this.stream.write(XMLStreamWriter.__super__.text.call(this, node, options, level));
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStreamWriter.prototype.dtdAttList = function(node, options, level) {
|
||||||
|
return this.stream.write(XMLStreamWriter.__super__.dtdAttList.call(this, node, options, level));
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStreamWriter.prototype.dtdElement = function(node, options, level) {
|
||||||
|
return this.stream.write(XMLStreamWriter.__super__.dtdElement.call(this, node, options, level));
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStreamWriter.prototype.dtdEntity = function(node, options, level) {
|
||||||
|
return this.stream.write(XMLStreamWriter.__super__.dtdEntity.call(this, node, options, level));
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStreamWriter.prototype.dtdNotation = function(node, options, level) {
|
||||||
|
return this.stream.write(XMLStreamWriter.__super__.dtdNotation.call(this, node, options, level));
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLStreamWriter;
|
||||||
|
|
||||||
|
})(XMLWriterBase);
|
||||||
|
|
||||||
|
}).call(this);
|
35
lib/node/node_modules/xmlbuilder/lib/XMLStringWriter.js
generated
vendored
Normal file
35
lib/node/node_modules/xmlbuilder/lib/XMLStringWriter.js
generated
vendored
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var XMLStringWriter, XMLWriterBase,
|
||||||
|
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
XMLWriterBase = require('./XMLWriterBase');
|
||||||
|
|
||||||
|
module.exports = XMLStringWriter = (function(superClass) {
|
||||||
|
extend(XMLStringWriter, superClass);
|
||||||
|
|
||||||
|
function XMLStringWriter(options) {
|
||||||
|
XMLStringWriter.__super__.constructor.call(this, options);
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLStringWriter.prototype.document = function(doc, options) {
|
||||||
|
var child, i, len, r, ref;
|
||||||
|
options = this.filterOptions(options);
|
||||||
|
r = '';
|
||||||
|
ref = doc.children;
|
||||||
|
for (i = 0, len = ref.length; i < len; i++) {
|
||||||
|
child = ref[i];
|
||||||
|
r += this.writeChildNode(child, options, 0);
|
||||||
|
}
|
||||||
|
if (options.pretty && r.slice(-options.newline.length) === options.newline) {
|
||||||
|
r = r.slice(0, -options.newline.length);
|
||||||
|
}
|
||||||
|
return r;
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLStringWriter;
|
||||||
|
|
||||||
|
})(XMLWriterBase);
|
||||||
|
|
||||||
|
}).call(this);
|
240
lib/node/node_modules/xmlbuilder/lib/XMLStringifier.js
generated
vendored
Normal file
240
lib/node/node_modules/xmlbuilder/lib/XMLStringifier.js
generated
vendored
Normal file
|
@ -0,0 +1,240 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var XMLStringifier,
|
||||||
|
bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
module.exports = XMLStringifier = (function() {
|
||||||
|
function XMLStringifier(options) {
|
||||||
|
this.assertLegalName = bind(this.assertLegalName, this);
|
||||||
|
this.assertLegalChar = bind(this.assertLegalChar, this);
|
||||||
|
var key, ref, value;
|
||||||
|
options || (options = {});
|
||||||
|
this.options = options;
|
||||||
|
if (!this.options.version) {
|
||||||
|
this.options.version = '1.0';
|
||||||
|
}
|
||||||
|
ref = options.stringify || {};
|
||||||
|
for (key in ref) {
|
||||||
|
if (!hasProp.call(ref, key)) continue;
|
||||||
|
value = ref[key];
|
||||||
|
this[key] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLStringifier.prototype.name = function(val) {
|
||||||
|
if (this.options.noValidation) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
return this.assertLegalName('' + val || '');
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStringifier.prototype.text = function(val) {
|
||||||
|
if (this.options.noValidation) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
return this.assertLegalChar(this.textEscape('' + val || ''));
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStringifier.prototype.cdata = function(val) {
|
||||||
|
if (this.options.noValidation) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
val = '' + val || '';
|
||||||
|
val = val.replace(']]>', ']]]]><![CDATA[>');
|
||||||
|
return this.assertLegalChar(val);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStringifier.prototype.comment = function(val) {
|
||||||
|
if (this.options.noValidation) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
val = '' + val || '';
|
||||||
|
if (val.match(/--/)) {
|
||||||
|
throw new Error("Comment text cannot contain double-hypen: " + val);
|
||||||
|
}
|
||||||
|
return this.assertLegalChar(val);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStringifier.prototype.raw = function(val) {
|
||||||
|
if (this.options.noValidation) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
return '' + val || '';
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStringifier.prototype.attValue = function(val) {
|
||||||
|
if (this.options.noValidation) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
return this.assertLegalChar(this.attEscape(val = '' + val || ''));
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStringifier.prototype.insTarget = function(val) {
|
||||||
|
if (this.options.noValidation) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
return this.assertLegalChar('' + val || '');
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStringifier.prototype.insValue = function(val) {
|
||||||
|
if (this.options.noValidation) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
val = '' + val || '';
|
||||||
|
if (val.match(/\?>/)) {
|
||||||
|
throw new Error("Invalid processing instruction value: " + val);
|
||||||
|
}
|
||||||
|
return this.assertLegalChar(val);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStringifier.prototype.xmlVersion = function(val) {
|
||||||
|
if (this.options.noValidation) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
val = '' + val || '';
|
||||||
|
if (!val.match(/1\.[0-9]+/)) {
|
||||||
|
throw new Error("Invalid version number: " + val);
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStringifier.prototype.xmlEncoding = function(val) {
|
||||||
|
if (this.options.noValidation) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
val = '' + val || '';
|
||||||
|
if (!val.match(/^[A-Za-z](?:[A-Za-z0-9._-])*$/)) {
|
||||||
|
throw new Error("Invalid encoding: " + val);
|
||||||
|
}
|
||||||
|
return this.assertLegalChar(val);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStringifier.prototype.xmlStandalone = function(val) {
|
||||||
|
if (this.options.noValidation) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
if (val) {
|
||||||
|
return "yes";
|
||||||
|
} else {
|
||||||
|
return "no";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStringifier.prototype.dtdPubID = function(val) {
|
||||||
|
if (this.options.noValidation) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
return this.assertLegalChar('' + val || '');
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStringifier.prototype.dtdSysID = function(val) {
|
||||||
|
if (this.options.noValidation) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
return this.assertLegalChar('' + val || '');
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStringifier.prototype.dtdElementValue = function(val) {
|
||||||
|
if (this.options.noValidation) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
return this.assertLegalChar('' + val || '');
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStringifier.prototype.dtdAttType = function(val) {
|
||||||
|
if (this.options.noValidation) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
return this.assertLegalChar('' + val || '');
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStringifier.prototype.dtdAttDefault = function(val) {
|
||||||
|
if (this.options.noValidation) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
return this.assertLegalChar('' + val || '');
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStringifier.prototype.dtdEntityValue = function(val) {
|
||||||
|
if (this.options.noValidation) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
return this.assertLegalChar('' + val || '');
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStringifier.prototype.dtdNData = function(val) {
|
||||||
|
if (this.options.noValidation) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
return this.assertLegalChar('' + val || '');
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStringifier.prototype.convertAttKey = '@';
|
||||||
|
|
||||||
|
XMLStringifier.prototype.convertPIKey = '?';
|
||||||
|
|
||||||
|
XMLStringifier.prototype.convertTextKey = '#text';
|
||||||
|
|
||||||
|
XMLStringifier.prototype.convertCDataKey = '#cdata';
|
||||||
|
|
||||||
|
XMLStringifier.prototype.convertCommentKey = '#comment';
|
||||||
|
|
||||||
|
XMLStringifier.prototype.convertRawKey = '#raw';
|
||||||
|
|
||||||
|
XMLStringifier.prototype.assertLegalChar = function(str) {
|
||||||
|
var regex, res;
|
||||||
|
if (this.options.noValidation) {
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
regex = '';
|
||||||
|
if (this.options.version === '1.0') {
|
||||||
|
regex = /[\0-\x08\x0B\f\x0E-\x1F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
|
||||||
|
if (res = str.match(regex)) {
|
||||||
|
throw new Error("Invalid character in string: " + str + " at index " + res.index);
|
||||||
|
}
|
||||||
|
} else if (this.options.version === '1.1') {
|
||||||
|
regex = /[\0\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
|
||||||
|
if (res = str.match(regex)) {
|
||||||
|
throw new Error("Invalid character in string: " + str + " at index " + res.index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStringifier.prototype.assertLegalName = function(str) {
|
||||||
|
var regex;
|
||||||
|
if (this.options.noValidation) {
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
this.assertLegalChar(str);
|
||||||
|
regex = /^([:A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])([\x2D\.0-:A-Z_a-z\xB7\xC0-\xD6\xD8-\xF6\xF8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])*$/;
|
||||||
|
if (!str.match(regex)) {
|
||||||
|
throw new Error("Invalid character in name");
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStringifier.prototype.textEscape = function(str) {
|
||||||
|
var ampregex;
|
||||||
|
if (this.options.noValidation) {
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
ampregex = this.options.noDoubleEncoding ? /(?!&\S+;)&/g : /&/g;
|
||||||
|
return str.replace(ampregex, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\r/g, '
');
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLStringifier.prototype.attEscape = function(str) {
|
||||||
|
var ampregex;
|
||||||
|
if (this.options.noValidation) {
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
ampregex = this.options.noDoubleEncoding ? /(?!&\S+;)&/g : /&/g;
|
||||||
|
return str.replace(ampregex, '&').replace(/</g, '<').replace(/"/g, '"').replace(/\t/g, '	').replace(/\n/g, '
').replace(/\r/g, '
');
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLStringifier;
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
}).call(this);
|
69
lib/node/node_modules/xmlbuilder/lib/XMLText.js
generated
vendored
Normal file
69
lib/node/node_modules/xmlbuilder/lib/XMLText.js
generated
vendored
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var NodeType, XMLCharacterData, XMLText,
|
||||||
|
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
NodeType = require('./NodeType');
|
||||||
|
|
||||||
|
XMLCharacterData = require('./XMLCharacterData');
|
||||||
|
|
||||||
|
module.exports = XMLText = (function(superClass) {
|
||||||
|
extend(XMLText, superClass);
|
||||||
|
|
||||||
|
function XMLText(parent, text) {
|
||||||
|
XMLText.__super__.constructor.call(this, parent);
|
||||||
|
if (text == null) {
|
||||||
|
throw new Error("Missing element text. " + this.debugInfo());
|
||||||
|
}
|
||||||
|
this.name = "#text";
|
||||||
|
this.type = NodeType.Text;
|
||||||
|
this.value = this.stringify.text(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.defineProperty(XMLText.prototype, 'isElementContentWhitespace', {
|
||||||
|
get: function() {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(XMLText.prototype, 'wholeText', {
|
||||||
|
get: function() {
|
||||||
|
var next, prev, str;
|
||||||
|
str = '';
|
||||||
|
prev = this.previousSibling;
|
||||||
|
while (prev) {
|
||||||
|
str = prev.data + str;
|
||||||
|
prev = prev.previousSibling;
|
||||||
|
}
|
||||||
|
str += this.data;
|
||||||
|
next = this.nextSibling;
|
||||||
|
while (next) {
|
||||||
|
str = str + next.data;
|
||||||
|
next = next.nextSibling;
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
XMLText.prototype.clone = function() {
|
||||||
|
return Object.create(this);
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLText.prototype.toString = function(options) {
|
||||||
|
return this.options.writer.text(this, this.options.writer.filterOptions(options));
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLText.prototype.splitText = function(offset) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLText.prototype.replaceWholeText = function(content) {
|
||||||
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLText;
|
||||||
|
|
||||||
|
})(XMLCharacterData);
|
||||||
|
|
||||||
|
}).call(this);
|
21
lib/node/node_modules/xmlbuilder/lib/XMLTypeInfo.js
generated
vendored
Normal file
21
lib/node/node_modules/xmlbuilder/lib/XMLTypeInfo.js
generated
vendored
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var Derivation, XMLTypeInfo;
|
||||||
|
|
||||||
|
Derivation = require('./Derivation');
|
||||||
|
|
||||||
|
module.exports = XMLTypeInfo = (function() {
|
||||||
|
function XMLTypeInfo(typeName, typeNamespace) {
|
||||||
|
this.typeName = typeName;
|
||||||
|
this.typeNamespace = typeNamespace;
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLTypeInfo.prototype.isDerivedFrom = function(typeNamespaceArg, typeNameArg, derivationMethod) {
|
||||||
|
throw new Error("This DOM method is not implemented.");
|
||||||
|
};
|
||||||
|
|
||||||
|
return XMLTypeInfo;
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
}).call(this);
|
16
lib/node/node_modules/xmlbuilder/lib/XMLUserDataHandler.js
generated
vendored
Normal file
16
lib/node/node_modules/xmlbuilder/lib/XMLUserDataHandler.js
generated
vendored
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var OperationType, XMLUserDataHandler;
|
||||||
|
|
||||||
|
OperationType = require('./OperationType');
|
||||||
|
|
||||||
|
module.exports = XMLUserDataHandler = (function() {
|
||||||
|
function XMLUserDataHandler() {}
|
||||||
|
|
||||||
|
XMLUserDataHandler.prototype.handle = function(operation, key, data, src, dst) {};
|
||||||
|
|
||||||
|
return XMLUserDataHandler;
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
}).call(this);
|
428
lib/node/node_modules/xmlbuilder/lib/XMLWriterBase.js
generated
vendored
Normal file
428
lib/node/node_modules/xmlbuilder/lib/XMLWriterBase.js
generated
vendored
Normal file
|
@ -0,0 +1,428 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var NodeType, WriterState, XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLDummy, XMLElement, XMLProcessingInstruction, XMLRaw, XMLText, XMLWriterBase, assign,
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
assign = require('./Utility').assign;
|
||||||
|
|
||||||
|
NodeType = require('./NodeType');
|
||||||
|
|
||||||
|
XMLDeclaration = require('./XMLDeclaration');
|
||||||
|
|
||||||
|
XMLDocType = require('./XMLDocType');
|
||||||
|
|
||||||
|
XMLCData = require('./XMLCData');
|
||||||
|
|
||||||
|
XMLComment = require('./XMLComment');
|
||||||
|
|
||||||
|
XMLElement = require('./XMLElement');
|
||||||
|
|
||||||
|
XMLRaw = require('./XMLRaw');
|
||||||
|
|
||||||
|
XMLText = require('./XMLText');
|
||||||
|
|
||||||
|
XMLProcessingInstruction = require('./XMLProcessingInstruction');
|
||||||
|
|
||||||
|
XMLDummy = require('./XMLDummy');
|
||||||
|
|
||||||
|
XMLDTDAttList = require('./XMLDTDAttList');
|
||||||
|
|
||||||
|
XMLDTDElement = require('./XMLDTDElement');
|
||||||
|
|
||||||
|
XMLDTDEntity = require('./XMLDTDEntity');
|
||||||
|
|
||||||
|
XMLDTDNotation = require('./XMLDTDNotation');
|
||||||
|
|
||||||
|
WriterState = require('./WriterState');
|
||||||
|
|
||||||
|
module.exports = XMLWriterBase = (function() {
|
||||||
|
function XMLWriterBase(options) {
|
||||||
|
var key, ref, value;
|
||||||
|
options || (options = {});
|
||||||
|
this.options = options;
|
||||||
|
ref = options.writer || {};
|
||||||
|
for (key in ref) {
|
||||||
|
if (!hasProp.call(ref, key)) continue;
|
||||||
|
value = ref[key];
|
||||||
|
this["_" + key] = this[key];
|
||||||
|
this[key] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLWriterBase.prototype.filterOptions = function(options) {
|
||||||
|
var filteredOptions, ref, ref1, ref2, ref3, ref4, ref5, ref6;
|
||||||
|
options || (options = {});
|
||||||
|
options = assign({}, this.options, options);
|
||||||
|
filteredOptions = {
|
||||||
|
writer: this
|
||||||
|
};
|
||||||
|
filteredOptions.pretty = options.pretty || false;
|
||||||
|
filteredOptions.allowEmpty = options.allowEmpty || false;
|
||||||
|
filteredOptions.indent = (ref = options.indent) != null ? ref : ' ';
|
||||||
|
filteredOptions.newline = (ref1 = options.newline) != null ? ref1 : '\n';
|
||||||
|
filteredOptions.offset = (ref2 = options.offset) != null ? ref2 : 0;
|
||||||
|
filteredOptions.dontPrettyTextNodes = (ref3 = (ref4 = options.dontPrettyTextNodes) != null ? ref4 : options.dontprettytextnodes) != null ? ref3 : 0;
|
||||||
|
filteredOptions.spaceBeforeSlash = (ref5 = (ref6 = options.spaceBeforeSlash) != null ? ref6 : options.spacebeforeslash) != null ? ref5 : '';
|
||||||
|
if (filteredOptions.spaceBeforeSlash === true) {
|
||||||
|
filteredOptions.spaceBeforeSlash = ' ';
|
||||||
|
}
|
||||||
|
filteredOptions.suppressPrettyCount = 0;
|
||||||
|
filteredOptions.user = {};
|
||||||
|
filteredOptions.state = WriterState.None;
|
||||||
|
return filteredOptions;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLWriterBase.prototype.indent = function(node, options, level) {
|
||||||
|
var indentLevel;
|
||||||
|
if (!options.pretty || options.suppressPrettyCount) {
|
||||||
|
return '';
|
||||||
|
} else if (options.pretty) {
|
||||||
|
indentLevel = (level || 0) + options.offset + 1;
|
||||||
|
if (indentLevel > 0) {
|
||||||
|
return new Array(indentLevel).join(options.indent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLWriterBase.prototype.endline = function(node, options, level) {
|
||||||
|
if (!options.pretty || options.suppressPrettyCount) {
|
||||||
|
return '';
|
||||||
|
} else {
|
||||||
|
return options.newline;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLWriterBase.prototype.attribute = function(att, options, level) {
|
||||||
|
var r;
|
||||||
|
this.openAttribute(att, options, level);
|
||||||
|
r = ' ' + att.name + '="' + att.value + '"';
|
||||||
|
this.closeAttribute(att, options, level);
|
||||||
|
return r;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLWriterBase.prototype.cdata = function(node, options, level) {
|
||||||
|
var r;
|
||||||
|
this.openNode(node, options, level);
|
||||||
|
options.state = WriterState.OpenTag;
|
||||||
|
r = this.indent(node, options, level) + '<![CDATA[';
|
||||||
|
options.state = WriterState.InsideTag;
|
||||||
|
r += node.value;
|
||||||
|
options.state = WriterState.CloseTag;
|
||||||
|
r += ']]>' + this.endline(node, options, level);
|
||||||
|
options.state = WriterState.None;
|
||||||
|
this.closeNode(node, options, level);
|
||||||
|
return r;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLWriterBase.prototype.comment = function(node, options, level) {
|
||||||
|
var r;
|
||||||
|
this.openNode(node, options, level);
|
||||||
|
options.state = WriterState.OpenTag;
|
||||||
|
r = this.indent(node, options, level) + '<!-- ';
|
||||||
|
options.state = WriterState.InsideTag;
|
||||||
|
r += node.value;
|
||||||
|
options.state = WriterState.CloseTag;
|
||||||
|
r += ' -->' + this.endline(node, options, level);
|
||||||
|
options.state = WriterState.None;
|
||||||
|
this.closeNode(node, options, level);
|
||||||
|
return r;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLWriterBase.prototype.declaration = function(node, options, level) {
|
||||||
|
var r;
|
||||||
|
this.openNode(node, options, level);
|
||||||
|
options.state = WriterState.OpenTag;
|
||||||
|
r = this.indent(node, options, level) + '<?xml';
|
||||||
|
options.state = WriterState.InsideTag;
|
||||||
|
r += ' version="' + node.version + '"';
|
||||||
|
if (node.encoding != null) {
|
||||||
|
r += ' encoding="' + node.encoding + '"';
|
||||||
|
}
|
||||||
|
if (node.standalone != null) {
|
||||||
|
r += ' standalone="' + node.standalone + '"';
|
||||||
|
}
|
||||||
|
options.state = WriterState.CloseTag;
|
||||||
|
r += options.spaceBeforeSlash + '?>';
|
||||||
|
r += this.endline(node, options, level);
|
||||||
|
options.state = WriterState.None;
|
||||||
|
this.closeNode(node, options, level);
|
||||||
|
return r;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLWriterBase.prototype.docType = function(node, options, level) {
|
||||||
|
var child, i, len, r, ref;
|
||||||
|
level || (level = 0);
|
||||||
|
this.openNode(node, options, level);
|
||||||
|
options.state = WriterState.OpenTag;
|
||||||
|
r = this.indent(node, options, level);
|
||||||
|
r += '<!DOCTYPE ' + node.root().name;
|
||||||
|
if (node.pubID && node.sysID) {
|
||||||
|
r += ' PUBLIC "' + node.pubID + '" "' + node.sysID + '"';
|
||||||
|
} else if (node.sysID) {
|
||||||
|
r += ' SYSTEM "' + node.sysID + '"';
|
||||||
|
}
|
||||||
|
if (node.children.length > 0) {
|
||||||
|
r += ' [';
|
||||||
|
r += this.endline(node, options, level);
|
||||||
|
options.state = WriterState.InsideTag;
|
||||||
|
ref = node.children;
|
||||||
|
for (i = 0, len = ref.length; i < len; i++) {
|
||||||
|
child = ref[i];
|
||||||
|
r += this.writeChildNode(child, options, level + 1);
|
||||||
|
}
|
||||||
|
options.state = WriterState.CloseTag;
|
||||||
|
r += ']';
|
||||||
|
}
|
||||||
|
options.state = WriterState.CloseTag;
|
||||||
|
r += options.spaceBeforeSlash + '>';
|
||||||
|
r += this.endline(node, options, level);
|
||||||
|
options.state = WriterState.None;
|
||||||
|
this.closeNode(node, options, level);
|
||||||
|
return r;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLWriterBase.prototype.element = function(node, options, level) {
|
||||||
|
var att, child, childNodeCount, firstChildNode, i, j, len, len1, name, prettySuppressed, r, ref, ref1, ref2;
|
||||||
|
level || (level = 0);
|
||||||
|
prettySuppressed = false;
|
||||||
|
r = '';
|
||||||
|
this.openNode(node, options, level);
|
||||||
|
options.state = WriterState.OpenTag;
|
||||||
|
r += this.indent(node, options, level) + '<' + node.name;
|
||||||
|
ref = node.attribs;
|
||||||
|
for (name in ref) {
|
||||||
|
if (!hasProp.call(ref, name)) continue;
|
||||||
|
att = ref[name];
|
||||||
|
r += this.attribute(att, options, level);
|
||||||
|
}
|
||||||
|
childNodeCount = node.children.length;
|
||||||
|
firstChildNode = childNodeCount === 0 ? null : node.children[0];
|
||||||
|
if (childNodeCount === 0 || node.children.every(function(e) {
|
||||||
|
return (e.type === NodeType.Text || e.type === NodeType.Raw) && e.value === '';
|
||||||
|
})) {
|
||||||
|
if (options.allowEmpty) {
|
||||||
|
r += '>';
|
||||||
|
options.state = WriterState.CloseTag;
|
||||||
|
r += '</' + node.name + '>' + this.endline(node, options, level);
|
||||||
|
} else {
|
||||||
|
options.state = WriterState.CloseTag;
|
||||||
|
r += options.spaceBeforeSlash + '/>' + this.endline(node, options, level);
|
||||||
|
}
|
||||||
|
} else if (options.pretty && childNodeCount === 1 && (firstChildNode.type === NodeType.Text || firstChildNode.type === NodeType.Raw) && (firstChildNode.value != null)) {
|
||||||
|
r += '>';
|
||||||
|
options.state = WriterState.InsideTag;
|
||||||
|
options.suppressPrettyCount++;
|
||||||
|
prettySuppressed = true;
|
||||||
|
r += this.writeChildNode(firstChildNode, options, level + 1);
|
||||||
|
options.suppressPrettyCount--;
|
||||||
|
prettySuppressed = false;
|
||||||
|
options.state = WriterState.CloseTag;
|
||||||
|
r += '</' + node.name + '>' + this.endline(node, options, level);
|
||||||
|
} else {
|
||||||
|
if (options.dontPrettyTextNodes) {
|
||||||
|
ref1 = node.children;
|
||||||
|
for (i = 0, len = ref1.length; i < len; i++) {
|
||||||
|
child = ref1[i];
|
||||||
|
if ((child.type === NodeType.Text || child.type === NodeType.Raw) && (child.value != null)) {
|
||||||
|
options.suppressPrettyCount++;
|
||||||
|
prettySuppressed = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
r += '>' + this.endline(node, options, level);
|
||||||
|
options.state = WriterState.InsideTag;
|
||||||
|
ref2 = node.children;
|
||||||
|
for (j = 0, len1 = ref2.length; j < len1; j++) {
|
||||||
|
child = ref2[j];
|
||||||
|
r += this.writeChildNode(child, options, level + 1);
|
||||||
|
}
|
||||||
|
options.state = WriterState.CloseTag;
|
||||||
|
r += this.indent(node, options, level) + '</' + node.name + '>';
|
||||||
|
if (prettySuppressed) {
|
||||||
|
options.suppressPrettyCount--;
|
||||||
|
}
|
||||||
|
r += this.endline(node, options, level);
|
||||||
|
options.state = WriterState.None;
|
||||||
|
}
|
||||||
|
this.closeNode(node, options, level);
|
||||||
|
return r;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLWriterBase.prototype.writeChildNode = function(node, options, level) {
|
||||||
|
switch (node.type) {
|
||||||
|
case NodeType.CData:
|
||||||
|
return this.cdata(node, options, level);
|
||||||
|
case NodeType.Comment:
|
||||||
|
return this.comment(node, options, level);
|
||||||
|
case NodeType.Element:
|
||||||
|
return this.element(node, options, level);
|
||||||
|
case NodeType.Raw:
|
||||||
|
return this.raw(node, options, level);
|
||||||
|
case NodeType.Text:
|
||||||
|
return this.text(node, options, level);
|
||||||
|
case NodeType.ProcessingInstruction:
|
||||||
|
return this.processingInstruction(node, options, level);
|
||||||
|
case NodeType.Dummy:
|
||||||
|
return '';
|
||||||
|
case NodeType.Declaration:
|
||||||
|
return this.declaration(node, options, level);
|
||||||
|
case NodeType.DocType:
|
||||||
|
return this.docType(node, options, level);
|
||||||
|
case NodeType.AttributeDeclaration:
|
||||||
|
return this.dtdAttList(node, options, level);
|
||||||
|
case NodeType.ElementDeclaration:
|
||||||
|
return this.dtdElement(node, options, level);
|
||||||
|
case NodeType.EntityDeclaration:
|
||||||
|
return this.dtdEntity(node, options, level);
|
||||||
|
case NodeType.NotationDeclaration:
|
||||||
|
return this.dtdNotation(node, options, level);
|
||||||
|
default:
|
||||||
|
throw new Error("Unknown XML node type: " + node.constructor.name);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLWriterBase.prototype.processingInstruction = function(node, options, level) {
|
||||||
|
var r;
|
||||||
|
this.openNode(node, options, level);
|
||||||
|
options.state = WriterState.OpenTag;
|
||||||
|
r = this.indent(node, options, level) + '<?';
|
||||||
|
options.state = WriterState.InsideTag;
|
||||||
|
r += node.target;
|
||||||
|
if (node.value) {
|
||||||
|
r += ' ' + node.value;
|
||||||
|
}
|
||||||
|
options.state = WriterState.CloseTag;
|
||||||
|
r += options.spaceBeforeSlash + '?>';
|
||||||
|
r += this.endline(node, options, level);
|
||||||
|
options.state = WriterState.None;
|
||||||
|
this.closeNode(node, options, level);
|
||||||
|
return r;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLWriterBase.prototype.raw = function(node, options, level) {
|
||||||
|
var r;
|
||||||
|
this.openNode(node, options, level);
|
||||||
|
options.state = WriterState.OpenTag;
|
||||||
|
r = this.indent(node, options, level);
|
||||||
|
options.state = WriterState.InsideTag;
|
||||||
|
r += node.value;
|
||||||
|
options.state = WriterState.CloseTag;
|
||||||
|
r += this.endline(node, options, level);
|
||||||
|
options.state = WriterState.None;
|
||||||
|
this.closeNode(node, options, level);
|
||||||
|
return r;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLWriterBase.prototype.text = function(node, options, level) {
|
||||||
|
var r;
|
||||||
|
this.openNode(node, options, level);
|
||||||
|
options.state = WriterState.OpenTag;
|
||||||
|
r = this.indent(node, options, level);
|
||||||
|
options.state = WriterState.InsideTag;
|
||||||
|
r += node.value;
|
||||||
|
options.state = WriterState.CloseTag;
|
||||||
|
r += this.endline(node, options, level);
|
||||||
|
options.state = WriterState.None;
|
||||||
|
this.closeNode(node, options, level);
|
||||||
|
return r;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLWriterBase.prototype.dtdAttList = function(node, options, level) {
|
||||||
|
var r;
|
||||||
|
this.openNode(node, options, level);
|
||||||
|
options.state = WriterState.OpenTag;
|
||||||
|
r = this.indent(node, options, level) + '<!ATTLIST';
|
||||||
|
options.state = WriterState.InsideTag;
|
||||||
|
r += ' ' + node.elementName + ' ' + node.attributeName + ' ' + node.attributeType;
|
||||||
|
if (node.defaultValueType !== '#DEFAULT') {
|
||||||
|
r += ' ' + node.defaultValueType;
|
||||||
|
}
|
||||||
|
if (node.defaultValue) {
|
||||||
|
r += ' "' + node.defaultValue + '"';
|
||||||
|
}
|
||||||
|
options.state = WriterState.CloseTag;
|
||||||
|
r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);
|
||||||
|
options.state = WriterState.None;
|
||||||
|
this.closeNode(node, options, level);
|
||||||
|
return r;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLWriterBase.prototype.dtdElement = function(node, options, level) {
|
||||||
|
var r;
|
||||||
|
this.openNode(node, options, level);
|
||||||
|
options.state = WriterState.OpenTag;
|
||||||
|
r = this.indent(node, options, level) + '<!ELEMENT';
|
||||||
|
options.state = WriterState.InsideTag;
|
||||||
|
r += ' ' + node.name + ' ' + node.value;
|
||||||
|
options.state = WriterState.CloseTag;
|
||||||
|
r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);
|
||||||
|
options.state = WriterState.None;
|
||||||
|
this.closeNode(node, options, level);
|
||||||
|
return r;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLWriterBase.prototype.dtdEntity = function(node, options, level) {
|
||||||
|
var r;
|
||||||
|
this.openNode(node, options, level);
|
||||||
|
options.state = WriterState.OpenTag;
|
||||||
|
r = this.indent(node, options, level) + '<!ENTITY';
|
||||||
|
options.state = WriterState.InsideTag;
|
||||||
|
if (node.pe) {
|
||||||
|
r += ' %';
|
||||||
|
}
|
||||||
|
r += ' ' + node.name;
|
||||||
|
if (node.value) {
|
||||||
|
r += ' "' + node.value + '"';
|
||||||
|
} else {
|
||||||
|
if (node.pubID && node.sysID) {
|
||||||
|
r += ' PUBLIC "' + node.pubID + '" "' + node.sysID + '"';
|
||||||
|
} else if (node.sysID) {
|
||||||
|
r += ' SYSTEM "' + node.sysID + '"';
|
||||||
|
}
|
||||||
|
if (node.nData) {
|
||||||
|
r += ' NDATA ' + node.nData;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
options.state = WriterState.CloseTag;
|
||||||
|
r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);
|
||||||
|
options.state = WriterState.None;
|
||||||
|
this.closeNode(node, options, level);
|
||||||
|
return r;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLWriterBase.prototype.dtdNotation = function(node, options, level) {
|
||||||
|
var r;
|
||||||
|
this.openNode(node, options, level);
|
||||||
|
options.state = WriterState.OpenTag;
|
||||||
|
r = this.indent(node, options, level) + '<!NOTATION';
|
||||||
|
options.state = WriterState.InsideTag;
|
||||||
|
r += ' ' + node.name;
|
||||||
|
if (node.pubID && node.sysID) {
|
||||||
|
r += ' PUBLIC "' + node.pubID + '" "' + node.sysID + '"';
|
||||||
|
} else if (node.pubID) {
|
||||||
|
r += ' PUBLIC "' + node.pubID + '"';
|
||||||
|
} else if (node.sysID) {
|
||||||
|
r += ' SYSTEM "' + node.sysID + '"';
|
||||||
|
}
|
||||||
|
options.state = WriterState.CloseTag;
|
||||||
|
r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);
|
||||||
|
options.state = WriterState.None;
|
||||||
|
this.closeNode(node, options, level);
|
||||||
|
return r;
|
||||||
|
};
|
||||||
|
|
||||||
|
XMLWriterBase.prototype.openNode = function(node, options, level) {};
|
||||||
|
|
||||||
|
XMLWriterBase.prototype.closeNode = function(node, options, level) {};
|
||||||
|
|
||||||
|
XMLWriterBase.prototype.openAttribute = function(att, options, level) {};
|
||||||
|
|
||||||
|
XMLWriterBase.prototype.closeAttribute = function(att, options, level) {};
|
||||||
|
|
||||||
|
return XMLWriterBase;
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
}).call(this);
|
65
lib/node/node_modules/xmlbuilder/lib/index.js
generated
vendored
Normal file
65
lib/node/node_modules/xmlbuilder/lib/index.js
generated
vendored
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
// Generated by CoffeeScript 1.12.7
|
||||||
|
(function() {
|
||||||
|
var NodeType, WriterState, XMLDOMImplementation, XMLDocument, XMLDocumentCB, XMLStreamWriter, XMLStringWriter, assign, isFunction, ref;
|
||||||
|
|
||||||
|
ref = require('./Utility'), assign = ref.assign, isFunction = ref.isFunction;
|
||||||
|
|
||||||
|
XMLDOMImplementation = require('./XMLDOMImplementation');
|
||||||
|
|
||||||
|
XMLDocument = require('./XMLDocument');
|
||||||
|
|
||||||
|
XMLDocumentCB = require('./XMLDocumentCB');
|
||||||
|
|
||||||
|
XMLStringWriter = require('./XMLStringWriter');
|
||||||
|
|
||||||
|
XMLStreamWriter = require('./XMLStreamWriter');
|
||||||
|
|
||||||
|
NodeType = require('./NodeType');
|
||||||
|
|
||||||
|
WriterState = require('./WriterState');
|
||||||
|
|
||||||
|
module.exports.create = function(name, xmldec, doctype, options) {
|
||||||
|
var doc, root;
|
||||||
|
if (name == null) {
|
||||||
|
throw new Error("Root element needs a name.");
|
||||||
|
}
|
||||||
|
options = assign({}, xmldec, doctype, options);
|
||||||
|
doc = new XMLDocument(options);
|
||||||
|
root = doc.element(name);
|
||||||
|
if (!options.headless) {
|
||||||
|
doc.declaration(options);
|
||||||
|
if ((options.pubID != null) || (options.sysID != null)) {
|
||||||
|
doc.dtd(options);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return root;
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports.begin = function(options, onData, onEnd) {
|
||||||
|
var ref1;
|
||||||
|
if (isFunction(options)) {
|
||||||
|
ref1 = [options, onData], onData = ref1[0], onEnd = ref1[1];
|
||||||
|
options = {};
|
||||||
|
}
|
||||||
|
if (onData) {
|
||||||
|
return new XMLDocumentCB(options, onData, onEnd);
|
||||||
|
} else {
|
||||||
|
return new XMLDocument(options);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports.stringWriter = function(options) {
|
||||||
|
return new XMLStringWriter(options);
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports.streamWriter = function(stream, options) {
|
||||||
|
return new XMLStreamWriter(stream, options);
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports.implementation = new XMLDOMImplementation();
|
||||||
|
|
||||||
|
module.exports.nodeType = NodeType;
|
||||||
|
|
||||||
|
module.exports.writerState = WriterState;
|
||||||
|
|
||||||
|
}).call(this);
|
39
lib/node/node_modules/xmlbuilder/package.json
generated
vendored
Normal file
39
lib/node/node_modules/xmlbuilder/package.json
generated
vendored
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
{
|
||||||
|
"name": "xmlbuilder",
|
||||||
|
"version": "11.0.1",
|
||||||
|
"keywords": [
|
||||||
|
"xml",
|
||||||
|
"xmlbuilder"
|
||||||
|
],
|
||||||
|
"homepage": "http://github.com/oozcitak/xmlbuilder-js",
|
||||||
|
"description": "An XML builder for node.js",
|
||||||
|
"author": "Ozgur Ozcitak <oozcitak@gmail.com>",
|
||||||
|
"contributors": [],
|
||||||
|
"license": "MIT",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git://github.com/oozcitak/xmlbuilder-js.git"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "http://github.com/oozcitak/xmlbuilder-js/issues"
|
||||||
|
},
|
||||||
|
"main": "./lib/index",
|
||||||
|
"typings": "./typings/index.d.ts",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4.0"
|
||||||
|
},
|
||||||
|
"dependencies": {},
|
||||||
|
"devDependencies": {
|
||||||
|
"coffeescript": "1.*",
|
||||||
|
"mocha": "*",
|
||||||
|
"coffee-coverage": "2.*",
|
||||||
|
"istanbul": "*",
|
||||||
|
"coveralls": "*",
|
||||||
|
"xpath": "*"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"prepublishOnly": "coffee -co lib src",
|
||||||
|
"postpublish": "rm -rf lib",
|
||||||
|
"test": "mocha \"test/**/*.coffee\" && istanbul report text lcov"
|
||||||
|
}
|
||||||
|
}
|
153
lib/node/node_modules/xmlbuilder/typings/index.d.ts
generated
vendored
Normal file
153
lib/node/node_modules/xmlbuilder/typings/index.d.ts
generated
vendored
Normal file
|
@ -0,0 +1,153 @@
|
||||||
|
// Type definitions for xmlbuilder
|
||||||
|
// Project: https://github.com/oozcitak/xmlbuilder-js
|
||||||
|
// Definitions by: Wallymathieu <https://github.com/wallymathieu>
|
||||||
|
// : GaikwadPratik <https://github.com/GaikwadPratik>
|
||||||
|
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||||
|
|
||||||
|
export = xmlbuilder;
|
||||||
|
|
||||||
|
declare namespace xmlbuilder {
|
||||||
|
|
||||||
|
class XMLDocType {
|
||||||
|
clone(): XMLDocType;
|
||||||
|
element(name: string, value?: Object): XMLDocType;
|
||||||
|
attList(elementName: string, attributeName: string, attributeType: string, defaultValueType?: string, defaultValue?: any): XMLDocType;
|
||||||
|
entity(name: string, value: any): XMLDocType;
|
||||||
|
pEntity(name: string, value: any): XMLDocType;
|
||||||
|
notation(name: string, value: any): XMLDocType;
|
||||||
|
cdata(value: string): XMLDocType;
|
||||||
|
comment(value: string): XMLDocType;
|
||||||
|
instruction(target: string, value: any): XMLDocType;
|
||||||
|
root(): XMLDocType;
|
||||||
|
document(): any;
|
||||||
|
toString(options?: XMLToStringOptions, level?: Number): string;
|
||||||
|
|
||||||
|
ele(name: string, value?: Object): XMLDocType;
|
||||||
|
att(elementName: string, attributeName: string, attributeType: string, defaultValueType?: string, defaultValue?: any): XMLDocType;
|
||||||
|
ent(name: string, value: any): XMLDocType;
|
||||||
|
pent(name: string, value: any): XMLDocType;
|
||||||
|
not(name: string, value: any): XMLDocType;
|
||||||
|
dat(value: string): XMLDocType;
|
||||||
|
com(value: string): XMLDocType;
|
||||||
|
ins(target: string, value: any): XMLDocType;
|
||||||
|
up(): XMLDocType;
|
||||||
|
doc(): any;
|
||||||
|
}
|
||||||
|
|
||||||
|
class XMLElementOrXMLNode {
|
||||||
|
// XMLElement:
|
||||||
|
clone(): XMLElementOrXMLNode;
|
||||||
|
attribute(name: any, value?: any): XMLElementOrXMLNode;
|
||||||
|
att(name: any, value?: any): XMLElementOrXMLNode;
|
||||||
|
removeAttribute(name: string): XMLElementOrXMLNode;
|
||||||
|
instruction(target: string, value: any): XMLElementOrXMLNode;
|
||||||
|
instruction(array: Array<any>): XMLElementOrXMLNode;
|
||||||
|
instruction(obj: Object): XMLElementOrXMLNode;
|
||||||
|
ins(target: string, value: any): XMLElementOrXMLNode;
|
||||||
|
ins(array: Array<any>): XMLElementOrXMLNode;
|
||||||
|
ins(obj: Object): XMLElementOrXMLNode;
|
||||||
|
a(name: any, value?: any): XMLElementOrXMLNode;
|
||||||
|
i(target: string, value: any): XMLElementOrXMLNode;
|
||||||
|
i(array: Array<any>): XMLElementOrXMLNode;
|
||||||
|
i(obj: Object): XMLElementOrXMLNode;
|
||||||
|
toString(options?: XMLToStringOptions, level?: Number): string;
|
||||||
|
// XMLNode:
|
||||||
|
element(name: any, attributes?: Object, text?: any): XMLElementOrXMLNode;
|
||||||
|
ele(name: any, attributes?: Object, text?: any): XMLElementOrXMLNode;
|
||||||
|
insertBefore(name: any, attributes?: Object, text?: any): XMLElementOrXMLNode;
|
||||||
|
insertAfter(name: any, attributes?: Object, text?: any): XMLElementOrXMLNode;
|
||||||
|
remove(): XMLElementOrXMLNode;
|
||||||
|
node(name: any, attributes?: Object, text?: any): XMLElementOrXMLNode;
|
||||||
|
text(value: string): XMLElementOrXMLNode;
|
||||||
|
cdata(value: string): XMLElementOrXMLNode;
|
||||||
|
comment(value: string): XMLElementOrXMLNode;
|
||||||
|
raw(value: string): XMLElementOrXMLNode;
|
||||||
|
declaration(version: string, encoding: string, standalone: boolean): XMLElementOrXMLNode;
|
||||||
|
doctype(pubID: string, sysID: string): XMLDocType;
|
||||||
|
up(): XMLElementOrXMLNode;
|
||||||
|
importDocument(input: XMLElementOrXMLNode): XMLElementOrXMLNode;
|
||||||
|
root(): XMLElementOrXMLNode;
|
||||||
|
document(): any;
|
||||||
|
end(options?: XMLEndOptions): string;
|
||||||
|
prev(): XMLElementOrXMLNode;
|
||||||
|
next(): XMLElementOrXMLNode;
|
||||||
|
nod(name: any, attributes?: Object, text?: any): XMLElementOrXMLNode;
|
||||||
|
txt(value: string): XMLElementOrXMLNode;
|
||||||
|
dat(value: string): XMLElementOrXMLNode;
|
||||||
|
com(value: string): XMLElementOrXMLNode;
|
||||||
|
doc(): XMLElementOrXMLNode;
|
||||||
|
dec(version: string, encoding: string, standalone: boolean): XMLElementOrXMLNode;
|
||||||
|
dtd(pubID: string, sysID: string): XMLDocType;
|
||||||
|
e(name: any, attributes?: Object, text?: any): XMLElementOrXMLNode;
|
||||||
|
n(name: any, attributes?: Object, text?: any): XMLElementOrXMLNode;
|
||||||
|
t(value: string): XMLElementOrXMLNode;
|
||||||
|
d(value: string): XMLElementOrXMLNode;
|
||||||
|
c(value: string): XMLElementOrXMLNode;
|
||||||
|
r(value: string): XMLElementOrXMLNode;
|
||||||
|
u(): XMLElementOrXMLNode;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface XMLDec {
|
||||||
|
version?: string;
|
||||||
|
encoding?: string;
|
||||||
|
standalone?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface XMLDtd {
|
||||||
|
pubID?: string;
|
||||||
|
sysID?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface XMLStringifier {
|
||||||
|
[x: string]: ((v: any) => string) | string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface XMLWriter {
|
||||||
|
[x: string]: ((e: XMLElementOrXMLNode, options: WriterOptions, level?: number) => void);
|
||||||
|
}
|
||||||
|
|
||||||
|
interface XMLCreateOptions {
|
||||||
|
headless?: boolean;
|
||||||
|
keepNullNodes?: boolean;
|
||||||
|
keepNullAttributes?: boolean;
|
||||||
|
ignoreDecorators?: boolean;
|
||||||
|
separateArrayItems?: boolean;
|
||||||
|
noDoubleEncoding?: boolean;
|
||||||
|
stringify?: XMLStringifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface XMLToStringOptions {
|
||||||
|
pretty?: boolean;
|
||||||
|
indent?: string;
|
||||||
|
offset?: number;
|
||||||
|
newline?: string;
|
||||||
|
allowEmpty?: boolean;
|
||||||
|
spacebeforeslash?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface XMLEndOptions extends XMLToStringOptions {
|
||||||
|
writer?: XMLWriter;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface WriterOptions {
|
||||||
|
pretty?: boolean;
|
||||||
|
indent?: string;
|
||||||
|
newline?: string;
|
||||||
|
offset?: number;
|
||||||
|
allowEmpty?: boolean;
|
||||||
|
dontPrettyTextNodes?: boolean;
|
||||||
|
spaceBeforeSlash?: string | boolean;
|
||||||
|
user? :any;
|
||||||
|
state?: WriterState;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum WriterState {
|
||||||
|
None = 0,
|
||||||
|
OpenTag = 1,
|
||||||
|
InsideTag = 2,
|
||||||
|
CloseTag = 3
|
||||||
|
}
|
||||||
|
|
||||||
|
function create(nameOrObjSpec: string | { [name: string]: Object }, xmldecOrOptions?: XMLDec | XMLCreateOptions, doctypeOrOptions?: XMLDtd | XMLCreateOptions, options?: XMLCreateOptions): XMLElementOrXMLNode;
|
||||||
|
function begin(): XMLElementOrXMLNode;
|
||||||
|
}
|
28
lib/node/package-lock.json
generated
28
lib/node/package-lock.json
generated
|
@ -7,7 +7,8 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"bcrypt": "^5.1.1",
|
"bcrypt": "^5.1.1",
|
||||||
"pg": "^8.13.1",
|
"pg": "^8.13.1",
|
||||||
"sqlite3": "^5.1.7"
|
"sqlite3": "^5.1.7",
|
||||||
|
"xml2js": "^0.6.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@gar/promisify": {
|
"node_modules/@gar/promisify": {
|
||||||
|
@ -1252,6 +1253,11 @@
|
||||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
|
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
|
"node_modules/sax": {
|
||||||
|
"version": "1.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz",
|
||||||
|
"integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg=="
|
||||||
|
},
|
||||||
"node_modules/semver": {
|
"node_modules/semver": {
|
||||||
"version": "7.6.3",
|
"version": "7.6.3",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
|
||||||
|
@ -1584,6 +1590,26 @@
|
||||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||||
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
|
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
|
||||||
},
|
},
|
||||||
|
"node_modules/xml2js": {
|
||||||
|
"version": "0.6.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz",
|
||||||
|
"integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==",
|
||||||
|
"dependencies": {
|
||||||
|
"sax": ">=0.6.0",
|
||||||
|
"xmlbuilder": "~11.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/xmlbuilder": {
|
||||||
|
"version": "11.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
|
||||||
|
"integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/xtend": {
|
"node_modules/xtend": {
|
||||||
"version": "4.0.2",
|
"version": "4.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"bcrypt": "^5.1.1",
|
"bcrypt": "^5.1.1",
|
||||||
"pg": "^8.13.1",
|
"pg": "^8.13.1",
|
||||||
"sqlite3": "^5.1.7"
|
"sqlite3": "^5.1.7",
|
||||||
|
"xml2js": "^0.6.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
1262
lib/plankton/plankton.d.ts
vendored
1262
lib/plankton/plankton.d.ts
vendored
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
236
source/api/actions/caldav_get.ts
Normal file
236
source/api/actions/caldav_get.ts
Normal file
|
@ -0,0 +1,236 @@
|
||||||
|
|
||||||
|
namespace _zeitbild.api
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
export function register_caldav_get(
|
||||||
|
rest_subject : lib_plankton.rest_caldav.type_rest
|
||||||
|
) : void
|
||||||
|
{
|
||||||
|
register<
|
||||||
|
null,
|
||||||
|
/*
|
||||||
|
(
|
||||||
|
null
|
||||||
|
|
|
||||||
|
string
|
||||||
|
|
|
||||||
|
lib_plankton.ical.type_vcalendar
|
||||||
|
)
|
||||||
|
*/
|
||||||
|
(
|
||||||
|
null
|
||||||
|
|
|
||||||
|
lib_plankton.xml.type_node_data
|
||||||
|
)
|
||||||
|
>(
|
||||||
|
rest_subject,
|
||||||
|
lib_plankton.caldav.enum_method.report,
|
||||||
|
"/caldav/project/:id",
|
||||||
|
{
|
||||||
|
"description": "trägt Veranstaltungen aus verschiedenen Kalendern zusammen im ical-Format",
|
||||||
|
"query_parameters": () => ([
|
||||||
|
{
|
||||||
|
"name": "from",
|
||||||
|
"required": false,
|
||||||
|
"description": "UNIX timestamp",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "to",
|
||||||
|
"required": false,
|
||||||
|
"description": "UNIX timestamp",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "calendar_ids",
|
||||||
|
"required": false,
|
||||||
|
"description": "comma separated",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "auth",
|
||||||
|
"required": true,
|
||||||
|
"description": "",
|
||||||
|
},
|
||||||
|
]),
|
||||||
|
"output_schema": () => ({
|
||||||
|
"nullable": false,
|
||||||
|
"type": "string",
|
||||||
|
}),
|
||||||
|
/*
|
||||||
|
"response_body_mimetype": "text/calendar",
|
||||||
|
"response_body_encode": (output) => (
|
||||||
|
(output === null)
|
||||||
|
?
|
||||||
|
null
|
||||||
|
:
|
||||||
|
Buffer.from(
|
||||||
|
(typeof(output) === "string")
|
||||||
|
?
|
||||||
|
output
|
||||||
|
:
|
||||||
|
lib_plankton.ical.ics_encode(output)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
*/
|
||||||
|
"response_body_mimetype": "text/xml",
|
||||||
|
"response_body_encode": output => Promise.resolve<Buffer>(
|
||||||
|
Buffer.from(
|
||||||
|
lib_plankton.xml.get_node_logic(output).compile(0)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
"restriction": restriction_none,
|
||||||
|
/**
|
||||||
|
* @todo use stuff.path_parameters["id"]
|
||||||
|
*/
|
||||||
|
"execution": async (stuff) => {
|
||||||
|
const user_id : (null | type_user_id) = await _zeitbild.api.web_auth(
|
||||||
|
stuff.headers["Authorization"]
|
||||||
|
??
|
||||||
|
stuff.headers["authorization"]
|
||||||
|
??
|
||||||
|
null
|
||||||
|
);
|
||||||
|
if (user_id === null) {
|
||||||
|
return Promise.resolve(
|
||||||
|
{
|
||||||
|
"status_code": 401,
|
||||||
|
"data": null,
|
||||||
|
"extra_headers": {
|
||||||
|
"WWW-Authenticate": "Basic realm=Restricted",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
const from : lib_plankton.pit.type_pit = (
|
||||||
|
("from" in stuff.query_parameters)
|
||||||
|
?
|
||||||
|
parseInt(stuff.query_parameters["from"])
|
||||||
|
:
|
||||||
|
lib_plankton.pit.shift_week(
|
||||||
|
lib_plankton.pit.now(),
|
||||||
|
-2
|
||||||
|
)
|
||||||
|
);
|
||||||
|
const to : lib_plankton.pit.type_pit = (
|
||||||
|
("to" in stuff.query_parameters)
|
||||||
|
?
|
||||||
|
parseInt(stuff.query_parameters["to"])
|
||||||
|
:
|
||||||
|
lib_plankton.pit.shift_week(
|
||||||
|
lib_plankton.pit.now(),
|
||||||
|
+6
|
||||||
|
)
|
||||||
|
);
|
||||||
|
const calendar_ids_wanted : (null | Array<_zeitbild.type_calendar_id>) = (
|
||||||
|
(
|
||||||
|
("calendar_ids" in stuff.query_parameters)
|
||||||
|
&&
|
||||||
|
(stuff.query_parameters["calendar_ids"] !== null)
|
||||||
|
)
|
||||||
|
?
|
||||||
|
lib_plankton.call.convey(
|
||||||
|
stuff.query_parameters["calendar_ids"],
|
||||||
|
[
|
||||||
|
(x : string) => x.split(","),
|
||||||
|
(x : Array<string>) => x.map(parseInt),
|
||||||
|
(x : Array<int>) => x.filter(y => (! isNaN(y)))
|
||||||
|
]
|
||||||
|
)
|
||||||
|
:
|
||||||
|
null
|
||||||
|
);
|
||||||
|
|
||||||
|
return (
|
||||||
|
_zeitbild.service.calendar.gather_events(
|
||||||
|
calendar_ids_wanted,
|
||||||
|
from,
|
||||||
|
to,
|
||||||
|
user_id
|
||||||
|
)
|
||||||
|
.then(
|
||||||
|
(data) => Promise.resolve(
|
||||||
|
{
|
||||||
|
"status_code": 200,
|
||||||
|
/*
|
||||||
|
"data": _zeitbild.helpers.ical_vcalendar_from_own_event_list(
|
||||||
|
data.map(entry => entry.event_object)
|
||||||
|
)
|
||||||
|
*/
|
||||||
|
"data": lib_plankton.webdav.data_multistatus_encode_xml(
|
||||||
|
{
|
||||||
|
"responses": (
|
||||||
|
/**
|
||||||
|
* @todo find proper solution for null values
|
||||||
|
*/
|
||||||
|
data
|
||||||
|
.filter(
|
||||||
|
entry => (entry.event_id !== null)
|
||||||
|
)
|
||||||
|
.map(
|
||||||
|
entry => ({
|
||||||
|
"href": lib_plankton.string.coin(
|
||||||
|
"/caldav/project/{{calendar_id}}/{{event_id}}",
|
||||||
|
{
|
||||||
|
"calendar_id": stuff.path_parameters["id"],
|
||||||
|
"event_id": (entry.event_id ?? 0).toFixed(0),
|
||||||
|
}
|
||||||
|
),
|
||||||
|
"body": {
|
||||||
|
"propstats": [
|
||||||
|
{
|
||||||
|
"prop": [
|
||||||
|
{
|
||||||
|
"name": "C:calendar-data",
|
||||||
|
"value": {
|
||||||
|
"kind": "primitive",
|
||||||
|
"data": lib_plankton.ical.ics_encode(
|
||||||
|
/*
|
||||||
|
{
|
||||||
|
"version": "2.0",
|
||||||
|
"prodid": "zeitbild",
|
||||||
|
"vevents": [],
|
||||||
|
"method": "publish",
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
_zeitbild.helpers.ical_vcalendar_from_own_event_list(
|
||||||
|
data
|
||||||
|
.map(
|
||||||
|
entry => entry.event_object
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"status": "HTTP/1.1 200 OK",
|
||||||
|
"description": null,
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"description": null
|
||||||
|
})
|
||||||
|
)
|
||||||
|
),
|
||||||
|
"description": null
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.catch(
|
||||||
|
(reason) => Promise.resolve(
|
||||||
|
{
|
||||||
|
"status_code": 403,
|
||||||
|
"data": /*String(reason)*/null,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
109
source/api/actions/caldav_probe.ts
Normal file
109
source/api/actions/caldav_probe.ts
Normal file
|
@ -0,0 +1,109 @@
|
||||||
|
|
||||||
|
namespace _zeitbild.api
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
export function register_caldav_probe(
|
||||||
|
rest_subject : lib_plankton.rest_caldav.type_rest
|
||||||
|
) : void
|
||||||
|
{
|
||||||
|
register<
|
||||||
|
(
|
||||||
|
null
|
||||||
|
|
|
||||||
|
lib_plankton.xml.type_node_data
|
||||||
|
),
|
||||||
|
lib_plankton.xml.type_node_data
|
||||||
|
>(
|
||||||
|
rest_subject,
|
||||||
|
lib_plankton.caldav.enum_method.propfind,
|
||||||
|
"/caldav",
|
||||||
|
{
|
||||||
|
"request_body_mimetype": () => "text/xml",
|
||||||
|
"request_body_decode": () => async (body, header_content_type) => (
|
||||||
|
(
|
||||||
|
(header_content_type !== null)
|
||||||
|
&&
|
||||||
|
(
|
||||||
|
(header_content_type.startsWith("text/xml"))
|
||||||
|
||
|
||||||
|
(header_content_type.startsWith("application/xml"))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
?
|
||||||
|
lib_plankton.xml.parse(body.toString())
|
||||||
|
:
|
||||||
|
Promise.resolve<any>(null)
|
||||||
|
),
|
||||||
|
"output_schema": () => ({
|
||||||
|
"nullable": false,
|
||||||
|
"type": "string",
|
||||||
|
}),
|
||||||
|
"response_body_mimetype": "text/xml",
|
||||||
|
"response_body_encode": output => Promise.resolve<Buffer>(
|
||||||
|
Buffer.from(
|
||||||
|
lib_plankton.xml.get_node_logic(output).compile(0)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
// "restriction": restriction_basic_auth,
|
||||||
|
"restriction": restriction_none,
|
||||||
|
"execution": async (stuff) => {
|
||||||
|
const user_id : (null | type_user_id) = await _zeitbild.api.web_auth(
|
||||||
|
stuff.headers["Authorization"]
|
||||||
|
??
|
||||||
|
stuff.headers["authorization"]
|
||||||
|
??
|
||||||
|
null
|
||||||
|
);
|
||||||
|
if (user_id === null) {
|
||||||
|
return Promise.resolve(
|
||||||
|
{
|
||||||
|
"status_code": 401,
|
||||||
|
"data": {
|
||||||
|
"kind": "text",
|
||||||
|
"data": ""
|
||||||
|
},
|
||||||
|
"extra_headers": {
|
||||||
|
"WWW-Authenticate": "Basic realm=Restricted",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
const output : (null | lib_plankton.xml.type_node_data) = _zeitbild.service.caldav.probe(
|
||||||
|
stuff.input
|
||||||
|
);
|
||||||
|
if (output !== null) {
|
||||||
|
return Promise.resolve(
|
||||||
|
{
|
||||||
|
"status_code": 207,
|
||||||
|
"data": output
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return Promise.resolve(
|
||||||
|
{
|
||||||
|
"status_code": 501,
|
||||||
|
"data": {
|
||||||
|
"kind": "root",
|
||||||
|
"data": {
|
||||||
|
"version": "1.0",
|
||||||
|
"encoding": "utf-8",
|
||||||
|
"content": {
|
||||||
|
"kind": "text",
|
||||||
|
"data": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
115
source/api/actions/caldav_probe_via_well_known.ts
Normal file
115
source/api/actions/caldav_probe_via_well_known.ts
Normal file
|
@ -0,0 +1,115 @@
|
||||||
|
|
||||||
|
namespace _zeitbild.api
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
export function register_caldav_probe_via_well_known(
|
||||||
|
rest_subject : lib_plankton.rest_caldav.type_rest
|
||||||
|
) : void
|
||||||
|
{
|
||||||
|
register<
|
||||||
|
(
|
||||||
|
null
|
||||||
|
|
|
||||||
|
lib_plankton.xml.type_node_data
|
||||||
|
),
|
||||||
|
lib_plankton.xml.type_node_data
|
||||||
|
>(
|
||||||
|
rest_subject,
|
||||||
|
lib_plankton.caldav.enum_method.propfind,
|
||||||
|
"/.well-known/caldav",
|
||||||
|
{
|
||||||
|
"request_body_mimetype": () => "text/xml",
|
||||||
|
"request_body_decode": () => async (body, header_content_type) => (
|
||||||
|
(
|
||||||
|
(header_content_type !== null)
|
||||||
|
&&
|
||||||
|
(
|
||||||
|
(header_content_type.startsWith("text/xml"))
|
||||||
|
||
|
||||||
|
(header_content_type.startsWith("application/xml"))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
?
|
||||||
|
lib_plankton.xml.parse(body.toString())
|
||||||
|
:
|
||||||
|
Promise.resolve<any>(null)
|
||||||
|
),
|
||||||
|
"output_schema": () => ({
|
||||||
|
"nullable": false,
|
||||||
|
"type": "string",
|
||||||
|
}),
|
||||||
|
"response_body_mimetype": "text/xml",
|
||||||
|
"response_body_encode": output => Promise.resolve<Buffer>(
|
||||||
|
Buffer.from(
|
||||||
|
lib_plankton.xml.get_node_logic(output).compile(0)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
// "restriction": restriction_basic_auth,
|
||||||
|
"restriction": restriction_none,
|
||||||
|
"execution": async (stuff) => {
|
||||||
|
const user_id : (null | type_user_id) = await _zeitbild.api.web_auth(
|
||||||
|
stuff.headers["Authorization"]
|
||||||
|
??
|
||||||
|
stuff.headers["authorization"]
|
||||||
|
??
|
||||||
|
null
|
||||||
|
);
|
||||||
|
if (user_id === null) {
|
||||||
|
return Promise.resolve(
|
||||||
|
{
|
||||||
|
"status_code": 401,
|
||||||
|
"data": {
|
||||||
|
"kind": "text",
|
||||||
|
"data": ""
|
||||||
|
},
|
||||||
|
"extra_headers": {
|
||||||
|
"WWW-Authenticate": "Basic realm=Restricted",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
const output : (null | lib_plankton.xml.type_node_data) = _zeitbild.service.caldav.probe(
|
||||||
|
stuff.input,
|
||||||
|
{
|
||||||
|
"force_props": [
|
||||||
|
"D:displayname",
|
||||||
|
"D:resourcetype",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (output !== null) {
|
||||||
|
return Promise.resolve(
|
||||||
|
{
|
||||||
|
"status_code": 207,
|
||||||
|
"data": output
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return Promise.resolve(
|
||||||
|
{
|
||||||
|
"status_code": 501,
|
||||||
|
"data": {
|
||||||
|
"kind": "root",
|
||||||
|
"data": {
|
||||||
|
"version": "1.0",
|
||||||
|
"encoding": "utf-8",
|
||||||
|
"content": {
|
||||||
|
"kind": "text",
|
||||||
|
"data": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
107
source/api/actions/caldav_projects.ts
Normal file
107
source/api/actions/caldav_projects.ts
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
|
||||||
|
namespace _zeitbild.api
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
export function register_caldav_projects(
|
||||||
|
rest_subject : lib_plankton.rest_caldav.type_rest
|
||||||
|
) : void
|
||||||
|
{
|
||||||
|
register<
|
||||||
|
lib_plankton.xml.type_node_data,
|
||||||
|
(
|
||||||
|
null
|
||||||
|
|
|
||||||
|
lib_plankton.xml.type_node_data
|
||||||
|
)
|
||||||
|
>(
|
||||||
|
rest_subject,
|
||||||
|
lib_plankton.caldav.enum_method.propfind,
|
||||||
|
"/caldav/project",
|
||||||
|
{
|
||||||
|
"output_schema": () => ({
|
||||||
|
"nullable": false,
|
||||||
|
"type": "string",
|
||||||
|
}),
|
||||||
|
"request_body_mimetype": () => "text/xml",
|
||||||
|
"request_body_decode": () => async (body, header_content_type) => (
|
||||||
|
(
|
||||||
|
(header_content_type !== null)
|
||||||
|
&&
|
||||||
|
(
|
||||||
|
(header_content_type.startsWith("text/xml"))
|
||||||
|
||
|
||||||
|
(header_content_type.startsWith("application/xml"))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
?
|
||||||
|
lib_plankton.xml.parse(body.toString())
|
||||||
|
:
|
||||||
|
Promise.resolve<any>(null)
|
||||||
|
),
|
||||||
|
"response_body_mimetype": "text/xml",
|
||||||
|
"response_body_encode": output => Promise.resolve<Buffer>(
|
||||||
|
Buffer.from(
|
||||||
|
lib_plankton.xml.get_node_logic(output).compile(0)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
// "restriction": restriction_basic_auth,
|
||||||
|
"restriction": restriction_none,
|
||||||
|
/**
|
||||||
|
* @todo heed stuff.input
|
||||||
|
*/
|
||||||
|
"execution": async (stuff) => {
|
||||||
|
const user_id : (null | type_user_id) = await _zeitbild.api.web_auth(
|
||||||
|
stuff.headers["Authorization"]
|
||||||
|
??
|
||||||
|
stuff.headers["authorization"]
|
||||||
|
??
|
||||||
|
null
|
||||||
|
);
|
||||||
|
if (user_id === null) {
|
||||||
|
return Promise.resolve(
|
||||||
|
{
|
||||||
|
"status_code": 401,
|
||||||
|
"data": {
|
||||||
|
"kind": "text",
|
||||||
|
"data": ""
|
||||||
|
},
|
||||||
|
"extra_headers": {
|
||||||
|
"WWW-Authenticate": "Basic realm=Restricted",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (stuff.input === null) {
|
||||||
|
return Promise.resolve(
|
||||||
|
{
|
||||||
|
"status_code": 400,
|
||||||
|
"data": null,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return (
|
||||||
|
_zeitbild.service.caldav.projects(
|
||||||
|
stuff.input,
|
||||||
|
user_id
|
||||||
|
)
|
||||||
|
.then(
|
||||||
|
(output) => Promise.resolve(
|
||||||
|
{
|
||||||
|
"status_code": 207,
|
||||||
|
"data": output,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
32
source/api/actions/caldav_put.ts
Normal file
32
source/api/actions/caldav_put.ts
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
|
||||||
|
namespace _zeitbild.api
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
export function register_caldav_put(
|
||||||
|
rest_subject : lib_plankton.rest_caldav.type_rest
|
||||||
|
) : void
|
||||||
|
{
|
||||||
|
register<
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
>(
|
||||||
|
rest_subject,
|
||||||
|
lib_plankton.caldav.enum_method.put,
|
||||||
|
"/caldav",
|
||||||
|
{
|
||||||
|
"restriction": restriction_none,
|
||||||
|
"execution": async (stuff) => {
|
||||||
|
return Promise.resolve(
|
||||||
|
{
|
||||||
|
"status_code": 200,
|
||||||
|
"data": null
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
46
source/api/actions/caldav_sniff.ts
Normal file
46
source/api/actions/caldav_sniff.ts
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
|
||||||
|
namespace _zeitbild.api
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
export function register_caldav_sniff(
|
||||||
|
rest_subject : lib_plankton.rest_caldav.type_rest
|
||||||
|
) : void
|
||||||
|
{
|
||||||
|
register<
|
||||||
|
any,
|
||||||
|
null
|
||||||
|
>(
|
||||||
|
rest_subject,
|
||||||
|
lib_plankton.caldav.enum_method.options,
|
||||||
|
"/caldav",
|
||||||
|
{
|
||||||
|
"restriction": restriction_none,
|
||||||
|
"execution": async (stuff) => {
|
||||||
|
const permitted : boolean = await restriction_basic_auth(stuff);
|
||||||
|
if (! permitted) {
|
||||||
|
return Promise.resolve(
|
||||||
|
{
|
||||||
|
"status_code": 401,
|
||||||
|
"data": null,
|
||||||
|
"extra_headers": {
|
||||||
|
"WWW-Authenticate": "Basic realm=Restricted",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return Promise.resolve(
|
||||||
|
{
|
||||||
|
"status_code": 200,
|
||||||
|
"data": null
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -5,7 +5,7 @@ namespace _zeitbild.api
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
export function register_calendar_add(
|
export function register_calendar_add(
|
||||||
rest_subject : lib_plankton.rest.type_rest
|
rest_subject : lib_plankton.rest_caldav.type_rest
|
||||||
) : void
|
) : void
|
||||||
{
|
{
|
||||||
register<
|
register<
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace _zeitbild.api
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
export function register_calendar_change(
|
export function register_calendar_change(
|
||||||
rest_subject : lib_plankton.rest.type_rest
|
rest_subject : lib_plankton.rest_caldav.type_rest
|
||||||
) : void
|
) : void
|
||||||
{
|
{
|
||||||
register<
|
register<
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace _zeitbild.api
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
export function register_calendar_event_add(
|
export function register_calendar_event_add(
|
||||||
rest_subject : lib_plankton.rest.type_rest
|
rest_subject : lib_plankton.rest_caldav.type_rest
|
||||||
) : void
|
) : void
|
||||||
{
|
{
|
||||||
register<
|
register<
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace _zeitbild.api
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
export function register_calendar_event_change(
|
export function register_calendar_event_change(
|
||||||
rest_subject : lib_plankton.rest.type_rest
|
rest_subject : lib_plankton.rest_caldav.type_rest
|
||||||
) : void
|
) : void
|
||||||
{
|
{
|
||||||
register<
|
register<
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace _zeitbild.api
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
export function register_calendar_event_get(
|
export function register_calendar_event_get(
|
||||||
rest_subject : lib_plankton.rest.type_rest
|
rest_subject : lib_plankton.rest_caldav.type_rest
|
||||||
) : void
|
) : void
|
||||||
{
|
{
|
||||||
register<
|
register<
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace _zeitbild.api
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
export function register_calendar_event_remove(
|
export function register_calendar_event_remove(
|
||||||
rest_subject : lib_plankton.rest.type_rest
|
rest_subject : lib_plankton.rest_caldav.type_rest
|
||||||
) : void
|
) : void
|
||||||
{
|
{
|
||||||
register<
|
register<
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace _zeitbild.api
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
export function register_calendar_get(
|
export function register_calendar_get(
|
||||||
rest_subject : lib_plankton.rest.type_rest
|
rest_subject : lib_plankton.rest_caldav.type_rest
|
||||||
) : void
|
) : void
|
||||||
{
|
{
|
||||||
register<
|
register<
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace _zeitbild.api
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
export function register_calendar_list(
|
export function register_calendar_list(
|
||||||
rest_subject : lib_plankton.rest.type_rest
|
rest_subject : lib_plankton.rest_caldav.type_rest
|
||||||
) : void
|
) : void
|
||||||
{
|
{
|
||||||
register<
|
register<
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace _zeitbild.api
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
export function register_calendar_remove(
|
export function register_calendar_remove(
|
||||||
rest_subject : lib_plankton.rest.type_rest
|
rest_subject : lib_plankton.rest_caldav.type_rest
|
||||||
) : void
|
) : void
|
||||||
{
|
{
|
||||||
register<
|
register<
|
||||||
|
|
|
@ -5,19 +5,11 @@ namespace _zeitbild.api
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
export function register_events(
|
export function register_events(
|
||||||
rest_subject : lib_plankton.rest.type_rest
|
rest_subject : lib_plankton.rest_caldav.type_rest
|
||||||
) : void
|
) : void
|
||||||
{
|
{
|
||||||
register<
|
register<
|
||||||
{
|
null,
|
||||||
from : int;
|
|
||||||
to : int;
|
|
||||||
calendar_ids : (
|
|
||||||
null
|
|
||||||
|
|
|
||||||
Array<_zeitbild.type_calendar_id>
|
|
||||||
);
|
|
||||||
},
|
|
||||||
(
|
(
|
||||||
Array<
|
Array<
|
||||||
{
|
{
|
||||||
|
|
166
source/api/actions/export_ical.ts
Normal file
166
source/api/actions/export_ical.ts
Normal file
|
@ -0,0 +1,166 @@
|
||||||
|
|
||||||
|
namespace _zeitbild.api
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
export function register_export_ical(
|
||||||
|
rest_subject : lib_plankton.rest_caldav.type_rest
|
||||||
|
) : void
|
||||||
|
{
|
||||||
|
register<
|
||||||
|
null,
|
||||||
|
(
|
||||||
|
lib_plankton.ical.type_vcalendar
|
||||||
|
|
|
||||||
|
string
|
||||||
|
)
|
||||||
|
>(
|
||||||
|
rest_subject,
|
||||||
|
lib_plankton.http.enum_method.get,
|
||||||
|
"/export/ical",
|
||||||
|
{
|
||||||
|
"description": "trägt Veranstaltungen aus verschiedenen Kalendern zusammen im ical-Format",
|
||||||
|
"query_parameters": () => ([
|
||||||
|
{
|
||||||
|
"name": "from",
|
||||||
|
"required": false,
|
||||||
|
"description": "UNIX timestamp",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "to",
|
||||||
|
"required": false,
|
||||||
|
"description": "UNIX timestamp",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "calendar_ids",
|
||||||
|
"required": false,
|
||||||
|
"description": "comma separated",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "auth",
|
||||||
|
"required": true,
|
||||||
|
"description": "",
|
||||||
|
},
|
||||||
|
]),
|
||||||
|
"output_schema": () => ({
|
||||||
|
"nullable": false,
|
||||||
|
"type": "string",
|
||||||
|
}),
|
||||||
|
"response_body_mimetype": "text/calendar",
|
||||||
|
"response_body_encode": (output) => Buffer.from(
|
||||||
|
(typeof(output) === "string")
|
||||||
|
?
|
||||||
|
output
|
||||||
|
:
|
||||||
|
lib_plankton.ical.ics_encode(output)
|
||||||
|
),
|
||||||
|
"restriction": restriction_none,
|
||||||
|
"execution": async (stuff) => {
|
||||||
|
const user_id : (null | _zeitbild.type_user_id) = await (
|
||||||
|
session_from_stuff(stuff)
|
||||||
|
.then(
|
||||||
|
(session : {key : string; value : lib_plankton.session.type_session;}) => (
|
||||||
|
_zeitbild.service.user.identify(session.value.name)
|
||||||
|
.catch(x => Promise.resolve(null))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.catch(x => Promise.resolve(null))
|
||||||
|
);
|
||||||
|
|
||||||
|
const from : lib_plankton.pit.type_pit = (
|
||||||
|
("from" in stuff.query_parameters)
|
||||||
|
?
|
||||||
|
parseInt(stuff.query_parameters["from"])
|
||||||
|
:
|
||||||
|
lib_plankton.pit.shift_week(
|
||||||
|
lib_plankton.pit.now(),
|
||||||
|
-2
|
||||||
|
)
|
||||||
|
);
|
||||||
|
const to : lib_plankton.pit.type_pit = (
|
||||||
|
("to" in stuff.query_parameters)
|
||||||
|
?
|
||||||
|
parseInt(stuff.query_parameters["to"])
|
||||||
|
:
|
||||||
|
lib_plankton.pit.shift_week(
|
||||||
|
lib_plankton.pit.now(),
|
||||||
|
+6
|
||||||
|
)
|
||||||
|
);
|
||||||
|
const calendar_ids_wanted : (null | Array<_zeitbild.type_calendar_id>) = (
|
||||||
|
(
|
||||||
|
("calendar_ids" in stuff.query_parameters)
|
||||||
|
&&
|
||||||
|
(stuff.query_parameters["calendar_ids"] !== null)
|
||||||
|
)
|
||||||
|
?
|
||||||
|
lib_plankton.call.convey(
|
||||||
|
stuff.query_parameters["calendar_ids"],
|
||||||
|
[
|
||||||
|
(x : string) => x.split(","),
|
||||||
|
(x : Array<string>) => x.map(parseInt),
|
||||||
|
(x : Array<int>) => x.filter(y => (! isNaN(y)))
|
||||||
|
]
|
||||||
|
)
|
||||||
|
:
|
||||||
|
null
|
||||||
|
);
|
||||||
|
|
||||||
|
const auth_hash_shall : string = lib_plankton.sha256.get(
|
||||||
|
(stuff.query_parameters["calendar_ids"] ?? ""),
|
||||||
|
_zeitbild.conf.get()["misc"]["auth_salt"]
|
||||||
|
);
|
||||||
|
const auth_hash_is : string = stuff.query_parameters["auth"];
|
||||||
|
/**
|
||||||
|
* @todo remove
|
||||||
|
*/
|
||||||
|
lib_plankton.log.info(
|
||||||
|
"auth_hashes",
|
||||||
|
{
|
||||||
|
"shall": auth_hash_shall,
|
||||||
|
"is": auth_hash_is,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (! (auth_hash_is === auth_hash_shall)) {
|
||||||
|
return Promise.resolve(
|
||||||
|
{
|
||||||
|
"status_code": 403,
|
||||||
|
"data": "not authorized",
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return (
|
||||||
|
_zeitbild.service.calendar.gather_events(
|
||||||
|
calendar_ids_wanted,
|
||||||
|
from,
|
||||||
|
to,
|
||||||
|
user_id
|
||||||
|
)
|
||||||
|
.then(
|
||||||
|
(data) => Promise.resolve(
|
||||||
|
{
|
||||||
|
"status_code": 200,
|
||||||
|
"data": _zeitbild.helpers.ical_vcalendar_from_own_event_list(
|
||||||
|
data.map(entry => entry.event_object)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.catch(
|
||||||
|
(reason) => Promise.resolve(
|
||||||
|
{
|
||||||
|
"status_code": 403,
|
||||||
|
"data": String(reason),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -5,10 +5,10 @@ namespace _zeitbild.api
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
export function register_meta_ping(
|
export function register_meta_ping(
|
||||||
rest_subject : lib_plankton.rest.type_rest
|
rest_subject : lib_plankton.rest_caldav.type_rest
|
||||||
) : void
|
) : void
|
||||||
{
|
{
|
||||||
lib_plankton.rest.register<
|
lib_plankton.rest_caldav.register<
|
||||||
null,
|
null,
|
||||||
string
|
string
|
||||||
>
|
>
|
||||||
|
@ -17,7 +17,7 @@ namespace _zeitbild.api
|
||||||
lib_plankton.http.enum_method.get,
|
lib_plankton.http.enum_method.get,
|
||||||
_zeitbild.conf.get().server.path_base + "/meta/ping",
|
_zeitbild.conf.get().server.path_base + "/meta/ping",
|
||||||
{
|
{
|
||||||
"description": "sendet ein 'pong' zurück; gedacht um die Erreichbarkeit des Backends zu prüfen",
|
"description": () => "sendet ein 'pong' zurück; gedacht um die Erreichbarkeit des Backends zu prüfen",
|
||||||
"input_schema": () => ({
|
"input_schema": () => ({
|
||||||
"nullable": true,
|
"nullable": true,
|
||||||
}),
|
}),
|
||||||
|
@ -25,8 +25,10 @@ namespace _zeitbild.api
|
||||||
"nullable": false,
|
"nullable": false,
|
||||||
"type": "string",
|
"type": "string",
|
||||||
}),
|
}),
|
||||||
"restriction": restriction_none,
|
"response_body_encode": () => (body) => Promise.resolve<string>(body),
|
||||||
"execution": () => {
|
"response_body_mimetype": () => "text/plain",
|
||||||
|
"restriction": () => restriction_none,
|
||||||
|
"execution": () => () => {
|
||||||
return Promise.resolve({
|
return Promise.resolve({
|
||||||
"status_code": 200,
|
"status_code": 200,
|
||||||
"data": "pong",
|
"data": "pong",
|
||||||
|
|
|
@ -5,10 +5,10 @@ namespace _zeitbild.api
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
export function register_meta_spec(
|
export function register_meta_spec(
|
||||||
rest_subject : lib_plankton.rest.type_rest
|
rest_subject : lib_plankton.rest_caldav.type_rest
|
||||||
) : void
|
) : void
|
||||||
{
|
{
|
||||||
lib_plankton.rest.register<
|
lib_plankton.rest_caldav.register<
|
||||||
null,
|
null,
|
||||||
any
|
any
|
||||||
>
|
>
|
||||||
|
@ -17,17 +17,17 @@ namespace _zeitbild.api
|
||||||
lib_plankton.http.enum_method.get,
|
lib_plankton.http.enum_method.get,
|
||||||
_zeitbild.conf.get().server.path_base + "/meta/spec",
|
_zeitbild.conf.get().server.path_base + "/meta/spec",
|
||||||
{
|
{
|
||||||
"description": "gibt die API-Spezifikation im OpenAPI-Format aus",
|
"description": () => "gibt die API-Spezifikation im OpenAPI-Format aus",
|
||||||
"input_schema": () => ({
|
"input_schema": () => ({
|
||||||
"nullable": true,
|
"nullable": true,
|
||||||
}),
|
}),
|
||||||
"output_schema": () => ({
|
"output_schema": () => ({
|
||||||
}),
|
}),
|
||||||
"restriction": restriction_none,
|
"restriction": () => restriction_none,
|
||||||
"execution": () => {
|
"execution": () => () => {
|
||||||
return Promise.resolve({
|
return Promise.resolve({
|
||||||
"status_code": 200,
|
"status_code": 200,
|
||||||
"data": lib_plankton.rest.to_oas(rest_subject),
|
"data": lib_plankton.rest_caldav.to_oas(rest_subject),
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,10 +5,10 @@ namespace _zeitbild.api
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
export function register_session_begin(
|
export function register_session_begin(
|
||||||
rest_subject : lib_plankton.rest.type_rest
|
rest_subject : lib_plankton.rest_caldav.type_rest
|
||||||
) : void
|
) : void
|
||||||
{
|
{
|
||||||
lib_plankton.rest.register<
|
lib_plankton.rest_caldav.register<
|
||||||
{
|
{
|
||||||
name : string;
|
name : string;
|
||||||
password : string;
|
password : string;
|
||||||
|
@ -23,7 +23,7 @@ namespace _zeitbild.api
|
||||||
lib_plankton.http.enum_method.post,
|
lib_plankton.http.enum_method.post,
|
||||||
"/session/begin",
|
"/session/begin",
|
||||||
{
|
{
|
||||||
"description": "führt die Anmeldung am System aus um geschützte Aktionen nutzen zu können",
|
"description": () => "führt die Anmeldung am System aus um geschützte Aktionen nutzen zu können",
|
||||||
"input_schema": () => ({
|
"input_schema": () => ({
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@ -44,8 +44,8 @@ namespace _zeitbild.api
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "der Sitzungs-Schlüssel, der als Header 'X-Session-Key' gesetzt werden muss um Erlaubnis zur Ausführung geschützter Aktionen zu erhalten",
|
"description": "der Sitzungs-Schlüssel, der als Header 'X-Session-Key' gesetzt werden muss um Erlaubnis zur Ausführung geschützter Aktionen zu erhalten",
|
||||||
}),
|
}),
|
||||||
"restriction": restriction_none,
|
"restriction": () => restriction_none,
|
||||||
"execution": async ({"input": input}) => {
|
"execution": () => async ({"input": input}) => {
|
||||||
if (input === null) {
|
if (input === null) {
|
||||||
return Promise.reject(new Error("impossible"));
|
return Promise.reject(new Error("impossible"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace _zeitbild.api
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
export function register_session_end(
|
export function register_session_end(
|
||||||
rest_subject : lib_plankton.rest.type_rest
|
rest_subject : lib_plankton.rest_caldav.type_rest
|
||||||
) : void
|
) : void
|
||||||
{
|
{
|
||||||
register<null, null>(
|
register<null, null>(
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace _zeitbild.api
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
export function register_session_oidc(
|
export function register_session_oidc(
|
||||||
rest_subject : lib_plankton.rest.type_rest
|
rest_subject : lib_plankton.rest_caldav.type_rest
|
||||||
) : void
|
) : void
|
||||||
{
|
{
|
||||||
register<
|
register<
|
||||||
|
|
|
@ -5,10 +5,10 @@ namespace _zeitbild.api
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
export function register_session_prepare(
|
export function register_session_prepare(
|
||||||
rest_subject : lib_plankton.rest.type_rest
|
rest_subject : lib_plankton.rest_caldav.type_rest
|
||||||
) : void
|
) : void
|
||||||
{
|
{
|
||||||
lib_plankton.rest.register<
|
lib_plankton.rest_caldav.register<
|
||||||
any,
|
any,
|
||||||
{
|
{
|
||||||
kind : string;
|
kind : string;
|
||||||
|
@ -19,15 +19,15 @@ namespace _zeitbild.api
|
||||||
lib_plankton.http.enum_method.post,
|
lib_plankton.http.enum_method.post,
|
||||||
"/session/prepare",
|
"/session/prepare",
|
||||||
{
|
{
|
||||||
"description": "gibt die nötigen Werkzeuge für eine Anmeldung aus",
|
"description": () => "gibt die nötigen Werkzeuge für eine Anmeldung aus",
|
||||||
"input_schema": () => ({
|
"input_schema": () => ({
|
||||||
"nullable": true,
|
"nullable": true,
|
||||||
}),
|
}),
|
||||||
"output_schema": () => ({
|
"output_schema": () => ({
|
||||||
"nullable": false
|
"nullable": false
|
||||||
}),
|
}),
|
||||||
"restriction": restriction_none,
|
"restriction": () => restriction_none,
|
||||||
"execution": async (stuff) => {
|
"execution": () => async (stuff) => {
|
||||||
const preparation = await _zeitbild.auth.prepare(stuff.input);
|
const preparation = await _zeitbild.auth.prepare(stuff.input);
|
||||||
return Promise.resolve({
|
return Promise.resolve({
|
||||||
"status_code": 200,
|
"status_code": 200,
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace _zeitbild.api
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
export function register_users(
|
export function register_users(
|
||||||
rest_subject : lib_plankton.rest.type_rest
|
rest_subject : lib_plankton.rest_caldav.type_rest
|
||||||
) : void
|
) : void
|
||||||
{
|
{
|
||||||
register<
|
register<
|
||||||
|
|
|
@ -26,8 +26,79 @@ namespace _zeitbild.api
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @todo outsource?
|
||||||
*/
|
*/
|
||||||
export const restriction_logged_in : lib_plankton.rest.type_restriction<any> = (
|
export async function web_auth(
|
||||||
|
authorization_string : (null | string)
|
||||||
|
) : Promise<(null | _zeitbild.type_user_id)>
|
||||||
|
{
|
||||||
|
if (authorization_string === null) {
|
||||||
|
return Promise.resolve<(null | _zeitbild.type_user_id)>(null);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
const parts : Array<string> = authorization_string.split(" ");
|
||||||
|
const strategy : string = parts[0];
|
||||||
|
const data_raw : string = parts.slice(1).join(" ");
|
||||||
|
switch (strategy) {
|
||||||
|
default: {
|
||||||
|
lib_plankton.log.notice(
|
||||||
|
"zeitbild.web_auth.unhandled_strategy",
|
||||||
|
{
|
||||||
|
"strategy": strategy,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
return Promise.resolve<(null | _zeitbild.type_user_id)>(null);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "Basic": {
|
||||||
|
const data_raw_decoded : string = lib_plankton.base64.decode(data_raw);
|
||||||
|
const parts_ : Array<string> = data_raw_decoded.split(":");
|
||||||
|
const username : string = parts_[0];
|
||||||
|
const password_is : string = parts_.slice(1).join(":");
|
||||||
|
const {"value": user_id, "error": error} = await lib_plankton.call.try_catch_wrap_async<_zeitbild.type_user_id>(
|
||||||
|
() => _zeitbild.service.user.identify(username)
|
||||||
|
);
|
||||||
|
if (error !== null) {
|
||||||
|
lib_plankton.log.notice(
|
||||||
|
"zeitbild.web_auth.unknown_user",
|
||||||
|
{
|
||||||
|
"username": username,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
return Promise.resolve<(null | _zeitbild.type_user_id)>(null);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
const password_shall : string = lib_plankton.sha256.get(
|
||||||
|
username,
|
||||||
|
_zeitbild.conf.get()["misc"]["auth_salt"]
|
||||||
|
);
|
||||||
|
if (! (password_is === password_shall)) {
|
||||||
|
/**
|
||||||
|
* @todo remove
|
||||||
|
*/
|
||||||
|
lib_plankton.log.notice(
|
||||||
|
"zeitbild.web_auth.wrong_pasword",
|
||||||
|
{
|
||||||
|
"shall": password_shall,
|
||||||
|
"is": password_is,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
return Promise.resolve<(null | _zeitbild.type_user_id)>(null);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return Promise.resolve<(null | _zeitbild.type_user_id)>(user_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
export const restriction_logged_in : lib_plankton.rest_caldav.type_restriction<any> = (
|
||||||
(stuff) => (
|
(stuff) => (
|
||||||
session_from_stuff(stuff)
|
session_from_stuff(stuff)
|
||||||
.then(() => Promise.resolve<boolean>(true))
|
.then(() => Promise.resolve<boolean>(true))
|
||||||
|
@ -38,7 +109,27 @@ namespace _zeitbild.api
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
export const restriction_none : lib_plankton.rest.type_restriction<any> = (
|
export const restriction_basic_auth : lib_plankton.rest_caldav.type_restriction<any> = (
|
||||||
|
(stuff) => (
|
||||||
|
web_auth(
|
||||||
|
stuff.headers["Authorization"]
|
||||||
|
??
|
||||||
|
stuff.headers["authorization"]
|
||||||
|
??
|
||||||
|
null
|
||||||
|
)
|
||||||
|
.then<boolean>(
|
||||||
|
(user_id) => Promise.resolve<boolean>(
|
||||||
|
(user_id !== null)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
export const restriction_none : lib_plankton.rest_caldav.type_restriction<any> = (
|
||||||
(stuff) => Promise.resolve<boolean>(true)
|
(stuff) => Promise.resolve<boolean>(true)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -46,13 +137,13 @@ namespace _zeitbild.api
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
export function register<type_input, type_output>(
|
export function register<type_input, type_output>(
|
||||||
rest_subject : lib_plankton.rest.type_rest,
|
rest_subject : lib_plankton.rest_caldav.type_rest,
|
||||||
http_method : lib_plankton.http.enum_method,
|
http_method : lib_plankton.caldav.enum_method,
|
||||||
path : string,
|
path : string,
|
||||||
options : {
|
options : {
|
||||||
active ?: ((version : string) => boolean);
|
active ?: ((version : (null | string)) => boolean);
|
||||||
restriction ?: (null | lib_plankton.rest.type_restriction<type_input>);
|
restriction ?: (null | lib_plankton.rest_caldav.type_restriction<type_input>);
|
||||||
execution ?: lib_plankton.rest.type_execution<type_input, type_output>;
|
execution ?: lib_plankton.rest_caldav.type_execution<type_input, type_output>;
|
||||||
title ?: (null | string);
|
title ?: (null | string);
|
||||||
description ?: (null | string);
|
description ?: (null | string);
|
||||||
query_parameters ?: ((version : (null | string)) => Array<
|
query_parameters ?: ((version : (null | string)) => Array<
|
||||||
|
@ -62,12 +153,26 @@ namespace _zeitbild.api
|
||||||
required : boolean;
|
required : boolean;
|
||||||
}
|
}
|
||||||
>);
|
>);
|
||||||
input_schema ?: ((version: (null | string)) => lib_plankton.rest.type_oas_schema);
|
input_schema ?: ((version: (null | string)) => lib_plankton.rest_caldav.type_oas_schema);
|
||||||
output_schema ?: ((version: (null | string)) => lib_plankton.rest.type_oas_schema);
|
output_schema ?: ((version: (null | string)) => lib_plankton.rest_caldav.type_oas_schema);
|
||||||
request_body_mimetype ?: string;
|
request_body_mimetype ?: (
|
||||||
request_body_decode ?: ((http_request_body : Buffer, http_request_header_content_type : (null | string)) => any);
|
(version : (null | string))
|
||||||
|
=>
|
||||||
|
string
|
||||||
|
);
|
||||||
|
request_body_decode ?: (
|
||||||
|
(version : (null | string))
|
||||||
|
=>
|
||||||
|
(http_request_body : Buffer, http_request_header_content_type : (null | string))
|
||||||
|
=>
|
||||||
|
Promise<any>
|
||||||
|
);
|
||||||
response_body_mimetype ?: string;
|
response_body_mimetype ?: string;
|
||||||
response_body_encode ?: ((output : any) => Buffer);
|
response_body_encode ?: (
|
||||||
|
(output : any)
|
||||||
|
=>
|
||||||
|
Promise<Buffer>
|
||||||
|
);
|
||||||
} = {}
|
} = {}
|
||||||
) : void
|
) : void
|
||||||
{
|
{
|
||||||
|
@ -76,11 +181,78 @@ namespace _zeitbild.api
|
||||||
},
|
},
|
||||||
options
|
options
|
||||||
);
|
);
|
||||||
lib_plankton.rest.register<type_input, type_output>(
|
lib_plankton.rest_caldav.register<type_input, type_output>(
|
||||||
rest_subject,
|
rest_subject,
|
||||||
http_method,
|
http_method,
|
||||||
(_zeitbild.conf.get().server.path_base + path),
|
(_zeitbild.conf.get().server.path_base + path),
|
||||||
options
|
{
|
||||||
|
"active": options.active,
|
||||||
|
/**
|
||||||
|
* @todo heed version
|
||||||
|
*/
|
||||||
|
"restriction": (
|
||||||
|
((options.restriction === undefined) || (options.restriction === null))
|
||||||
|
?
|
||||||
|
undefined
|
||||||
|
:
|
||||||
|
(version) => (options.restriction as lib_plankton.rest_caldav.type_restriction<type_input>)
|
||||||
|
),
|
||||||
|
/**
|
||||||
|
* @todo heed version
|
||||||
|
*/
|
||||||
|
"execution": (
|
||||||
|
((options.execution === undefined) || (options.execution === null))
|
||||||
|
?
|
||||||
|
undefined
|
||||||
|
:
|
||||||
|
(version) => (options.execution as lib_plankton.rest_caldav.type_execution<type_input, type_output>)
|
||||||
|
),
|
||||||
|
/**
|
||||||
|
* @todo heed version
|
||||||
|
*/
|
||||||
|
"title": (
|
||||||
|
((options.title === undefined) || (options.title === null))
|
||||||
|
?
|
||||||
|
(version) => null
|
||||||
|
:
|
||||||
|
(version) => (options.title as string)
|
||||||
|
),
|
||||||
|
/**
|
||||||
|
* @todo heed version
|
||||||
|
*/
|
||||||
|
"description": (
|
||||||
|
((options.description === undefined) || (options.description === null))
|
||||||
|
?
|
||||||
|
(version) => null
|
||||||
|
:
|
||||||
|
(version) => (options.description as string)
|
||||||
|
),
|
||||||
|
"query_parameters": options.query_parameters,
|
||||||
|
"input_schema": options.input_schema,
|
||||||
|
"output_schema": options.output_schema,
|
||||||
|
"request_body_mimetype": options.request_body_mimetype,
|
||||||
|
"request_body_decode": options.request_body_decode,
|
||||||
|
/**
|
||||||
|
* @todo heed version
|
||||||
|
*/
|
||||||
|
"response_body_mimetype": (
|
||||||
|
((options.response_body_mimetype === undefined) || (options.response_body_mimetype === null))
|
||||||
|
?
|
||||||
|
undefined
|
||||||
|
:
|
||||||
|
(version) => (options.response_body_mimetype as string)
|
||||||
|
),
|
||||||
|
/**
|
||||||
|
* @todo heed version
|
||||||
|
*/
|
||||||
|
"response_body_encode": (
|
||||||
|
((options.response_body_encode === undefined) || (options.response_body_encode === null))
|
||||||
|
?
|
||||||
|
undefined
|
||||||
|
:
|
||||||
|
(version) => (options.response_body_encode as ((output : any) => Promise<Buffer>))
|
||||||
|
),
|
||||||
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,9 +5,9 @@ namespace _zeitbild.api
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
export function make(
|
export function make(
|
||||||
) : lib_plankton.rest.type_rest
|
) : lib_plankton.rest_caldav.type_rest
|
||||||
{
|
{
|
||||||
const rest_subject : lib_plankton.rest.type_rest = lib_plankton.rest.make(
|
const rest_subject : lib_plankton.rest_caldav.type_rest = lib_plankton.rest_caldav.make(
|
||||||
{
|
{
|
||||||
"title": "zeitbild",
|
"title": "zeitbild",
|
||||||
"versioning_method": "header",
|
"versioning_method": "header",
|
||||||
|
@ -15,7 +15,7 @@ namespace _zeitbild.api
|
||||||
"set_access_control_headers": true,
|
"set_access_control_headers": true,
|
||||||
"authentication": {
|
"authentication": {
|
||||||
"kind": "key_header",
|
"kind": "key_header",
|
||||||
"parameters": {"name": "X-Session-Key"}
|
"data": {"name": "X-Session-Key"}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -46,6 +46,19 @@ namespace _zeitbild.api
|
||||||
_zeitbild.api.register_calendar_event_remove(rest_subject);
|
_zeitbild.api.register_calendar_event_remove(rest_subject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// export
|
||||||
|
{
|
||||||
|
_zeitbild.api.register_export_ical(rest_subject);
|
||||||
|
}
|
||||||
|
// caldav
|
||||||
|
{
|
||||||
|
_zeitbild.api.register_caldav_sniff(rest_subject);
|
||||||
|
_zeitbild.api.register_caldav_put(rest_subject);
|
||||||
|
_zeitbild.api.register_caldav_probe(rest_subject);
|
||||||
|
_zeitbild.api.register_caldav_probe_via_well_known(rest_subject);
|
||||||
|
_zeitbild.api.register_caldav_projects(rest_subject);
|
||||||
|
_zeitbild.api.register_caldav_get(rest_subject);
|
||||||
|
}
|
||||||
// misc
|
// misc
|
||||||
{
|
{
|
||||||
_zeitbild.api.register_users(rest_subject);
|
_zeitbild.api.register_users(rest_subject);
|
||||||
|
|
|
@ -8,7 +8,7 @@ namespace _zeitbild.api
|
||||||
options : {
|
options : {
|
||||||
nullable ?: boolean;
|
nullable ?: boolean;
|
||||||
} = {}
|
} = {}
|
||||||
) : lib_plankton.rest.type_oas_schema
|
) : lib_plankton.rest_caldav.type_oas_schema
|
||||||
{
|
{
|
||||||
options = Object.assign(
|
options = Object.assign(
|
||||||
{
|
{
|
||||||
|
@ -49,7 +49,7 @@ namespace _zeitbild.api
|
||||||
options : {
|
options : {
|
||||||
nullable ?: boolean;
|
nullable ?: boolean;
|
||||||
} = {}
|
} = {}
|
||||||
) : lib_plankton.rest.type_oas_schema
|
) : lib_plankton.rest_caldav.type_oas_schema
|
||||||
{
|
{
|
||||||
options = Object.assign(
|
options = Object.assign(
|
||||||
{
|
{
|
||||||
|
@ -90,7 +90,7 @@ namespace _zeitbild.api
|
||||||
options : {
|
options : {
|
||||||
nullable ?: boolean;
|
nullable ?: boolean;
|
||||||
} = {}
|
} = {}
|
||||||
) : lib_plankton.rest.type_oas_schema
|
) : lib_plankton.rest_caldav.type_oas_schema
|
||||||
{
|
{
|
||||||
options = Object.assign(
|
options = Object.assign(
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,6 +3,16 @@ namespace _zeitbild
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
export var cache : lib_plankton.cache.type_cache<any>;
|
export var cache_regular : lib_plankton.cache.type_subject<any>;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
export var cache_external_resources : lib_plankton.cache.type_subject<any>;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
export var cache_templates : lib_plankton.cache.type_subject<string>;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,17 @@ namespace _zeitbild.conf
|
||||||
"error"
|
"error"
|
||||||
],
|
],
|
||||||
"default": "info"
|
"default": "info"
|
||||||
}
|
},
|
||||||
|
"format": {
|
||||||
|
"nullable": false,
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"human_readable",
|
||||||
|
"jsonl",
|
||||||
|
"jsonl_structured",
|
||||||
|
],
|
||||||
|
"default": "human_readable",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
"required": [
|
"required": [
|
||||||
]
|
]
|
||||||
|
@ -272,8 +282,42 @@ namespace _zeitbild.conf
|
||||||
"data": {
|
"data": {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"external_resources": {
|
||||||
|
"nullable": false,
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"lifetime": {
|
||||||
|
"nullable": false,
|
||||||
|
"type": "integer",
|
||||||
|
"default": 14400
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"additionalProperties": false,
|
||||||
|
"required": [
|
||||||
|
],
|
||||||
|
"default": {
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"misc": {
|
||||||
|
"nullable": false,
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
/**
|
||||||
|
* @todo make mandatory
|
||||||
|
*/
|
||||||
|
"auth_salt": {
|
||||||
|
"nullable": false,
|
||||||
|
"type": "string",
|
||||||
|
"default": "unsafe_auth_salt"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
],
|
||||||
|
"additionalProperties": false,
|
||||||
|
"default": {}
|
||||||
|
},
|
||||||
|
},
|
||||||
"required": [
|
"required": [
|
||||||
"version"
|
"version"
|
||||||
],
|
],
|
||||||
|
|
|
@ -59,23 +59,119 @@ namespace _zeitbild.helpers
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @todo timezone
|
||||||
*/
|
*/
|
||||||
var _template_cache : Record<string, string> = {};
|
export function ical_dt_from_own_datetime(
|
||||||
|
datetime : lib_plankton.pit.type_datetime
|
||||||
|
) : lib_plankton.ical.type_dt
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"tzid": "Europe/Berlin",
|
||||||
|
"value": {
|
||||||
|
"date": {
|
||||||
|
"year": datetime.date.year,
|
||||||
|
"month": datetime.date.month,
|
||||||
|
"day": datetime.date.day,
|
||||||
|
},
|
||||||
|
"time": (
|
||||||
|
(datetime.time === null)
|
||||||
|
?
|
||||||
|
null
|
||||||
|
:
|
||||||
|
{
|
||||||
|
"utc": true,
|
||||||
|
"hour": datetime.time.hour,
|
||||||
|
"minute": datetime.time.minute,
|
||||||
|
"second": datetime.time.second,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
export function ical_vevent_from_own_event(
|
||||||
|
event_object : _zeitbild.type_event_object,
|
||||||
|
uid : string
|
||||||
|
) : lib_plankton.ical.type_vevent
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"uid": uid,
|
||||||
|
"dtstamp": ical_dt_from_own_datetime(event_object.begin).value,
|
||||||
|
"dtstart": ical_dt_from_own_datetime(event_object.begin),
|
||||||
|
"dtend": (
|
||||||
|
(event_object.end === null)
|
||||||
|
?
|
||||||
|
undefined
|
||||||
|
:
|
||||||
|
ical_dt_from_own_datetime(event_object.end)
|
||||||
|
),
|
||||||
|
"location": (event_object.location ?? undefined),
|
||||||
|
"summary": event_object.name,
|
||||||
|
"url": (event_object.link ?? undefined),
|
||||||
|
"description": (event_object.description ?? undefined),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @todo assign better uids
|
||||||
|
*/
|
||||||
|
export function ical_vcalendar_from_own_event_list(
|
||||||
|
events : Array<_zeitbild.type_event_object>
|
||||||
|
) : lib_plankton.ical.type_vcalendar
|
||||||
|
{
|
||||||
|
const pit_now : lib_plankton.pit.type_pit = lib_plankton.pit.now();
|
||||||
|
const datetime_now : lib_plankton.pit.type_datetime = lib_plankton.pit.to_datetime(pit_now);
|
||||||
|
const stamp : string = lib_plankton.string.coin(
|
||||||
|
"{{year}}{{month}}{{day}}",
|
||||||
|
{
|
||||||
|
"year": datetime_now.date.year.toFixed(0).padStart(4, "0"),
|
||||||
|
"month": datetime_now.date.month.toFixed(0).padStart(2, "0"),
|
||||||
|
"day": datetime_now.date.day.toFixed(0).padStart(2, "0"),
|
||||||
|
}
|
||||||
|
);
|
||||||
|
return {
|
||||||
|
"version": "2.0",
|
||||||
|
"prodid": "",
|
||||||
|
"vevents": (
|
||||||
|
events
|
||||||
|
.map<lib_plankton.ical.type_vevent>(
|
||||||
|
(entry, index) => ical_vevent_from_own_event(
|
||||||
|
entry,
|
||||||
|
lib_plankton.string.coin(
|
||||||
|
"zeitbild_{{stamp}}_{{index}}",
|
||||||
|
{
|
||||||
|
"stamp": stamp,
|
||||||
|
"index": index.toFixed(0)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
"method": "PUBLISH",
|
||||||
|
"vtimezone": {
|
||||||
|
"tzid": "Europe/Berlin",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @todo caching
|
|
||||||
*/
|
*/
|
||||||
export async function template_coin(
|
export async function template_coin(
|
||||||
name : string,
|
name : string,
|
||||||
data : Record<string, string>
|
data : Record<string, string>
|
||||||
) : Promise<string>
|
) : Promise<string>
|
||||||
{
|
{
|
||||||
let content : string;
|
const content : string = await lib_plankton.cache.get<string>(
|
||||||
if (! (name in _template_cache)) {
|
_zeitbild.cache_templates,
|
||||||
content = (
|
name,
|
||||||
(
|
null,
|
||||||
await lib_plankton.file.read(
|
() => (
|
||||||
|
lib_plankton.file.read(
|
||||||
lib_plankton.string.coin(
|
lib_plankton.string.coin(
|
||||||
"templates/{{name}}.html.tpl",
|
"templates/{{name}}.html.tpl",
|
||||||
{
|
{
|
||||||
|
@ -83,14 +179,11 @@ namespace _zeitbild.helpers
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
.then(
|
||||||
|
x => Promise.resolve<string>(x.toString())
|
||||||
|
)
|
||||||
)
|
)
|
||||||
.toString()
|
|
||||||
);
|
);
|
||||||
_template_cache[name] = content;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
content = _template_cache[name];
|
|
||||||
}
|
|
||||||
return Promise.resolve<string>(
|
return Promise.resolve<string>(
|
||||||
lib_plankton.string.coin(
|
lib_plankton.string.coin(
|
||||||
content,
|
content,
|
||||||
|
|
102
source/main.ts
102
source/main.ts
|
@ -159,11 +159,17 @@ async function main(
|
||||||
) : Promise<void>
|
) : Promise<void>
|
||||||
{
|
{
|
||||||
// init1
|
// init1
|
||||||
lib_plankton.log.conf_push(
|
/*
|
||||||
|
lib_plankton.log.set_main_logger(
|
||||||
[
|
[
|
||||||
lib_plankton.log.channel_make({"kind": "stdout", "data": {"threshold": "info"}}),
|
{
|
||||||
|
"kind": "std",
|
||||||
|
"data": {
|
||||||
|
}
|
||||||
|
}
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
*/
|
||||||
|
|
||||||
// args
|
// args
|
||||||
const arg_handler : lib_plankton.args.class_handler = new lib_plankton.args.class_handler({
|
const arg_handler : lib_plankton.args.class_handler = new lib_plankton.args.class_handler({
|
||||||
|
@ -246,30 +252,79 @@ async function main(
|
||||||
"name": "help",
|
"name": "help",
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
const args : Record<string, any> = arg_handler.read(lib_plankton.args.enum_environment.cli, args_raw.join(" "));
|
const args : Record<string, any> = arg_handler.read(
|
||||||
|
lib_plankton.args.enum_environment.cli,
|
||||||
|
args_raw.join(" ")
|
||||||
|
);
|
||||||
|
|
||||||
// init2
|
// init2
|
||||||
await _zeitbild.conf.init(
|
await _zeitbild.conf.init(
|
||||||
args["conf_path"]
|
args["conf_path"]
|
||||||
);
|
);
|
||||||
lib_plankton.log.conf_push(
|
lib_plankton.log.set_main_logger(
|
||||||
_zeitbild.conf.get().log.map(
|
_zeitbild.conf.get().log.map(
|
||||||
(log_output : any) => lib_plankton.log.channel_make(
|
(log_output : any) => {
|
||||||
|
switch (log_output.kind) {
|
||||||
|
case "stdout": {
|
||||||
|
return {
|
||||||
|
"kind": "minlevel",
|
||||||
|
"data": {
|
||||||
|
"core": {
|
||||||
|
"kind": "std",
|
||||||
|
"data": {
|
||||||
|
"target": "stdout",
|
||||||
|
"format": lib_plankton.call.distinguish(
|
||||||
{
|
{
|
||||||
"kind": log_output.kind,
|
"kind": log_output.data.format,
|
||||||
"data": log_output.data
|
"data": null,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"jsonl": () => ({
|
||||||
|
"kind": "jsonl",
|
||||||
|
"data": {
|
||||||
|
"structured": false,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
"jsonl_structured": () => ({
|
||||||
|
"kind": "jsonl",
|
||||||
|
"data": {
|
||||||
|
"structured": true,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
"human_readable": () => ({
|
||||||
|
"kind": "human_readable",
|
||||||
|
"data": {
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
}
|
||||||
|
),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"threshold": log_output.data.threshold,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
throw (new Error("unhandled"));
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
_zeitbild.cache = lib_plankton.cache.chest.implementation<any>(
|
|
||||||
lib_plankton.cache.chest.make<any>(
|
|
||||||
{
|
|
||||||
"chest": lib_plankton.storage.memory.implementation_chest<any>({}),
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
await _zeitbild.cache.init();
|
{
|
||||||
|
_zeitbild.cache_regular = lib_plankton.cache.make<any>();
|
||||||
|
await lib_plankton.cache.init(_zeitbild.cache_regular);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
_zeitbild.cache_external_resources = lib_plankton.cache.make<any>();
|
||||||
|
await lib_plankton.cache.init(_zeitbild.cache_external_resources);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
_zeitbild.cache_templates = lib_plankton.cache.make<any>();
|
||||||
|
await lib_plankton.cache.init(_zeitbild.cache_templates);
|
||||||
|
}
|
||||||
|
|
||||||
// exec
|
// exec
|
||||||
if (args["help"]) {
|
if (args["help"]) {
|
||||||
|
@ -321,12 +376,11 @@ async function main(
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "api-doc": {
|
case "api-doc": {
|
||||||
lib_plankton.log.conf_push([]);
|
lib_plankton.log.set_main_logger([]);
|
||||||
const rest_subject : lib_plankton.rest.type_rest = _zeitbild.api.make();
|
const rest_subject : lib_plankton.rest_caldav.type_rest = _zeitbild.api.make();
|
||||||
lib_plankton.log.conf_pop();
|
|
||||||
process.stdout.write(
|
process.stdout.write(
|
||||||
JSON.stringify(
|
JSON.stringify(
|
||||||
lib_plankton.rest.to_oas(rest_subject),
|
lib_plankton.rest_caldav.to_oas(rest_subject),
|
||||||
undefined,
|
undefined,
|
||||||
"\t"
|
"\t"
|
||||||
)
|
)
|
||||||
|
@ -378,20 +432,21 @@ async function main(
|
||||||
|
|
||||||
await _zeitbild.auth.init();
|
await _zeitbild.auth.init();
|
||||||
|
|
||||||
const rest_subject : lib_plankton.rest.type_rest = _zeitbild.api.make();
|
const rest_subject : lib_plankton.rest_caldav.type_rest = _zeitbild.api.make();
|
||||||
const server : lib_plankton.server.type_subject = lib_plankton.server.make(
|
const server : lib_plankton.server.type_subject = lib_plankton.server.make(
|
||||||
async (input, metadata) => {
|
async (input, metadata) => {
|
||||||
const http_request : lib_plankton.http.type_request = lib_plankton.http.decode_request(input.toString());
|
const http_request : lib_plankton.caldav.type_request = lib_plankton.caldav.decode_request(input.toString());
|
||||||
const http_response : lib_plankton.http.type_response = await lib_plankton.rest.call(
|
const http_response : lib_plankton.caldav.type_response = await lib_plankton.rest_caldav.call(
|
||||||
rest_subject,
|
rest_subject,
|
||||||
http_request,
|
http_request,
|
||||||
{
|
{
|
||||||
"checklevel_restriction": lib_plankton.api.enum_checklevel.hard,
|
"checklevel_restriction": lib_plankton.api.enum_checklevel.hard,
|
||||||
// "checklevel_input": lib_plankton.api.enum_checklevel.soft,
|
// "checklevel_input": lib_plankton.api.enum_checklevel.soft,
|
||||||
// "checklevel_output": lib_plankton.api.enum_checklevel.soft,
|
// "checklevel_output": lib_plankton.api.enum_checklevel.soft,
|
||||||
|
"set_content_length": false,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
const output : string = lib_plankton.http.encode_response(http_response);
|
const output : string = lib_plankton.caldav.encode_response(http_response);
|
||||||
return output;
|
return output;
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -418,6 +473,7 @@ async function main(
|
||||||
)
|
)
|
||||||
.catch(
|
.catch(
|
||||||
(error) => {
|
(error) => {
|
||||||
|
// console.error(error);
|
||||||
process.stderr.write(String(error) + "\n");
|
process.stderr.write(String(error) + "\n");
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
|
@ -251,7 +251,7 @@ namespace _zeitbild.repository.calendar
|
||||||
{"level": access_attributed_row["level"]}
|
{"level": access_attributed_row["level"]}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
await _zeitbild.cache.clear();
|
await lib_plankton.cache.clear(_zeitbild.cache_regular);
|
||||||
return Promise.resolve<_zeitbild.type_calendar_id>(calendar_id);
|
return Promise.resolve<_zeitbild.type_calendar_id>(calendar_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -313,7 +313,7 @@ namespace _zeitbild.repository.calendar
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
await _zeitbild.cache.clear();
|
await lib_plankton.cache.clear(_zeitbild.cache_regular);
|
||||||
return Promise.resolve<void>(undefined);
|
return Promise.resolve<void>(undefined);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -325,7 +325,7 @@ namespace _zeitbild.repository.calendar
|
||||||
calendar_id : _zeitbild.type_calendar_id
|
calendar_id : _zeitbild.type_calendar_id
|
||||||
) : Promise<void>
|
) : Promise<void>
|
||||||
{
|
{
|
||||||
await _zeitbild.cache.clear();
|
await lib_plankton.cache.clear(_zeitbild.cache_regular);
|
||||||
const core_store = get_core_store();
|
const core_store = get_core_store();
|
||||||
const access_attributed_chest = get_access_attributed_chest();
|
const access_attributed_chest = get_access_attributed_chest();
|
||||||
// attributed access
|
// attributed access
|
||||||
|
@ -375,11 +375,12 @@ namespace _zeitbild.repository.calendar
|
||||||
>
|
>
|
||||||
{
|
{
|
||||||
return lib_plankton.cache.get_complex<any, Array<type_overview_entry>>(
|
return lib_plankton.cache.get_complex<any, Array<type_overview_entry>>(
|
||||||
_zeitbild.cache,
|
_zeitbild.cache_regular,
|
||||||
"calendar_overview",
|
"calendar_overview",
|
||||||
{
|
{
|
||||||
"user_id": user_id,
|
"user_id": user_id,
|
||||||
},
|
},
|
||||||
|
null,
|
||||||
() => (
|
() => (
|
||||||
lib_plankton.file.read("sql/calendar_overview.sql")
|
lib_plankton.file.read("sql/calendar_overview.sql")
|
||||||
.then(
|
.then(
|
||||||
|
|
|
@ -401,7 +401,7 @@ namespace _zeitbild.repository.resource
|
||||||
"sub_id": local_resource_id,
|
"sub_id": local_resource_id,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
await _zeitbild.cache.clear();
|
await lib_plankton.cache.clear(_zeitbild.cache_regular);
|
||||||
return Promise.resolve<_zeitbild.type_resource_id>(resource_id);
|
return Promise.resolve<_zeitbild.type_resource_id>(resource_id);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -419,7 +419,7 @@ namespace _zeitbild.repository.resource
|
||||||
"sub_id": caldav_resource_id,
|
"sub_id": caldav_resource_id,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
await _zeitbild.cache.clear();
|
await lib_plankton.cache.clear(_zeitbild.cache_regular);
|
||||||
return Promise.resolve<_zeitbild.type_resource_id>(resource_id);
|
return Promise.resolve<_zeitbild.type_resource_id>(resource_id);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -499,7 +499,7 @@ namespace _zeitbild.repository.resource
|
||||||
"read_only": resource_object.data.read_only,
|
"read_only": resource_object.data.read_only,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
await _zeitbild.cache.clear();
|
await lib_plankton.cache.clear(_zeitbild.cache_regular);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
|
@ -561,7 +561,7 @@ namespace _zeitbild.repository.resource
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
await _zeitbild.cache.clear();
|
await lib_plankton.cache.clear(_zeitbild.cache_regular);
|
||||||
return Promise.resolve(local_resource_event_id);
|
return Promise.resolve(local_resource_event_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -589,7 +589,7 @@ namespace _zeitbild.repository.resource
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
await _zeitbild.cache.clear();
|
await lib_plankton.cache.clear(_zeitbild.cache_regular);
|
||||||
return Promise.resolve<void>(undefined);
|
return Promise.resolve<void>(undefined);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -602,7 +602,7 @@ namespace _zeitbild.repository.resource
|
||||||
local_resource_event_id : _zeitbild.type_local_resource_event_id
|
local_resource_event_id : _zeitbild.type_local_resource_event_id
|
||||||
) : Promise<void>
|
) : Promise<void>
|
||||||
{
|
{
|
||||||
await _zeitbild.cache.clear();
|
await lib_plankton.cache.clear(_zeitbild.cache_regular);
|
||||||
const dataset_core : Record<string, any> = await get_resource_core_store().read(resource_id);
|
const dataset_core : Record<string, any> = await get_resource_core_store().read(resource_id);
|
||||||
if (! (dataset_core.kind === "local")) {
|
if (! (dataset_core.kind === "local")) {
|
||||||
throw (new Error("not a local resource"));
|
throw (new Error("not a local resource"));
|
||||||
|
|
5
source/services/caldal.ts
Normal file
5
source/services/caldal.ts
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
|
||||||
|
namespace _zeitbild.service.caldav
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue