mirror of https://gitee.com/bigwinds/arangodb
Merge branch 'devel' of github.com:arangodb/arangodb into MIT
This commit is contained in:
commit
8cb670595b
18
CHANGELOG
18
CHANGELOG
|
@ -43,10 +43,26 @@ devel
|
||||||
|
|
||||||
* Foxx OAuth2 module now correctly passes the `access_token` to the OAuth2 server
|
* Foxx OAuth2 module now correctly passes the `access_token` to the OAuth2 server
|
||||||
|
|
||||||
|
* added timezone module
|
||||||
|
|
||||||
v3.0.4 (XXXX-XX-XX)
|
|
||||||
|
v3.0.5 (XXXX-XX-XX)
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
|
* fixed issue #1977
|
||||||
|
|
||||||
|
* fixed extraction of _id attribute in AQL traversal conditions
|
||||||
|
|
||||||
|
|
||||||
|
v3.0.4 (2016-08-01)
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
* added missing lock for periodic jobs access
|
||||||
|
|
||||||
|
* fix multiple foxx related cluster issues
|
||||||
|
|
||||||
|
* fix handling of empty AQL query strings
|
||||||
|
|
||||||
* fixed issue in `INTERSECTION` AQL function with duplicate elements
|
* fixed issue in `INTERSECTION` AQL function with duplicate elements
|
||||||
in the source arrays
|
in the source arrays
|
||||||
|
|
||||||
|
|
|
@ -56,11 +56,14 @@ endif ()
|
||||||
set(ARANGODB_VERSION_MAJOR "3")
|
set(ARANGODB_VERSION_MAJOR "3")
|
||||||
set(ARANGODB_VERSION_MINOR "0")
|
set(ARANGODB_VERSION_MINOR "0")
|
||||||
set(ARANGODB_VERSION_REVISION "devel")
|
set(ARANGODB_VERSION_REVISION "devel")
|
||||||
|
set(ARANGODB_PACKAGE_REVISION "1")
|
||||||
|
|
||||||
set(ARANGODB_VERSION
|
set(ARANGODB_VERSION
|
||||||
"${ARANGODB_VERSION_MAJOR}.${ARANGODB_VERSION_MINOR}.${ARANGODB_VERSION_REVISION}")
|
"${ARANGODB_VERSION_MAJOR}.${ARANGODB_VERSION_MINOR}.${ARANGODB_VERSION_REVISION}")
|
||||||
|
|
||||||
# for NSIS
|
# for the packages
|
||||||
|
set(ARANGODB_PACKAGE_VENDOR "ArangoDB GmbH")
|
||||||
|
set(ARANGODB_PACKAGE_CONTACT "info@arangodb.com")
|
||||||
set(ARANGODB_DISPLAY_NAME "ArangoDB")
|
set(ARANGODB_DISPLAY_NAME "ArangoDB")
|
||||||
set(ARANGODB_URL_INFO_ABOUT "https://www.arangodb.com")
|
set(ARANGODB_URL_INFO_ABOUT "https://www.arangodb.com")
|
||||||
set(ARANGODB_HELP_LINK "https://docs.arangodb.com/${ARANGODB_VERSION_MAJOR}.${ARANGODB_VERSION_MINOR}/")
|
set(ARANGODB_HELP_LINK "https://docs.arangodb.com/${ARANGODB_VERSION_MAJOR}.${ARANGODB_VERSION_MINOR}/")
|
||||||
|
@ -91,7 +94,7 @@ set(BIN_ARANGOVPACK arangovpack)
|
||||||
# test binaries
|
# test binaries
|
||||||
set(TEST_BASICS_SUITE basics_suite)
|
set(TEST_BASICS_SUITE basics_suite)
|
||||||
set(TEST_GEO_SUITE geo_suite)
|
set(TEST_GEO_SUITE geo_suite)
|
||||||
|
set(PACKAGES_LIST)
|
||||||
################################################################################
|
################################################################################
|
||||||
## VERSION FILES
|
## VERSION FILES
|
||||||
################################################################################
|
################################################################################
|
||||||
|
@ -618,6 +621,7 @@ if (VERBOSE)
|
||||||
message(STATUS)
|
message(STATUS)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
## 3RD PARTY
|
## 3RD PARTY
|
||||||
################################################################################
|
################################################################################
|
||||||
|
@ -691,6 +695,7 @@ add_definitions("-DARANGODB_LIBEV_VERSION=\"${LIBEV_VERSION}\"")
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
find_package(OpenSSL REQUIRED)
|
find_package(OpenSSL REQUIRED)
|
||||||
|
|
||||||
include_directories(${OPENSSL_INCLUDE_DIR})
|
include_directories(${OPENSSL_INCLUDE_DIR})
|
||||||
add_definitions(-DARANGODB_OPENSSL_VERSION=\"${OPENSSL_VERSION}\")
|
add_definitions(-DARANGODB_OPENSSL_VERSION=\"${OPENSSL_VERSION}\")
|
||||||
|
|
||||||
|
@ -733,8 +738,9 @@ add_definitions("-DARANGODB_ZLIB_VERSION=\"${ZLIB_VERSION}\"")
|
||||||
## PATHS, installation, packages
|
## PATHS, installation, packages
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
include(ArangoDBMacros)
|
include(ArangoDBInstall)
|
||||||
|
|
||||||
|
include(packages/packages)
|
||||||
################################################################################
|
################################################################################
|
||||||
## ERRORS FILE
|
## ERRORS FILE
|
||||||
################################################################################
|
################################################################################
|
||||||
|
@ -854,10 +860,7 @@ if( EXISTS "${CMAKE_CURRENT_BINARY_DIR}/compile_commands.json" )
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/packages/arangodb-client)
|
|
||||||
configure_file(cmake/packages/package-client.txt ${BUILD_DIR}/CMakeLists.txt @ONLY)
|
|
||||||
add_custom_target(package-arongodb-client COMMAND ${CMAKE_COMMAND} .
|
|
||||||
COMMAND ${CMAKE_CPACK_COMMAND} -G DEB
|
|
||||||
COMMAND cp *.deb ${PROJECT_BINARY_DIR}
|
|
||||||
WORKING_DIRECTORY ${BUILD_DIR})
|
|
||||||
|
|
||||||
|
add_custom_target(packages
|
||||||
|
DEPENDS ${PACKAGES_LIST}
|
||||||
|
)
|
||||||
|
|
|
@ -119,11 +119,14 @@ The following [NPM modules](https://www.npmjs.com) are preinstalled:
|
||||||
* [minimatch](https://github.com/isaacs/minimatch)
|
* [minimatch](https://github.com/isaacs/minimatch)
|
||||||
is a glob matcher for matching wildcards in file paths.
|
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)
|
* [qs](https://github.com/hapijs/qs)
|
||||||
provides utilities for dealing with query strings using a different format than the **querystring** module.
|
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)
|
* [sinon](http://sinonjs.org)
|
||||||
is a mocking library for writing test stubs, mocks and spies.
|
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.
|
||||||
|
|
|
@ -330,25 +330,30 @@ ${MAKE_CMD_PREFIX} ${MAKE} ${VERBOSE_MAKE} "${PAR}" "${PARALLEL_BUILDS}" ${MAKE_
|
||||||
git rev-parse HEAD > ../last_compiled_version.sha
|
git rev-parse HEAD > ../last_compiled_version.sha
|
||||||
|
|
||||||
if [ -n "$CPACK" -a -n "${TARGET_DIR}" ]; then
|
if [ -n "$CPACK" -a -n "${TARGET_DIR}" ]; then
|
||||||
for PACK in ${CPACK}; do
|
make packages
|
||||||
# if [ "$PACK" == "DEB" ]; then
|
#todo cmake -build -target packages
|
||||||
# make prepare_debian
|
|
||||||
# fi
|
|
||||||
|
|
||||||
cpack -G "$PACK"
|
|
||||||
|
|
||||||
EXT=`echo $PACK|tr '[:upper:]' '[:lower:]'`
|
|
||||||
if [ "$PACK" == "Bundle" ]; then
|
|
||||||
EXT = 'dmg'
|
|
||||||
fi
|
|
||||||
if [ "$PACK" == "NSIS" ]; then
|
|
||||||
true
|
|
||||||
else
|
|
||||||
cp *.${EXT} ${TARGET_DIR}
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
fi
|
||||||
|
#if [ -n "$CPACK" -a -n "${TARGET_DIR}" ]; then
|
||||||
|
# for PACK in ${CPACK}; do
|
||||||
|
## if [ "$PACK" == "DEB" ]; then
|
||||||
|
## make prepare_debian
|
||||||
|
## fi
|
||||||
|
#
|
||||||
|
# cpack -G "$PACK"
|
||||||
|
#
|
||||||
|
# EXT=`echo $PACK|tr '[:upper:]' '[:lower:]'`
|
||||||
|
# if [ "$PACK" == "Bundle" ]; then
|
||||||
|
# EXT = 'dmg'
|
||||||
|
# fi
|
||||||
|
# if [ "$PACK" == "NSIS" ]; then
|
||||||
|
# true
|
||||||
|
# else
|
||||||
|
# cp *.${EXT} ${TARGET_DIR}
|
||||||
|
# fi
|
||||||
|
# done
|
||||||
|
#fi
|
||||||
|
|
||||||
|
|
||||||
# and install
|
# and install
|
||||||
|
|
||||||
if test -n "${TARGET_DIR}"; then
|
if test -n "${TARGET_DIR}"; then
|
||||||
|
|
|
@ -1,9 +1,3 @@
|
||||||
# debian
|
|
||||||
if (CPACK_GENERATOR STREQUAL "DEB")
|
|
||||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}")
|
|
||||||
|
|
||||||
set(CPACK_COMPONENTS_ALL debian-extras)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
# OSX bundle
|
# OSX bundle
|
||||||
if (CPACK_GENERATOR STREQUAL "Bundle")
|
if (CPACK_GENERATOR STREQUAL "Bundle")
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
stand-alone shell
|
||||||
|
A distributed free and open-source database with a flexible data model for documents,
|
||||||
|
graphs, and key-values. Build high performance applications using a convenient
|
||||||
|
SQL-like query language or JavaScript extensions.
|
||||||
|
.
|
||||||
|
Copyright: 2014-2016 by ArangoDB GmbH
|
||||||
|
Copyright: 2012-2013 by triAGENS GmbH
|
||||||
|
ArangoDB Software
|
||||||
|
www.arangodb.com
|
|
@ -1,4 +1,4 @@
|
||||||
a multi-purpose NoSQL database
|
the multi-model NoSQL database
|
||||||
A distributed free and open-source database with a flexible data model for documents,
|
A distributed free and open-source database with a flexible data model for documents,
|
||||||
graphs, and key-values. Build high performance applications using a convenient
|
graphs, and key-values. Build high performance applications using a convenient
|
||||||
SQL-like query language or JavaScript extensions.
|
SQL-like query language or JavaScript extensions.
|
||||||
|
|
|
@ -168,7 +168,7 @@
|
||||||
* GITHUB: https://github.com/jshttp/http-errors
|
* GITHUB: https://github.com/jshttp/http-errors
|
||||||
* License: [MIT License](https://github.com/jshttp/http-errors/blob/master/LICENSE)
|
* License: [MIT License](https://github.com/jshttp/http-errors/blob/master/LICENSE)
|
||||||
|
|
||||||
#### inflect
|
#### i (inflect)
|
||||||
|
|
||||||
* GITHUB: https://github.com/pksunkara/inflect
|
* GITHUB: https://github.com/pksunkara/inflect
|
||||||
* License: [MIT-style License](https://github.com/pksunkara/inflect/blob/master/LICENSE)
|
* License: [MIT-style License](https://github.com/pksunkara/inflect/blob/master/LICENSE)
|
||||||
|
@ -220,11 +220,6 @@
|
||||||
* GITHUB: https://github.com/mochajs/mocha
|
* GITHUB: https://github.com/mochajs/mocha
|
||||||
* License: [MIT License](https://github.com/mochajs/mocha/blob/master/LICENSE)
|
* 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
|
#### qs
|
||||||
|
|
||||||
* GITHUB: https://github.com/hapijs/qs
|
* GITHUB: https://github.com/hapijs/qs
|
||||||
|
@ -252,6 +247,11 @@
|
||||||
* GITHUB: https://github.com/jshttp/statuses
|
* GITHUB: https://github.com/jshttp/statuses
|
||||||
* License: [MIT License](https://github.com/jshttp/statuses/blob/master/LICENSE)
|
* 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
|
#### type-is
|
||||||
|
|
||||||
* GITHUB: https://github.com/jshttp/type-is
|
* GITHUB: https://github.com/jshttp/type-is
|
||||||
|
|
|
@ -105,8 +105,8 @@ struct log_t {
|
||||||
std::chrono::system_clock::now().time_since_epoch())) {}
|
std::chrono::system_clock::now().time_since_epoch())) {}
|
||||||
|
|
||||||
friend std::ostream& operator<<(std::ostream& o, log_t const& l) {
|
friend std::ostream& operator<<(std::ostream& o, log_t const& l) {
|
||||||
o << l.index << " " << l.term << " "
|
o << l.index << " " << l.term << " " << VPackSlice(l.entry->data()).toJson()
|
||||||
<< l.entry->toString() << " " << l.timestamp.count();
|
<< " " << l.timestamp.count();
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -52,6 +52,8 @@ Agent::Agent(config_t const& config)
|
||||||
_state.configure(this);
|
_state.configure(this);
|
||||||
_constituent.configure(this);
|
_constituent.configure(this);
|
||||||
_confirmed.resize(size(), 0); // agency's size and reset to 0
|
_confirmed.resize(size(), 0); // agency's size and reset to 0
|
||||||
|
_lastHighest.resize(size(), 0);
|
||||||
|
_lastSent.resize(size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -237,8 +239,6 @@ bool Agent::recvAppendEntriesRPC(term_t term,
|
||||||
|
|
||||||
MUTEX_LOCKER(mutexLocker, _ioLock);
|
MUTEX_LOCKER(mutexLocker, _ioLock);
|
||||||
|
|
||||||
// index_t lastPersistedIndex = _lastCommitIndex;
|
|
||||||
|
|
||||||
if (this->term() > term) {
|
if (this->term() > term) {
|
||||||
LOG_TOPIC(WARN, Logger::AGENCY) << "I have a higher term than RPC caller.";
|
LOG_TOPIC(WARN, Logger::AGENCY) << "I have a higher term than RPC caller.";
|
||||||
return false;
|
return false;
|
||||||
|
@ -256,11 +256,12 @@ bool Agent::recvAppendEntriesRPC(term_t term,
|
||||||
<< " entries to state machine.";
|
<< " entries to state machine.";
|
||||||
/* bool success = */
|
/* bool success = */
|
||||||
_state.log(queries, term, prevIndex, prevTerm);
|
_state.log(queries, term, prevIndex, prevTerm);
|
||||||
_spearhead.apply(_state.slices(_lastCommitIndex + 1, leaderCommitIndex));
|
|
||||||
_readDB.apply(_state.slices(_lastCommitIndex + 1, leaderCommitIndex));
|
|
||||||
_lastCommitIndex = leaderCommitIndex;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_spearhead.apply(_state.slices(_lastCommitIndex + 1, leaderCommitIndex));
|
||||||
|
_readDB.apply(_state.slices(_lastCommitIndex + 1, leaderCommitIndex));
|
||||||
|
_lastCommitIndex = leaderCommitIndex;
|
||||||
|
|
||||||
if (_lastCommitIndex >= _nextCompationAfter) {
|
if (_lastCommitIndex >= _nextCompationAfter) {
|
||||||
|
|
||||||
_state.compact(_lastCommitIndex);
|
_state.compact(_lastCommitIndex);
|
||||||
|
@ -276,17 +277,19 @@ bool Agent::recvAppendEntriesRPC(term_t term,
|
||||||
priv_rpc_ret_t Agent::sendAppendEntriesRPC(
|
priv_rpc_ret_t Agent::sendAppendEntriesRPC(
|
||||||
arangodb::consensus::id_t follower_id) {
|
arangodb::consensus::id_t follower_id) {
|
||||||
|
|
||||||
index_t last_confirmed = _confirmed[follower_id];
|
|
||||||
std::vector<log_t> unconfirmed = _state.get(last_confirmed);
|
|
||||||
|
|
||||||
term_t t(0);
|
term_t t(0);
|
||||||
{
|
{
|
||||||
MUTEX_LOCKER(mutexLocker, _ioLock);
|
MUTEX_LOCKER(mutexLocker, _ioLock);
|
||||||
t = this->term();
|
t = this->term();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (unconfirmed.empty()) {
|
index_t last_confirmed = _confirmed[follower_id];
|
||||||
return priv_rpc_ret_t(false, t);
|
std::vector<log_t> unconfirmed = _state.get(last_confirmed);
|
||||||
|
index_t highest = unconfirmed.back().index;
|
||||||
|
|
||||||
|
if (highest == _lastHighest.at(follower_id) && (long)(500.0e6*_config.minPing) >
|
||||||
|
(std::chrono::system_clock::now() - _lastSent.at(follower_id)).count()) {
|
||||||
|
return priv_rpc_ret_t(true, t);
|
||||||
}
|
}
|
||||||
|
|
||||||
// RPC path
|
// RPC path
|
||||||
|
@ -300,9 +303,6 @@ priv_rpc_ret_t Agent::sendAppendEntriesRPC(
|
||||||
auto headerFields =
|
auto headerFields =
|
||||||
std::make_unique<std::unordered_map<std::string, std::string>>();
|
std::make_unique<std::unordered_map<std::string, std::string>>();
|
||||||
|
|
||||||
// Highest unconfirmed
|
|
||||||
index_t last = unconfirmed[0].index;
|
|
||||||
|
|
||||||
// Body
|
// Body
|
||||||
Builder builder;
|
Builder builder;
|
||||||
builder.add(VPackValue(VPackValueType::Array));
|
builder.add(VPackValue(VPackValueType::Array));
|
||||||
|
@ -313,14 +313,14 @@ priv_rpc_ret_t Agent::sendAppendEntriesRPC(
|
||||||
builder.add("term", VPackValue(entry.term));
|
builder.add("term", VPackValue(entry.term));
|
||||||
builder.add("query", VPackSlice(entry.entry->data()));
|
builder.add("query", VPackSlice(entry.entry->data()));
|
||||||
builder.close();
|
builder.close();
|
||||||
last = entry.index;
|
highest = entry.index;
|
||||||
}
|
}
|
||||||
builder.close();
|
builder.close();
|
||||||
|
|
||||||
// Verbose output
|
// Verbose output
|
||||||
if (unconfirmed.size() > 1) {
|
if (unconfirmed.size() > 1) {
|
||||||
LOG_TOPIC(DEBUG, Logger::AGENCY) << "Appending " << unconfirmed.size() - 1
|
LOG_TOPIC(DEBUG, Logger::AGENCY) << "Appending " << unconfirmed.size() - 1
|
||||||
<< " entries up to index " << last
|
<< " entries up to index " << highest
|
||||||
<< " to follower " << follower_id;
|
<< " to follower " << follower_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -329,7 +329,10 @@ priv_rpc_ret_t Agent::sendAppendEntriesRPC(
|
||||||
"1", 1, _config.endpoints[follower_id],
|
"1", 1, _config.endpoints[follower_id],
|
||||||
arangodb::GeneralRequest::RequestType::POST, path.str(),
|
arangodb::GeneralRequest::RequestType::POST, path.str(),
|
||||||
std::make_shared<std::string>(builder.toJson()), headerFields,
|
std::make_shared<std::string>(builder.toJson()), headerFields,
|
||||||
std::make_shared<AgentCallback>(this, follower_id, last), 1, true);
|
std::make_shared<AgentCallback>(this, follower_id, highest), 1, true);
|
||||||
|
|
||||||
|
_lastSent.at(follower_id) = std::chrono::system_clock::now();
|
||||||
|
_lastHighest.at(follower_id) = highest;
|
||||||
|
|
||||||
return priv_rpc_ret_t(true, t);
|
return priv_rpc_ret_t(true, t);
|
||||||
|
|
||||||
|
@ -343,19 +346,27 @@ bool Agent::load() {
|
||||||
ApplicationServer::getFeature<DatabaseFeature>("Database");
|
ApplicationServer::getFeature<DatabaseFeature>("Database");
|
||||||
|
|
||||||
auto vocbase = database->vocbase();
|
auto vocbase = database->vocbase();
|
||||||
|
auto queryRegistry = QueryRegistryFeature::QUERY_REGISTRY;
|
||||||
|
|
||||||
if (vocbase == nullptr) {
|
if (vocbase == nullptr) {
|
||||||
LOG_TOPIC(FATAL, Logger::AGENCY) << "could not determine _system database";
|
LOG_TOPIC(FATAL, Logger::AGENCY) << "could not determine _system database";
|
||||||
FATAL_ERROR_EXIT();
|
FATAL_ERROR_EXIT();
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_TOPIC(DEBUG, Logger::AGENCY) << "Loading persistent state.";
|
LOG_TOPIC(DEBUG, Logger::AGENCY) << "Loading persistent state.";
|
||||||
if (!_state.loadCollections(vocbase, _config.waitForSync)) {
|
if (!_state.loadCollections(vocbase, queryRegistry, _config.waitForSync)) {
|
||||||
LOG_TOPIC(DEBUG, Logger::AGENCY)
|
LOG_TOPIC(DEBUG, Logger::AGENCY)
|
||||||
<< "Failed to load persistent state on startup.";
|
<< "Failed to load persistent state on startup.";
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_TOPIC(DEBUG, Logger::AGENCY) << "Reassembling spearhead and read stores.";
|
LOG_TOPIC(DEBUG, Logger::AGENCY) << "Reassembling spearhead and read stores.";
|
||||||
_spearhead.apply(_state.slices(_lastCommitIndex + 1));
|
_spearhead.apply(_state.slices(_lastCommitIndex + 1));
|
||||||
|
|
||||||
|
{
|
||||||
|
CONDITION_LOCKER(guard, _appendCV);
|
||||||
|
guard.broadcast();
|
||||||
|
}
|
||||||
|
|
||||||
reportIn(id(), _state.lastLog().index);
|
reportIn(id(), _state.lastLog().index);
|
||||||
|
|
||||||
LOG_TOPIC(DEBUG, Logger::AGENCY) << "Starting spearhead worker.";
|
LOG_TOPIC(DEBUG, Logger::AGENCY) << "Starting spearhead worker.";
|
||||||
|
@ -363,7 +374,6 @@ bool Agent::load() {
|
||||||
_readDB.start();
|
_readDB.start();
|
||||||
|
|
||||||
LOG_TOPIC(DEBUG, Logger::AGENCY) << "Starting constituent personality.";
|
LOG_TOPIC(DEBUG, Logger::AGENCY) << "Starting constituent personality.";
|
||||||
auto queryRegistry = QueryRegistryFeature::QUERY_REGISTRY;
|
|
||||||
TRI_ASSERT(queryRegistry != nullptr);
|
TRI_ASSERT(queryRegistry != nullptr);
|
||||||
_constituent.start(vocbase, queryRegistry);
|
_constituent.start(vocbase, queryRegistry);
|
||||||
|
|
||||||
|
@ -434,7 +444,7 @@ void Agent::run() {
|
||||||
while (!this->isStopping() && size() > 1) {
|
while (!this->isStopping() && size() > 1) {
|
||||||
|
|
||||||
if (leading()) { // Only if leading
|
if (leading()) { // Only if leading
|
||||||
_appendCV.wait(100000);
|
_appendCV.wait(10000);
|
||||||
} else {
|
} else {
|
||||||
_appendCV.wait(); // Else wait for our moment in the sun
|
_appendCV.wait(); // Else wait for our moment in the sun
|
||||||
}
|
}
|
||||||
|
@ -485,11 +495,16 @@ void Agent::beginShutdown() {
|
||||||
bool Agent::lead() {
|
bool Agent::lead() {
|
||||||
|
|
||||||
// Key value stores
|
// Key value stores
|
||||||
//rebuildDBs();
|
rebuildDBs();
|
||||||
|
|
||||||
// Wake up run
|
// Wake up run
|
||||||
CONDITION_LOCKER(guard, _appendCV);
|
{
|
||||||
guard.broadcast();
|
CONDITION_LOCKER(guard, _appendCV);
|
||||||
|
guard.broadcast();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wake up supervision
|
||||||
|
_supervision.wakeUp();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
@ -497,10 +512,11 @@ bool Agent::lead() {
|
||||||
|
|
||||||
// Rebuild key value stores
|
// Rebuild key value stores
|
||||||
bool Agent::rebuildDBs() {
|
bool Agent::rebuildDBs() {
|
||||||
|
|
||||||
MUTEX_LOCKER(mutexLocker, _ioLock);
|
MUTEX_LOCKER(mutexLocker, _ioLock);
|
||||||
_spearhead.apply(_state.slices());
|
|
||||||
_readDB.apply(_state.slices());
|
_spearhead.apply(_state.slices(_lastCommitIndex+1));
|
||||||
|
_readDB.apply(_state.slices(_lastCommitIndex+1));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
@ -508,10 +524,16 @@ bool Agent::rebuildDBs() {
|
||||||
|
|
||||||
|
|
||||||
/// Last commit index
|
/// Last commit index
|
||||||
arangodb::consensus::index_t Agent::lastCommited() const {
|
arangodb::consensus::index_t Agent::lastCommitted() const {
|
||||||
return _lastCommitIndex;
|
return _lastCommitIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Last commit index
|
||||||
|
void Agent::lastCommitted(
|
||||||
|
arangodb::consensus::index_t lastCommitIndex) {
|
||||||
|
MUTEX_LOCKER(mutexLocker, _ioLock);
|
||||||
|
_lastCommitIndex = lastCommitIndex;
|
||||||
|
}
|
||||||
|
|
||||||
/// Last log entry
|
/// Last log entry
|
||||||
log_t const& Agent::lastLog() const { return _state.lastLog(); }
|
log_t const& Agent::lastLog() const { return _state.lastLog(); }
|
||||||
|
|
|
@ -71,7 +71,7 @@ class Agent : public arangodb::Thread {
|
||||||
bool fitness() const;
|
bool fitness() const;
|
||||||
|
|
||||||
/// @brief Leader ID
|
/// @brief Leader ID
|
||||||
arangodb::consensus::index_t lastCommited() const;
|
arangodb::consensus::index_t lastCommitted() const;
|
||||||
|
|
||||||
/// @brief Leader ID
|
/// @brief Leader ID
|
||||||
arangodb::consensus::id_t leaderID() const;
|
arangodb::consensus::id_t leaderID() const;
|
||||||
|
@ -137,6 +137,9 @@ class Agent : public arangodb::Thread {
|
||||||
private:
|
private:
|
||||||
Agent& operator=(VPackSlice const&);
|
Agent& operator=(VPackSlice const&);
|
||||||
|
|
||||||
|
/// @brief Leader ID
|
||||||
|
void lastCommitted(arangodb::consensus::index_t);
|
||||||
|
|
||||||
/// @brief This server (need endpoint)
|
/// @brief This server (need endpoint)
|
||||||
TRI_server_t* _server;
|
TRI_server_t* _server;
|
||||||
|
|
||||||
|
@ -164,7 +167,7 @@ class Agent : public arangodb::Thread {
|
||||||
/// @brief Spearhead (write) kv-store
|
/// @brief Spearhead (write) kv-store
|
||||||
Store _spearhead;
|
Store _spearhead;
|
||||||
|
|
||||||
/// @brief Commited (read) kv-store
|
/// @brief Committed (read) kv-store
|
||||||
Store _readDB;
|
Store _readDB;
|
||||||
|
|
||||||
/// @brief Condition variable for appendEntries
|
/// @brief Condition variable for appendEntries
|
||||||
|
@ -175,6 +178,8 @@ class Agent : public arangodb::Thread {
|
||||||
|
|
||||||
/// @brief Confirmed indices of all members of agency
|
/// @brief Confirmed indices of all members of agency
|
||||||
std::vector<index_t> _confirmed;
|
std::vector<index_t> _confirmed;
|
||||||
|
std::vector<index_t> _lastHighest;
|
||||||
|
std::vector<TimePoint> _lastSent;
|
||||||
arangodb::Mutex _ioLock; /**< @brief Read/Write lock */
|
arangodb::Mutex _ioLock; /**< @brief Read/Write lock */
|
||||||
|
|
||||||
/// @brief Next compaction after
|
/// @brief Next compaction after
|
||||||
|
|
|
@ -244,6 +244,7 @@ RestHandler::status RestAgencyHandler::handleConfig() {
|
||||||
body.add(VPackValue(VPackValueType::Object));
|
body.add(VPackValue(VPackValueType::Object));
|
||||||
body.add("term", Value(_agent->term()));
|
body.add("term", Value(_agent->term()));
|
||||||
body.add("leaderId", Value(_agent->leaderID()));
|
body.add("leaderId", Value(_agent->leaderID()));
|
||||||
|
body.add("lastCommited", Value(_agent->lastCommitted()));
|
||||||
body.add("configuration", _agent->config().toBuilder()->slice());
|
body.add("configuration", _agent->config().toBuilder()->slice());
|
||||||
body.close();
|
body.close();
|
||||||
generateResult(GeneralResponse::ResponseCode::OK, body.slice());
|
generateResult(GeneralResponse::ResponseCode::OK, body.slice());
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
|
||||||
#include "Aql/Query.h"
|
#include "Aql/Query.h"
|
||||||
|
#include "Aql/QueryRegistry.h"
|
||||||
#include "Basics/StaticStrings.h"
|
#include "Basics/StaticStrings.h"
|
||||||
#include "Basics/VelocyPackHelper.h"
|
#include "Basics/VelocyPackHelper.h"
|
||||||
#include "RestServer/QueryRegistryFeature.h"
|
#include "RestServer/QueryRegistryFeature.h"
|
||||||
|
@ -46,6 +47,7 @@
|
||||||
|
|
||||||
using namespace arangodb;
|
using namespace arangodb;
|
||||||
using namespace arangodb::application_features;
|
using namespace arangodb::application_features;
|
||||||
|
using namespace arangodb::aql;
|
||||||
using namespace arangodb::consensus;
|
using namespace arangodb::consensus;
|
||||||
using namespace arangodb::velocypack;
|
using namespace arangodb::velocypack;
|
||||||
using namespace arangodb::rest;
|
using namespace arangodb::rest;
|
||||||
|
@ -58,6 +60,7 @@ State::State(std::string const& endpoint)
|
||||||
_endpoint(endpoint),
|
_endpoint(endpoint),
|
||||||
_collectionsChecked(false),
|
_collectionsChecked(false),
|
||||||
_collectionsLoaded(false),
|
_collectionsLoaded(false),
|
||||||
|
_queryRegistry(nullptr),
|
||||||
_cur(0) {}
|
_cur(0) {}
|
||||||
|
|
||||||
|
|
||||||
|
@ -167,21 +170,49 @@ arangodb::consensus::index_t State::log(
|
||||||
|
|
||||||
|
|
||||||
void State::removeConflicts (query_t const& transactions) {
|
void State::removeConflicts (query_t const& transactions) {
|
||||||
|
|
||||||
VPackSlice slice = transactions->slice();
|
VPackSlice slice = transactions->slice();
|
||||||
TRI_ASSERT(slice.isArray());
|
TRI_ASSERT(slice.isArray());
|
||||||
|
|
||||||
if (slice.length() > 0) {
|
if (slice.length() > 0) {
|
||||||
|
|
||||||
|
auto bindVars = std::make_shared<VPackBuilder>();
|
||||||
|
bindVars->openObject();
|
||||||
|
bindVars->close();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
auto idx = slice[0].get("index").getUInt();
|
auto idx = slice[0].get("index").getUInt();
|
||||||
if (idx-_cur < _log.size()) {
|
if (idx-_cur < _log.size()) {
|
||||||
LOG_TOPIC(INFO, Logger::AGENCY)
|
LOG_TOPIC(DEBUG, Logger::AGENCY)
|
||||||
<< "Removing " << _log.size()-idx+_cur
|
<< "Removing " << _log.size()-idx+_cur
|
||||||
<< " entries from log starting with " << idx;
|
<< " entries from log starting with " << idx << "=" << _log.at(idx-_cur).index;
|
||||||
_log.erase(_log.begin()+idx);
|
|
||||||
|
// 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()+idx-_cur-1, _log.end());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
} catch (std::exception const& e) {
|
} catch (std::exception const& e) {
|
||||||
LOG_TOPIC(ERR, Logger::AGENCY) << e.what() << " " << __FILE__ << __LINE__;
|
LOG_TOPIC(ERR, Logger::AGENCY) << e.what() << " " << __FILE__ << __LINE__;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -327,12 +358,17 @@ template<class T> std::ostream& operator<< (std::ostream& o, std::deque<T> const
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Load collections
|
/// Load collections
|
||||||
bool State::loadCollections(TRI_vocbase_t* vocbase, bool waitForSync) {
|
bool State::loadCollections(TRI_vocbase_t* vocbase, QueryRegistry* queryRegistry,
|
||||||
|
bool waitForSync) {
|
||||||
|
|
||||||
_vocbase = vocbase;
|
_vocbase = vocbase;
|
||||||
|
_queryRegistry = queryRegistry;
|
||||||
|
|
||||||
|
TRI_ASSERT(_vocbase != nullptr);
|
||||||
|
|
||||||
_options.waitForSync = false;
|
_options.waitForSync = false;
|
||||||
_options.silent = true;
|
_options.silent = true;
|
||||||
|
|
||||||
if (loadPersisted()) {
|
if (loadPersisted()) {
|
||||||
if (_log.empty()) {
|
if (_log.empty()) {
|
||||||
std::shared_ptr<Buffer<uint8_t>> buf = std::make_shared<Buffer<uint8_t>>();
|
std::shared_ptr<Buffer<uint8_t>> buf = std::make_shared<Buffer<uint8_t>>();
|
||||||
|
@ -343,7 +379,7 @@ bool State::loadCollections(TRI_vocbase_t* vocbase, bool waitForSync) {
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG(WARN) << "... done";
|
LOG(WARN) << "... done";
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -441,6 +477,9 @@ bool State::loadRemaining() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_agent->rebuildDBs();
|
||||||
|
_agent->lastCommitted(_log.back().index);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,11 @@
|
||||||
struct TRI_vocbase_t;
|
struct TRI_vocbase_t;
|
||||||
|
|
||||||
namespace arangodb {
|
namespace arangodb {
|
||||||
|
|
||||||
|
namespace aql {
|
||||||
|
class QueryRegistry;
|
||||||
|
}
|
||||||
|
|
||||||
namespace consensus {
|
namespace consensus {
|
||||||
|
|
||||||
class Agent;
|
class Agent;
|
||||||
|
@ -85,7 +90,7 @@ class State {
|
||||||
bool configure(Agent* agent);
|
bool configure(Agent* agent);
|
||||||
|
|
||||||
/// @brief Load persisted data from above or start with empty log
|
/// @brief Load persisted data from above or start with empty log
|
||||||
bool loadCollections(TRI_vocbase_t*, bool);
|
bool loadCollections(TRI_vocbase_t*, aql::QueryRegistry*, bool);
|
||||||
|
|
||||||
/// @brief Pipe to ostream
|
/// @brief Pipe to ostream
|
||||||
friend std::ostream& operator<<(std::ostream& os, State const& s) {
|
friend std::ostream& operator<<(std::ostream& os, State const& s) {
|
||||||
|
@ -141,6 +146,9 @@ class State {
|
||||||
bool _collectionsChecked; /**< @brief Collections checked */
|
bool _collectionsChecked; /**< @brief Collections checked */
|
||||||
bool _collectionsLoaded;
|
bool _collectionsLoaded;
|
||||||
|
|
||||||
|
aql::QueryRegistry* _queryRegistry;
|
||||||
|
|
||||||
|
|
||||||
size_t _compaction_step;
|
size_t _compaction_step;
|
||||||
size_t _cur;
|
size_t _cur;
|
||||||
|
|
||||||
|
|
|
@ -285,7 +285,7 @@ std::vector<bool> Store::apply(
|
||||||
Builder body; // host
|
Builder body; // host
|
||||||
body.openObject();
|
body.openObject();
|
||||||
body.add("term", VPackValue(_agent->term()));
|
body.add("term", VPackValue(_agent->term()));
|
||||||
body.add("index", VPackValue(_agent->lastCommited()));
|
body.add("index", VPackValue(_agent->lastCommitted()));
|
||||||
auto ret = in.equal_range(url);
|
auto ret = in.equal_range(url);
|
||||||
|
|
||||||
for (auto it = ret.first; it != ret.second; ++it) {
|
for (auto it = ret.first; it != ret.second; ++it) {
|
||||||
|
|
|
@ -53,10 +53,6 @@ Supervision::Supervision()
|
||||||
Supervision::~Supervision() { shutdown(); };
|
Supervision::~Supervision() { shutdown(); };
|
||||||
|
|
||||||
void Supervision::wakeUp() {
|
void Supervision::wakeUp() {
|
||||||
TRI_ASSERT(_agent != nullptr);
|
|
||||||
if (!this->isStopping()) {
|
|
||||||
_snapshot = _agent->readDB().get(_agencyPrefix);
|
|
||||||
}
|
|
||||||
_cv.signal();
|
_cv.signal();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -356,7 +352,7 @@ void Supervision::run() {
|
||||||
|
|
||||||
// Do nothing unless leader
|
// Do nothing unless leader
|
||||||
if (_agent->leading()) {
|
if (_agent->leading()) {
|
||||||
_cv.wait(_frequency * 1000000); // quarter second
|
_cv.wait(_frequency * 1000000);
|
||||||
} else {
|
} else {
|
||||||
_cv.wait();
|
_cv.wait();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1076,10 +1076,7 @@ static bool throwExceptionAfterBadSyncRequest(ClusterCommResult* res,
|
||||||
bool isShutdown) {
|
bool isShutdown) {
|
||||||
ENTER_BLOCK
|
ENTER_BLOCK
|
||||||
if (res->status == CL_COMM_TIMEOUT) {
|
if (res->status == CL_COMM_TIMEOUT) {
|
||||||
std::string errorMessage =
|
std::string errorMessage = res->stringifyErrorMessage();
|
||||||
std::string("Timeout in communication with shard '") +
|
|
||||||
std::string(res->shardID) + std::string("' on cluster node '") +
|
|
||||||
std::string(res->serverID) + std::string("' failed.");
|
|
||||||
|
|
||||||
// No reply, we give up:
|
// No reply, we give up:
|
||||||
THROW_ARANGO_EXCEPTION_MESSAGE(TRI_ERROR_CLUSTER_TIMEOUT, errorMessage);
|
THROW_ARANGO_EXCEPTION_MESSAGE(TRI_ERROR_CLUSTER_TIMEOUT, errorMessage);
|
||||||
|
@ -1087,10 +1084,7 @@ static bool throwExceptionAfterBadSyncRequest(ClusterCommResult* res,
|
||||||
|
|
||||||
if (res->status == CL_COMM_BACKEND_UNAVAILABLE) {
|
if (res->status == CL_COMM_BACKEND_UNAVAILABLE) {
|
||||||
// there is no result
|
// there is no result
|
||||||
std::string errorMessage =
|
std::string errorMessage = res->stringifyErrorMessage();
|
||||||
std::string("Empty result in communication with shard '") +
|
|
||||||
std::string(res->shardID) + std::string("' on cluster node '") +
|
|
||||||
std::string(res->serverID) + std::string("'");
|
|
||||||
THROW_ARANGO_EXCEPTION_MESSAGE(TRI_ERROR_CLUSTER_CONNECTION_LOST,
|
THROW_ARANGO_EXCEPTION_MESSAGE(TRI_ERROR_CLUSTER_CONNECTION_LOST,
|
||||||
errorMessage);
|
errorMessage);
|
||||||
}
|
}
|
||||||
|
|
|
@ -573,10 +573,7 @@ struct CoordinatorInstanciator : public WalkerWorker<ExecutionNode> {
|
||||||
error += "\n";
|
error += "\n";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
error += std::string("Communication with shard '") +
|
error += res.stringifyErrorMessage();
|
||||||
std::string(res.shardID) + std::string("' on cluster node '") +
|
|
||||||
std::string(res.serverID) + std::string("' failed : ") +
|
|
||||||
res.errorMessage;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1145,11 +1142,10 @@ ExecutionEngine* ExecutionEngine::instantiateFromPlan(
|
||||||
url, "{\"code\": 0}", headers, 120.0);
|
url, "{\"code\": 0}", headers, 120.0);
|
||||||
// Ignore result, we need to try to remove all.
|
// Ignore result, we need to try to remove all.
|
||||||
// However, log the incident if we have an errorMessage.
|
// However, log the incident if we have an errorMessage.
|
||||||
if (res->errorMessage.length() > 0) {
|
if (!res->errorMessage.empty()) {
|
||||||
std::string msg("while trying to unregister query ");
|
std::string msg("while trying to unregister query ");
|
||||||
msg += queryId + std::string("from shard: ") + shardId +
|
msg += queryId + ": " + res->stringifyErrorMessage();
|
||||||
std::string("communication failed: ") + res->errorMessage;
|
LOG(WARN) << msg;
|
||||||
LOG(WARN) << "" << msg;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Remove query from registry:
|
// Remove query from registry:
|
||||||
|
|
|
@ -115,6 +115,61 @@ void ClusterCommResult::setDestination(std::string const& dest,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// @brief stringify the internal error state
|
||||||
|
std::string ClusterCommResult::stringifyErrorMessage() const {
|
||||||
|
// append status string
|
||||||
|
std::string result(stringifyStatus(status));
|
||||||
|
|
||||||
|
if (!serverID.empty()) {
|
||||||
|
result.append(", cluster node: '");
|
||||||
|
result.append(serverID);
|
||||||
|
result.push_back('\'');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!shardID.empty()) {
|
||||||
|
result.append(", shard: '");
|
||||||
|
result.append(shardID);
|
||||||
|
result.push_back('\'');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!endpoint.empty()) {
|
||||||
|
result.append(", endpoint: '");
|
||||||
|
result.append(endpoint);
|
||||||
|
result.push_back('\'');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!errorMessage.empty()) {
|
||||||
|
result.append(", error: '");
|
||||||
|
result.append(errorMessage);
|
||||||
|
result.push_back('\'');
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @brief stringify a cluster comm status
|
||||||
|
char const* ClusterCommResult::stringifyStatus(ClusterCommOpStatus status) {
|
||||||
|
switch (status) {
|
||||||
|
case CL_COMM_SUBMITTED:
|
||||||
|
return "submitted";
|
||||||
|
case CL_COMM_SENDING:
|
||||||
|
return "sending";
|
||||||
|
case CL_COMM_SENT:
|
||||||
|
return "sent";
|
||||||
|
case CL_COMM_TIMEOUT:
|
||||||
|
return "timeout";
|
||||||
|
case CL_COMM_RECEIVED:
|
||||||
|
return "received";
|
||||||
|
case CL_COMM_ERROR:
|
||||||
|
return "error";
|
||||||
|
case CL_COMM_DROPPED:
|
||||||
|
return "dropped";
|
||||||
|
case CL_COMM_BACKEND_UNAVAILABLE:
|
||||||
|
return "backend unavailable";
|
||||||
|
}
|
||||||
|
return "unknown";
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
/// @brief ClusterComm constructor
|
/// @brief ClusterComm constructor
|
||||||
|
|
|
@ -212,6 +212,12 @@ struct ClusterCommResult {
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
void setDestination(std::string const& dest, bool logConnectionErrors);
|
void setDestination(std::string const& dest, bool logConnectionErrors);
|
||||||
|
|
||||||
|
/// @brief stringify the internal error state
|
||||||
|
std::string stringifyErrorMessage() const;
|
||||||
|
|
||||||
|
/// @brief stringify a cluster comm status
|
||||||
|
static char const* stringifyStatus(ClusterCommOpStatus status);
|
||||||
};
|
};
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -757,10 +757,15 @@ std::string Transaction::extractIdString(CollectionNameResolver const* resolver,
|
||||||
|
|
||||||
if (*p == basics::VelocyPackHelper::IdAttribute) {
|
if (*p == basics::VelocyPackHelper::IdAttribute) {
|
||||||
id = VPackSlice(p + 1);
|
id = VPackSlice(p + 1);
|
||||||
// we should be pointing to a custom value now
|
if (id.isCustom()) {
|
||||||
TRI_ASSERT(id.isCustom() && id.head() == 0xf3);
|
// we should be pointing to a custom value now
|
||||||
|
TRI_ASSERT(id.head() == 0xf3);
|
||||||
|
|
||||||
return makeIdFromCustom(resolver, id, key);
|
return makeIdFromCustom(resolver, id, key);
|
||||||
|
}
|
||||||
|
if (id.isString()) {
|
||||||
|
return id.copyString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -138,19 +138,24 @@ void TraverserExpression::toVelocyPack(VPackBuilder& builder) const {
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
bool TraverserExpression::recursiveCheck(arangodb::aql::AstNode const* node,
|
bool TraverserExpression::recursiveCheck(arangodb::aql::AstNode const* node,
|
||||||
arangodb::velocypack::Slice& element) const {
|
arangodb::velocypack::Slice& element,
|
||||||
|
arangodb::velocypack::Slice& base) const {
|
||||||
|
|
||||||
|
base = arangodb::basics::VelocyPackHelper::EmptyObjectValue();
|
||||||
|
|
||||||
switch (node->type) {
|
switch (node->type) {
|
||||||
case arangodb::aql::NODE_TYPE_REFERENCE:
|
case arangodb::aql::NODE_TYPE_REFERENCE:
|
||||||
// We are on the variable access
|
// We are on the variable access
|
||||||
return true;
|
return true;
|
||||||
case arangodb::aql::NODE_TYPE_ATTRIBUTE_ACCESS: {
|
case arangodb::aql::NODE_TYPE_ATTRIBUTE_ACCESS: {
|
||||||
std::string name(node->getString());
|
std::string name(node->getString());
|
||||||
if (!recursiveCheck(node->getMember(0), element)) {
|
if (!recursiveCheck(node->getMember(0), element, base)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!element.isObject() || !element.hasKey(name)) {
|
if (!element.isObject() || !element.hasKey(name)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
base = element; // set base object
|
||||||
element = element.get(name);
|
element = element.get(name);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -159,7 +164,7 @@ bool TraverserExpression::recursiveCheck(arangodb::aql::AstNode const* node,
|
||||||
if (!index->isIntValue()) {
|
if (!index->isIntValue()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!recursiveCheck(node->getMember(0), element)) {
|
if (!recursiveCheck(node->getMember(0), element, base)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
auto idx = index->getIntValue();
|
auto idx = index->getIntValue();
|
||||||
|
@ -182,16 +187,24 @@ bool TraverserExpression::recursiveCheck(arangodb::aql::AstNode const* node,
|
||||||
bool TraverserExpression::matchesCheck(arangodb::Transaction* trx,
|
bool TraverserExpression::matchesCheck(arangodb::Transaction* trx,
|
||||||
VPackSlice const& element) const {
|
VPackSlice const& element) const {
|
||||||
TRI_ASSERT(trx != nullptr);
|
TRI_ASSERT(trx != nullptr);
|
||||||
|
VPackSlice base = arangodb::basics::VelocyPackHelper::EmptyObjectValue();
|
||||||
|
|
||||||
VPackSlice value = element.resolveExternal();
|
VPackSlice value = element.resolveExternal();
|
||||||
|
|
||||||
// initialize compare value to Null
|
// initialize compare value to Null
|
||||||
VPackSlice result = arangodb::basics::VelocyPackHelper::NullValue();
|
VPackSlice result = arangodb::basics::VelocyPackHelper::NullValue();
|
||||||
// perform recursive check. this may modify value
|
// perform recursive check. this may modify value
|
||||||
if (recursiveCheck(varAccess, value)) {
|
if (recursiveCheck(varAccess, value, base)) {
|
||||||
result = value;
|
result = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// hack for _id attribute
|
||||||
|
TransactionBuilderLeaser builder(trx);
|
||||||
|
if (result.isCustom() && base.isObject()) {
|
||||||
|
builder->add(VPackValue(trx->extractIdString(base)));
|
||||||
|
result = builder->slice();
|
||||||
|
}
|
||||||
|
|
||||||
TRI_ASSERT(compareTo != nullptr);
|
TRI_ASSERT(compareTo != nullptr);
|
||||||
VPackOptions* options = trx->transactionContext()->getVPackOptions();
|
VPackOptions* options = trx->transactionContext()->getVPackOptions();
|
||||||
|
|
||||||
|
|
|
@ -91,7 +91,8 @@ class TraverserExpression {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool recursiveCheck(arangodb::aql::AstNode const*,
|
bool recursiveCheck(arangodb::aql::AstNode const*,
|
||||||
arangodb::velocypack::Slice&) const;
|
arangodb::velocypack::Slice& value,
|
||||||
|
arangodb::velocypack::Slice& base) const;
|
||||||
|
|
||||||
// Required when creating this expression without AST
|
// Required when creating this expression without AST
|
||||||
std::vector<std::unique_ptr<arangodb::aql::AstNode const>> _nodeRegister;
|
std::vector<std::unique_ptr<arangodb::aql::AstNode const>> _nodeRegister;
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
# -*- mode: CMAKE; -*-
|
||||||
|
# these are the install targets for the client package.
|
||||||
|
# we can't use RUNTIME DESTINATION here.
|
||||||
|
|
||||||
|
install(
|
||||||
|
FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${BIN_ARANGOBENCH}
|
||||||
|
DESTINATION ${CMAKE_INSTALL_FULL_BINDIR})
|
||||||
|
install_config(arangobench)
|
||||||
|
|
||||||
|
install(
|
||||||
|
FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${BIN_ARANGODUMP}
|
||||||
|
DESTINATION ${CMAKE_INSTALL_FULL_BINDIR})
|
||||||
|
install_config(arangodump)
|
||||||
|
|
||||||
|
install(
|
||||||
|
FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${BIN_ARANGOIMP}
|
||||||
|
DESTINATION ${CMAKE_INSTALL_FULL_BINDIR})
|
||||||
|
install_config(arangoimp)
|
||||||
|
|
||||||
|
install(
|
||||||
|
FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${BIN_ARANGORESTORE}
|
||||||
|
DESTINATION ${CMAKE_INSTALL_FULL_BINDIR})
|
||||||
|
install_config(arangorestore)
|
||||||
|
|
||||||
|
install(
|
||||||
|
FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${BIN_ARANGOSH}
|
||||||
|
DESTINATION ${CMAKE_INSTALL_FULL_BINDIR})
|
||||||
|
install_config(arangosh)
|
||||||
|
|
||||||
|
install(
|
||||||
|
FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${BIN_ARANGOVPACK}
|
||||||
|
DESTINATION ${CMAKE_INSTALL_FULL_BINDIR})
|
||||||
|
|
||||||
|
install_command_alias(${BIN_ARANGOSH}
|
||||||
|
${CMAKE_INSTALL_FULL_BINDIR}
|
||||||
|
foxx-manager)
|
||||||
|
install_config(foxx-manager)
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
|
set(ARANGODB_SOURCE_DIR ${CMAKE_SOURCE_DIR})
|
||||||
|
|
||||||
if (MSVC OR DARWIN)
|
if (MSVC OR DARWIN)
|
||||||
set(ENABLE_UID_CFG false)
|
set(ENABLE_UID_CFG false)
|
||||||
else ()
|
else ()
|
||||||
|
@ -22,7 +24,7 @@ FILE(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/var/lib/arangodb3-apps")
|
||||||
# logs
|
# logs
|
||||||
FILE(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/var/log/arangodb3")
|
FILE(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/var/log/arangodb3")
|
||||||
|
|
||||||
include(ArangoDBinstallCfg)
|
include(InstallMacros)
|
||||||
|
|
||||||
# install ----------------------------------------------------------------------
|
# install ----------------------------------------------------------------------
|
||||||
install(DIRECTORY ${PROJECT_SOURCE_DIR}/Documentation/man/
|
install(DIRECTORY ${PROJECT_SOURCE_DIR}/Documentation/man/
|
||||||
|
@ -33,44 +35,6 @@ install_readme(README.md README.md)
|
||||||
install_readme(LICENSE LICENSE.txt)
|
install_readme(LICENSE LICENSE.txt)
|
||||||
install_readme(LICENSES-OTHER-COMPONENTS.md LICENSES-OTHER-COMPONENTS.md)
|
install_readme(LICENSES-OTHER-COMPONENTS.md LICENSES-OTHER-COMPONENTS.md)
|
||||||
|
|
||||||
|
|
||||||
# Build package ----------------------------------------------------------------
|
|
||||||
|
|
||||||
if (NOT(MSVC))
|
|
||||||
set(CPACK_SET_DESTDIR ON)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(CPACK_PACKAGE_VENDOR "ArangoDB GmbH")
|
|
||||||
set(CPACK_PACKAGE_CONTACT "info@arangodb.com")
|
|
||||||
set(CPACK_PACKAGE_VERSION "${ARANGODB_VERSION}")
|
|
||||||
|
|
||||||
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
|
|
||||||
|
|
||||||
set(CPACK_STRIP_FILES "ON")
|
|
||||||
|
|
||||||
set(CPACK_PACKAGE_NAME "arangodb3")
|
|
||||||
|
|
||||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_PACKAGE_RELEASE}.${CMAKE_SYSTEM_PROCESSOR}")
|
|
||||||
|
|
||||||
|
|
||||||
if ("${PACKAGING}" STREQUAL "DEB")
|
|
||||||
include(packaging_deb)
|
|
||||||
elseif ("${PACKAGING}" STREQUAL "RPM")
|
|
||||||
include(packaging_rpm)
|
|
||||||
elseif ("${PACKAGING}" STREQUAL "Bundle")
|
|
||||||
include(packaging_bundle)
|
|
||||||
elseif (MSVC)
|
|
||||||
include(packaging_nsis)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
configure_file(
|
|
||||||
"${CMAKE_SOURCE_DIR}/Installation/cmake/CMakeCPackOptions.cmake.in"
|
|
||||||
"${CMAKE_BINARY_DIR}/CMakeCPackOptions.cmake" @ONLY)
|
|
||||||
set(CPACK_PROJECT_CONFIG_FILE "${CMAKE_BINARY_DIR}/CMakeCPackOptions.cmake")
|
|
||||||
|
|
||||||
# Finally: user cpack
|
|
||||||
include(CPack)
|
|
||||||
|
|
||||||
# Custom targets ----------------------------------------------------------------
|
# Custom targets ----------------------------------------------------------------
|
||||||
# love
|
# love
|
||||||
add_custom_target (love
|
add_custom_target (love
|
||||||
|
@ -78,18 +42,7 @@ add_custom_target (love
|
||||||
COMMAND ""
|
COMMAND ""
|
||||||
)
|
)
|
||||||
|
|
||||||
|
include(InstallArangoDBJSClient)
|
||||||
################################################################################
|
|
||||||
### @brief install client-side JavaScript files
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
install(
|
|
||||||
DIRECTORY ${PROJECT_SOURCE_DIR}/js/common ${PROJECT_SOURCE_DIR}/js/client
|
|
||||||
DESTINATION share/arangodb3/js
|
|
||||||
FILES_MATCHING PATTERN "*.js"
|
|
||||||
REGEX "^.*/common/test-data$" EXCLUDE
|
|
||||||
REGEX "^.*/common/tests$" EXCLUDE
|
|
||||||
REGEX "^.*/client/tests$" EXCLUDE)
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
### @brief install server-side JavaScript files
|
### @brief install server-side JavaScript files
|
|
@ -0,0 +1,11 @@
|
||||||
|
################################################################################
|
||||||
|
### @brief install client-side JavaScript files
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
install(
|
||||||
|
DIRECTORY ${ARANGODB_SOURCE_DIR}/js/common ${ARANGODB_SOURCE_DIR}/js/client
|
||||||
|
DESTINATION share/arangodb3/js
|
||||||
|
FILES_MATCHING PATTERN "*.js"
|
||||||
|
REGEX "^.*/common/test-data$" EXCLUDE
|
||||||
|
REGEX "^.*/common/tests$" EXCLUDE
|
||||||
|
REGEX "^.*/client/tests$" EXCLUDE)
|
|
@ -0,0 +1,78 @@
|
||||||
|
################################################################################
|
||||||
|
# the client package is a complete cmake sub package.
|
||||||
|
################################################################################
|
||||||
|
project(PACKAGE-CLIENT)
|
||||||
|
cmake_minimum_required(VERSION 2.8)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# variables from the main build have to be explicitely forwarded:
|
||||||
|
################################################################################
|
||||||
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "@PROJECT_BINARY_DIR@/bin/")
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Substitute the install binaries:
|
||||||
|
################################################################################
|
||||||
|
set(BIN_ARANGOBENCH @BIN_ARANGOBENCH@)
|
||||||
|
set(BIN_ARANGODUMP @BIN_ARANGODUMP@)
|
||||||
|
set(BIN_ARANGOIMP @BIN_ARANGOIMP@)
|
||||||
|
set(BIN_ARANGORESTORE @BIN_ARANGORESTORE@)
|
||||||
|
set(BIN_ARANGOSH @BIN_ARANGOSH@)
|
||||||
|
set(BIN_ARANGOVPACK @BIN_ARANGOVPACK@)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# build specific variables:
|
||||||
|
################################################################################
|
||||||
|
set(ARANGODB_URL_INFO_ABOUT @ARANGODB_URL_INFO_ABOUT@)
|
||||||
|
set(ARANGODB_SOURCE_DIR @ARANGODB_SOURCE_DIR@)
|
||||||
|
set(ARANGODB_VERSION @ARANGODB_VERSION@)
|
||||||
|
set(ARANGODB_PACKAGE_CONTACT @ARANGODB_PACKAGE_CONTACT@)
|
||||||
|
set(ARANGODB_PACKAGE_REVISION @ARANGODB_PACKAGE_REVISION@)
|
||||||
|
|
||||||
|
set(CMAKE_INSTALL_FULL_BINDIR @CMAKE_INSTALL_FULL_BINDIR@)
|
||||||
|
set(CMAKE_TARGET_ARCHITECTURES @CMAKE_TARGET_ARCHITECTURES@)
|
||||||
|
|
||||||
|
set(CMAKE_INSTALL_SYSCONFDIR_ARANGO @CMAKE_INSTALL_SYSCONFDIR_ARANGO@)
|
||||||
|
set(CMAKE_INSTALL_FULL_SYSCONFDIR_ARANGO @CMAKE_INSTALL_FULL_SYSCONFDIR_ARANGO@)
|
||||||
|
|
||||||
|
set(ORIGINAL_SOURCE_DIR @PROJECT_SOURCE_DIR@)
|
||||||
|
set(PROJECT_SOURCE_DIR @PROJECT_SOURCE_DIR@)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Get the final values for cpack:
|
||||||
|
################################################################################
|
||||||
|
set(CPACK_PACKAGE_VERSION "${ARANGODB_VERSION}")
|
||||||
|
set(CPACK_PACKAGE_NAME "arangodb3-client")
|
||||||
|
set(CPACK_PACKAGE_CONTACT ${ARANGODB_PACKAGE_CONTACT})
|
||||||
|
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE ${ARANGODB_URL_INFO_ABOUT})
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_CONFLICTS "arangodb, arangodb3")
|
||||||
|
set(CPACK_DEBIAN_COMPRESSION_TYPE "xz")
|
||||||
|
set(CPACK_COMPONENTS_ALL debian-extras)
|
||||||
|
|
||||||
|
file(READ "${PROJECT_SOURCE_DIR}/Installation/debian/client_packagedesc.txt"
|
||||||
|
CPACK_DEBIAN_PACKAGE_DESCRIPTION)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# specify which target archcitecture the package is going to be:
|
||||||
|
################################################################################
|
||||||
|
if(CMAKE_TARGET_ARCHITECTURES MATCHES ".*x86_64.*")
|
||||||
|
set(ARANGODB_PACKAGE_ARCHITECTURE "amd64")
|
||||||
|
elseif(CMAKE_TARGET_ARCHITECTURES MATCHES "aarch64")
|
||||||
|
set(ARANGODB_PACKAGE_ARCHITECTURE "arm64")
|
||||||
|
elseif(CMAKE_TARGET_ARCHITECTURES MATCHES "armv7")
|
||||||
|
set(ARANGODB_PACKAGE_ARCHITECTURE "arm7")
|
||||||
|
else()
|
||||||
|
set(ARANGODB_PACKAGE_ARCHITECTURE "i386")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${ARANGODB_PACKAGE_REVISION}_${ARANGODB_PACKAGE_ARCHITECTURE}")
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Install the external files into the package directory:
|
||||||
|
################################################################################
|
||||||
|
include(${ORIGINAL_SOURCE_DIR}/cmake/InstallMacros.cmake)
|
||||||
|
include(${ORIGINAL_SOURCE_DIR}/cmake/InstallArangoDBJSClient.cmake)
|
||||||
|
include(${ORIGINAL_SOURCE_DIR}/arangosh/install.cmake)
|
||||||
|
|
||||||
|
include(CPack)
|
|
@ -0,0 +1,79 @@
|
||||||
|
################################################################################
|
||||||
|
# the client package is a complete cmake sub package.
|
||||||
|
################################################################################
|
||||||
|
project(PACKAGE-CLIENT)
|
||||||
|
cmake_minimum_required(VERSION 2.8)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# variables from the main build have to be explicitely forwarded:
|
||||||
|
################################################################################
|
||||||
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "@PROJECT_BINARY_DIR@/bin/")
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Substitute the install binaries:
|
||||||
|
################################################################################
|
||||||
|
set(BIN_ARANGOBENCH @BIN_ARANGOBENCH@)
|
||||||
|
set(BIN_ARANGODUMP @BIN_ARANGODUMP@)
|
||||||
|
set(BIN_ARANGOIMP @BIN_ARANGOIMP@)
|
||||||
|
set(BIN_ARANGORESTORE @BIN_ARANGORESTORE@)
|
||||||
|
set(BIN_ARANGOSH @BIN_ARANGOSH@)
|
||||||
|
set(BIN_ARANGOVPACK @BIN_ARANGOVPACK@)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# build specific variables:
|
||||||
|
################################################################################
|
||||||
|
set(ARANGODB_URL_INFO_ABOUT @ARANGODB_URL_INFO_ABOUT@)
|
||||||
|
set(ARANGODB_SOURCE_DIR @ARANGODB_SOURCE_DIR@)
|
||||||
|
set(ARANGODB_VERSION @ARANGODB_VERSION@)
|
||||||
|
set(ARANGODB_PACKAGE_CONTACT @ARANGODB_PACKAGE_CONTACT@)
|
||||||
|
set(ARANGODB_PACKAGE_REVISION @ARANGODB_PACKAGE_REVISION@)
|
||||||
|
|
||||||
|
set(CMAKE_INSTALL_FULL_BINDIR @CMAKE_INSTALL_FULL_BINDIR@)
|
||||||
|
set(CMAKE_TARGET_ARCHITECTURES @CMAKE_TARGET_ARCHITECTURES@)
|
||||||
|
|
||||||
|
set(CMAKE_INSTALL_SYSCONFDIR_ARANGO @CMAKE_INSTALL_SYSCONFDIR_ARANGO@)
|
||||||
|
set(CMAKE_INSTALL_FULL_SYSCONFDIR_ARANGO @CMAKE_INSTALL_FULL_SYSCONFDIR_ARANGO@)
|
||||||
|
|
||||||
|
set(ORIGINAL_SOURCE_DIR @PROJECT_SOURCE_DIR@)
|
||||||
|
set(PROJECT_SOURCE_DIR @PROJECT_SOURCE_DIR@)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Get the final values for cpack:
|
||||||
|
################################################################################
|
||||||
|
set(CPACK_GENERATOR "DEB")
|
||||||
|
set(CPACK_PACKAGE_VERSION "${ARANGODB_VERSION}")
|
||||||
|
set(CPACK_PACKAGE_NAME "arangodb3-client")
|
||||||
|
set(CPACK_PACKAGE_CONTACT ${ARANGODB_PACKAGE_CONTACT})
|
||||||
|
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE ${ARANGODB_URL_INFO_ABOUT})
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_CONFLICTS "arangodb, arangodb3")
|
||||||
|
set(CPACK_DEBIAN_COMPRESSION_TYPE "xz")
|
||||||
|
set(CPACK_COMPONENTS_ALL debian-extras)
|
||||||
|
|
||||||
|
file(READ "${PROJECT_SOURCE_DIR}/Installation/debian/client_packagedesc.txt"
|
||||||
|
CPACK_DEBIAN_PACKAGE_DESCRIPTION)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# specify which target archcitecture the package is going to be:
|
||||||
|
################################################################################
|
||||||
|
if(CMAKE_TARGET_ARCHITECTURES MATCHES ".*x86_64.*")
|
||||||
|
set(ARANGODB_PACKAGE_ARCHITECTURE "amd64")
|
||||||
|
elseif(CMAKE_TARGET_ARCHITECTURES MATCHES "aarch64")
|
||||||
|
set(ARANGODB_PACKAGE_ARCHITECTURE "arm64")
|
||||||
|
elseif(CMAKE_TARGET_ARCHITECTURES MATCHES "armv7")
|
||||||
|
set(ARANGODB_PACKAGE_ARCHITECTURE "arm7")
|
||||||
|
else()
|
||||||
|
set(ARANGODB_PACKAGE_ARCHITECTURE "i386")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${ARANGODB_PACKAGE_REVISION}_${ARANGODB_PACKAGE_ARCHITECTURE}")
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Install the external files into the package directory:
|
||||||
|
################################################################################
|
||||||
|
include(${ORIGINAL_SOURCE_DIR}/cmake/InstallMacros.cmake)
|
||||||
|
include(${ORIGINAL_SOURCE_DIR}/cmake/InstallArangoDBJSClient.cmake)
|
||||||
|
include(${ORIGINAL_SOURCE_DIR}/arangosh/install.cmake)
|
||||||
|
|
||||||
|
include(CPack)
|
|
@ -0,0 +1,65 @@
|
||||||
|
# -*- mode: CMAKE; -*-
|
||||||
|
################################################################################
|
||||||
|
# This produces the debian packages, using client/deb.txt for the second package.
|
||||||
|
################################################################################
|
||||||
|
FILE(READ "${PROJECT_SOURCE_DIR}/Installation/debian/packagedesc.txt" CPACK_DEBIAN_PACKAGE_DESCRIPTION)
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_SECTION "database")
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_CONFLICTS "arangodb")
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
|
||||||
|
set(CPACK_DEBIAN_COMPRESSION_TYPE "xz")
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE ${ARANGODB_URL_INFO_ABOUT})
|
||||||
|
set(CPACK_COMPONENTS_ALL debian-extras)
|
||||||
|
set(CPACK_GENERATOR "DEB")
|
||||||
|
|
||||||
|
list(APPEND CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
|
||||||
|
"${PROJECT_SOURCE_DIR}/Installation/debian/templates"
|
||||||
|
"${PROJECT_SOURCE_DIR}/Installation/debian/config"
|
||||||
|
"${PROJECT_SOURCE_DIR}/Installation/debian/postinst"
|
||||||
|
"${PROJECT_SOURCE_DIR}/Installation/debian/preinst"
|
||||||
|
"${PROJECT_SOURCE_DIR}/Installation/debian/postrm"
|
||||||
|
"${PROJECT_SOURCE_DIR}/Installation/debian/prerm;")
|
||||||
|
|
||||||
|
if(CMAKE_TARGET_ARCHITECTURES MATCHES ".*x86_64.*")
|
||||||
|
set(ARANGODB_PACKAGE_ARCHITECTURE "amd64")
|
||||||
|
elseif(CMAKE_TARGET_ARCHITECTURES MATCHES "aarch64")
|
||||||
|
set(ARANGODB_PACKAGE_ARCHITECTURE "arm64")
|
||||||
|
elseif(CMAKE_TARGET_ARCHITECTURES MATCHES "armv7")
|
||||||
|
set(ARANGODB_PACKAGE_ARCHITECTURE "arm7")
|
||||||
|
else()
|
||||||
|
set(ARANGODB_PACKAGE_ARCHITECTURE "i386")
|
||||||
|
endif()
|
||||||
|
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${ARANGODB_PACKAGE_REVISION}_${ARANGODB_PACKAGE_ARCHITECTURE}")
|
||||||
|
|
||||||
|
|
||||||
|
# deploy the Init script:
|
||||||
|
install(
|
||||||
|
FILES ${PROJECT_SOURCE_DIR}/Installation/debian/arangodb.init
|
||||||
|
PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
||||||
|
DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR}/init.d
|
||||||
|
RENAME arangodb3
|
||||||
|
COMPONENT debian-extras
|
||||||
|
)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# hook to build the server package
|
||||||
|
################################################################################
|
||||||
|
add_custom_target(package-arongodb-server
|
||||||
|
COMMAND ${CMAKE_COMMAND} .
|
||||||
|
COMMAND ${CMAKE_CPACK_COMMAND} -G DEB
|
||||||
|
WORKING_DIRECTORY ${PROJECT_BINARY_DIR})
|
||||||
|
|
||||||
|
list(APPEND PACKAGES_LIST package-arongodb-server)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# hook to build the client package
|
||||||
|
################################################################################
|
||||||
|
set(CLIENT_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/packages/arangodb-client)
|
||||||
|
configure_file(cmake/packages/client/deb.txt ${CLIENT_BUILD_DIR}/CMakeLists.txt @ONLY)
|
||||||
|
add_custom_target(package-arongodb-client
|
||||||
|
COMMAND ${CMAKE_COMMAND} .
|
||||||
|
COMMAND ${CMAKE_CPACK_COMMAND} -G DEB
|
||||||
|
COMMAND cp *.deb ${PROJECT_BINARY_DIR}
|
||||||
|
WORKING_DIRECTORY ${CLIENT_BUILD_DIR})
|
||||||
|
|
||||||
|
|
||||||
|
list(APPEND PACKAGES_LIST package-arongodb-client)
|
|
@ -1,73 +0,0 @@
|
||||||
# the client package is a complete cmake sub package.
|
|
||||||
project(PACKAGE-CLIENT)
|
|
||||||
cmake_minimum_required(VERSION 2.8)
|
|
||||||
|
|
||||||
# variables from the main build have to be explicitely forwarded:
|
|
||||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "@PROJECT_BINARY_DIR@/bin/")
|
|
||||||
set(BIN_ARANGOBENCH @BIN_ARANGOBENCH@)
|
|
||||||
set(BIN_ARANGODUMP @BIN_ARANGODUMP@)
|
|
||||||
set(BIN_ARANGOIMP @BIN_ARANGOIMP@)
|
|
||||||
set(BIN_ARANGORESTORE @BIN_ARANGORESTORE@)
|
|
||||||
set(BIN_ARANGOSH @BIN_ARANGOSH@)
|
|
||||||
set(BIN_ARANGOVPACK @BIN_ARANGOVPACK@)
|
|
||||||
set(CMAKE_INSTALL_FULL_BINDIR @CMAKE_INSTALL_FULL_BINDIR@)
|
|
||||||
|
|
||||||
set(CMAKE_INSTALL_SYSCONFDIR_ARANGO @CMAKE_INSTALL_SYSCONFDIR_ARANGO@)
|
|
||||||
set(CMAKE_INSTALL_FULL_SYSCONFDIR_ARANGO @CMAKE_INSTALL_FULL_SYSCONFDIR_ARANGO@)
|
|
||||||
|
|
||||||
set(ORIGINAL_SOURCE_DIR @PROJECT_SOURCE_DIR@)
|
|
||||||
set(PROJECT_SOURCE_DIR @PROJECT_SOURCE_DIR@)
|
|
||||||
|
|
||||||
include(${ORIGINAL_SOURCE_DIR}/cmake/ArangoDBinstallCfg.cmake)
|
|
||||||
|
|
||||||
# Start installing the client components:
|
|
||||||
install(
|
|
||||||
DIRECTORY ${ORIGINAL_SOURCE_DIR}/js/common ${ORIGINAL_SOURCE_DIR}/js/client
|
|
||||||
DESTINATION share/arangodb3/js
|
|
||||||
FILES_MATCHING PATTERN "*.js"
|
|
||||||
REGEX "^.*/common/test-data$" EXCLUDE
|
|
||||||
REGEX "^.*/common/tests$" EXCLUDE
|
|
||||||
REGEX "^.*/client/tests$" EXCLUDE)
|
|
||||||
|
|
||||||
install(
|
|
||||||
FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${BIN_ARANGOBENCH}
|
|
||||||
DESTINATION ${CMAKE_INSTALL_FULL_BINDIR})
|
|
||||||
install_config(arangobench)
|
|
||||||
|
|
||||||
install(
|
|
||||||
FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${BIN_ARANGODUMP}
|
|
||||||
DESTINATION ${CMAKE_INSTALL_FULL_BINDIR})
|
|
||||||
install_config(arangodump)
|
|
||||||
|
|
||||||
install(
|
|
||||||
FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${BIN_ARANGOIMP}
|
|
||||||
DESTINATION ${CMAKE_INSTALL_FULL_BINDIR})
|
|
||||||
install_config(arangoimp)
|
|
||||||
|
|
||||||
install(
|
|
||||||
FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${BIN_ARANGORESTORE}
|
|
||||||
DESTINATION ${CMAKE_INSTALL_FULL_BINDIR})
|
|
||||||
install_config(arangorestore)
|
|
||||||
|
|
||||||
install(
|
|
||||||
FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${BIN_ARANGOSH}
|
|
||||||
DESTINATION ${CMAKE_INSTALL_FULL_BINDIR})
|
|
||||||
install_config(arangosh)
|
|
||||||
|
|
||||||
install(
|
|
||||||
FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${BIN_ARANGOVPACK}
|
|
||||||
DESTINATION ${CMAKE_INSTALL_FULL_BINDIR})
|
|
||||||
|
|
||||||
install_command_alias(${BIN_ARANGOSH}
|
|
||||||
${CMAKE_INSTALL_FULL_BINDIR}
|
|
||||||
foxx-manager)
|
|
||||||
install_config(foxx-manager)
|
|
||||||
|
|
||||||
|
|
||||||
# client packaging starts here:
|
|
||||||
|
|
||||||
set(CPACK_PACKAGE_NAME "arangodb3-client")
|
|
||||||
set(CPACK_PACKAGE_CONTACT "info@arangodb.com")
|
|
||||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "ArangoDB Client Package")
|
|
||||||
|
|
||||||
include(CPack)
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
if (NOT(MSVC))
|
||||||
|
set(CPACK_SET_DESTDIR ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(CPACK_PACKAGE_VENDOR ${ARANGODB_PACKAGE_VENDOR})
|
||||||
|
set(CPACK_PACKAGE_CONTACT ${ARANGODB_PACKAGE_CONTACT})
|
||||||
|
set(CPACK_PACKAGE_VERSION "${ARANGODB_VERSION}")
|
||||||
|
|
||||||
|
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
|
||||||
|
|
||||||
|
set(CPACK_STRIP_FILES "ON")
|
||||||
|
|
||||||
|
set(CPACK_PACKAGE_NAME "arangodb3")
|
||||||
|
set(ARANGODB_PACKAGE_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR})
|
||||||
|
# eventually the package string will be modified later on:
|
||||||
|
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${ARANGODB_PACKAGE_REVISION}.${ARANGODB_PACKAGE_ARCHITECTURE}")
|
||||||
|
|
||||||
|
if ("${PACKAGING}" STREQUAL "DEB")
|
||||||
|
include(packages/deb)
|
||||||
|
elseif ("${PACKAGING}" STREQUAL "RPM")
|
||||||
|
include(packages/rpm)
|
||||||
|
elseif ("${PACKAGING}" STREQUAL "Bundle")
|
||||||
|
include(packages/bundle)
|
||||||
|
elseif (MSVC)
|
||||||
|
include(packages/nsis)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
configure_file(
|
||||||
|
"${CMAKE_SOURCE_DIR}/Installation/cmake/CMakeCPackOptions.cmake.in"
|
||||||
|
"${CMAKE_BINARY_DIR}/CMakeCPackOptions.cmake" @ONLY)
|
||||||
|
set(CPACK_PROJECT_CONFIG_FILE "${CMAKE_BINARY_DIR}/CMakeCPackOptions.cmake")
|
||||||
|
|
||||||
|
|
||||||
|
# Finally: user cpack
|
||||||
|
include(CPack)
|
|
@ -0,0 +1,46 @@
|
||||||
|
# -*- mode: CMAKE; -*-
|
||||||
|
|
||||||
|
set(CPACK_GENERATOR "RPM")
|
||||||
|
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/Installation/rpm/arangodb.spec.in" "${CMAKE_CURRENT_BINARY_DIR}/arangodb.spec" @ONLY IMMEDIATE)
|
||||||
|
set(CPACK_RPM_USER_BINARY_SPECFILE "${CMAKE_CURRENT_BINARY_DIR}/arangodb.spec")
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# This produces the RPM packages, using client/rpm.txt for the second package.
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${ARANGODB_PACKAGE_REVISION}_${ARANGODB_PACKAGE_ARCHITECTURE}")
|
||||||
|
|
||||||
|
|
||||||
|
# deploy the Init script:
|
||||||
|
#install(
|
||||||
|
# FILES ${PROJECT_SOURCE_DIR}/Installation/debian/arangodb.init
|
||||||
|
# PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
||||||
|
# DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR}/init.d
|
||||||
|
# RENAME arangodb3
|
||||||
|
# COMPONENT debian-extras
|
||||||
|
# )
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# hook to build the server package
|
||||||
|
################################################################################
|
||||||
|
add_custom_target(package-arongodb-server
|
||||||
|
COMMAND ${CMAKE_COMMAND} .
|
||||||
|
COMMAND ${CMAKE_CPACK_COMMAND} -G RPM
|
||||||
|
WORKING_DIRECTORY ${PROJECT_BINARY_DIR})
|
||||||
|
|
||||||
|
list(APPEND PACKAGES_LIST package-arongodb-server)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# hook to build the client package
|
||||||
|
################################################################################
|
||||||
|
set(CLIENT_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/packages/arangodb-client)
|
||||||
|
configure_file(cmake/packages/client/rpm.txt ${CLIENT_BUILD_DIR}/CMakeLists.txt @ONLY)
|
||||||
|
add_custom_target(package-arongodb-client
|
||||||
|
COMMAND ${CMAKE_COMMAND} .
|
||||||
|
COMMAND ${CMAKE_CPACK_COMMAND} -G RPM
|
||||||
|
COMMAND cp *.rpm ${PROJECT_BINARY_DIR}
|
||||||
|
WORKING_DIRECTORY ${CLIENT_BUILD_DIR})
|
||||||
|
|
||||||
|
|
||||||
|
list(APPEND PACKAGES_LIST package-arongodb-client)
|
|
@ -1,36 +0,0 @@
|
||||||
set(CPACK_DEBIAN_PACKAGE_SECTION "database")
|
|
||||||
FILE(READ "${PROJECT_SOURCE_DIR}/Installation/debian/packagedesc.txt" CPACK_DEBIAN_PACKAGE_DESCRIPTION)
|
|
||||||
SET(CPACK_DEBIAN_PACKAGE_CONFLICTS "arangodb")
|
|
||||||
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
|
|
||||||
set(CPACK_DEBIAN_COMPRESSION_TYPE "xz")
|
|
||||||
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE ${ARANGODB_URL_INFO_ABOUT})
|
|
||||||
list(APPEND CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
|
|
||||||
"${PROJECT_SOURCE_DIR}/Installation/debian/templates"
|
|
||||||
"${PROJECT_SOURCE_DIR}/Installation/debian/config"
|
|
||||||
"${PROJECT_SOURCE_DIR}/Installation/debian/postinst"
|
|
||||||
"${PROJECT_SOURCE_DIR}/Installation/debian/preinst"
|
|
||||||
"${PROJECT_SOURCE_DIR}/Installation/debian/postrm"
|
|
||||||
"${PROJECT_SOURCE_DIR}/Installation/debian/prerm;")
|
|
||||||
|
|
||||||
if(CMAKE_TARGET_ARCHITECTURES MATCHES ".*x86_64.*")
|
|
||||||
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64")
|
|
||||||
elseif(CMAKE_TARGET_ARCHITECTURES MATCHES "aarch64")
|
|
||||||
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "arm64")
|
|
||||||
elseif(CMAKE_TARGET_ARCHITECTURES MATCHES "armv7")
|
|
||||||
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "arm7")
|
|
||||||
else()
|
|
||||||
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "i386")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
# components
|
|
||||||
install(
|
|
||||||
FILES ${PROJECT_SOURCE_DIR}/Installation/debian/arangodb.init
|
|
||||||
PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
|
||||||
DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR}/init.d
|
|
||||||
RENAME arangodb3
|
|
||||||
COMPONENT debian-extras
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
set(CPACK_GENERATOR "RPM")
|
|
||||||
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/Installation/rpm/arangodb.spec.in" "${CMAKE_CURRENT_BINARY_DIR}/arangodb.spec" @ONLY IMMEDIATE)
|
|
||||||
set(CPACK_RPM_USER_BINARY_SPECFILE "${CMAKE_CURRENT_BINARY_DIR}/my_project.spec")
|
|
|
@ -94,6 +94,14 @@ function agencyTestSuite () {
|
||||||
tearDown : function () {
|
tearDown : function () {
|
||||||
},
|
},
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/// @brief startup timing
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
testStartup : function () {
|
||||||
|
assertEqual(readAndCheck([["/x"]]), [{}]);
|
||||||
|
},
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
/// @brief test to write a single top level key
|
/// @brief test to write a single top level key
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -1473,7 +1473,7 @@ global.DEFINE_MODULE('internal', (function () {
|
||||||
if (typeof src !== 'function' || (
|
if (typeof src !== 'function' || (
|
||||||
key !== 'arguments' && key !== 'caller' && key !== 'callee'
|
key !== 'arguments' && key !== 'caller' && key !== 'callee'
|
||||||
)) {
|
)) {
|
||||||
if (key.charAt(0) !== '_' && !hasOwnProperty(result, key)) {
|
if (key.charAt(0) !== '_' && !hasOwnProperty.call(result, key)) {
|
||||||
val = obj[key];
|
val = obj[key];
|
||||||
if (seen.indexOf(val) !== -1 && (
|
if (seen.indexOf(val) !== -1 && (
|
||||||
typeof val === 'object' || typeof val === 'function'
|
typeof val === 'object' || typeof val === 'function'
|
||||||
|
@ -1491,7 +1491,7 @@ global.DEFINE_MODULE('internal', (function () {
|
||||||
if (obj.constructor && obj.constructor.name) {
|
if (obj.constructor && obj.constructor.name) {
|
||||||
if (obj instanceof Error && obj.name === Error.name) {
|
if (obj instanceof Error && obj.name === Error.name) {
|
||||||
result.name = obj.constructor.name;
|
result.name = obj.constructor.name;
|
||||||
} else if (!hasOwnProperty(result, 'constructor')) {
|
} else if (!hasOwnProperty.call(result, 'constructor')) {
|
||||||
result.constructor = {
|
result.constructor = {
|
||||||
name: obj.constructor.name
|
name: obj.constructor.name
|
||||||
};
|
};
|
||||||
|
|
|
@ -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
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue