fixed version control heatmap and activity

This commit is contained in:
will
2026-04-02 20:38:56 +01:00
parent 1da5da43e1
commit 250a7030bf
1777 changed files with 170575 additions and 83 deletions

54
.next/standalone/node_modules/next/dist/trace/index.js generated vendored Normal file
View File

@@ -0,0 +1,54 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
0 && (module.exports = {
Span: null,
SpanStatus: null,
exportTraceState: null,
flushAllTraces: null,
getTraceEvents: null,
initializeTraceState: null,
recordTraceEvents: null,
setGlobal: null,
trace: null
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
Span: function() {
return _trace.Span;
},
SpanStatus: function() {
return _trace.SpanStatus;
},
exportTraceState: function() {
return _trace.exportTraceState;
},
flushAllTraces: function() {
return _trace.flushAllTraces;
},
getTraceEvents: function() {
return _trace.getTraceEvents;
},
initializeTraceState: function() {
return _trace.initializeTraceState;
},
recordTraceEvents: function() {
return _trace.recordTraceEvents;
},
setGlobal: function() {
return _shared.setGlobal;
},
trace: function() {
return _trace.trace;
}
});
const _trace = require("./trace");
const _shared = require("./shared");
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1,35 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "reporter", {
enumerable: true,
get: function() {
return reporter;
}
});
const _totelemetry = /*#__PURE__*/ _interop_require_default(require("./to-telemetry"));
const _tojson = /*#__PURE__*/ _interop_require_default(require("./to-json"));
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
class MultiReporter {
constructor(reporters){
this.reporters = [];
this.reporters = reporters;
}
async flushAll() {
await Promise.all(this.reporters.map((reporter)=>reporter.flushAll()));
}
report(event) {
this.reporters.forEach((reporter)=>reporter.report(event));
}
}
const reporter = new MultiReporter([
_tojson.default,
_totelemetry.default
]);
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1,161 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
0 && (module.exports = {
batcher: null,
default: null
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
batcher: function() {
return batcher;
},
default: function() {
return _default;
}
});
const _crypto = require("crypto");
const _shared = require("../shared");
const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
const _constants = require("../../shared/lib/constants");
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
const localEndpoint = {
serviceName: "nextjs",
ipv4: "127.0.0.1",
port: 9411
};
function batcher(reportEvents) {
const events = [];
// Promise queue to ensure events are always sent on flushAll
const queue = new Set();
return {
flushAll: async ()=>{
await Promise.all(queue);
if (events.length > 0) {
await reportEvents(events);
events.length = 0;
}
},
report: (event)=>{
events.push(event);
if (events.length > 100) {
const evts = events.slice();
events.length = 0;
const report = reportEvents(evts);
queue.add(report);
report.then(()=>queue.delete(report));
}
}
};
}
let writeStream;
let traceId;
let batch;
const writeStreamOptions = {
flags: "a",
encoding: "utf8"
};
class RotatingWriteStream {
constructor(file, sizeLimit){
this.file = file;
this.size = 0;
this.sizeLimit = sizeLimit;
this.createWriteStream();
}
createWriteStream() {
this.writeStream = _fs.default.createWriteStream(this.file, writeStreamOptions);
}
// Recreate the file
async rotate() {
await this.end();
try {
_fs.default.unlinkSync(this.file);
} catch (err) {
// It's fine if the file does not exist yet
if (err.code !== "ENOENT") {
throw err;
}
}
this.size = 0;
this.createWriteStream();
this.rotatePromise = undefined;
}
async write(data) {
if (this.rotatePromise) await this.rotatePromise;
this.size += data.length;
if (this.size > this.sizeLimit) {
await (this.rotatePromise = this.rotate());
}
if (!this.writeStream.write(data, "utf8")) {
if (this.drainPromise === undefined) {
this.drainPromise = new Promise((resolve, _reject)=>{
this.writeStream.once("drain", ()=>{
this.drainPromise = undefined;
resolve();
});
});
}
await this.drainPromise;
}
}
end() {
return new Promise((resolve)=>{
this.writeStream.end(resolve);
});
}
}
const reportToLocalHost = (event)=>{
const distDir = _shared.traceGlobals.get("distDir");
const phase = _shared.traceGlobals.get("phase");
if (!distDir || !phase) {
return;
}
if (!traceId) {
traceId = process.env.TRACE_ID || (0, _crypto.randomBytes)(8).toString("hex");
}
if (!batch) {
batch = batcher(async (events)=>{
if (!writeStream) {
await _fs.default.promises.mkdir(distDir, {
recursive: true
});
const file = _path.default.join(distDir, "trace");
writeStream = new RotatingWriteStream(file, // Development is limited to 50MB, production is unlimited
phase === _constants.PHASE_DEVELOPMENT_SERVER ? 52428800 : Infinity);
}
const eventsJson = JSON.stringify(events);
try {
await writeStream.write(eventsJson + "\n");
} catch (err) {
console.log(err);
}
});
}
batch.report({
...event,
traceId
});
};
const _default = {
flushAll: ()=>batch ? batch.flushAll().then(()=>{
const phase = _shared.traceGlobals.get("phase");
// Only end writeStream when manually flushing in production
if (phase !== _constants.PHASE_DEVELOPMENT_SERVER) {
return writeStream.end();
}
}) : undefined,
report: reportToLocalHost
};
//# sourceMappingURL=to-json.js.map

