mirror of https://gitee.com/bigwinds/arangodb
Merge branch 'devel' of github.com:arangodb/ArangoDB into pipeline
This commit is contained in:
commit
626d8ba315
|
@ -36,6 +36,8 @@ devel
|
|||
|
||||
* Foxx OAuth2 module now correctly passes the `access_token` to the OAuth2 server
|
||||
|
||||
* added timezone module
|
||||
|
||||
|
||||
v3.0.5 (XXXX-XX-XX)
|
||||
-------------------
|
||||
|
|
|
@ -259,7 +259,6 @@ The following attributes will be returned in the `stats` attribute of an `explai
|
|||
indicate a plan was actually modified by a rule)
|
||||
- `rulesSkipped`: number of rules skipped by the optimizer
|
||||
|
||||
|
||||
!SUBSECTION Warnings
|
||||
|
||||
For some queries, the optimizer may produce warnings. These will be returned in
|
||||
|
@ -277,6 +276,26 @@ the `warnings` attribute of the `explain` result:
|
|||
There is an upper bound on the number of warning a query may produce. If that
|
||||
bound is reached, no further warnings will be returned.
|
||||
|
||||
!SUBSECTION Optimization in a cluster
|
||||
|
||||
When you're running AQL in the cluster, the parsing of the query is done on the
|
||||
coordinator. The coordinator then chops the query into snipets, which are to
|
||||
remain on the coordinator, and others that are to be distributed over the network
|
||||
to the shards. The cutting sites are interconnected
|
||||
via *Scatter-*, *Gather-* and *RemoteNodes*.
|
||||
|
||||
These nodes mark the network borders of the snippets. The optimizer strives to reduce the amount
|
||||
of data transfered via these network interfaces by pushing `FILTER`s out to the shards,
|
||||
as it is vital to the query performance to reduce that data amount to transfer over the
|
||||
network links.
|
||||
|
||||
Snippets marked with **DBS** are executed on the shards, **COOR** ones are excuted on the coordinator.
|
||||
|
||||
**As usual, the optimizer can only take certain assumptions for granted when doing so,
|
||||
i.e. [user-defined functions have to be executed on the coordinator](../Extending/README.md).
|
||||
If in doubt, you should modify your query to reduce the number interconnections between your snippets.**
|
||||
|
||||
When optimizing your query you may want to look at simpler parts of it first.
|
||||
|
||||
!SUBSECTION List of execution nodes
|
||||
|
||||
|
|
|
@ -2,24 +2,24 @@
|
|||
|
||||
!SECTION Naming
|
||||
|
||||
The *::* symbol is used inside AQL as the namespace separator. Using
|
||||
the namespace separator, users can create a multi-level hierarchy of
|
||||
function groups if required.
|
||||
Built-in AQL functions that are shipped with ArangoDB reside in the namespace
|
||||
*_aql*, which is also the default namespace to look in if an unqualified
|
||||
function name is found.
|
||||
|
||||
Examples:
|
||||
To refer to a user-defined AQL function, the function name must be fully
|
||||
qualified to also include the user-defined namespace. The *::* symbol is used
|
||||
as the namespace separator. Users can create a multi-level hierarchy of function
|
||||
groups if required:
|
||||
|
||||
```js
|
||||
RETURN myfunctions::myfunc()
|
||||
RETURN myfunctions::math::random()
|
||||
MYGROUP::MYFUNC()
|
||||
MYFUNCTIONS::MATH::RANDOM()
|
||||
```
|
||||
|
||||
**Note**: As all function names in AQL, user function names are also
|
||||
case-insensitive.
|
||||
**Note**: Adding user functions to the *_aql* namespace is disallowed and will
|
||||
fail.
|
||||
|
||||
Built-in AQL functions reside in the namespace *_aql*, which is also
|
||||
the default namespace to look in if an unqualified function name is
|
||||
found. Adding user functions to the *_aql* namespace is disallowed and
|
||||
will fail.
|
||||
User function names are case-insensitive like all function names in AQL.
|
||||
|
||||
!SECTION Variables and side effects
|
||||
|
||||
|
@ -87,8 +87,8 @@ and state outside of the user function itself.
|
|||
User functions must only return primitive types (i.e. *null*, boolean
|
||||
values, numeric values, string values) or aggregate types (arrays or
|
||||
objects) composed of these types.
|
||||
Returning any other JavaScript object type from a user function may lead
|
||||
to undefined behavior and should be avoided.
|
||||
Returning any other JavaScript object type (Function, Date, RegExp etc.) from
|
||||
a user function may lead to undefined behavior and should be avoided.
|
||||
|
||||
!SECTION Enforcing strict mode
|
||||
|
||||
|
@ -111,17 +111,3 @@ function (values) {
|
|||
```
|
||||
|
||||
Any violation of the strict mode will trigger a runtime error.
|
||||
|
||||
!SECTION Miscellaneous
|
||||
|
||||
Internally, user functions are stored in a system collection named
|
||||
*_aqlfunctions* of the selected database. The functions will be exclusively
|
||||
available for queries in that particular database.
|
||||
|
||||
Documents in the *_aqlfunctions* collection (or any other system collection)
|
||||
should not be accessed directly, but only via the dedicated interfaces.
|
||||
|
||||
Keep in mind that system collections are excluded from dumps created with
|
||||
[arangodump](../../Manual/Administration/Arangodump.html) by default. To include AQL user
|
||||
functions in a dump, the dump needs to be started with the
|
||||
option *--include-system-collections true*.
|
||||
|
|
|
@ -12,6 +12,12 @@ function code must be specified. This can easily be done in
|
|||
[arangosh](../../Manual/GettingStarted/Arangosh.html). The [HTTP Interface
|
||||
](../../HTTP/AqlUserFunctions/index.html) also offers User Functions management.
|
||||
|
||||
Documents in the *_aqlfunctions* collection (or any other system collection)
|
||||
should not be accessed directly, but only via the dedicated interfaces.
|
||||
Otherwise you might see caching issues or accidentally break something.
|
||||
The interfaces will ensure the correct format of the documents and invalidate
|
||||
the UDF cache.
|
||||
|
||||
!SUBSECTION Registering an AQL user function
|
||||
|
||||
For testing, it may be sufficient to directly type the function code in the shell.
|
||||
|
|
|
@ -1,15 +1,62 @@
|
|||
!CHAPTER Extending AQL with User Functions
|
||||
|
||||
AQL comes with a built-in set of functions, but it is not a
|
||||
fully-featured programming language.
|
||||
AQL comes with a [built-in set of functions](../Functions/README.md), but it is
|
||||
not a fully-featured programming language.
|
||||
|
||||
To add missing functionality or to simplify queries, users
|
||||
may add their own functions to AQL in the selected database.
|
||||
These functions can be written in JavaScript, and must be
|
||||
registered via the API; see [Registering Functions](Functions.md).
|
||||
To add missing functionality or to simplify queries, users may add their own
|
||||
functions to AQL in the selected database. These functions are written in
|
||||
JavaScript, and are deployed via an API; see [Registering Functions](Functions.md).
|
||||
|
||||
In order to avoid conflicts with existing or future built-in
|
||||
function names, all user functions must be put into separate
|
||||
namespaces. Invoking a user functions is then possible by referring
|
||||
to the fully-qualified function name, which includes the namespace,
|
||||
too; see [Conventions](Conventions.md).
|
||||
In order to avoid conflicts with existing or future built-in function names,
|
||||
all user defined functions (**UDF**) have to be put into separate namespaces.
|
||||
Invoking a UDF is then possible by referring to the fully-qualified function name,
|
||||
which includes the namespace, too; see [Conventions](Conventions.md).
|
||||
|
||||
!SECTION Technical Details
|
||||
|
||||
!SUBSECTION Known Limitations
|
||||
|
||||
**UDFs have some implications you should be aware of. Otherwise they can
|
||||
introduce serious effects on the performance of your queries and the resource
|
||||
usage in ArangoDB.**
|
||||
|
||||
Since the optimizer doesn't know anything about the nature of your function,
|
||||
**the optimizer can't use indices for UDFs**. So you should never lean on a UDF
|
||||
as the primary criterion for a `FILTER` statement to reduce your query result set.
|
||||
Instead, put a another `FILTER` statement in front of it. You should make sure
|
||||
that this [**`FILTER` statement** is effective](../ExecutionAndPerformance/Optimizer.md)
|
||||
to reduce the query result before passing it to your UDF.
|
||||
|
||||
Rule of thumb is, the closer the UDF is to your final `RETURN` statement
|
||||
(or maybe even inside it), the better.
|
||||
|
||||
When used in clusters, UDFs are always executed on the
|
||||
[coordinator](../../Manual/Scalability/Architecture.html).
|
||||
|
||||
Using UDFs in clusters may result in a higher resource allocation
|
||||
in terms of used V8 contexts and server threads. If you run out
|
||||
of these resources, your query may abort with a
|
||||
[**cluster backend unavailable**](../../Manual/Appendix/ErrorCodes.html) error.
|
||||
|
||||
To overcome these mentioned limitations, you may want to
|
||||
[increase the number of available V8 contexts](../../Manual/Administration/Configuration/Arangod.html#v8-contexts)
|
||||
(at the expense of increased memory usage),
|
||||
and [the number of available server threads](../../Manual/Administration/Configuration/Arangod.html#server-threads).
|
||||
|
||||
!SUBSECTION Deployment Details
|
||||
|
||||
Internally, UDFs are stored in a system collection named `_aqlfunctions`
|
||||
of the selected database. When an AQL statement refers to such a UDF,
|
||||
it is loaded from that collection. The UDFs will be exclusively
|
||||
available for queries in that particular database.
|
||||
|
||||
Since the coordinator doesn't have own local collections, the `_aqlfunctions`
|
||||
collection is sharded across the cluster. Therefore (as usual), it has to be
|
||||
accessed through a coordinator - you mustn't talk to the shards directly.
|
||||
Once it is in the `_aqlfunctions` collection, it is available on all
|
||||
coordinators without additional effort.
|
||||
|
||||
Keep in mind that system collections are excluded from dumps created with
|
||||
[arangodump](../../Manual/Administration/Arangodump.html) by default.
|
||||
To include AQL UDF in a dump, the dump needs to be started with
|
||||
the option *--include-system-collections true*.
|
||||
|
|
|
@ -72,13 +72,24 @@ from similar ways to test for the existance of an attribute, in case the attribu
|
|||
has a falsy value or is not present (implicitly *null* on object access):
|
||||
|
||||
```js
|
||||
!!{ name: "" }.name // false
|
||||
!!{ name: "" }.name // false
|
||||
HAS( { name: "" }, "name") // true
|
||||
|
||||
{ name: null }.name == null // true
|
||||
{ }.name == null // true
|
||||
{ name: null }.name == null // true
|
||||
{ }.name == null // true
|
||||
HAS( { name: null }, "name" ) // true
|
||||
HAS( { }, "name" ) // false
|
||||
HAS( { }, "name" ) // false
|
||||
```
|
||||
|
||||
Note that `HAS()` can not utilize indexes. If it's not necessary to distinguish
|
||||
between explicit and implicit *null* values in your query, you may use an equality
|
||||
comparison to test for *null* and create a non-sparse index on the attribute you
|
||||
want to test against:
|
||||
|
||||
```js
|
||||
FILTER !HAS(doc, "name") // can not use indexes
|
||||
FILTER IS_NULL(doc, "name") // can not use indexes
|
||||
FILTER doc.name == null // can utilize non-sparse indexes
|
||||
```
|
||||
|
||||
!SUBSECTION IS_SAME_COLLECTION()
|
||||
|
|
|
@ -28,38 +28,5 @@ i.e. *LENGTH(foo)* and *length(foo)* are equivalent.
|
|||
!SUBSECTION Extending AQL
|
||||
|
||||
It is possible to extend AQL with user-defined functions. These functions need to
|
||||
be written in JavaScript, and be registered before usage in a query. Please refer
|
||||
to [Extending AQL](../Extending/index.html) for more details on this.
|
||||
|
||||
By default, any function used in an AQL query will be sought in the built-in
|
||||
function namespace *_aql*. This is the default namespace that contains all AQL
|
||||
functions that are shipped with ArangoDB.
|
||||
To refer to a user-defined AQL function, the function name must be fully qualified
|
||||
to also include the user-defined namespace. The *::* symbol is used as the namespace
|
||||
separator:
|
||||
|
||||
```js
|
||||
MYGROUP::MYFUNC()
|
||||
MYFUNCTIONS::MATH::RANDOM()
|
||||
```
|
||||
|
||||
As all AQL function names, user function names are also case-insensitive.
|
||||
|
||||
!SUBSUBSECTION Technical Details
|
||||
ArangoDB stores user defined functions in the `_functions` system collection.
|
||||
When an AQL statement refers to such a function, its loaded from that collection.
|
||||
|
||||
Since the optimizer doesn't know anything about this function, it won't be able
|
||||
to use indices for these functions.
|
||||
|
||||
When used in clusters, the UDF is executed on the coordinator. Depending on your
|
||||
query layout, this may result in many documents having to be passed up from the
|
||||
DB-Servers to the Coordinator. To avoid this, you should make sure that the query
|
||||
contains effective `FILTER` statements that can be used to DB-Server to reduce
|
||||
the query result before passing it up to the Coordinator and your UDF.
|
||||
|
||||
Since the Coordinator doesn't have own local collections, the `_functions` collection
|
||||
is sharded across the cluster. Therefore (as usual) it has to be accessed through the coordinator -
|
||||
you mustn't talk to the DB-Servers directly. Once its in there, it will be available
|
||||
on all coordinators.
|
||||
|
||||
be written in JavaScript, and have to be registered before they can be used in a query.
|
||||
Please refer to [Extending AQL](../Extending/index.html) for more details.
|
||||
|
|
|
@ -143,7 +143,8 @@ checked for, and false otherwise.
|
|||
|
||||
The following type check functions are available:
|
||||
|
||||
- `IS_NULL(value) → bool`: Check whether *value* is a *null* value
|
||||
- `IS_NULL(value) → bool`: Check whether *value* is a *null* value, also see
|
||||
[HAS()](Document.md#has)
|
||||
|
||||
- `IS_BOOL(value) → bool`: Check whether *value* is a *boolean* value
|
||||
|
||||
|
|
|
@ -131,14 +131,15 @@ FOR vertex[, edge[, path]]
|
|||
are multiple paths from *startVertex* to *vertex*, one of those is picked.
|
||||
- "none" (default) – no uniqueness check is applied on vertices
|
||||
- **uniqueEdges** (string): optionally ensure edge uniqueness
|
||||
- "path" – it is guaranteed that there is no path returned with a duplicate edge
|
||||
- "path" (default) – it is guaranteed that there is no path returned with a
|
||||
duplicate edge
|
||||
- "global" – it is guaranteed that each edge is visited at most once during
|
||||
the traversal, no matter how many paths lead from the start vertex to this edge.
|
||||
If you start with a `min depth > 1`, an edge that was found before *min* depth
|
||||
might not be returned at all (it still might be part of a path). **Note:**
|
||||
Using this configuration the result is not deterministic any more. If there
|
||||
are multiple paths from *startVertex* over *edge* one of those is picked.
|
||||
- "none" (default) – no uniqueness check is applied on edges. **Note:**
|
||||
- "none" – no uniqueness check is applied on edges. **Note:**
|
||||
Using this configuration the traversal will follow cycles in edges.
|
||||
- **bfs** (bool): optionally use the alternative breadth-first traversal algorithm
|
||||
- true – the traversal will be executed breadth-first. The results will first
|
||||
|
|
|
@ -6,8 +6,8 @@ This is an introduction to ArangoDB's HTTP interface for managing AQL
|
|||
user functions. AQL user functions are a means to extend the functionality
|
||||
of ArangoDB's query language (AQL) with user-defined JavaScript code.
|
||||
|
||||
For an overview of how AQL user functions work, please refer to
|
||||
[Extending AQL](../../AQL/Extending/index.html).
|
||||
For an overview of how AQL user functions and their implications, please refer to
|
||||
the [Extending AQL](../../AQL/Extending/index.html) chapter.
|
||||
|
||||
The HTTP interface provides an API for adding, deleting, and listing
|
||||
previously registered AQL user functions.
|
||||
|
|
|
@ -119,11 +119,14 @@ The following [NPM modules](https://www.npmjs.com) are preinstalled:
|
|||
* [minimatch](https://github.com/isaacs/minimatch)
|
||||
is a glob matcher for matching wildcards in file paths.
|
||||
|
||||
* [node-semver](https://github.com/npm/node-semver)
|
||||
is a utility library for handling semver version numbers.
|
||||
|
||||
* [qs](https://github.com/hapijs/qs)
|
||||
provides utilities for dealing with query strings using a different format than the **querystring** module.
|
||||
|
||||
* [semver](https://github.com/npm/node-semver)
|
||||
is a utility library for handling semver version numbers.
|
||||
|
||||
* [sinon](http://sinonjs.org)
|
||||
is a mocking library for writing test stubs, mocks and spies.
|
||||
|
||||
* [timezone](https://github.com/bigeasy/timezone)
|
||||
is a library for converting date time values between formats and timezones.
|
||||
|
|
|
@ -47,5 +47,6 @@ The following methods exist on the collection object (returned by *db.name*):
|
|||
* [collection.rename()](../../DataModeling/Collections/CollectionMethods.md#rename)
|
||||
* [collection.replace(selector, data)](../../DataModeling/Documents/DocumentMethods.md#replace)
|
||||
* [collection.replaceByExample(example, data)](../../DataModeling/Documents/DocumentMethods.md#replace-by-example)
|
||||
* [collection.save(data)](../../DataModeling/Documents/DocumentMethods.md#insert)
|
||||
* [collection.update(selector, data)](../../DataModeling/Documents/DocumentMethods.md#update)
|
||||
* [collection.updateByExample(example, data)](../../DataModeling/Documents/DocumentMethods.md#update-by-example)
|
||||
|
|
|
@ -122,12 +122,12 @@ are missing from the replacement document, an `REPLACE` operation will fail.
|
|||
|
||||
!SUBSUBSECTION Graph functions
|
||||
|
||||
In version 3.0 all former graph related functions have been removed from AQL to be replaced
|
||||
by native AQL constructs.
|
||||
In version 3.0 all former graph related functions have been removed from AQL to
|
||||
be replaced by [native AQL constructs](../../AQL/Graphs/index.html).
|
||||
These constructs allow for more fine-grained filtering on several graph levels.
|
||||
Also this allows the AQL optimizer to automatically improve these queries by
|
||||
enhancing them with appropriate indexes.
|
||||
We have create recipes to upgrade from 2.8 to 3.0 when using these functions.
|
||||
We have created recipes to upgrade from 2.8 to 3.0 when using these functions.
|
||||
|
||||
The functions:
|
||||
|
||||
|
@ -161,7 +161,7 @@ are covered in [Migrating GRAPH_* Measurements from 2.8 or earlier to 3.0](https
|
|||
* TRAVERSAL
|
||||
* TRAVERSAL_TREE
|
||||
|
||||
are covered in [#Migrating anonymous graph Functions from 2.8 or earlier to 3.0](https://docs.arangodb.com/cookbook/AQL/MigratingEdgeFunctionsTo3.html)
|
||||
are covered in [Migrating anonymous graph functions from 2.8 or earlier to 3.0](https://docs.arangodb.com/3/cookbook/AQL/MigratingEdgeFunctionsTo3.html)
|
||||
|
||||
!SUBSECTION Typecasting functions
|
||||
|
||||
|
|
|
@ -168,7 +168,7 @@
|
|||
* GITHUB: https://github.com/jshttp/http-errors
|
||||
* License: [MIT License](https://github.com/jshttp/http-errors/blob/master/LICENSE)
|
||||
|
||||
#### inflect
|
||||
#### i (inflect)
|
||||
|
||||
* GITHUB: https://github.com/pksunkara/inflect
|
||||
* License: [MIT-style License](https://github.com/pksunkara/inflect/blob/master/LICENSE)
|
||||
|
@ -220,11 +220,6 @@
|
|||
* GITHUB: https://github.com/mochajs/mocha
|
||||
* License: [MIT License](https://github.com/mochajs/mocha/blob/master/LICENSE)
|
||||
|
||||
#### node-semver
|
||||
|
||||
* GITHUB: https://github.com/npm/node-semver
|
||||
* License: [ISC License](https://github.com/npm/node-semver/blob/master/LICENSE)
|
||||
|
||||
#### qs
|
||||
|
||||
* GITHUB: https://github.com/hapijs/qs
|
||||
|
@ -252,6 +247,11 @@
|
|||
* GITHUB: https://github.com/jshttp/statuses
|
||||
* License: [MIT License](https://github.com/jshttp/statuses/blob/master/LICENSE)
|
||||
|
||||
#### timezone
|
||||
|
||||
* GITHUB: https://github.com/bigeasy/timezone
|
||||
* License: [MIT License](https://github.com/bigeasy/timezone/blob/master/LICENSE)
|
||||
|
||||
#### type-is
|
||||
|
||||
* GITHUB: https://github.com/jshttp/type-is
|
||||
|
|
|
@ -248,22 +248,29 @@ bool Agent::recvAppendEntriesRPC(term_t term,
|
|||
return false;
|
||||
}
|
||||
|
||||
_state.removeConflicts(queries);
|
||||
|
||||
if (queries->slice().length()) {
|
||||
LOG_TOPIC(DEBUG, Logger::AGENCY) << "Appending "
|
||||
<< queries->slice().length()
|
||||
<< " entries to state machine.";
|
||||
/* bool success = */
|
||||
_state.log(queries, term, prevIndex, prevTerm);
|
||||
}
|
||||
size_t nqs = queries->slice().length();
|
||||
|
||||
if (nqs > 0) {
|
||||
|
||||
size_t ndups = _state.removeConflicts(queries);
|
||||
|
||||
if (nqs > ndups) {
|
||||
|
||||
LOG_TOPIC(DEBUG, Logger::AGENCY)
|
||||
<< "Appending " << nqs - ndups << " entries to state machine." <<
|
||||
nqs << " " << ndups;
|
||||
|
||||
_state.log(queries, ndups);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
_spearhead.apply(_state.slices(_lastCommitIndex + 1, leaderCommitIndex));
|
||||
_readDB.apply(_state.slices(_lastCommitIndex + 1, leaderCommitIndex));
|
||||
_lastCommitIndex = leaderCommitIndex;
|
||||
|
||||
|
||||
if (_lastCommitIndex >= _nextCompationAfter) {
|
||||
|
||||
_state.compact(_lastCommitIndex);
|
||||
_nextCompationAfter += _config.compactionStepSize;
|
||||
}
|
||||
|
@ -329,7 +336,8 @@ priv_rpc_ret_t Agent::sendAppendEntriesRPC(
|
|||
"1", 1, _config.endpoints[follower_id],
|
||||
arangodb::GeneralRequest::RequestType::POST, path.str(),
|
||||
std::make_shared<std::string>(builder.toJson()), headerFields,
|
||||
std::make_shared<AgentCallback>(this, follower_id, highest), 1, true);
|
||||
std::make_shared<AgentCallback>(this, follower_id, highest),
|
||||
0.5*_config.minPing, true, 0.75*_config.minPing);
|
||||
|
||||
_lastSent.at(follower_id) = std::chrono::system_clock::now();
|
||||
_lastHighest.at(follower_id) = highest;
|
||||
|
@ -444,7 +452,7 @@ void Agent::run() {
|
|||
while (!this->isStopping() && size() > 1) {
|
||||
|
||||
if (leading()) { // Only if leading
|
||||
_appendCV.wait(10000);
|
||||
_appendCV.wait(1000);
|
||||
} else {
|
||||
_appendCV.wait(); // Else wait for our moment in the sun
|
||||
}
|
||||
|
|
|
@ -41,6 +41,10 @@ bool AgentCallback::operator()(arangodb::ClusterCommResult* res) {
|
|||
if (_agent) {
|
||||
_agent->reportIn(_slaveID, _last);
|
||||
}
|
||||
} else {
|
||||
LOG_TOPIC(DEBUG, Logger::AGENCY)
|
||||
<< "comm_status(" << res->status << "), last("
|
||||
<< _last << "), follower(" << _slaveID << ")";
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -378,7 +378,7 @@ void Constituent::callElection() {
|
|||
operationIDs[i] = arangodb::ClusterComm::instance()->asyncRequest(
|
||||
"1", 1, config().endpoints[i], GeneralRequest::RequestType::GET,
|
||||
path.str(), std::make_shared<std::string>(body), headerFields,
|
||||
nullptr, config().minPing, true);
|
||||
nullptr, 0.75*config().minPing, true, 0.5*config().minPing);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -138,80 +138,118 @@ std::vector<arangodb::consensus::index_t> State::log(
|
|||
|
||||
/// Log transactions (follower)
|
||||
arangodb::consensus::index_t State::log(
|
||||
query_t const& transactions, term_t term,
|
||||
arangodb::consensus::index_t prevLogIndex, term_t prevLogTerm) {
|
||||
query_t const& transactions, size_t ndups) {
|
||||
|
||||
if (transactions->slice().type() != VPackValueType::Array) {
|
||||
return false;
|
||||
}
|
||||
VPackSlice slices = transactions->slice();
|
||||
|
||||
MUTEX_LOCKER(mutexLocker, _logLock); // log entries must stay in order
|
||||
TRI_ASSERT(slices.isArray());
|
||||
|
||||
size_t nqs = slices.length();
|
||||
|
||||
TRI_ASSERT(nqs > ndups);
|
||||
|
||||
MUTEX_LOCKER(mutexLocker, _logLock); // log entries must stay in order
|
||||
|
||||
for (size_t i = ndups; i < nqs; ++i) {
|
||||
|
||||
VPackSlice slice = slices[i];
|
||||
|
||||
arangodb::consensus::index_t highest = (_log.empty()) ? 0 : _log.back().index;
|
||||
for (auto const& i : VPackArrayIterator(transactions->slice())) {
|
||||
try {
|
||||
auto idx = i.get("index").getUInt();
|
||||
auto trm = i.get("term").getUInt();
|
||||
if (highest < idx) {
|
||||
highest = idx;
|
||||
}
|
||||
std::shared_ptr<Buffer<uint8_t>> buf = std::make_shared<Buffer<uint8_t>>();
|
||||
buf->append((char const*)i.get("query").begin(),i.get("query").byteSize());
|
||||
auto idx = slice.get("index").getUInt();
|
||||
auto trm = slice.get("term").getUInt();
|
||||
auto buf = std::make_shared<Buffer<uint8_t>>();
|
||||
|
||||
buf->append(
|
||||
(char const*)slice.get("query").begin(), slice.get("query").byteSize());
|
||||
// to RAM
|
||||
_log.push_back(log_t(idx, trm, buf));
|
||||
persist(idx, trm, i.get("query")); // to disk
|
||||
// to disk
|
||||
persist(idx, trm, slice.get("query"));
|
||||
} catch (std::exception const& e) {
|
||||
LOG_TOPIC(ERR, Logger::AGENCY) << e.what() << " " << __FILE__ << __LINE__;
|
||||
}
|
||||
}
|
||||
|
||||
return highest;
|
||||
|
||||
TRI_ASSERT(!_log.empty());
|
||||
return _log.back().index;
|
||||
|
||||
}
|
||||
|
||||
|
||||
void State::removeConflicts (query_t const& transactions) {
|
||||
size_t State::removeConflicts (query_t const& transactions) {
|
||||
|
||||
VPackSlice slice = transactions->slice();
|
||||
TRI_ASSERT(slice.isArray());
|
||||
VPackSlice slices = transactions->slice();
|
||||
TRI_ASSERT(slices.isArray());
|
||||
size_t ndups = 0;
|
||||
|
||||
if (slice.length() > 0) {
|
||||
if (slices.length() > 0) {
|
||||
|
||||
auto bindVars = std::make_shared<VPackBuilder>();
|
||||
bindVars->openObject();
|
||||
bindVars->close();
|
||||
|
||||
try {
|
||||
auto idx = slice[0].get("index").getUInt();
|
||||
if (idx-_cur < _log.size()) {
|
||||
LOG_TOPIC(DEBUG, Logger::AGENCY)
|
||||
<< "Removing " << _log.size()-idx+_cur
|
||||
<< " entries from log starting with " << idx << "=" << _log.at(idx-_cur).index;
|
||||
|
||||
auto idx = slices[0].get("index").getUInt();
|
||||
auto pos = idx-_cur;
|
||||
|
||||
if (pos < _log.size()) {
|
||||
|
||||
for (auto const& slice : VPackArrayIterator(slices)) {
|
||||
|
||||
// persisted logs
|
||||
std::stringstream aql;
|
||||
aql << "FOR l IN log FILTER l._key >= '" << stringify(idx)
|
||||
<< "' REMOVE l IN log";
|
||||
arangodb::aql::Query
|
||||
query(false, _vocbase, aql.str().c_str(), aql.str().size(), bindVars,
|
||||
nullptr, arangodb::aql::PART_MAIN);
|
||||
auto queryResult = query.execute(_queryRegistry);
|
||||
if (queryResult.code != TRI_ERROR_NO_ERROR) {
|
||||
THROW_ARANGO_EXCEPTION_MESSAGE(queryResult.code, queryResult.details);
|
||||
auto trm = slice.get("term").getUInt();
|
||||
idx = slice.get("index").getUInt();
|
||||
pos = idx-_cur;
|
||||
|
||||
if (pos < _log.size()) {
|
||||
|
||||
if (idx == _log.at(pos).index && trm != _log.at(pos).term) {
|
||||
|
||||
LOG_TOPIC(DEBUG, Logger::AGENCY)
|
||||
<< "Removing " << _log.size()-pos
|
||||
<< " entries from log starting with " << idx << "=="
|
||||
<< _log.at(pos).index << " and " << trm << "=" <<_log.at(pos).term;
|
||||
|
||||
// persisted logs
|
||||
std::stringstream aql;
|
||||
aql << "FOR l IN log FILTER l._key >= '" << stringify(idx)
|
||||
<< "' REMOVE l IN log";
|
||||
|
||||
arangodb::aql::Query
|
||||
query(false, _vocbase, aql.str().c_str(), aql.str().size(),
|
||||
bindVars, nullptr, arangodb::aql::PART_MAIN);
|
||||
|
||||
auto queryResult = query.execute(_queryRegistry);
|
||||
|
||||
if (queryResult.code != TRI_ERROR_NO_ERROR) {
|
||||
THROW_ARANGO_EXCEPTION_MESSAGE(
|
||||
queryResult.code, queryResult.details);
|
||||
}
|
||||
|
||||
queryResult.result->slice();
|
||||
|
||||
// volatile logs
|
||||
{
|
||||
MUTEX_LOCKER(mutexLocker, _logLock);
|
||||
_log.erase(_log.begin()+pos, _log.end());
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
} else {
|
||||
|
||||
++ndups;
|
||||
}
|
||||
}
|
||||
}
|
||||
queryResult.result->slice();
|
||||
|
||||
// volatile logs
|
||||
{
|
||||
MUTEX_LOCKER(mutexLocker, _logLock);
|
||||
_log.erase(_log.begin()+idx-_cur-1, _log.end());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
} catch (std::exception const& e) {
|
||||
LOG_TOPIC(ERR, Logger::AGENCY) << e.what() << " " << __FILE__ << __LINE__;
|
||||
LOG_TOPIC(DEBUG, Logger::AGENCY) << e.what() << " " << __FILE__ << __LINE__;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
return ndups;
|
||||
|
||||
}
|
||||
|
||||
|
@ -251,7 +289,7 @@ std::vector<VPackSlice> State::slices(
|
|||
std::vector<VPackSlice> slices;
|
||||
MUTEX_LOCKER(mutexLocker, _logLock);
|
||||
|
||||
if (_log.empty()) {
|
||||
if (_log.empty()) {
|
||||
return slices;
|
||||
}
|
||||
|
||||
|
|
|
@ -64,8 +64,7 @@ class State {
|
|||
std::vector<bool> const& indices, term_t term);
|
||||
|
||||
/// @brief Log entries (followers)
|
||||
index_t log(query_t const& queries, term_t term, index_t prevLogIndex,
|
||||
term_t prevLogTerm);
|
||||
arangodb::consensus::index_t log(query_t const& queries, size_t ndups = 0);
|
||||
|
||||
/// @brief Find entry at index with term
|
||||
bool find(index_t index, term_t term);
|
||||
|
@ -103,7 +102,7 @@ class State {
|
|||
|
||||
bool compact(arangodb::consensus::index_t cind);
|
||||
|
||||
void removeConflicts(query_t const&);
|
||||
size_t removeConflicts(query_t const&);
|
||||
|
||||
|
||||
private:
|
||||
|
|
|
@ -424,7 +424,7 @@ void Supervision::shrinkCluster () {
|
|||
targetNumDBServers = _snapshot("/Target/NumberOfDBServers").getUInt();
|
||||
} catch (std::exception const& e) {
|
||||
LOG_TOPIC(DEBUG, Logger::AGENCY)
|
||||
<< "Cannot retrieve targeted number of db servers from agency" << e.what();
|
||||
<< "Targeted number of DB servers not set yet: " << e.what();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -1075,18 +1075,9 @@ std::string DistributeBlock::createKey() const {
|
|||
static bool throwExceptionAfterBadSyncRequest(ClusterCommResult* res,
|
||||
bool isShutdown) {
|
||||
ENTER_BLOCK
|
||||
if (res->status == CL_COMM_TIMEOUT) {
|
||||
std::string errorMessage = res->stringifyErrorMessage();
|
||||
|
||||
// No reply, we give up:
|
||||
THROW_ARANGO_EXCEPTION_MESSAGE(TRI_ERROR_CLUSTER_TIMEOUT, errorMessage);
|
||||
}
|
||||
|
||||
if (res->status == CL_COMM_BACKEND_UNAVAILABLE) {
|
||||
// there is no result
|
||||
std::string errorMessage = res->stringifyErrorMessage();
|
||||
THROW_ARANGO_EXCEPTION_MESSAGE(TRI_ERROR_CLUSTER_CONNECTION_LOST,
|
||||
errorMessage);
|
||||
if (res->status == CL_COMM_TIMEOUT ||
|
||||
res->status == CL_COMM_BACKEND_UNAVAILABLE) {
|
||||
THROW_ARANGO_EXCEPTION_MESSAGE(res->getErrorCode(), res->stringifyErrorMessage());
|
||||
}
|
||||
|
||||
if (res->status == CL_COMM_ERROR) {
|
||||
|
|
|
@ -526,6 +526,7 @@ struct CoordinatorInstanciator : public WalkerWorker<ExecutionNode> {
|
|||
std::string error;
|
||||
int count = 0;
|
||||
int nrok = 0;
|
||||
int errorCode = TRI_ERROR_NO_ERROR;
|
||||
for (count = (int)shardIds->size(); count > 0; count--) {
|
||||
auto res = cc->wait("", coordTransactionID, 0, "", 30.0);
|
||||
|
||||
|
@ -538,7 +539,7 @@ struct CoordinatorInstanciator : public WalkerWorker<ExecutionNode> {
|
|||
|
||||
VPackSlice tmp = res.answer->payload().get("queryId");
|
||||
std::string queryId;
|
||||
if(tmp.isString()){
|
||||
if (tmp.isString()) {
|
||||
queryId = tmp.copyString();
|
||||
}
|
||||
|
||||
|
@ -560,13 +561,19 @@ struct CoordinatorInstanciator : public WalkerWorker<ExecutionNode> {
|
|||
}
|
||||
} else {
|
||||
error += res.stringifyErrorMessage();
|
||||
if (errorCode == TRI_ERROR_NO_ERROR) {
|
||||
errorCode = res.getErrorCode();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// std::cout << "GOT ALL RESPONSES FROM DB SERVERS: " << nrok << "\n";
|
||||
|
||||
if (nrok != (int)shardIds->size()) {
|
||||
THROW_ARANGO_EXCEPTION_MESSAGE(TRI_ERROR_INTERNAL, error);
|
||||
if (errorCode == TRI_ERROR_NO_ERROR) {
|
||||
errorCode = TRI_ERROR_INTERNAL; // must have an error
|
||||
}
|
||||
THROW_ARANGO_EXCEPTION_MESSAGE(errorCode, error);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1651,13 +1651,11 @@ AgencyCommResult AgencyComm::sendWithFailover(
|
|||
std::string endpoint;
|
||||
|
||||
// transform location into an endpoint
|
||||
int offset;
|
||||
int offset { 11 };
|
||||
if (result.location().substr(0, 7) == "http://") {
|
||||
endpoint = "http+tcp://" + result.location().substr(7);
|
||||
offset = 11;
|
||||
} else if (result.location().substr(0, 8) == "https://") {
|
||||
endpoint = "ssl://" + result.location().substr(8);
|
||||
offset = 6;
|
||||
endpoint = "http+ssl://" + result.location().substr(8);
|
||||
} else {
|
||||
// invalid endpoint, return an error
|
||||
break;
|
||||
|
|
|
@ -148,6 +148,31 @@ std::string ClusterCommResult::stringifyErrorMessage() const {
|
|||
return result;
|
||||
}
|
||||
|
||||
/// @brief return an error code for a result
|
||||
int ClusterCommResult::getErrorCode() const {
|
||||
switch (status) {
|
||||
case CL_COMM_SUBMITTED:
|
||||
case CL_COMM_SENDING:
|
||||
case CL_COMM_SENT:
|
||||
case CL_COMM_RECEIVED:
|
||||
return TRI_ERROR_NO_ERROR;
|
||||
|
||||
case CL_COMM_TIMEOUT:
|
||||
return TRI_ERROR_CLUSTER_TIMEOUT;
|
||||
|
||||
case CL_COMM_ERROR:
|
||||
return TRI_ERROR_INTERNAL;
|
||||
|
||||
case CL_COMM_DROPPED:
|
||||
return TRI_ERROR_INTERNAL;
|
||||
|
||||
case CL_COMM_BACKEND_UNAVAILABLE:
|
||||
return TRI_ERROR_CLUSTER_BACKEND_UNAVAILABLE;
|
||||
}
|
||||
|
||||
return TRI_ERROR_INTERNAL;
|
||||
}
|
||||
|
||||
/// @brief stringify a cluster comm status
|
||||
char const* ClusterCommResult::stringifyStatus(ClusterCommOpStatus status) {
|
||||
switch (status) {
|
||||
|
|
|
@ -216,6 +216,9 @@ struct ClusterCommResult {
|
|||
/// @brief stringify the internal error state
|
||||
std::string stringifyErrorMessage() const;
|
||||
|
||||
/// @brief return an error code for a result
|
||||
int getErrorCode() const;
|
||||
|
||||
/// @brief stringify a cluster comm status
|
||||
static char const* stringifyStatus(ClusterCommOpStatus status);
|
||||
};
|
||||
|
|
|
@ -927,7 +927,6 @@ void V8DealerFeature::initializeContext(size_t i) {
|
|||
|
||||
TRI_InitV8UserStructures(isolate, localContext);
|
||||
TRI_InitV8Buffer(isolate, localContext);
|
||||
TRI_InitV8Conversions(localContext);
|
||||
TRI_InitV8Utils(isolate, localContext, _startupPath, modulesPath);
|
||||
TRI_InitV8DebugUtils(isolate, localContext, _startupPath, modulesPath);
|
||||
TRI_InitV8Shell(isolate, localContext);
|
||||
|
|
|
@ -36,6 +36,439 @@
|
|||
|
||||
using namespace arangodb;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief converts a TRI_json_t into a V8 object
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
v8::Handle<v8::Value> TRI_ObjectJson(v8::Isolate* isolate, TRI_json_t const*);
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief returns the keys of a TRI_json_t* object into a V8 array
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
v8::Handle<v8::Value> TRI_KeysJson(v8::Isolate* isolate, TRI_json_t const*);
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief returns the values of a TRI_json_t* object into a V8 array
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
v8::Handle<v8::Value> TRI_ValuesJson(v8::Isolate* isolate, TRI_json_t const*);
|
||||
|
||||
/// @brief converts a TRI_json_t NULL into a V8 object
|
||||
static inline v8::Handle<v8::Value> ObjectJsonNull(v8::Isolate* isolate,
|
||||
TRI_json_t const* json) {
|
||||
return v8::Null(isolate);
|
||||
}
|
||||
|
||||
/// @brief converts a TRI_json_t BOOLEAN into a V8 object
|
||||
static inline v8::Handle<v8::Value> ObjectJsonBoolean(v8::Isolate* isolate,
|
||||
TRI_json_t const* json) {
|
||||
return v8::Boolean::New(isolate, json->_value._boolean);
|
||||
}
|
||||
|
||||
/// @brief converts a TRI_json_t NUMBER into a V8 object
|
||||
static inline v8::Handle<v8::Value> ObjectJsonNumber(v8::Isolate* isolate,
|
||||
TRI_json_t const* json) {
|
||||
return v8::Number::New(isolate, json->_value._number);
|
||||
}
|
||||
|
||||
/// @brief converts a TRI_json_t STRING into a V8 object
|
||||
static inline v8::Handle<v8::Value> ObjectJsonString(v8::Isolate* isolate,
|
||||
TRI_json_t const* json) {
|
||||
return TRI_V8_PAIR_STRING(json->_value._string.data,
|
||||
json->_value._string.length - 1);
|
||||
}
|
||||
|
||||
/// @brief converts a TRI_json_t OBJECT into a V8 object
|
||||
static v8::Handle<v8::Value> ObjectJsonObject(v8::Isolate* isolate,
|
||||
TRI_json_t const* json) {
|
||||
v8::Handle<v8::Object> object = v8::Object::New(isolate);
|
||||
|
||||
if (object.IsEmpty()) {
|
||||
return v8::Undefined(isolate);
|
||||
}
|
||||
|
||||
size_t const n = TRI_LengthVector(&json->_value._objects);
|
||||
|
||||
for (size_t i = 0; i < n; i += 2) {
|
||||
TRI_json_t const* key = static_cast<TRI_json_t const*>(
|
||||
TRI_AddressVector(&json->_value._objects, i));
|
||||
|
||||
if (!TRI_IsStringJson(key)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
TRI_json_t const* element = static_cast<TRI_json_t const*>(
|
||||
TRI_AddressVector(&json->_value._objects, i + 1));
|
||||
|
||||
auto val = TRI_ObjectJson(isolate, element);
|
||||
if (!val.IsEmpty()) {
|
||||
auto k = TRI_V8_PAIR_STRING(key->_value._string.data,
|
||||
key->_value._string.length - 1);
|
||||
if (!k.IsEmpty()) {
|
||||
object->ForceSet(TRI_V8_PAIR_STRING(key->_value._string.data,
|
||||
key->_value._string.length - 1),
|
||||
val);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return object;
|
||||
}
|
||||
|
||||
/// @brief converts a TRI_json_t ARRAY into a V8 object
|
||||
static v8::Handle<v8::Value> ObjectJsonArray(v8::Isolate* isolate,
|
||||
TRI_json_t const* json) {
|
||||
uint32_t const n = static_cast<uint32_t>(TRI_LengthArrayJson(json));
|
||||
|
||||
v8::Handle<v8::Array> object = v8::Array::New(isolate, static_cast<int>(n));
|
||||
|
||||
if (object.IsEmpty()) {
|
||||
return v8::Undefined(isolate);
|
||||
}
|
||||
|
||||
uint32_t j = 0;
|
||||
for (uint32_t i = 0; i < n; ++i) {
|
||||
TRI_json_t const* element = static_cast<TRI_json_t const*>(
|
||||
TRI_AddressVector(&json->_value._objects, i));
|
||||
v8::Handle<v8::Value> val = TRI_ObjectJson(isolate, element);
|
||||
|
||||
if (!val.IsEmpty()) {
|
||||
object->Set(j++, val);
|
||||
}
|
||||
}
|
||||
|
||||
return object;
|
||||
}
|
||||
|
||||
/// @brief extracts keys or values from a TRI_json_t* object
|
||||
static v8::Handle<v8::Value> ExtractObject(v8::Isolate* isolate,
|
||||
TRI_json_t const* json,
|
||||
size_t offset) {
|
||||
v8::EscapableHandleScope scope(isolate);
|
||||
|
||||
if (json == nullptr || json->_type != TRI_JSON_OBJECT) {
|
||||
return scope.Escape<v8::Value>(v8::Undefined(isolate));
|
||||
}
|
||||
|
||||
size_t const n = TRI_LengthVector(&json->_value._objects);
|
||||
|
||||
v8::Handle<v8::Array> result =
|
||||
v8::Array::New(isolate, static_cast<int>(n / 2));
|
||||
uint32_t count = 0;
|
||||
|
||||
for (size_t i = offset; i < n; i += 2) {
|
||||
TRI_json_t const* value =
|
||||
static_cast<TRI_json_t const*>(TRI_AtVector(&json->_value._objects, i));
|
||||
|
||||
if (value != nullptr) {
|
||||
result->Set(count++, TRI_ObjectJson(isolate, value));
|
||||
}
|
||||
}
|
||||
|
||||
return scope.Escape<v8::Value>(result);
|
||||
}
|
||||
|
||||
/// @brief returns the keys of a TRI_json_t* object into a V8 array
|
||||
v8::Handle<v8::Value> TRI_KeysJson(v8::Isolate* isolate,
|
||||
TRI_json_t const* json) {
|
||||
return ExtractObject(isolate, json, 0);
|
||||
}
|
||||
|
||||
/// @brief returns the values of a TRI_json_t* object into a V8 array
|
||||
v8::Handle<v8::Value> TRI_ValuesJson(v8::Isolate* isolate,
|
||||
TRI_json_t const* json) {
|
||||
return ExtractObject(isolate, json, 1);
|
||||
}
|
||||
|
||||
/// @brief converts a TRI_json_t into a V8 object
|
||||
v8::Handle<v8::Value> TRI_ObjectJson(v8::Isolate* isolate,
|
||||
TRI_json_t const* json) {
|
||||
if (json == nullptr) {
|
||||
return v8::Undefined(isolate);
|
||||
}
|
||||
|
||||
switch (json->_type) {
|
||||
case TRI_JSON_NULL:
|
||||
return ObjectJsonNull(isolate, json);
|
||||
|
||||
case TRI_JSON_BOOLEAN:
|
||||
return ObjectJsonBoolean(isolate, json);
|
||||
|
||||
case TRI_JSON_NUMBER:
|
||||
return ObjectJsonNumber(isolate, json);
|
||||
|
||||
case TRI_JSON_STRING:
|
||||
case TRI_JSON_STRING_REFERENCE:
|
||||
return ObjectJsonString(isolate, json);
|
||||
|
||||
case TRI_JSON_OBJECT:
|
||||
return ObjectJsonObject(isolate, json);
|
||||
|
||||
case TRI_JSON_ARRAY:
|
||||
return ObjectJsonArray(isolate, json);
|
||||
|
||||
case TRI_JSON_UNUSED: {
|
||||
}
|
||||
}
|
||||
|
||||
return v8::Undefined(isolate);
|
||||
}
|
||||
|
||||
/// @brief convert a V8 value to a TRI_json_t value
|
||||
static int ObjectToJson(v8::Isolate* isolate, TRI_json_t* result,
|
||||
v8::Handle<v8::Value> const parameter,
|
||||
std::set<int>& seenHashes,
|
||||
std::vector<v8::Handle<v8::Object>>& seenObjects) {
|
||||
v8::HandleScope scope(isolate);
|
||||
|
||||
if (parameter->IsNull()) {
|
||||
TRI_InitNullJson(result);
|
||||
return TRI_ERROR_NO_ERROR;
|
||||
}
|
||||
|
||||
if (parameter->IsBoolean()) {
|
||||
v8::Handle<v8::Boolean> booleanParameter = parameter->ToBoolean();
|
||||
TRI_InitBooleanJson(result, booleanParameter->Value());
|
||||
return TRI_ERROR_NO_ERROR;
|
||||
}
|
||||
|
||||
if (parameter->IsNumber()) {
|
||||
v8::Handle<v8::Number> numberParameter = parameter->ToNumber();
|
||||
TRI_InitNumberJson(result, numberParameter->Value());
|
||||
return TRI_ERROR_NO_ERROR;
|
||||
}
|
||||
|
||||
if (parameter->IsString()) {
|
||||
v8::Handle<v8::String> stringParameter = parameter->ToString();
|
||||
TRI_Utf8ValueNFC str(TRI_UNKNOWN_MEM_ZONE, stringParameter);
|
||||
|
||||
if (*str == nullptr) {
|
||||
TRI_InitNullJson(result);
|
||||
return TRI_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
// this passes ownership for the utf8 string to the JSON object
|
||||
TRI_InitStringJson(result, str.steal(), str.length());
|
||||
return TRI_ERROR_NO_ERROR;
|
||||
}
|
||||
|
||||
if (parameter->IsArray()) {
|
||||
v8::Handle<v8::Array> array = v8::Handle<v8::Array>::Cast(parameter);
|
||||
uint32_t const n = array->Length();
|
||||
|
||||
// allocate the result array in one go
|
||||
TRI_InitArrayJson(TRI_UNKNOWN_MEM_ZONE, result, static_cast<size_t>(n));
|
||||
int res =
|
||||
TRI_ReserveVector(&result->_value._objects, static_cast<size_t>(n));
|
||||
|
||||
if (res != TRI_ERROR_NO_ERROR) {
|
||||
// result array could not be allocated
|
||||
TRI_InitNullJson(result);
|
||||
return TRI_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
for (uint32_t i = 0; i < n; ++i) {
|
||||
// get address of next element
|
||||
auto next =
|
||||
static_cast<TRI_json_t*>(TRI_NextVector(&result->_value._objects));
|
||||
// the reserve call above made sure we could not have run out of memory
|
||||
TRI_ASSERT(next != nullptr);
|
||||
|
||||
res = ObjectToJson(isolate, next, array->Get(i), seenHashes, seenObjects);
|
||||
|
||||
if (res != TRI_ERROR_NO_ERROR) {
|
||||
// to mimic behavior of previous ArangoDB versions, we need to silently
|
||||
// ignore this error
|
||||
// now return the element to the vector
|
||||
TRI_ReturnVector(&result->_value._objects);
|
||||
|
||||
// a better solution would be:
|
||||
// initialize the element at position, otherwise later cleanups may
|
||||
// peek into uninitialized memory
|
||||
// TRI_InitNullJson(next);
|
||||
// return res;
|
||||
}
|
||||
}
|
||||
|
||||
return TRI_ERROR_NO_ERROR;
|
||||
}
|
||||
|
||||
if (parameter->IsObject()) {
|
||||
if (parameter->IsBooleanObject()) {
|
||||
TRI_InitBooleanJson(result, v8::Handle<v8::BooleanObject>::Cast(parameter)
|
||||
->BooleanValue());
|
||||
return TRI_ERROR_NO_ERROR;
|
||||
}
|
||||
|
||||
if (parameter->IsNumberObject()) {
|
||||
TRI_InitNumberJson(
|
||||
result, v8::Handle<v8::NumberObject>::Cast(parameter)->NumberValue());
|
||||
return TRI_ERROR_NO_ERROR;
|
||||
}
|
||||
|
||||
if (parameter->IsStringObject()) {
|
||||
v8::Handle<v8::String> stringParameter(parameter->ToString());
|
||||
TRI_Utf8ValueNFC str(TRI_UNKNOWN_MEM_ZONE, stringParameter);
|
||||
|
||||
if (*str == nullptr) {
|
||||
TRI_InitNullJson(result);
|
||||
return TRI_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
// this passes ownership for the utf8 string to the JSON object
|
||||
TRI_InitStringJson(result, str.steal(), str.length());
|
||||
return TRI_ERROR_NO_ERROR;
|
||||
}
|
||||
|
||||
if (parameter->IsRegExp() || parameter->IsFunction() ||
|
||||
parameter->IsExternal()) {
|
||||
TRI_InitNullJson(result);
|
||||
return TRI_ERROR_BAD_PARAMETER;
|
||||
}
|
||||
|
||||
v8::Handle<v8::Object> o = parameter->ToObject();
|
||||
|
||||
// first check if the object has a "toJSON" function
|
||||
v8::Handle<v8::String> toJsonString = TRI_V8_PAIR_STRING("toJSON", 6);
|
||||
if (o->Has(toJsonString)) {
|
||||
// call it if yes
|
||||
v8::Handle<v8::Value> func = o->Get(toJsonString);
|
||||
if (func->IsFunction()) {
|
||||
v8::Handle<v8::Function> toJson = v8::Handle<v8::Function>::Cast(func);
|
||||
|
||||
v8::Handle<v8::Value> args;
|
||||
v8::Handle<v8::Value> converted = toJson->Call(o, 0, &args);
|
||||
|
||||
if (!converted.IsEmpty()) {
|
||||
// return whatever toJSON returned
|
||||
TRI_Utf8ValueNFC str(TRI_UNKNOWN_MEM_ZONE, converted->ToString());
|
||||
|
||||
if (*str == nullptr) {
|
||||
TRI_InitNullJson(result);
|
||||
return TRI_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
// this passes ownership for the utf8 string to the JSON object
|
||||
TRI_InitStringJson(result, str.steal(), str.length());
|
||||
return TRI_ERROR_NO_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
// fall-through intentional
|
||||
}
|
||||
|
||||
int hash = o->GetIdentityHash();
|
||||
|
||||
if (seenHashes.find(hash) != seenHashes.end()) {
|
||||
// LOG(TRACE) << "found hash " << hash;
|
||||
|
||||
for (auto it : seenObjects) {
|
||||
if (parameter->StrictEquals(it)) {
|
||||
// object is recursive
|
||||
TRI_InitNullJson(result);
|
||||
return TRI_ERROR_BAD_PARAMETER;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
seenHashes.emplace(hash);
|
||||
}
|
||||
|
||||
seenObjects.emplace_back(o);
|
||||
|
||||
v8::Handle<v8::Array> names = o->GetOwnPropertyNames();
|
||||
uint32_t const n = names->Length();
|
||||
|
||||
// allocate the result object buffer in one go
|
||||
TRI_InitObjectJson(TRI_UNKNOWN_MEM_ZONE, result, static_cast<size_t>(n));
|
||||
int res = TRI_ReserveVector(&result->_value._objects,
|
||||
static_cast<size_t>(n * 2)); // key + value
|
||||
|
||||
if (res != TRI_ERROR_NO_ERROR) {
|
||||
// result object buffer could not be allocated
|
||||
TRI_InitNullJson(result);
|
||||
return TRI_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
for (uint32_t i = 0; i < n; ++i) {
|
||||
// process attribute name
|
||||
v8::Handle<v8::Value> key = names->Get(i);
|
||||
TRI_Utf8ValueNFC str(TRI_UNKNOWN_MEM_ZONE, key);
|
||||
|
||||
if (*str == nullptr) {
|
||||
return TRI_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
TRI_json_t* next =
|
||||
static_cast<TRI_json_t*>(TRI_NextVector(&result->_value._objects));
|
||||
// the reserve call above made sure we could not have run out of memory
|
||||
TRI_ASSERT(next != nullptr);
|
||||
|
||||
// this passes ownership for the utf8 string to the JSON object
|
||||
char* attributeName = str.steal();
|
||||
TRI_InitStringJson(next, attributeName, str.length());
|
||||
|
||||
// process attribute value
|
||||
next = static_cast<TRI_json_t*>(TRI_NextVector(&result->_value._objects));
|
||||
// the reserve call above made sure we could not have run out of memory
|
||||
TRI_ASSERT(next != nullptr);
|
||||
|
||||
res = ObjectToJson(isolate, next, o->Get(key), seenHashes, seenObjects);
|
||||
|
||||
if (res != TRI_ERROR_NO_ERROR) {
|
||||
// to mimic behavior of previous ArangoDB versions, we need to silently
|
||||
// ignore this error
|
||||
// now free the attributeName string and return the elements to the
|
||||
// vector
|
||||
TRI_FreeString(TRI_UNKNOWN_MEM_ZONE, attributeName);
|
||||
TRI_ReturnVector(&result->_value._objects);
|
||||
TRI_ReturnVector(&result->_value._objects);
|
||||
|
||||
// a better solution would be:
|
||||
// initialize the element at position, otherwise later cleanups may
|
||||
// peek into uninitialized memory
|
||||
// TRI_InitNullJson(next);
|
||||
// return res;
|
||||
}
|
||||
}
|
||||
|
||||
seenObjects.pop_back();
|
||||
|
||||
return TRI_ERROR_NO_ERROR;
|
||||
}
|
||||
|
||||
TRI_InitNullJson(result);
|
||||
return TRI_ERROR_BAD_PARAMETER;
|
||||
}
|
||||
|
||||
/// @brief convert a V8 value to a json_t value
|
||||
TRI_json_t* TRI_ObjectToJson(v8::Isolate* isolate,
|
||||
v8::Handle<v8::Value> const parameter) {
|
||||
TRI_json_t* json = TRI_CreateNullJson(TRI_UNKNOWN_MEM_ZONE);
|
||||
|
||||
if (json == nullptr) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::set<int> seenHashes;
|
||||
std::vector<v8::Handle<v8::Object>> seenObjects;
|
||||
int res = ObjectToJson(isolate, json, parameter, seenHashes, seenObjects);
|
||||
|
||||
if (res != TRI_ERROR_NO_ERROR) {
|
||||
// some processing error occurred
|
||||
TRI_FreeJson(TRI_UNKNOWN_MEM_ZONE, json);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return json;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief convert a V8 value to a json_t value
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
TRI_json_t* TRI_ObjectToJson(v8::Isolate*, v8::Handle<v8::Value> const);
|
||||
|
||||
struct KeySpaceElement {
|
||||
KeySpaceElement() = delete;
|
||||
|
||||
|
@ -829,7 +1262,7 @@ static void JS_KeyspaceCreate(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
TRI_V8_THROW_EXCEPTION_INTERNAL("cannot extract vocbase");
|
||||
}
|
||||
|
||||
std::string const&& name = TRI_ObjectToString(args[0]);
|
||||
std::string const name = TRI_ObjectToString(args[0]);
|
||||
int64_t size = 0;
|
||||
|
||||
if (args.Length() > 1) {
|
||||
|
@ -890,7 +1323,7 @@ static void JS_KeyspaceDrop(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
TRI_V8_THROW_EXCEPTION_INTERNAL("cannot extract vocbase");
|
||||
}
|
||||
|
||||
std::string const&& name = TRI_ObjectToString(args[0]);
|
||||
std::string const name = TRI_ObjectToString(args[0]);
|
||||
|
||||
auto h = &(static_cast<UserStructures*>(vocbase->_userStructures)->hashes);
|
||||
{
|
||||
|
@ -928,7 +1361,7 @@ static void JS_KeyspaceCount(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
TRI_V8_THROW_EXCEPTION_INTERNAL("cannot extract vocbase");
|
||||
}
|
||||
|
||||
std::string const&& name = TRI_ObjectToString(args[0]);
|
||||
std::string const name = TRI_ObjectToString(args[0]);
|
||||
|
||||
auto h = &(static_cast<UserStructures*>(vocbase->_userStructures)->hashes);
|
||||
uint32_t count;
|
||||
|
@ -942,7 +1375,7 @@ static void JS_KeyspaceCount(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
}
|
||||
|
||||
if (args.Length() > 1) {
|
||||
std::string const&& prefix = TRI_ObjectToString(args[1]);
|
||||
std::string const prefix = TRI_ObjectToString(args[1]);
|
||||
count = hash->keyspaceCount(prefix);
|
||||
} else {
|
||||
count = hash->keyspaceCount();
|
||||
|
@ -971,7 +1404,7 @@ static void JS_KeyspaceExists(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
TRI_V8_THROW_EXCEPTION_INTERNAL("cannot extract vocbase");
|
||||
}
|
||||
|
||||
std::string const&& name = TRI_ObjectToString(args[0]);
|
||||
std::string const name = TRI_ObjectToString(args[0]);
|
||||
|
||||
auto h = &(static_cast<UserStructures*>(vocbase->_userStructures)->hashes);
|
||||
|
||||
|
@ -1003,7 +1436,7 @@ static void JS_KeyspaceKeys(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
TRI_V8_THROW_EXCEPTION_INTERNAL("cannot extract vocbase");
|
||||
}
|
||||
|
||||
std::string const&& name = TRI_ObjectToString(args[0]);
|
||||
std::string const name = TRI_ObjectToString(args[0]);
|
||||
|
||||
auto h = &(static_cast<UserStructures*>(vocbase->_userStructures)->hashes);
|
||||
READ_LOCKER(readLocker, h->lock);
|
||||
|
@ -1015,7 +1448,7 @@ static void JS_KeyspaceKeys(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
}
|
||||
|
||||
if (args.Length() > 1) {
|
||||
std::string const&& prefix = TRI_ObjectToString(args[1]);
|
||||
std::string const prefix = TRI_ObjectToString(args[1]);
|
||||
TRI_V8_RETURN(hash->keyspaceKeys(isolate, prefix));
|
||||
}
|
||||
|
||||
|
@ -1041,7 +1474,7 @@ static void JS_KeyspaceGet(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
TRI_V8_THROW_EXCEPTION_INTERNAL("cannot extract vocbase");
|
||||
}
|
||||
|
||||
std::string const&& name = TRI_ObjectToString(args[0]);
|
||||
std::string const name = TRI_ObjectToString(args[0]);
|
||||
|
||||
auto h = &(static_cast<UserStructures*>(vocbase->_userStructures)->hashes);
|
||||
READ_LOCKER(readLocker, h->lock);
|
||||
|
@ -1053,7 +1486,7 @@ static void JS_KeyspaceGet(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
}
|
||||
|
||||
if (args.Length() > 1) {
|
||||
std::string const&& prefix = TRI_ObjectToString(args[1]);
|
||||
std::string const prefix = TRI_ObjectToString(args[1]);
|
||||
TRI_V8_RETURN(hash->keyspaceGet(isolate, prefix));
|
||||
}
|
||||
|
||||
|
@ -1079,7 +1512,7 @@ static void JS_KeyspaceRemove(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
TRI_V8_THROW_EXCEPTION_INTERNAL("cannot extract vocbase");
|
||||
}
|
||||
|
||||
std::string const&& name = TRI_ObjectToString(args[0]);
|
||||
std::string const name = TRI_ObjectToString(args[0]);
|
||||
|
||||
auto h = &(static_cast<UserStructures*>(vocbase->_userStructures)->hashes);
|
||||
READ_LOCKER(readLocker, h->lock);
|
||||
|
@ -1091,7 +1524,7 @@ static void JS_KeyspaceRemove(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
}
|
||||
|
||||
if (args.Length() > 1) {
|
||||
std::string const&& prefix = TRI_ObjectToString(args[1]);
|
||||
std::string const prefix = TRI_ObjectToString(args[1]);
|
||||
TRI_V8_RETURN(hash->keyspaceRemove(isolate, prefix));
|
||||
}
|
||||
|
||||
|
@ -1117,8 +1550,8 @@ static void JS_KeyGet(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
TRI_V8_THROW_EXCEPTION_INTERNAL("cannot extract vocbase");
|
||||
}
|
||||
|
||||
std::string const&& name = TRI_ObjectToString(args[0]);
|
||||
std::string const&& key = TRI_ObjectToString(args[1]);
|
||||
std::string const name = TRI_ObjectToString(args[0]);
|
||||
std::string const key = TRI_ObjectToString(args[1]);
|
||||
|
||||
auto h = &(static_cast<UserStructures*>(vocbase->_userStructures)->hashes);
|
||||
v8::Handle<v8::Value> result;
|
||||
|
@ -1156,8 +1589,8 @@ static void JS_KeySet(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
TRI_V8_THROW_EXCEPTION_INTERNAL("cannot extract vocbase");
|
||||
}
|
||||
|
||||
std::string const&& name = TRI_ObjectToString(args[0]);
|
||||
std::string const&& key = TRI_ObjectToString(args[1]);
|
||||
std::string const name = TRI_ObjectToString(args[0]);
|
||||
std::string const key = TRI_ObjectToString(args[1]);
|
||||
bool replace = true;
|
||||
|
||||
if (args.Length() > 3) {
|
||||
|
@ -1204,8 +1637,8 @@ static void JS_KeySetCas(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
TRI_V8_THROW_EXCEPTION_INTERNAL("cannot extract vocbase");
|
||||
}
|
||||
|
||||
std::string const&& name = TRI_ObjectToString(args[0]);
|
||||
std::string const&& key = TRI_ObjectToString(args[1]);
|
||||
std::string const name = TRI_ObjectToString(args[0]);
|
||||
std::string const key = TRI_ObjectToString(args[1]);
|
||||
|
||||
if (args[2]->IsUndefined()) {
|
||||
TRI_V8_THROW_EXCEPTION(TRI_ERROR_INTERNAL);
|
||||
|
@ -1255,8 +1688,8 @@ static void JS_KeyRemove(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
TRI_V8_THROW_EXCEPTION_INTERNAL("cannot extract vocbase");
|
||||
}
|
||||
|
||||
std::string const&& name = TRI_ObjectToString(args[0]);
|
||||
std::string const&& key = TRI_ObjectToString(args[1]);
|
||||
std::string const name = TRI_ObjectToString(args[0]);
|
||||
std::string const key = TRI_ObjectToString(args[1]);
|
||||
|
||||
auto h = &(static_cast<UserStructures*>(vocbase->_userStructures)->hashes);
|
||||
bool result;
|
||||
|
@ -1297,8 +1730,8 @@ static void JS_KeyExists(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
TRI_V8_THROW_EXCEPTION_INTERNAL("cannot extract vocbase");
|
||||
}
|
||||
|
||||
std::string const&& name = TRI_ObjectToString(args[0]);
|
||||
std::string const&& key = TRI_ObjectToString(args[1]);
|
||||
std::string const name = TRI_ObjectToString(args[0]);
|
||||
std::string const key = TRI_ObjectToString(args[1]);
|
||||
|
||||
auto h = &(static_cast<UserStructures*>(vocbase->_userStructures)->hashes);
|
||||
bool result;
|
||||
|
@ -1343,8 +1776,8 @@ static void JS_KeyIncr(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
TRI_V8_THROW_EXCEPTION_INTERNAL("cannot extract vocbase");
|
||||
}
|
||||
|
||||
std::string const&& name = TRI_ObjectToString(args[0]);
|
||||
std::string const&& key = TRI_ObjectToString(args[1]);
|
||||
std::string const name = TRI_ObjectToString(args[0]);
|
||||
std::string const key = TRI_ObjectToString(args[1]);
|
||||
|
||||
double incr = 1.0;
|
||||
|
||||
|
@ -1393,8 +1826,8 @@ static void JS_KeyUpdate(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
TRI_V8_THROW_EXCEPTION_INTERNAL("cannot extract vocbase");
|
||||
}
|
||||
|
||||
std::string const&& name = TRI_ObjectToString(args[0]);
|
||||
std::string const&& key = TRI_ObjectToString(args[1]);
|
||||
std::string const name = TRI_ObjectToString(args[0]);
|
||||
std::string const key = TRI_ObjectToString(args[1]);
|
||||
|
||||
bool nullMeansRemove = false;
|
||||
if (args.Length() > 3) {
|
||||
|
@ -1432,8 +1865,8 @@ static void JS_KeyKeys(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
TRI_V8_THROW_EXCEPTION_INTERNAL("cannot extract vocbase");
|
||||
}
|
||||
|
||||
std::string const&& name = TRI_ObjectToString(args[0]);
|
||||
std::string const&& key = TRI_ObjectToString(args[1]);
|
||||
std::string const name = TRI_ObjectToString(args[0]);
|
||||
std::string const key = TRI_ObjectToString(args[1]);
|
||||
|
||||
auto h = &(static_cast<UserStructures*>(vocbase->_userStructures)->hashes);
|
||||
READ_LOCKER(readLocker, h->lock);
|
||||
|
@ -1466,8 +1899,8 @@ static void JS_KeyValues(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
TRI_V8_THROW_EXCEPTION_INTERNAL("cannot extract vocbase");
|
||||
}
|
||||
|
||||
std::string const&& name = TRI_ObjectToString(args[0]);
|
||||
std::string const&& key = TRI_ObjectToString(args[1]);
|
||||
std::string const name = TRI_ObjectToString(args[0]);
|
||||
std::string const key = TRI_ObjectToString(args[1]);
|
||||
|
||||
auto h = &(static_cast<UserStructures*>(vocbase->_userStructures)->hashes);
|
||||
READ_LOCKER(readLocker, h->lock);
|
||||
|
@ -1500,8 +1933,8 @@ static void JS_KeyPush(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
TRI_V8_THROW_EXCEPTION_INTERNAL("cannot extract vocbase");
|
||||
}
|
||||
|
||||
std::string const&& name = TRI_ObjectToString(args[0]);
|
||||
std::string const&& key = TRI_ObjectToString(args[1]);
|
||||
std::string const name = TRI_ObjectToString(args[0]);
|
||||
std::string const key = TRI_ObjectToString(args[1]);
|
||||
|
||||
auto h = &(static_cast<UserStructures*>(vocbase->_userStructures)->hashes);
|
||||
READ_LOCKER(readLocker, h->lock);
|
||||
|
@ -1540,8 +1973,8 @@ static void JS_KeyPop(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
TRI_V8_THROW_EXCEPTION_INTERNAL("cannot extract vocbase");
|
||||
}
|
||||
|
||||
std::string const&& name = TRI_ObjectToString(args[0]);
|
||||
std::string const&& key = TRI_ObjectToString(args[1]);
|
||||
std::string const name = TRI_ObjectToString(args[0]);
|
||||
std::string const key = TRI_ObjectToString(args[1]);
|
||||
|
||||
auto h = &(static_cast<UserStructures*>(vocbase->_userStructures)->hashes);
|
||||
READ_LOCKER(readLocker, h->lock);
|
||||
|
@ -1574,9 +2007,9 @@ static void JS_KeyTransfer(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
TRI_V8_THROW_EXCEPTION_INTERNAL("cannot extract vocbase");
|
||||
}
|
||||
|
||||
std::string const&& name = TRI_ObjectToString(args[0]);
|
||||
std::string const&& keyFrom = TRI_ObjectToString(args[1]);
|
||||
std::string const&& keyTo = TRI_ObjectToString(args[2]);
|
||||
std::string const name = TRI_ObjectToString(args[0]);
|
||||
std::string const keyFrom = TRI_ObjectToString(args[1]);
|
||||
std::string const keyTo = TRI_ObjectToString(args[2]);
|
||||
|
||||
auto h = &(static_cast<UserStructures*>(vocbase->_userStructures)->hashes);
|
||||
READ_LOCKER(readLocker, h->lock);
|
||||
|
@ -1609,8 +2042,8 @@ static void JS_KeyGetAt(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
TRI_V8_THROW_EXCEPTION_INTERNAL("cannot extract vocbase");
|
||||
}
|
||||
|
||||
std::string const&& name = TRI_ObjectToString(args[0]);
|
||||
std::string const&& key = TRI_ObjectToString(args[1]);
|
||||
std::string const name = TRI_ObjectToString(args[0]);
|
||||
std::string const key = TRI_ObjectToString(args[1]);
|
||||
int64_t offset = TRI_ObjectToInt64(args[2]);
|
||||
|
||||
auto h = &(static_cast<UserStructures*>(vocbase->_userStructures)->hashes);
|
||||
|
@ -1644,8 +2077,8 @@ static void JS_KeySetAt(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
TRI_V8_THROW_EXCEPTION_INTERNAL("cannot extract vocbase");
|
||||
}
|
||||
|
||||
std::string const&& name = TRI_ObjectToString(args[0]);
|
||||
std::string const&& key = TRI_ObjectToString(args[1]);
|
||||
std::string const name = TRI_ObjectToString(args[0]);
|
||||
std::string const key = TRI_ObjectToString(args[1]);
|
||||
int64_t offset = TRI_ObjectToInt64(args[2]);
|
||||
|
||||
auto h = &(static_cast<UserStructures*>(vocbase->_userStructures)->hashes);
|
||||
|
@ -1684,8 +2117,8 @@ static void JS_KeyType(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
TRI_V8_THROW_EXCEPTION_INTERNAL("cannot extract vocbase");
|
||||
}
|
||||
|
||||
std::string const&& name = TRI_ObjectToString(args[0]);
|
||||
std::string const&& key = TRI_ObjectToString(args[1]);
|
||||
std::string const name = TRI_ObjectToString(args[0]);
|
||||
std::string const key = TRI_ObjectToString(args[1]);
|
||||
|
||||
auto h = &(static_cast<UserStructures*>(vocbase->_userStructures)->hashes);
|
||||
char const* result;
|
||||
|
@ -1723,8 +2156,8 @@ static void JS_KeyCount(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
TRI_V8_THROW_EXCEPTION_INTERNAL("cannot extract vocbase");
|
||||
}
|
||||
|
||||
std::string const&& name = TRI_ObjectToString(args[0]);
|
||||
std::string const&& key = TRI_ObjectToString(args[1]);
|
||||
std::string const name = TRI_ObjectToString(args[0]);
|
||||
std::string const key = TRI_ObjectToString(args[1]);
|
||||
|
||||
auto h = &(static_cast<UserStructures*>(vocbase->_userStructures)->hashes);
|
||||
uint32_t result;
|
||||
|
|
|
@ -2038,12 +2038,7 @@ static void JS_UseDatabase(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
if (TRI_IsDeletedVocBase(vocbase)) {
|
||||
TRI_V8_THROW_EXCEPTION(TRI_ERROR_ARANGO_DATABASE_NOT_FOUND);
|
||||
}
|
||||
|
||||
if (TRI_EqualString(name.c_str(), vocbase->_name)) {
|
||||
// same database. nothing to do
|
||||
TRI_V8_RETURN(WrapVocBase(isolate, vocbase));
|
||||
}
|
||||
|
||||
|
||||
if (ServerState::instance()->isCoordinator()) {
|
||||
vocbase = TRI_UseCoordinatorDatabaseServer(
|
||||
static_cast<TRI_server_t*>(v8g->_server), name.c_str());
|
||||
|
@ -2062,7 +2057,6 @@ static void JS_UseDatabase(v8::FunctionCallbackInfo<v8::Value> const& args) {
|
|||
TRI_ASSERT(orig != nullptr);
|
||||
|
||||
v8g->_vocbase = vocbase;
|
||||
TRI_ASSERT(orig != vocbase);
|
||||
TRI_ReleaseDatabaseServer(static_cast<TRI_server_t*>(v8g->_server),
|
||||
static_cast<TRI_vocbase_t*>(orig));
|
||||
|
||||
|
|
|
@ -230,8 +230,8 @@ static void ObjectToMap(v8::Isolate* isolate,
|
|||
|
||||
for (uint32_t i = 0; i < props->Length(); i++) {
|
||||
v8::Local<v8::Value> key = props->Get(i);
|
||||
myMap.emplace(TRI_ObjectToString(key),
|
||||
TRI_ObjectToString(v8Headers->Get(key)));
|
||||
myMap.emplace(TRI_ObjectToString(isolate, key),
|
||||
TRI_ObjectToString(isolate, v8Headers->Get(key)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -317,7 +317,7 @@ static void ClientConnection_ConstructorCallback(
|
|||
|
||||
try {
|
||||
if (args.Length() > 0 && args[0]->IsString()) {
|
||||
std::string definition = TRI_ObjectToString(args[0]);
|
||||
std::string definition = TRI_ObjectToString(isolate, args[0]);
|
||||
connection = client->createConnection(definition);
|
||||
} else {
|
||||
connection = client->createConnection();
|
||||
|
@ -374,15 +374,15 @@ static void ClientConnection_reconnect(
|
|||
"reconnect(<endpoint>, <database>, [, <username>, <password>])");
|
||||
}
|
||||
|
||||
std::string const endpoint = TRI_ObjectToString(args[0]);
|
||||
std::string databaseName = TRI_ObjectToString(args[1]);
|
||||
std::string const endpoint = TRI_ObjectToString(isolate, args[0]);
|
||||
std::string databaseName = TRI_ObjectToString(isolate, args[1]);
|
||||
|
||||
std::string username;
|
||||
|
||||
if (args.Length() < 3) {
|
||||
username = client->username();
|
||||
} else {
|
||||
username = TRI_ObjectToString(args[2]);
|
||||
username = TRI_ObjectToString(isolate, args[2]);
|
||||
}
|
||||
|
||||
std::string password;
|
||||
|
@ -399,7 +399,7 @@ static void ClientConnection_reconnect(
|
|||
std::cout << std::endl << std::flush;
|
||||
}
|
||||
} else {
|
||||
password = TRI_ObjectToString(args[3]);
|
||||
password = TRI_ObjectToString(isolate, args[3]);
|
||||
}
|
||||
|
||||
client->setEndpoint(endpoint);
|
||||
|
@ -823,7 +823,7 @@ static void ClientConnection_httpSendFile(
|
|||
|
||||
TRI_Utf8ValueNFC url(TRI_UNKNOWN_MEM_ZONE, args[0]);
|
||||
|
||||
std::string const infile = TRI_ObjectToString(args[1]);
|
||||
std::string const infile = TRI_ObjectToString(isolate, args[1]);
|
||||
|
||||
if (!FileUtils::exists(infile)) {
|
||||
TRI_V8_THROW_EXCEPTION(TRI_ERROR_FILE_NOT_FOUND);
|
||||
|
@ -921,7 +921,7 @@ static void ClientConnection_importCsv(
|
|||
v8::Handle<v8::Object> options = args[2]->ToObject();
|
||||
// separator
|
||||
if (options->Has(separatorKey)) {
|
||||
separator = TRI_ObjectToString(options->Get(separatorKey));
|
||||
separator = TRI_ObjectToString(isolate, options->Get(separatorKey));
|
||||
|
||||
if (separator.length() < 1) {
|
||||
TRI_V8_THROW_EXCEPTION_PARAMETER(
|
||||
|
@ -931,7 +931,7 @@ static void ClientConnection_importCsv(
|
|||
|
||||
// quote
|
||||
if (options->Has(quoteKey)) {
|
||||
quote = TRI_ObjectToString(options->Get(quoteKey));
|
||||
quote = TRI_ObjectToString(isolate, options->Get(quoteKey));
|
||||
|
||||
if (quote.length() > 1) {
|
||||
TRI_V8_THROW_EXCEPTION_PARAMETER(
|
||||
|
@ -954,8 +954,8 @@ static void ClientConnection_importCsv(
|
|||
ih.setQuote(quote);
|
||||
ih.setSeparator(separator.c_str());
|
||||
|
||||
std::string fileName = TRI_ObjectToString(args[0]);
|
||||
std::string collectionName = TRI_ObjectToString(args[1]);
|
||||
std::string fileName = TRI_ObjectToString(isolate, args[0]);
|
||||
std::string collectionName = TRI_ObjectToString(isolate, args[1]);
|
||||
|
||||
if (ih.importDelimited(collectionName, fileName, ImportHelper::CSV)) {
|
||||
v8::Handle<v8::Object> result = v8::Object::New(isolate);
|
||||
|
@ -1020,8 +1020,8 @@ static void ClientConnection_importJson(
|
|||
|
||||
ImportHelper ih(httpClient.get(), DefaultChunkSize);
|
||||
|
||||
std::string fileName = TRI_ObjectToString(args[0]);
|
||||
std::string collectionName = TRI_ObjectToString(args[1]);
|
||||
std::string fileName = TRI_ObjectToString(isolate, args[0]);
|
||||
std::string collectionName = TRI_ObjectToString(isolate, args[1]);
|
||||
|
||||
if (ih.importJson(collectionName, fileName)) {
|
||||
v8::Handle<v8::Object> result = v8::Object::New(isolate);
|
||||
|
@ -1255,7 +1255,7 @@ static void ClientConnection_setDatabaseName(
|
|||
TRI_V8_THROW_EXCEPTION_USAGE("setDatabaseName(<name>)");
|
||||
}
|
||||
|
||||
std::string const dbName = TRI_ObjectToString(args[0]);
|
||||
std::string const dbName = TRI_ObjectToString(isolate, args[0]);
|
||||
v8connection->setDatabaseName(dbName);
|
||||
client->setDatabaseName(dbName);
|
||||
|
||||
|
|
|
@ -462,7 +462,7 @@ bool V8ShellFeature::runScript(std::vector<std::string> const& files,
|
|||
auto oldDirname =
|
||||
current->Get(TRI_V8_ASCII_STRING2(_isolate, "__dirname"));
|
||||
|
||||
auto dirname = FileUtils::dirname(TRI_ObjectToString(filename).c_str());
|
||||
auto dirname = FileUtils::dirname(TRI_ObjectToString(filename));
|
||||
|
||||
current->ForceSet(TRI_V8_ASCII_STRING2(_isolate, "__dirname"),
|
||||
TRI_V8_STD_STRING2(_isolate, dirname));
|
||||
|
|
|
@ -883,8 +883,8 @@ function runStressTest (options, command, testname) {
|
|||
// / @brief executes a command, possible with valgrind
|
||||
// //////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
function executeValgrind (cmd, args, options, valgrindTest) {
|
||||
if (valgrindTest && options.valgrind) {
|
||||
function executeArangod (cmd, args, options) {
|
||||
if (options.valgrind) {
|
||||
let valgrindOpts = {};
|
||||
|
||||
if (options.valgrindArgs) {
|
||||
|
@ -1269,7 +1269,7 @@ function shutdownInstance (instanceInfo, options) {
|
|||
// //////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
function startInstanceCluster (instanceInfo, protocol, options,
|
||||
addArgs, name, rootDir) {
|
||||
addArgs, rootDir) {
|
||||
let makeArgs = function (name, args) {
|
||||
args = args || options.extraArgs;
|
||||
|
||||
|
@ -1279,7 +1279,7 @@ function startInstanceCluster (instanceInfo, protocol, options,
|
|||
let subArgs = makeArgsArangod(options, fs.join(subDir, 'apps'));
|
||||
subArgs = Object.assign(subArgs, args);
|
||||
|
||||
return [subArgs, name, subDir];
|
||||
return [subArgs, subDir];
|
||||
};
|
||||
|
||||
options.agencySize = 1;
|
||||
|
@ -1342,7 +1342,7 @@ function startInstanceCluster (instanceInfo, protocol, options,
|
|||
return true;
|
||||
}
|
||||
|
||||
function startArango (protocol, options, addArgs, name, rootDir, isAgency) {
|
||||
function startArango (protocol, options, addArgs, rootDir, isAgency) {
|
||||
const dataDir = fs.join(rootDir, 'data');
|
||||
const appDir = fs.join(rootDir, 'apps');
|
||||
|
||||
|
@ -1389,7 +1389,7 @@ function startArango (protocol, options, addArgs, name, rootDir, isAgency) {
|
|||
}
|
||||
|
||||
instanceInfo.url = endpointToURL(instanceInfo.endpoint);
|
||||
instanceInfo.pid = executeValgrind(ARANGOD_BIN, toArgv(args), options, name).pid;
|
||||
instanceInfo.pid = executeArangod(ARANGOD_BIN, toArgv(args), options).pid;
|
||||
|
||||
if (platform.substr(0, 3) === 'win') {
|
||||
const procdumpArgs = [
|
||||
|
@ -1411,7 +1411,7 @@ function startArango (protocol, options, addArgs, name, rootDir, isAgency) {
|
|||
}
|
||||
|
||||
function startInstanceAgency (instanceInfo, protocol, options,
|
||||
addArgs, testname, rootDir) {
|
||||
addArgs, rootDir) {
|
||||
const dataDir = fs.join(rootDir, 'data');
|
||||
|
||||
const N = options.agencySize;
|
||||
|
@ -1446,7 +1446,7 @@ function startInstanceAgency (instanceInfo, protocol, options,
|
|||
let dir = fs.join(rootDir, 'agency-' + i);
|
||||
fs.makeDirectoryRecursive(dir);
|
||||
|
||||
instanceInfo.arangods.push(startArango(protocol, options, instanceArgs, testname, rootDir, true));
|
||||
instanceInfo.arangods.push(startArango(protocol, options, instanceArgs, rootDir, true));
|
||||
}
|
||||
|
||||
instanceInfo.endpoint = instanceInfo.arangods[instanceInfo.arangods.length - 1].endpoint;
|
||||
|
@ -1457,8 +1457,8 @@ function startInstanceAgency (instanceInfo, protocol, options,
|
|||
}
|
||||
|
||||
function startInstanceSingleServer (instanceInfo, protocol, options,
|
||||
addArgs, testname, rootDir) {
|
||||
instanceInfo.arangods.push(startArango(protocol, options, addArgs, testname, rootDir, false));
|
||||
addArgs, rootDir) {
|
||||
instanceInfo.arangods.push(startArango(protocol, options, addArgs, rootDir, false));
|
||||
|
||||
instanceInfo.endpoint = instanceInfo.arangods[instanceInfo.arangods.length - 1].endpoint;
|
||||
instanceInfo.url = instanceInfo.arangods[instanceInfo.arangods.length - 1].url;
|
||||
|
@ -1482,13 +1482,13 @@ function startInstance (protocol, options, addArgs, testname, tmpDir) {
|
|||
}
|
||||
else if (options.cluster) {
|
||||
startInstanceCluster(instanceInfo, protocol, options,
|
||||
addArgs, testname, rootDir);
|
||||
addArgs, rootDir);
|
||||
} else if (options.agency) {
|
||||
startInstanceAgency(instanceInfo, protocol, options,
|
||||
addArgs, testname, rootDir);
|
||||
addArgs, rootDir);
|
||||
} else {
|
||||
startInstanceSingleServer(instanceInfo, protocol, options,
|
||||
addArgs, testname, rootDir);
|
||||
addArgs, rootDir);
|
||||
}
|
||||
|
||||
if (!options.cluster) {
|
||||
|
|
|
@ -163,8 +163,26 @@ global.DEFINE_MODULE('buffer', (function () {
|
|||
|
||||
// Buffer
|
||||
function Buffer (subject, encoding, offset) {
|
||||
var handler = {
|
||||
get: function(target, name) {
|
||||
if (name === '__buffer__') { return true; }
|
||||
if (typeof name === 'string' && name.match(/^\d+$/)) {
|
||||
return target.parent[name];
|
||||
}
|
||||
return target[name];
|
||||
},
|
||||
set: function(target, name, value) {
|
||||
if (typeof name === 'string' && name.match(/^\d+$/)) {
|
||||
target.parent[name] = value;
|
||||
} else {
|
||||
target[name] = value;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
if (!(this instanceof Buffer)) {
|
||||
return new Buffer(subject, encoding, offset);
|
||||
var b = new Buffer(subject, encoding, offset);
|
||||
return new Proxy(b, handler);
|
||||
}
|
||||
|
||||
var type;
|
||||
|
@ -234,6 +252,7 @@ global.DEFINE_MODULE('buffer', (function () {
|
|||
}
|
||||
|
||||
|
||||
return new Proxy(this, handler);
|
||||
// SlowBuffer.makeFastBuffer(this.parent, this, this.offset, this.length)
|
||||
}
|
||||
|
||||
|
@ -246,6 +265,8 @@ global.DEFINE_MODULE('buffer', (function () {
|
|||
exports.SlowBuffer = SlowBuffer;
|
||||
exports.Buffer = Buffer;
|
||||
|
||||
Buffer.prototype.__buffer__ = true;
|
||||
|
||||
Buffer.isEncoding = function (encoding) {
|
||||
switch (encoding && encoding.toLowerCase()) {
|
||||
case 'hex':
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
.AppleDouble
|
||||
.DS_Store
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Abidjan":["z",{"wallclock":-1830384000000,"format":"GMT","abbrev":"GMT","offset":0,"posix":-1830383032000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":-968000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Accra":["z",{"wallclock":-1640995200000,"format":"%s","abbrev":"GMT","offset":0,"posix":-1640995148000,"save":0,"rules":"Ghana"},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":-52000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{"Ghana":[{"from":1920,"to":1942,"month":8,"day":[7,1],"time":0,"clock":"wallclock","save":20,"letter":"GHST","saved":0},{"from":1920,"to":1942,"month":11,"day":[7,31],"time":0,"clock":"wallclock","save":0,"letter":"GMT","saved":1200000}]}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Addis_Ababa":["z",{"wallclock":-315619200000,"format":"EAT","abbrev":"EAT","offset":10800000,"posix":-315629100000,"save":0},{"wallclock":-946771200000,"format":"BEAUT","abbrev":"BEAUT","offset":9900000,"posix":-946780200000,"save":0},{"wallclock":-1262304000000,"format":"BEAT","abbrev":"BEAT","offset":9000000,"posix":-1262314800000,"save":0},{"wallclock":-1309737600000,"format":"EAT","abbrev":"EAT","offset":10800000,"posix":-1309746436000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":8836000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Algiers":["z",{"wallclock":357523200000,"format":"CET","abbrev":"CET","offset":3600000,"posix":357523200000,"save":0},{"wallclock":309744000000,"format":"WE%sT","abbrev":"WET","offset":0,"posix":309740400000,"save":0,"rules":"Algeria"},{"wallclock":246240000000,"format":"CE%sT","abbrev":"CET","offset":3600000,"posix":246236400000,"save":0,"rules":"Algeria"},{"wallclock":-212025600000,"format":"WE%sT","abbrev":"WET","offset":0,"posix":-212029200000,"save":0,"rules":"Algeria"},{"wallclock":-439430400000,"format":"CET","abbrev":"CET","offset":3600000,"posix":-439430400000,"save":0},{"wallclock":-733276800000,"format":"WET","abbrev":"WET","offset":0,"posix":-733280400000,"save":0},{"wallclock":-942012000000,"format":"CE%sT","abbrev":"CET","offset":3600000,"posix":-942012000000,"save":0,"rules":"Algeria"},{"wallclock":-1855958400000,"format":"WE%sT","abbrev":"WET","offset":0,"posix":-1855958961000,"save":0,"rules":"Algeria"},{"wallclock":-2486678340000,"format":"PMT","abbrev":"PMT","offset":561000,"posix":-2486679072000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":732000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{"Algeria":[{"from":1980,"to":1980,"month":9,"day":[7,31],"time":120,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1980,"to":1980,"month":3,"day":[7,25],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1978,"to":1978,"month":8,"day":[7,22],"time":180,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1978,"to":1978,"month":2,"day":[7,24],"time":60,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1977,"to":1977,"month":9,"day":[7,21],"time":0,"clock":"wallclock","save":0,"letter":"","saved":0},{"from":1977,"to":1977,"month":4,"day":[7,6],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1971,"to":1971,"month":8,"day":[7,26],"time":1440,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1971,"to":1971,"month":3,"day":[7,25],"time":1380,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1944,"to":1945,"month":3,"day":[1,1],"time":120,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1945,"to":1945,"month":8,"day":[7,16],"time":60,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1944,"to":1944,"month":9,"day":[7,8],"time":120,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1939,"to":1939,"month":10,"day":[7,19],"time":60,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1939,"to":1939,"month":8,"day":[7,11],"time":1380,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1921,"to":1921,"month":5,"day":[7,21],"time":1440,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1921,"to":1921,"month":2,"day":[7,14],"time":1380,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1920,"to":1920,"month":9,"day":[7,23],"time":1440,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1920,"to":1920,"month":1,"day":[7,14],"time":1380,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1916,"to":1919,"month":9,"day":[0,1],"time":1440,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1919,"to":1919,"month":2,"day":[7,1],"time":1380,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1918,"to":1918,"month":2,"day":[7,9],"time":1380,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1917,"to":1917,"month":2,"day":[7,24],"time":1380,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1916,"to":1916,"month":5,"day":[7,14],"time":1380,"clock":"wallclock","save":60,"letter":"S","saved":0}]}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Asmara":["z",{"wallclock":-315619200000,"format":"EAT","abbrev":"EAT","offset":10800000,"posix":-315629100000,"save":0},{"wallclock":-946771200000,"format":"BEAUT","abbrev":"BEAUT","offset":9900000,"posix":-946780200000,"save":0},{"wallclock":-1262304000000,"format":"BEAT","abbrev":"BEAT","offset":9000000,"posix":-1262314800000,"save":0},{"wallclock":-1309737600000,"format":"EAT","abbrev":"EAT","offset":10800000,"posix":-1309746436000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":8836000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Asmera":["z",{"wallclock":-315619200000,"format":"EAT","abbrev":"EAT","offset":10800000,"posix":-315629100000,"save":0},{"wallclock":-946771200000,"format":"BEAUT","abbrev":"BEAUT","offset":9900000,"posix":-946780200000,"save":0},{"wallclock":-1262304000000,"format":"BEAT","abbrev":"BEAT","offset":9000000,"posix":-1262314800000,"save":0},{"wallclock":-1309737600000,"format":"EAT","abbrev":"EAT","offset":10800000,"posix":-1309746436000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":8836000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Bamako":["z",{"wallclock":-1830384000000,"format":"GMT","abbrev":"GMT","offset":0,"posix":-1830383032000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":-968000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Bangui":["z",{"wallclock":-1588464000000,"format":"WAT","abbrev":"WAT","offset":3600000,"posix":-1588464816000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":816000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Banjul":["z",{"wallclock":-1830384000000,"format":"GMT","abbrev":"GMT","offset":0,"posix":-1830383032000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":-968000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Bissau":["z",{"wallclock":157766400000,"format":"GMT","abbrev":"GMT","offset":0,"posix":157770000000,"save":0},{"wallclock":-1830384000000,"format":"WAT","abbrev":"WAT","offset":-3600000,"posix":-1830380260000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":-3740000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Blantyre":["z",{"wallclock":-2109283200000,"format":"CAT","abbrev":"CAT","offset":7200000,"posix":-2109291020000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":7820000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Brazzaville":["z",{"wallclock":-1588464000000,"format":"WAT","abbrev":"WAT","offset":3600000,"posix":-1588464816000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":816000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Bujumbura":["z",{"wallclock":-2109283200000,"format":"CAT","abbrev":"CAT","offset":7200000,"posix":-2109291020000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":7820000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Cairo":["z",{"wallclock":-2185401600000,"format":"EE%sT","abbrev":"EET","offset":7200000,"posix":-2185409109000,"save":0,"rules":"Egypt"},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":7509000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{"Egypt":[{"from":2014,"to":2014,"month":8,"day":[4,-30],"time":1440,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":2014,"to":2014,"month":5,"day":[7,26],"time":1440,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":2014,"to":2014,"month":4,"day":[7,15],"time":1440,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":2014,"to":2014,"month":6,"day":[7,31],"time":1440,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":2010,"to":2010,"month":8,"day":[4,-30],"time":1440,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":2010,"to":2010,"month":8,"day":[7,9],"time":1440,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":2010,"to":2010,"month":7,"day":[7,10],"time":1440,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1995,"to":2010,"month":3,"day":[5,-30],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":2009,"to":2009,"month":7,"day":[7,20],"time":1440,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":2008,"to":2008,"month":7,"day":[4,-31],"time":1440,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":2007,"to":2007,"month":8,"day":[4,1],"time":1440,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":2006,"to":2006,"month":8,"day":[7,21],"time":1440,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1995,"to":2005,"month":8,"day":[4,-30],"time":1440,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1966,"to":1994,"month":9,"day":[7,1],"time":180,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1990,"to":1994,"month":4,"day":[7,1],"time":60,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1989,"to":1989,"month":4,"day":[7,6],"time":60,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1984,"to":1988,"month":4,"day":[7,1],"time":60,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1983,"to":1983,"month":6,"day":[7,12],"time":60,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1982,"to":1982,"month":6,"day":[7,25],"time":60,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1959,"to":1981,"month":4,"day":[7,1],"time":60,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1959,"to":1965,"month":8,"day":[7,30],"time":180,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1958,"to":1958,"month":4,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1957,"to":1958,"month":9,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1957,"to":1957,"month":4,"day":[7,10],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1945,"to":1945,"month":3,"day":[7,16],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1943,"to":1945,"month":10,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1942,"to":1944,"month":3,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1942,"to":1942,"month":9,"day":[7,27],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1941,"to":1941,"month":8,"day":[7,16],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1941,"to":1941,"month":3,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1940,"to":1940,"month":9,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1940,"to":1940,"month":6,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0}]}}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Conakry":["z",{"wallclock":-1830384000000,"format":"GMT","abbrev":"GMT","offset":0,"posix":-1830383032000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":-968000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Dakar":["z",{"wallclock":-1830384000000,"format":"GMT","abbrev":"GMT","offset":0,"posix":-1830383032000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":-968000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Dar_es_Salaam":["z",{"wallclock":-315619200000,"format":"EAT","abbrev":"EAT","offset":10800000,"posix":-315629100000,"save":0},{"wallclock":-946771200000,"format":"BEAUT","abbrev":"BEAUT","offset":9900000,"posix":-946780200000,"save":0},{"wallclock":-1262304000000,"format":"BEAT","abbrev":"BEAT","offset":9000000,"posix":-1262314800000,"save":0},{"wallclock":-1309737600000,"format":"EAT","abbrev":"EAT","offset":10800000,"posix":-1309746436000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":8836000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Djibouti":["z",{"wallclock":-315619200000,"format":"EAT","abbrev":"EAT","offset":10800000,"posix":-315629100000,"save":0},{"wallclock":-946771200000,"format":"BEAUT","abbrev":"BEAUT","offset":9900000,"posix":-946780200000,"save":0},{"wallclock":-1262304000000,"format":"BEAT","abbrev":"BEAT","offset":9000000,"posix":-1262314800000,"save":0},{"wallclock":-1309737600000,"format":"EAT","abbrev":"EAT","offset":10800000,"posix":-1309746436000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":8836000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Douala":["z",{"wallclock":-1588464000000,"format":"WAT","abbrev":"WAT","offset":3600000,"posix":-1588464816000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":816000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Freetown":["z",{"wallclock":-1830384000000,"format":"GMT","abbrev":"GMT","offset":0,"posix":-1830383032000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":-968000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Gaborone":["z",{"wallclock":-2109283200000,"format":"CAT","abbrev":"CAT","offset":7200000,"posix":-2109291020000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":7820000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Harare":["z",{"wallclock":-2109283200000,"format":"CAT","abbrev":"CAT","offset":7200000,"posix":-2109291020000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":7820000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Johannesburg":["z",{"wallclock":-2109283200000,"format":"SAST","abbrev":"SAST","offset":7200000,"posix":-2109288600000,"save":0,"rules":"SA"},{"wallclock":-2458166400000,"format":"SAST","abbrev":"SAST","offset":5400000,"posix":-2458173120000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":6720000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{"SA":[{"from":1943,"to":1944,"month":2,"day":[0,15],"time":120,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1942,"to":1943,"month":8,"day":[0,15],"time":120,"clock":"wallclock","save":60,"letter":"","saved":0}]}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Juba":["z",{"wallclock":947937600000,"format":"EAT","abbrev":"EAT","offset":10800000,"posix":947930400000,"save":0},{"wallclock":-1230768000000,"format":"CA%sT","abbrev":"CAT","offset":7200000,"posix":-1230775808000,"save":0,"rules":"Sudan"},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":7808000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{"Sudan":[{"from":1970,"to":1985,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1972,"to":1985,"month":3,"day":[0,-30],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1971,"to":1971,"month":3,"day":[7,30],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1970,"to":1970,"month":4,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0}]}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Kampala":["z",{"wallclock":-315619200000,"format":"EAT","abbrev":"EAT","offset":10800000,"posix":-315629100000,"save":0},{"wallclock":-946771200000,"format":"BEAUT","abbrev":"BEAUT","offset":9900000,"posix":-946780200000,"save":0},{"wallclock":-1262304000000,"format":"BEAT","abbrev":"BEAT","offset":9000000,"posix":-1262314800000,"save":0},{"wallclock":-1309737600000,"format":"EAT","abbrev":"EAT","offset":10800000,"posix":-1309746436000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":8836000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Khartoum":["z",{"wallclock":947937600000,"format":"EAT","abbrev":"EAT","offset":10800000,"posix":947930400000,"save":0},{"wallclock":-1230768000000,"format":"CA%sT","abbrev":"CAT","offset":7200000,"posix":-1230775808000,"save":0,"rules":"Sudan"},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":7808000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{"Sudan":[{"from":1970,"to":1985,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1972,"to":1985,"month":3,"day":[0,-30],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1971,"to":1971,"month":3,"day":[7,30],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1970,"to":1970,"month":4,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0}]}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Kigali":["z",{"wallclock":-2109283200000,"format":"CAT","abbrev":"CAT","offset":7200000,"posix":-2109291020000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":7820000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Kinshasa":["z",{"wallclock":-1588464000000,"format":"WAT","abbrev":"WAT","offset":3600000,"posix":-1588464816000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":816000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Lagos":["z",{"wallclock":-1588464000000,"format":"WAT","abbrev":"WAT","offset":3600000,"posix":-1588464816000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":816000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Libreville":["z",{"wallclock":-1588464000000,"format":"WAT","abbrev":"WAT","offset":3600000,"posix":-1588464816000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":816000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Lome":["z",{"wallclock":-1830384000000,"format":"GMT","abbrev":"GMT","offset":0,"posix":-1830383032000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":-968000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Luanda":["z",{"wallclock":-1588464000000,"format":"WAT","abbrev":"WAT","offset":3600000,"posix":-1588464816000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":816000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Lubumbashi":["z",{"wallclock":-2109283200000,"format":"CAT","abbrev":"CAT","offset":7200000,"posix":-2109291020000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":7820000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Lusaka":["z",{"wallclock":-2109283200000,"format":"CAT","abbrev":"CAT","offset":7200000,"posix":-2109291020000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":7820000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Malabo":["z",{"wallclock":-1588464000000,"format":"WAT","abbrev":"WAT","offset":3600000,"posix":-1588464816000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":816000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Maputo":["z",{"wallclock":-2109283200000,"format":"CAT","abbrev":"CAT","offset":7200000,"posix":-2109291020000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":7820000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Maseru":["z",{"wallclock":-2109283200000,"format":"SAST","abbrev":"SAST","offset":7200000,"posix":-2109288600000,"save":0,"rules":"SA"},{"wallclock":-2458166400000,"format":"SAST","abbrev":"SAST","offset":5400000,"posix":-2458173120000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":6720000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{"SA":[{"from":1943,"to":1944,"month":2,"day":[0,15],"time":120,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1942,"to":1943,"month":8,"day":[0,15],"time":120,"clock":"wallclock","save":60,"letter":"","saved":0}]}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Mbabane":["z",{"wallclock":-2109283200000,"format":"SAST","abbrev":"SAST","offset":7200000,"posix":-2109288600000,"save":0,"rules":"SA"},{"wallclock":-2458166400000,"format":"SAST","abbrev":"SAST","offset":5400000,"posix":-2458173120000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":6720000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{"SA":[{"from":1943,"to":1944,"month":2,"day":[0,15],"time":120,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1942,"to":1943,"month":8,"day":[0,15],"time":120,"clock":"wallclock","save":60,"letter":"","saved":0}]}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Mogadishu":["z",{"wallclock":-315619200000,"format":"EAT","abbrev":"EAT","offset":10800000,"posix":-315629100000,"save":0},{"wallclock":-946771200000,"format":"BEAUT","abbrev":"BEAUT","offset":9900000,"posix":-946780200000,"save":0},{"wallclock":-1262304000000,"format":"BEAT","abbrev":"BEAT","offset":9000000,"posix":-1262314800000,"save":0},{"wallclock":-1309737600000,"format":"EAT","abbrev":"EAT","offset":10800000,"posix":-1309746436000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":8836000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Monrovia":["z",{"wallclock":73526400000,"format":"GMT","abbrev":"GMT","offset":0,"posix":73529070000,"save":0},{"wallclock":-1604361600000,"format":"LRT","abbrev":"LRT","offset":-2670000,"posix":-1604359012000,"save":0},{"wallclock":-2776982400000,"format":"MMT","abbrev":"MMT","offset":-2588000,"posix":-2776979812000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":-2588000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Nairobi":["z",{"wallclock":-315619200000,"format":"EAT","abbrev":"EAT","offset":10800000,"posix":-315629100000,"save":0},{"wallclock":-946771200000,"format":"BEAUT","abbrev":"BEAUT","offset":9900000,"posix":-946780200000,"save":0},{"wallclock":-1262304000000,"format":"BEAT","abbrev":"BEAT","offset":9000000,"posix":-1262314800000,"save":0},{"wallclock":-1309737600000,"format":"EAT","abbrev":"EAT","offset":10800000,"posix":-1309746436000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":8836000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Ndjamena":["z",{"wallclock":321321600000,"format":"WAT","abbrev":"WAT","offset":3600000,"posix":321314400000,"save":0},{"wallclock":308707200000,"format":"WAST","abbrev":"WAST","offset":3600000,"posix":308703600000,"save":3600000},{"wallclock":-1830384000000,"format":"WAT","abbrev":"WAT","offset":3600000,"posix":-1830387612000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":3612000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Niamey":["z",{"wallclock":-1588464000000,"format":"WAT","abbrev":"WAT","offset":3600000,"posix":-1588464816000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":816000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Nouakchott":["z",{"wallclock":-1830384000000,"format":"GMT","abbrev":"GMT","offset":0,"posix":-1830383032000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":-968000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Ouagadougou":["z",{"wallclock":-1830384000000,"format":"GMT","abbrev":"GMT","offset":0,"posix":-1830383032000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":-968000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Porto-Novo":["z",{"wallclock":-1588464000000,"format":"WAT","abbrev":"WAT","offset":3600000,"posix":-1588464816000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":816000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Sao_Tome":["z",{"wallclock":-1830384000000,"format":"GMT","abbrev":"GMT","offset":0,"posix":-1830383032000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":-968000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Timbuktu":["z",{"wallclock":-1830384000000,"format":"GMT","abbrev":"GMT","offset":0,"posix":-1830383032000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":-968000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Tripoli":["z",{"wallclock":1382666400000,"format":"EET","abbrev":"EET","offset":7200000,"posix":1382659200000,"save":0},{"wallclock":1352512800000,"format":"CE%sT","abbrev":"CET","offset":3600000,"posix":1352505600000,"save":0,"rules":"Libya"},{"wallclock":875923200000,"format":"EET","abbrev":"EET","offset":7200000,"posix":875916000000,"save":0},{"wallclock":844041600000,"format":"CE%sT","abbrev":"CET","offset":3600000,"posix":844034400000,"save":0,"rules":"Libya"},{"wallclock":641779200000,"format":"EET","abbrev":"EET","offset":7200000,"posix":641775600000,"save":0},{"wallclock":378691200000,"format":"CE%sT","abbrev":"CET","offset":3600000,"posix":378684000000,"save":0,"rules":"Libya"},{"wallclock":-347155200000,"format":"EET","abbrev":"EET","offset":7200000,"posix":-347158800000,"save":0},{"wallclock":-1577923200000,"format":"CE%sT","abbrev":"CET","offset":3600000,"posix":-1577926364000,"save":0,"rules":"Libya"},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":3164000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{"Libya":[{"from":2013,"to":2013,"month":9,"day":[5,-31],"time":120,"clock":"wallclock","save":0,"letter":"","saved":0},{"from":2013,"to":2013,"month":2,"day":[5,-31],"time":60,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1997,"to":1997,"month":9,"day":[7,4],"time":0,"clock":"wallclock","save":0,"letter":"","saved":0},{"from":1997,"to":1997,"month":3,"day":[7,4],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1987,"to":1989,"month":9,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1987,"to":1989,"month":3,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1986,"to":1986,"month":9,"day":[7,3],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1986,"to":1986,"month":3,"day":[7,4],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1985,"to":1985,"month":3,"day":[7,6],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1982,"to":1985,"month":9,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1982,"to":1984,"month":3,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1956,"to":1956,"month":0,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1955,"to":1955,"month":8,"day":[7,30],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1954,"to":1954,"month":0,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1953,"to":1953,"month":9,"day":[7,9],"time":120,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1952,"to":1952,"month":0,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1951,"to":1951,"month":9,"day":[7,14],"time":120,"clock":"wallclock","save":60,"letter":"S","saved":0}]}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Tunis":["z",{"wallclock":-1855958400000,"format":"CE%sT","abbrev":"CET","offset":3600000,"posix":-1855958961000,"save":0,"rules":"Tunisia"},{"wallclock":-2797200000000,"format":"PMT","abbrev":"PMT","offset":561000,"posix":-2797202444000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":2444000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{"Tunisia":[{"from":2006,"to":2008,"month":9,"day":[0,-31],"time":180,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":2006,"to":2008,"month":2,"day":[0,-31],"time":120,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":2005,"to":2005,"month":8,"day":[7,30],"time":120,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":2005,"to":2005,"month":4,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1990,"to":1990,"month":4,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1988,"to":1990,"month":8,"day":[0,-30],"time":60,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1989,"to":1989,"month":2,"day":[7,26],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1988,"to":1988,"month":5,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1978,"to":1978,"month":9,"day":[7,1],"time":60,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1978,"to":1978,"month":4,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1977,"to":1977,"month":8,"day":[7,24],"time":60,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1977,"to":1977,"month":3,"day":[7,30],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1944,"to":1945,"month":3,"day":[1,1],"time":120,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1945,"to":1945,"month":8,"day":[7,16],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1944,"to":1944,"month":9,"day":[7,8],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1943,"to":1943,"month":2,"day":[7,29],"time":120,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1943,"to":1943,"month":9,"day":[7,4],"time":120,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1943,"to":1943,"month":3,"day":[7,25],"time":120,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1943,"to":1943,"month":3,"day":[7,17],"time":120,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1942,"to":1942,"month":10,"day":[7,2],"time":180,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1942,"to":1942,"month":2,"day":[7,9],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1941,"to":1941,"month":9,"day":[7,6],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1940,"to":1940,"month":1,"day":[7,25],"time":1380,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1939,"to":1939,"month":10,"day":[7,18],"time":1440,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1939,"to":1939,"month":3,"day":[7,15],"time":1380,"clock":"wallclock","save":60,"letter":"S","saved":0}]}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"Africa/Windhoek":["z",{"wallclock":765331200000,"format":"WA%sT","abbrev":"WAT","offset":3600000,"posix":765324000000,"save":0,"rules":"Namibia"},{"wallclock":637977600000,"format":"CAT","abbrev":"CAT","offset":7200000,"posix":637970400000,"save":0},{"wallclock":-845244000000,"format":"SAST","abbrev":"SAST","offset":7200000,"posix":-845254800000,"save":0},{"wallclock":-860968800000,"format":"SAST","abbrev":"SAST","offset":7200000,"posix":-860976000000,"save":3600000},{"wallclock":-2109283200000,"format":"SAST","abbrev":"SAST","offset":7200000,"posix":-2109288600000,"save":0},{"wallclock":-2458166400000,"format":"SWAT","abbrev":"SWAT","offset":5400000,"posix":-2458170504000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":4104000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{"Namibia":[{"from":1994,"to":1.7976931348623157e+308,"month":8,"day":[0,1],"time":120,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1995,"to":1.7976931348623157e+308,"month":3,"day":[0,1],"time":120,"clock":"wallclock","save":0,"letter":"","saved":3600000}]}}
|
|
@ -0,0 +1 @@
|
|||
module.exports = [require("./Abidjan.js"),require("./Accra.js"),require("./Addis_Ababa.js"),require("./Algiers.js"),require("./Asmara.js"),require("./Asmera.js"),require("./Bamako.js"),require("./Bangui.js"),require("./Banjul.js"),require("./Bissau.js"),require("./Blantyre.js"),require("./Brazzaville.js"),require("./Bujumbura.js"),require("./Cairo.js"),require("./Casablanca.js"),require("./Ceuta.js"),require("./Conakry.js"),require("./Dakar.js"),require("./Dar_es_Salaam.js"),require("./Djibouti.js"),require("./Douala.js"),require("./El_Aaiun.js"),require("./Freetown.js"),require("./Gaborone.js"),require("./Harare.js"),require("./Johannesburg.js"),require("./Juba.js"),require("./Kampala.js"),require("./Khartoum.js"),require("./Kigali.js"),require("./Kinshasa.js"),require("./Lagos.js"),require("./Libreville.js"),require("./Lome.js"),require("./Luanda.js"),require("./Lubumbashi.js"),require("./Lusaka.js"),require("./Malabo.js"),require("./Maputo.js"),require("./Maseru.js"),require("./Mbabane.js"),require("./Mogadishu.js"),require("./Monrovia.js"),require("./Nairobi.js"),require("./Ndjamena.js"),require("./Niamey.js"),require("./Nouakchott.js"),require("./Ouagadougou.js"),require("./Porto-Novo.js"),require("./Sao_Tome.js"),require("./Timbuktu.js"),require("./Tripoli.js"),require("./Tunis.js"),require("./Windhoek.js")]
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"America/Adak":["z",{"wallclock":438998400000,"format":"H%sT","abbrev":"HST","offset":-36000000,"posix":439034400000,"save":0,"rules":"US"},{"wallclock":436327200000,"format":"AH%sT","abbrev":"AHST","offset":-36000000,"posix":436363200000,"save":0,"rules":"US"},{"wallclock":-31536000000,"format":"B%sT","abbrev":"BST","offset":-39600000,"posix":-31496400000,"save":0,"rules":"US"},{"wallclock":-86918400000,"format":"BST","abbrev":"BST","offset":-39600000,"posix":-86878800000,"save":0},{"wallclock":-757382400000,"format":"NST","abbrev":"NST","offset":-39600000,"posix":-757342800000,"save":0},{"wallclock":-883612800000,"format":"N%sT","abbrev":"NST","offset":-39600000,"posix":-883573200000,"save":0,"rules":"US"},{"wallclock":-2188987200000,"format":"NST","abbrev":"NST","offset":-39600000,"posix":-2188944802000,"save":0},{"wallclock":-3225312000000,"format":"LMT","abbrev":"LMT","offset":-42398000,"posix":-3225356001000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":44001000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{"US":[{"from":2007,"to":1.7976931348623157e+308,"month":10,"day":[0,1],"time":120,"clock":"wallclock","save":0,"letter":"S","saved":3600000},{"from":2007,"to":1.7976931348623157e+308,"month":2,"day":[0,8],"time":120,"clock":"wallclock","save":60,"letter":"D","saved":0},{"from":1987,"to":2006,"month":3,"day":[0,1],"time":120,"clock":"wallclock","save":60,"letter":"D","saved":0},{"from":1967,"to":2006,"month":9,"day":[0,-31],"time":120,"clock":"wallclock","save":0,"letter":"S","saved":3600000},{"from":1976,"to":1986,"month":3,"day":[0,-30],"time":120,"clock":"wallclock","save":60,"letter":"D","saved":0},{"from":1975,"to":1975,"month":1,"day":[7,23],"time":120,"clock":"wallclock","save":60,"letter":"D","saved":0},{"from":1974,"to":1974,"month":0,"day":[7,6],"time":120,"clock":"wallclock","save":60,"letter":"D","saved":0},{"from":1967,"to":1973,"month":3,"day":[0,-30],"time":120,"clock":"wallclock","save":60,"letter":"D","saved":0},{"from":1945,"to":1945,"month":8,"day":[0,-30],"time":120,"clock":"wallclock","save":0,"letter":"S","saved":3600000},{"from":1945,"to":1945,"month":7,"day":[7,14],"time":1380,"clock":"posix","save":60,"letter":"P","saved":3600000},{"from":1942,"to":1942,"month":1,"day":[7,9],"time":120,"clock":"wallclock","save":60,"letter":"W","saved":0},{"from":1918,"to":1919,"month":9,"day":[0,-31],"time":120,"clock":"wallclock","save":0,"letter":"S","saved":3600000},{"from":1918,"to":1919,"month":2,"day":[0,-31],"time":120,"clock":"wallclock","save":60,"letter":"D","saved":0}]}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"America/Anchorage":["z",{"wallclock":438998400000,"format":"AK%sT","abbrev":"AKST","offset":-32400000,"posix":439030800000,"save":0,"rules":"US"},{"wallclock":436327200000,"format":"Y%sT","abbrev":"YST","offset":-32400000,"posix":436359600000,"save":0,"rules":"US"},{"wallclock":-31536000000,"format":"AH%sT","abbrev":"AHST","offset":-36000000,"posix":-31500000000,"save":0,"rules":"US"},{"wallclock":-86918400000,"format":"AHST","abbrev":"AHST","offset":-36000000,"posix":-86882400000,"save":0},{"wallclock":-757382400000,"format":"CAT","abbrev":"CAT","offset":-36000000,"posix":-757346400000,"save":0},{"wallclock":-769428000000,"format":"CAT/CAPT","abbrev":"CAPT","offset":-36000000,"posix":-769395600000,"save":3600000,"rules":"US"},{"wallclock":-883612800000,"format":"CAT/CAWT","abbrev":"CAT","offset":-36000000,"posix":-883576800000,"save":0,"rules":"US"},{"wallclock":-2188987200000,"format":"CAT","abbrev":"CAT","offset":-36000000,"posix":-2188951224000,"save":0},{"wallclock":-3225312000000,"format":"LMT","abbrev":"LMT","offset":-35976000,"posix":-3225362424000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":50424000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{"US":[{"from":2007,"to":1.7976931348623157e+308,"month":10,"day":[0,1],"time":120,"clock":"wallclock","save":0,"letter":"S","saved":3600000},{"from":2007,"to":1.7976931348623157e+308,"month":2,"day":[0,8],"time":120,"clock":"wallclock","save":60,"letter":"D","saved":0},{"from":1987,"to":2006,"month":3,"day":[0,1],"time":120,"clock":"wallclock","save":60,"letter":"D","saved":0},{"from":1967,"to":2006,"month":9,"day":[0,-31],"time":120,"clock":"wallclock","save":0,"letter":"S","saved":3600000},{"from":1976,"to":1986,"month":3,"day":[0,-30],"time":120,"clock":"wallclock","save":60,"letter":"D","saved":0},{"from":1975,"to":1975,"month":1,"day":[7,23],"time":120,"clock":"wallclock","save":60,"letter":"D","saved":0},{"from":1974,"to":1974,"month":0,"day":[7,6],"time":120,"clock":"wallclock","save":60,"letter":"D","saved":0},{"from":1967,"to":1973,"month":3,"day":[0,-30],"time":120,"clock":"wallclock","save":60,"letter":"D","saved":0},{"from":1945,"to":1945,"month":8,"day":[0,-30],"time":120,"clock":"wallclock","save":0,"letter":"S","saved":3600000},{"from":1945,"to":1945,"month":7,"day":[7,14],"time":1380,"clock":"posix","save":60,"letter":"P","saved":3600000},{"from":1942,"to":1942,"month":1,"day":[7,9],"time":120,"clock":"wallclock","save":60,"letter":"W","saved":0},{"from":1918,"to":1919,"month":9,"day":[0,-31],"time":120,"clock":"wallclock","save":0,"letter":"S","saved":3600000},{"from":1918,"to":1919,"month":2,"day":[0,-31],"time":120,"clock":"wallclock","save":60,"letter":"D","saved":0}]}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"America/Anguilla":["z",{"wallclock":-1825113600000,"format":"AST","abbrev":"AST","offset":-14400000,"posix":-1825098836000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":-14764000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"America/Antigua":["z",{"wallclock":-1825113600000,"format":"AST","abbrev":"AST","offset":-14400000,"posix":-1825098836000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":-14764000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{}}
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"America/Argentina/Buenos_Aires":["z",{"wallclock":952041600000,"format":"AR%sT","abbrev":"ART","offset":-10800000,"posix":952052400000,"save":0,"rules":"Arg"},{"wallclock":938908800000,"format":"AR%sT","abbrev":"ARST","offset":-14400000,"posix":938919600000,"save":3600000,"rules":"Arg"},{"wallclock":-7603200000,"format":"AR%sT","abbrev":"ART","offset":-10800000,"posix":-7588800000,"save":0,"rules":"Arg"},{"wallclock":-1233446400000,"format":"AR%sT","abbrev":"ARST","offset":-14400000,"posix":-1233432000000,"save":3600000,"rules":"Arg"},{"wallclock":-1567468800000,"format":"ART","abbrev":"ART","offset":-14400000,"posix":-1567453392000,"save":0},{"wallclock":-2372112000000,"format":"CMT","abbrev":"CMT","offset":-15408000,"posix":-2372097972000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":-14028000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{"Arg":[{"from":2008,"to":2009,"month":2,"day":[0,15],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":2008,"to":2008,"month":9,"day":[0,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":2007,"to":2007,"month":11,"day":[7,30],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":2000,"to":2000,"month":2,"day":[7,3],"time":0,"clock":"wallclock","save":0,"letter":"","saved":0},{"from":1999,"to":1999,"month":9,"day":[0,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1989,"to":1993,"month":2,"day":[0,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1989,"to":1992,"month":9,"day":[0,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1988,"to":1988,"month":11,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1974,"to":1974,"month":4,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1974,"to":1974,"month":0,"day":[7,23],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1968,"to":1969,"month":3,"day":[0,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1967,"to":1968,"month":9,"day":[0,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1967,"to":1967,"month":3,"day":[7,2],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1964,"to":1966,"month":2,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1964,"to":1966,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1963,"to":1963,"month":9,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1963,"to":1963,"month":11,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1946,"to":1946,"month":9,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1946,"to":1946,"month":2,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1943,"to":1943,"month":7,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1943,"to":1943,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1941,"to":1941,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1941,"to":1941,"month":5,"day":[7,15],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1940,"to":1940,"month":6,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1932,"to":1940,"month":2,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1932,"to":1939,"month":10,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1931,"to":1931,"month":3,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1931,"to":1931,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1930,"to":1930,"month":11,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0}]}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"America/Argentina/Catamarca":["z",{"wallclock":1224288000000,"format":"ART","abbrev":"ART","offset":-10800000,"posix":1224298800000,"save":0},{"wallclock":1087689600000,"format":"AR%sT","abbrev":"ART","offset":-10800000,"posix":1087704000000,"save":0,"rules":"Arg"},{"wallclock":1086048000000,"format":"WART","abbrev":"WART","offset":-14400000,"posix":1086058800000,"save":0},{"wallclock":952041600000,"format":"ART","abbrev":"ART","offset":-10800000,"posix":952052400000,"save":0},{"wallclock":938908800000,"format":"AR%sT","abbrev":"ARST","offset":-14400000,"posix":938919600000,"save":3600000,"rules":"Arg"},{"wallclock":687916800000,"format":"AR%sT","abbrev":"ARST","offset":-10800000,"posix":687931200000,"save":3600000,"rules":"Arg"},{"wallclock":667958400000,"format":"WART","abbrev":"WART","offset":-14400000,"posix":667965600000,"save":0},{"wallclock":-7603200000,"format":"AR%sT","abbrev":"ART","offset":-10800000,"posix":-7588800000,"save":0,"rules":"Arg"},{"wallclock":-1233446400000,"format":"AR%sT","abbrev":"ARST","offset":-14400000,"posix":-1233432000000,"save":3600000,"rules":"Arg"},{"wallclock":-1567468800000,"format":"ART","abbrev":"ART","offset":-14400000,"posix":-1567453392000,"save":0},{"wallclock":-2372112000000,"format":"CMT","abbrev":"CMT","offset":-15408000,"posix":-2372096212000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":-15788000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{"Arg":[{"from":2008,"to":2009,"month":2,"day":[0,15],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":2008,"to":2008,"month":9,"day":[0,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":2007,"to":2007,"month":11,"day":[7,30],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":2000,"to":2000,"month":2,"day":[7,3],"time":0,"clock":"wallclock","save":0,"letter":"","saved":0},{"from":1999,"to":1999,"month":9,"day":[0,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1989,"to":1993,"month":2,"day":[0,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1989,"to":1992,"month":9,"day":[0,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1988,"to":1988,"month":11,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1974,"to":1974,"month":4,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1974,"to":1974,"month":0,"day":[7,23],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1968,"to":1969,"month":3,"day":[0,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1967,"to":1968,"month":9,"day":[0,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1967,"to":1967,"month":3,"day":[7,2],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1964,"to":1966,"month":2,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1964,"to":1966,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1963,"to":1963,"month":9,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1963,"to":1963,"month":11,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1946,"to":1946,"month":9,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1946,"to":1946,"month":2,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1943,"to":1943,"month":7,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1943,"to":1943,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1941,"to":1941,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1941,"to":1941,"month":5,"day":[7,15],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1940,"to":1940,"month":6,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1932,"to":1940,"month":2,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1932,"to":1939,"month":10,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1931,"to":1931,"month":3,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1931,"to":1931,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1930,"to":1930,"month":11,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0}]}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"America/Argentina/ComodRivadavia":["z",{"wallclock":1224288000000,"format":"ART","abbrev":"ART","offset":-10800000,"posix":1224298800000,"save":0},{"wallclock":1087689600000,"format":"AR%sT","abbrev":"ART","offset":-10800000,"posix":1087704000000,"save":0,"rules":"Arg"},{"wallclock":1086048000000,"format":"WART","abbrev":"WART","offset":-14400000,"posix":1086058800000,"save":0},{"wallclock":952041600000,"format":"ART","abbrev":"ART","offset":-10800000,"posix":952052400000,"save":0},{"wallclock":938908800000,"format":"AR%sT","abbrev":"ARST","offset":-14400000,"posix":938919600000,"save":3600000,"rules":"Arg"},{"wallclock":687916800000,"format":"AR%sT","abbrev":"ARST","offset":-10800000,"posix":687931200000,"save":3600000,"rules":"Arg"},{"wallclock":667958400000,"format":"WART","abbrev":"WART","offset":-14400000,"posix":667965600000,"save":0},{"wallclock":-7603200000,"format":"AR%sT","abbrev":"ART","offset":-10800000,"posix":-7588800000,"save":0,"rules":"Arg"},{"wallclock":-1233446400000,"format":"AR%sT","abbrev":"ARST","offset":-14400000,"posix":-1233432000000,"save":3600000,"rules":"Arg"},{"wallclock":-1567468800000,"format":"ART","abbrev":"ART","offset":-14400000,"posix":-1567453392000,"save":0},{"wallclock":-2372112000000,"format":"CMT","abbrev":"CMT","offset":-15408000,"posix":-2372096212000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":-15788000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{"Arg":[{"from":2008,"to":2009,"month":2,"day":[0,15],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":2008,"to":2008,"month":9,"day":[0,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":2007,"to":2007,"month":11,"day":[7,30],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":2000,"to":2000,"month":2,"day":[7,3],"time":0,"clock":"wallclock","save":0,"letter":"","saved":0},{"from":1999,"to":1999,"month":9,"day":[0,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1989,"to":1993,"month":2,"day":[0,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1989,"to":1992,"month":9,"day":[0,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1988,"to":1988,"month":11,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1974,"to":1974,"month":4,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1974,"to":1974,"month":0,"day":[7,23],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1968,"to":1969,"month":3,"day":[0,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1967,"to":1968,"month":9,"day":[0,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1967,"to":1967,"month":3,"day":[7,2],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1964,"to":1966,"month":2,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1964,"to":1966,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1963,"to":1963,"month":9,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1963,"to":1963,"month":11,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1946,"to":1946,"month":9,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1946,"to":1946,"month":2,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1943,"to":1943,"month":7,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1943,"to":1943,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1941,"to":1941,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1941,"to":1941,"month":5,"day":[7,15],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1940,"to":1940,"month":6,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1932,"to":1940,"month":2,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1932,"to":1939,"month":10,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1931,"to":1931,"month":3,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1931,"to":1931,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1930,"to":1930,"month":11,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0}]}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"America/Argentina/Cordoba":["z",{"wallclock":952041600000,"format":"AR%sT","abbrev":"ART","offset":-10800000,"posix":952052400000,"save":0,"rules":"Arg"},{"wallclock":938908800000,"format":"AR%sT","abbrev":"ARST","offset":-14400000,"posix":938919600000,"save":3600000,"rules":"Arg"},{"wallclock":687916800000,"format":"AR%sT","abbrev":"ARST","offset":-10800000,"posix":687931200000,"save":3600000,"rules":"Arg"},{"wallclock":667958400000,"format":"WART","abbrev":"WART","offset":-14400000,"posix":667965600000,"save":0},{"wallclock":-7603200000,"format":"AR%sT","abbrev":"ART","offset":-10800000,"posix":-7588800000,"save":0,"rules":"Arg"},{"wallclock":-1233446400000,"format":"AR%sT","abbrev":"ARST","offset":-14400000,"posix":-1233432000000,"save":3600000,"rules":"Arg"},{"wallclock":-1567468800000,"format":"ART","abbrev":"ART","offset":-14400000,"posix":-1567453392000,"save":0},{"wallclock":-2372112000000,"format":"CMT","abbrev":"CMT","offset":-15408000,"posix":-2372096592000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":-15408000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{"Arg":[{"from":2008,"to":2009,"month":2,"day":[0,15],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":2008,"to":2008,"month":9,"day":[0,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":2007,"to":2007,"month":11,"day":[7,30],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":2000,"to":2000,"month":2,"day":[7,3],"time":0,"clock":"wallclock","save":0,"letter":"","saved":0},{"from":1999,"to":1999,"month":9,"day":[0,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1989,"to":1993,"month":2,"day":[0,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1989,"to":1992,"month":9,"day":[0,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1988,"to":1988,"month":11,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1974,"to":1974,"month":4,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1974,"to":1974,"month":0,"day":[7,23],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1968,"to":1969,"month":3,"day":[0,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1967,"to":1968,"month":9,"day":[0,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1967,"to":1967,"month":3,"day":[7,2],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1964,"to":1966,"month":2,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1964,"to":1966,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1963,"to":1963,"month":9,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1963,"to":1963,"month":11,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1946,"to":1946,"month":9,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1946,"to":1946,"month":2,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1943,"to":1943,"month":7,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1943,"to":1943,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1941,"to":1941,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1941,"to":1941,"month":5,"day":[7,15],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1940,"to":1940,"month":6,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1932,"to":1940,"month":2,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1932,"to":1939,"month":10,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1931,"to":1931,"month":3,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1931,"to":1931,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1930,"to":1930,"month":11,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0}]}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"America/Argentina/Jujuy":["z",{"wallclock":1224288000000,"format":"ART","abbrev":"ART","offset":-10800000,"posix":1224298800000,"save":0},{"wallclock":952041600000,"format":"AR%sT","abbrev":"ART","offset":-10800000,"posix":952052400000,"save":0,"rules":"Arg"},{"wallclock":938908800000,"format":"AR%sT","abbrev":"ARST","offset":-14400000,"posix":938919600000,"save":3600000,"rules":"Arg"},{"wallclock":694224000000,"format":"AR%sT","abbrev":"ARST","offset":-10800000,"posix":694231200000,"save":3600000,"rules":"Arg"},{"wallclock":686707200000,"format":"ARST","abbrev":"ARST","offset":-10800000,"posix":686721600000,"save":3600000},{"wallclock":669168000000,"format":"WART","abbrev":"WART","offset":-14400000,"posix":669178800000,"save":0},{"wallclock":657072000000,"format":"WARST","abbrev":"WARST","offset":-14400000,"posix":657086400000,"save":3600000},{"wallclock":636508800000,"format":"WART","abbrev":"WART","offset":-14400000,"posix":636516000000,"save":0},{"wallclock":-7603200000,"format":"AR%sT","abbrev":"ART","offset":-10800000,"posix":-7588800000,"save":0,"rules":"Arg"},{"wallclock":-1233446400000,"format":"AR%sT","abbrev":"ARST","offset":-14400000,"posix":-1233432000000,"save":3600000,"rules":"Arg"},{"wallclock":-1567468800000,"format":"ART","abbrev":"ART","offset":-14400000,"posix":-1567453392000,"save":0},{"wallclock":-2372112000000,"format":"CMT","abbrev":"CMT","offset":-15408000,"posix":-2372096328000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":-15672000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{"Arg":[{"from":2008,"to":2009,"month":2,"day":[0,15],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":2008,"to":2008,"month":9,"day":[0,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":2007,"to":2007,"month":11,"day":[7,30],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":2000,"to":2000,"month":2,"day":[7,3],"time":0,"clock":"wallclock","save":0,"letter":"","saved":0},{"from":1999,"to":1999,"month":9,"day":[0,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1989,"to":1993,"month":2,"day":[0,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1989,"to":1992,"month":9,"day":[0,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1988,"to":1988,"month":11,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1974,"to":1974,"month":4,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1974,"to":1974,"month":0,"day":[7,23],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1968,"to":1969,"month":3,"day":[0,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1967,"to":1968,"month":9,"day":[0,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1967,"to":1967,"month":3,"day":[7,2],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1964,"to":1966,"month":2,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1964,"to":1966,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1963,"to":1963,"month":9,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1963,"to":1963,"month":11,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1946,"to":1946,"month":9,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1946,"to":1946,"month":2,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1943,"to":1943,"month":7,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1943,"to":1943,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1941,"to":1941,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1941,"to":1941,"month":5,"day":[7,15],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1940,"to":1940,"month":6,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1932,"to":1940,"month":2,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1932,"to":1939,"month":10,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1931,"to":1931,"month":3,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1931,"to":1931,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1930,"to":1930,"month":11,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0}]}}
|
|
@ -0,0 +1 @@
|
|||
module.exports={"zones":{"America/Argentina/La_Rioja":["z",{"wallclock":1224288000000,"format":"ART","abbrev":"ART","offset":-10800000,"posix":1224298800000,"save":0},{"wallclock":1087689600000,"format":"AR%sT","abbrev":"ART","offset":-10800000,"posix":1087704000000,"save":0,"rules":"Arg"},{"wallclock":1086048000000,"format":"WART","abbrev":"WART","offset":-14400000,"posix":1086058800000,"save":0},{"wallclock":952041600000,"format":"ART","abbrev":"ART","offset":-10800000,"posix":952052400000,"save":0},{"wallclock":938908800000,"format":"AR%sT","abbrev":"ARST","offset":-14400000,"posix":938919600000,"save":3600000,"rules":"Arg"},{"wallclock":673574400000,"format":"AR%sT","abbrev":"ART","offset":-10800000,"posix":673588800000,"save":0,"rules":"Arg"},{"wallclock":667785600000,"format":"WART","abbrev":"WART","offset":-14400000,"posix":667792800000,"save":0},{"wallclock":-7603200000,"format":"AR%sT","abbrev":"ART","offset":-10800000,"posix":-7588800000,"save":0,"rules":"Arg"},{"wallclock":-1233446400000,"format":"AR%sT","abbrev":"ARST","offset":-14400000,"posix":-1233432000000,"save":3600000,"rules":"Arg"},{"wallclock":-1567468800000,"format":"ART","abbrev":"ART","offset":-14400000,"posix":-1567453392000,"save":0},{"wallclock":-2372112000000,"format":"CMT","abbrev":"CMT","offset":-15408000,"posix":-2372095956000,"save":0},{"wallclock":-1.7976931348623157e+308,"format":"LMT","abbrev":"LMT","offset":-16044000,"posix":-1.7976931348623157e+308,"save":0}]},"rules":{"Arg":[{"from":2008,"to":2009,"month":2,"day":[0,15],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":2008,"to":2008,"month":9,"day":[0,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":2007,"to":2007,"month":11,"day":[7,30],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":2000,"to":2000,"month":2,"day":[7,3],"time":0,"clock":"wallclock","save":0,"letter":"","saved":0},{"from":1999,"to":1999,"month":9,"day":[0,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1989,"to":1993,"month":2,"day":[0,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1989,"to":1992,"month":9,"day":[0,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1988,"to":1988,"month":11,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1974,"to":1974,"month":4,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1974,"to":1974,"month":0,"day":[7,23],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1968,"to":1969,"month":3,"day":[0,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1967,"to":1968,"month":9,"day":[0,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1967,"to":1967,"month":3,"day":[7,2],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1964,"to":1966,"month":2,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1964,"to":1966,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1963,"to":1963,"month":9,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1963,"to":1963,"month":11,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1946,"to":1946,"month":9,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1946,"to":1946,"month":2,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1943,"to":1943,"month":7,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1943,"to":1943,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1941,"to":1941,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1941,"to":1941,"month":5,"day":[7,15],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1940,"to":1940,"month":6,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1932,"to":1940,"month":2,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1932,"to":1939,"month":10,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1931,"to":1931,"month":3,"day":[7,1],"time":0,"clock":"wallclock","save":0,"letter":"","saved":3600000},{"from":1931,"to":1931,"month":9,"day":[7,15],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0},{"from":1930,"to":1930,"month":11,"day":[7,1],"time":0,"clock":"wallclock","save":60,"letter":"S","saved":0}]}}
|
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue