Add comprehensive frontend UI and distributed infrastructure

Frontend Enhancements:
- Complete React TypeScript frontend with modern UI components
- Distributed workflows management interface with real-time updates
- Socket.IO integration for live agent status monitoring
- Agent management dashboard with cluster visualization
- Project management interface with metrics and task tracking
- Responsive design with proper error handling and loading states

Backend Infrastructure:
- Distributed coordinator for multi-agent workflow orchestration
- Cluster management API with comprehensive agent operations
- Enhanced database models for agents and projects
- Project service for filesystem-based project discovery
- Performance monitoring and metrics collection
- Comprehensive API documentation and error handling

Documentation:
- Complete distributed development guide (README_DISTRIBUTED.md)
- Comprehensive development report with architecture insights
- System configuration templates and deployment guides

The platform now provides a complete web interface for managing the distributed AI cluster
with real-time monitoring, workflow orchestration, and agent coordination capabilities.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
anthonyrawlins
2025-07-10 08:41:59 +10:00
parent fc0eec91ef
commit 85bf1341f3
28348 changed files with 2646896 additions and 69 deletions

View File

@@ -0,0 +1,13 @@
Copyright 2010-2021 Mike Bostock
Permission to use, copy, modify, and/or distribute this software for any purpose
with or without fee is hereby granted, provided that the above copyright notice
and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
THIS SOFTWARE.

View File

@@ -0,0 +1,109 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = band;
exports.point = point;
var _index = require("../../../lib-vendor/d3-array/src/index.js");
var _init = require("./init.js");
var _ordinal = _interopRequireDefault(require("./ordinal.js"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function band() {
var scale = (0, _ordinal.default)().unknown(undefined),
domain = scale.domain,
ordinalRange = scale.range,
r0 = 0,
r1 = 1,
step,
bandwidth,
round = false,
paddingInner = 0,
paddingOuter = 0,
align = 0.5;
delete scale.unknown;
function rescale() {
var n = domain().length,
reverse = r1 < r0,
start = reverse ? r1 : r0,
stop = reverse ? r0 : r1;
step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);
if (round) step = Math.floor(step);
start += (stop - start - step * (n - paddingInner)) * align;
bandwidth = step * (1 - paddingInner);
if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);
var values = (0, _index.range)(n).map(function (i) {
return start + step * i;
});
return ordinalRange(reverse ? values.reverse() : values);
}
scale.domain = function (_) {
return arguments.length ? (domain(_), rescale()) : domain();
};
scale.range = function (_) {
return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];
};
scale.rangeRound = function (_) {
return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();
};
scale.bandwidth = function () {
return bandwidth;
};
scale.step = function () {
return step;
};
scale.round = function (_) {
return arguments.length ? (round = !!_, rescale()) : round;
};
scale.padding = function (_) {
return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;
};
scale.paddingInner = function (_) {
return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;
};
scale.paddingOuter = function (_) {
return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;
};
scale.align = function (_) {
return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;
};
scale.copy = function () {
return band(domain(), [r0, r1]).round(round).paddingInner(paddingInner).paddingOuter(paddingOuter).align(align);
};
return _init.initRange.apply(rescale(), arguments);
}
function pointish(scale) {
var copy = scale.copy;
scale.padding = scale.paddingOuter;
delete scale.paddingInner;
delete scale.paddingOuter;
scale.copy = function () {
return pointish(copy());
};
return scale;
}
function point() {
return pointish(band.apply(null, arguments).paddingInner(1));
}

View File

@@ -0,0 +1,12 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = colors;
function colors(s) {
return s.match(/.{6}/g).map(function (x) {
return "#" + x;
});
}

View File

@@ -0,0 +1,12 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = constants;
function constants(x) {
return function () {
return x;
};
}

View File

