Files
hive/frontend/node_modules/tinyspy/dist/index.js
anthonyrawlins e89f2f4b7b Add comprehensive development roadmap via GitHub Issues
Created 10 detailed GitHub issues covering:
- Project activation and management UI (#1-2)
- Worker node coordination and visualization (#3-4)
- Automated GitHub repository scanning (#5)
- Intelligent model-to-issue matching (#6)
- Multi-model task execution system (#7)
- N8N workflow integration (#8)
- Hive-Bzzz P2P bridge (#9)
- Peer assistance protocol (#10)

Each issue includes detailed specifications, acceptance criteria,
technical implementation notes, and dependency mapping.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 19:41:01 +10:00

203 lines
7.3 KiB
JavaScript

// src/utils.ts
function assert(condition, message) {
if (!condition)
throw new Error(message);
}
function isType(type, value) {
return typeof value === type;
}
function isPromise(value) {
return value instanceof Promise;
}
function define(obj, key, descriptor) {
Object.defineProperty(obj, key, descriptor);
}
function defineValue(obj, key, value) {
define(obj, key, { value, configurable: !0, writable: !0 });
}
// src/constants.ts
var SYMBOL_STATE = Symbol.for("tinyspy:spy");
// src/internal.ts
var spies = /* @__PURE__ */ new Set(), reset = (state) => {
state.called = !1, state.callCount = 0, state.calls = [], state.results = [], state.resolves = [], state.next = [];
}, defineState = (spy2) => (define(spy2, SYMBOL_STATE, {
value: { reset: () => reset(spy2[SYMBOL_STATE]) }
}), spy2[SYMBOL_STATE]), getInternalState = (spy2) => spy2[SYMBOL_STATE] || defineState(spy2);
function createInternalSpy(cb) {
assert(
isType("function", cb) || isType("undefined", cb),
"cannot spy on a non-function value"
);
let fn = function(...args) {
let state2 = getInternalState(fn);
state2.called = !0, state2.callCount++, state2.calls.push(args);
let next = state2.next.shift();
if (next) {
state2.results.push(next);
let [type2, result2] = next;
if (type2 === "ok")
return result2;
throw result2;
}
let result, type = "ok", resultIndex = state2.results.length;
if (state2.impl)
try {
new.target ? result = Reflect.construct(state2.impl, args, new.target) : result = state2.impl.apply(this, args), type = "ok";
} catch (err) {
throw result = err, type = "error", state2.results.push([type, err]), err;
}
let resultTuple = [type, result];
return isPromise(result) && result.then(
(r) => state2.resolves[resultIndex] = ["ok", r],
(e) => state2.resolves[resultIndex] = ["error", e]
), state2.results.push(resultTuple), result;
};
defineValue(fn, "_isMockFunction", !0), defineValue(fn, "length", cb ? cb.length : 0), defineValue(fn, "name", cb && cb.name || "spy");
let state = getInternalState(fn);
return state.reset(), state.impl = cb, fn;
}
function isMockFunction(obj) {
return !!obj && obj._isMockFunction === !0;
}
function populateSpy(spy2) {
let state = getInternalState(spy2);
"returns" in spy2 || (define(spy2, "returns", {
get: () => state.results.map(([, r]) => r)
}), [
"called",
"callCount",
"results",
"resolves",
"calls",
"reset",
"impl"
].forEach(
(n) => define(spy2, n, { get: () => state[n], set: (v) => state[n] = v })
), defineValue(spy2, "nextError", (error) => (state.next.push(["error", error]), state)), defineValue(spy2, "nextResult", (result) => (state.next.push(["ok", result]), state)));
}
// src/spy.ts
function spy(cb) {
let spy2 = createInternalSpy(cb);
return populateSpy(spy2), spy2;
}
// src/spyOn.ts
var getDescriptor = (obj, method) => {
let objDescriptor = Object.getOwnPropertyDescriptor(obj, method);
if (objDescriptor)
return [obj, objDescriptor];
let currentProto = Object.getPrototypeOf(obj);
for (; currentProto !== null; ) {
let descriptor = Object.getOwnPropertyDescriptor(currentProto, method);
if (descriptor)
return [currentProto, descriptor];
currentProto = Object.getPrototypeOf(currentProto);
}
}, setPototype = (fn, val) => {
val != null && typeof val == "function" && val.prototype != null && Object.setPrototypeOf(fn.prototype, val.prototype);
};
function internalSpyOn(obj, methodName, mock) {
assert(
!isType("undefined", obj),
"spyOn could not find an object to spy upon"
), assert(
isType("object", obj) || isType("function", obj),
"cannot spyOn on a primitive value"
);
let [accessName, accessType] = (() => {
if (!isType("object", methodName))
return [methodName, "value"];
if ("getter" in methodName && "setter" in methodName)
throw new Error("cannot spy on both getter and setter");
if ("getter" in methodName)
return [methodName.getter, "get"];
if ("setter" in methodName)
return [methodName.setter, "set"];
throw new Error("specify getter or setter to spy on");
})(), [originalDescriptorObject, originalDescriptor] = getDescriptor(obj, accessName) || [];
assert(
originalDescriptor || accessName in obj,
`${String(accessName)} does not exist`
);
let ssr = !1;
accessType === "value" && originalDescriptor && !originalDescriptor.value && originalDescriptor.get && (accessType = "get", ssr = !0, mock = originalDescriptor.get());
let original;
originalDescriptor ? original = originalDescriptor[accessType] : accessType !== "value" ? original = () => obj[accessName] : original = obj[accessName], original && isSpyFunction(original) && (original = original[SYMBOL_STATE].getOriginal());
let reassign = (cb) => {
let { value, ...desc } = originalDescriptor || {
configurable: !0,
writable: !0
};
accessType !== "value" && delete desc.writable, desc[accessType] = cb, define(obj, accessName, desc);
}, restore = () => {
originalDescriptorObject !== obj ? Reflect.deleteProperty(obj, accessName) : originalDescriptor && !original ? define(obj, accessName, originalDescriptor) : reassign(original);
};
mock || (mock = original);
let spy2 = wrap(createInternalSpy(mock), mock);
accessType === "value" && setPototype(spy2, original);
let state = spy2[SYMBOL_STATE];
return defineValue(state, "restore", restore), defineValue(state, "getOriginal", () => ssr ? original() : original), defineValue(state, "willCall", (newCb) => (state.impl = newCb, spy2)), reassign(
ssr ? () => (setPototype(spy2, mock), spy2) : spy2
), spies.add(spy2), spy2;
}
var ignoreProperties = /* @__PURE__ */ new Set([
"length",
"name",
"prototype"
]);
function getAllProperties(original) {
let properties = /* @__PURE__ */ new Set(), descriptors2 = {};
for (; original && original !== Object.prototype && original !== Function.prototype; ) {
let ownProperties = [
...Object.getOwnPropertyNames(original),
...Object.getOwnPropertySymbols(original)
];
for (let prop of ownProperties)
descriptors2[prop] || ignoreProperties.has(prop) || (properties.add(prop), descriptors2[prop] = Object.getOwnPropertyDescriptor(original, prop));
original = Object.getPrototypeOf(original);
}
return {
properties,
descriptors: descriptors2
};
}
function wrap(mock, original) {
if (!original || // the original is already a spy, so it has all the properties
SYMBOL_STATE in original)
return mock;
let { properties, descriptors: descriptors2 } = getAllProperties(original);
for (let key of properties) {
let descriptor = descriptors2[key];
getDescriptor(mock, key) || define(mock, key, descriptor);
}
return mock;
}
function spyOn(obj, methodName, mock) {
let spy2 = internalSpyOn(obj, methodName, mock);
return populateSpy(spy2), ["restore", "getOriginal", "willCall"].forEach((method) => {
defineValue(spy2, method, spy2[SYMBOL_STATE][method]);
}), spy2;
}
function isSpyFunction(obj) {
return isMockFunction(obj) && "getOriginal" in obj[SYMBOL_STATE];
}
// src/restoreAll.ts
function restoreAll() {
for (let fn of spies)
fn.restore();
spies.clear();
}
export {
createInternalSpy,
getInternalState,
internalSpyOn,
restoreAll,
spies,
spy,
spyOn
};