View File

@@ -0,0 +1,36 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return _default;
}
});
const _shared = require("../shared");
const TRACE_EVENT_ACCESSLIST = new Map(Object.entries({
"webpack-invalidated": "WEBPACK_INVALIDATED"
}));
const reportToTelemetry = ({ name, duration })=>{
const eventName = TRACE_EVENT_ACCESSLIST.get(name);
if (!eventName) {
return;
}
const telemetry = _shared.traceGlobals.get("telemetry");
if (!telemetry) {
return;
}
telemetry.record({
eventName,
payload: {
durationInMicroseconds: duration
}
});
};
const _default = {
flushAll: ()=>{},
report: reportToTelemetry
};
//# sourceMappingURL=to-telemetry.js.map

View File

@@ -0,0 +1,33 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
0 && (module.exports = {
setGlobal: null,
traceGlobals: null
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
setGlobal: function() {
return setGlobal;
},
traceGlobals: function() {
return traceGlobals;
}
});
let _traceGlobals = global._traceGlobals;
if (!_traceGlobals) {
_traceGlobals = new Map();
}
global._traceGlobals = _traceGlobals;
const traceGlobals = _traceGlobals;
const setGlobal = (key, val)=>{
traceGlobals.set(key, val);
};
//# sourceMappingURL=shared.js.map

194
.next/standalone/node_modules/next/dist/trace/trace.js generated vendored Normal file
View File