@@ -0,0 +1,140 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.copy = copy;
exports.default = continuous;
exports.identity = identity;
exports.transformer = transformer;
var _index = require("../../../lib-vendor/d3-array/src/index.js");
var _index2 = require("../../../lib-vendor/d3-interpolate/src/index.js");
var _constant = _interopRequireDefault(require("./constant.js"));
var _number = _interopRequireDefault(require("./number.js"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var unit = [0, 1];
function identity(x) {
return x;
}
function normalize(a, b) {
return (b -= a = +a) ? function (x) {
return (x - a) / b;
} : (0, _constant.default)(isNaN(b) ? NaN : 0.5);
}
function clamper(a, b) {
var t;
if (a > b) t = a, a = b, b = t;
return function (x) {
return Math.max(a, Math.min(b, x));
};
} // normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].
// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].
function bimap(domain, range, interpolate) {
var d0 = domain[0],
d1 = domain[1],
r0 = range[0],
r1 = range[1];
if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);
return function (x) {
return r0(d0(x));
};
}
function polymap(domain, range, interpolate) {
var j = Math.min(domain.length, range.length) - 1,
d = new Array(j),
r = new Array(j),
i = -1; // Reverse descending domains.
if (domain[j] < domain[0]) {
domain = domain.slice().reverse();
range = range.slice().reverse();
}
while (++i < j) {
d[i] = normalize(domain[i], domain[i + 1]);
r[i] = interpolate(range[i], range[i + 1]);
}
return function (x) {
var i = (0, _index.bisect)(domain, x, 1, j) - 1;
return r[i](d[i](x));
};
}
function copy(source, target) {
return target.domain(source.domain()).range(source.range()).interpolate(source.interpolate()).clamp(source.clamp()).unknown(source.unknown());
}
function transformer() {
var domain = unit,
range = unit,
interpolate = _index2.interpolate,
transform,
untransform,
unknown,
clamp = identity,
piecewise,
output,
input;
function rescale() {
var n = Math.min(domain.length, range.length);
if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);
piecewise = n > 2 ? polymap : bimap;
output = input = null;
return scale;
}
function scale(x) {
return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));
}
scale.invert = function (y) {
return clamp(untransform((input || (input = piecewise(range, domain.map(transform), _index2.interpolateNumber)))(y)));
};
scale.domain = function (_) {
return arguments.length ? (domain = Array.from(_, _number.default), rescale()) : domain.slice();
};
scale.range = function (_) {
return arguments.length ? (range = Array.from(_), rescale()) : range.slice();
};
scale.rangeRound = function (_) {
return range = Array.from(_), interpolate = _index2.interpolateRound, rescale();
};
scale.clamp = function (_) {
return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;
};
scale.interpolate = function (_) {
return arguments.length ? (interpolate = _, rescale()) : interpolate;
};
scale.unknown = function (_) {
return arguments.length ? (unknown = _, scale) : unknown;
};
return function (t, u) {
transform = t, untransform = u;
return rescale();
};
}
function continuous() {
return transformer()(identity, identity);
}

View File

@@ -0,0 +1,121 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = diverging;
exports.divergingLog = divergingLog;
exports.divergingPow = divergingPow;
exports.divergingSqrt = divergingSqrt;
exports.divergingSymlog = divergingSymlog;
var _index = require("../../../lib-vendor/d3-interpolate/src/index.js");
var _continuous = require("./continuous.js");
var _init = require("./init.js");
var _linear = require("./linear.js");
var _log = require("./log.js");
var _sequential = require("./sequential.js");
var _symlog = require("./symlog.js");
var _pow = require("./pow.js");
function transformer() {
var x0 = 0,
x1 = 0.5,
x2 = 1,
s = 1,
t0,
t1,
t2,
k10,
k21,
interpolator = _continuous.identity,
transform,
clamp = false,
unknown;
function scale(x) {
return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));
}
scale.domain = function (_) {
return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];
};
scale.clamp = function (_) {
return arguments.length ? (clamp = !!_, scale) : clamp;
};
scale.interpolator = function (_) {
return arguments.length ? (interpolator = _, scale) : interpolator;
};
function range(interpolate) {
return function (_) {
var r0, r1, r2;
return arguments.length ? ([r0, r1, r2] = _, interpolator = (0, _index.piecewise)(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];
};
}
scale.range = range(_index.interpolate);
scale.rangeRound = range(_index.interpolateRound);
scale.unknown = function (_) {
return arguments.length ? (unknown = _, scale) : unknown;
};
return function (t) {
transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;
return scale;
};
}
function diverging() {
var scale = (0, _linear.linearish)(transformer()(_continuous.identity));
scale.copy = function () {
return (0, _sequential.copy)(scale, diverging());
};
return _init.initInterpolator.apply(scale, arguments);
}
function divergingLog() {
var scale = (0, _log.loggish)(transformer()).domain([0.1, 1, 10]);
scale.copy = function () {
return (0, _sequential.copy)(scale, divergingLog()).base(scale.base());
};
return _init.initInterpolator.apply(scale, arguments);
}
function divergingSymlog() {
var scale = (0, _symlog.symlogish)(transformer());
scale.copy = function () {
return (0, _sequential.copy)(scale, divergingSymlog()).constant(scale.constant());
};
return _init.initInterpolator.apply(scale, arguments);
}
function divergingPow() {
var scale = (0, _pow.powish)(transformer());
scale.copy = function () {
return (0, _sequential.copy)(scale, divergingPow()).exponent(scale.exponent());
};
return _init.initInterpolator.apply(scale, arguments);
}
function divergingSqrt() {
return divergingPow.apply(null, arguments).exponent(0.5);
}

