@jondotsoy/flags
Version:
A Javascript arguments processor
103 lines • 8.84 kB
JavaScript
"use strict";
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
};
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var _Spec_refiners, _Spec_initial, _Spec_accumulate, _Spec_metadata;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Spec = void 0;
/** Inmutable class */
class Spec {
constructor(initial, refiners, accumulate, metadata) {
_Spec_refiners.set(this, void 0);
_Spec_initial.set(this, void 0);
_Spec_accumulate.set(this, void 0);
_Spec_metadata.set(this, void 0);
__classPrivateFieldSet(this, _Spec_initial, initial, "f");
__classPrivateFieldSet(this, _Spec_refiners, refiners, "f");
__classPrivateFieldSet(this, _Spec_accumulate, accumulate, "f");
__classPrivateFieldSet(this, _Spec_metadata, metadata !== null && metadata !== void 0 ? metadata : {}, "f");
}
initial(initial) {
return new Spec(initial, __classPrivateFieldGet(this, _Spec_refiners, "f"), __classPrivateFieldGet(this, _Spec_accumulate, "f"), __classPrivateFieldGet(this, _Spec_metadata, "f"));
}
accumulate(accumulate) {
return new Spec(__classPrivateFieldGet(this, _Spec_initial, "f"), __classPrivateFieldGet(this, _Spec_refiners, "f"), accumulate, __classPrivateFieldGet(this, _Spec_metadata, "f"));
}
refine(refine) {
return new Spec(__classPrivateFieldGet(this, _Spec_initial, "f"), [...__classPrivateFieldGet(this, _Spec_refiners, "f"), refine], __classPrivateFieldGet(this, _Spec_accumulate, "f"), __classPrivateFieldGet(this, _Spec_metadata, "f"));
}
metadata(values) {
return new Spec(__classPrivateFieldGet(this, _Spec_initial, "f"), __classPrivateFieldGet(this, _Spec_refiners, "f"), __classPrivateFieldGet(this, _Spec_accumulate, "f"), {
...__classPrivateFieldGet(this, _Spec_metadata, "f"),
...values,
});
}
getMetadata(key) {
return __classPrivateFieldGet(this, _Spec_metadata, "f")[key];
}
hasMetadata(key) {
return key in __classPrivateFieldGet(this, _Spec_metadata, "f");
}
copyMetadata() {
return { ...__classPrivateFieldGet(this, _Spec_metadata, "f") };
}
getInitial() {
return __classPrivateFieldGet(this, _Spec_initial, "f");
}
getAccumulate() {
return __classPrivateFieldGet(this, _Spec_accumulate, "f");
}
getRefiners() {
return __classPrivateFieldGet(this, _Spec_refiners, "f");
}
parse(startIndex, args, prevValue, builder) {
if (args.length === 0 || startIndex >= args.length) {
return null;
}
let context = null;
const arg = args[startIndex];
// Apply each refiner in sequence
for (const refiner of __classPrivateFieldGet(this, _Spec_refiners, "f")) {
const result = refiner(arg, startIndex, args, context, builder);
if (result === null) {
return null;
}
context = {
args: result.args,
index: startIndex,
value: result.value,
};
}
// If no refiners or all passed, return the final context
if (context) {
// Extract the consumed args from the original args array
const consumedArgs = args.slice(startIndex, startIndex + context.args.length);
// Apply accumulate function if it exists
let finalValue = context.value;
if (__classPrivateFieldGet(this, _Spec_accumulate, "f") && prevValue) {
// Use prevValue if provided, otherwise use initial value
finalValue = __classPrivateFieldGet(this, _Spec_accumulate, "f").call(this, prevValue === null || prevValue === void 0 ? void 0 : prevValue.current, context.value, startIndex, args);
}
return {
args: consumedArgs,
index: startIndex,
value: finalValue,
};
}
return null;
}
static create() {
return new Spec(null, []);
}
}
exports.Spec = Spec;
_Spec_refiners = new WeakMap(), _Spec_initial = new WeakMap(), _Spec_accumulate = new WeakMap(), _Spec_metadata = new WeakMap();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9idWlsZGVycy9TcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQXNCQSxzQkFBc0I7QUFDdEIsTUFBYSxJQUFJO0lBTWYsWUFDRSxPQUFxQixFQUNyQixRQUFrQixFQUNsQixVQUF1QixFQUN2QixRQUE4QjtRQVRoQyxpQ0FBb0I7UUFDcEIsZ0NBQXVCO1FBQ3ZCLG1DQUF5QjtRQUN6QixpQ0FBK0I7UUFRN0IsdUJBQUEsSUFBSSxpQkFBWSxPQUFPLE1BQUEsQ0FBQztRQUN4Qix1QkFBQSxJQUFJLGtCQUFhLFFBQVEsTUFBQSxDQUFDO1FBQzFCLHVCQUFBLElBQUksb0JBQWUsVUFBVSxNQUFBLENBQUM7UUFDOUIsdUJBQUEsSUFBSSxrQkFBYSxRQUFRLGFBQVIsUUFBUSxjQUFSLFFBQVEsR0FBSSxFQUFFLE1BQUEsQ0FBQztJQUNsQyxDQUFDO0lBRUQsT0FBTyxDQUFJLE9BQVU7UUFDbkIsT0FBTyxJQUFJLElBQUksQ0FDYixPQUFPLEVBQ1AsdUJBQUEsSUFBSSxzQkFBVSxFQUNkLHVCQUFBLElBQUksd0JBQVksRUFDaEIsdUJBQUEsSUFBSSxzQkFBVSxDQUNmLENBQUM7SUFDSixDQUFDO0lBRUQsVUFBVSxDQUFDLFVBQXNCO1FBQy9CLE9BQU8sSUFBSSxJQUFJLENBQ2IsdUJBQUEsSUFBSSxxQkFBUyxFQUNiLHVCQUFBLElBQUksc0JBQVUsRUFDZCxVQUFVLEVBQ1YsdUJBQUEsSUFBSSxzQkFBVSxDQUNmLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFJLE1BQWM7UUFDdEIsT0FBTyxJQUFJLElBQUksQ0FDYix1QkFBQSxJQUFJLHFCQUFTLEVBQ2IsQ0FBQyxHQUFHLHVCQUFBLElBQUksc0JBQVUsRUFBRSxNQUFNLENBQUMsRUFDM0IsdUJBQUEsSUFBSSx3QkFBWSxFQUNoQix1QkFBQSxJQUFJLHNCQUFVLENBQ2YsQ0FBQztJQUNK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