@@ -0,0 +1,194 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
0 && (module.exports = {
Span: null,
SpanStatus: null,
clearTraceEvents: null,
exportTraceState: null,
flushAllTraces: null,
getTraceEvents: null,
initializeTraceState: null,
recordTraceEvents: null,
trace: null
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
Span: function() {
return Span;
},
SpanStatus: function() {
return SpanStatus;
},
clearTraceEvents: function() {
return clearTraceEvents;
},
exportTraceState: function() {
return exportTraceState;
},
flushAllTraces: function() {
return flushAllTraces;
},
getTraceEvents: function() {
return getTraceEvents;
},
initializeTraceState: function() {
return initializeTraceState;
},
recordTraceEvents: function() {
return recordTraceEvents;
},
trace: function() {
return trace;
}
});
const _report = require("./report");
const NUM_OF_MICROSEC_IN_NANOSEC = BigInt("1000");
const NUM_OF_MILLISEC_IN_NANOSEC = BigInt("1000000");
let count = 0;
const getId = ()=>{
count++;
return count;
};
let defaultParentSpanId;
let shouldSaveTraceEvents;
let savedTraceEvents = [];
var SpanStatus;
(function(SpanStatus) {
SpanStatus["Started"] = "started";
SpanStatus["Stopped"] = "stopped";
})(SpanStatus || (SpanStatus = {}));
class Span {
constructor({ name, parentId, attrs, startTime }){
this.name = name;
this.parentId = parentId ?? defaultParentSpanId;
this.attrs = attrs ? {
...attrs
} : {};
if (this.parentId === undefined) {
// Attach additional information to root spans
this.attrs.isTurbopack = Boolean(process.env.TURBOPACK);
}
this.status = "started";
this.id = getId();
this._start = startTime || process.hrtime.bigint();
// hrtime cannot be used to reconstruct tracing span's actual start time
// since it does not have relation to clock time:
// `These times are relative to an arbitrary time in the past, and not related to the time of day and therefore not subject to clock drift`
// https://nodejs.org/api/process.html#processhrtimetime
// Capturing current datetime as additional metadata for external reconstruction.
this.now = Date.now();
}
// Durations are reported as microseconds. This gives 1000x the precision
// of something like Date.now(), which reports in milliseconds.
// Additionally, ~285 years can be safely represented as microseconds as
// a float64 in both JSON and JavaScript.
stop(stopTime) {
if (this.status === "stopped") {
// Don't report the same span twice.
// TODO: In the future this should throw as `.stop()` shouldn't be called multiple times.
return;
}
const end = stopTime || process.hrtime.bigint();
const duration = (end - this._start) / NUM_OF_MICROSEC_IN_NANOSEC;
this.status = "stopped";
if (duration > Number.MAX_SAFE_INTEGER) {
throw new Error(`Duration is too long to express as float64: ${duration}`);
}
const timestamp = this._start / NUM_OF_MICROSEC_IN_NANOSEC;
const traceEvent = {
name: this.name,
duration: Number(duration),
timestamp: Number(timestamp),
id: this.id,
parentId: this.parentId,
tags: this.attrs,
startTime: this.now
};
_report.reporter.report(traceEvent);
if (shouldSaveTraceEvents) {
savedTraceEvents.push(traceEvent);
}
}
traceChild(name, attrs) {
return new Span({
name,
parentId: this.id,
attrs
});
}
manualTraceChild(name, // Start time in nanoseconds since epoch.
startTime, // Stop time in nanoseconds since epoch.
stopTime, attrs) {
// We need to convert the time info to the same base as hrtime since that is used usually.
const correction = process.hrtime.bigint() - BigInt(Date.now()) * NUM_OF_MILLISEC_IN_NANOSEC;
const span = new Span({
name,
parentId: this.id,
attrs,
startTime: startTime ? startTime + correction : process.hrtime.bigint()
});
span.stop(stopTime ? stopTime + correction : process.hrtime.bigint());
}
getId() {
return this.id;
}
setAttribute(key, value) {
this.attrs[key] = value;
}
traceFn(fn) {
try {
return fn(this);
} finally{
this.stop();
}
}
async traceAsyncFn(fn) {
try {
return await fn(this);
} finally{
this.stop();
}
}
}
const trace = (name, parentId, attrs)=>{
return new Span({
name,
parentId,
attrs
});
};
const flushAllTraces = ()=>_report.reporter.flushAll();
const exportTraceState = ()=>({
defaultParentSpanId,
lastId: count,
shouldSaveTraceEvents
});
const initializeTraceState = (state)=>{
count = state.lastId;
defaultParentSpanId = state.defaultParentSpanId;
shouldSaveTraceEvents = state.shouldSaveTraceEvents;
};
function getTraceEvents() {
return savedTraceEvents;
}
function recordTraceEvents(events) {
for (const traceEvent of events){
_report.reporter.report(traceEvent);
if (traceEvent.id > count) {
count = traceEvent.id + 1;
}
}
if (shouldSaveTraceEvents) {
savedTraceEvents.push(...events);
}
}
const clearTraceEvents = ()=>savedTraceEvents = [];
//# sourceMappingURL=trace.js.map