View File

@@ -0,0 +1,37 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = identity;
var _linear = require("./linear.js");
var _number = _interopRequireDefault(require("./number.js"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function identity(domain) {
var unknown;
function scale(x) {
return x == null || isNaN(x = +x) ? unknown : x;
}
scale.invert = scale;
scale.domain = scale.range = function (_) {
return arguments.length ? (domain = Array.from(_, _number.default), scale) : domain.slice();
};
scale.unknown = function (_) {
return arguments.length ? (unknown = _, scale) : unknown;
};
scale.copy = function () {
return identity(domain).unknown(unknown);
};
domain = arguments.length ? Array.from(domain, _number.default) : [0, 1];
return (0, _linear.linearish)(scale);
}

View File

@@ -0,0 +1,213 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "scaleBand", {
enumerable: true,
get: function () {
return _band.default;
}
});
Object.defineProperty(exports, "scaleDiverging", {
enumerable: true,
get: function () {
return _diverging.default;
}
});
Object.defineProperty(exports, "scaleDivergingLog", {
enumerable: true,
get: function () {
return _diverging.divergingLog;
}
});
Object.defineProperty(exports, "scaleDivergingPow", {
enumerable: true,
get: function () {
return _diverging.divergingPow;
}
});
Object.defineProperty(exports, "scaleDivergingSqrt", {
enumerable: true,
get: function () {
return _diverging.divergingSqrt;
}
});
Object.defineProperty(exports, "scaleDivergingSymlog", {
enumerable: true,
get: function () {
return _diverging.divergingSymlog;
}
});
Object.defineProperty(exports, "scaleIdentity", {
enumerable: true,
get: function () {
return _identity.default;
}
});
Object.defineProperty(exports, "scaleImplicit", {
enumerable: true,
get: function () {
return _ordinal.implicit;
}
});
Object.defineProperty(exports, "scaleLinear", {
enumerable: true,
get: function () {
return _linear.default;
}
});
Object.defineProperty(exports, "scaleLog", {
enumerable: true,
get: function () {
return _log.default;
}
});
Object.defineProperty(exports, "scaleOrdinal", {
enumerable: true,
get: function () {
return _ordinal.default;
}
});
Object.defineProperty(exports, "scalePoint", {
enumerable: true,
get: function () {
return _band.point;
}
});
Object.defineProperty(exports, "scalePow", {
enumerable: true,
get: function () {
return _pow.default;
}
});
Object.defineProperty(exports, "scaleQuantile", {
enumerable: true,
get: function () {
return _quantile.default;
}
});
Object.defineProperty(exports, "scaleQuantize", {
enumerable: true,
get: function () {
return _quantize.default;
}
});
Object.defineProperty(exports, "scaleRadial", {
enumerable: true,
get: function () {
return _radial.default;
}
});
Object.defineProperty(exports, "scaleSequential", {
enumerable: true,
get: function () {
return _sequential.default;
}
});
Object.defineProperty(exports, "scaleSequentialLog", {
enumerable: true,
get: function () {
return _sequential.sequentialLog;
}
});
Object.defineProperty(exports, "scaleSequentialPow", {
enumerable: true,
get: function () {
return _sequential.sequentialPow;
}
});
Object.defineProperty(exports, "scaleSequentialQuantile", {
enumerable: true,
get: function () {
return _sequentialQuantile.default;
}
});
Object.defineProperty(exports, "scaleSequentialSqrt", {
enumerable: true,
get: function () {
return _sequential.sequentialSqrt;
}
});
Object.defineProperty(exports, "scaleSequentialSymlog", {
enumerable: true,
get: function () {
return _sequential.sequentialSymlog;
}
});
Object.defineProperty(exports, "scaleSqrt", {
enumerable: true,
get: function () {
return _pow.sqrt;
}
});
Object.defineProperty(exports, "scaleSymlog", {
enumerable: true,
get: function () {
return _symlog.default;
}
});
Object.defineProperty(exports, "scaleThreshold", {
enumerable: true,
get: function () {
return _threshold.default;
}
});
Object.defineProperty(exports, "scaleTime", {
enumerable: true,
get: function () {
return _time.default;
}
});
Object.defineProperty(exports, "scaleUtc", {
enumerable: true,
get: function () {
return _utcTime.default;
}
});
Object.defineProperty(exports, "tickFormat", {
enumerable: true,
get: function () {
return _tickFormat.default;
}
});
var _band = _interopRequireWildcard(require("./band.js"));
var _identity = _interopRequireDefault(require("./identity.js"));
var _linear = _interopRequireDefault(require("./linear.js"));
var _log = _interopRequireDefault(require("./log.js"));
var _symlog = _interopRequireDefault(require("./symlog.js"));
var _ordinal = _interopRequireWildcard(require("./ordinal.js"));
var _pow = _interopRequireWildcard(require("./pow.js"));
var _radial = _interopRequireDefault(require("./radial.js"));
var _quantile = _interopRequireDefault(require("./quantile.js"));
var _quantize = _interopRequireDefault(require("./quantize.js"));
var _threshold = _interopRequireDefault(require("./threshold.js"));
var _time = _interopRequireDefault(require("./time.js"));
var _utcTime = _interopRequireDefault(require("./utcTime.js"));
var _sequential = _interopRequireWildcard(require("./sequential.js"));
var _sequentialQuantile = _interopRequireDefault(require("./sequentialQuantile.js"));
var _diverging = _interopRequireWildcard(require("./diverging.js"));
var _tickFormat = _interopRequireDefault(require("./tickFormat.js"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

View File

@@ -0,0 +1,46 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initInterpolator = initInterpolator;
exports.initRange = initRange;
function initRange(domain, range) {
switch (arguments.length) {
case 0:
break;
case 1:
this.range(domain);
break;
default:
this.range(range).domain(domain);
break;
}
return this;
}
function initInterpolator(domain, interpolator) {
switch (arguments.length) {
case 0:
break;
case 1:
{
if (typeof domain === "function") this.interpolator(domain);else this.range(domain);
break;
}
default:
{
this.domain(domain);
if (typeof interpolator === "function") this.interpolator(interpolator);else this.range(interpolator);
break;
}
}
return this;
}

View File

@@ -0,0 +1,88 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = linear;
exports.linearish = linearish;
var _index = require("../../../lib-vendor/d3-array/src/index.js");
var _continuous = _interopRequireWildcard(require("./continuous.js"));
var _init = require("./init.js");
var _tickFormat = _interopRequireDefault(require("./tickFormat.js"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function linearish(scale) {
var domain = scale.domain;
scale.ticks = function (count) {
var d = domain();
return (0, _index.ticks)(d[0], d[d.length - 1], count == null ? 10 : count);
};
scale.tickFormat = function (count, specifier) {
var d = domain();
return (0, _tickFormat.default)(d[0], d[d.length - 1], count == null ? 10 : count, specifier);
};
scale.nice = function (count) {
if (count == null) count = 10;
var d = domain();
var i0 = 0;
var i1 = d.length - 1;
var start = d[i0];
var stop = d[i1];
var prestep;
var step;
var maxIter = 10;
if (stop < start) {
step = start, start = stop, stop = step;
step = i0, i0 = i1, i1 = step;
}
while (maxIter-- > 0) {
step = (0, _index.tickIncrement)(start, stop, count);
if (step === prestep) {
d[i0] = start;
d[i1] = stop;
return domain(d);
} else if (step > 0) {
start = Math.floor(start / step) * step;
stop = Math.ceil(stop / step) * step;
} else if (step < 0) {
start = Math.ceil(start * step) / step;
stop = Math.floor(stop * step) / step;
} else {
break;
}
prestep = step;
}
return scale;
};
return scale;
}
function linear() {
var scale = (0, _continuous.default)();
scale.copy = function () {
return (0, _continuous.copy)(scale, linear());
};
_init.initRange.apply(scale, arguments);
return linearish(scale);
}

View File

@@ -0,0 +1,156 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = log;
exports.loggish = loggish;
var _index = require("../../../lib-vendor/d3-array/src/index.js");
var _index2 = require("../../../lib-vendor/d3-format/src/index.js");
var _nice = _interopRequireDefault(require("./nice.js"));
var _continuous = require("./continuous.js");
var _init = require("./init.js");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function transformLog(x) {
return Math.log(x);
}
function transformExp(x) {
return Math.exp(x);
}
function transformLogn(x) {
return -Math.log(-x);
}
function transformExpn(x) {
return -Math.exp(-x);
}
function pow10(x) {
return isFinite(x) ? +("1e" + x) : x < 0 ? 0 : x;
}
function powp(base) {
return base === 10 ? pow10 : base === Math.E ? Math.exp : x => Math.pow(base, x);
}
function logp(base) {
return base === Math.E ? Math.log : base === 10 && Math.log10 || base === 2 && Math.log2 || (base = Math.log(base), x => Math.log(x) / base);
}
function reflect(f) {
return (x, k) => -f(-x, k);
}
function loggish(transform) {
const scale = transform(transformLog, transformExp);
const domain = scale.domain;
let base = 10;
let logs;
let pows;
function rescale() {
logs = logp(base), pows = powp(base);
if (domain()[0] < 0) {
logs = reflect(logs), pows = reflect(pows);
transform(transformLogn, transformExpn);
} else {
transform(transformLog, transformExp);
}
return scale;
}
scale.base = function (_) {
return arguments.length ? (base = +_, rescale()) : base;
};
scale.domain = function (_) {
return arguments.length ? (domain(_), rescale()) : domain();
};
scale.ticks = count => {
const d = domain();
let u = d[0];
let v = d[d.length - 1];
const r = v < u;
if (r) [u, v] = [v, u];
let i = logs(u);
let j = logs(v);
let k;
let t;
const n = count == null ? 10 : +count;
let z = [];
if (!(base % 1) && j - i < n) {
i = Math.floor(i), j = Math.ceil(j);
if (u > 0) for (; i <= j; ++i) {
for (k = 1; k < base; ++k) {
t = i < 0 ? k / pows(-i) : k * pows(i);
if (t < u) continue;
if (t > v) break;
z.push(t);
}
} else for (; i <= j; ++i) {
for (k = base - 1; k >= 1; --k) {
t = i > 0 ? k / pows(-i) : k * pows(i);
if (t < u) continue;
if (t > v) break;
z.push(t);
}
}
if (z.length * 2 < n) z = (0, _index.ticks)(u, v, n);
} else {
z = (0, _index.ticks)(i, j, Math.min(j - i, n)).map(pows);
}
return r ? z.reverse() : z;
};
scale.tickFormat = (count, specifier) => {
if (count == null) count = 10;
if (specifier == null) specifier = base === 10 ? "s" : ",";
if (typeof specifier !== "function") {
if (!(base % 1) && (specifier = (0, _index2.formatSpecifier)(specifier)).precision == null) specifier.trim = true;
specifier = (0, _index2.format)(specifier);
}
if (count === Infinity) return specifier;
const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?
return d => {
let i = d / pows(Math.round(logs(d)));
if (i * base < base - 0.5) i *= base;
return i <= k ? specifier(d) : "";
};
};
scale.nice = () => {
return domain((0, _nice.default)(domain(), {
floor: x => pows(Math.floor(logs(x))),
ceil: x => pows(Math.ceil(logs(x)))
}));
};
return scale;
}
function log() {
const scale = loggish((0, _continuous.transformer)()).domain([1, 10]);
scale.copy = () => (0, _continuous.copy)(scale, log()).base(scale.base());
_init.initRange.apply(scale, arguments);
return scale;
}

View File

@@ -0,0 +1,24 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = nice;
function nice(domain, interval) {
domain = domain.slice();
var i0 = 0,
i1 = domain.length - 1,
x0 = domain[i0],
x1 = domain[i1],
t;
if (x1 < x0) {
t = i0, i0 = i1, i1 = t;
t = x0, x0 = x1, x1 = t;
}
domain[i0] = interval.floor(x0);
domain[i1] = interval.ceil(x1);
return domain;
}

View File

@@ -0,0 +1,10 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = number;
function number(x) {
return +x;
}

View File

@@ -0,0 +1,60 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = ordinal;
exports.implicit = void 0;
var _index = require("../../../lib-vendor/d3-array/src/index.js");
var _init = require("./init.js");
const implicit = Symbol("implicit");
exports.implicit = implicit;
function ordinal() {
var index = new _index.InternMap(),
domain = [],
range = [],
unknown = implicit;
function scale(d) {
let i = index.get(d);
if (i === undefined) {
if (unknown !== implicit) return unknown;
index.set(d, i = domain.push(d) - 1);
}
return range[i % range.length];
}
scale.domain = function (_) {
if (!arguments.length) return domain.slice();
domain = [], index = new _index.InternMap();
for (const value of _) {
if (index.has(value)) continue;
index.set(value, domain.push(value) - 1);
}
return scale;
};
scale.range = function (_) {
return arguments.length ? (range = Array.from(_), scale) : range.slice();
};
scale.unknown = function (_) {
return arguments.length ? (unknown = _, scale) : unknown;
};
scale.copy = function () {
return ordinal(domain, range).unknown(unknown);
};
_init.initRange.apply(scale, arguments);
return scale;
}

View File

@@ -0,0 +1,59 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = pow;
exports.powish = powish;
exports.sqrt = sqrt;
var _linear = require("./linear.js");
var _continuous = require("./continuous.js");
var _init = require("./init.js");
function transformPow(exponent) {
return function (x) {
return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);
};
}
function transformSqrt(x) {
return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);
}
function transformSquare(x) {
return x < 0 ? -x * x : x * x;
}
function powish(transform) {
var scale = transform(_continuous.identity, _continuous.identity),
exponent = 1;
function rescale() {
return exponent === 1 ? transform(_continuous.identity, _continuous.identity) : exponent === 0.5 ? transform(transformSqrt, transformSquare) : transform(transformPow(exponent), transformPow(1 / exponent));
}
scale.exponent = function (_) {
return arguments.length ? (exponent = +_, rescale()) : exponent;
};
return (0, _linear.linearish)(scale);
}
function pow() {
var scale = powish((0, _continuous.transformer)());
scale.copy = function () {
return (0, _continuous.copy)(scale, pow()).exponent(scale.exponent());
};
_init.initRange.apply(scale, arguments);
return scale;
}
function sqrt() {
return pow.apply(null, arguments).exponent(0.5);
}

View File

@@ -0,0 +1,64 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = quantile;
var _index = require("../../../lib-vendor/d3-array/src/index.js");
var _init = require("./init.js");
function quantile() {
var domain = [],
range = [],
thresholds = [],
unknown;
function rescale() {
var i = 0,
n = Math.max(1, range.length);
thresholds = new Array(n - 1);
while (++i < n) thresholds[i - 1] = (0, _index.quantileSorted)(domain, i / n);
return scale;
}
function scale(x) {
return x == null || isNaN(x = +x) ? unknown : range[(0, _index.bisect)(thresholds, x)];
}
scale.invertExtent = function (y) {
var i = range.indexOf(y);
return i < 0 ? [NaN, NaN] : [i > 0 ? thresholds[i - 1] : domain[0], i < thresholds.length ? thresholds[i] : domain[domain.length - 1]];
};
scale.domain = function (_) {
if (!arguments.length) return domain.slice();
domain = [];
for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);
domain.sort(_index.ascending);
return rescale();
};
scale.range = function (_) {
return arguments.length ? (range = Array.from(_), rescale()) : range.slice();
};
scale.unknown = function (_) {
return arguments.length ? (unknown = _, scale) : unknown;
};
scale.quantiles = function () {
return thresholds.slice();
};
scale.copy = function () {
return quantile().domain(domain).range(range).unknown(unknown);
};
return _init.initRange.apply(scale, arguments);
}

View File

@@ -0,0 +1,61 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = quantize;
var _index = require("../../../lib-vendor/d3-array/src/index.js");
var _linear = require("./linear.js");
var _init = require("./init.js");
function quantize() {
var x0 = 0,
x1 = 1,
n = 1,
domain = [0.5],
range = [0, 1],
unknown;
function scale(x) {
return x != null && x <= x ? range[(0, _index.bisect)(domain, x, 0, n)] : unknown;
}
function rescale() {
var i = -1;
domain = new Array(n);
while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);
return scale;
}
scale.domain = function (_) {
return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];
};
scale.range = function (_) {
return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();
};
scale.invertExtent = function (y) {
var i = range.indexOf(y);
return i < 0 ? [NaN, NaN] : i < 1 ? [x0, domain[0]] : i >= n ? [domain[n - 1], x1] : [domain[i - 1], domain[i]];
};
scale.unknown = function (_) {
return arguments.length ? (unknown = _, scale) : scale;
};
scale.thresholds = function () {
return domain.slice();
};
scale.copy = function () {
return quantize().domain([x0, x1]).range(range).unknown(unknown);
};
return _init.initRange.apply((0, _linear.linearish)(scale), arguments);
}

