Files
DissLiteratur/translators/Citation graph.js
Johannes Paehr c4354c0441 init
2025-10-18 15:35:31 +02:00

3174 lines
108 KiB
JavaScript

{
"translatorID": "19afa3fd-1c7f-4eb8-a37e-8d07768493e8",
"label": "Citation graph",
"description": "exports a citation graph in graphml format. Use gephi or yEd to clean up and visualize",
"creator": "Emiliano heyns",
"target": "dot",
"minVersion": "4.0.27",
"maxVersion": "",
"translatorType": 2,
"browserSupport": "gcsv",
"inRepository": false,
"displayOptions": {
"Title": false,
"Authors": false,
"Year": false
},
"configOptions": {
"getCollections": true,
"hash": "14ce1fb9f6ea27a65620a059e2df008a6609fdf5482563bc624f4fc58861a190"
},
"priority": 100,
"lastUpdated": "2024-11-29"
}
ZOTERO_CONFIG = {"GUID":"zotero@chnm.gmu.edu","ID":"zotero","CLIENT_NAME":"Zotero","DOMAIN_NAME":"zotero.org","PRODUCER":"Digital Scholar","PRODUCER_URL":"https://digitalscholar.org","REPOSITORY_URL":"https://repo.zotero.org/repo/","BASE_URI":"http://zotero.org/","WWW_BASE_URL":"https://www.zotero.org/","PROXY_AUTH_URL":"https://zoteroproxycheck.s3.amazonaws.com/test","API_URL":"https://api.zotero.org/","STREAMING_URL":"wss://stream.zotero.org/","SERVICES_URL":"https://services.zotero.org/","API_VERSION":3,"CONNECTOR_MIN_VERSION":"5.0.39","PREF_BRANCH":"extensions.zotero.","BOOKMARKLET_ORIGIN":"https://www.zotero.org","BOOKMARKLET_URL":"https://www.zotero.org/bookmarklet/","START_URL":"https://www.zotero.org/start","QUICK_START_URL":"https://www.zotero.org/support/quick_start_guide","PDF_TOOLS_URL":"https://www.zotero.org/download/xpdf/","SUPPORT_URL":"https://www.zotero.org/support/","SYNC_INFO_URL":"https://www.zotero.org/support/sync","TROUBLESHOOTING_URL":"https://www.zotero.org/support/getting_help","FEEDBACK_URL":"https://forums.zotero.org/","CONNECTORS_URL":"https://www.zotero.org/download/connectors","CHANGELOG_URL":"https://www.zotero.org/support/changelog","CREDITS_URL":"https://www.zotero.org/support/credits_and_acknowledgments","LICENSING_URL":"https://www.zotero.org/support/licensing","GET_INVOLVED_URL":"https://www.zotero.org/getinvolved","DICTIONARIES_URL":"https://download.zotero.org/dictionaries/"}
if (typeof ZOTERO_TRANSLATOR_INFO === 'undefined') var ZOTERO_TRANSLATOR_INFO = {}; // declare if not declared
Object.assign(ZOTERO_TRANSLATOR_INFO, {"translatorID":"19afa3fd-1c7f-4eb8-a37e-8d07768493e8","label":"Citation graph","description":"exports a citation graph in graphml format. Use gephi or yEd to clean up and visualize","creator":"Emiliano heyns","target":"dot","minVersion":"4.0.27","maxVersion":"","translatorType":2,"browserSupport":"gcsv","inRepository":false,"displayOptions":{"Title":false,"Authors":false,"Year":false},"configOptions":{"getCollections":true},"priority":100}); // assign new data
var { doExport } = (() => {
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __typeError = (msg) => {
throw TypeError(msg);
};
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __export = (target, all) => {
for (var name2 in all)
__defProp(target, name2, { get: all[name2], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
// node_modules/@stdlib/utils-define-property/lib/define_property.js
var require_define_property = __commonJS({
"node_modules/@stdlib/utils-define-property/lib/define_property.js"(exports, module) {
var main = typeof Object.defineProperty === "function" ? Object.defineProperty : null;
module.exports = main;
}
});
// node_modules/@stdlib/utils-define-property/lib/has_define_property_support.js
var require_has_define_property_support = __commonJS({
"node_modules/@stdlib/utils-define-property/lib/has_define_property_support.js"(exports, module) {
var defineProperty = require_define_property();
function hasDefinePropertySupport() {
try {
defineProperty({}, "x", {});
return true;
} catch (err) {
return false;
}
}
module.exports = hasDefinePropertySupport;
}
});
// node_modules/@stdlib/utils-define-property/lib/builtin.js
var require_builtin = __commonJS({
"node_modules/@stdlib/utils-define-property/lib/builtin.js"(exports, module) {
var defineProperty = Object.defineProperty;
module.exports = defineProperty;
}
});
// node_modules/@stdlib/string-base-format-interpolate/lib/is_number.js
var require_is_number = __commonJS({
"node_modules/@stdlib/string-base-format-interpolate/lib/is_number.js"(exports, module) {
function isNumber(value) {
return typeof value === "number";
}
module.exports = isNumber;
}
});
// node_modules/@stdlib/string-base-format-interpolate/lib/zero_pad.js
var require_zero_pad = __commonJS({
"node_modules/@stdlib/string-base-format-interpolate/lib/zero_pad.js"(exports, module) {
function startsWithMinus(str) {
return str[0] === "-";
}
function zeros(n) {
var out = "";
var i;
for (i = 0; i < n; i++) {
out += "0";
}
return out;
}
function zeroPad(str, width, right) {
var negative = false;
var pad = width - str.length;
if (pad < 0) {
return str;
}
if (startsWithMinus(str)) {
negative = true;
str = str.substr(1);
}
str = right ? str + zeros(pad) : zeros(pad) + str;
if (negative) {
str = "-" + str;
}
return str;
}
module.exports = zeroPad;
}
});
// node_modules/@stdlib/string-base-format-interpolate/lib/format_integer.js
var require_format_integer = __commonJS({
"node_modules/@stdlib/string-base-format-interpolate/lib/format_integer.js"(exports, module) {
var isNumber = require_is_number();
var zeroPad = require_zero_pad();
var lowercase = String.prototype.toLowerCase;
var uppercase = String.prototype.toUpperCase;
function formatInteger(token) {
var base;
var out;
var i;
switch (token.specifier) {
case "b":
base = 2;
break;
case "o":
base = 8;
break;
case "x":
case "X":
base = 16;
break;
case "d":
case "i":
case "u":
default:
base = 10;
break;
}
out = token.arg;
i = parseInt(out, 10);
if (!isFinite(i)) {
if (!isNumber(out)) {
throw new Error("invalid integer. Value: " + out);
}
i = 0;
}
if (i < 0 && (token.specifier === "u" || base !== 10)) {
i = 4294967295 + i + 1;
}
if (i < 0) {
out = (-i).toString(base);
if (token.precision) {
out = zeroPad(out, token.precision, token.padRight);
}
out = "-" + out;
} else {
out = i.toString(base);
if (!i && !token.precision) {
out = "";
} else if (token.precision) {
out = zeroPad(out, token.precision, token.padRight);
}
if (token.sign) {
out = token.sign + out;
}
}
if (base === 16) {
if (token.alternate) {
out = "0x" + out;
}
out = token.specifier === uppercase.call(token.specifier) ? uppercase.call(out) : lowercase.call(out);
}
if (base === 8) {
if (token.alternate && out.charAt(0) !== "0") {
out = "0" + out;
}
}
return out;
}
module.exports = formatInteger;
}
});
// node_modules/@stdlib/string-base-format-interpolate/lib/is_string.js
var require_is_string = __commonJS({
"node_modules/@stdlib/string-base-format-interpolate/lib/is_string.js"(exports, module) {
function isString(value) {
return typeof value === "string";
}
module.exports = isString;
}
});
// node_modules/@stdlib/string-base-format-interpolate/lib/format_double.js
var require_format_double = __commonJS({
"node_modules/@stdlib/string-base-format-interpolate/lib/format_double.js"(exports, module) {
var isNumber = require_is_number();
var abs = Math.abs;
var lowercase = String.prototype.toLowerCase;
var uppercase = String.prototype.toUpperCase;
var replace = String.prototype.replace;
var RE_EXP_POS_DIGITS = /e\+(\d)$/;
var RE_EXP_NEG_DIGITS = /e-(\d)$/;
var RE_ONLY_DIGITS = /^(\d+)$/;
var RE_DIGITS_BEFORE_EXP = /^(\d+)e/;
var RE_TRAILING_PERIOD_ZERO = /\.0$/;
var RE_PERIOD_ZERO_EXP = /\.0*e/;
var RE_ZERO_BEFORE_EXP = /(\..*[^0])0*e/;
function formatDouble(token) {
var digits;
var out;
var f = parseFloat(token.arg);
if (!isFinite(f)) {
if (!isNumber(token.arg)) {
throw new Error("invalid floating-point number. Value: " + out);
}
f = token.arg;
}
switch (token.specifier) {
case "e":
case "E":
out = f.toExponential(token.precision);
break;
case "f":
case "F":
out = f.toFixed(token.precision);
break;
case "g":
case "G":
if (abs(f) < 1e-4) {
digits = token.precision;
if (digits > 0) {
digits -= 1;
}
out = f.toExponential(digits);
} else {
out = f.toPrecision(token.precision);
}
if (!token.alternate) {
out = replace.call(out, RE_ZERO_BEFORE_EXP, "$1e");
out = replace.call(out, RE_PERIOD_ZERO_EXP, "e");
out = replace.call(out, RE_TRAILING_PERIOD_ZERO, "");
}
break;
default:
throw new Error("invalid double notation. Value: " + token.specifier);
}
out = replace.call(out, RE_EXP_POS_DIGITS, "e+0$1");
out = replace.call(out, RE_EXP_NEG_DIGITS, "e-0$1");
if (token.alternate) {
out = replace.call(out, RE_ONLY_DIGITS, "$1.");
out = replace.call(out, RE_DIGITS_BEFORE_EXP, "$1.e");
}
if (f >= 0 && token.sign) {
out = token.sign + out;
}
out = token.specifier === uppercase.call(token.specifier) ? uppercase.call(out) : lowercase.call(out);
return out;
}
module.exports = formatDouble;
}
});
// node_modules/@stdlib/string-base-format-interpolate/lib/space_pad.js
var require_space_pad = __commonJS({
"node_modules/@stdlib/string-base-format-interpolate/lib/space_pad.js"(exports, module) {
function spaces(n) {
var out = "";
var i;
for (i = 0; i < n; i++) {
out += " ";
}
return out;
}
function spacePad(str, width, right) {
var pad = width - str.length;
if (pad < 0) {
return str;
}
str = right ? str + spaces(pad) : spaces(pad) + str;
return str;
}
module.exports = spacePad;
}
});
// node_modules/@stdlib/string-base-format-interpolate/lib/main.js
var require_main = __commonJS({
"node_modules/@stdlib/string-base-format-interpolate/lib/main.js"(exports, module) {
var formatInteger = require_format_integer();
var isString = require_is_string();
var formatDouble = require_format_double();
var spacePad = require_space_pad();
var zeroPad = require_zero_pad();
var fromCharCode = String.fromCharCode;
var isArray = Array.isArray;
function isnan(value) {
return value !== value;
}
function initialize(token) {
var out = {};
out.specifier = token.specifier;
out.precision = token.precision === void 0 ? 1 : token.precision;
out.width = token.width;
out.flags = token.flags || "";
out.mapping = token.mapping;
return out;
}
function formatInterpolate(tokens) {
var hasPeriod;
var flags;
var token;
var flag;
var num;
var out;
var pos;
var i;
var j;
if (!isArray(tokens)) {
throw new TypeError("invalid argument. First argument must be an array. Value: `" + tokens + "`.");
}
out = "";
pos = 1;
for (i = 0; i < tokens.length; i++) {
token = tokens[i];
if (isString(token)) {
out += token;
} else {
hasPeriod = token.precision !== void 0;
token = initialize(token);
if (!token.specifier) {
throw new TypeError("invalid argument. Token is missing `specifier` property. Index: `" + i + "`. Value: `" + token + "`.");
}
if (token.mapping) {
pos = token.mapping;
}
flags = token.flags;
for (j = 0; j < flags.length; j++) {
flag = flags.charAt(j);
switch (flag) {
case " ":
token.sign = " ";
break;
case "+":
token.sign = "+";
break;
case "-":
token.padRight = true;
token.padZeros = false;
break;
case "0":
token.padZeros = flags.indexOf("-") < 0;
break;
case "#":
token.alternate = true;
break;
default:
throw new Error("invalid flag: " + flag);
}
}
if (token.width === "*") {
token.width = parseInt(arguments[pos], 10);
pos += 1;
if (isnan(token.width)) {
throw new TypeError("the argument for * width at position " + pos + " is not a number. Value: `" + token.width + "`.");
}
if (token.width < 0) {
token.padRight = true;
token.width = -token.width;
}
}
if (hasPeriod) {
if (token.precision === "*") {
token.precision = parseInt(arguments[pos], 10);
pos += 1;
if (isnan(token.precision)) {
throw new TypeError("the argument for * precision at position " + pos + " is not a number. Value: `" + token.precision + "`.");
}
if (token.precision < 0) {
token.precision = 1;
hasPeriod = false;
}
}
}
token.arg = arguments[pos];
switch (token.specifier) {
case "b":
case "o":
case "x":
case "X":
case "d":
case "i":
case "u":
if (hasPeriod) {
token.padZeros = false;
}
token.arg = formatInteger(token);
break;
case "s":
token.maxWidth = hasPeriod ? token.precision : -1;
token.arg = String(token.arg);
break;
case "c":
if (!isnan(token.arg)) {
num = parseInt(token.arg, 10);
if (num < 0 || num > 127) {
throw new Error("invalid character code. Value: " + token.arg);
}
token.arg = isnan(num) ? String(token.arg) : fromCharCode(num);
}
break;
case "e":
case "E":
case "f":
case "F":
case "g":
case "G":
if (!hasPeriod) {
token.precision = 6;
}
token.arg = formatDouble(token);
break;
default:
throw new Error("invalid specifier: " + token.specifier);
}
if (token.maxWidth >= 0 && token.arg.length > token.maxWidth) {
token.arg = token.arg.substring(0, token.maxWidth);
}
if (token.padZeros) {
token.arg = zeroPad(token.arg, token.width || token.precision, token.padRight);
} else if (token.width) {
token.arg = spacePad(token.arg, token.width, token.padRight);
}
out += token.arg || "";
pos += 1;
}
}
return out;
}
module.exports = formatInterpolate;
}
});
// node_modules/@stdlib/string-base-format-interpolate/lib/index.js
var require_lib = __commonJS({
"node_modules/@stdlib/string-base-format-interpolate/lib/index.js"(exports, module) {
var main = require_main();
module.exports = main;
}
});
// node_modules/@stdlib/string-base-format-tokenize/lib/main.js
var require_main2 = __commonJS({
"node_modules/@stdlib/string-base-format-tokenize/lib/main.js"(exports, module) {
var RE = /%(?:([1-9]\d*)\$)?([0 +\-#]*)(\*|\d+)?(?:(\.)(\*|\d+)?)?[hlL]?([%A-Za-z])/g;
function parse(match) {
var token = {
"mapping": match[1] ? parseInt(match[1], 10) : void 0,
"flags": match[2],
"width": match[3],
"precision": match[5],
"specifier": match[6]
};
if (match[4] === "." && match[5] === void 0) {
token.precision = "1";
}
return token;
}
function formatTokenize(str) {
var content;
var tokens;
var match;
var prev;
tokens = [];
prev = 0;
match = RE.exec(str);
while (match) {
content = str.slice(prev, RE.lastIndex - match[0].length);
if (content.length) {
tokens.push(content);
}
tokens.push(parse(match));
prev = RE.lastIndex;
match = RE.exec(str);
}
content = str.slice(prev);
if (content.length) {
tokens.push(content);
}
return tokens;
}
module.exports = formatTokenize;
}
});
// node_modules/@stdlib/string-base-format-tokenize/lib/index.js
var require_lib2 = __commonJS({
"node_modules/@stdlib/string-base-format-tokenize/lib/index.js"(exports, module) {
var main = require_main2();
module.exports = main;
}
});
// node_modules/@stdlib/string-format/lib/is_string.js
var require_is_string2 = __commonJS({
"node_modules/@stdlib/string-format/lib/is_string.js"(exports, module) {
function isString(value) {
return typeof value === "string";
}
module.exports = isString;
}
});
// node_modules/@stdlib/string-format/lib/main.js
var require_main3 = __commonJS({
"node_modules/@stdlib/string-format/lib/main.js"(exports, module) {
var interpolate = require_lib();
var tokenize = require_lib2();
var isString = require_is_string2();
function format2(str) {
var args;
var i;
if (!isString(str)) {
throw new TypeError(format2("invalid argument. First argument must be a string. Value: `%s`.", str));
}
args = [tokenize(str)];
for (i = 1; i < arguments.length; i++) {
args.push(arguments[i]);
}
return interpolate.apply(null, args);
}
module.exports = format2;
}
});
// node_modules/@stdlib/string-format/lib/index.js
var require_lib3 = __commonJS({
"node_modules/@stdlib/string-format/lib/index.js"(exports, module) {
var main = require_main3();
module.exports = main;
}
});
// node_modules/@stdlib/utils-define-property/lib/polyfill.js
var require_polyfill = __commonJS({
"node_modules/@stdlib/utils-define-property/lib/polyfill.js"(exports, module) {
var format2 = require_lib3();
var objectProtoype = Object.prototype;
var toStr = objectProtoype.toString;
var defineGetter = objectProtoype.__defineGetter__;
var defineSetter = objectProtoype.__defineSetter__;
var lookupGetter = objectProtoype.__lookupGetter__;
var lookupSetter = objectProtoype.__lookupSetter__;
function defineProperty(obj, prop, descriptor) {
var prototype;
var hasValue;
var hasGet;
var hasSet;
if (typeof obj !== "object" || obj === null || toStr.call(obj) === "[object Array]") {
throw new TypeError(format2("invalid argument. First argument must be an object. Value: `%s`.", obj));
}
if (typeof descriptor !== "object" || descriptor === null || toStr.call(descriptor) === "[object Array]") {
throw new TypeError(format2("invalid argument. Property descriptor must be an object. Value: `%s`.", descriptor));
}
hasValue = "value" in descriptor;
if (hasValue) {
if (lookupGetter.call(obj, prop) || lookupSetter.call(obj, prop)) {
prototype = obj.__proto__;
obj.__proto__ = objectProtoype;
delete obj[prop];
obj[prop] = descriptor.value;
obj.__proto__ = prototype;
} else {
obj[prop] = descriptor.value;
}
}
hasGet = "get" in descriptor;
hasSet = "set" in descriptor;
if (hasValue && (hasGet || hasSet)) {
throw new Error("invalid argument. Cannot specify one or more accessors and a value or writable attribute in the property descriptor.");
}
if (hasGet && defineGetter) {
defineGetter.call(obj, prop, descriptor.get);
}
if (hasSet && defineSetter) {
defineSetter.call(obj, prop, descriptor.set);
}
return obj;
}
module.exports = defineProperty;
}
});
// node_modules/@stdlib/utils-define-property/lib/index.js
var require_lib4 = __commonJS({
"node_modules/@stdlib/utils-define-property/lib/index.js"(exports, module) {
var hasDefinePropertySupport = require_has_define_property_support();
var builtin = require_builtin();
var polyfill = require_polyfill();
var defineProperty;
if (hasDefinePropertySupport()) {
defineProperty = builtin;
} else {
defineProperty = polyfill;
}
module.exports = defineProperty;
}
});
// node_modules/@stdlib/utils-define-nonenumerable-read-only-property/lib/main.js
var require_main4 = __commonJS({
"node_modules/@stdlib/utils-define-nonenumerable-read-only-property/lib/main.js"(exports, module) {
var defineProperty = require_lib4();
function setNonEnumerableReadOnly(obj, prop, value) {
defineProperty(obj, prop, {
"configurable": false,
"enumerable": false,
"writable": false,
"value": value
});
}
module.exports = setNonEnumerableReadOnly;
}
});
// node_modules/@stdlib/utils-define-nonenumerable-read-only-property/lib/index.js
var require_lib5 = __commonJS({
"node_modules/@stdlib/utils-define-nonenumerable-read-only-property/lib/index.js"(exports, module) {
var main = require_main4();
module.exports = main;
}
});
// node_modules/@stdlib/assert-is-string/lib/primitive.js
var require_primitive = __commonJS({
"node_modules/@stdlib/assert-is-string/lib/primitive.js"(exports, module) {
function isString(value) {
return typeof value === "string";
}
module.exports = isString;
}
});
// node_modules/@stdlib/assert-has-symbol-support/lib/main.js
var require_main5 = __commonJS({
"node_modules/@stdlib/assert-has-symbol-support/lib/main.js"(exports, module) {
function hasSymbolSupport() {
return typeof Symbol === "function" && typeof Symbol("foo") === "symbol";
}
module.exports = hasSymbolSupport;
}
});
// node_modules/@stdlib/assert-has-symbol-support/lib/index.js
var require_lib6 = __commonJS({
"node_modules/@stdlib/assert-has-symbol-support/lib/index.js"(exports, module) {
var main = require_main5();
module.exports = main;
}
});
// node_modules/@stdlib/assert-has-tostringtag-support/lib/main.js
var require_main6 = __commonJS({
"node_modules/@stdlib/assert-has-tostringtag-support/lib/main.js"(exports, module) {
var hasSymbols = require_lib6();
var FLG = hasSymbols();
function hasToStringTagSupport() {
return FLG && typeof Symbol.toStringTag === "symbol";
}
module.exports = hasToStringTagSupport;
}
});
// node_modules/@stdlib/assert-has-tostringtag-support/lib/index.js
var require_lib7 = __commonJS({
"node_modules/@stdlib/assert-has-tostringtag-support/lib/index.js"(exports, module) {
var main = require_main6();
module.exports = main;
}
});
// node_modules/@stdlib/utils-native-class/lib/tostring.js
var require_tostring = __commonJS({
"node_modules/@stdlib/utils-native-class/lib/tostring.js"(exports, module) {
var toStr = Object.prototype.toString;
module.exports = toStr;
}
});
// node_modules/@stdlib/utils-native-class/lib/main.js
var require_main7 = __commonJS({
"node_modules/@stdlib/utils-native-class/lib/main.js"(exports, module) {
var toStr = require_tostring();
function nativeClass(v) {
return toStr.call(v);
}
module.exports = nativeClass;
}
});
// node_modules/@stdlib/assert-has-own-property/lib/main.js
var require_main8 = __commonJS({
"node_modules/@stdlib/assert-has-own-property/lib/main.js"(exports, module) {
var has = Object.prototype.hasOwnProperty;
function hasOwnProp(value, property) {
if (value === void 0 || value === null) {
return false;
}
return has.call(value, property);
}
module.exports = hasOwnProp;
}
});
// node_modules/@stdlib/assert-has-own-property/lib/index.js
var require_lib8 = __commonJS({
"node_modules/@stdlib/assert-has-own-property/lib/index.js"(exports, module) {
var main = require_main8();
module.exports = main;
}
});
// node_modules/@stdlib/symbol-ctor/lib/main.js
var require_main9 = __commonJS({
"node_modules/@stdlib/symbol-ctor/lib/main.js"(exports, module) {
var Sym = typeof Symbol === "function" ? Symbol : void 0;
module.exports = Sym;
}
});
// node_modules/@stdlib/symbol-ctor/lib/index.js
var require_lib9 = __commonJS({
"node_modules/@stdlib/symbol-ctor/lib/index.js"(exports, module) {
var main = require_main9();
module.exports = main;
}
});
// node_modules/@stdlib/utils-native-class/lib/tostringtag.js
var require_tostringtag = __commonJS({
"node_modules/@stdlib/utils-native-class/lib/tostringtag.js"(exports, module) {
var Symbol2 = require_lib9();
var toStrTag = typeof Symbol2 === "function" ? Symbol2.toStringTag : "";
module.exports = toStrTag;
}
});
// node_modules/@stdlib/utils-native-class/lib/polyfill.js
var require_polyfill2 = __commonJS({
"node_modules/@stdlib/utils-native-class/lib/polyfill.js"(exports, module) {
var hasOwnProp = require_lib8();
var toStringTag = require_tostringtag();
var toStr = require_tostring();
function nativeClass(v) {
var isOwn;
var tag;
var out;
if (v === null || v === void 0) {
return toStr.call(v);
}
tag = v[toStringTag];
isOwn = hasOwnProp(v, toStringTag);
try {
v[toStringTag] = void 0;
} catch (err) {
return toStr.call(v);
}
out = toStr.call(v);
if (isOwn) {
v[toStringTag] = tag;
} else {
delete v[toStringTag];
}
return out;
}
module.exports = nativeClass;
}
});
// node_modules/@stdlib/utils-native-class/lib/index.js
var require_lib10 = __commonJS({
"node_modules/@stdlib/utils-native-class/lib/index.js"(exports, module) {
var hasToStringTag = require_lib7();
var builtin = require_main7();
var polyfill = require_polyfill2();
var main;
if (hasToStringTag()) {
main = polyfill;
} else {
main = builtin;
}
module.exports = main;
}
});
// node_modules/@stdlib/assert-is-string/lib/valueof.js
var require_valueof = __commonJS({
"node_modules/@stdlib/assert-is-string/lib/valueof.js"(exports, module) {
var valueOf = String.prototype.valueOf;
module.exports = valueOf;
}
});
// node_modules/@stdlib/assert-is-string/lib/try2valueof.js
var require_try2valueof = __commonJS({
"node_modules/@stdlib/assert-is-string/lib/try2valueof.js"(exports, module) {
var valueOf = require_valueof();
function test(value) {
try {
valueOf.call(value);
return true;
} catch (err) {
return false;
}
}
module.exports = test;
}
});
// node_modules/@stdlib/assert-is-string/lib/object.js
var require_object = __commonJS({
"node_modules/@stdlib/assert-is-string/lib/object.js"(exports, module) {
var hasToStringTag = require_lib7();
var nativeClass = require_lib10();
var test = require_try2valueof();
var FLG = hasToStringTag();
function isString(value) {
if (typeof value === "object") {
if (value instanceof String) {
return true;
}
if (FLG) {
return test(value);
}
return nativeClass(value) === "[object String]";
}
return false;
}
module.exports = isString;
}
});
// node_modules/@stdlib/assert-is-string/lib/main.js
var require_main10 = __commonJS({
"node_modules/@stdlib/assert-is-string/lib/main.js"(exports, module) {
var isPrimitive = require_primitive();
var isObject = require_object();
function isString(value) {
return isPrimitive(value) || isObject(value);
}
module.exports = isString;
}
});
// node_modules/@stdlib/assert-is-string/lib/index.js
var require_lib11 = __commonJS({
"node_modules/@stdlib/assert-is-string/lib/index.js"(exports, module) {
var setReadOnly = require_lib5();
var main = require_main10();
var isPrimitive = require_primitive();
var isObject = require_object();
setReadOnly(main, "isPrimitive", isPrimitive);
setReadOnly(main, "isObject", isObject);
module.exports = main;
}
});
// node_modules/@stdlib/utils-escape-regexp-string/lib/main.js
var require_main11 = __commonJS({
"node_modules/@stdlib/utils-escape-regexp-string/lib/main.js"(exports, module) {
var isString = require_lib11().isPrimitive;
var format2 = require_lib3();
var RE_CHARS = /[-\/\\^$*+?.()|[\]{}]/g;
function rescape2(str) {
var len;
var s;
var i;
if (!isString(str)) {
throw new TypeError(format2("invalid argument. Must provide a regular expression string. Value: `%s`.", str));
}
if (str[0] === "/") {
len = str.length;
for (i = len - 1; i >= 0; i--) {
if (str[i] === "/") {
break;
}
}
}
if (i === void 0 || i <= 0) {
return str.replace(RE_CHARS, "\\$&");
}
s = str.substring(1, i);
s = s.replace(RE_CHARS, "\\$&");
str = str[0] + s + str.substring(i);
return str;
}
module.exports = rescape2;
}
});
// node_modules/@stdlib/utils-escape-regexp-string/lib/index.js
var require_lib12 = __commonJS({
"node_modules/@stdlib/utils-escape-regexp-string/lib/index.js"(exports, module) {
var main = require_main11();
module.exports = main;
}
});
// gen/version.js
var require_version = __commonJS({
"gen/version.js"(exports, module) {
module.exports = "6.7.263";
}
});
// translators/Citation graph.ts
var Citation_graph_exports = {};
__export(Citation_graph_exports, {
doExport: () => doExport
});
// gen/translators.ts
var displayOptions = [
"Authors",
"Items",
"Normalize",
"Preferences",
"Title",
"Year",
"biblatexAPA",
"biblatexChicago",
"cache",
"custom",
"dropAttachments",
"exportDir",
"exportFileData",
"exportNotes",
"exportPath",
"keepUpdated",
"markdown",
"quickCopyMode",
"useJournalAbbreviation",
"worker"
];
var headers = [
{
"translatorID": "f895aa0d-f28e-47fe-b247-2ea77c6ed583",
"translatorType": 2,
"label": "Better BibLaTeX",
"description": "exports items in BibLaTeX format",
"creator": "Simon Kornblith, Richard Karnesky, Anders Johansson and Emiliano Heyns",
"target": "bib",
"minVersion": "4.0.27",
"maxVersion": "",
"browserSupport": "gcsv",
"configOptions": {
"getCollections": true,
"cached": true
},
"displayOptions": {
"exportNotes": false,
"exportFileData": false,
"useJournalAbbreviation": false,
"biblatexAPA": false,
"biblatexChicago": false,
"keepUpdated": false,
"worker": true
},
"priority": 50,
"inRepository": false
},
{
"translatorID": "a515a220-6fef-45ea-9842-8025dfebcc8f",
"label": "Better BibTeX Citation Key Quick Copy",
"description": "exports citations to be copy-pasted into your LaTeX/Markdown /Org-mode/etc documents",
"creator": "Emiliano heyns",
"target": "txt",
"minVersion": "4.0.27",
"maxVersion": "",
"translatorType": 2,
"browserSupport": "gcsv",
"priority": 100,
"displayOptions": {
"quickCopyMode": ""
},
"inRepository": false
},
{
"translatorID": "ca65189f-8815-4afe-8c8b-8c7c15f0edca",
"label": "Better BibTeX",
"description": "exports items in BibTeX format",
"creator": "Simon Kornblith, Richard Karnesky and Emiliano heyns",
"target": "bib",
"minVersion": "4.0.27",
"maxVersion": "",
"configOptions": {
"async": true,
"getCollections": true,
"cached": true
},
"displayOptions": {
"exportNotes": false,
"exportFileData": false,
"useJournalAbbreviation": false,
"keepUpdated": false,
"worker": true
},
"translatorType": 3,
"browserSupport": "gcsv",
"priority": 199,
"inRepository": false
},
{
"translatorID": "f4b52ab0-f878-4556-85a0-c7aeedd09dfc",
"label": "Better CSL JSON",
"description": "exports items in pandoc-compatible CSL-JSON format, with added citation keys and parsing of metadata",
"creator": "Emiliano heyns",
"target": "json",
"minVersion": "4.0.27",
"maxVersion": "",
"displayOptions": {
"keepUpdated": false,
"worker": true
},
"configOptions": {
"getCollections": true,
"cached": true
},
"translatorType": 2,
"browserSupport": "gcsv",
"inRepository": false,
"priority": 100
},
{
"translatorID": "0f238e69-043e-4882-93bf-342de007de19",
"label": "Better CSL YAML",
"description": "exports items in pandoc-compatible CSL-YAML format, with added citation keys and parsing of metadata",
"creator": "Emiliano heyns",
"target": "yaml",
"minVersion": "4.0.27",
"maxVersion": "",
"displayOptions": {
"keepUpdated": false,
"worker": true
},
"configOptions": {
"getCollections": true,
"cached": true
},
"translatorType": 3,
"browserSupport": "gcsv",
"priority": 800,
"inRepository": false
},
{
"translatorID": "36a3b0b5-bad0-4a04-b79b-441c7cef77db",
"label": "BetterBibTeX JSON",
"description": "exports and imports items in BetterBibTeX debug format. Mostly for BBT-internal use",
"creator": "Emiliano Heyns",
"target": "json",
"minVersion": "4.0.27",
"maxVersion": "",
"configOptions": {
"async": true,
"getCollections": true,
"cached": true
},
"displayOptions": {
"exportNotes": true,
"exportFileData": false,
"Items": true,
"Preferences": true,
"keepUpdated": false,
"worker": true,
"Normalize": false
},
"translatorType": 3,
"browserSupport": "gcsv",
"priority": 49,
"inRepository": false
},
{
"translatorID": "19afa3fd-1c7f-4eb8-a37e-8d07768493e8",
"label": "Citation graph",
"description": "exports a citation graph in graphml format. Use gephi or yEd to clean up and visualize",
"creator": "Emiliano heyns",
"target": "dot",
"minVersion": "4.0.27",
"maxVersion": "",
"translatorType": 2,
"browserSupport": "gcsv",
"inRepository": false,
"displayOptions": {
"Title": false,
"Authors": false,
"Year": false
},
"configOptions": {
"getCollections": true
},
"priority": 100
},
{
"translatorID": "e7859c61-54d4-466a-b236-aadcf1f7e83b",
"label": "Collected notes",
"description": "exports your notes",
"creator": "Emiliano heyns",
"target": "html",
"displayOptions": {
"markdown": false
},
"minVersion": "4.0.27",
"maxVersion": "",
"translatorType": 2,
"browserSupport": "gcsv",
"inRepository": false,
"configOptions": {
"getCollections": true
},
"priority": 100
}
];
var byId = {};
var byLabel = {};
var bySlug = {};
for (const header of headers) {
byId[header.translatorID] = byLabel[header.label] = bySlug[header.label.replace(/ /g, "")] = header;
}
// gen/preferences/meta.ts
var defaults = {
ascii: "",
asciiBibLaTeX: false,
asciiBibTeX: true,
autoAbbrev: false,
autoAbbrevStyle: "",
autoExport: "immediate",
autoExportDelay: 5,
autoExportIdleWait: 10,
autoExportPathReplaceDiacritics: false,
autoExportPathReplaceDirSep: "-",
autoExportPathReplaceSpace: " ",
automaticTags: true,
autoPinDelay: 0,
auxImport: false,
baseAttachmentPath: "",
biblatexExtendedDateFormat: true,
biblatexExtendedNameFormat: true,
biblatexExtractEprint: true,
bibtexEditionOrdinal: false,
bibtexParticleNoOp: false,
bibtexURL: "off",
cache: true,
cacheDelete: false,
cacheRetain: false,
charmap: "",
citeCommand: "cite",
citekeyCaseInsensitive: true,
citekeyFold: true,
citekeyFormat: "auth.lower + shorttitle(3,3) + year",
citekeyFormatEditing: "",
citekeySearch: true,
citekeyUnsafeChars: `\\"#%'(),={}~`,
csquotes: "",
DOIandURL: "both",
exportBibTeXStrings: "off",
exportBraceProtection: true,
exportSort: "citekey",
exportTitleCase: true,
extraMergeCitekeys: false,
extraMergeCSL: false,
extraMergeTeX: false,
git: "config",
import: true,
importBibTeXStrings: true,
importCaseProtection: "as-needed",
importCitationKey: true,
importDetectURLs: true,
importExtra: true,
importJabRefAbbreviations: true,
importJabRefStrings: true,
importNoteToExtra: "",
importSentenceCase: "on+guess",
importSentenceCaseQuoted: true,
importUnknownTexCommand: "ignore",
itemObserverDelay: 5,
jabrefFormat: 0,
jieba: false,
keyConflictPolicy: "keep",
keyScope: "library",
kuroshiro: false,
language: "langid",
logEvents: true,
mapMath: "",
mapText: "",
packages: "",
parseParticles: true,
patchDates: "dateadded=dateAdded, date-added=dateAdded, datemodified=dateModified, date-modified=dateModified",
platform: "",
postscript: "",
postscriptOverride: "",
preferencesOverride: "",
qualityReport: false,
quickCopyEta: "",
quickCopyMode: "latex",
quickCopyOrgMode: "zotero",
quickCopyPandocBrackets: false,
quickCopySelectLink: "zotero",
rawImports: false,
rawLaTag: "#LaTeX",
relativeFilePaths: false,
scrubDatabase: false,
separatorList: "and",
separatorNames: "and",
skipFields: "",
skipWords: "a,ab,aboard,about,above,across,after,against,al,along,amid,among,an,and,anti,around,as,at,before,behind,below,beneath,beside,besides,between,beyond,but,by,d,da,das,de,del,dell,dello,dei,degli,della,dell,delle,dem,den,der,des,despite,die,do,down,du,during,ein,eine,einem,einen,einer,eines,el,en,et,except,for,from,gli,i,il,in,inside,into,is,l,la,las,le,les,like,lo,los,near,nor,of,off,on,onto,or,over,past,per,plus,round,save,since,so,some,sur,than,the,through,to,toward,towards,un,una,unas,under,underneath,une,unlike,uno,unos,until,up,upon,versus,via,von,while,with,within,without,yet,zu,zum",
startupProgress: "popup",
strings: "",
stringsOverride: "",
testing: false,
verbatimFields: "url,doi,file,pdf,ids,eprint,/^verb[a-z]$/,groups,/^citeulike-linkout-[0-9]+$/, /^bdsk-url-[0-9]+$/, keywords",
warnBulkModify: 10,
warnTitleCased: false
};
var affectedBy = {
"BetterBibTeX JSON": [],
"Better BibLaTeX": [
"ascii",
"asciiBibLaTeX",
"autoAbbrev",
"autoAbbrevStyle",
"automaticTags",
"baseAttachmentPath",
"biblatexExtendedDateFormat",
"biblatexExtendedNameFormat",
"biblatexExtractEprint",
"cache",
"charmap",
"csquotes",
"DOIandURL",
"exportBibTeXStrings",
"exportBraceProtection",
"exportTitleCase",
"jabrefFormat",
"language",
"mapMath",
"mapText",
"packages",
"parseParticles",
"postscript",
"qualityReport",
"rawLaTag",
"relativeFilePaths",
"separatorList",
"separatorNames",
"skipFields",
"skipWords",
"strings",
"verbatimFields"
],
"Better BibTeX": [
"ascii",
"asciiBibTeX",
"autoAbbrev",
"autoAbbrevStyle",
"automaticTags",
"baseAttachmentPath",
"biblatexExtractEprint",
"bibtexEditionOrdinal",
"bibtexParticleNoOp",
"bibtexURL",
"cache",
"charmap",
"csquotes",
"DOIandURL",
"exportBibTeXStrings",
"exportBraceProtection",
"exportTitleCase",
"jabrefFormat",
"language",
"mapMath",
"mapText",
"packages",
"parseParticles",
"postscript",
"qualityReport",
"rawLaTag",
"relativeFilePaths",
"separatorList",
"separatorNames",
"skipFields",
"skipWords",
"strings",
"verbatimFields"
],
"Better CSL JSON": [
"autoAbbrev",
"autoAbbrevStyle",
"automaticTags",
"baseAttachmentPath",
"cache",
"parseParticles",
"postscript",
"skipFields"
],
"Better CSL YAML": [
"autoAbbrev",
"autoAbbrevStyle",
"automaticTags",
"baseAttachmentPath",
"cache",
"parseParticles",
"postscript",
"skipFields"
]
};
var options = {
"autoExport": {
"immediate": "On Change",
"idle": "When Idle",
"off": "Paused"
},
"bibtexURL": {
"off": "no",
"note": "in the 'note' field",
"note-url-ish": "in the 'note' field, but assuming the 'url' package is not loaded",
"url": "in the 'url' field",
"url-ish": "in the 'url' field, but assuming the 'url' package is not loaded"
},
"DOIandURL": {
"both": "both",
"doi": "DOI",
"url": "URL"
},
"exportBibTeXStrings": {
"off": "No",
"detect": "Assume single-word fields to be @string vars",
"match": "Match against the @string declarations below",
"match+reverse": "Match against the @string declarations and their values below"
},
"exportSort": {
"off": "off (fastest)",
"id": "item creation order (plenty fast)",
"citekey": "citation key (slower on very large libraries)"
},
"importCaseProtection": {
"as-needed": "minimal",
"on": "yes",
"off": "no"
},
"importSentenceCase": {
"on+guess": "yes, but try to exclude already-sentence-cased titles",
"on": "yes",
"off": "no (import titles as-is)"
},
"jabrefFormat": {
"0": "no",
"3": "for JabRef 3",
"4": "for JabRef 4",
"5": "for JabRef 5"
},
"keyConflictPolicy": {
"change": "postfixed (causes key changes)",
"keep": "kept (causes key duplicates)"
},
"keyScope": {
"global": "across all libraries",
"library": "within each library"
},
"language": {
"langid": "langid",
"language": "language",
"both": "both"
},
"quickCopyMode": {
"latex": "LaTeX citation",
"citekeys": "Cite Keys",
"eta": "Eta template",
"gitbook": "GitBook",
"orgRef": "org-ref citation",
"orgRef3": "org-ref v3 citation",
"orgmode": "Org-mode select link",
"pandoc": "Pandoc citation",
"roamCiteKey": "Roam Cite Key",
"rtfScan": "RTF Scan marker",
"selectlink": "Zotero select link",
"jupyter": "Jupyter notebook",
"jekyll": "Jekyll cite"
},
"quickCopyOrgMode": {
"zotero": "using Zotero item key",
"citationkey": "using Better BibTeX citation key"
},
"quickCopySelectLink": {
"zotero": "using Zotero item key",
"citationkey": "using Better BibTeX citation key"
}
};
// translators/lib/collect.ts
var Items = class {
constructor() {
this.items = [];
this.map = {};
let item;
while (item = Zotero.nextItem()) {
this.items.push(this.map[item.itemID] = this.map[item.itemKey] = item);
}
}
sortkey(item) {
return `${item.citationKey || ""} ${item.dateAdded || ""}`;
}
sort(sort) {
switch (sort) {
case "id":
this.items.sort((a, b) => (a.dateAdded || "").localeCompare(b.dateAdded || ""));
break;
case "citekey":
this.items.sort((a, b) => this.sortkey(a).localeCompare(this.sortkey(b)));
break;
}
}
erase() {
this.items = [];
this.map = {};
this.current = null;
}
cacheable(cacheable) {
for (const item of this.items) {
item.$cacheable = cacheable;
}
}
*[Symbol.iterator]() {
for (const item of this.items) {
yield item;
}
}
get regular() {
return this._regular();
}
*_regular() {
for (const item of this.items) {
switch (item.itemType) {
case "annotation":
case "note":
case "attachment":
break;
default:
yield this.current = item;
}
}
}
};
var Collections = class {
constructor(items) {
this.items = items;
this.byKey = {};
let collection;
while (collection = Zotero.nextCollection()) {
this.registerCollection(collection, "");
}
}
erase() {
this.byKey = {};
}
registerCollection(collection, parent) {
const key = (collection.primary ? collection.primary : collection).key;
if (this.byKey[key]) return;
this.byKey[key] = {
key,
parent,
name: collection.name,
collections: [],
items: []
};
for (const child of collection.descendents || collection.children) {
switch (child.type) {
case "collection":
this.byKey[key].collections.push(child.key);
this.registerCollection(child, key);
break;
case "item":
this.byKey[key].items.push(child.id);
break;
}
}
}
get collectionTree() {
return Object.values(this.byKey).filter((coll) => !coll.parent).map((coll) => this.nestedCollection(coll));
}
nestedCollection(collection) {
const nested = {
key: collection.key,
name: collection.name,
items: collection.items.map((itemID) => this.items.map[itemID]).filter((item) => item),
collections: collection.collections.map((key) => this.nestedCollection(this.byKey[key])).filter((coll) => coll)
};
for (const coll of nested.collections) {
coll.parent = nested;
}
return nested;
}
};
function slurp() {
let input = "";
let read;
while (read = Zotero.read(1048576)) {
input += read;
}
return input;
}
var Collected = class {
constructor(translator, mode) {
this.translator = translator;
this.input = "";
this.displayOptions = {};
switch (mode) {
case "export":
this.items = new Items();
this.collections = new Collections(this.items);
for (const displayOption of displayOptions) {
this.displayOptions[displayOption] = Zotero.getOption(displayOption);
}
break;
case "import":
this.input = slurp();
break;
}
this.preferences = Object.entries(defaults).reduce((acc, [pref, dflt]) => {
var _a2;
acc[pref] = (_a2 = Zotero.getHiddenPref(`better-bibtex.${pref}`)) != null ? _a2 : dflt;
return acc;
}, {});
this.preferences.testing = Zotero.getHiddenPref("better-bibtex.testing");
this.platform = Zotero.getHiddenPref("better-bibtex.platform");
}
item(type) {
return new Zotero.Item(type);
}
collection() {
return new Zotero.Collection();
}
progress(pct) {
Zotero.setProgress(pct);
}
};
// content/client.ts
var worker = typeof location !== "undefined" && location.search;
var searchParams = worker && new URLSearchParams(location.search);
var name = (() => {
var _a2;
if (worker) return searchParams.get("name");
const $name = Zotero.clientName || ((_a2 = Zotero.BetterBibTeX) == null ? void 0 : _a2.clientName);
if (!$name) throw new Error("Unable to detect clientName");
return $name;
})();
var version = (() => {
var _a2;
if (worker) return searchParams.get("version");
const $version = Zotero.version || ((_a2 = Zotero.BetterBibTeX) == null ? void 0 : _a2.clientVersion);
if (!$version) throw new Error("Unable to detect clientVersion");
return $version;
})();
var slug = name.toLowerCase().replace("-", "");
var is7 = version[0] === "7";
var isBeta = version.includes("beta");
var run = worker ? searchParams.get("run") : Zotero.Utilities.generateObjectKey();
var locale = worker ? searchParams.get("locale") : Zotero.locale;
var platform = worker ? searchParams.get("platform") : Zotero.isWin ? "win" : Zotero.isMac ? "mac" : Zotero.isLinux ? "lin" : "unk";
var isWin = worker ? searchParams.get("isWin") === "true" : Zotero.isWin;
var isMac = worker ? searchParams.get("isMac") === "true" : Zotero.isMac;
var isLinux = worker ? searchParams.get("isLinux") === "true" : Zotero.isLinux;
// gen/osfile.js
var isWin2 = Services.appinfo.OS == "WINNT";
var OS2 = {
Constants: {
Path: {
get homeDir() {
return FileUtils.getDir("Home", []).path;
},
get libDir() {
return FileUtils.getDir("GreBinD", []).path;
},
get profileDir() {
return FileUtils.getDir("ProfD", []).path;
},
get tmpDir() {
return FileUtils.getDir("TmpD", []).path;
}
}
},
File: {
DirectoryIterator: function(path) {
var initialized = false;
var paths = [];
async function init() {
paths.push(...await IOUtils.getChildren(path));
initialized = true;
}
async function getEntry(path2) {
var info = await IOUtils.stat(path2);
return {
name: PathUtils.filename(path2),
path: path2,
isDir: info.type == "directory"
};
}
this.nextBatch = async function(num) {
if (!initialized) {
await init();
}
var entries = [];
while (paths.length && num > 0) {
entries.push(await getEntry(paths.shift()));
num--;
}
return entries;
};
this.forEach = async function(func) {
if (!initialized) {
await init();
}
var i = 0;
while (paths.length) {
let entry = await getEntry(paths.shift());
await func(entry, i++, this);
}
};
this.close = function() {
};
},
Error: function(msg) {
this.message = msg;
this.stack = new Error().stack;
},
copy: wrapWrite(async function(src, dest) {
return IOUtils.copy(src, dest);
}),
exists: async function(path) {
try {
return await IOUtils.exists(path);
} catch (e) {
if (e.message.includes("NS_ERROR_FILE_UNRECOGNIZED_PATH")) {
dump(e.message + "\n\n" + e.stack + "\n\n");
Components.utils.reportError(e);
return false;
}
}
},
makeDir: wrapWrite(async function(path, options2 = {}) {
try {
return await IOUtils.makeDirectory(
path,
{
ignoreExisting: options2.ignoreExisting !== false,
createAncestors: !!options2.from,
permissions: options2.unixMode
}
);
} catch (e) {
if (e.name == "InvalidAccessError") {
if (/Could not create directory because the target file(.+) exists and is not a directory/.test(e.message)) {
let osFileError = new OS2.File.Error(e.message);
osFileError.becauseExists = true;
throw osFileError;
}
}
}
}),
move: wrapWrite(async function(src, dest, options2 = {}) {
if (options2.noCopy) {
throw new Error("noCopy is no longer supported");
}
var destFileInfo = null;
try {
destFileInfo = await IOUtils.stat(dest);
} catch (e) {
if (e.name != "NotFoundError") {
throw e;
}
}
if (destFileInfo) {
if (destFileInfo.type == "directory") {
throw new Error("OS.File.move() destination cannot be a directory -- use IOUtils.move()");
}
if (options2.noOverwrite) {
let e = new OS2.File.Error();
e.becauseExists = true;
throw e;
}
}
return IOUtils.move(src, dest, options2);
}),
read: async function(path, options2 = {}) {
if (options2.encoding) {
if (!/^utf\-?8$/i.test(options2.encoding)) {
throw new Error("Can only read UTF-8");
}
return IOUtils.readUTF8(path);
}
return IOUtils.read(
path,
{
maxBytes: options2.bytes
}
);
},
remove: async function(path, options2 = {}) {
return IOUtils.remove(path, options2);
},
removeDir: async function(path, options2 = {}) {
return IOUtils.remove(
path,
{
recursive: true,
// OS.File.removeDir defaulted to ignoreAbsent: true
ignoreAbsent: options2.ignoreAbsent !== false
}
);
},
removeEmptyDir: async function(path) {
return IOUtils.remove(path);
},
setDates: async function(path, atime, mtime) {
if (atime) {
await IOUtils.setAccessTime(path, atime.valueOf());
}
return await IOUtils.setModificationTime(path, mtime ? mtime.valueOf() : void 0);
},
setPermissions: async function(path, { unixMode, winAttributes } = {}) {
await IOUtils.setPermissions(path, unixMode);
if (winAttributes && isWin2) {
let { readOnly, hidden, system } = winAttributes;
await IOUtils.setWindowsAttributes(path, { readOnly, hidden, system });
}
},
stat: async function stat(path) {
var info;
try {
info = await IOUtils.stat(path);
} catch (e) {
if (e.name == "NotFoundError") {
let osFileError = new this.Error("File not found");
osFileError.becauseNoSuchFile = true;
throw osFileError;
}
throw e;
}
return {
isDir: info.type == "directory",
isSymLink: true,
// Supposedly was broken in Firefox
size: info.size,
lastAccessDate: new Date(info.lastAccessed),
lastModificationDate: new Date(info.lastModified),
unixMode: !isWin2 ? info.permissions : void 0
};
},
unixSymLink: async function(pathTarget, pathCreate) {
if (await IOUtils.exists(pathCreate)) {
let osFileError = new this.Error(pathCreate + " already exists");
osFileError.becauseExists = true;
throw osFileError;
}
const { ctypes } = ChromeUtils.importESModule(
"resource://gre/modules/ctypes.sys.mjs"
);
try {
if (Services.appinfo.OS === "Darwin") {
const libc = ctypes.open(
Services.appinfo.OS === "Darwin" ? "libSystem.B.dylib" : "libc.so"
);
const symlink = libc.declare(
"symlink",
ctypes.default_abi,
ctypes.int,
// return value
ctypes.char.ptr,
// target
ctypes.char.ptr
//linkpath
);
if (symlink(pathTarget, pathCreate)) {
throw new Error("Failed to create symlink at " + pathCreate);
}
} else {
let ln = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
ln.initWithPath("/bin/ln");
let process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
process.init(ln);
let args = ["-s", pathTarget, pathCreate];
process.run(true, args, args.length);
}
} catch (e) {
dump(e.message + "\n\n");
throw new Error("Failed to create symlink at " + pathCreate);
}
},
writeAtomic: async function(path, bytes, options2 = {}) {
if (options2.backupTo) {
options2.backupFile = options2.backupTo;
}
if (options2.noOverwrite) {
options2.mode = "create";
}
if (options2.encoding == "utf-8") {
return IOUtils.writeUTF8(path, bytes, options2);
}
return IOUtils.write(path, bytes, options2);
}
},
Path: {
basename: function(path) {
return PathUtils.filename(path);
},
dirname: function(path) {
return PathUtils.parent(path);
},
fromFileURI: function(uri) {
if (Services.appinfo.OS == "WINNT") {
let url2 = new URL(uri);
if (url2.protocol != "file:") {
throw new Error("fromFileURI expects a file URI");
}
uri = url2.pathname.substr(1);
let path2 = decodeURI(uri);
path2 = path2.replace(/%(3b|3f|23)/gi, (match) => decodeURIComponent(match));
path2 = this.normalize(path2);
if (path2.endsWith(":\\")) {
path2 = path2.substr(0, path2.length - 1);
}
return this.normalize(path2);
}
let url = new URL(uri);
if (url.protocol != "file:") {
throw new Error("fromFileURI expects a file URI");
}
let path = this.normalize(decodeURIComponent(url.pathname));
return path;
},
join: function(path, ...args) {
var platformSlash = Services.appinfo.OS == "WINNT" ? "\\" : "/";
try {
if (args.length == 0) {
return path;
}
if (args.length == 1 && args[0].includes(platformSlash)) {
return PathUtils.joinRelative(path, ...args);
}
return PathUtils.join(path, ...args);
} catch (e) {
if (e.message.includes("NS_ERROR_FILE_UNRECOGNIZED_PATH")) {
return [path, ...args].join(platformSlash);
}
throw e;
}
},
// From Firefox 102
normalize: function(path) {
if (Services.appinfo.OS == "WINNT") {
let stack2 = [];
if (!path.startsWith("\\\\")) {
path = path.replace(/\//g, "\\");
}
let root = winGetDrive(path);
if (root) {
path = path.slice(root.length);
}
let absolute2 = winIsAbsolute(path);
path.split("\\").forEach(function loop(v) {
switch (v) {
case "":
case ".":
break;
case "..":
if (!stack2.length) {
if (absolute2) {
throw new Error("Path is ill-formed: attempting to go past root");
} else {
stack2.push("..");
}
} else if (stack2[stack2.length - 1] == "..") {
stack2.push("..");
} else {
stack2.pop();
}
break;
default:
stack2.push(v);
}
});
let result = stack2.join("\\");
if (absolute2 || root) {
result = "\\" + result;
}
if (root) {
result = root + result;
}
return result;
}
let stack = [];
let absolute;
if (path.length >= 0 && path[0] == "/") {
absolute = true;
} else {
absolute = false;
}
path.split("/").forEach(function(v) {
switch (v) {
case "":
case ".":
break;
case "..":
if (!stack.length) {
if (absolute) {
throw new Error("Path is ill-formed: attempting to go past root");
} else {
stack.push("..");
}
} else if (stack[stack.length - 1] == "..") {
stack.push("..");
} else {
stack.pop();
}
break;
default:
stack.push(v);
}
});
let string = stack.join("/");
return absolute ? "/" + string : string;
},
split: function(path) {
if (Services.appinfo.OS == "WINNT") {
let index = path.indexOf(":");
let absolute = path.length > index + 1 && path[index + 1] == "\\";
return {
absolute,
winDrive: winGetDrive(path),
components: path.split("\\")
};
}
return {
absolute: path.length && path[0] == "/",
components: path.split("/")
};
},
toFileURI: function(path) {
return PathUtils.toFileURI(path);
}
}
};
var winGetDrive = function(path) {
if (path == null) {
throw new TypeError("path is invalid");
}
if (path.startsWith("\\\\")) {
if (path.length == 2) {
return null;
}
let index2 = path.indexOf("\\", 2);
if (index2 == -1) {
return path;
}
return path.slice(0, index2);
}
let index = path.indexOf(":");
if (index <= 0) return null;
return path.slice(0, index + 1);
};
var winIsAbsolute = function(path) {
let index = path.indexOf(":");
return path.length > index + 1 && path[index + 1] == "\\";
};
function wrapWrite(func) {
return async function() {
try {
return await func(...arguments);
} catch (e) {
if (DOMException.isInstance(e)) {
if (e.name == "NoModificationAllowedError") {
e.becauseExists = true;
}
}
throw e;
}
};
}
// content/os.ts
var Shim = is7 ? OS2 : void 0;
if (Shim) {
const Path = isWin ? { start: /.*\\/, end: /\\$/ } : { start: /.*\//, end: /\/$/ };
Shim.Path.basename = (path) => path && Shim.Path.normalize(path).replace(Path.end, "").replace(Path.start, "");
}
// content/escape.ts
var import_utils_escape_regexp_string = __toESM(require_lib12());
function regex(text) {
return (0, import_utils_escape_regexp_string.default)(text);
}
// content/logger.ts
var version2 = require_version();
var run2 = `<${version2} ${run}>`;
function stringifyXPCOM(obj) {
if (!obj.QueryInterface) return "";
if (obj.message) return `[XPCOM error ${obj.message}]`;
if (obj.name) return `[XPCOM object ${obj.name}]`;
return "[XPCOM object]";
}
function stringifyError(obj) {
if (obj instanceof Error) return `[error: ${obj.message || "<unspecified error>"}
${obj.stack}]`;
if (obj.error instanceof Error && obj.message) return `[errorevent: ${obj.message} ${stringifyError(obj.error)}]`;
if (typeof ErrorEvent !== "undefined" && obj instanceof ErrorEvent) return `[errorevent: ${obj.message || "<unspecified errorevent>"}]`;
return "";
}
function replacer() {
const seen = /* @__PURE__ */ new WeakSet();
return (key, value) => {
if (typeof value === "object" && value !== null) {
if (seen.has(value)) return "[Circular]";
seen.add(value);
}
if (value === null) return value;
if (value instanceof Set) return [...value];
if (value instanceof Map) return Object.fromEntries(value);
switch (typeof value) {
case "string":
case "number":
case "boolean":
return value;
case "object":
return stringifyXPCOM(value) || stringifyError(value) || value;
}
if (Array.isArray(value)) return value;
return void 0;
};
}
function to_s(obj) {
if (typeof obj === "string") return obj;
return JSON.stringify(obj, replacer(), 2);
}
function format(...msg) {
return msg.map(to_s).join(" ");
}
var _instances, prefix_fn, _a;
var log = new (_a = class {
constructor() {
__privateAdd(this, _instances);
this.prefix = "";
}
debug(...msg) {
Zotero.debug(`${__privateMethod(this, _instances, prefix_fn).call(this)}${format(...msg)}
`);
}
info(...msg) {
Zotero.debug(`${__privateMethod(this, _instances, prefix_fn).call(this)}${format(...msg)}
`);
}
error(...msg) {
Zotero.debug(`${__privateMethod(this, _instances, prefix_fn).call(this, true)}${format(...msg)}
`);
}
dump(msg, error) {
if (error) {
dump(`${__privateMethod(this, _instances, prefix_fn).call(this, error)}${format(msg, error)}
`);
} else {
dump(`${__privateMethod(this, _instances, prefix_fn).call(this)}${format(msg)}
`);
}
}
}, _instances = new WeakSet(), prefix_fn = function(error) {
return `{${error ? "error: " : ""}${worker ? "worker: " : ""}${this.prefix}better-bibtex: ${run2}} `;
}, _a)();
// translators/lib/translator.ts
var $OS = is7 ? Shim : OS;
var PrefNames = new Set(Object.keys(defaults));
var Override = class {
constructor(collected) {
this.collected = collected;
this.orig = { ...this.collected.preferences };
this.exportPath = this.collected.displayOptions.exportPath;
this.exportDir = this.collected.displayOptions.exportDir;
}
override(preference, extension) {
var _a2;
const override = this.orig[`${preference}Override`];
if (!this.exportPath || !override) {
return false;
}
const candidates = [
$OS.Path.basename(this.exportPath).replace(/\.[^.]+$/, "") + extension,
override
].map((filename) => $OS.Path.join(this.exportDir, filename));
for (const candidate of candidates) {
try {
const content = Zotero.BetterBibTeX.getContents(candidate);
if (content === null) continue;
let prefs;
if (preference === "preferences") {
prefs = (_a2 = JSON.parse(content).override) == null ? void 0 : _a2.preferences;
if (!prefs) continue;
} else {
prefs = { [preference]: content };
}
for (const [pref, value] of Object.entries(prefs)) {
if (!PrefNames.has(pref)) {
log.error(`better-bibtex: unexpected preference override for ${pref}`);
} else if (typeof value !== typeof defaults[pref]) {
log.error(`better-bibtex: preference override for ${pref}: expected ${typeof defaults[pref]}, got ${typeof value}`);
} else if (options[pref] && !options[pref][value]) {
log.error(`better-bibtex: preference override for ${pref}: expected ${Object.keys(options[pref]).join(" / ")}, got ${value}`);
} else {
this.collected.preferences[pref] = value;
}
}
return true;
} catch (err) {
log.error(`better-bibtex: failed to load override ${candidate}: ${err}`);
}
}
return false;
}
};
var Translation = class {
constructor(collected, mode) {
this.collected = collected;
this.mode = mode;
this.export = {
dir: void 0,
path: void 0
};
this.collections = {};
// keep because it is being used in postscripts
this.output = {
body: "",
attachments: []
};
this.cacheable = true;
this[collected.translator.label.replace(/[^a-z]/ig, "")] = true;
this.BetterTeX = this.BetterBibTeX || this.BetterBibLaTeX;
this.BetterCSL = this.BetterCSLJSON || this.BetterCSLYAML;
this.options = { ...collected.displayOptions };
this.preferences = { ...collected.preferences };
this.isJurisM = slug === "jurism";
this.isZotero = !this.isJurisM;
this.paths = {
caseSensitive: this.collected.platform !== "mac" && this.collected.platform !== "win",
sep: this.collected.platform === "win" ? "\\" : "/"
};
try {
if (collected.displayOptions.cache === false) this.cacheable = false;
} catch {
}
if (this.collected.displayOptions.exportFileData) this.cacheable = false;
if (this.BetterTeX && this.collected.preferences.jabrefFormat >= 4) this.cacheable = false;
if (this.collected.preferences.relativeFilePaths) this.cacheable = false;
const override = new Override(this.collected);
if (override.override("preferences", ".json")) this.cacheable = false;
if (override.override("postscript", ".js")) this.cacheable = false;
if (override.override("strings", ".bib")) this.cacheable = false;
try {
this.charmap = this.collected.preferences.charmap ? JSON.parse(this.collected.preferences.charmap) : {};
} catch (err) {
log.error("could not parse charmap:", err);
this.charmap = {};
}
this.importToExtra = {};
this.collected.preferences.importNoteToExtra.toLowerCase().split(/\s*,\s*/).filter((field) => field).forEach((field) => {
this.importToExtra[field.replace(/\s*=.*/, "")] = field.match(/\s*=\s*force$/) ? "force" : "plain";
});
this.skipFields = this.collected.preferences.skipFields.toLowerCase().split(",").map((field) => this.typefield(field)).filter((s) => s);
let m;
if (this.skipFields.length) {
this.skipField = new RegExp("^(" + this.skipFields.map((field) => {
if (m = field.match(/^(csl|tex|bibtex|biblatex)[.]([-a-z]+)[.]([-a-z]+)$/)) {
return `(${m[1] === "tex" ? "bib(la)?" : ""}[.]${m[2]}[.]${m[3]})`;
}
if (m = field.match(/^(tex|bibtex|biblatex)[.]([-a-z]+)$/)) {
return `(${m[1] === "tex" ? "bib(la)?" : ""}[.][-a-z]+[.]${m[2]})`;
}
if (m = field.match(/^([-a-z]+)[.]([-a-z]+)$/)) {
return `(${this.BetterTeX ? "bib(la)?tex" : "csl"}[.]${m[1]}[.]${m[2]})`;
}
if (m = field.match(/^[-a-z]+$/)) {
return `(${this.BetterTeX ? "bib(la)?tex" : "csl"}[.][-a-z]+[.]${field})`;
}
return "";
}).filter((field) => field).join("|") + ")$");
}
this.verbatimFields = this.collected.preferences.verbatimFields.toLowerCase().split(",").map((field) => (m = field.trim().match(/^[/](.+)[/]$/)) ? new RegExp(m[1], "i") : this.typefield(field)).filter((s) => s);
if (!this.verbatimFields.length) this.verbatimFields = null;
this.csquotes = this.collected.preferences.csquotes ? { open: this.collected.preferences.csquotes[0], close: this.collected.preferences.csquotes[1] } : null;
}
get exportDir() {
this.collected.items.current.$cacheable = false;
return this.export.dir;
}
get exportPath() {
this.collected.items.current.$cacheable = false;
return this.export.path;
}
typefield(field) {
field = field.trim();
if (field.startsWith("bibtex.")) return this.BetterBibTeX ? field.replace(/^bibtex\./, "") : "";
if (field.startsWith("biblatex.")) return this.mode === "import" || this.BetterBibLaTeX ? field.replace(/^biblatex\./, "") : "";
return field;
}
static Import(collected) {
return new this(collected, "import");
}
static Export(collected) {
var _a2, _b, _c, _d;
const translation = new this(collected, "export");
collected.items.sort(collected.preferences.exportSort);
translation.export = {
dir: collected.displayOptions.exportDir,
path: collected.displayOptions.exportPath
};
if ((_a2 = translation.export.dir) == null ? void 0 : _a2.endsWith(translation.paths.sep)) translation.export.dir = translation.export.dir.slice(0, -1);
translation.unicode = !collected.preferences[`ascii${collected.translator.label.replace(/Better /, "")}`] || false;
if (collected.preferences.baseAttachmentPath && (translation.export.dir === collected.preferences.baseAttachmentPath || ((_b = translation.export.dir) == null ? void 0 : _b.startsWith(collected.preferences.baseAttachmentPath + translation.paths.sep)))) {
collected.preferences.relativeFilePaths = true;
}
translation.cacheable = translation.cacheable && collected.preferences.cache && !(collected.displayOptions.exportFileData || collected.preferences.relativeFilePaths || collected.preferences.baseAttachmentPath && ((_c = translation.export.dir) == null ? void 0 : _c.startsWith(collected.preferences.baseAttachmentPath)));
if (translation.BetterTeX) {
collected.preferences.separatorList = collected.preferences.separatorList.trim();
collected.preferences.separatorNames = collected.preferences.separatorNames.trim();
translation.and = {
list: {
re: new RegExp(regex(collected.preferences.separatorList), "g"),
repl: ` {${collected.preferences.separatorList}} `
},
names: {
re: new RegExp(` ${regex(collected.preferences.separatorNames)} `, "g"),
repl: ` {${collected.preferences.separatorNames}} `
}
};
collected.preferences.separatorList = ` ${collected.preferences.separatorList} `;
collected.preferences.separatorNames = ` ${collected.preferences.separatorNames} `;
}
if (collected.preferences.testing && typeof __estrace === "undefined" && ((_d = collected.translator.configOptions) == null ? void 0 : _d.cached)) {
const allowedPreferences = (collected.translator.label === "BetterBibTeX JSON" ? Object.keys(defaults) : affectedBy[collected.translator.label]).concat(["testing"]).reduce((acc, pref) => {
acc[pref] = collected.preferences[pref];
return acc;
}, {});
collected.preferences = new Proxy(allowedPreferences, {
set: (object, property, _value) => {
throw new TypeError(`Unexpected set of preference ${String(property)}`);
},
get: (object, property) => {
if (property === "toJSON") return object[property];
if (!(property in allowedPreferences)) new TypeError(`Preference ${property} claims not to affect ${collected.translator.label}`);
return object[property];
}
});
}
collected.items.cacheable(translation.cacheable);
translation.collections = collected.collections.byKey;
return translation;
}
saveAttachments() {
var _a2;
if (!((_a2 = this.output) == null ? void 0 : _a2.attachments.length)) return;
for (const attachment of this.output.attachments) {
attachment.saveFile(attachment.defaultPath, true);
}
}
isVerbatimField(field) {
return !!this.verbatimFields.find((v) => typeof v === "string" ? v === field : field.match(v));
}
};
// translators/Citation graph.ts
function node(id, attributes = {}) {
let n = JSON.stringify(id);
const attrs = Object.entries(attributes).map(([key, value]) => `${key}=${JSON.stringify(value)}`).join(", ");
if (attrs) n += ` [${attrs}]`;
return ` ${n};
`;
}
function edge(source, target, attributes = {}) {
let e = `${JSON.stringify(source)} -> ${JSON.stringify(target)}`;
const attrs = Object.entries(attributes).map(([key, value]) => `${key}=${JSON.stringify(value)}`).join(", ");
if (attrs) e += ` [${attrs}]`;
return ` ${e};
`;
}
function doExport() {
var _a2, _b;
const translation = Translation.Export(new Collected(ZOTERO_TRANSLATOR_INFO, "export"));
translation.output.body += "digraph CitationGraph {\n";
translation.output.body += " concentrate=true;\n";
const add = {
title: Zotero.getOption("Title"),
authors: Zotero.getOption("Authors"),
year: Zotero.getOption("Year")
};
const items = [];
for (const ref of translation.collected.items.regular) {
const label = [ref.citationKey];
if (add.title && ref.title) {
label.push(`\u201C${ref.title.replace(/"/g, "'")}\u201D`);
}
const author = [];
if (add.authors && ref.creators && ref.creators.length) {
const name2 = (_a2 = ref.creators) == null ? void 0 : _a2.map((creator) => (creator.name || creator.lastName || "").replace(/"/g, "'")).filter((creator) => creator).join(", ");
if (name2) author.push(name2);
}
if (add.year && ref.date) {
let date = Zotero.BetterBibTeX.parseDate(ref.date);
if (date.from) date = date.from;
if (date.year) author.push(`(${date.year})`);
}
if (author.length) label.push(author.join(" "));
items.push({
id: `node-${items.length}`,
label: label.join("\n"),
relations: ((_b = ref.relations) == null ? void 0 : _b["dc:relation"]) || [],
// eslint-disable-next-line prefer-spread
cites: [].concat.apply(
[],
(ref.extra || "").split("\n").filter((line) => line.startsWith("cites:")).map((line) => line.replace(/^cites:/, "").trim()).filter((keys) => keys).map((keys) => keys.split(/\s*,\s*/))
),
citationKey: ref.citationKey,
uri: ref.uri
});
}
for (const item of items) {
translation.output.body += node(item.id, { label: item.label });
for (const uri of item.relations) {
const other = items.find((o) => o.uri === uri);
if (other) {
translation.output.body += edge(item.id, other.id);
} else {
translation.output.body += edge(item.id, uri.replace(/.*\//, ""), { style: "dashed", dir: "both" });
}
}
for (const citationKey of item.cites) {
const other = items.find((o) => o.citationKey === citationKey);
if (other) {
translation.output.body += edge(item.id, other.id);
} else {
translation.output.body += edge(item.id, citationKey, { style: "dashed" });
}
}
}
translation.output.body += "}";
Zotero.write(translation.output.body);
}
return __toCommonJS(Citation_graph_exports);
})();
/*! Bundled license information:
@stdlib/utils-define-property/lib/define_property.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/utils-define-property/lib/has_define_property_support.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/utils-define-property/lib/builtin.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/string-base-format-interpolate/lib/is_number.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2022 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/string-base-format-interpolate/lib/zero_pad.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2022 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/string-base-format-interpolate/lib/format_integer.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2022 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/string-base-format-interpolate/lib/is_string.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2022 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/string-base-format-interpolate/lib/format_double.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2022 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/string-base-format-interpolate/lib/space_pad.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2022 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/string-base-format-interpolate/lib/main.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2022 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/string-base-format-interpolate/lib/index.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2022 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/string-base-format-tokenize/lib/main.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2022 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/string-base-format-tokenize/lib/index.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2022 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/string-format/lib/is_string.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2022 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/string-format/lib/main.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2022 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/string-format/lib/index.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2022 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/utils-define-property/lib/polyfill.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/utils-define-property/lib/index.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/utils-define-nonenumerable-read-only-property/lib/main.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/utils-define-nonenumerable-read-only-property/lib/index.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/assert-is-string/lib/primitive.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/assert-has-symbol-support/lib/main.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/assert-has-symbol-support/lib/index.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/assert-has-tostringtag-support/lib/main.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/assert-has-tostringtag-support/lib/index.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/utils-native-class/lib/tostring.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/utils-native-class/lib/main.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/assert-has-own-property/lib/main.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/assert-has-own-property/lib/index.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/symbol-ctor/lib/main.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/symbol-ctor/lib/index.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/utils-native-class/lib/tostringtag.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/utils-native-class/lib/polyfill.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/utils-native-class/lib/index.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/assert-is-string/lib/valueof.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/assert-is-string/lib/try2valueof.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/assert-is-string/lib/object.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/assert-is-string/lib/main.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/assert-is-string/lib/index.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/utils-escape-regexp-string/lib/main.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
@stdlib/utils-escape-regexp-string/lib/index.js:
(**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*)
*/