Initial import with skill sheet working

This commit is contained in:
2024-12-04 00:11:23 +01:00
commit 9050c80ab4
4488 changed files with 671048 additions and 0 deletions

27
node_modules/undertaker/lib/helpers/buildTree.js generated vendored Normal file
View File

@@ -0,0 +1,27 @@
'use strict';
var metadata = require('./metadata');
function buildTree(tasks) {
return Object.values(tasks).map(function(task) {
var meta = metadata.get(task);
if (meta) {
return meta.tree;
}
var name = task.displayName || task.name || '<anonymous>';
meta = {
name: name,
tree: {
label: name,
type: 'function',
nodes: [],
},
};
metadata.set(task, meta);
return meta.tree;
});
}
module.exports = buildTree;

View File

@@ -0,0 +1,73 @@
'use strict';
var captureLastRun = require('last-run').capture;
var releaseLastRun = require('last-run').release;
var metadata = require('./metadata');
var uid = 0;
function Storage(fn) {
var meta = metadata.get(fn);
this.fn = meta.orig || fn;
this.uid = uid++;
this.name = meta.name;
this.branch = meta.branch || false;
this.captureTime = Date.now();
this.startHr = [];
}
Storage.prototype.capture = function() {
captureLastRun(this.fn, this.captureTime);
};
Storage.prototype.release = function() {
releaseLastRun(this.fn);
};
function createExtensions(ee) {
return {
create: function(fn) {
return new Storage(fn);
},
before: function(storage) {
storage.startHr = process.hrtime();
ee.emit('start', {
uid: storage.uid,
name: storage.name,
branch: storage.branch,
time: Date.now(),
});
},
after: function(result, storage) {
if (result && result.state === 'error') {
return this.error(result.value, storage);
}
storage.capture();
ee.emit('stop', {
uid: storage.uid,
name: storage.name,
branch: storage.branch,
duration: process.hrtime(storage.startHr),
time: Date.now(),
});
},
error: function(error, storage) {
if (Array.isArray(error)) {
error = error[0];
}
storage.release();
ee.emit('error', {
uid: storage.uid,
name: storage.name,
branch: storage.branch,
error: error,
duration: process.hrtime(storage.startHr),
time: Date.now(),
});
},
};
}
module.exports = createExtensions;

5
node_modules/undertaker/lib/helpers/metadata.js generated vendored Normal file
View File

@@ -0,0 +1,5 @@
'use strict';
var metadata = new WeakMap();
module.exports = metadata;

55
node_modules/undertaker/lib/helpers/normalizeArgs.js generated vendored Normal file
View File

@@ -0,0 +1,55 @@
'use strict';
var assert = require('assert');
var levenshtein = require('fast-levenshtein');
function normalizeArgs(registry, args) {
function getFunction(task) {
if (typeof task === 'function') {
return task;
}
var fn = registry.get(task);
if (!fn) {
var similar = similarTasks(registry, task);
var err;
if (similar.length > 0) {
err = new Error('Task never defined: ' + task + ' - did you mean? ' + similar.join(', '));
err.task = task;
err.similar = similar;
} else {
err = new Error('Task never defined: ' + task);
err.task = task;
}
throw err;
}
return fn;
}
var flattenArgs = Array.prototype.concat.apply([], args);
assert(flattenArgs.length, 'One or more tasks should be combined using series or parallel');
return flattenArgs.map(getFunction);
}
function similarTasks(registry, queryTask) {
if (typeof queryTask !== 'string') {
return [];
}
var tasks = registry.tasks();
var similarTasks = [];
for (var task in tasks) {
if (Object.prototype.hasOwnProperty.call(tasks, task)) {
var distance = levenshtein.get(task, queryTask);
var allowedDistance = Math.floor(0.4 * task.length) + 1;
if (distance < allowedDistance) {
similarTasks.push(task);
}
}
}
return similarTasks;
}
module.exports = normalizeArgs;

View File

@@ -0,0 +1,41 @@
'use strict';
var assert = require('assert');
function isFunction(fn) {
return typeof fn === 'function';
}
function isConstructor(registry) {
if (!(registry && registry.prototype)) {
return false;
}
var hasProtoGet = isFunction(registry.prototype.get);
var hasProtoSet = isFunction(registry.prototype.set);
var hasProtoInit = isFunction(registry.prototype.init);
var hasProtoTasks = isFunction(registry.prototype.tasks);
if (hasProtoGet || hasProtoSet || hasProtoInit || hasProtoTasks) {
return true;
}
return false;
}
function validateRegistry(registry) {
try {
assert(isFunction(registry.get), 'Custom registry must have `get` function');
assert(isFunction(registry.set), 'Custom registry must have `set` function');
assert(isFunction(registry.init), 'Custom registry must have `init` function');
assert(isFunction(registry.tasks), 'Custom registry must have `tasks` function');
} catch (err) {
if (isConstructor(registry)) {
assert(false, 'Custom registries must be instantiated, but it looks like you passed a constructor');
} else {
throw err;
}
}
}
module.exports = validateRegistry;