View File

@@ -0,0 +1,72 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = radial;
var _continuous = _interopRequireDefault(require("./continuous.js"));
var _init = require("./init.js");
var _linear = require("./linear.js");
var _number = _interopRequireDefault(require("./number.js"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function square(x) {
return Math.sign(x) * x * x;
}
function unsquare(x) {
return Math.sign(x) * Math.sqrt(Math.abs(x));
}
function radial() {
var squared = (0, _continuous.default)(),
range = [0, 1],
round = false,
unknown;
function scale(x) {
var y = unsquare(squared(x));
return isNaN(y) ? unknown : round ? Math.round(y) : y;
}
scale.invert = function (y) {
return squared.invert(square(y));
};
scale.domain = function (_) {
return arguments.length ? (squared.domain(_), scale) : squared.domain();
};
scale.range = function (_) {
return arguments.length ? (squared.range((range = Array.from(_, _number.default)).map(square)), scale) : range.slice();
};
scale.rangeRound = function (_) {
return scale.range(_).round(true);
};
scale.round = function (_) {
return arguments.length ? (round = !!_, scale) : round;
};
scale.clamp = function (_) {
return arguments.length ? (squared.clamp(_), scale) : squared.clamp();
};
scale.unknown = function (_) {
return arguments.length ? (unknown = _, scale) : unknown;
};
scale.copy = function () {
return radial(squared.domain(), range).round(round).clamp(squared.clamp()).unknown(unknown);
};
_init.initRange.apply(scale, arguments);
return (0, _linear.linearish)(scale);
}

View File

@@ -0,0 +1,120 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.copy = copy;
exports.default = sequential;
exports.sequentialLog = sequentialLog;
exports.sequentialPow = sequentialPow;
exports.sequentialSqrt = sequentialSqrt;
exports.sequentialSymlog = sequentialSymlog;
var _index = require("../../../lib-vendor/d3-interpolate/src/index.js");
var _continuous = require("./continuous.js");
var _init = require("./init.js");
var _linear = require("./linear.js");
var _log = require("./log.js");
var _symlog = require("./symlog.js");
var _pow = require("./pow.js");
function transformer() {
var x0 = 0,
x1 = 1,
t0,
t1,
k10,
transform,
interpolator = _continuous.identity,
clamp = false,
unknown;
function scale(x) {
return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));
}
scale.domain = function (_) {
return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];
};
scale.clamp = function (_) {
return arguments.length ? (clamp = !!_, scale) : clamp;
};
scale.interpolator = function (_) {
return arguments.length ? (interpolator = _, scale) : interpolator;
};
function range(interpolate) {
return function (_) {
var r0, r1;
return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];
};
}
scale.range = range(_index.interpolate);
scale.rangeRound = range(_index.interpolateRound);
scale.unknown = function (_) {
return arguments.length ? (unknown = _, scale) : unknown;
};
return function (t) {
transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);
return scale;
};
}
function copy(source, target) {
return target.domain(source.domain()).interpolator(source.interpolator()).clamp(source.clamp()).unknown(source.unknown());
}
function sequential() {
var scale = (0, _linear.linearish)(transformer()(_continuous.identity));
scale.copy = function () {
return copy(scale, sequential());
};
return _init.initInterpolator.apply(scale, arguments);
}
function sequentialLog() {
var scale = (0, _log.loggish)(transformer()).domain([1, 10]);
scale.copy = function () {
return copy(scale, sequentialLog()).base(scale.base());
};
return _init.initInterpolator.apply(scale, arguments);
}
function sequentialSymlog() {
var scale = (0, _symlog.symlogish)(transformer());
scale.copy = function () {
return copy(scale, sequentialSymlog()).constant(scale.constant());
};
return _init.initInterpolator.apply(scale, arguments);
}
function sequentialPow() {
var scale = (0, _pow.powish)(transformer());
scale.copy = function () {
return copy(scale, sequentialPow()).exponent(scale.exponent());
};
return _init.initInterpolator.apply(scale, arguments);
}
function sequentialSqrt() {
return sequentialPow.apply(null, arguments).exponent(0.5);
}

View File

@@ -0,0 +1,51 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = sequentialQuantile;
var _index = require("../../../lib-vendor/d3-array/src/index.js");
var _continuous = require("./continuous.js");
var _init = require("./init.js");
function sequentialQuantile() {
var domain = [],
interpolator = _continuous.identity;
function scale(x) {
if (x != null && !isNaN(x = +x)) return interpolator(((0, _index.bisect)(domain, x, 1) - 1) / (domain.length - 1));
}
scale.domain = function (_) {
if (!arguments.length) return domain.slice();
domain = [];
for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);
domain.sort(_index.ascending);
return scale;
};
scale.interpolator = function (_) {
return arguments.length ? (interpolator = _, scale) : interpolator;
};
scale.range = function () {
return domain.map((d, i) => interpolator(i / (domain.length - 1)));
};
scale.quantiles = function (n) {
return Array.from({
length: n + 1
}, (_, i) => (0, _index.quantile)(domain, i / n));
};
scale.copy = function () {
return sequentialQuantile(interpolator).domain(domain);
};
return _init.initInterpolator.apply(scale, arguments);
}

View File

@@ -0,0 +1,46 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = symlog;
exports.symlogish = symlogish;
var _linear = require("./linear.js");
var _continuous = require("./continuous.js");
var _init = require("./init.js");
function transformSymlog(c) {
return function (x) {
return Math.sign(x) * Math.log1p(Math.abs(x / c));
};
}
function transformSymexp(c) {
return function (x) {
return Math.sign(x) * Math.expm1(Math.abs(x)) * c;
};
}
function symlogish(transform) {
var c = 1,
scale = transform(transformSymlog(c), transformSymexp(c));
scale.constant = function (_) {
return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;
};
return (0, _linear.linearish)(scale);
}
function symlog() {
var scale = symlogish((0, _continuous.transformer)());
scale.copy = function () {
return (0, _continuous.copy)(scale, symlog()).constant(scale.constant());
};
return _init.initRange.apply(scale, arguments);
}

View File

@@ -0,0 +1,44 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = threshold;
var _index = require("../../../lib-vendor/d3-array/src/index.js");
var _init = require("./init.js");
function threshold() {
var domain = [0.5],
range = [0, 1],
unknown,
n = 1;
function scale(x) {
return x != null && x <= x ? range[(0, _index.bisect)(domain, x, 0, n)] : unknown;
}
scale.domain = function (_) {
return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();
};
scale.range = function (_) {
return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();
};
scale.invertExtent = function (y) {
var i = range.indexOf(y);
return [domain[i - 1], domain[i]];
};
scale.unknown = function (_) {
return arguments.length ? (unknown = _, scale) : unknown;
};
scale.copy = function () {
return threshold().domain(domain).range(range).unknown(unknown);
};
return _init.initRange.apply(scale, arguments);
}

View File

@@ -0,0 +1,44 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = tickFormat;
var _index = require("../../../lib-vendor/d3-array/src/index.js");
var _index2 = require("../../../lib-vendor/d3-format/src/index.js");
function tickFormat(start, stop, count, specifier) {
var step = (0, _index.tickStep)(start, stop, count),
precision;
specifier = (0, _index2.formatSpecifier)(specifier == null ? ",f" : specifier);
switch (specifier.type) {
case "s":
{
var value = Math.max(Math.abs(start), Math.abs(stop));
if (specifier.precision == null && !isNaN(precision = (0, _index2.precisionPrefix)(step, value))) specifier.precision = precision;
return (0, _index2.formatPrefix)(specifier, value);
}
case "":
case "e":
case "g":
case "p":
case "r":
{
if (specifier.precision == null && !isNaN(precision = (0, _index2.precisionRound)(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === "e");
break;
}
case "f":
case "%":
{
if (specifier.precision == null && !isNaN(precision = (0, _index2.precisionFixed)(step))) specifier.precision = precision - (specifier.type === "%") * 2;
break;
}
}
return (0, _index2.format)(specifier);
}

View File

@@ -0,0 +1,82 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.calendar = calendar;
exports.default = time;
var _index = require("../../../lib-vendor/d3-time/src/index.js");
var _index2 = require("../../../lib-vendor/d3-time-format/src/index.js");
var _continuous = _interopRequireWildcard(require("./continuous.js"));
var _init = require("./init.js");
var _nice = _interopRequireDefault(require("./nice.js"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function date(t) {
return new Date(t);
}
function number(t) {
return t instanceof Date ? +t : +new Date(+t);
}
function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {
var scale = (0, _continuous.default)(),
invert = scale.invert,
domain = scale.domain;
var formatMillisecond = format(".%L"),
formatSecond = format(":%S"),
formatMinute = format("%I:%M"),
formatHour = format("%I %p"),
formatDay = format("%a %d"),
formatWeek = format("%b %d"),
formatMonth = format("%B"),
formatYear = format("%Y");
function tickFormat(date) {
return (second(date) < date ? formatMillisecond : minute(date) < date ? formatSecond : hour(date) < date ? formatMinute : day(date) < date ? formatHour : month(date) < date ? week(date) < date ? formatDay : formatWeek : year(date) < date ? formatMonth : formatYear)(date);
}
scale.invert = function (y) {
return new Date(invert(y));
};
scale.domain = function (_) {
return arguments.length ? domain(Array.from(_, number)) : domain().map(date);
};
scale.ticks = function (interval) {
var d = domain();
return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);
};
scale.tickFormat = function (count, specifier) {
return specifier == null ? tickFormat : format(specifier);
};
scale.nice = function (interval) {
var d = domain();
if (!interval || typeof interval.range !== "function") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);
return interval ? domain((0, _nice.default)(d, interval)) : scale;
};
scale.copy = function () {
return (0, _continuous.copy)(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));
};
return scale;
}
function time() {
return _init.initRange.apply(calendar(_index.timeTicks, _index.timeTickInterval, _index.timeYear, _index.timeMonth, _index.timeWeek, _index.timeDay, _index.timeHour, _index.timeMinute, _index.timeSecond, _index2.timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);
}

View File

@@ -0,0 +1,18 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = utcTime;
var _index = require("../../../lib-vendor/d3-time/src/index.js");
var _index2 = require("../../../lib-vendor/d3-time-format/src/index.js");
var _time = require("./time.js");
var _init = require("./init.js");
function utcTime() {
return _init.initRange.apply((0, _time.calendar)(_index.utcTicks, _index.utcTickInterval, _index.utcYear, _index.utcMonth, _index.utcWeek, _index.utcDay, _index.utcHour, _index.utcMinute, _index.utcSecond, _index2.utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);
}