diff --git a/apps/api/release/app.js b/apps/api/release/app.js index 2d13f5e..b69213c 100644 --- a/apps/api/release/app.js +++ b/apps/api/release/app.js @@ -1,7 +1,9 @@ "use strict"; +var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __esm = (fn, res) => function __init() { return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; @@ -21,6 +23,14 @@ var __copyProps = (to, from, except, desc) => { } return to; }; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // ../../node_modules/.pnpm/reflect-metadata@0.2.2/node_modules/reflect-metadata/Reflect.js @@ -2098,10 +2108,10 @@ var require_inject_decorator = __commonJS({ "../../node_modules/.pnpm/@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/inject.decorator.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.Inject = Inject; + exports2.Inject = Inject2; var constants_1 = require_constants2(); var shared_utils_1 = require_shared_utils(); - function Inject(token) { + function Inject2(token) { const injectCallHasArguments = arguments.length > 0; return (target, key, index) => { let type = token || Reflect.getMetadata("design:type", target, key); @@ -2148,11 +2158,11 @@ var require_injectable_decorator = __commonJS({ "../../node_modules/.pnpm/@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/injectable.decorator.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.Injectable = Injectable; + exports2.Injectable = Injectable2; exports2.mixin = mixin; var uid_1 = require_dist(); var constants_1 = require_constants2(); - function Injectable(options) { + function Injectable2(options) { return (target) => { Reflect.defineMetadata(constants_1.INJECTABLE_WATERMARK, true, target); Reflect.defineMetadata(constants_1.SCOPE_OPTIONS_METADATA, options, target); @@ -2162,7 +2172,7 @@ var require_injectable_decorator = __commonJS({ Object.defineProperty(mixinClass, "name", { value: (0, uid_1.uid)(21) }); - Injectable()(mixinClass); + Injectable2()(mixinClass); return mixinClass; } } @@ -2173,10 +2183,10 @@ var require_optional_decorator = __commonJS({ "../../node_modules/.pnpm/@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/optional.decorator.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.Optional = Optional; + exports2.Optional = Optional2; var constants_1 = require_constants2(); var shared_utils_1 = require_shared_utils(); - function Optional() { + function Optional2() { return (target, key, index) => { if (!(0, shared_utils_1.isUndefined)(index)) { const args = Reflect.getMetadata(constants_1.OPTIONAL_DEPS_METADATA, target) || []; @@ -2399,9 +2409,9 @@ var require_module_decorator = __commonJS({ "../../node_modules/.pnpm/@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/modules/module.decorator.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.Module = Module; + exports2.Module = Module2; var validate_module_keys_util_1 = require_validate_module_keys_util(); - function Module(metadata) { + function Module2(metadata) { const propsKeys = Object.keys(metadata); (0, validate_module_keys_util_1.validateModuleKeys)(propsKeys); return (target) => { @@ -4231,7 +4241,7 @@ var require_logger_service = __commonJS({ day: "2-digit", month: "2-digit" }); - var Logger = Logger_1 = class Logger { + var Logger2 = Logger_1 = class Logger { constructor(context, options = {}) { this.context = context; this.options = options; @@ -4345,10 +4355,10 @@ var require_logger_service = __commonJS({ return this.localInstanceRef; } }; - exports2.Logger = Logger; - Logger.logBuffer = new Array(); - Logger.staticInstanceRef = DEFAULT_LOGGER; - Logger.WrapBuffer = (target, propertyKey, descriptor) => { + exports2.Logger = Logger2; + Logger2.logBuffer = new Array(); + Logger2.staticInstanceRef = DEFAULT_LOGGER; + Logger2.WrapBuffer = (target, propertyKey, descriptor) => { const originalFn = descriptor.value; descriptor.value = function(...args) { if (Logger_1.isBufferAttached) { @@ -4362,83 +4372,83 @@ var require_logger_service = __commonJS({ }; }; tslib_1.__decorate([ - Logger.WrapBuffer, + Logger2.WrapBuffer, tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [Object, Object]), tslib_1.__metadata("design:returntype", void 0) - ], Logger.prototype, "error", null); + ], Logger2.prototype, "error", null); tslib_1.__decorate([ - Logger.WrapBuffer, + Logger2.WrapBuffer, tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [Object, Object]), tslib_1.__metadata("design:returntype", void 0) - ], Logger.prototype, "log", null); + ], Logger2.prototype, "log", null); tslib_1.__decorate([ - Logger.WrapBuffer, + Logger2.WrapBuffer, tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [Object, Object]), tslib_1.__metadata("design:returntype", void 0) - ], Logger.prototype, "warn", null); + ], Logger2.prototype, "warn", null); tslib_1.__decorate([ - Logger.WrapBuffer, + Logger2.WrapBuffer, tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [Object, Object]), tslib_1.__metadata("design:returntype", void 0) - ], Logger.prototype, "debug", null); + ], Logger2.prototype, "debug", null); tslib_1.__decorate([ - Logger.WrapBuffer, + Logger2.WrapBuffer, tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [Object, Object]), tslib_1.__metadata("design:returntype", void 0) - ], Logger.prototype, "verbose", null); + ], Logger2.prototype, "verbose", null); tslib_1.__decorate([ - Logger.WrapBuffer, + Logger2.WrapBuffer, tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [Object, Object]), tslib_1.__metadata("design:returntype", void 0) - ], Logger.prototype, "fatal", null); + ], Logger2.prototype, "fatal", null); tslib_1.__decorate([ - Logger.WrapBuffer, + Logger2.WrapBuffer, tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [Object, Object]), tslib_1.__metadata("design:returntype", void 0) - ], Logger, "error", null); + ], Logger2, "error", null); tslib_1.__decorate([ - Logger.WrapBuffer, + Logger2.WrapBuffer, tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [Object, Object]), tslib_1.__metadata("design:returntype", void 0) - ], Logger, "log", null); + ], Logger2, "log", null); tslib_1.__decorate([ - Logger.WrapBuffer, + Logger2.WrapBuffer, tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [Object, Object]), tslib_1.__metadata("design:returntype", void 0) - ], Logger, "warn", null); + ], Logger2, "warn", null); tslib_1.__decorate([ - Logger.WrapBuffer, + Logger2.WrapBuffer, tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [Object, Object]), tslib_1.__metadata("design:returntype", void 0) - ], Logger, "debug", null); + ], Logger2, "debug", null); tslib_1.__decorate([ - Logger.WrapBuffer, + Logger2.WrapBuffer, tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [Object, Object]), tslib_1.__metadata("design:returntype", void 0) - ], Logger, "verbose", null); + ], Logger2, "verbose", null); tslib_1.__decorate([ - Logger.WrapBuffer, + Logger2.WrapBuffer, tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [Object, Object]), tslib_1.__metadata("design:returntype", void 0) - ], Logger, "fatal", null); - exports2.Logger = Logger = Logger_1 = tslib_1.__decorate([ + ], Logger2, "fatal", null); + exports2.Logger = Logger2 = Logger_1 = tslib_1.__decorate([ (0, core_12.Injectable)(), tslib_1.__param(0, (0, core_12.Optional)()), tslib_1.__param(1, (0, core_12.Optional)()), tslib_1.__metadata("design:paramtypes", [String, Object]) - ], Logger); + ], Logger2); } }); @@ -27252,7 +27262,7 @@ var require_Action = __commonJS({ var Subscription_1 = require_Subscription(); var Action = (function(_super) { __extends2(Action2, _super); - function Action2(scheduler, work) { + function Action2(scheduler2, work) { return _super.call(this) || this; } Action2.prototype.schedule = function(state, delay) { @@ -27346,9 +27356,9 @@ var require_AsyncAction = __commonJS({ var arrRemove_1 = require_arrRemove(); var AsyncAction = (function(_super) { __extends2(AsyncAction2, _super); - function AsyncAction2(scheduler, work) { - var _this = _super.call(this, scheduler, work) || this; - _this.scheduler = scheduler; + function AsyncAction2(scheduler2, work) { + var _this = _super.call(this, scheduler2, work) || this; + _this.scheduler = scheduler2; _this.work = work; _this.pending = false; return _this; @@ -27363,20 +27373,20 @@ var require_AsyncAction = __commonJS({ } this.state = state; var id = this.id; - var scheduler = this.scheduler; + var scheduler2 = this.scheduler; if (id != null) { - this.id = this.recycleAsyncId(scheduler, id, delay); + this.id = this.recycleAsyncId(scheduler2, id, delay); } this.pending = true; this.delay = delay; - this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay); + this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler2, this.id, delay); return this; }; - AsyncAction2.prototype.requestAsyncId = function(scheduler, _id, delay) { + AsyncAction2.prototype.requestAsyncId = function(scheduler2, _id, delay) { if (delay === void 0) { delay = 0; } - return intervalProvider_1.intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay); + return intervalProvider_1.intervalProvider.setInterval(scheduler2.flush.bind(scheduler2, this), delay); }; AsyncAction2.prototype.recycleAsyncId = function(_scheduler, id, delay) { if (delay === void 0) { @@ -27418,13 +27428,13 @@ var require_AsyncAction = __commonJS({ }; AsyncAction2.prototype.unsubscribe = function() { if (!this.closed) { - var _a = this, id = _a.id, scheduler = _a.scheduler; - var actions = scheduler.actions; + var _a = this, id = _a.id, scheduler2 = _a.scheduler; + var actions = scheduler2.actions; this.work = this.state = this.scheduler = null; this.pending = false; arrRemove_1.arrRemove(actions, this); if (id != null) { - this.id = this.recycleAsyncId(scheduler, id, null); + this.id = this.recycleAsyncId(scheduler2, id, null); } this.delay = null; _super.prototype.unsubscribe.call(this); @@ -27593,28 +27603,28 @@ var require_timer = __commonJS({ var async_1 = require_async(); var isScheduler_1 = require_isScheduler(); var isDate_1 = require_isDate2(); - function timer(dueTime, intervalOrScheduler, scheduler) { + function timer(dueTime, intervalOrScheduler, scheduler2) { if (dueTime === void 0) { dueTime = 0; } - if (scheduler === void 0) { - scheduler = async_1.async; + if (scheduler2 === void 0) { + scheduler2 = async_1.async; } var intervalDuration = -1; if (intervalOrScheduler != null) { if (isScheduler_1.isScheduler(intervalOrScheduler)) { - scheduler = intervalOrScheduler; + scheduler2 = intervalOrScheduler; } else { intervalDuration = intervalOrScheduler; } } return new Observable_1.Observable(function(subscriber) { - var due = isDate_1.isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime; + var due = isDate_1.isValidDate(dueTime) ? +dueTime - scheduler2.now() : dueTime; if (due < 0) { due = 0; } var n = 0; - return scheduler.schedule(function() { + return scheduler2.schedule(function() { if (!subscriber.closed) { subscriber.next(n++); if (0 <= intervalDuration) { @@ -27639,12 +27649,12 @@ var require_auditTime = __commonJS({ var async_1 = require_async(); var audit_1 = require_audit(); var timer_1 = require_timer(); - function auditTime(duration, scheduler) { - if (scheduler === void 0) { - scheduler = async_1.asyncScheduler; + function auditTime(duration, scheduler2) { + if (scheduler2 === void 0) { + scheduler2 = async_1.asyncScheduler; } return audit_1.audit(function() { - return timer_1.timer(duration, scheduler); + return timer_1.timer(duration, scheduler2); }); } exports2.auditTime = auditTime; @@ -27811,14 +27821,14 @@ var require_executeSchedule = __commonJS({ "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.executeSchedule = void 0; - function executeSchedule(parentSubscription, scheduler, work, delay, repeat) { + function executeSchedule(parentSubscription, scheduler2, work, delay, repeat) { if (delay === void 0) { delay = 0; } if (repeat === void 0) { repeat = false; } - var scheduleSubscription = scheduler.schedule(function() { + var scheduleSubscription = scheduler2.schedule(function() { work(); if (repeat) { parentSubscription.add(this.schedule(null, delay)); @@ -27865,7 +27875,7 @@ var require_bufferTime = __commonJS({ for (var _i = 1; _i < arguments.length; _i++) { otherArgs[_i - 1] = arguments[_i]; } - var scheduler = (_a = args_1.popScheduler(otherArgs)) !== null && _a !== void 0 ? _a : async_1.asyncScheduler; + var scheduler2 = (_a = args_1.popScheduler(otherArgs)) !== null && _a !== void 0 ? _a : async_1.asyncScheduler; var bufferCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null; var maxBufferSize = otherArgs[1] || Infinity; return lift_1.operate(function(source, subscriber) { @@ -27888,13 +27898,13 @@ var require_bufferTime = __commonJS({ subs }; bufferRecords.push(record_1); - executeSchedule_1.executeSchedule(subs, scheduler, function() { + executeSchedule_1.executeSchedule(subs, scheduler2, function() { return emit(record_1); }, bufferTimeSpan); } }; if (bufferCreationInterval !== null && bufferCreationInterval >= 0) { - executeSchedule_1.executeSchedule(subscriber, scheduler, startBuffer, bufferCreationInterval, true); + executeSchedule_1.executeSchedule(subscriber, scheduler2, startBuffer, bufferCreationInterval, true); } else { restartOnEmit = true; } @@ -28115,21 +28125,21 @@ var require_observeOn = __commonJS({ var executeSchedule_1 = require_executeSchedule(); var lift_1 = require_lift(); var OperatorSubscriber_1 = require_OperatorSubscriber(); - function observeOn(scheduler, delay) { + function observeOn(scheduler2, delay) { if (delay === void 0) { delay = 0; } return lift_1.operate(function(source, subscriber) { source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { - return executeSchedule_1.executeSchedule(subscriber, scheduler, function() { + return executeSchedule_1.executeSchedule(subscriber, scheduler2, function() { return subscriber.next(value); }, delay); }, function() { - return executeSchedule_1.executeSchedule(subscriber, scheduler, function() { + return executeSchedule_1.executeSchedule(subscriber, scheduler2, function() { return subscriber.complete(); }, delay); }, function(err) { - return executeSchedule_1.executeSchedule(subscriber, scheduler, function() { + return executeSchedule_1.executeSchedule(subscriber, scheduler2, function() { return subscriber.error(err); }, delay); })); @@ -28146,12 +28156,12 @@ var require_subscribeOn = __commonJS({ Object.defineProperty(exports2, "__esModule", { value: true }); exports2.subscribeOn = void 0; var lift_1 = require_lift(); - function subscribeOn(scheduler, delay) { + function subscribeOn(scheduler2, delay) { if (delay === void 0) { delay = 0; } return lift_1.operate(function(source, subscriber) { - subscriber.add(scheduler.schedule(function() { + subscriber.add(scheduler2.schedule(function() { return source.subscribe(subscriber); }, delay)); }); @@ -28169,8 +28179,8 @@ var require_scheduleObservable = __commonJS({ var innerFrom_1 = require_innerFrom(); var observeOn_1 = require_observeOn(); var subscribeOn_1 = require_subscribeOn(); - function scheduleObservable(input, scheduler) { - return innerFrom_1.innerFrom(input).pipe(subscribeOn_1.subscribeOn(scheduler), observeOn_1.observeOn(scheduler)); + function scheduleObservable(input, scheduler2) { + return innerFrom_1.innerFrom(input).pipe(subscribeOn_1.subscribeOn(scheduler2), observeOn_1.observeOn(scheduler2)); } exports2.scheduleObservable = scheduleObservable; } @@ -28185,8 +28195,8 @@ var require_schedulePromise = __commonJS({ var innerFrom_1 = require_innerFrom(); var observeOn_1 = require_observeOn(); var subscribeOn_1 = require_subscribeOn(); - function schedulePromise(input, scheduler) { - return innerFrom_1.innerFrom(input).pipe(subscribeOn_1.subscribeOn(scheduler), observeOn_1.observeOn(scheduler)); + function schedulePromise(input, scheduler2) { + return innerFrom_1.innerFrom(input).pipe(subscribeOn_1.subscribeOn(scheduler2), observeOn_1.observeOn(scheduler2)); } exports2.schedulePromise = schedulePromise; } @@ -28199,10 +28209,10 @@ var require_scheduleArray = __commonJS({ Object.defineProperty(exports2, "__esModule", { value: true }); exports2.scheduleArray = void 0; var Observable_1 = require_Observable(); - function scheduleArray(input, scheduler) { + function scheduleArray(input, scheduler2) { return new Observable_1.Observable(function(subscriber) { var i = 0; - return scheduler.schedule(function() { + return scheduler2.schedule(function() { if (i === input.length) { subscriber.complete(); } else { @@ -28228,12 +28238,12 @@ var require_scheduleIterable = __commonJS({ var iterator_1 = require_iterator(); var isFunction_1 = require_isFunction(); var executeSchedule_1 = require_executeSchedule(); - function scheduleIterable(input, scheduler) { + function scheduleIterable(input, scheduler2) { return new Observable_1.Observable(function(subscriber) { var iterator; - executeSchedule_1.executeSchedule(subscriber, scheduler, function() { + executeSchedule_1.executeSchedule(subscriber, scheduler2, function() { iterator = input[iterator_1.iterator](); - executeSchedule_1.executeSchedule(subscriber, scheduler, function() { + executeSchedule_1.executeSchedule(subscriber, scheduler2, function() { var _a; var value; var done; @@ -28267,14 +28277,14 @@ var require_scheduleAsyncIterable = __commonJS({ exports2.scheduleAsyncIterable = void 0; var Observable_1 = require_Observable(); var executeSchedule_1 = require_executeSchedule(); - function scheduleAsyncIterable(input, scheduler) { + function scheduleAsyncIterable(input, scheduler2) { if (!input) { throw new Error("Iterable cannot be null"); } return new Observable_1.Observable(function(subscriber) { - executeSchedule_1.executeSchedule(subscriber, scheduler, function() { + executeSchedule_1.executeSchedule(subscriber, scheduler2, function() { var iterator = input[Symbol.asyncIterator](); - executeSchedule_1.executeSchedule(subscriber, scheduler, function() { + executeSchedule_1.executeSchedule(subscriber, scheduler2, function() { iterator.next().then(function(result) { if (result.done) { subscriber.complete(); @@ -28298,8 +28308,8 @@ var require_scheduleReadableStreamLike = __commonJS({ exports2.scheduleReadableStreamLike = void 0; var scheduleAsyncIterable_1 = require_scheduleAsyncIterable(); var isReadableStreamLike_1 = require_isReadableStreamLike(); - function scheduleReadableStreamLike(input, scheduler) { - return scheduleAsyncIterable_1.scheduleAsyncIterable(isReadableStreamLike_1.readableStreamLikeToAsyncGenerator(input), scheduler); + function scheduleReadableStreamLike(input, scheduler2) { + return scheduleAsyncIterable_1.scheduleAsyncIterable(isReadableStreamLike_1.readableStreamLikeToAsyncGenerator(input), scheduler2); } exports2.scheduleReadableStreamLike = scheduleReadableStreamLike; } @@ -28324,25 +28334,25 @@ var require_scheduled = __commonJS({ var throwUnobservableError_1 = require_throwUnobservableError(); var isReadableStreamLike_1 = require_isReadableStreamLike(); var scheduleReadableStreamLike_1 = require_scheduleReadableStreamLike(); - function scheduled(input, scheduler) { + function scheduled(input, scheduler2) { if (input != null) { if (isInteropObservable_1.isInteropObservable(input)) { - return scheduleObservable_1.scheduleObservable(input, scheduler); + return scheduleObservable_1.scheduleObservable(input, scheduler2); } if (isArrayLike_1.isArrayLike(input)) { - return scheduleArray_1.scheduleArray(input, scheduler); + return scheduleArray_1.scheduleArray(input, scheduler2); } if (isPromise_1.isPromise(input)) { - return schedulePromise_1.schedulePromise(input, scheduler); + return schedulePromise_1.schedulePromise(input, scheduler2); } if (isAsyncIterable_1.isAsyncIterable(input)) { - return scheduleAsyncIterable_1.scheduleAsyncIterable(input, scheduler); + return scheduleAsyncIterable_1.scheduleAsyncIterable(input, scheduler2); } if (isIterable_1.isIterable(input)) { - return scheduleIterable_1.scheduleIterable(input, scheduler); + return scheduleIterable_1.scheduleIterable(input, scheduler2); } if (isReadableStreamLike_1.isReadableStreamLike(input)) { - return scheduleReadableStreamLike_1.scheduleReadableStreamLike(input, scheduler); + return scheduleReadableStreamLike_1.scheduleReadableStreamLike(input, scheduler2); } } throw throwUnobservableError_1.createInvalidObservableTypeError(input); @@ -28359,8 +28369,8 @@ var require_from = __commonJS({ exports2.from = void 0; var scheduled_1 = require_scheduled(); var innerFrom_1 = require_innerFrom(); - function from(input, scheduler) { - return scheduler ? scheduled_1.scheduled(input, scheduler) : innerFrom_1.innerFrom(input); + function from(input, scheduler2) { + return scheduler2 ? scheduled_1.scheduled(input, scheduler2) : innerFrom_1.innerFrom(input); } exports2.from = from; } @@ -28463,31 +28473,31 @@ var require_combineLatest = __commonJS({ for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } - var scheduler = args_1.popScheduler(args); + var scheduler2 = args_1.popScheduler(args); var resultSelector = args_1.popResultSelector(args); var _a = argsArgArrayOrObject_1.argsArgArrayOrObject(args), observables = _a.args, keys = _a.keys; if (observables.length === 0) { - return from_1.from([], scheduler); + return from_1.from([], scheduler2); } - var result = new Observable_1.Observable(combineLatestInit(observables, scheduler, keys ? function(values) { + var result = new Observable_1.Observable(combineLatestInit(observables, scheduler2, keys ? function(values) { return createObject_1.createObject(keys, values); } : identity_1.identity)); return resultSelector ? result.pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector)) : result; } exports2.combineLatest = combineLatest; - function combineLatestInit(observables, scheduler, valueTransform) { + function combineLatestInit(observables, scheduler2, valueTransform) { if (valueTransform === void 0) { valueTransform = identity_1.identity; } return function(subscriber) { - maybeSchedule(scheduler, function() { + maybeSchedule(scheduler2, function() { var length = observables.length; var values = new Array(length); var active = length; var remainingFirstValues = length; var _loop_1 = function(i2) { - maybeSchedule(scheduler, function() { - var source = from_1.from(observables[i2], scheduler); + maybeSchedule(scheduler2, function() { + var source = from_1.from(observables[i2], scheduler2); var hasFirstValue = false; source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { values[i2] = value; @@ -28512,9 +28522,9 @@ var require_combineLatest = __commonJS({ }; } exports2.combineLatestInit = combineLatestInit; - function maybeSchedule(scheduler, execute, subscription) { - if (scheduler) { - executeSchedule_1.executeSchedule(subscription, scheduler, execute); + function maybeSchedule(scheduler2, execute, subscription) { + if (scheduler2) { + executeSchedule_1.executeSchedule(subscription, scheduler2, execute); } else { execute(); } @@ -28903,9 +28913,9 @@ var require_concat2 = __commonJS({ for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } - var scheduler = args_1.popScheduler(args); + var scheduler2 = args_1.popScheduler(args); return lift_1.operate(function(source, subscriber) { - concatAll_1.concatAll()(from_1.from(__spreadArray2([source], __read2(args)), scheduler)).subscribe(subscriber); + concatAll_1.concatAll()(from_1.from(__spreadArray2([source], __read2(args)), scheduler2)).subscribe(subscriber); }); } exports2.concat = concat; @@ -29316,9 +29326,9 @@ var require_debounceTime = __commonJS({ var async_1 = require_async(); var lift_1 = require_lift(); var OperatorSubscriber_1 = require_OperatorSubscriber(); - function debounceTime(dueTime, scheduler) { - if (scheduler === void 0) { - scheduler = async_1.asyncScheduler; + function debounceTime(dueTime, scheduler2) { + if (scheduler2 === void 0) { + scheduler2 = async_1.asyncScheduler; } return lift_1.operate(function(source, subscriber) { var activeTask = null; @@ -29335,7 +29345,7 @@ var require_debounceTime = __commonJS({ }; function emitWhenIdle() { var targetTime = lastTime + dueTime; - var now = scheduler.now(); + var now = scheduler2.now(); if (now < targetTime) { activeTask = this.schedule(void 0, targetTime - now); subscriber.add(activeTask); @@ -29345,9 +29355,9 @@ var require_debounceTime = __commonJS({ } source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { lastValue = value; - lastTime = scheduler.now(); + lastTime = scheduler2.now(); if (!activeTask) { - activeTask = scheduler.schedule(emitWhenIdle, dueTime); + activeTask = scheduler2.schedule(emitWhenIdle, dueTime); subscriber.add(activeTask); } }, function() { @@ -29418,13 +29428,13 @@ var require_empty = __commonJS({ exports2.EMPTY = new Observable_1.Observable(function(subscriber) { return subscriber.complete(); }); - function empty(scheduler) { - return scheduler ? emptyScheduled(scheduler) : exports2.EMPTY; + function empty(scheduler2) { + return scheduler2 ? emptyScheduled(scheduler2) : exports2.EMPTY; } exports2.empty = empty; - function emptyScheduled(scheduler) { + function emptyScheduled(scheduler2) { return new Observable_1.Observable(function(subscriber) { - return scheduler.schedule(function() { + return scheduler2.schedule(function() { return subscriber.complete(); }); }); @@ -29529,11 +29539,11 @@ var require_delay = __commonJS({ var async_1 = require_async(); var delayWhen_1 = require_delayWhen(); var timer_1 = require_timer(); - function delay(due, scheduler) { - if (scheduler === void 0) { - scheduler = async_1.asyncScheduler; + function delay(due, scheduler2) { + if (scheduler2 === void 0) { + scheduler2 = async_1.asyncScheduler; } - var duration = timer_1.timer(due, scheduler); + var duration = timer_1.timer(due, scheduler2); return delayWhen_1.delayWhen(function() { return duration; }); @@ -29555,8 +29565,8 @@ var require_of = __commonJS({ for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } - var scheduler = args_1.popScheduler(args); - return from_1.from(args, scheduler); + var scheduler2 = args_1.popScheduler(args); + return from_1.from(args, scheduler2); } exports2.of = of; } @@ -29570,15 +29580,15 @@ var require_throwError = __commonJS({ exports2.throwError = void 0; var Observable_1 = require_Observable(); var isFunction_1 = require_isFunction(); - function throwError(errorOrErrorFactory, scheduler) { + function throwError(errorOrErrorFactory, scheduler2) { var errorFactory = isFunction_1.isFunction(errorOrErrorFactory) ? errorOrErrorFactory : function() { return errorOrErrorFactory; }; var init = function(subscriber) { return subscriber.error(errorFactory()); }; - return new Observable_1.Observable(scheduler ? function(subscriber) { - return scheduler.schedule(init, 0, subscriber); + return new Observable_1.Observable(scheduler2 ? function(subscriber) { + return scheduler2.schedule(init, 0, subscriber); } : init); } exports2.throwError = throwError; @@ -30010,13 +30020,13 @@ var require_expand = __commonJS({ exports2.expand = void 0; var lift_1 = require_lift(); var mergeInternals_1 = require_mergeInternals(); - function expand(project, concurrent, scheduler) { + function expand(project, concurrent, scheduler2) { if (concurrent === void 0) { concurrent = Infinity; } concurrent = (concurrent || 0) < 1 ? Infinity : concurrent; return lift_1.operate(function(source, subscriber) { - return mergeInternals_1.mergeInternals(source, subscriber, project, concurrent, void 0, true, scheduler); + return mergeInternals_1.mergeInternals(source, subscriber, project, concurrent, void 0, true, scheduler2); }); } exports2.expand = expand; @@ -30383,10 +30393,10 @@ var require_merge2 = __commonJS({ for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } - var scheduler = args_1.popScheduler(args); + var scheduler2 = args_1.popScheduler(args); var concurrent = args_1.popNumber(args, Infinity); return lift_1.operate(function(source, subscriber) { - mergeAll_1.mergeAll(concurrent)(from_1.from(__spreadArray2([source], __read2(args)), scheduler)).subscribe(subscriber); + mergeAll_1.mergeAll(concurrent)(from_1.from(__spreadArray2([source], __read2(args)), scheduler2)).subscribe(subscriber); }); } exports2.merge = merge; @@ -31547,17 +31557,17 @@ var require_interval = __commonJS({ exports2.interval = void 0; var async_1 = require_async(); var timer_1 = require_timer(); - function interval(period, scheduler) { + function interval(period, scheduler2) { if (period === void 0) { period = 0; } - if (scheduler === void 0) { - scheduler = async_1.asyncScheduler; + if (scheduler2 === void 0) { + scheduler2 = async_1.asyncScheduler; } if (period < 0) { period = 0; } - return timer_1.timer(period, period, scheduler); + return timer_1.timer(period, period, scheduler2); } exports2.interval = interval; } @@ -31572,11 +31582,11 @@ var require_sampleTime = __commonJS({ var async_1 = require_async(); var sample_1 = require_sample(); var interval_1 = require_interval(); - function sampleTime(period, scheduler) { - if (scheduler === void 0) { - scheduler = async_1.asyncScheduler; + function sampleTime(period, scheduler2) { + if (scheduler2 === void 0) { + scheduler2 = async_1.asyncScheduler; } - return sample_1.sample(interval_1.interval(period, scheduler)); + return sample_1.sample(interval_1.interval(period, scheduler2)); } exports2.sampleTime = sampleTime; } @@ -31777,18 +31787,18 @@ var require_shareReplay = __commonJS({ exports2.shareReplay = void 0; var ReplaySubject_1 = require_ReplaySubject(); var share_1 = require_share(); - function shareReplay(configOrBufferSize, windowTime, scheduler) { + function shareReplay(configOrBufferSize, windowTime, scheduler2) { var _a, _b, _c; var bufferSize; var refCount = false; if (configOrBufferSize && typeof configOrBufferSize === "object") { - _a = configOrBufferSize.bufferSize, bufferSize = _a === void 0 ? Infinity : _a, _b = configOrBufferSize.windowTime, windowTime = _b === void 0 ? Infinity : _b, _c = configOrBufferSize.refCount, refCount = _c === void 0 ? false : _c, scheduler = configOrBufferSize.scheduler; + _a = configOrBufferSize.bufferSize, bufferSize = _a === void 0 ? Infinity : _a, _b = configOrBufferSize.windowTime, windowTime = _b === void 0 ? Infinity : _b, _c = configOrBufferSize.refCount, refCount = _c === void 0 ? false : _c, scheduler2 = configOrBufferSize.scheduler; } else { bufferSize = configOrBufferSize !== null && configOrBufferSize !== void 0 ? configOrBufferSize : Infinity; } return share_1.share({ connector: function() { - return new ReplaySubject_1.ReplaySubject(bufferSize, windowTime, scheduler); + return new ReplaySubject_1.ReplaySubject(bufferSize, windowTime, scheduler2); }, resetOnError: true, resetOnComplete: false, @@ -31982,9 +31992,9 @@ var require_startWith = __commonJS({ for (var _i = 0; _i < arguments.length; _i++) { values[_i] = arguments[_i]; } - var scheduler = args_1.popScheduler(values); + var scheduler2 = args_1.popScheduler(values); return lift_1.operate(function(source, subscriber) { - (scheduler ? concat_1.concat(values, source, scheduler) : concat_1.concat(values, source)).subscribe(subscriber); + (scheduler2 ? concat_1.concat(values, source, scheduler2) : concat_1.concat(values, source)).subscribe(subscriber); }); } exports2.startWith = startWith; @@ -32240,11 +32250,11 @@ var require_throttleTime = __commonJS({ var async_1 = require_async(); var throttle_1 = require_throttle(); var timer_1 = require_timer(); - function throttleTime(duration, scheduler, config) { - if (scheduler === void 0) { - scheduler = async_1.asyncScheduler; + function throttleTime(duration, scheduler2, config) { + if (scheduler2 === void 0) { + scheduler2 = async_1.asyncScheduler; } - var duration$ = timer_1.timer(duration, scheduler); + var duration$ = timer_1.timer(duration, scheduler2); return throttle_1.throttle(function() { return duration$; }, config); @@ -32262,14 +32272,14 @@ var require_timeInterval = __commonJS({ var async_1 = require_async(); var lift_1 = require_lift(); var OperatorSubscriber_1 = require_OperatorSubscriber(); - function timeInterval(scheduler) { - if (scheduler === void 0) { - scheduler = async_1.asyncScheduler; + function timeInterval(scheduler2) { + if (scheduler2 === void 0) { + scheduler2 = async_1.asyncScheduler; } return lift_1.operate(function(source, subscriber) { - var last = scheduler.now(); + var last = scheduler2.now(); source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { - var now = scheduler.now(); + var now = scheduler2.now(); var interval = now - last; last = now; subscriber.next(new TimeInterval(value, interval)); @@ -32313,7 +32323,7 @@ var require_timeout = __commonJS({ }; }); function timeout(config, schedulerArg) { - var _a = isDate_1.isValidDate(config) ? { first: config } : typeof config === "number" ? { each: config } : config, first = _a.first, each = _a.each, _b = _a.with, _with = _b === void 0 ? timeoutErrorFactory : _b, _c = _a.scheduler, scheduler = _c === void 0 ? schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : async_1.asyncScheduler : _c, _d = _a.meta, meta = _d === void 0 ? null : _d; + var _a = isDate_1.isValidDate(config) ? { first: config } : typeof config === "number" ? { each: config } : config, first = _a.first, each = _a.each, _b = _a.with, _with = _b === void 0 ? timeoutErrorFactory : _b, _c = _a.scheduler, scheduler2 = _c === void 0 ? schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : async_1.asyncScheduler : _c, _d = _a.meta, meta = _d === void 0 ? null : _d; if (first == null && each == null) { throw new TypeError("No timeout provided."); } @@ -32323,7 +32333,7 @@ var require_timeout = __commonJS({ var lastValue = null; var seen = 0; var startTimer = function(delay) { - timerSubscription = executeSchedule_1.executeSchedule(subscriber, scheduler, function() { + timerSubscription = executeSchedule_1.executeSchedule(subscriber, scheduler2, function() { try { originalSourceSubscription.unsubscribe(); innerFrom_1.innerFrom(_with({ @@ -32347,7 +32357,7 @@ var require_timeout = __commonJS({ } lastValue = null; })); - !seen && startTimer(first != null ? typeof first === "number" ? first : +first - scheduler.now() : each); + !seen && startTimer(first != null ? typeof first === "number" ? first : +first - scheduler2.now() : each); }); } exports2.timeout = timeout; @@ -32366,11 +32376,11 @@ var require_timeoutWith = __commonJS({ var async_1 = require_async(); var isDate_1 = require_isDate2(); var timeout_1 = require_timeout(); - function timeoutWith(due, withObservable, scheduler) { + function timeoutWith(due, withObservable, scheduler2) { var first; var each; var _with; - scheduler = scheduler !== null && scheduler !== void 0 ? scheduler : async_1.async; + scheduler2 = scheduler2 !== null && scheduler2 !== void 0 ? scheduler2 : async_1.async; if (isDate_1.isValidDate(due)) { first = due; } else if (typeof due === "number") { @@ -32389,7 +32399,7 @@ var require_timeoutWith = __commonJS({ return timeout_1.timeout({ first, each, - scheduler, + scheduler: scheduler2, with: _with }); } @@ -32551,7 +32561,7 @@ var require_windowTime = __commonJS({ for (var _i = 1; _i < arguments.length; _i++) { otherArgs[_i - 1] = arguments[_i]; } - var scheduler = (_a = args_1.popScheduler(otherArgs)) !== null && _a !== void 0 ? _a : async_1.asyncScheduler; + var scheduler2 = (_a = args_1.popScheduler(otherArgs)) !== null && _a !== void 0 ? _a : async_1.asyncScheduler; var windowCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null; var maxWindowSize = otherArgs[1] || Infinity; return lift_1.operate(function(source, subscriber) { @@ -32576,13 +32586,13 @@ var require_windowTime = __commonJS({ }; windowRecords.push(record_1); subscriber.next(window_1.asObservable()); - executeSchedule_1.executeSchedule(subs, scheduler, function() { + executeSchedule_1.executeSchedule(subs, scheduler2, function() { return closeWindow(record_1); }, windowTimeSpan); } }; if (windowCreationInterval !== null && windowCreationInterval >= 0) { - executeSchedule_1.executeSchedule(subscriber, scheduler, startWindow, windowCreationInterval, true); + executeSchedule_1.executeSchedule(subscriber, scheduler2, startWindow, windowCreationInterval, true); } else { restartOnClose = true; } @@ -34213,35 +34223,35 @@ var require_AsapAction = __commonJS({ var immediateProvider_1 = require_immediateProvider(); var AsapAction = (function(_super) { __extends2(AsapAction2, _super); - function AsapAction2(scheduler, work) { - var _this = _super.call(this, scheduler, work) || this; - _this.scheduler = scheduler; + function AsapAction2(scheduler2, work) { + var _this = _super.call(this, scheduler2, work) || this; + _this.scheduler = scheduler2; _this.work = work; return _this; } - AsapAction2.prototype.requestAsyncId = function(scheduler, id, delay) { + AsapAction2.prototype.requestAsyncId = function(scheduler2, id, delay) { if (delay === void 0) { delay = 0; } if (delay !== null && delay > 0) { - return _super.prototype.requestAsyncId.call(this, scheduler, id, delay); + return _super.prototype.requestAsyncId.call(this, scheduler2, id, delay); } - scheduler.actions.push(this); - return scheduler._scheduled || (scheduler._scheduled = immediateProvider_1.immediateProvider.setImmediate(scheduler.flush.bind(scheduler, void 0))); + scheduler2.actions.push(this); + return scheduler2._scheduled || (scheduler2._scheduled = immediateProvider_1.immediateProvider.setImmediate(scheduler2.flush.bind(scheduler2, void 0))); }; - AsapAction2.prototype.recycleAsyncId = function(scheduler, id, delay) { + AsapAction2.prototype.recycleAsyncId = function(scheduler2, id, delay) { var _a; if (delay === void 0) { delay = 0; } if (delay != null ? delay > 0 : this.delay > 0) { - return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay); + return _super.prototype.recycleAsyncId.call(this, scheduler2, id, delay); } - var actions = scheduler.actions; + var actions = scheduler2.actions; if (id != null && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) { immediateProvider_1.immediateProvider.clearImmediate(id); - if (scheduler._scheduled === id) { - scheduler._scheduled = void 0; + if (scheduler2._scheduled === id) { + scheduler2._scheduled = void 0; } } return void 0; @@ -34350,9 +34360,9 @@ var require_QueueAction = __commonJS({ var AsyncAction_1 = require_AsyncAction(); var QueueAction = (function(_super) { __extends2(QueueAction2, _super); - function QueueAction2(scheduler, work) { - var _this = _super.call(this, scheduler, work) || this; - _this.scheduler = scheduler; + function QueueAction2(scheduler2, work) { + var _this = _super.call(this, scheduler2, work) || this; + _this.scheduler = scheduler2; _this.work = work; return _this; } @@ -34371,14 +34381,14 @@ var require_QueueAction = __commonJS({ QueueAction2.prototype.execute = function(state, delay) { return delay > 0 || this.closed ? _super.prototype.execute.call(this, state, delay) : this._execute(state, delay); }; - QueueAction2.prototype.requestAsyncId = function(scheduler, id, delay) { + QueueAction2.prototype.requestAsyncId = function(scheduler2, id, delay) { if (delay === void 0) { delay = 0; } if (delay != null && delay > 0 || delay == null && this.delay > 0) { - return _super.prototype.requestAsyncId.call(this, scheduler, id, delay); + return _super.prototype.requestAsyncId.call(this, scheduler2, id, delay); } - scheduler.flush(this); + scheduler2.flush(this); return 0; }; return QueueAction2; @@ -34466,36 +34476,36 @@ var require_AnimationFrameAction = __commonJS({ var animationFrameProvider_1 = require_animationFrameProvider(); var AnimationFrameAction = (function(_super) { __extends2(AnimationFrameAction2, _super); - function AnimationFrameAction2(scheduler, work) { - var _this = _super.call(this, scheduler, work) || this; - _this.scheduler = scheduler; + function AnimationFrameAction2(scheduler2, work) { + var _this = _super.call(this, scheduler2, work) || this; + _this.scheduler = scheduler2; _this.work = work; return _this; } - AnimationFrameAction2.prototype.requestAsyncId = function(scheduler, id, delay) { + AnimationFrameAction2.prototype.requestAsyncId = function(scheduler2, id, delay) { if (delay === void 0) { delay = 0; } if (delay !== null && delay > 0) { - return _super.prototype.requestAsyncId.call(this, scheduler, id, delay); + return _super.prototype.requestAsyncId.call(this, scheduler2, id, delay); } - scheduler.actions.push(this); - return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider_1.animationFrameProvider.requestAnimationFrame(function() { - return scheduler.flush(void 0); + scheduler2.actions.push(this); + return scheduler2._scheduled || (scheduler2._scheduled = animationFrameProvider_1.animationFrameProvider.requestAnimationFrame(function() { + return scheduler2.flush(void 0); })); }; - AnimationFrameAction2.prototype.recycleAsyncId = function(scheduler, id, delay) { + AnimationFrameAction2.prototype.recycleAsyncId = function(scheduler2, id, delay) { var _a; if (delay === void 0) { delay = 0; } if (delay != null ? delay > 0 : this.delay > 0) { - return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay); + return _super.prototype.recycleAsyncId.call(this, scheduler2, id, delay); } - var actions = scheduler.actions; - if (id != null && id === scheduler._scheduled && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) { + var actions = scheduler2.actions; + if (id != null && id === scheduler2._scheduled && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) { animationFrameProvider_1.animationFrameProvider.cancelAnimationFrame(id); - scheduler._scheduled = void 0; + scheduler2._scheduled = void 0; } return void 0; }; @@ -34649,16 +34659,16 @@ var require_VirtualTimeScheduler = __commonJS({ exports2.VirtualTimeScheduler = VirtualTimeScheduler; var VirtualAction = (function(_super) { __extends2(VirtualAction2, _super); - function VirtualAction2(scheduler, work, index) { + function VirtualAction2(scheduler2, work, index) { if (index === void 0) { - index = scheduler.index += 1; + index = scheduler2.index += 1; } - var _this = _super.call(this, scheduler, work) || this; - _this.scheduler = scheduler; + var _this = _super.call(this, scheduler2, work) || this; + _this.scheduler = scheduler2; _this.work = work; _this.index = index; _this.active = true; - _this.index = scheduler.index = index; + _this.index = scheduler2.index = index; return _this; } VirtualAction2.prototype.schedule = function(state, delay) { @@ -34677,17 +34687,17 @@ var require_VirtualTimeScheduler = __commonJS({ return Subscription_1.Subscription.EMPTY; } }; - VirtualAction2.prototype.requestAsyncId = function(scheduler, id, delay) { + VirtualAction2.prototype.requestAsyncId = function(scheduler2, id, delay) { if (delay === void 0) { delay = 0; } - this.delay = scheduler.frame + delay; - var actions = scheduler.actions; + this.delay = scheduler2.frame + delay; + var actions = scheduler2.actions; actions.push(this); actions.sort(VirtualAction2.sortActions); return 1; }; - VirtualAction2.prototype.recycleAsyncId = function(scheduler, id, delay) { + VirtualAction2.prototype.recycleAsyncId = function(scheduler2, id, delay) { if (delay === void 0) { delay = 0; } @@ -34834,27 +34844,27 @@ var require_bindCallbackInternals = __commonJS({ var mapOneOrManyArgs_1 = require_mapOneOrManyArgs(); var observeOn_1 = require_observeOn(); var AsyncSubject_1 = require_AsyncSubject(); - function bindCallbackInternals(isNodeStyle, callbackFunc, resultSelector, scheduler) { + function bindCallbackInternals(isNodeStyle, callbackFunc, resultSelector, scheduler2) { if (resultSelector) { if (isScheduler_1.isScheduler(resultSelector)) { - scheduler = resultSelector; + scheduler2 = resultSelector; } else { return function() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } - return bindCallbackInternals(isNodeStyle, callbackFunc, scheduler).apply(this, args).pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector)); + return bindCallbackInternals(isNodeStyle, callbackFunc, scheduler2).apply(this, args).pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector)); }; } } - if (scheduler) { + if (scheduler2) { return function() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } - return bindCallbackInternals(isNodeStyle, callbackFunc).apply(this, args).pipe(subscribeOn_1.subscribeOn(scheduler), observeOn_1.observeOn(scheduler)); + return bindCallbackInternals(isNodeStyle, callbackFunc).apply(this, args).pipe(subscribeOn_1.subscribeOn(scheduler2), observeOn_1.observeOn(scheduler2)); }; } return function() { @@ -34911,8 +34921,8 @@ var require_bindCallback = __commonJS({ Object.defineProperty(exports2, "__esModule", { value: true }); exports2.bindCallback = void 0; var bindCallbackInternals_1 = require_bindCallbackInternals(); - function bindCallback(callbackFunc, resultSelector, scheduler) { - return bindCallbackInternals_1.bindCallbackInternals(false, callbackFunc, resultSelector, scheduler); + function bindCallback(callbackFunc, resultSelector, scheduler2) { + return bindCallbackInternals_1.bindCallbackInternals(false, callbackFunc, resultSelector, scheduler2); } exports2.bindCallback = bindCallback; } @@ -34925,8 +34935,8 @@ var require_bindNodeCallback = __commonJS({ Object.defineProperty(exports2, "__esModule", { value: true }); exports2.bindNodeCallback = void 0; var bindCallbackInternals_1 = require_bindCallbackInternals(); - function bindNodeCallback(callbackFunc, resultSelector, scheduler) { - return bindCallbackInternals_1.bindCallbackInternals(true, callbackFunc, resultSelector, scheduler); + function bindNodeCallback(callbackFunc, resultSelector, scheduler2) { + return bindCallbackInternals_1.bindCallbackInternals(true, callbackFunc, resultSelector, scheduler2); } exports2.bindNodeCallback = bindNodeCallback; } @@ -35250,17 +35260,17 @@ var require_generate = __commonJS({ var isScheduler_1 = require_isScheduler(); var defer_1 = require_defer(); var scheduleIterable_1 = require_scheduleIterable(); - function generate(initialStateOrOptions, condition, iterate, resultSelectorOrScheduler, scheduler) { + function generate(initialStateOrOptions, condition, iterate, resultSelectorOrScheduler, scheduler2) { var _a, _b; var resultSelector; var initialState; if (arguments.length === 1) { - _a = initialStateOrOptions, initialState = _a.initialState, condition = _a.condition, iterate = _a.iterate, _b = _a.resultSelector, resultSelector = _b === void 0 ? identity_1.identity : _b, scheduler = _a.scheduler; + _a = initialStateOrOptions, initialState = _a.initialState, condition = _a.condition, iterate = _a.iterate, _b = _a.resultSelector, resultSelector = _b === void 0 ? identity_1.identity : _b, scheduler2 = _a.scheduler; } else { initialState = initialStateOrOptions; if (!resultSelectorOrScheduler || isScheduler_1.isScheduler(resultSelectorOrScheduler)) { resultSelector = identity_1.identity; - scheduler = resultSelectorOrScheduler; + scheduler2 = resultSelectorOrScheduler; } else { resultSelector = resultSelectorOrScheduler; } @@ -35286,8 +35296,8 @@ var require_generate = __commonJS({ } }); } - return defer_1.defer(scheduler ? function() { - return scheduleIterable_1.scheduleIterable(gen(), scheduler); + return defer_1.defer(scheduler2 ? function() { + return scheduleIterable_1.scheduleIterable(gen(), scheduler2); } : gen); } exports2.generate = generate; @@ -35326,10 +35336,10 @@ var require_merge3 = __commonJS({ for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } - var scheduler = args_1.popScheduler(args); + var scheduler2 = args_1.popScheduler(args); var concurrent = args_1.popNumber(args, Infinity); var sources = args; - return !sources.length ? empty_1.EMPTY : sources.length === 1 ? innerFrom_1.innerFrom(sources[0]) : mergeAll_1.mergeAll(concurrent)(from_1.from(sources, scheduler)); + return !sources.length ? empty_1.EMPTY : sources.length === 1 ? innerFrom_1.innerFrom(sources[0]) : mergeAll_1.mergeAll(concurrent)(from_1.from(sources, scheduler2)); } exports2.merge = merge; } @@ -35358,8 +35368,8 @@ var require_pairs = __commonJS({ Object.defineProperty(exports2, "__esModule", { value: true }); exports2.pairs = void 0; var from_1 = require_from(); - function pairs(obj, scheduler) { - return from_1.from(Object.entries(obj), scheduler); + function pairs(obj, scheduler2) { + return from_1.from(Object.entries(obj), scheduler2); } exports2.pairs = pairs; } @@ -35389,7 +35399,7 @@ var require_range = __commonJS({ exports2.range = void 0; var Observable_1 = require_Observable(); var empty_1 = require_empty(); - function range(start, count, scheduler) { + function range(start, count, scheduler2) { if (count == null) { count = start; start = 0; @@ -35398,9 +35408,9 @@ var require_range = __commonJS({ return empty_1.EMPTY; } var end = count + start; - return new Observable_1.Observable(scheduler ? function(subscriber) { + return new Observable_1.Observable(scheduler2 ? function(subscriber) { var n = start; - return scheduler.schedule(function() { + return scheduler2.schedule(function() { if (n < end) { subscriber.next(n++); this.schedule(); @@ -39532,7 +39542,7 @@ var require_module = __commonJS({ var constants_2 = require_constants5(); var instance_wrapper_1 = require_instance_wrapper(); var module_ref_1 = require_module_ref(); - var Module = class { + var Module2 = class { constructor(_metatype, container) { this._metatype = _metatype; this.container = container; @@ -39926,7 +39936,7 @@ var require_module = __commonJS({ return (0, get_class_scope_1.getClassScope)(provider) === interfaces_1.Scope.TRANSIENT; } }; - exports2.Module = Module; + exports2.Module = Module2; } }); @@ -76189,7 +76199,7 @@ var require_core3 = __commonJS({ var require_prisma_service = __commonJS({ "dist/prisma/prisma.service.js"(exports2) { "use strict"; - var __decorate2 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; @@ -76208,7 +76218,7 @@ var require_prisma_service = __commonJS({ } }; exports2.PrismaService = PrismaService; - exports2.PrismaService = PrismaService = __decorate2([ + exports2.PrismaService = PrismaService = __decorate4([ (0, common_12.Injectable)() ], PrismaService); } @@ -76218,7 +76228,7 @@ var require_prisma_service = __commonJS({ var require_prisma_module = __commonJS({ "dist/prisma/prisma.module.js"(exports2) { "use strict"; - var __decorate2 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; @@ -76231,7 +76241,7 @@ var require_prisma_module = __commonJS({ var PrismaModule = class PrismaModule { }; exports2.PrismaModule = PrismaModule; - exports2.PrismaModule = PrismaModule = __decorate2([ + exports2.PrismaModule = PrismaModule = __decorate4([ (0, common_12.Global)(), (0, common_12.Module)({ providers: [prisma_service_1.PrismaService], @@ -76245,13 +76255,13 @@ var require_prisma_module = __commonJS({ var require_catalog_service = __commonJS({ "dist/modules/catalog/catalog.service.js"(exports2) { "use strict"; - var __decorate2 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; - var __metadata2 = exports2 && exports2.__metadata || function(k, v) { + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports2, "__esModule", { value: true }); @@ -76284,30 +76294,1156 @@ var require_catalog_service = __commonJS({ } }; exports2.CatalogService = CatalogService; - exports2.CatalogService = CatalogService = __decorate2([ + exports2.CatalogService = CatalogService = __decorate4([ (0, common_12.Injectable)(), - __metadata2("design:paramtypes", [prisma_service_1.PrismaService]) + __metadata3("design:paramtypes", [prisma_service_1.PrismaService]) ], CatalogService); } }); +// ../../node_modules/.pnpm/@nestjs+passport@10.0.3_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_ia6i3gv5hfockxefxn2psg2dxa/node_modules/@nestjs/passport/dist/abstract.strategy.js +var require_abstract_strategy = __commonJS({ + "../../node_modules/.pnpm/@nestjs+passport@10.0.3_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_ia6i3gv5hfockxefxn2psg2dxa/node_modules/@nestjs/passport/dist/abstract.strategy.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AbstractStrategy = void 0; + var AbstractStrategy = class { + }; + exports2.AbstractStrategy = AbstractStrategy; + } +}); + +// ../../node_modules/.pnpm/pause@0.0.1/node_modules/pause/index.js +var require_pause = __commonJS({ + "../../node_modules/.pnpm/pause@0.0.1/node_modules/pause/index.js"(exports2, module2) { + module2.exports = function(obj) { + var onData, onEnd, events = []; + obj.on("data", onData = function(data, encoding) { + events.push(["data", data, encoding]); + }); + obj.on("end", onEnd = function(data, encoding) { + events.push(["end", data, encoding]); + }); + return { + end: function() { + obj.removeListener("data", onData); + obj.removeListener("end", onEnd); + }, + resume: function() { + this.end(); + for (var i = 0, len = events.length; i < len; ++i) { + obj.emit.apply(obj, events[i]); + } + } + }; + }; + } +}); + +// ../../node_modules/.pnpm/passport-strategy@1.0.0/node_modules/passport-strategy/lib/strategy.js +var require_strategy = __commonJS({ + "../../node_modules/.pnpm/passport-strategy@1.0.0/node_modules/passport-strategy/lib/strategy.js"(exports2, module2) { + function Strategy() { + } + Strategy.prototype.authenticate = function(req, options) { + throw new Error("Strategy#authenticate must be overridden by subclass"); + }; + module2.exports = Strategy; + } +}); + +// ../../node_modules/.pnpm/passport-strategy@1.0.0/node_modules/passport-strategy/lib/index.js +var require_lib6 = __commonJS({ + "../../node_modules/.pnpm/passport-strategy@1.0.0/node_modules/passport-strategy/lib/index.js"(exports2, module2) { + var Strategy = require_strategy(); + exports2 = module2.exports = Strategy; + exports2.Strategy = Strategy; + } +}); + +// ../../node_modules/.pnpm/passport@0.7.0/node_modules/passport/lib/strategies/session.js +var require_session = __commonJS({ + "../../node_modules/.pnpm/passport@0.7.0/node_modules/passport/lib/strategies/session.js"(exports2, module2) { + var pause = require_pause(); + var util2 = require("util"); + var Strategy = require_lib6(); + function SessionStrategy(options, deserializeUser) { + if (typeof options == "function") { + deserializeUser = options; + options = void 0; + } + options = options || {}; + Strategy.call(this); + this.name = "session"; + this._key = options.key || "passport"; + this._deserializeUser = deserializeUser; + } + util2.inherits(SessionStrategy, Strategy); + SessionStrategy.prototype.authenticate = function(req, options) { + if (!req.session) { + return this.error(new Error("Login sessions require session support. Did you forget to use `express-session` middleware?")); + } + options = options || {}; + var self2 = this, su; + if (req.session[this._key]) { + su = req.session[this._key].user; + } + if (su || su === 0) { + var paused = options.pauseStream ? pause(req) : null; + this._deserializeUser(su, req, function(err, user) { + if (err) { + return self2.error(err); + } + if (!user) { + delete req.session[self2._key].user; + } else { + var property = req._userProperty || "user"; + req[property] = user; + } + self2.pass(); + if (paused) { + paused.resume(); + } + }); + } else { + self2.pass(); + } + }; + module2.exports = SessionStrategy; + } +}); + +// ../../node_modules/.pnpm/passport@0.7.0/node_modules/passport/lib/sessionmanager.js +var require_sessionmanager = __commonJS({ + "../../node_modules/.pnpm/passport@0.7.0/node_modules/passport/lib/sessionmanager.js"(exports2, module2) { + var merge = require_utils_merge(); + function SessionManager(options, serializeUser) { + if (typeof options == "function") { + serializeUser = options; + options = void 0; + } + options = options || {}; + this._key = options.key || "passport"; + this._serializeUser = serializeUser; + } + SessionManager.prototype.logIn = function(req, user, options, cb) { + if (typeof options == "function") { + cb = options; + options = {}; + } + options = options || {}; + if (!req.session) { + return cb(new Error("Login sessions require session support. Did you forget to use `express-session` middleware?")); + } + var self2 = this; + var prevSession = req.session; + req.session.regenerate(function(err) { + if (err) { + return cb(err); + } + self2._serializeUser(user, req, function(err2, obj) { + if (err2) { + return cb(err2); + } + if (options.keepSessionInfo) { + merge(req.session, prevSession); + } + if (!req.session[self2._key]) { + req.session[self2._key] = {}; + } + req.session[self2._key].user = obj; + req.session.save(function(err3) { + if (err3) { + return cb(err3); + } + cb(); + }); + }); + }); + }; + SessionManager.prototype.logOut = function(req, options, cb) { + if (typeof options == "function") { + cb = options; + options = {}; + } + options = options || {}; + if (!req.session) { + return cb(new Error("Login sessions require session support. Did you forget to use `express-session` middleware?")); + } + var self2 = this; + if (req.session[this._key]) { + delete req.session[this._key].user; + } + var prevSession = req.session; + req.session.save(function(err) { + if (err) { + return cb(err); + } + req.session.regenerate(function(err2) { + if (err2) { + return cb(err2); + } + if (options.keepSessionInfo) { + merge(req.session, prevSession); + } + cb(); + }); + }); + }; + module2.exports = SessionManager; + } +}); + +// ../../node_modules/.pnpm/passport@0.7.0/node_modules/passport/lib/http/request.js +var require_request3 = __commonJS({ + "../../node_modules/.pnpm/passport@0.7.0/node_modules/passport/lib/http/request.js"(exports2, module2) { + var req = exports2 = module2.exports = {}; + req.login = req.logIn = function(user, options, done) { + if (typeof options == "function") { + done = options; + options = {}; + } + options = options || {}; + var property = this._userProperty || "user"; + var session = options.session === void 0 ? true : options.session; + this[property] = user; + if (session && this._sessionManager) { + if (typeof done != "function") { + throw new Error("req#login requires a callback function"); + } + var self2 = this; + this._sessionManager.logIn(this, user, options, function(err) { + if (err) { + self2[property] = null; + return done(err); + } + done(); + }); + } else { + done && done(); + } + }; + req.logout = req.logOut = function(options, done) { + if (typeof options == "function") { + done = options; + options = {}; + } + options = options || {}; + var property = this._userProperty || "user"; + this[property] = null; + if (this._sessionManager) { + if (typeof done != "function") { + throw new Error("req#logout requires a callback function"); + } + this._sessionManager.logOut(this, options, done); + } else { + done && done(); + } + }; + req.isAuthenticated = function() { + var property = this._userProperty || "user"; + return this[property] ? true : false; + }; + req.isUnauthenticated = function() { + return !this.isAuthenticated(); + }; + } +}); + +// ../../node_modules/.pnpm/passport@0.7.0/node_modules/passport/lib/middleware/initialize.js +var require_initialize = __commonJS({ + "../../node_modules/.pnpm/passport@0.7.0/node_modules/passport/lib/middleware/initialize.js"(exports2, module2) { + var IncomingMessageExt = require_request3(); + module2.exports = function initialize(passport, options) { + options = options || {}; + return function initialize2(req, res, next) { + req.login = req.logIn = req.logIn || IncomingMessageExt.logIn; + req.logout = req.logOut = req.logOut || IncomingMessageExt.logOut; + req.isAuthenticated = req.isAuthenticated || IncomingMessageExt.isAuthenticated; + req.isUnauthenticated = req.isUnauthenticated || IncomingMessageExt.isUnauthenticated; + req._sessionManager = passport._sm; + if (options.userProperty) { + req._userProperty = options.userProperty; + } + var compat = options.compat === void 0 ? true : options.compat; + if (compat) { + passport._userProperty = options.userProperty || "user"; + req._passport = {}; + req._passport.instance = passport; + } + next(); + }; + }; + } +}); + +// ../../node_modules/.pnpm/passport@0.7.0/node_modules/passport/lib/errors/authenticationerror.js +var require_authenticationerror = __commonJS({ + "../../node_modules/.pnpm/passport@0.7.0/node_modules/passport/lib/errors/authenticationerror.js"(exports2, module2) { + function AuthenticationError(message, status) { + Error.call(this); + Error.captureStackTrace(this, arguments.callee); + this.name = "AuthenticationError"; + this.message = message; + this.status = status || 401; + } + AuthenticationError.prototype.__proto__ = Error.prototype; + module2.exports = AuthenticationError; + } +}); + +// ../../node_modules/.pnpm/passport@0.7.0/node_modules/passport/lib/middleware/authenticate.js +var require_authenticate = __commonJS({ + "../../node_modules/.pnpm/passport@0.7.0/node_modules/passport/lib/middleware/authenticate.js"(exports2, module2) { + var http = require("http"); + var IncomingMessageExt = require_request3(); + var AuthenticationError = require_authenticationerror(); + module2.exports = function authenticate(passport, name, options, callback) { + if (typeof options == "function") { + callback = options; + options = {}; + } + options = options || {}; + var multi = true; + if (!Array.isArray(name)) { + name = [name]; + multi = false; + } + return function authenticate2(req, res, next) { + req.login = req.logIn = req.logIn || IncomingMessageExt.logIn; + req.logout = req.logOut = req.logOut || IncomingMessageExt.logOut; + req.isAuthenticated = req.isAuthenticated || IncomingMessageExt.isAuthenticated; + req.isUnauthenticated = req.isUnauthenticated || IncomingMessageExt.isUnauthenticated; + req._sessionManager = passport._sm; + var failures = []; + function allFailed() { + if (callback) { + if (!multi) { + return callback(null, false, failures[0].challenge, failures[0].status); + } else { + var challenges = failures.map(function(f) { + return f.challenge; + }); + var statuses = failures.map(function(f) { + return f.status; + }); + return callback(null, false, challenges, statuses); + } + } + var failure = failures[0] || {}, challenge = failure.challenge || {}, msg; + if (options.failureFlash) { + var flash = options.failureFlash; + if (typeof flash == "string") { + flash = { type: "error", message: flash }; + } + flash.type = flash.type || "error"; + var type = flash.type || challenge.type || "error"; + msg = flash.message || challenge.message || challenge; + if (typeof msg == "string") { + req.flash(type, msg); + } + } + if (options.failureMessage) { + msg = options.failureMessage; + if (typeof msg == "boolean") { + msg = challenge.message || challenge; + } + if (typeof msg == "string") { + req.session.messages = req.session.messages || []; + req.session.messages.push(msg); + } + } + if (options.failureRedirect) { + return res.redirect(options.failureRedirect); + } + var rchallenge = [], rstatus, status; + for (var j = 0, len = failures.length; j < len; j++) { + failure = failures[j]; + challenge = failure.challenge; + status = failure.status; + rstatus = rstatus || status; + if (typeof challenge == "string") { + rchallenge.push(challenge); + } + } + res.statusCode = rstatus || 401; + if (res.statusCode == 401 && rchallenge.length) { + res.setHeader("WWW-Authenticate", rchallenge); + } + if (options.failWithError) { + return next(new AuthenticationError(http.STATUS_CODES[res.statusCode], rstatus)); + } + res.end(http.STATUS_CODES[res.statusCode]); + } + (function attempt(i) { + var layer = name[i]; + if (!layer) { + return allFailed(); + } + var strategy, prototype; + if (typeof layer.authenticate == "function") { + strategy = layer; + } else { + prototype = passport._strategy(layer); + if (!prototype) { + return next(new Error('Unknown authentication strategy "' + layer + '"')); + } + strategy = Object.create(prototype); + } + strategy.success = function(user, info) { + if (callback) { + return callback(null, user, info); + } + info = info || {}; + var msg; + if (options.successFlash) { + var flash = options.successFlash; + if (typeof flash == "string") { + flash = { type: "success", message: flash }; + } + flash.type = flash.type || "success"; + var type = flash.type || info.type || "success"; + msg = flash.message || info.message || info; + if (typeof msg == "string") { + req.flash(type, msg); + } + } + if (options.successMessage) { + msg = options.successMessage; + if (typeof msg == "boolean") { + msg = info.message || info; + } + if (typeof msg == "string") { + req.session.messages = req.session.messages || []; + req.session.messages.push(msg); + } + } + if (options.assignProperty) { + req[options.assignProperty] = user; + if (options.authInfo !== false) { + passport.transformAuthInfo(info, req, function(err, tinfo) { + if (err) { + return next(err); + } + req.authInfo = tinfo; + next(); + }); + } else { + next(); + } + return; + } + req.logIn(user, options, function(err) { + if (err) { + return next(err); + } + function complete() { + if (options.successReturnToOrRedirect) { + var url = options.successReturnToOrRedirect; + if (req.session && req.session.returnTo) { + url = req.session.returnTo; + delete req.session.returnTo; + } + return res.redirect(url); + } + if (options.successRedirect) { + return res.redirect(options.successRedirect); + } + next(); + } + if (options.authInfo !== false) { + passport.transformAuthInfo(info, req, function(err2, tinfo) { + if (err2) { + return next(err2); + } + req.authInfo = tinfo; + complete(); + }); + } else { + complete(); + } + }); + }; + strategy.fail = function(challenge, status) { + if (typeof challenge == "number") { + status = challenge; + challenge = void 0; + } + failures.push({ challenge, status }); + attempt(i + 1); + }; + strategy.redirect = function(url, status) { + res.statusCode = status || 302; + res.setHeader("Location", url); + res.setHeader("Content-Length", "0"); + res.end(); + }; + strategy.pass = function() { + next(); + }; + strategy.error = function(err) { + if (callback) { + return callback(err); + } + next(err); + }; + strategy.authenticate(req, options); + })(0); + }; + }; + } +}); + +// ../../node_modules/.pnpm/passport@0.7.0/node_modules/passport/lib/framework/connect.js +var require_connect2 = __commonJS({ + "../../node_modules/.pnpm/passport@0.7.0/node_modules/passport/lib/framework/connect.js"(exports2, module2) { + var initialize = require_initialize(); + var authenticate = require_authenticate(); + exports2 = module2.exports = function() { + return { + initialize, + authenticate + }; + }; + } +}); + +// ../../node_modules/.pnpm/passport@0.7.0/node_modules/passport/lib/authenticator.js +var require_authenticator = __commonJS({ + "../../node_modules/.pnpm/passport@0.7.0/node_modules/passport/lib/authenticator.js"(exports2, module2) { + var SessionStrategy = require_session(); + var SessionManager = require_sessionmanager(); + function Authenticator() { + this._key = "passport"; + this._strategies = {}; + this._serializers = []; + this._deserializers = []; + this._infoTransformers = []; + this._framework = null; + this.init(); + } + Authenticator.prototype.init = function() { + this.framework(require_connect2()()); + this.use(new SessionStrategy({ key: this._key }, this.deserializeUser.bind(this))); + this._sm = new SessionManager({ key: this._key }, this.serializeUser.bind(this)); + }; + Authenticator.prototype.use = function(name, strategy) { + if (!strategy) { + strategy = name; + name = strategy.name; + } + if (!name) { + throw new Error("Authentication strategies must have a name"); + } + this._strategies[name] = strategy; + return this; + }; + Authenticator.prototype.unuse = function(name) { + delete this._strategies[name]; + return this; + }; + Authenticator.prototype.framework = function(fw) { + this._framework = fw; + return this; + }; + Authenticator.prototype.initialize = function(options) { + options = options || {}; + return this._framework.initialize(this, options); + }; + Authenticator.prototype.authenticate = function(strategy, options, callback) { + return this._framework.authenticate(this, strategy, options, callback); + }; + Authenticator.prototype.authorize = function(strategy, options, callback) { + options = options || {}; + options.assignProperty = "account"; + var fn = this._framework.authorize || this._framework.authenticate; + return fn(this, strategy, options, callback); + }; + Authenticator.prototype.session = function(options) { + return this.authenticate("session", options); + }; + Authenticator.prototype.serializeUser = function(fn, req, done) { + if (typeof fn === "function") { + return this._serializers.push(fn); + } + var user = fn; + if (typeof req === "function") { + done = req; + req = void 0; + } + var stack = this._serializers; + (function pass(i, err, obj) { + if ("pass" === err) { + err = void 0; + } + if (err || obj || obj === 0) { + return done(err, obj); + } + var layer = stack[i]; + if (!layer) { + return done(new Error("Failed to serialize user into session")); + } + function serialized(e, o) { + pass(i + 1, e, o); + } + try { + var arity = layer.length; + if (arity == 3) { + layer(req, user, serialized); + } else { + layer(user, serialized); + } + } catch (e) { + return done(e); + } + })(0); + }; + Authenticator.prototype.deserializeUser = function(fn, req, done) { + if (typeof fn === "function") { + return this._deserializers.push(fn); + } + var obj = fn; + if (typeof req === "function") { + done = req; + req = void 0; + } + var stack = this._deserializers; + (function pass(i, err, user) { + if ("pass" === err) { + err = void 0; + } + if (err || user) { + return done(err, user); + } + if (user === null || user === false) { + return done(null, false); + } + var layer = stack[i]; + if (!layer) { + return done(new Error("Failed to deserialize user out of session")); + } + function deserialized(e, u) { + pass(i + 1, e, u); + } + try { + var arity = layer.length; + if (arity == 3) { + layer(req, obj, deserialized); + } else { + layer(obj, deserialized); + } + } catch (e) { + return done(e); + } + })(0); + }; + Authenticator.prototype.transformAuthInfo = function(fn, req, done) { + if (typeof fn === "function") { + return this._infoTransformers.push(fn); + } + var info = fn; + if (typeof req === "function") { + done = req; + req = void 0; + } + var stack = this._infoTransformers; + (function pass(i, err, tinfo) { + if ("pass" === err) { + err = void 0; + } + if (err || tinfo) { + return done(err, tinfo); + } + var layer = stack[i]; + if (!layer) { + return done(null, info); + } + function transformed(e, t2) { + pass(i + 1, e, t2); + } + try { + var arity = layer.length; + if (arity == 1) { + var t = layer(info); + transformed(null, t); + } else if (arity == 3) { + layer(req, info, transformed); + } else { + layer(info, transformed); + } + } catch (e) { + return done(e); + } + })(0); + }; + Authenticator.prototype._strategy = function(name) { + return this._strategies[name]; + }; + module2.exports = Authenticator; + } +}); + +// ../../node_modules/.pnpm/passport@0.7.0/node_modules/passport/lib/index.js +var require_lib7 = __commonJS({ + "../../node_modules/.pnpm/passport@0.7.0/node_modules/passport/lib/index.js"(exports2, module2) { + var Passport = require_authenticator(); + var SessionStrategy = require_session(); + exports2 = module2.exports = new Passport(); + exports2.Passport = exports2.Authenticator = Passport; + exports2.Strategy = require_lib6(); + exports2.strategies = {}; + exports2.strategies.SessionStrategy = SessionStrategy; + } +}); + +// ../../node_modules/.pnpm/@nestjs+passport@10.0.3_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_ia6i3gv5hfockxefxn2psg2dxa/node_modules/@nestjs/passport/dist/interfaces/auth-module.options.js +var require_auth_module_options = __commonJS({ + "../../node_modules/.pnpm/@nestjs+passport@10.0.3_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_ia6i3gv5hfockxefxn2psg2dxa/node_modules/@nestjs/passport/dist/interfaces/auth-module.options.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AuthModuleOptions = void 0; + var AuthModuleOptions = class { + }; + exports2.AuthModuleOptions = AuthModuleOptions; + } +}); + +// ../../node_modules/.pnpm/@nestjs+passport@10.0.3_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_ia6i3gv5hfockxefxn2psg2dxa/node_modules/@nestjs/passport/dist/options.js +var require_options = __commonJS({ + "../../node_modules/.pnpm/@nestjs+passport@10.0.3_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_ia6i3gv5hfockxefxn2psg2dxa/node_modules/@nestjs/passport/dist/options.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.defaultOptions = void 0; + exports2.defaultOptions = { + session: false, + property: "user" + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+passport@10.0.3_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_ia6i3gv5hfockxefxn2psg2dxa/node_modules/@nestjs/passport/dist/utils/memoize.util.js +var require_memoize_util = __commonJS({ + "../../node_modules/.pnpm/@nestjs+passport@10.0.3_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_ia6i3gv5hfockxefxn2psg2dxa/node_modules/@nestjs/passport/dist/utils/memoize.util.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.memoize = void 0; + var defaultKey = "default"; + function memoize(fn) { + const cache = {}; + return (...args) => { + const n = args[0] || defaultKey; + if (n in cache) { + return cache[n]; + } else { + const result = fn(n === defaultKey ? void 0 : n); + cache[n] = result; + return result; + } + }; + } + exports2.memoize = memoize; + } +}); + +// ../../node_modules/.pnpm/@nestjs+passport@10.0.3_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_ia6i3gv5hfockxefxn2psg2dxa/node_modules/@nestjs/passport/dist/auth.guard.js +var require_auth_guard = __commonJS({ + "../../node_modules/.pnpm/@nestjs+passport@10.0.3_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_ia6i3gv5hfockxefxn2psg2dxa/node_modules/@nestjs/passport/dist/auth.guard.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var __param3 = exports2 && exports2.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AuthGuard = void 0; + var common_12 = require_common(); + var passport = require_lib7(); + var auth_module_options_1 = require_auth_module_options(); + var options_1 = require_options(); + var memoize_util_1 = require_memoize_util(); + exports2.AuthGuard = (0, memoize_util_1.memoize)(createAuthGuard); + var NO_STRATEGY_ERROR = `In order to use "defaultStrategy", please, ensure to import PassportModule in each place where AuthGuard() is being used. Otherwise, passport won't work correctly.`; + var authLogger = new common_12.Logger("AuthGuard"); + function createAuthGuard(type) { + let MixinAuthGuard = class MixinAuthGuard { + constructor(options) { + this.options = {}; + this.options = options ?? this.options; + if (!type && !this.options.defaultStrategy) { + authLogger.error(NO_STRATEGY_ERROR); + } + } + async canActivate(context) { + const options = { + ...options_1.defaultOptions, + ...this.options, + ...await this.getAuthenticateOptions(context) + }; + const [request, response] = [ + this.getRequest(context), + this.getResponse(context) + ]; + const passportFn = createPassportContext(request, response); + const user = await passportFn(type || this.options.defaultStrategy, options, (err, user2, info, status) => this.handleRequest(err, user2, info, context, status)); + request[options.property || options_1.defaultOptions.property] = user; + return true; + } + getRequest(context) { + return context.switchToHttp().getRequest(); + } + getResponse(context) { + return context.switchToHttp().getResponse(); + } + async logIn(request) { + const user = request[this.options.property || options_1.defaultOptions.property]; + await new Promise((resolve, reject) => request.logIn(user, this.options, (err) => err ? reject(err) : resolve())); + } + handleRequest(err, user, info, context, status) { + if (err || !user) { + throw err || new common_12.UnauthorizedException(); + } + return user; + } + getAuthenticateOptions(context) { + return void 0; + } + }; + __decorate4([ + (0, common_12.Optional)(), + (0, common_12.Inject)(auth_module_options_1.AuthModuleOptions), + __metadata3("design:type", auth_module_options_1.AuthModuleOptions) + ], MixinAuthGuard.prototype, "options", void 0); + MixinAuthGuard = __decorate4([ + __param3(0, (0, common_12.Optional)()), + __metadata3("design:paramtypes", [auth_module_options_1.AuthModuleOptions]) + ], MixinAuthGuard); + const guard = (0, common_12.mixin)(MixinAuthGuard); + return guard; + } + var createPassportContext = (request, response) => (type, options, callback) => new Promise((resolve, reject) => passport.authenticate(type, options, (err, user, info, status) => { + try { + request.authInfo = info; + return resolve(callback(err, user, info, status)); + } catch (err2) { + reject(err2); + } + })(request, response, (err) => err ? reject(err) : resolve())); + } +}); + +// ../../node_modules/.pnpm/@nestjs+passport@10.0.3_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_ia6i3gv5hfockxefxn2psg2dxa/node_modules/@nestjs/passport/dist/interfaces/type.interface.js +var require_type_interface2 = __commonJS({ + "../../node_modules/.pnpm/@nestjs+passport@10.0.3_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_ia6i3gv5hfockxefxn2psg2dxa/node_modules/@nestjs/passport/dist/interfaces/type.interface.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + } +}); + +// ../../node_modules/.pnpm/@nestjs+passport@10.0.3_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_ia6i3gv5hfockxefxn2psg2dxa/node_modules/@nestjs/passport/dist/interfaces/index.js +var require_interfaces7 = __commonJS({ + "../../node_modules/.pnpm/@nestjs+passport@10.0.3_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_ia6i3gv5hfockxefxn2psg2dxa/node_modules/@nestjs/passport/dist/interfaces/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + })); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_auth_module_options(), exports2); + __exportStar2(require_type_interface2(), exports2); + } +}); + +// ../../node_modules/.pnpm/@nestjs+passport@10.0.3_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_ia6i3gv5hfockxefxn2psg2dxa/node_modules/@nestjs/passport/dist/passport.module.js +var require_passport_module = __commonJS({ + "../../node_modules/.pnpm/@nestjs+passport@10.0.3_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_ia6i3gv5hfockxefxn2psg2dxa/node_modules/@nestjs/passport/dist/passport.module.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var PassportModule_1; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.PassportModule = void 0; + var common_12 = require_common(); + var auth_module_options_1 = require_auth_module_options(); + var PassportModule = exports2.PassportModule = PassportModule_1 = class PassportModule { + static register(options) { + return { + module: PassportModule_1, + providers: [{ provide: auth_module_options_1.AuthModuleOptions, useValue: options }], + exports: [auth_module_options_1.AuthModuleOptions] + }; + } + static registerAsync(options) { + return { + module: PassportModule_1, + imports: options.imports || [], + providers: this.createAsyncProviders(options), + exports: [auth_module_options_1.AuthModuleOptions] + }; + } + static createAsyncProviders(options) { + if (options.useExisting || options.useFactory) { + return [this.createAsyncOptionsProvider(options)]; + } + return [ + this.createAsyncOptionsProvider(options), + { + provide: options.useClass, + useClass: options.useClass + } + ]; + } + static createAsyncOptionsProvider(options) { + if (options.useFactory) { + return { + provide: auth_module_options_1.AuthModuleOptions, + useFactory: options.useFactory, + inject: options.inject || [] + }; + } + return { + provide: auth_module_options_1.AuthModuleOptions, + useFactory: async (optionsFactory) => await optionsFactory.createAuthOptions(), + inject: [options.useExisting || options.useClass] + }; + } + }; + exports2.PassportModule = PassportModule = PassportModule_1 = __decorate4([ + (0, common_12.Module)({}) + ], PassportModule); + } +}); + +// ../../node_modules/.pnpm/@nestjs+passport@10.0.3_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_ia6i3gv5hfockxefxn2psg2dxa/node_modules/@nestjs/passport/dist/passport/passport.serializer.js +var require_passport_serializer = __commonJS({ + "../../node_modules/.pnpm/@nestjs+passport@10.0.3_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_ia6i3gv5hfockxefxn2psg2dxa/node_modules/@nestjs/passport/dist/passport/passport.serializer.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.PassportSerializer = void 0; + var passport = require_lib7(); + var PassportSerializer = class { + constructor() { + const passportInstance = this.getPassportInstance(); + passportInstance.serializeUser((user, done) => this.serializeUser(user, done)); + passportInstance.deserializeUser((payload, done) => this.deserializeUser(payload, done)); + } + getPassportInstance() { + return passport; + } + }; + exports2.PassportSerializer = PassportSerializer; + } +}); + +// ../../node_modules/.pnpm/@nestjs+passport@10.0.3_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_ia6i3gv5hfockxefxn2psg2dxa/node_modules/@nestjs/passport/dist/passport/passport.strategy.js +var require_passport_strategy = __commonJS({ + "../../node_modules/.pnpm/@nestjs+passport@10.0.3_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_ia6i3gv5hfockxefxn2psg2dxa/node_modules/@nestjs/passport/dist/passport/passport.strategy.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.PassportStrategy = void 0; + var passport = require_lib7(); + function PassportStrategy(Strategy, name, callbackArity) { + class MixinStrategy extends Strategy { + constructor(...args) { + const callback = async (...params) => { + const done = params[params.length - 1]; + try { + const validateResult = await this.validate(...params); + if (Array.isArray(validateResult)) { + done(null, ...validateResult); + } else { + done(null, validateResult); + } + } catch (err) { + done(err, null); + } + }; + if (callbackArity !== void 0) { + const validate = new.target?.prototype?.validate; + const arity = callbackArity === true ? validate.length + 1 : callbackArity; + if (validate) { + Object.defineProperty(callback, "length", { + value: arity + }); + } + } + super(...args, callback); + const passportInstance = this.getPassportInstance(); + if (name) { + passportInstance.use(name, this); + } else { + passportInstance.use(this); + } + } + getPassportInstance() { + return passport; + } + } + return MixinStrategy; + } + exports2.PassportStrategy = PassportStrategy; + } +}); + +// ../../node_modules/.pnpm/@nestjs+passport@10.0.3_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_ia6i3gv5hfockxefxn2psg2dxa/node_modules/@nestjs/passport/dist/index.js +var require_dist2 = __commonJS({ + "../../node_modules/.pnpm/@nestjs+passport@10.0.3_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_ia6i3gv5hfockxefxn2psg2dxa/node_modules/@nestjs/passport/dist/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + })); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_abstract_strategy(), exports2); + __exportStar2(require_auth_guard(), exports2); + __exportStar2(require_interfaces7(), exports2); + __exportStar2(require_passport_module(), exports2); + __exportStar2(require_passport_serializer(), exports2); + __exportStar2(require_passport_strategy(), exports2); + } +}); + +// ../../node_modules/.pnpm/@nestjs+passport@10.0.3_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_ia6i3gv5hfockxefxn2psg2dxa/node_modules/@nestjs/passport/index.js +var require_passport = __commonJS({ + "../../node_modules/.pnpm/@nestjs+passport@10.0.3_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_ia6i3gv5hfockxefxn2psg2dxa/node_modules/@nestjs/passport/index.js"(exports2) { + "use strict"; + function __export2(m) { + for (var p in m) if (!exports2.hasOwnProperty(p)) exports2[p] = m[p]; + } + exports2.__esModule = true; + __export2(require_dist2()); + } +}); + +// dist/modules/auth/guards.js +var require_guards2 = __commonJS({ + "dist/modules/auth/guards.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.PermissionsGuard = exports2.JwtAuthGuard = exports2.CurrentAdmin = exports2.RequirePermission = exports2.REQUIRED_RID_KEY = exports2.Public = exports2.IS_PUBLIC_KEY = void 0; + var common_12 = require_common(); + var passport_1 = require_passport(); + var core_12 = require_core3(); + exports2.IS_PUBLIC_KEY = "isPublic"; + var Public = () => (0, common_12.SetMetadata)(exports2.IS_PUBLIC_KEY, true); + exports2.Public = Public; + exports2.REQUIRED_RID_KEY = "requiredRid"; + var RequirePermission = (rid) => (0, common_12.SetMetadata)(exports2.REQUIRED_RID_KEY, rid); + exports2.RequirePermission = RequirePermission; + exports2.CurrentAdmin = (0, common_12.createParamDecorator)((_data, ctx) => ctx.switchToHttp().getRequest().user); + var JwtAuthGuard = class JwtAuthGuard extends (0, passport_1.AuthGuard)("jwt") { + reflector; + constructor(reflector) { + super(); + this.reflector = reflector; + } + canActivate(context) { + const isPublic = this.reflector.getAllAndOverride(exports2.IS_PUBLIC_KEY, [ + context.getHandler(), + context.getClass() + ]); + if (isPublic) + return true; + return super.canActivate(context); + } + }; + exports2.JwtAuthGuard = JwtAuthGuard; + exports2.JwtAuthGuard = JwtAuthGuard = __decorate4([ + (0, common_12.Injectable)(), + __metadata3("design:paramtypes", [core_12.Reflector]) + ], JwtAuthGuard); + var PermissionsGuard = class PermissionsGuard { + reflector; + constructor(reflector) { + this.reflector = reflector; + } + canActivate(context) { + const requiredRid = this.reflector.getAllAndOverride(exports2.REQUIRED_RID_KEY, [ + context.getHandler(), + context.getClass() + ]); + if (!requiredRid) + return true; + const user = context.switchToHttp().getRequest().user; + if (!user) + throw new common_12.ForbiddenException(); + if (!user.permissions.includes(requiredRid)) { + throw new common_12.ForbiddenException(`Missing permission: ${requiredRid}`); + } + return true; + } + }; + exports2.PermissionsGuard = PermissionsGuard; + exports2.PermissionsGuard = PermissionsGuard = __decorate4([ + (0, common_12.Injectable)(), + __metadata3("design:paramtypes", [core_12.Reflector]) + ], PermissionsGuard); + } +}); + // dist/modules/catalog/catalog.controller.js var require_catalog_controller = __commonJS({ "dist/modules/catalog/catalog.controller.js"(exports2) { "use strict"; - var __decorate2 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; - var __metadata2 = exports2 && exports2.__metadata || function(k, v) { + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.CatalogController = void 0; var common_12 = require_common(); var catalog_service_1 = require_catalog_service(); + var guards_1 = require_guards2(); var CatalogController = class CatalogController { catalog; constructor(catalog) { @@ -76318,15 +77454,16 @@ var require_catalog_controller = __commonJS({ } }; exports2.CatalogController = CatalogController; - __decorate2([ + __decorate4([ (0, common_12.Get)(), - __metadata2("design:type", Function), - __metadata2("design:paramtypes", []), - __metadata2("design:returntype", void 0) + __metadata3("design:type", Function), + __metadata3("design:paramtypes", []), + __metadata3("design:returntype", void 0) ], CatalogController.prototype, "list", null); - exports2.CatalogController = CatalogController = __decorate2([ + exports2.CatalogController = CatalogController = __decorate4([ + (0, guards_1.Public)(), (0, common_12.Controller)("catalog/products"), - __metadata2("design:paramtypes", [catalog_service_1.CatalogService]) + __metadata3("design:paramtypes", [catalog_service_1.CatalogService]) ], CatalogController); } }); @@ -76335,7 +77472,7 @@ var require_catalog_controller = __commonJS({ var require_catalog_module = __commonJS({ "dist/modules/catalog/catalog.module.js"(exports2) { "use strict"; - var __decorate2 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; @@ -76349,7 +77486,7 @@ var require_catalog_module = __commonJS({ var CatalogModule = class CatalogModule { }; exports2.CatalogModule = CatalogModule; - exports2.CatalogModule = CatalogModule = __decorate2([ + exports2.CatalogModule = CatalogModule = __decorate4([ (0, common_12.Module)({ controllers: [catalog_controller_1.CatalogController], providers: [catalog_service_1.CatalogService], @@ -76363,13 +77500,13 @@ var require_catalog_module = __commonJS({ var require_customers_service = __commonJS({ "dist/modules/customers/customers.service.js"(exports2) { "use strict"; - var __decorate2 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; - var __metadata2 = exports2 && exports2.__metadata || function(k, v) { + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports2, "__esModule", { value: true }); @@ -76429,9 +77566,9 @@ var require_customers_service = __commonJS({ } }; exports2.CustomersService = CustomersService; - exports2.CustomersService = CustomersService = __decorate2([ + exports2.CustomersService = CustomersService = __decorate4([ (0, common_12.Injectable)(), - __metadata2("design:paramtypes", [prisma_service_1.PrismaService]) + __metadata3("design:paramtypes", [prisma_service_1.PrismaService]) ], CustomersService); } }); @@ -76440,16 +77577,16 @@ var require_customers_service = __commonJS({ var require_customers_controller = __commonJS({ "dist/modules/customers/customers.controller.js"(exports2) { "use strict"; - var __decorate2 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; - var __metadata2 = exports2 && exports2.__metadata || function(k, v) { + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; - var __param2 = exports2 && exports2.__param || function(paramIndex, decorator) { + var __param3 = exports2 && exports2.__param || function(paramIndex, decorator) { return function(target, key) { decorator(target, key, paramIndex); }; @@ -76458,6 +77595,7 @@ var require_customers_controller = __commonJS({ exports2.CustomersController = void 0; var common_12 = require_common(); var customers_service_1 = require_customers_service(); + var guards_1 = require_guards2(); var CustomersController = class CustomersController { customers; constructor(customers) { @@ -76477,36 +77615,37 @@ var require_customers_controller = __commonJS({ } }; exports2.CustomersController = CustomersController; - __decorate2([ + __decorate4([ (0, common_12.Get)(), - __metadata2("design:type", Function), - __metadata2("design:paramtypes", []), - __metadata2("design:returntype", void 0) + __metadata3("design:type", Function), + __metadata3("design:paramtypes", []), + __metadata3("design:returntype", void 0) ], CustomersController.prototype, "list", null); - __decorate2([ + __decorate4([ (0, common_12.Get)(":id"), - __param2(0, (0, common_12.Param)("id")), - __metadata2("design:type", Function), - __metadata2("design:paramtypes", [String]), - __metadata2("design:returntype", void 0) + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) ], CustomersController.prototype, "get", null); - __decorate2([ + __decorate4([ (0, common_12.Get)(":id/orders"), - __param2(0, (0, common_12.Param)("id")), - __metadata2("design:type", Function), - __metadata2("design:paramtypes", [String]), - __metadata2("design:returntype", void 0) + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) ], CustomersController.prototype, "getOrders", null); - __decorate2([ + __decorate4([ (0, common_12.Get)(":id/ledger-entries"), - __param2(0, (0, common_12.Param)("id")), - __metadata2("design:type", Function), - __metadata2("design:paramtypes", [String]), - __metadata2("design:returntype", void 0) + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) ], CustomersController.prototype, "getLedgerEntries", null); - exports2.CustomersController = CustomersController = __decorate2([ + exports2.CustomersController = CustomersController = __decorate4([ + (0, guards_1.Public)(), (0, common_12.Controller)("customers"), - __metadata2("design:paramtypes", [customers_service_1.CustomersService]) + __metadata3("design:paramtypes", [customers_service_1.CustomersService]) ], CustomersController); } }); @@ -76515,7 +77654,7 @@ var require_customers_controller = __commonJS({ var require_customers_module = __commonJS({ "dist/modules/customers/customers.module.js"(exports2) { "use strict"; - var __decorate2 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; @@ -76529,7 +77668,7 @@ var require_customers_module = __commonJS({ var CustomersModule = class CustomersModule { }; exports2.CustomersModule = CustomersModule; - exports2.CustomersModule = CustomersModule = __decorate2([ + exports2.CustomersModule = CustomersModule = __decorate4([ (0, common_12.Module)({ controllers: [customers_controller_1.CustomersController], providers: [customers_service_1.CustomersService], @@ -76540,7 +77679,7 @@ var require_customers_module = __commonJS({ }); // ../../packages/shared-types/dist/index.js -var require_dist2 = __commonJS({ +var require_dist3 = __commonJS({ "../../packages/shared-types/dist/index.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); @@ -76595,20 +77734,20 @@ var require_dist2 = __commonJS({ var require_ledger_service = __commonJS({ "dist/modules/accounting/ledger.service.js"(exports2) { "use strict"; - var __decorate2 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; - var __metadata2 = exports2 && exports2.__metadata || function(k, v) { + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.LedgerService = void 0; var common_12 = require_common(); var client_1 = require("@prisma/client"); - var shared_types_1 = require_dist2(); + var shared_types_1 = require_dist3(); var prisma_service_1 = require_prisma_service(); var LedgerService = class LedgerService { prisma; @@ -76832,9 +77971,9 @@ var require_ledger_service = __commonJS({ } }; exports2.LedgerService = LedgerService; - exports2.LedgerService = LedgerService = __decorate2([ + exports2.LedgerService = LedgerService = __decorate4([ (0, common_12.Injectable)(), - __metadata2("design:paramtypes", [prisma_service_1.PrismaService]) + __metadata3("design:paramtypes", [prisma_service_1.PrismaService]) ], LedgerService); } }); @@ -76843,13 +77982,13 @@ var require_ledger_service = __commonJS({ var require_orders_service = __commonJS({ "dist/modules/orders/orders.service.js"(exports2) { "use strict"; - var __decorate2 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; - var __metadata2 = exports2 && exports2.__metadata || function(k, v) { + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports2, "__esModule", { value: true }); @@ -76907,6 +78046,7 @@ var require_orders_service = __commonJS({ orderNumber: this.generateOrderNumber(), customerId: dto.customerId, branchId: dto.branchId, + channel: dto.channel ?? client_1.OrderChannel.RETAIL, status: initialStatus, totalGoldWeightGrams, wageWeightGrams, @@ -76965,9 +78105,9 @@ var require_orders_service = __commonJS({ } }; exports2.OrdersService = OrdersService; - exports2.OrdersService = OrdersService = __decorate2([ + exports2.OrdersService = OrdersService = __decorate4([ (0, common_12.Injectable)(), - __metadata2("design:paramtypes", [ + __metadata3("design:paramtypes", [ prisma_service_1.PrismaService, catalog_service_1.CatalogService, ledger_service_1.LedgerService @@ -76980,18 +78120,19 @@ var require_orders_service = __commonJS({ var require_create_order_dto = __commonJS({ "dist/modules/orders/dto/create-order.dto.js"(exports2) { "use strict"; - var __decorate2 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; - var __metadata2 = exports2 && exports2.__metadata || function(k, v) { + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.CreateOrderDto = exports2.CreateOrderItemInputDto = void 0; var class_transformer_1 = require_cjs2(); + var client_1 = require("@prisma/client"); var class_validator_1 = require_cjs(); var CreateOrderItemInputDto = class { productVariantId; @@ -77003,50 +78144,61 @@ var require_create_order_dto = __commonJS({ flatRialCharge; }; exports2.CreateOrderItemInputDto = CreateOrderItemInputDto; - __decorate2([ + __decorate4([ (0, class_validator_1.IsString)(), - __metadata2("design:type", String) + __metadata3("design:type", String) ], CreateOrderItemInputDto.prototype, "productVariantId", void 0); - __decorate2([ + __decorate4([ (0, class_validator_1.IsInt)(), (0, class_validator_1.Min)(1), - __metadata2("design:type", Number) + __metadata3("design:type", Number) ], CreateOrderItemInputDto.prototype, "quantity", void 0); - __decorate2([ + __decorate4([ (0, class_validator_1.IsNumber)(), - __metadata2("design:type", Number) + __metadata3("design:type", Number) ], CreateOrderItemInputDto.prototype, "wagePercent", void 0); - __decorate2([ + __decorate4([ (0, class_validator_1.IsOptional)(), (0, class_validator_1.IsNumber)(), - __metadata2("design:type", Number) + __metadata3("design:type", Number) ], CreateOrderItemInputDto.prototype, "discountPercent", void 0); - __decorate2([ + __decorate4([ (0, class_validator_1.IsOptional)(), (0, class_validator_1.IsNumber)(), - __metadata2("design:type", Number) + __metadata3("design:type", Number) ], CreateOrderItemInputDto.prototype, "flatRialCharge", void 0); var CreateOrderDto = class { customerId; branchId; + /** + * Which sales channel placed the order. Legacy had no such field because the + * two channels lived in separate tables (orders vs orders_orders); the one + * Order model carries the distinction here. Defaults to RETAIL. + */ + channel; items; }; exports2.CreateOrderDto = CreateOrderDto; - __decorate2([ + __decorate4([ (0, class_validator_1.IsString)(), - __metadata2("design:type", String) + __metadata3("design:type", String) ], CreateOrderDto.prototype, "customerId", void 0); - __decorate2([ + __decorate4([ (0, class_validator_1.IsOptional)(), (0, class_validator_1.IsString)(), - __metadata2("design:type", String) + __metadata3("design:type", String) ], CreateOrderDto.prototype, "branchId", void 0); - __decorate2([ + __decorate4([ + (0, class_validator_1.IsOptional)(), + (0, class_validator_1.IsEnum)(client_1.OrderChannel), + __metadata3("design:type", String) + ], CreateOrderDto.prototype, "channel", void 0); + __decorate4([ (0, class_validator_1.IsArray)(), (0, class_validator_1.ArrayMinSize)(1), (0, class_validator_1.ValidateNested)({ each: true }), (0, class_transformer_1.Type)(() => CreateOrderItemInputDto), - __metadata2("design:type", Array) + __metadata3("design:type", Array) ], CreateOrderDto.prototype, "items", void 0); } }); @@ -77055,13 +78207,13 @@ var require_create_order_dto = __commonJS({ var require_update_order_status_dto = __commonJS({ "dist/modules/orders/dto/update-order-status.dto.js"(exports2) { "use strict"; - var __decorate2 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; - var __metadata2 = exports2 && exports2.__metadata || function(k, v) { + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports2, "__esModule", { value: true }); @@ -77074,19 +78226,19 @@ var require_update_order_status_dto = __commonJS({ actorAdminUserId; }; exports2.UpdateOrderStatusDto = UpdateOrderStatusDto; - __decorate2([ + __decorate4([ (0, class_validator_1.IsEnum)(client_1.OrderStatus), - __metadata2("design:type", String) + __metadata3("design:type", String) ], UpdateOrderStatusDto.prototype, "status", void 0); - __decorate2([ + __decorate4([ (0, class_validator_1.IsOptional)(), (0, class_validator_1.IsString)(), - __metadata2("design:type", String) + __metadata3("design:type", String) ], UpdateOrderStatusDto.prototype, "note", void 0); - __decorate2([ + __decorate4([ (0, class_validator_1.IsOptional)(), (0, class_validator_1.IsString)(), - __metadata2("design:type", String) + __metadata3("design:type", String) ], UpdateOrderStatusDto.prototype, "actorAdminUserId", void 0); } }); @@ -77095,16 +78247,16 @@ var require_update_order_status_dto = __commonJS({ var require_orders_controller = __commonJS({ "dist/modules/orders/orders.controller.js"(exports2) { "use strict"; - var __decorate2 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; - var __metadata2 = exports2 && exports2.__metadata || function(k, v) { + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; - var __param2 = exports2 && exports2.__param || function(paramIndex, decorator) { + var __param3 = exports2 && exports2.__param || function(paramIndex, decorator) { return function(target, key) { decorator(target, key, paramIndex); }; @@ -77115,6 +78267,7 @@ var require_orders_controller = __commonJS({ var orders_service_1 = require_orders_service(); var create_order_dto_1 = require_create_order_dto(); var update_order_status_dto_1 = require_update_order_status_dto(); + var guards_1 = require_guards2(); var OrdersController = class OrdersController { orders; constructor(orders) { @@ -77131,31 +78284,32 @@ var require_orders_controller = __commonJS({ } }; exports2.OrdersController = OrdersController; - __decorate2([ + __decorate4([ (0, common_12.Post)(), - __param2(0, (0, common_12.Body)()), - __metadata2("design:type", Function), - __metadata2("design:paramtypes", [create_order_dto_1.CreateOrderDto]), - __metadata2("design:returntype", void 0) + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [create_order_dto_1.CreateOrderDto]), + __metadata3("design:returntype", void 0) ], OrdersController.prototype, "create", null); - __decorate2([ + __decorate4([ (0, common_12.Get)(":id"), - __param2(0, (0, common_12.Param)("id")), - __metadata2("design:type", Function), - __metadata2("design:paramtypes", [String]), - __metadata2("design:returntype", void 0) + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) ], OrdersController.prototype, "get", null); - __decorate2([ + __decorate4([ (0, common_12.Patch)(":id/status"), - __param2(0, (0, common_12.Param)("id")), - __param2(1, (0, common_12.Body)()), - __metadata2("design:type", Function), - __metadata2("design:paramtypes", [String, update_order_status_dto_1.UpdateOrderStatusDto]), - __metadata2("design:returntype", void 0) + __param3(0, (0, common_12.Param)("id")), + __param3(1, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String, update_order_status_dto_1.UpdateOrderStatusDto]), + __metadata3("design:returntype", void 0) ], OrdersController.prototype, "updateStatus", null); - exports2.OrdersController = OrdersController = __decorate2([ + exports2.OrdersController = OrdersController = __decorate4([ + (0, guards_1.Public)(), (0, common_12.Controller)("orders"), - __metadata2("design:paramtypes", [orders_service_1.OrdersService]) + __metadata3("design:paramtypes", [orders_service_1.OrdersService]) ], OrdersController); } }); @@ -77164,13 +78318,13 @@ var require_orders_controller = __commonJS({ var require_post_gold_repayment_dto = __commonJS({ "dist/modules/accounting/dto/post-gold-repayment.dto.js"(exports2) { "use strict"; - var __decorate2 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; - var __metadata2 = exports2 && exports2.__metadata || function(k, v) { + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports2, "__esModule", { value: true }); @@ -77185,34 +78339,34 @@ var require_post_gold_repayment_dto = __commonJS({ note; }; exports2.PostGoldRepaymentDto = PostGoldRepaymentDto; - __decorate2([ + __decorate4([ (0, class_validator_1.IsString)(), - __metadata2("design:type", String) + __metadata3("design:type", String) ], PostGoldRepaymentDto.prototype, "customerId", void 0); - __decorate2([ + __decorate4([ (0, class_validator_1.IsIn)(["MELTED_GOLD", "TRANSFER", "CHEQUE", "CASH"]), - __metadata2("design:type", String) + __metadata3("design:type", String) ], PostGoldRepaymentDto.prototype, "instrument", void 0); - __decorate2([ + __decorate4([ (0, class_validator_1.IsNumber)(), (0, class_validator_1.IsPositive)(), - __metadata2("design:type", Number) + __metadata3("design:type", Number) ], PostGoldRepaymentDto.prototype, "rawValue", void 0); - __decorate2([ + __decorate4([ (0, class_validator_1.IsOptional)(), (0, class_validator_1.IsNumber)(), - __metadata2("design:type", Number) + __metadata3("design:type", Number) ], PostGoldRepaymentDto.prototype, "karatPerMille", void 0); - __decorate2([ + __decorate4([ (0, class_validator_1.IsOptional)(), (0, class_validator_1.IsNumber)(), (0, class_validator_1.IsPositive)(), - __metadata2("design:type", Number) + __metadata3("design:type", Number) ], PostGoldRepaymentDto.prototype, "pricePerGramRial", void 0); - __decorate2([ + __decorate4([ (0, class_validator_1.IsOptional)(), (0, class_validator_1.IsString)(), - __metadata2("design:type", String) + __metadata3("design:type", String) ], PostGoldRepaymentDto.prototype, "note", void 0); } }); @@ -77221,13 +78375,13 @@ var require_post_gold_repayment_dto = __commonJS({ var require_post_rial_repayment_dto = __commonJS({ "dist/modules/accounting/dto/post-rial-repayment.dto.js"(exports2) { "use strict"; - var __decorate2 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; - var __metadata2 = exports2 && exports2.__metadata || function(k, v) { + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports2, "__esModule", { value: true }); @@ -77239,19 +78393,19 @@ var require_post_rial_repayment_dto = __commonJS({ note; }; exports2.PostRialRepaymentDto = PostRialRepaymentDto; - __decorate2([ + __decorate4([ (0, class_validator_1.IsString)(), - __metadata2("design:type", String) + __metadata3("design:type", String) ], PostRialRepaymentDto.prototype, "customerId", void 0); - __decorate2([ + __decorate4([ (0, class_validator_1.IsNumber)(), (0, class_validator_1.IsPositive)(), - __metadata2("design:type", Number) + __metadata3("design:type", Number) ], PostRialRepaymentDto.prototype, "amount", void 0); - __decorate2([ + __decorate4([ (0, class_validator_1.IsOptional)(), (0, class_validator_1.IsString)(), - __metadata2("design:type", String) + __metadata3("design:type", String) ], PostRialRepaymentDto.prototype, "note", void 0); } }); @@ -77260,16 +78414,16 @@ var require_post_rial_repayment_dto = __commonJS({ var require_accounting_controller = __commonJS({ "dist/modules/accounting/accounting.controller.js"(exports2) { "use strict"; - var __decorate2 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; - var __metadata2 = exports2 && exports2.__metadata || function(k, v) { + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; - var __param2 = exports2 && exports2.__param || function(paramIndex, decorator) { + var __param3 = exports2 && exports2.__param || function(paramIndex, decorator) { return function(target, key) { decorator(target, key, paramIndex); }; @@ -77280,6 +78434,7 @@ var require_accounting_controller = __commonJS({ var ledger_service_1 = require_ledger_service(); var post_gold_repayment_dto_1 = require_post_gold_repayment_dto(); var post_rial_repayment_dto_1 = require_post_rial_repayment_dto(); + var guards_1 = require_guards2(); var AccountingController = class AccountingController { ledger; constructor(ledger) { @@ -77302,44 +78457,45 @@ var require_accounting_controller = __commonJS({ } }; exports2.AccountingController = AccountingController; - __decorate2([ + __decorate4([ (0, common_12.Get)("customers/:customerId/balance"), - __param2(0, (0, common_12.Param)("customerId")), - __metadata2("design:type", Function), - __metadata2("design:paramtypes", [String]), - __metadata2("design:returntype", void 0) + __param3(0, (0, common_12.Param)("customerId")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) ], AccountingController.prototype, "getBalance", null); - __decorate2([ + __decorate4([ (0, common_12.Post)("customers/:customerId/reconcile"), - __param2(0, (0, common_12.Param)("customerId")), - __metadata2("design:type", Function), - __metadata2("design:paramtypes", [String]), - __metadata2("design:returntype", void 0) + __param3(0, (0, common_12.Param)("customerId")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) ], AccountingController.prototype, "reconcile", null); - __decorate2([ + __decorate4([ (0, common_12.Post)("repayments/gold"), - __param2(0, (0, common_12.Body)()), - __metadata2("design:type", Function), - __metadata2("design:paramtypes", [post_gold_repayment_dto_1.PostGoldRepaymentDto]), - __metadata2("design:returntype", void 0) + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [post_gold_repayment_dto_1.PostGoldRepaymentDto]), + __metadata3("design:returntype", void 0) ], AccountingController.prototype, "postGoldRepayment", null); - __decorate2([ + __decorate4([ (0, common_12.Post)("repayments/rial"), - __param2(0, (0, common_12.Body)()), - __metadata2("design:type", Function), - __metadata2("design:paramtypes", [post_rial_repayment_dto_1.PostRialRepaymentDto]), - __metadata2("design:returntype", void 0) + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [post_rial_repayment_dto_1.PostRialRepaymentDto]), + __metadata3("design:returntype", void 0) ], AccountingController.prototype, "postRialRepayment", null); - __decorate2([ + __decorate4([ (0, common_12.Post)("entries/:entryId/confirm"), - __param2(0, (0, common_12.Param)("entryId")), - __metadata2("design:type", Function), - __metadata2("design:paramtypes", [String]), - __metadata2("design:returntype", void 0) + __param3(0, (0, common_12.Param)("entryId")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) ], AccountingController.prototype, "confirmEntry", null); - exports2.AccountingController = AccountingController = __decorate2([ + exports2.AccountingController = AccountingController = __decorate4([ + (0, guards_1.Public)(), (0, common_12.Controller)("accounting"), - __metadata2("design:paramtypes", [ledger_service_1.LedgerService]) + __metadata3("design:paramtypes", [ledger_service_1.LedgerService]) ], AccountingController); } }); @@ -77348,7 +78504,7 @@ var require_accounting_controller = __commonJS({ var require_accounting_module = __commonJS({ "dist/modules/accounting/accounting.module.js"(exports2) { "use strict"; - var __decorate2 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; @@ -77362,7 +78518,7 @@ var require_accounting_module = __commonJS({ var AccountingModule = class AccountingModule { }; exports2.AccountingModule = AccountingModule; - exports2.AccountingModule = AccountingModule = __decorate2([ + exports2.AccountingModule = AccountingModule = __decorate4([ (0, common_12.Module)({ controllers: [accounting_controller_1.AccountingController], providers: [ledger_service_1.LedgerService], @@ -77376,7 +78532,7 @@ var require_accounting_module = __commonJS({ var require_orders_module = __commonJS({ "dist/modules/orders/orders.module.js"(exports2) { "use strict"; - var __decorate2 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; @@ -77392,7 +78548,7 @@ var require_orders_module = __commonJS({ var OrdersModule = class OrdersModule { }; exports2.OrdersModule = OrdersModule; - exports2.OrdersModule = OrdersModule = __decorate2([ + exports2.OrdersModule = OrdersModule = __decorate4([ (0, common_12.Module)({ imports: [catalog_module_1.CatalogModule, accounting_module_1.AccountingModule], controllers: [orders_controller_1.OrdersController], @@ -77407,13 +78563,13 @@ var require_orders_module = __commonJS({ var require_pricing_service = __commonJS({ "dist/modules/pricing/pricing.service.js"(exports2) { "use strict"; - var __decorate2 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; - var __metadata2 = exports2 && exports2.__metadata || function(k, v) { + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports2, "__esModule", { value: true }); @@ -77441,9 +78597,9 @@ var require_pricing_service = __commonJS({ } }; exports2.PricingService = PricingService; - exports2.PricingService = PricingService = __decorate2([ + exports2.PricingService = PricingService = __decorate4([ (0, common_12.Injectable)(), - __metadata2("design:paramtypes", [prisma_service_1.PrismaService]) + __metadata3("design:paramtypes", [prisma_service_1.PrismaService]) ], PricingService); } }); @@ -77452,16 +78608,16 @@ var require_pricing_service = __commonJS({ var require_pricing_controller = __commonJS({ "dist/modules/pricing/pricing.controller.js"(exports2) { "use strict"; - var __decorate2 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; - var __metadata2 = exports2 && exports2.__metadata || function(k, v) { + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; - var __param2 = exports2 && exports2.__param || function(paramIndex, decorator) { + var __param3 = exports2 && exports2.__param || function(paramIndex, decorator) { return function(target, key) { decorator(target, key, paramIndex); }; @@ -77470,6 +78626,7 @@ var require_pricing_controller = __commonJS({ exports2.PricingController = void 0; var common_12 = require_common(); var pricing_service_1 = require_pricing_service(); + var guards_1 = require_guards2(); var PricingController = class PricingController { pricing; constructor(pricing) { @@ -77480,16 +78637,17 @@ var require_pricing_controller = __commonJS({ } }; exports2.PricingController = PricingController; - __decorate2([ + __decorate4([ (0, common_12.Get)("latest"), - __param2(0, (0, common_12.Query)("karatPerMille")), - __metadata2("design:type", Function), - __metadata2("design:paramtypes", [String]), - __metadata2("design:returntype", void 0) + __param3(0, (0, common_12.Query)("karatPerMille")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) ], PricingController.prototype, "getLatest", null); - exports2.PricingController = PricingController = __decorate2([ + exports2.PricingController = PricingController = __decorate4([ + (0, guards_1.Public)(), (0, common_12.Controller)("pricing"), - __metadata2("design:paramtypes", [pricing_service_1.PricingService]) + __metadata3("design:paramtypes", [pricing_service_1.PricingService]) ], PricingController); } }); @@ -77498,7 +78656,7 @@ var require_pricing_controller = __commonJS({ var require_pricing_module = __commonJS({ "dist/modules/pricing/pricing.module.js"(exports2) { "use strict"; - var __decorate2 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; @@ -77512,7 +78670,7 @@ var require_pricing_module = __commonJS({ var PricingModule = class PricingModule { }; exports2.PricingModule = PricingModule; - exports2.PricingModule = PricingModule = __decorate2([ + exports2.PricingModule = PricingModule = __decorate4([ (0, common_12.Module)({ controllers: [pricing_controller_1.PricingController], providers: [pricing_service_1.PricingService], @@ -77522,11 +78680,14199 @@ var require_pricing_module = __commonJS({ } }); +// ../../node_modules/.pnpm/jws@4.0.1/node_modules/jws/lib/data-stream.js +var require_data_stream = __commonJS({ + "../../node_modules/.pnpm/jws@4.0.1/node_modules/jws/lib/data-stream.js"(exports2, module2) { + var Buffer2 = require_safe_buffer().Buffer; + var Stream = require("stream"); + var util2 = require("util"); + function DataStream(data) { + this.buffer = null; + this.writable = true; + this.readable = true; + if (!data) { + this.buffer = Buffer2.alloc(0); + return this; + } + if (typeof data.pipe === "function") { + this.buffer = Buffer2.alloc(0); + data.pipe(this); + return this; + } + if (data.length || typeof data === "object") { + this.buffer = data; + this.writable = false; + process.nextTick(function() { + this.emit("end", data); + this.readable = false; + this.emit("close"); + }.bind(this)); + return this; + } + throw new TypeError("Unexpected data type (" + typeof data + ")"); + } + util2.inherits(DataStream, Stream); + DataStream.prototype.write = function write(data) { + this.buffer = Buffer2.concat([this.buffer, Buffer2.from(data)]); + this.emit("data", data); + }; + DataStream.prototype.end = function end(data) { + if (data) + this.write(data); + this.emit("end", data); + this.emit("close"); + this.writable = false; + this.readable = false; + }; + module2.exports = DataStream; + } +}); + +// ../../node_modules/.pnpm/ecdsa-sig-formatter@1.0.11/node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js +var require_param_bytes_for_alg = __commonJS({ + "../../node_modules/.pnpm/ecdsa-sig-formatter@1.0.11/node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js"(exports2, module2) { + "use strict"; + function getParamSize(keySize) { + var result = (keySize / 8 | 0) + (keySize % 8 === 0 ? 0 : 1); + return result; + } + var paramBytesForAlg = { + ES256: getParamSize(256), + ES384: getParamSize(384), + ES512: getParamSize(521) + }; + function getParamBytesForAlg(alg) { + var paramBytes = paramBytesForAlg[alg]; + if (paramBytes) { + return paramBytes; + } + throw new Error('Unknown algorithm "' + alg + '"'); + } + module2.exports = getParamBytesForAlg; + } +}); + +// ../../node_modules/.pnpm/ecdsa-sig-formatter@1.0.11/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js +var require_ecdsa_sig_formatter = __commonJS({ + "../../node_modules/.pnpm/ecdsa-sig-formatter@1.0.11/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js"(exports2, module2) { + "use strict"; + var Buffer2 = require_safe_buffer().Buffer; + var getParamBytesForAlg = require_param_bytes_for_alg(); + var MAX_OCTET = 128; + var CLASS_UNIVERSAL = 0; + var PRIMITIVE_BIT = 32; + var TAG_SEQ = 16; + var TAG_INT = 2; + var ENCODED_TAG_SEQ = TAG_SEQ | PRIMITIVE_BIT | CLASS_UNIVERSAL << 6; + var ENCODED_TAG_INT = TAG_INT | CLASS_UNIVERSAL << 6; + function base64Url(base64) { + return base64.replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"); + } + function signatureAsBuffer(signature) { + if (Buffer2.isBuffer(signature)) { + return signature; + } else if ("string" === typeof signature) { + return Buffer2.from(signature, "base64"); + } + throw new TypeError("ECDSA signature must be a Base64 string or a Buffer"); + } + function derToJose(signature, alg) { + signature = signatureAsBuffer(signature); + var paramBytes = getParamBytesForAlg(alg); + var maxEncodedParamLength = paramBytes + 1; + var inputLength = signature.length; + var offset = 0; + if (signature[offset++] !== ENCODED_TAG_SEQ) { + throw new Error('Could not find expected "seq"'); + } + var seqLength = signature[offset++]; + if (seqLength === (MAX_OCTET | 1)) { + seqLength = signature[offset++]; + } + if (inputLength - offset < seqLength) { + throw new Error('"seq" specified length of "' + seqLength + '", only "' + (inputLength - offset) + '" remaining'); + } + if (signature[offset++] !== ENCODED_TAG_INT) { + throw new Error('Could not find expected "int" for "r"'); + } + var rLength = signature[offset++]; + if (inputLength - offset - 2 < rLength) { + throw new Error('"r" specified length of "' + rLength + '", only "' + (inputLength - offset - 2) + '" available'); + } + if (maxEncodedParamLength < rLength) { + throw new Error('"r" specified length of "' + rLength + '", max of "' + maxEncodedParamLength + '" is acceptable'); + } + var rOffset = offset; + offset += rLength; + if (signature[offset++] !== ENCODED_TAG_INT) { + throw new Error('Could not find expected "int" for "s"'); + } + var sLength = signature[offset++]; + if (inputLength - offset !== sLength) { + throw new Error('"s" specified length of "' + sLength + '", expected "' + (inputLength - offset) + '"'); + } + if (maxEncodedParamLength < sLength) { + throw new Error('"s" specified length of "' + sLength + '", max of "' + maxEncodedParamLength + '" is acceptable'); + } + var sOffset = offset; + offset += sLength; + if (offset !== inputLength) { + throw new Error('Expected to consume entire buffer, but "' + (inputLength - offset) + '" bytes remain'); + } + var rPadding = paramBytes - rLength, sPadding = paramBytes - sLength; + var dst = Buffer2.allocUnsafe(rPadding + rLength + sPadding + sLength); + for (offset = 0; offset < rPadding; ++offset) { + dst[offset] = 0; + } + signature.copy(dst, offset, rOffset + Math.max(-rPadding, 0), rOffset + rLength); + offset = paramBytes; + for (var o = offset; offset < o + sPadding; ++offset) { + dst[offset] = 0; + } + signature.copy(dst, offset, sOffset + Math.max(-sPadding, 0), sOffset + sLength); + dst = dst.toString("base64"); + dst = base64Url(dst); + return dst; + } + function countPadding(buf, start, stop) { + var padding = 0; + while (start + padding < stop && buf[start + padding] === 0) { + ++padding; + } + var needsSign = buf[start + padding] >= MAX_OCTET; + if (needsSign) { + --padding; + } + return padding; + } + function joseToDer(signature, alg) { + signature = signatureAsBuffer(signature); + var paramBytes = getParamBytesForAlg(alg); + var signatureBytes = signature.length; + if (signatureBytes !== paramBytes * 2) { + throw new TypeError('"' + alg + '" signatures must be "' + paramBytes * 2 + '" bytes, saw "' + signatureBytes + '"'); + } + var rPadding = countPadding(signature, 0, paramBytes); + var sPadding = countPadding(signature, paramBytes, signature.length); + var rLength = paramBytes - rPadding; + var sLength = paramBytes - sPadding; + var rsBytes = 1 + 1 + rLength + 1 + 1 + sLength; + var shortLength = rsBytes < MAX_OCTET; + var dst = Buffer2.allocUnsafe((shortLength ? 2 : 3) + rsBytes); + var offset = 0; + dst[offset++] = ENCODED_TAG_SEQ; + if (shortLength) { + dst[offset++] = rsBytes; + } else { + dst[offset++] = MAX_OCTET | 1; + dst[offset++] = rsBytes & 255; + } + dst[offset++] = ENCODED_TAG_INT; + dst[offset++] = rLength; + if (rPadding < 0) { + dst[offset++] = 0; + offset += signature.copy(dst, offset, 0, paramBytes); + } else { + offset += signature.copy(dst, offset, rPadding, paramBytes); + } + dst[offset++] = ENCODED_TAG_INT; + dst[offset++] = sLength; + if (sPadding < 0) { + dst[offset++] = 0; + signature.copy(dst, offset, paramBytes); + } else { + signature.copy(dst, offset, paramBytes + sPadding); + } + return dst; + } + module2.exports = { + derToJose, + joseToDer + }; + } +}); + +// ../../node_modules/.pnpm/buffer-equal-constant-time@1.0.1/node_modules/buffer-equal-constant-time/index.js +var require_buffer_equal_constant_time = __commonJS({ + "../../node_modules/.pnpm/buffer-equal-constant-time@1.0.1/node_modules/buffer-equal-constant-time/index.js"(exports2, module2) { + "use strict"; + var Buffer2 = require("buffer").Buffer; + var SlowBuffer = require("buffer").SlowBuffer; + module2.exports = bufferEq; + function bufferEq(a, b) { + if (!Buffer2.isBuffer(a) || !Buffer2.isBuffer(b)) { + return false; + } + if (a.length !== b.length) { + return false; + } + var c = 0; + for (var i = 0; i < a.length; i++) { + c |= a[i] ^ b[i]; + } + return c === 0; + } + bufferEq.install = function() { + Buffer2.prototype.equal = SlowBuffer.prototype.equal = function equal(that) { + return bufferEq(this, that); + }; + }; + var origBufEqual = Buffer2.prototype.equal; + var origSlowBufEqual = SlowBuffer.prototype.equal; + bufferEq.restore = function() { + Buffer2.prototype.equal = origBufEqual; + SlowBuffer.prototype.equal = origSlowBufEqual; + }; + } +}); + +// ../../node_modules/.pnpm/jwa@2.0.1/node_modules/jwa/index.js +var require_jwa = __commonJS({ + "../../node_modules/.pnpm/jwa@2.0.1/node_modules/jwa/index.js"(exports2, module2) { + var Buffer2 = require_safe_buffer().Buffer; + var crypto2 = require("crypto"); + var formatEcdsa = require_ecdsa_sig_formatter(); + var util2 = require("util"); + var MSG_INVALID_ALGORITHM = '"%s" is not a valid algorithm.\n Supported algorithms are:\n "HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "PS256", "PS384", "PS512", "ES256", "ES384", "ES512" and "none".'; + var MSG_INVALID_SECRET = "secret must be a string or buffer"; + var MSG_INVALID_VERIFIER_KEY = "key must be a string or a buffer"; + var MSG_INVALID_SIGNER_KEY = "key must be a string, a buffer or an object"; + var supportsKeyObjects = typeof crypto2.createPublicKey === "function"; + if (supportsKeyObjects) { + MSG_INVALID_VERIFIER_KEY += " or a KeyObject"; + MSG_INVALID_SECRET += "or a KeyObject"; + } + function checkIsPublicKey(key) { + if (Buffer2.isBuffer(key)) { + return; + } + if (typeof key === "string") { + return; + } + if (!supportsKeyObjects) { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + if (typeof key !== "object") { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + if (typeof key.type !== "string") { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + if (typeof key.asymmetricKeyType !== "string") { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + if (typeof key.export !== "function") { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + } + function checkIsPrivateKey(key) { + if (Buffer2.isBuffer(key)) { + return; + } + if (typeof key === "string") { + return; + } + if (typeof key === "object") { + return; + } + throw typeError(MSG_INVALID_SIGNER_KEY); + } + function checkIsSecretKey(key) { + if (Buffer2.isBuffer(key)) { + return; + } + if (typeof key === "string") { + return key; + } + if (!supportsKeyObjects) { + throw typeError(MSG_INVALID_SECRET); + } + if (typeof key !== "object") { + throw typeError(MSG_INVALID_SECRET); + } + if (key.type !== "secret") { + throw typeError(MSG_INVALID_SECRET); + } + if (typeof key.export !== "function") { + throw typeError(MSG_INVALID_SECRET); + } + } + function fromBase64(base64) { + return base64.replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"); + } + function toBase64(base64url) { + base64url = base64url.toString(); + var padding = 4 - base64url.length % 4; + if (padding !== 4) { + for (var i = 0; i < padding; ++i) { + base64url += "="; + } + } + return base64url.replace(/\-/g, "+").replace(/_/g, "/"); + } + function typeError(template) { + var args = [].slice.call(arguments, 1); + var errMsg = util2.format.bind(util2, template).apply(null, args); + return new TypeError(errMsg); + } + function bufferOrString(obj) { + return Buffer2.isBuffer(obj) || typeof obj === "string"; + } + function normalizeInput(thing) { + if (!bufferOrString(thing)) + thing = JSON.stringify(thing); + return thing; + } + function createHmacSigner(bits) { + return function sign(thing, secret) { + checkIsSecretKey(secret); + thing = normalizeInput(thing); + var hmac = crypto2.createHmac("sha" + bits, secret); + var sig = (hmac.update(thing), hmac.digest("base64")); + return fromBase64(sig); + }; + } + var bufferEqual; + var timingSafeEqual = "timingSafeEqual" in crypto2 ? function timingSafeEqual2(a, b) { + if (a.byteLength !== b.byteLength) { + return false; + } + return crypto2.timingSafeEqual(a, b); + } : function timingSafeEqual2(a, b) { + if (!bufferEqual) { + bufferEqual = require_buffer_equal_constant_time(); + } + return bufferEqual(a, b); + }; + function createHmacVerifier(bits) { + return function verify(thing, signature, secret) { + var computedSig = createHmacSigner(bits)(thing, secret); + return timingSafeEqual(Buffer2.from(signature), Buffer2.from(computedSig)); + }; + } + function createKeySigner(bits) { + return function sign(thing, privateKey) { + checkIsPrivateKey(privateKey); + thing = normalizeInput(thing); + var signer = crypto2.createSign("RSA-SHA" + bits); + var sig = (signer.update(thing), signer.sign(privateKey, "base64")); + return fromBase64(sig); + }; + } + function createKeyVerifier(bits) { + return function verify(thing, signature, publicKey) { + checkIsPublicKey(publicKey); + thing = normalizeInput(thing); + signature = toBase64(signature); + var verifier = crypto2.createVerify("RSA-SHA" + bits); + verifier.update(thing); + return verifier.verify(publicKey, signature, "base64"); + }; + } + function createPSSKeySigner(bits) { + return function sign(thing, privateKey) { + checkIsPrivateKey(privateKey); + thing = normalizeInput(thing); + var signer = crypto2.createSign("RSA-SHA" + bits); + var sig = (signer.update(thing), signer.sign({ + key: privateKey, + padding: crypto2.constants.RSA_PKCS1_PSS_PADDING, + saltLength: crypto2.constants.RSA_PSS_SALTLEN_DIGEST + }, "base64")); + return fromBase64(sig); + }; + } + function createPSSKeyVerifier(bits) { + return function verify(thing, signature, publicKey) { + checkIsPublicKey(publicKey); + thing = normalizeInput(thing); + signature = toBase64(signature); + var verifier = crypto2.createVerify("RSA-SHA" + bits); + verifier.update(thing); + return verifier.verify({ + key: publicKey, + padding: crypto2.constants.RSA_PKCS1_PSS_PADDING, + saltLength: crypto2.constants.RSA_PSS_SALTLEN_DIGEST + }, signature, "base64"); + }; + } + function createECDSASigner(bits) { + var inner = createKeySigner(bits); + return function sign() { + var signature = inner.apply(null, arguments); + signature = formatEcdsa.derToJose(signature, "ES" + bits); + return signature; + }; + } + function createECDSAVerifer(bits) { + var inner = createKeyVerifier(bits); + return function verify(thing, signature, publicKey) { + signature = formatEcdsa.joseToDer(signature, "ES" + bits).toString("base64"); + var result = inner(thing, signature, publicKey); + return result; + }; + } + function createNoneSigner() { + return function sign() { + return ""; + }; + } + function createNoneVerifier() { + return function verify(thing, signature) { + return signature === ""; + }; + } + module2.exports = function jwa(algorithm) { + var signerFactories = { + hs: createHmacSigner, + rs: createKeySigner, + ps: createPSSKeySigner, + es: createECDSASigner, + none: createNoneSigner + }; + var verifierFactories = { + hs: createHmacVerifier, + rs: createKeyVerifier, + ps: createPSSKeyVerifier, + es: createECDSAVerifer, + none: createNoneVerifier + }; + var match = algorithm.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/); + if (!match) + throw typeError(MSG_INVALID_ALGORITHM, algorithm); + var algo = (match[1] || match[3]).toLowerCase(); + var bits = match[2]; + return { + sign: signerFactories[algo](bits), + verify: verifierFactories[algo](bits) + }; + }; + } +}); + +// ../../node_modules/.pnpm/jws@4.0.1/node_modules/jws/lib/tostring.js +var require_tostring = __commonJS({ + "../../node_modules/.pnpm/jws@4.0.1/node_modules/jws/lib/tostring.js"(exports2, module2) { + var Buffer2 = require("buffer").Buffer; + module2.exports = function toString2(obj) { + if (typeof obj === "string") + return obj; + if (typeof obj === "number" || Buffer2.isBuffer(obj)) + return obj.toString(); + return JSON.stringify(obj); + }; + } +}); + +// ../../node_modules/.pnpm/jws@4.0.1/node_modules/jws/lib/sign-stream.js +var require_sign_stream = __commonJS({ + "../../node_modules/.pnpm/jws@4.0.1/node_modules/jws/lib/sign-stream.js"(exports2, module2) { + var Buffer2 = require_safe_buffer().Buffer; + var DataStream = require_data_stream(); + var jwa = require_jwa(); + var Stream = require("stream"); + var toString2 = require_tostring(); + var util2 = require("util"); + function base64url(string, encoding) { + return Buffer2.from(string, encoding).toString("base64").replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"); + } + function jwsSecuredInput(header, payload, encoding) { + encoding = encoding || "utf8"; + var encodedHeader = base64url(toString2(header), "binary"); + var encodedPayload = base64url(toString2(payload), encoding); + return util2.format("%s.%s", encodedHeader, encodedPayload); + } + function jwsSign(opts) { + var header = opts.header; + var payload = opts.payload; + var secretOrKey = opts.secret || opts.privateKey; + var encoding = opts.encoding; + var algo = jwa(header.alg); + var securedInput = jwsSecuredInput(header, payload, encoding); + var signature = algo.sign(securedInput, secretOrKey); + return util2.format("%s.%s", securedInput, signature); + } + function SignStream(opts) { + var secret = opts.secret; + secret = secret == null ? opts.privateKey : secret; + secret = secret == null ? opts.key : secret; + if (/^hs/i.test(opts.header.alg) === true && secret == null) { + throw new TypeError("secret must be a string or buffer or a KeyObject"); + } + var secretStream = new DataStream(secret); + this.readable = true; + this.header = opts.header; + this.encoding = opts.encoding; + this.secret = this.privateKey = this.key = secretStream; + this.payload = new DataStream(opts.payload); + this.secret.once("close", function() { + if (!this.payload.writable && this.readable) + this.sign(); + }.bind(this)); + this.payload.once("close", function() { + if (!this.secret.writable && this.readable) + this.sign(); + }.bind(this)); + } + util2.inherits(SignStream, Stream); + SignStream.prototype.sign = function sign() { + try { + var signature = jwsSign({ + header: this.header, + payload: this.payload.buffer, + secret: this.secret.buffer, + encoding: this.encoding + }); + this.emit("done", signature); + this.emit("data", signature); + this.emit("end"); + this.readable = false; + return signature; + } catch (e) { + this.readable = false; + this.emit("error", e); + this.emit("close"); + } + }; + SignStream.sign = jwsSign; + module2.exports = SignStream; + } +}); + +// ../../node_modules/.pnpm/jws@4.0.1/node_modules/jws/lib/verify-stream.js +var require_verify_stream = __commonJS({ + "../../node_modules/.pnpm/jws@4.0.1/node_modules/jws/lib/verify-stream.js"(exports2, module2) { + var Buffer2 = require_safe_buffer().Buffer; + var DataStream = require_data_stream(); + var jwa = require_jwa(); + var Stream = require("stream"); + var toString2 = require_tostring(); + var util2 = require("util"); + var JWS_REGEX = /^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.([a-zA-Z0-9\-_]+)?$/; + function isObject(thing) { + return Object.prototype.toString.call(thing) === "[object Object]"; + } + function safeJsonParse(thing) { + if (isObject(thing)) + return thing; + try { + return JSON.parse(thing); + } catch (e) { + return void 0; + } + } + function headerFromJWS(jwsSig) { + var encodedHeader = jwsSig.split(".", 1)[0]; + return safeJsonParse(Buffer2.from(encodedHeader, "base64").toString("binary")); + } + function securedInputFromJWS(jwsSig) { + return jwsSig.split(".", 2).join("."); + } + function signatureFromJWS(jwsSig) { + return jwsSig.split(".")[2]; + } + function payloadFromJWS(jwsSig, encoding) { + encoding = encoding || "utf8"; + var payload = jwsSig.split(".")[1]; + return Buffer2.from(payload, "base64").toString(encoding); + } + function isValidJws(string) { + return JWS_REGEX.test(string) && !!headerFromJWS(string); + } + function jwsVerify(jwsSig, algorithm, secretOrKey) { + if (!algorithm) { + var err = new Error("Missing algorithm parameter for jws.verify"); + err.code = "MISSING_ALGORITHM"; + throw err; + } + jwsSig = toString2(jwsSig); + var signature = signatureFromJWS(jwsSig); + var securedInput = securedInputFromJWS(jwsSig); + var algo = jwa(algorithm); + return algo.verify(securedInput, signature, secretOrKey); + } + function jwsDecode(jwsSig, opts) { + opts = opts || {}; + jwsSig = toString2(jwsSig); + if (!isValidJws(jwsSig)) + return null; + var header = headerFromJWS(jwsSig); + if (!header) + return null; + var payload = payloadFromJWS(jwsSig); + if (header.typ === "JWT" || opts.json) + payload = JSON.parse(payload, opts.encoding); + return { + header, + payload, + signature: signatureFromJWS(jwsSig) + }; + } + function VerifyStream(opts) { + opts = opts || {}; + var secretOrKey = opts.secret; + secretOrKey = secretOrKey == null ? opts.publicKey : secretOrKey; + secretOrKey = secretOrKey == null ? opts.key : secretOrKey; + if (/^hs/i.test(opts.algorithm) === true && secretOrKey == null) { + throw new TypeError("secret must be a string or buffer or a KeyObject"); + } + var secretStream = new DataStream(secretOrKey); + this.readable = true; + this.algorithm = opts.algorithm; + this.encoding = opts.encoding; + this.secret = this.publicKey = this.key = secretStream; + this.signature = new DataStream(opts.signature); + this.secret.once("close", function() { + if (!this.signature.writable && this.readable) + this.verify(); + }.bind(this)); + this.signature.once("close", function() { + if (!this.secret.writable && this.readable) + this.verify(); + }.bind(this)); + } + util2.inherits(VerifyStream, Stream); + VerifyStream.prototype.verify = function verify() { + try { + var valid = jwsVerify(this.signature.buffer, this.algorithm, this.key.buffer); + var obj = jwsDecode(this.signature.buffer, this.encoding); + this.emit("done", valid, obj); + this.emit("data", valid); + this.emit("end"); + this.readable = false; + return valid; + } catch (e) { + this.readable = false; + this.emit("error", e); + this.emit("close"); + } + }; + VerifyStream.decode = jwsDecode; + VerifyStream.isValid = isValidJws; + VerifyStream.verify = jwsVerify; + module2.exports = VerifyStream; + } +}); + +// ../../node_modules/.pnpm/jws@4.0.1/node_modules/jws/index.js +var require_jws = __commonJS({ + "../../node_modules/.pnpm/jws@4.0.1/node_modules/jws/index.js"(exports2) { + var SignStream = require_sign_stream(); + var VerifyStream = require_verify_stream(); + var ALGORITHMS = [ + "HS256", + "HS384", + "HS512", + "RS256", + "RS384", + "RS512", + "PS256", + "PS384", + "PS512", + "ES256", + "ES384", + "ES512" + ]; + exports2.ALGORITHMS = ALGORITHMS; + exports2.sign = SignStream.sign; + exports2.verify = VerifyStream.verify; + exports2.decode = VerifyStream.decode; + exports2.isValid = VerifyStream.isValid; + exports2.createSign = function createSign(opts) { + return new SignStream(opts); + }; + exports2.createVerify = function createVerify(opts) { + return new VerifyStream(opts); + }; + } +}); + +// ../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/decode.js +var require_decode = __commonJS({ + "../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/decode.js"(exports2, module2) { + var jws = require_jws(); + module2.exports = function(jwt, options) { + options = options || {}; + var decoded = jws.decode(jwt, options); + if (!decoded) { + return null; + } + var payload = decoded.payload; + if (typeof payload === "string") { + try { + var obj = JSON.parse(payload); + if (obj !== null && typeof obj === "object") { + payload = obj; + } + } catch (e) { + } + } + if (options.complete === true) { + return { + header: decoded.header, + payload, + signature: decoded.signature + }; + } + return payload; + }; + } +}); + +// ../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/JsonWebTokenError.js +var require_JsonWebTokenError = __commonJS({ + "../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/JsonWebTokenError.js"(exports2, module2) { + var JsonWebTokenError2 = function(message, error) { + Error.call(this, message); + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + this.name = "JsonWebTokenError"; + this.message = message; + if (error) this.inner = error; + }; + JsonWebTokenError2.prototype = Object.create(Error.prototype); + JsonWebTokenError2.prototype.constructor = JsonWebTokenError2; + module2.exports = JsonWebTokenError2; + } +}); + +// ../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/NotBeforeError.js +var require_NotBeforeError = __commonJS({ + "../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/NotBeforeError.js"(exports2, module2) { + var JsonWebTokenError2 = require_JsonWebTokenError(); + var NotBeforeError2 = function(message, date) { + JsonWebTokenError2.call(this, message); + this.name = "NotBeforeError"; + this.date = date; + }; + NotBeforeError2.prototype = Object.create(JsonWebTokenError2.prototype); + NotBeforeError2.prototype.constructor = NotBeforeError2; + module2.exports = NotBeforeError2; + } +}); + +// ../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/TokenExpiredError.js +var require_TokenExpiredError = __commonJS({ + "../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/TokenExpiredError.js"(exports2, module2) { + var JsonWebTokenError2 = require_JsonWebTokenError(); + var TokenExpiredError2 = function(message, expiredAt) { + JsonWebTokenError2.call(this, message); + this.name = "TokenExpiredError"; + this.expiredAt = expiredAt; + }; + TokenExpiredError2.prototype = Object.create(JsonWebTokenError2.prototype); + TokenExpiredError2.prototype.constructor = TokenExpiredError2; + module2.exports = TokenExpiredError2; + } +}); + +// ../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/timespan.js +var require_timespan = __commonJS({ + "../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/timespan.js"(exports2, module2) { + var ms = require_ms2(); + module2.exports = function(time, iat) { + var timestamp = iat || Math.floor(Date.now() / 1e3); + if (typeof time === "string") { + var milliseconds = ms(time); + if (typeof milliseconds === "undefined") { + return; + } + return Math.floor(timestamp + milliseconds / 1e3); + } else if (typeof time === "number") { + return timestamp + time; + } else { + return; + } + }; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/constants.js +var require_constants8 = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/constants.js"(exports2, module2) { + "use strict"; + var SEMVER_SPEC_VERSION = "2.0.0"; + var MAX_LENGTH = 256; + var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */ + 9007199254740991; + var MAX_SAFE_COMPONENT_LENGTH = 16; + var MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6; + var RELEASE_TYPES = [ + "major", + "premajor", + "minor", + "preminor", + "patch", + "prepatch", + "prerelease" + ]; + module2.exports = { + MAX_LENGTH, + MAX_SAFE_COMPONENT_LENGTH, + MAX_SAFE_BUILD_LENGTH, + MAX_SAFE_INTEGER, + RELEASE_TYPES, + SEMVER_SPEC_VERSION, + FLAG_INCLUDE_PRERELEASE: 1, + FLAG_LOOSE: 2 + }; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/debug.js +var require_debug2 = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/debug.js"(exports2, module2) { + "use strict"; + var debug = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => { + }; + module2.exports = debug; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/re.js +var require_re = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/re.js"(exports2, module2) { + "use strict"; + var { + MAX_SAFE_COMPONENT_LENGTH, + MAX_SAFE_BUILD_LENGTH, + MAX_LENGTH + } = require_constants8(); + var debug = require_debug2(); + exports2 = module2.exports = {}; + var re = exports2.re = []; + var safeRe = exports2.safeRe = []; + var src = exports2.src = []; + var safeSrc = exports2.safeSrc = []; + var t = exports2.t = {}; + var R = 0; + var LETTERDASHNUMBER = "[a-zA-Z0-9-]"; + var safeRegexReplacements = [ + ["\\s", 1], + ["\\d", MAX_LENGTH], + [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH] + ]; + var makeSafeRegex = (value) => { + for (const [token, max] of safeRegexReplacements) { + value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`); + } + return value; + }; + var createToken = (name, value, isGlobal) => { + const safe = makeSafeRegex(value); + const index = R++; + debug(name, index, value); + t[name] = index; + src[index] = value; + safeSrc[index] = safe; + re[index] = new RegExp(value, isGlobal ? "g" : void 0); + safeRe[index] = new RegExp(safe, isGlobal ? "g" : void 0); + }; + createToken("NUMERICIDENTIFIER", "0|[1-9]\\d*"); + createToken("NUMERICIDENTIFIERLOOSE", "\\d+"); + createToken("NONNUMERICIDENTIFIER", `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`); + createToken("MAINVERSION", `(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})`); + createToken("MAINVERSIONLOOSE", `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})`); + createToken("PRERELEASEIDENTIFIER", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIER]})`); + createToken("PRERELEASEIDENTIFIERLOOSE", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIERLOOSE]})`); + createToken("PRERELEASE", `(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`); + createToken("PRERELEASELOOSE", `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`); + createToken("BUILDIDENTIFIER", `${LETTERDASHNUMBER}+`); + createToken("BUILD", `(?:\\+(${src[t.BUILDIDENTIFIER]}(?:\\.${src[t.BUILDIDENTIFIER]})*))`); + createToken("FULLPLAIN", `v?${src[t.MAINVERSION]}${src[t.PRERELEASE]}?${src[t.BUILD]}?`); + createToken("FULL", `^${src[t.FULLPLAIN]}$`); + createToken("LOOSEPLAIN", `[v=\\s]*${src[t.MAINVERSIONLOOSE]}${src[t.PRERELEASELOOSE]}?${src[t.BUILD]}?`); + createToken("LOOSE", `^${src[t.LOOSEPLAIN]}$`); + createToken("GTLT", "((?:<|>)?=?)"); + createToken("XRANGEIDENTIFIERLOOSE", `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`); + createToken("XRANGEIDENTIFIER", `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`); + createToken("XRANGEPLAIN", `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:${src[t.PRERELEASE]})?${src[t.BUILD]}?)?)?`); + createToken("XRANGEPLAINLOOSE", `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?)?)?`); + createToken("XRANGE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`); + createToken("XRANGELOOSE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`); + createToken("COERCEPLAIN", `${"(^|[^\\d])(\\d{1,"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`); + createToken("COERCE", `${src[t.COERCEPLAIN]}(?:$|[^\\d])`); + createToken("COERCEFULL", src[t.COERCEPLAIN] + `(?:${src[t.PRERELEASE]})?(?:${src[t.BUILD]})?(?:$|[^\\d])`); + createToken("COERCERTL", src[t.COERCE], true); + createToken("COERCERTLFULL", src[t.COERCEFULL], true); + createToken("LONETILDE", "(?:~>?)"); + createToken("TILDETRIM", `(\\s*)${src[t.LONETILDE]}\\s+`, true); + exports2.tildeTrimReplace = "$1~"; + createToken("TILDE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`); + createToken("TILDELOOSE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`); + createToken("LONECARET", "(?:\\^)"); + createToken("CARETTRIM", `(\\s*)${src[t.LONECARET]}\\s+`, true); + exports2.caretTrimReplace = "$1^"; + createToken("CARET", `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`); + createToken("CARETLOOSE", `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`); + createToken("COMPARATORLOOSE", `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`); + createToken("COMPARATOR", `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`); + createToken("COMPARATORTRIM", `(\\s*)${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true); + exports2.comparatorTrimReplace = "$1$2$3"; + createToken("HYPHENRANGE", `^\\s*(${src[t.XRANGEPLAIN]})\\s+-\\s+(${src[t.XRANGEPLAIN]})\\s*$`); + createToken("HYPHENRANGELOOSE", `^\\s*(${src[t.XRANGEPLAINLOOSE]})\\s+-\\s+(${src[t.XRANGEPLAINLOOSE]})\\s*$`); + createToken("STAR", "(<|>)?=?\\s*\\*"); + createToken("GTE0", "^\\s*>=\\s*0\\.0\\.0\\s*$"); + createToken("GTE0PRE", "^\\s*>=\\s*0\\.0\\.0-0\\s*$"); + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/parse-options.js +var require_parse_options = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/parse-options.js"(exports2, module2) { + "use strict"; + var looseOption = Object.freeze({ loose: true }); + var emptyOpts = Object.freeze({}); + var parseOptions = (options) => { + if (!options) { + return emptyOpts; + } + if (typeof options !== "object") { + return looseOption; + } + return options; + }; + module2.exports = parseOptions; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/identifiers.js +var require_identifiers = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/identifiers.js"(exports2, module2) { + "use strict"; + var numeric = /^[0-9]+$/; + var compareIdentifiers = (a, b) => { + if (typeof a === "number" && typeof b === "number") { + return a === b ? 0 : a < b ? -1 : 1; + } + const anum = numeric.test(a); + const bnum = numeric.test(b); + if (anum && bnum) { + a = +a; + b = +b; + } + return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1; + }; + var rcompareIdentifiers = (a, b) => compareIdentifiers(b, a); + module2.exports = { + compareIdentifiers, + rcompareIdentifiers + }; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/semver.js +var require_semver = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/semver.js"(exports2, module2) { + "use strict"; + var debug = require_debug2(); + var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants8(); + var { safeRe: re, t } = require_re(); + var parseOptions = require_parse_options(); + var { compareIdentifiers } = require_identifiers(); + var isPrereleaseIdentifier = (prerelease, identifier) => { + const identifiers = identifier.split("."); + if (identifiers.length > prerelease.length) { + return false; + } + for (let i = 0; i < identifiers.length; i++) { + if (compareIdentifiers(prerelease[i], identifiers[i]) !== 0) { + return false; + } + } + return true; + }; + var SemVer = class _SemVer { + constructor(version, options) { + options = parseOptions(options); + if (version instanceof _SemVer) { + if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) { + return version; + } else { + version = version.version; + } + } else if (typeof version !== "string") { + throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`); + } + if (version.length > MAX_LENGTH) { + throw new TypeError( + `version is longer than ${MAX_LENGTH} characters` + ); + } + debug("SemVer", version, options); + this.options = options; + this.loose = !!options.loose; + this.includePrerelease = !!options.includePrerelease; + const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]); + if (!m) { + throw new TypeError(`Invalid Version: ${version}`); + } + this.raw = version; + this.major = +m[1]; + this.minor = +m[2]; + this.patch = +m[3]; + if (this.major > MAX_SAFE_INTEGER || this.major < 0) { + throw new TypeError("Invalid major version"); + } + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { + throw new TypeError("Invalid minor version"); + } + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { + throw new TypeError("Invalid patch version"); + } + if (!m[4]) { + this.prerelease = []; + } else { + this.prerelease = m[4].split(".").map((id) => { + if (/^[0-9]+$/.test(id)) { + const num = +id; + if (num >= 0 && num < MAX_SAFE_INTEGER) { + return num; + } + } + return id; + }); + } + this.build = m[5] ? m[5].split(".") : []; + this.format(); + } + format() { + this.version = `${this.major}.${this.minor}.${this.patch}`; + if (this.prerelease.length) { + this.version += `-${this.prerelease.join(".")}`; + } + return this.version; + } + toString() { + return this.version; + } + compare(other) { + debug("SemVer.compare", this.version, this.options, other); + if (!(other instanceof _SemVer)) { + if (typeof other === "string" && other === this.version) { + return 0; + } + other = new _SemVer(other, this.options); + } + if (other.version === this.version) { + return 0; + } + return this.compareMain(other) || this.comparePre(other); + } + compareMain(other) { + if (!(other instanceof _SemVer)) { + other = new _SemVer(other, this.options); + } + if (this.major < other.major) { + return -1; + } + if (this.major > other.major) { + return 1; + } + if (this.minor < other.minor) { + return -1; + } + if (this.minor > other.minor) { + return 1; + } + if (this.patch < other.patch) { + return -1; + } + if (this.patch > other.patch) { + return 1; + } + return 0; + } + comparePre(other) { + if (!(other instanceof _SemVer)) { + other = new _SemVer(other, this.options); + } + if (this.prerelease.length && !other.prerelease.length) { + return -1; + } else if (!this.prerelease.length && other.prerelease.length) { + return 1; + } else if (!this.prerelease.length && !other.prerelease.length) { + return 0; + } + let i = 0; + do { + const a = this.prerelease[i]; + const b = other.prerelease[i]; + debug("prerelease compare", i, a, b); + if (a === void 0 && b === void 0) { + return 0; + } else if (b === void 0) { + return 1; + } else if (a === void 0) { + return -1; + } else if (a === b) { + continue; + } else { + return compareIdentifiers(a, b); + } + } while (++i); + } + compareBuild(other) { + if (!(other instanceof _SemVer)) { + other = new _SemVer(other, this.options); + } + let i = 0; + do { + const a = this.build[i]; + const b = other.build[i]; + debug("build compare", i, a, b); + if (a === void 0 && b === void 0) { + return 0; + } else if (b === void 0) { + return 1; + } else if (a === void 0) { + return -1; + } else if (a === b) { + continue; + } else { + return compareIdentifiers(a, b); + } + } while (++i); + } + // preminor will bump the version up to the next minor release, and immediately + // down to pre-release. premajor and prepatch work the same way. + inc(release, identifier, identifierBase) { + if (release.startsWith("pre")) { + if (!identifier && identifierBase === false) { + throw new Error("invalid increment argument: identifier is empty"); + } + if (identifier) { + const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE]); + if (!match || match[1] !== identifier) { + throw new Error(`invalid identifier: ${identifier}`); + } + } + } + switch (release) { + case "premajor": + this.prerelease.length = 0; + this.patch = 0; + this.minor = 0; + this.major++; + this.inc("pre", identifier, identifierBase); + break; + case "preminor": + this.prerelease.length = 0; + this.patch = 0; + this.minor++; + this.inc("pre", identifier, identifierBase); + break; + case "prepatch": + this.prerelease.length = 0; + this.inc("patch", identifier, identifierBase); + this.inc("pre", identifier, identifierBase); + break; + // If the input is a non-prerelease version, this acts the same as + // prepatch. + case "prerelease": + if (this.prerelease.length === 0) { + this.inc("patch", identifier, identifierBase); + } + this.inc("pre", identifier, identifierBase); + break; + case "release": + if (this.prerelease.length === 0) { + throw new Error(`version ${this.raw} is not a prerelease`); + } + this.prerelease.length = 0; + break; + case "major": + if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) { + this.major++; + } + this.minor = 0; + this.patch = 0; + this.prerelease = []; + break; + case "minor": + if (this.patch !== 0 || this.prerelease.length === 0) { + this.minor++; + } + this.patch = 0; + this.prerelease = []; + break; + case "patch": + if (this.prerelease.length === 0) { + this.patch++; + } + this.prerelease = []; + break; + // This probably shouldn't be used publicly. + // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction. + case "pre": { + const base = Number(identifierBase) ? 1 : 0; + if (this.prerelease.length === 0) { + this.prerelease = [base]; + } else { + let i = this.prerelease.length; + while (--i >= 0) { + if (typeof this.prerelease[i] === "number") { + this.prerelease[i]++; + i = -2; + } + } + if (i === -1) { + if (identifier === this.prerelease.join(".") && identifierBase === false) { + throw new Error("invalid increment argument: identifier already exists"); + } + this.prerelease.push(base); + } + } + if (identifier) { + let prerelease = [identifier, base]; + if (identifierBase === false) { + prerelease = [identifier]; + } + if (isPrereleaseIdentifier(this.prerelease, identifier)) { + const prereleaseBase = this.prerelease[identifier.split(".").length]; + if (isNaN(prereleaseBase)) { + this.prerelease = prerelease; + } + } else { + this.prerelease = prerelease; + } + } + break; + } + default: + throw new Error(`invalid increment argument: ${release}`); + } + this.raw = this.format(); + if (this.build.length) { + this.raw += `+${this.build.join(".")}`; + } + return this; + } + }; + module2.exports = SemVer; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/parse.js +var require_parse3 = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/parse.js"(exports2, module2) { + "use strict"; + var SemVer = require_semver(); + var parse = (version, options, throwErrors = false) => { + if (version instanceof SemVer) { + return version; + } + try { + return new SemVer(version, options); + } catch (er) { + if (!throwErrors) { + return null; + } + throw er; + } + }; + module2.exports = parse; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/valid.js +var require_valid = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/valid.js"(exports2, module2) { + "use strict"; + var parse = require_parse3(); + var valid = (version, options) => { + const v = parse(version, options); + return v ? v.version : null; + }; + module2.exports = valid; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/clean.js +var require_clean = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/clean.js"(exports2, module2) { + "use strict"; + var parse = require_parse3(); + var clean = (version, options) => { + const s = parse(version.trim().replace(/^[=v]+/, ""), options); + return s ? s.version : null; + }; + module2.exports = clean; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/inc.js +var require_inc = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/inc.js"(exports2, module2) { + "use strict"; + var SemVer = require_semver(); + var inc = (version, release, options, identifier, identifierBase) => { + if (typeof options === "string") { + identifierBase = identifier; + identifier = options; + options = void 0; + } + try { + return new SemVer( + version instanceof SemVer ? version.version : version, + options + ).inc(release, identifier, identifierBase).version; + } catch (er) { + return null; + } + }; + module2.exports = inc; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/diff.js +var require_diff = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/diff.js"(exports2, module2) { + "use strict"; + var parse = require_parse3(); + var diff = (version1, version2) => { + const v1 = parse(version1, null, true); + const v2 = parse(version2, null, true); + const comparison = v1.compare(v2); + if (comparison === 0) { + return null; + } + const v1Higher = comparison > 0; + const highVersion = v1Higher ? v1 : v2; + const lowVersion = v1Higher ? v2 : v1; + const highHasPre = !!highVersion.prerelease.length; + const lowHasPre = !!lowVersion.prerelease.length; + if (lowHasPre && !highHasPre) { + if (!lowVersion.patch && !lowVersion.minor) { + return "major"; + } + if (lowVersion.compareMain(highVersion) === 0) { + if (lowVersion.minor && !lowVersion.patch) { + return "minor"; + } + return "patch"; + } + } + const prefix = highHasPre ? "pre" : ""; + if (v1.major !== v2.major) { + return prefix + "major"; + } + if (v1.minor !== v2.minor) { + return prefix + "minor"; + } + if (v1.patch !== v2.patch) { + return prefix + "patch"; + } + return "prerelease"; + }; + module2.exports = diff; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/major.js +var require_major = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/major.js"(exports2, module2) { + "use strict"; + var SemVer = require_semver(); + var major = (a, loose) => new SemVer(a, loose).major; + module2.exports = major; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/minor.js +var require_minor = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/minor.js"(exports2, module2) { + "use strict"; + var SemVer = require_semver(); + var minor = (a, loose) => new SemVer(a, loose).minor; + module2.exports = minor; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/patch.js +var require_patch = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/patch.js"(exports2, module2) { + "use strict"; + var SemVer = require_semver(); + var patch = (a, loose) => new SemVer(a, loose).patch; + module2.exports = patch; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/prerelease.js +var require_prerelease = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/prerelease.js"(exports2, module2) { + "use strict"; + var parse = require_parse3(); + var prerelease = (version, options) => { + const parsed = parse(version, options); + return parsed && parsed.prerelease.length ? parsed.prerelease : null; + }; + module2.exports = prerelease; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare.js +var require_compare = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare.js"(exports2, module2) { + "use strict"; + var SemVer = require_semver(); + var compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose)); + module2.exports = compare; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rcompare.js +var require_rcompare = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rcompare.js"(exports2, module2) { + "use strict"; + var compare = require_compare(); + var rcompare = (a, b, loose) => compare(b, a, loose); + module2.exports = rcompare; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-loose.js +var require_compare_loose = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-loose.js"(exports2, module2) { + "use strict"; + var compare = require_compare(); + var compareLoose = (a, b) => compare(a, b, true); + module2.exports = compareLoose; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-build.js +var require_compare_build = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-build.js"(exports2, module2) { + "use strict"; + var SemVer = require_semver(); + var compareBuild = (a, b, loose) => { + const versionA = new SemVer(a, loose); + const versionB = new SemVer(b, loose); + return versionA.compare(versionB) || versionA.compareBuild(versionB); + }; + module2.exports = compareBuild; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/sort.js +var require_sort = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/sort.js"(exports2, module2) { + "use strict"; + var compareBuild = require_compare_build(); + var sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose)); + module2.exports = sort; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rsort.js +var require_rsort = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rsort.js"(exports2, module2) { + "use strict"; + var compareBuild = require_compare_build(); + var rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose)); + module2.exports = rsort; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gt.js +var require_gt = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gt.js"(exports2, module2) { + "use strict"; + var compare = require_compare(); + var gt = (a, b, loose) => compare(a, b, loose) > 0; + module2.exports = gt; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lt.js +var require_lt = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lt.js"(exports2, module2) { + "use strict"; + var compare = require_compare(); + var lt = (a, b, loose) => compare(a, b, loose) < 0; + module2.exports = lt; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/eq.js +var require_eq = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/eq.js"(exports2, module2) { + "use strict"; + var compare = require_compare(); + var eq = (a, b, loose) => compare(a, b, loose) === 0; + module2.exports = eq; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/neq.js +var require_neq = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/neq.js"(exports2, module2) { + "use strict"; + var compare = require_compare(); + var neq = (a, b, loose) => compare(a, b, loose) !== 0; + module2.exports = neq; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gte.js +var require_gte = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gte.js"(exports2, module2) { + "use strict"; + var compare = require_compare(); + var gte = (a, b, loose) => compare(a, b, loose) >= 0; + module2.exports = gte; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lte.js +var require_lte = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lte.js"(exports2, module2) { + "use strict"; + var compare = require_compare(); + var lte = (a, b, loose) => compare(a, b, loose) <= 0; + module2.exports = lte; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/cmp.js +var require_cmp = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/cmp.js"(exports2, module2) { + "use strict"; + var eq = require_eq(); + var neq = require_neq(); + var gt = require_gt(); + var gte = require_gte(); + var lt = require_lt(); + var lte = require_lte(); + var cmp = (a, op, b, loose) => { + switch (op) { + case "===": + if (typeof a === "object") { + a = a.version; + } + if (typeof b === "object") { + b = b.version; + } + return a === b; + case "!==": + if (typeof a === "object") { + a = a.version; + } + if (typeof b === "object") { + b = b.version; + } + return a !== b; + case "": + case "=": + case "==": + return eq(a, b, loose); + case "!=": + return neq(a, b, loose); + case ">": + return gt(a, b, loose); + case ">=": + return gte(a, b, loose); + case "<": + return lt(a, b, loose); + case "<=": + return lte(a, b, loose); + default: + throw new TypeError(`Invalid operator: ${op}`); + } + }; + module2.exports = cmp; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/coerce.js +var require_coerce = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/coerce.js"(exports2, module2) { + "use strict"; + var SemVer = require_semver(); + var parse = require_parse3(); + var { safeRe: re, t } = require_re(); + var coerce = (version, options) => { + if (version instanceof SemVer) { + return version; + } + if (typeof version === "number") { + version = String(version); + } + if (typeof version !== "string") { + return null; + } + options = options || {}; + let match = null; + if (!options.rtl) { + match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]); + } else { + const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]; + let next; + while ((next = coerceRtlRegex.exec(version)) && (!match || match.index + match[0].length !== version.length)) { + if (!match || next.index + next[0].length !== match.index + match[0].length) { + match = next; + } + coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length; + } + coerceRtlRegex.lastIndex = -1; + } + if (match === null) { + return null; + } + const major = match[2]; + const minor = match[3] || "0"; + const patch = match[4] || "0"; + const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ""; + const build = options.includePrerelease && match[6] ? `+${match[6]}` : ""; + return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options); + }; + module2.exports = coerce; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/truncate.js +var require_truncate = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/truncate.js"(exports2, module2) { + "use strict"; + var parse = require_parse3(); + var constants = require_constants8(); + var SemVer = require_semver(); + var truncate = (version, truncation, options) => { + if (!constants.RELEASE_TYPES.includes(truncation)) { + return null; + } + const clonedVersion = cloneInputVersion(version, options); + return clonedVersion && doTruncation(clonedVersion, truncation); + }; + var cloneInputVersion = (version, options) => { + const versionStringToParse = version instanceof SemVer ? version.version : version; + return parse(versionStringToParse, options); + }; + var doTruncation = (version, truncation) => { + if (isPrerelease(truncation)) { + return version.version; + } + version.prerelease = []; + switch (truncation) { + case "major": + version.minor = 0; + version.patch = 0; + break; + case "minor": + version.patch = 0; + break; + } + return version.format(); + }; + var isPrerelease = (type) => { + return type.startsWith("pre"); + }; + module2.exports = truncate; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/lrucache.js +var require_lrucache = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/lrucache.js"(exports2, module2) { + "use strict"; + var LRUCache = class { + constructor() { + this.max = 1e3; + this.map = /* @__PURE__ */ new Map(); + } + get(key) { + const value = this.map.get(key); + if (value === void 0) { + return void 0; + } else { + this.map.delete(key); + this.map.set(key, value); + return value; + } + } + delete(key) { + return this.map.delete(key); + } + set(key, value) { + const deleted = this.delete(key); + if (!deleted && value !== void 0) { + if (this.map.size >= this.max) { + const firstKey = this.map.keys().next().value; + this.delete(firstKey); + } + this.map.set(key, value); + } + return this; + } + }; + module2.exports = LRUCache; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/range.js +var require_range3 = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/range.js"(exports2, module2) { + "use strict"; + var SPACE_CHARACTERS = /\s+/g; + var Range = class _Range { + constructor(range, options) { + options = parseOptions(options); + if (range instanceof _Range) { + if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) { + return range; + } else { + return new _Range(range.raw, options); + } + } + if (range instanceof Comparator) { + this.raw = range.value; + this.set = [[range]]; + this.formatted = void 0; + return this; + } + this.options = options; + this.loose = !!options.loose; + this.includePrerelease = !!options.includePrerelease; + this.raw = range.trim().replace(SPACE_CHARACTERS, " "); + this.set = this.raw.split("||").map((r) => this.parseRange(r.trim())).filter((c) => c.length); + if (!this.set.length) { + throw new TypeError(`Invalid SemVer Range: ${this.raw}`); + } + if (this.set.length > 1) { + const first = this.set[0]; + this.set = this.set.filter((c) => !isNullSet(c[0])); + if (this.set.length === 0) { + this.set = [first]; + } else if (this.set.length > 1) { + for (const c of this.set) { + if (c.length === 1 && isAny(c[0])) { + this.set = [c]; + break; + } + } + } + } + this.formatted = void 0; + } + get range() { + if (this.formatted === void 0) { + this.formatted = ""; + for (let i = 0; i < this.set.length; i++) { + if (i > 0) { + this.formatted += "||"; + } + const comps = this.set[i]; + for (let k = 0; k < comps.length; k++) { + if (k > 0) { + this.formatted += " "; + } + this.formatted += comps[k].toString().trim(); + } + } + } + return this.formatted; + } + format() { + return this.range; + } + toString() { + return this.range; + } + parseRange(range) { + range = range.replace(BUILDSTRIPRE, ""); + const memoOpts = (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE); + const memoKey = memoOpts + ":" + range; + const cached = cache.get(memoKey); + if (cached) { + return cached; + } + const loose = this.options.loose; + const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]; + range = range.replace(hr, hyphenReplace(this.options.includePrerelease)); + debug("hyphen replace", range); + range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace); + debug("comparator trim", range); + range = range.replace(re[t.TILDETRIM], tildeTrimReplace); + debug("tilde trim", range); + range = range.replace(re[t.CARETTRIM], caretTrimReplace); + debug("caret trim", range); + let rangeList = range.split(" ").map((comp) => parseComparator(comp, this.options)).join(" ").split(/\s+/).map((comp) => replaceGTE0(comp, this.options)); + if (loose) { + rangeList = rangeList.filter((comp) => { + debug("loose invalid filter", comp, this.options); + return !!comp.match(re[t.COMPARATORLOOSE]); + }); + } + debug("range list", rangeList); + const rangeMap = /* @__PURE__ */ new Map(); + const comparators = rangeList.map((comp) => new Comparator(comp, this.options)); + for (const comp of comparators) { + if (isNullSet(comp)) { + return [comp]; + } + rangeMap.set(comp.value, comp); + } + if (rangeMap.size > 1 && rangeMap.has("")) { + rangeMap.delete(""); + } + const result = [...rangeMap.values()]; + cache.set(memoKey, result); + return result; + } + intersects(range, options) { + if (!(range instanceof _Range)) { + throw new TypeError("a Range is required"); + } + return this.set.some((thisComparators) => { + return isSatisfiable(thisComparators, options) && range.set.some((rangeComparators) => { + return isSatisfiable(rangeComparators, options) && thisComparators.every((thisComparator) => { + return rangeComparators.every((rangeComparator) => { + return thisComparator.intersects(rangeComparator, options); + }); + }); + }); + }); + } + // if ANY of the sets match ALL of its comparators, then pass + test(version) { + if (!version) { + return false; + } + if (typeof version === "string") { + try { + version = new SemVer(version, this.options); + } catch (er) { + return false; + } + } + for (let i = 0; i < this.set.length; i++) { + if (testSet(this.set[i], version, this.options)) { + return true; + } + } + return false; + } + }; + module2.exports = Range; + var LRU = require_lrucache(); + var cache = new LRU(); + var parseOptions = require_parse_options(); + var Comparator = require_comparator(); + var debug = require_debug2(); + var SemVer = require_semver(); + var { + safeRe: re, + src, + t, + comparatorTrimReplace, + tildeTrimReplace, + caretTrimReplace + } = require_re(); + var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants8(); + var BUILDSTRIPRE = new RegExp(src[t.BUILD], "g"); + var isNullSet = (c) => c.value === "<0.0.0-0"; + var isAny = (c) => c.value === ""; + var isSatisfiable = (comparators, options) => { + let result = true; + const remainingComparators = comparators.slice(); + let testComparator = remainingComparators.pop(); + while (result && remainingComparators.length) { + result = remainingComparators.every((otherComparator) => { + return testComparator.intersects(otherComparator, options); + }); + testComparator = remainingComparators.pop(); + } + return result; + }; + var parseComparator = (comp, options) => { + comp = comp.replace(re[t.BUILD], ""); + debug("comp", comp, options); + comp = replaceCarets(comp, options); + debug("caret", comp); + comp = replaceTildes(comp, options); + debug("tildes", comp); + comp = replaceXRanges(comp, options); + debug("xrange", comp); + comp = replaceStars(comp, options); + debug("stars", comp); + return comp; + }; + var isX = (id) => !id || id.toLowerCase() === "x" || id === "*"; + var invalidXRangeOrder = (M, m, p) => isX(M) && !isX(m) || isX(m) && p && !isX(p); + var replaceTildes = (comp, options) => { + return comp.trim().split(/\s+/).map((c) => replaceTilde(c, options)).join(" "); + }; + var replaceTilde = (comp, options) => { + const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]; + const z = options.includePrerelease ? "-0" : ""; + return comp.replace(r, (_, M, m, p, pr) => { + debug("tilde", comp, _, M, m, p, pr); + let ret; + if (isX(M)) { + ret = ""; + } else if (isX(m)) { + ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`; + } else if (isX(p)) { + ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`; + } else if (pr) { + debug("replaceTilde pr", pr); + ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + } else { + ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`; + } + debug("tilde return", ret); + return ret; + }); + }; + var replaceCarets = (comp, options) => { + return comp.trim().split(/\s+/).map((c) => replaceCaret(c, options)).join(" "); + }; + var replaceCaret = (comp, options) => { + debug("caret", comp, options); + const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]; + const z = options.includePrerelease ? "-0" : ""; + return comp.replace(r, (_, M, m, p, pr) => { + debug("caret", comp, _, M, m, p, pr); + let ret; + if (isX(M)) { + ret = ""; + } else if (isX(m)) { + ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`; + } else if (isX(p)) { + if (M === "0") { + ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`; + } else { + ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`; + } + } else if (pr) { + debug("replaceCaret pr", pr); + if (M === "0") { + if (m === "0") { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`; + } else { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + } + } else { + ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`; + } + } else { + debug("no pr"); + if (M === "0") { + if (m === "0") { + ret = `>=${M}.${m}.${p} <${M}.${m}.${+p + 1}-0`; + } else { + ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`; + } + } else { + ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`; + } + } + debug("caret return", ret); + return ret; + }); + }; + var replaceXRanges = (comp, options) => { + debug("replaceXRanges", comp, options); + return comp.split(/\s+/).map((c) => replaceXRange(c, options)).join(" "); + }; + var replaceXRange = (comp, options) => { + comp = comp.trim(); + const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]; + return comp.replace(r, (ret, gtlt, M, m, p, pr) => { + debug("xRange", comp, ret, gtlt, M, m, p, pr); + if (invalidXRangeOrder(M, m, p)) { + return comp; + } + const xM = isX(M); + const xm = xM || isX(m); + const xp = xm || isX(p); + const anyX = xp; + if (gtlt === "=" && anyX) { + gtlt = ""; + } + pr = options.includePrerelease ? "-0" : ""; + if (xM) { + if (gtlt === ">" || gtlt === "<") { + ret = "<0.0.0-0"; + } else { + ret = "*"; + } + } else if (gtlt && anyX) { + if (xm) { + m = 0; + } + p = 0; + if (gtlt === ">") { + gtlt = ">="; + if (xm) { + M = +M + 1; + m = 0; + p = 0; + } else { + m = +m + 1; + p = 0; + } + } else if (gtlt === "<=") { + gtlt = "<"; + if (xm) { + M = +M + 1; + } else { + m = +m + 1; + } + } + if (gtlt === "<") { + pr = "-0"; + } + ret = `${gtlt + M}.${m}.${p}${pr}`; + } else if (xm) { + ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`; + } else if (xp) { + ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`; + } + debug("xRange return", ret); + return ret; + }); + }; + var replaceStars = (comp, options) => { + debug("replaceStars", comp, options); + return comp.trim().replace(re[t.STAR], ""); + }; + var replaceGTE0 = (comp, options) => { + debug("replaceGTE0", comp, options); + return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], ""); + }; + var hyphenReplace = (incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => { + if (isX(fM)) { + from = ""; + } else if (isX(fm)) { + from = `>=${fM}.0.0${incPr ? "-0" : ""}`; + } else if (isX(fp)) { + from = `>=${fM}.${fm}.0${incPr ? "-0" : ""}`; + } else if (fpr) { + from = `>=${from}`; + } else { + from = `>=${from}${incPr ? "-0" : ""}`; + } + if (isX(tM)) { + to = ""; + } else if (isX(tm)) { + to = `<${+tM + 1}.0.0-0`; + } else if (isX(tp)) { + to = `<${tM}.${+tm + 1}.0-0`; + } else if (tpr) { + to = `<=${tM}.${tm}.${tp}-${tpr}`; + } else if (incPr) { + to = `<${tM}.${tm}.${+tp + 1}-0`; + } else { + to = `<=${to}`; + } + return `${from} ${to}`.trim(); + }; + var testSet = (set, version, options) => { + for (let i = 0; i < set.length; i++) { + if (!set[i].test(version)) { + return false; + } + } + if (version.prerelease.length && !options.includePrerelease) { + for (let i = 0; i < set.length; i++) { + debug(set[i].semver); + if (set[i].semver === Comparator.ANY) { + continue; + } + if (set[i].semver.prerelease.length > 0) { + const allowed = set[i].semver; + if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) { + return true; + } + } + } + return false; + } + return true; + }; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/comparator.js +var require_comparator = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/comparator.js"(exports2, module2) { + "use strict"; + var ANY = Symbol("SemVer ANY"); + var Comparator = class _Comparator { + static get ANY() { + return ANY; + } + constructor(comp, options) { + options = parseOptions(options); + if (comp instanceof _Comparator) { + if (comp.loose === !!options.loose) { + return comp; + } else { + comp = comp.value; + } + } + comp = comp.trim().split(/\s+/).join(" "); + debug("comparator", comp, options); + this.options = options; + this.loose = !!options.loose; + this.parse(comp); + if (this.semver === ANY) { + this.value = ""; + } else { + this.value = this.operator + this.semver.version; + } + debug("comp", this); + } + parse(comp) { + const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]; + const m = comp.match(r); + if (!m) { + throw new TypeError(`Invalid comparator: ${comp}`); + } + this.operator = m[1] !== void 0 ? m[1] : ""; + if (this.operator === "=") { + this.operator = ""; + } + if (!m[2]) { + this.semver = ANY; + } else { + this.semver = new SemVer(m[2], this.options.loose); + } + } + toString() { + return this.value; + } + test(version) { + debug("Comparator.test", version, this.options.loose); + if (this.semver === ANY || version === ANY) { + return true; + } + if (typeof version === "string") { + try { + version = new SemVer(version, this.options); + } catch (er) { + return false; + } + } + return cmp(version, this.operator, this.semver, this.options); + } + intersects(comp, options) { + if (!(comp instanceof _Comparator)) { + throw new TypeError("a Comparator is required"); + } + if (this.operator === "") { + if (this.value === "") { + return true; + } + return new Range(comp.value, options).test(this.value); + } else if (comp.operator === "") { + if (comp.value === "") { + return true; + } + return new Range(this.value, options).test(comp.semver); + } + options = parseOptions(options); + if (options.includePrerelease && (this.value === "<0.0.0-0" || comp.value === "<0.0.0-0")) { + return false; + } + if (!options.includePrerelease && (this.value.startsWith("<0.0.0") || comp.value.startsWith("<0.0.0"))) { + return false; + } + if (this.operator.startsWith(">") && comp.operator.startsWith(">")) { + return true; + } + if (this.operator.startsWith("<") && comp.operator.startsWith("<")) { + return true; + } + if (this.semver.version === comp.semver.version && this.operator.includes("=") && comp.operator.includes("=")) { + return true; + } + if (cmp(this.semver, "<", comp.semver, options) && this.operator.startsWith(">") && comp.operator.startsWith("<")) { + return true; + } + if (cmp(this.semver, ">", comp.semver, options) && this.operator.startsWith("<") && comp.operator.startsWith(">")) { + return true; + } + return false; + } + }; + module2.exports = Comparator; + var parseOptions = require_parse_options(); + var { safeRe: re, t } = require_re(); + var cmp = require_cmp(); + var debug = require_debug2(); + var SemVer = require_semver(); + var Range = require_range3(); + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/satisfies.js +var require_satisfies = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/satisfies.js"(exports2, module2) { + "use strict"; + var Range = require_range3(); + var satisfies = (version, range, options) => { + try { + range = new Range(range, options); + } catch (er) { + return false; + } + return range.test(version); + }; + module2.exports = satisfies; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/to-comparators.js +var require_to_comparators = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/to-comparators.js"(exports2, module2) { + "use strict"; + var Range = require_range3(); + var toComparators = (range, options) => new Range(range, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" ")); + module2.exports = toComparators; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/max-satisfying.js +var require_max_satisfying = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/max-satisfying.js"(exports2, module2) { + "use strict"; + var SemVer = require_semver(); + var Range = require_range3(); + var maxSatisfying = (versions, range, options) => { + let max = null; + let maxSV = null; + let rangeObj = null; + try { + rangeObj = new Range(range, options); + } catch (er) { + return null; + } + versions.forEach((v) => { + if (rangeObj.test(v)) { + if (!max || maxSV.compare(v) === -1) { + max = v; + maxSV = new SemVer(max, options); + } + } + }); + return max; + }; + module2.exports = maxSatisfying; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-satisfying.js +var require_min_satisfying = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-satisfying.js"(exports2, module2) { + "use strict"; + var SemVer = require_semver(); + var Range = require_range3(); + var minSatisfying = (versions, range, options) => { + let min = null; + let minSV = null; + let rangeObj = null; + try { + rangeObj = new Range(range, options); + } catch (er) { + return null; + } + versions.forEach((v) => { + if (rangeObj.test(v)) { + if (!min || minSV.compare(v) === 1) { + min = v; + minSV = new SemVer(min, options); + } + } + }); + return min; + }; + module2.exports = minSatisfying; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-version.js +var require_min_version = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-version.js"(exports2, module2) { + "use strict"; + var SemVer = require_semver(); + var Range = require_range3(); + var gt = require_gt(); + var minVersion = (range, loose) => { + range = new Range(range, loose); + let minver = new SemVer("0.0.0"); + if (range.test(minver)) { + return minver; + } + minver = new SemVer("0.0.0-0"); + if (range.test(minver)) { + return minver; + } + minver = null; + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i]; + let setMin = null; + comparators.forEach((comparator) => { + const compver = new SemVer(comparator.semver.version); + switch (comparator.operator) { + case ">": + if (compver.prerelease.length === 0) { + compver.patch++; + } else { + compver.prerelease.push(0); + } + compver.raw = compver.format(); + /* fallthrough */ + case "": + case ">=": + if (!setMin || gt(compver, setMin)) { + setMin = compver; + } + break; + case "<": + case "<=": + break; + /* istanbul ignore next */ + default: + throw new Error(`Unexpected operation: ${comparator.operator}`); + } + }); + if (setMin && (!minver || gt(minver, setMin))) { + minver = setMin; + } + } + if (minver && range.test(minver)) { + return minver; + } + return null; + }; + module2.exports = minVersion; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/valid.js +var require_valid2 = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/valid.js"(exports2, module2) { + "use strict"; + var Range = require_range3(); + var validRange = (range, options) => { + try { + return new Range(range, options).range || "*"; + } catch (er) { + return null; + } + }; + module2.exports = validRange; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/outside.js +var require_outside = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/outside.js"(exports2, module2) { + "use strict"; + var SemVer = require_semver(); + var Comparator = require_comparator(); + var { ANY } = Comparator; + var Range = require_range3(); + var satisfies = require_satisfies(); + var gt = require_gt(); + var lt = require_lt(); + var lte = require_lte(); + var gte = require_gte(); + var outside = (version, range, hilo, options) => { + version = new SemVer(version, options); + range = new Range(range, options); + let gtfn, ltefn, ltfn, comp, ecomp; + switch (hilo) { + case ">": + gtfn = gt; + ltefn = lte; + ltfn = lt; + comp = ">"; + ecomp = ">="; + break; + case "<": + gtfn = lt; + ltefn = gte; + ltfn = gt; + comp = "<"; + ecomp = "<="; + break; + default: + throw new TypeError('Must provide a hilo val of "<" or ">"'); + } + if (satisfies(version, range, options)) { + return false; + } + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i]; + let high = null; + let low = null; + comparators.forEach((comparator) => { + if (comparator.semver === ANY) { + comparator = new Comparator(">=0.0.0"); + } + high = high || comparator; + low = low || comparator; + if (gtfn(comparator.semver, high.semver, options)) { + high = comparator; + } else if (ltfn(comparator.semver, low.semver, options)) { + low = comparator; + } + }); + if (high.operator === comp || high.operator === ecomp) { + return false; + } + if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) { + return false; + } else if (low.operator === ecomp && ltfn(version, low.semver)) { + return false; + } + } + return true; + }; + module2.exports = outside; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/gtr.js +var require_gtr = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/gtr.js"(exports2, module2) { + "use strict"; + var outside = require_outside(); + var gtr = (version, range, options) => outside(version, range, ">", options); + module2.exports = gtr; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/ltr.js +var require_ltr = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/ltr.js"(exports2, module2) { + "use strict"; + var outside = require_outside(); + var ltr = (version, range, options) => outside(version, range, "<", options); + module2.exports = ltr; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/intersects.js +var require_intersects = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/intersects.js"(exports2, module2) { + "use strict"; + var Range = require_range3(); + var intersects = (r1, r2, options) => { + r1 = new Range(r1, options); + r2 = new Range(r2, options); + return r1.intersects(r2, options); + }; + module2.exports = intersects; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/simplify.js +var require_simplify = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/simplify.js"(exports2, module2) { + "use strict"; + var satisfies = require_satisfies(); + var compare = require_compare(); + module2.exports = (versions, range, options) => { + const set = []; + let first = null; + let prev = null; + const v = versions.sort((a, b) => compare(a, b, options)); + for (const version of v) { + const included = satisfies(version, range, options); + if (included) { + prev = version; + if (!first) { + first = version; + } + } else { + if (prev) { + set.push([first, prev]); + } + prev = null; + first = null; + } + } + if (first) { + set.push([first, null]); + } + const ranges = []; + for (const [min, max] of set) { + if (min === max) { + ranges.push(min); + } else if (!max && min === v[0]) { + ranges.push("*"); + } else if (!max) { + ranges.push(`>=${min}`); + } else if (min === v[0]) { + ranges.push(`<=${max}`); + } else { + ranges.push(`${min} - ${max}`); + } + } + const simplified = ranges.join(" || "); + const original = typeof range.raw === "string" ? range.raw : String(range); + return simplified.length < original.length ? simplified : range; + }; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/subset.js +var require_subset = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/subset.js"(exports2, module2) { + "use strict"; + var Range = require_range3(); + var Comparator = require_comparator(); + var { ANY } = Comparator; + var satisfies = require_satisfies(); + var compare = require_compare(); + var subset = (sub, dom, options = {}) => { + if (sub === dom) { + return true; + } + sub = new Range(sub, options); + dom = new Range(dom, options); + let sawNonNull = false; + OUTER: for (const simpleSub of sub.set) { + for (const simpleDom of dom.set) { + const isSub = simpleSubset(simpleSub, simpleDom, options); + sawNonNull = sawNonNull || isSub !== null; + if (isSub) { + continue OUTER; + } + } + if (sawNonNull) { + return false; + } + } + return true; + }; + var minimumVersionWithPreRelease = [new Comparator(">=0.0.0-0")]; + var minimumVersion = [new Comparator(">=0.0.0")]; + var simpleSubset = (sub, dom, options) => { + if (sub === dom) { + return true; + } + if (sub.length === 1 && sub[0].semver === ANY) { + if (dom.length === 1 && dom[0].semver === ANY) { + return true; + } else if (options.includePrerelease) { + sub = minimumVersionWithPreRelease; + } else { + sub = minimumVersion; + } + } + if (dom.length === 1 && dom[0].semver === ANY) { + if (options.includePrerelease) { + return true; + } else { + dom = minimumVersion; + } + } + const eqSet = /* @__PURE__ */ new Set(); + let gt, lt; + for (const c of sub) { + if (c.operator === ">" || c.operator === ">=") { + gt = higherGT(gt, c, options); + } else if (c.operator === "<" || c.operator === "<=") { + lt = lowerLT(lt, c, options); + } else { + eqSet.add(c.semver); + } + } + if (eqSet.size > 1) { + return null; + } + let gtltComp; + if (gt && lt) { + gtltComp = compare(gt.semver, lt.semver, options); + if (gtltComp > 0) { + return null; + } else if (gtltComp === 0 && (gt.operator !== ">=" || lt.operator !== "<=")) { + return null; + } + } + for (const eq of eqSet) { + if (gt && !satisfies(eq, String(gt), options)) { + return null; + } + if (lt && !satisfies(eq, String(lt), options)) { + return null; + } + for (const c of dom) { + if (!satisfies(eq, String(c), options)) { + return false; + } + } + return true; + } + let higher, lower; + let hasDomLT, hasDomGT; + let needDomLTPre = lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : false; + let needDomGTPre = gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : false; + if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt.operator === "<" && needDomLTPre.prerelease[0] === 0) { + needDomLTPre = false; + } + for (const c of dom) { + hasDomGT = hasDomGT || c.operator === ">" || c.operator === ">="; + hasDomLT = hasDomLT || c.operator === "<" || c.operator === "<="; + if (gt) { + if (needDomGTPre) { + if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomGTPre.major && c.semver.minor === needDomGTPre.minor && c.semver.patch === needDomGTPre.patch) { + needDomGTPre = false; + } + } + if (c.operator === ">" || c.operator === ">=") { + higher = higherGT(gt, c, options); + if (higher === c && higher !== gt) { + return false; + } + } else if (gt.operator === ">=" && !c.test(gt.semver)) { + return false; + } + } + if (lt) { + if (needDomLTPre) { + if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomLTPre.major && c.semver.minor === needDomLTPre.minor && c.semver.patch === needDomLTPre.patch) { + needDomLTPre = false; + } + } + if (c.operator === "<" || c.operator === "<=") { + lower = lowerLT(lt, c, options); + if (lower === c && lower !== lt) { + return false; + } + } else if (lt.operator === "<=" && !c.test(lt.semver)) { + return false; + } + } + if (!c.operator && (lt || gt) && gtltComp !== 0) { + return false; + } + } + if (gt && hasDomLT && !lt && gtltComp !== 0) { + return false; + } + if (lt && hasDomGT && !gt && gtltComp !== 0) { + return false; + } + if (needDomGTPre || needDomLTPre) { + return false; + } + return true; + }; + var higherGT = (a, b, options) => { + if (!a) { + return b; + } + const comp = compare(a.semver, b.semver, options); + return comp > 0 ? a : comp < 0 ? b : b.operator === ">" && a.operator === ">=" ? b : a; + }; + var lowerLT = (a, b, options) => { + if (!a) { + return b; + } + const comp = compare(a.semver, b.semver, options); + return comp < 0 ? a : comp > 0 ? b : b.operator === "<" && a.operator === "<=" ? b : a; + }; + module2.exports = subset; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/index.js +var require_semver2 = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/index.js"(exports2, module2) { + "use strict"; + var internalRe = require_re(); + var constants = require_constants8(); + var SemVer = require_semver(); + var identifiers = require_identifiers(); + var parse = require_parse3(); + var valid = require_valid(); + var clean = require_clean(); + var inc = require_inc(); + var diff = require_diff(); + var major = require_major(); + var minor = require_minor(); + var patch = require_patch(); + var prerelease = require_prerelease(); + var compare = require_compare(); + var rcompare = require_rcompare(); + var compareLoose = require_compare_loose(); + var compareBuild = require_compare_build(); + var sort = require_sort(); + var rsort = require_rsort(); + var gt = require_gt(); + var lt = require_lt(); + var eq = require_eq(); + var neq = require_neq(); + var gte = require_gte(); + var lte = require_lte(); + var cmp = require_cmp(); + var coerce = require_coerce(); + var truncate = require_truncate(); + var Comparator = require_comparator(); + var Range = require_range3(); + var satisfies = require_satisfies(); + var toComparators = require_to_comparators(); + var maxSatisfying = require_max_satisfying(); + var minSatisfying = require_min_satisfying(); + var minVersion = require_min_version(); + var validRange = require_valid2(); + var outside = require_outside(); + var gtr = require_gtr(); + var ltr = require_ltr(); + var intersects = require_intersects(); + var simplifyRange = require_simplify(); + var subset = require_subset(); + module2.exports = { + parse, + valid, + clean, + inc, + diff, + major, + minor, + patch, + prerelease, + compare, + rcompare, + compareLoose, + compareBuild, + sort, + rsort, + gt, + lt, + eq, + neq, + gte, + lte, + cmp, + coerce, + truncate, + Comparator, + Range, + satisfies, + toComparators, + maxSatisfying, + minSatisfying, + minVersion, + validRange, + outside, + gtr, + ltr, + intersects, + simplifyRange, + subset, + SemVer, + re: internalRe.re, + src: internalRe.src, + tokens: internalRe.t, + SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION, + RELEASE_TYPES: constants.RELEASE_TYPES, + compareIdentifiers: identifiers.compareIdentifiers, + rcompareIdentifiers: identifiers.rcompareIdentifiers + }; + } +}); + +// ../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js +var require_asymmetricKeyDetailsSupported = __commonJS({ + "../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js"(exports2, module2) { + var semver = require_semver2(); + module2.exports = semver.satisfies(process.version, ">=15.7.0"); + } +}); + +// ../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js +var require_rsaPssKeyDetailsSupported = __commonJS({ + "../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js"(exports2, module2) { + var semver = require_semver2(); + module2.exports = semver.satisfies(process.version, ">=16.9.0"); + } +}); + +// ../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/validateAsymmetricKey.js +var require_validateAsymmetricKey = __commonJS({ + "../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/validateAsymmetricKey.js"(exports2, module2) { + var ASYMMETRIC_KEY_DETAILS_SUPPORTED = require_asymmetricKeyDetailsSupported(); + var RSA_PSS_KEY_DETAILS_SUPPORTED = require_rsaPssKeyDetailsSupported(); + var allowedAlgorithmsForKeys = { + "ec": ["ES256", "ES384", "ES512"], + "rsa": ["RS256", "PS256", "RS384", "PS384", "RS512", "PS512"], + "rsa-pss": ["PS256", "PS384", "PS512"] + }; + var allowedCurves = { + ES256: "prime256v1", + ES384: "secp384r1", + ES512: "secp521r1" + }; + module2.exports = function(algorithm, key) { + if (!algorithm || !key) return; + const keyType = key.asymmetricKeyType; + if (!keyType) return; + const allowedAlgorithms = allowedAlgorithmsForKeys[keyType]; + if (!allowedAlgorithms) { + throw new Error(`Unknown key type "${keyType}".`); + } + if (!allowedAlgorithms.includes(algorithm)) { + throw new Error(`"alg" parameter for "${keyType}" key type must be one of: ${allowedAlgorithms.join(", ")}.`); + } + if (ASYMMETRIC_KEY_DETAILS_SUPPORTED) { + switch (keyType) { + case "ec": + const keyCurve = key.asymmetricKeyDetails.namedCurve; + const allowedCurve = allowedCurves[algorithm]; + if (keyCurve !== allowedCurve) { + throw new Error(`"alg" parameter "${algorithm}" requires curve "${allowedCurve}".`); + } + break; + case "rsa-pss": + if (RSA_PSS_KEY_DETAILS_SUPPORTED) { + const length = parseInt(algorithm.slice(-3), 10); + const { hashAlgorithm, mgf1HashAlgorithm, saltLength } = key.asymmetricKeyDetails; + if (hashAlgorithm !== `sha${length}` || mgf1HashAlgorithm !== hashAlgorithm) { + throw new Error(`Invalid key for this operation, its RSA-PSS parameters do not meet the requirements of "alg" ${algorithm}.`); + } + if (saltLength !== void 0 && saltLength > length >> 3) { + throw new Error(`Invalid key for this operation, its RSA-PSS parameter saltLength does not meet the requirements of "alg" ${algorithm}.`); + } + } + break; + } + } + }; + } +}); + +// ../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/psSupported.js +var require_psSupported = __commonJS({ + "../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/psSupported.js"(exports2, module2) { + var semver = require_semver2(); + module2.exports = semver.satisfies(process.version, "^6.12.0 || >=8.0.0"); + } +}); + +// ../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/verify.js +var require_verify = __commonJS({ + "../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/verify.js"(exports2, module2) { + var JsonWebTokenError2 = require_JsonWebTokenError(); + var NotBeforeError2 = require_NotBeforeError(); + var TokenExpiredError2 = require_TokenExpiredError(); + var decode = require_decode(); + var timespan = require_timespan(); + var validateAsymmetricKey = require_validateAsymmetricKey(); + var PS_SUPPORTED = require_psSupported(); + var jws = require_jws(); + var { KeyObject, createSecretKey, createPublicKey } = require("crypto"); + var PUB_KEY_ALGS = ["RS256", "RS384", "RS512"]; + var EC_KEY_ALGS = ["ES256", "ES384", "ES512"]; + var RSA_KEY_ALGS = ["RS256", "RS384", "RS512"]; + var HS_ALGS = ["HS256", "HS384", "HS512"]; + if (PS_SUPPORTED) { + PUB_KEY_ALGS.splice(PUB_KEY_ALGS.length, 0, "PS256", "PS384", "PS512"); + RSA_KEY_ALGS.splice(RSA_KEY_ALGS.length, 0, "PS256", "PS384", "PS512"); + } + module2.exports = function(jwtString, secretOrPublicKey, options, callback) { + if (typeof options === "function" && !callback) { + callback = options; + options = {}; + } + if (!options) { + options = {}; + } + options = Object.assign({}, options); + let done; + if (callback) { + done = callback; + } else { + done = function(err, data) { + if (err) throw err; + return data; + }; + } + if (options.clockTimestamp && typeof options.clockTimestamp !== "number") { + return done(new JsonWebTokenError2("clockTimestamp must be a number")); + } + if (options.nonce !== void 0 && (typeof options.nonce !== "string" || options.nonce.trim() === "")) { + return done(new JsonWebTokenError2("nonce must be a non-empty string")); + } + if (options.allowInvalidAsymmetricKeyTypes !== void 0 && typeof options.allowInvalidAsymmetricKeyTypes !== "boolean") { + return done(new JsonWebTokenError2("allowInvalidAsymmetricKeyTypes must be a boolean")); + } + const clockTimestamp = options.clockTimestamp || Math.floor(Date.now() / 1e3); + if (!jwtString) { + return done(new JsonWebTokenError2("jwt must be provided")); + } + if (typeof jwtString !== "string") { + return done(new JsonWebTokenError2("jwt must be a string")); + } + const parts = jwtString.split("."); + if (parts.length !== 3) { + return done(new JsonWebTokenError2("jwt malformed")); + } + let decodedToken; + try { + decodedToken = decode(jwtString, { complete: true }); + } catch (err) { + return done(err); + } + if (!decodedToken) { + return done(new JsonWebTokenError2("invalid token")); + } + const header = decodedToken.header; + let getSecret; + if (typeof secretOrPublicKey === "function") { + if (!callback) { + return done(new JsonWebTokenError2("verify must be called asynchronous if secret or public key is provided as a callback")); + } + getSecret = secretOrPublicKey; + } else { + getSecret = function(header2, secretCallback) { + return secretCallback(null, secretOrPublicKey); + }; + } + return getSecret(header, function(err, secretOrPublicKey2) { + if (err) { + return done(new JsonWebTokenError2("error in secret or public key callback: " + err.message)); + } + const hasSignature = parts[2].trim() !== ""; + if (!hasSignature && secretOrPublicKey2) { + return done(new JsonWebTokenError2("jwt signature is required")); + } + if (hasSignature && !secretOrPublicKey2) { + return done(new JsonWebTokenError2("secret or public key must be provided")); + } + if (!hasSignature && !options.algorithms) { + return done(new JsonWebTokenError2('please specify "none" in "algorithms" to verify unsigned tokens')); + } + if (secretOrPublicKey2 != null && !(secretOrPublicKey2 instanceof KeyObject)) { + try { + secretOrPublicKey2 = createPublicKey(secretOrPublicKey2); + } catch (_) { + try { + secretOrPublicKey2 = createSecretKey(typeof secretOrPublicKey2 === "string" ? Buffer.from(secretOrPublicKey2) : secretOrPublicKey2); + } catch (_2) { + return done(new JsonWebTokenError2("secretOrPublicKey is not valid key material")); + } + } + } + if (!options.algorithms) { + if (secretOrPublicKey2.type === "secret") { + options.algorithms = HS_ALGS; + } else if (["rsa", "rsa-pss"].includes(secretOrPublicKey2.asymmetricKeyType)) { + options.algorithms = RSA_KEY_ALGS; + } else if (secretOrPublicKey2.asymmetricKeyType === "ec") { + options.algorithms = EC_KEY_ALGS; + } else { + options.algorithms = PUB_KEY_ALGS; + } + } + if (options.algorithms.indexOf(decodedToken.header.alg) === -1) { + return done(new JsonWebTokenError2("invalid algorithm")); + } + if (header.alg.startsWith("HS") && secretOrPublicKey2.type !== "secret") { + return done(new JsonWebTokenError2(`secretOrPublicKey must be a symmetric key when using ${header.alg}`)); + } else if (/^(?:RS|PS|ES)/.test(header.alg) && secretOrPublicKey2.type !== "public") { + return done(new JsonWebTokenError2(`secretOrPublicKey must be an asymmetric key when using ${header.alg}`)); + } + if (!options.allowInvalidAsymmetricKeyTypes) { + try { + validateAsymmetricKey(header.alg, secretOrPublicKey2); + } catch (e) { + return done(e); + } + } + let valid; + try { + valid = jws.verify(jwtString, decodedToken.header.alg, secretOrPublicKey2); + } catch (e) { + return done(e); + } + if (!valid) { + return done(new JsonWebTokenError2("invalid signature")); + } + const payload = decodedToken.payload; + if (typeof payload.nbf !== "undefined" && !options.ignoreNotBefore) { + if (typeof payload.nbf !== "number") { + return done(new JsonWebTokenError2("invalid nbf value")); + } + if (payload.nbf > clockTimestamp + (options.clockTolerance || 0)) { + return done(new NotBeforeError2("jwt not active", new Date(payload.nbf * 1e3))); + } + } + if (typeof payload.exp !== "undefined" && !options.ignoreExpiration) { + if (typeof payload.exp !== "number") { + return done(new JsonWebTokenError2("invalid exp value")); + } + if (clockTimestamp >= payload.exp + (options.clockTolerance || 0)) { + return done(new TokenExpiredError2("jwt expired", new Date(payload.exp * 1e3))); + } + } + if (options.audience) { + const audiences = Array.isArray(options.audience) ? options.audience : [options.audience]; + const target = Array.isArray(payload.aud) ? payload.aud : [payload.aud]; + const match = target.some(function(targetAudience) { + return audiences.some(function(audience) { + return audience instanceof RegExp ? audience.test(targetAudience) : audience === targetAudience; + }); + }); + if (!match) { + return done(new JsonWebTokenError2("jwt audience invalid. expected: " + audiences.join(" or "))); + } + } + if (options.issuer) { + const invalid_issuer = typeof options.issuer === "string" && payload.iss !== options.issuer || Array.isArray(options.issuer) && options.issuer.indexOf(payload.iss) === -1; + if (invalid_issuer) { + return done(new JsonWebTokenError2("jwt issuer invalid. expected: " + options.issuer)); + } + } + if (options.subject) { + if (payload.sub !== options.subject) { + return done(new JsonWebTokenError2("jwt subject invalid. expected: " + options.subject)); + } + } + if (options.jwtid) { + if (payload.jti !== options.jwtid) { + return done(new JsonWebTokenError2("jwt jwtid invalid. expected: " + options.jwtid)); + } + } + if (options.nonce) { + if (payload.nonce !== options.nonce) { + return done(new JsonWebTokenError2("jwt nonce invalid. expected: " + options.nonce)); + } + } + if (options.maxAge) { + if (typeof payload.iat !== "number") { + return done(new JsonWebTokenError2("iat required when maxAge is specified")); + } + const maxAgeTimestamp = timespan(options.maxAge, payload.iat); + if (typeof maxAgeTimestamp === "undefined") { + return done(new JsonWebTokenError2('"maxAge" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60')); + } + if (clockTimestamp >= maxAgeTimestamp + (options.clockTolerance || 0)) { + return done(new TokenExpiredError2("maxAge exceeded", new Date(maxAgeTimestamp * 1e3))); + } + } + if (options.complete === true) { + const signature = decodedToken.signature; + return done(null, { + header, + payload, + signature + }); + } + return done(null, payload); + }); + }; + } +}); + +// ../../node_modules/.pnpm/lodash.includes@4.3.0/node_modules/lodash.includes/index.js +var require_lodash = __commonJS({ + "../../node_modules/.pnpm/lodash.includes@4.3.0/node_modules/lodash.includes/index.js"(exports2, module2) { + var INFINITY = 1 / 0; + var MAX_SAFE_INTEGER = 9007199254740991; + var MAX_INTEGER = 17976931348623157e292; + var NAN = 0 / 0; + var argsTag = "[object Arguments]"; + var funcTag = "[object Function]"; + var genTag = "[object GeneratorFunction]"; + var stringTag = "[object String]"; + var symbolTag = "[object Symbol]"; + var reTrim = /^\s+|\s+$/g; + var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + var reIsBinary = /^0b[01]+$/i; + var reIsOctal = /^0o[0-7]+$/i; + var reIsUint = /^(?:0|[1-9]\d*)$/; + var freeParseInt = parseInt; + function arrayMap(array, iteratee) { + var index = -1, length = array ? array.length : 0, result = Array(length); + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; + } + function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, index = fromIndex + (fromRight ? 1 : -1); + while (fromRight ? index-- : ++index < length) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; + } + function baseIndexOf(array, value, fromIndex) { + if (value !== value) { + return baseFindIndex(array, baseIsNaN, fromIndex); + } + var index = fromIndex - 1, length = array.length; + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; + } + function baseIsNaN(value) { + return value !== value; + } + function baseTimes(n, iteratee) { + var index = -1, result = Array(n); + while (++index < n) { + result[index] = iteratee(index); + } + return result; + } + function baseValues(object, props) { + return arrayMap(props, function(key) { + return object[key]; + }); + } + function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; + } + var objectProto = Object.prototype; + var hasOwnProperty = objectProto.hasOwnProperty; + var objectToString = objectProto.toString; + var propertyIsEnumerable = objectProto.propertyIsEnumerable; + var nativeKeys = overArg(Object.keys, Object); + var nativeMax = Math.max; + function arrayLikeKeys(value, inherited) { + var result = isArray(value) || isArguments(value) ? baseTimes(value.length, String) : []; + var length = result.length, skipIndexes = !!length; + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == "length" || isIndex(key, length)))) { + result.push(key); + } + } + return result; + } + function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != "constructor") { + result.push(key); + } + } + return result; + } + function isIndex(value, length) { + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && (typeof value == "number" || reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length); + } + function isPrototype(value) { + var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto; + return value === proto; + } + function includes(collection, value, fromIndex, guard) { + collection = isArrayLike(collection) ? collection : values(collection); + fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0; + var length = collection.length; + if (fromIndex < 0) { + fromIndex = nativeMax(length + fromIndex, 0); + } + return isString(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1; + } + function isArguments(value) { + return isArrayLikeObject(value) && hasOwnProperty.call(value, "callee") && (!propertyIsEnumerable.call(value, "callee") || objectToString.call(value) == argsTag); + } + var isArray = Array.isArray; + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); + } + function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); + } + function isFunction(value) { + var tag = isObject(value) ? objectToString.call(value) : ""; + return tag == funcTag || tag == genTag; + } + function isLength(value) { + return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + function isObject(value) { + var type = typeof value; + return !!value && (type == "object" || type == "function"); + } + function isObjectLike(value) { + return !!value && typeof value == "object"; + } + function isString(value) { + return typeof value == "string" || !isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag; + } + function isSymbol(value) { + return typeof value == "symbol" || isObjectLike(value) && objectToString.call(value) == symbolTag; + } + function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = value < 0 ? -1 : 1; + return sign * MAX_INTEGER; + } + return value === value ? value : 0; + } + function toInteger(value) { + var result = toFinite(value), remainder = result % 1; + return result === result ? remainder ? result - remainder : result : 0; + } + function toNumber(value) { + if (typeof value == "number") { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == "function" ? value.valueOf() : value; + value = isObject(other) ? other + "" : other; + } + if (typeof value != "string") { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ""); + var isBinary = reIsBinary.test(value); + return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value; + } + function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); + } + function values(object) { + return object ? baseValues(object, keys(object)) : []; + } + module2.exports = includes; + } +}); + +// ../../node_modules/.pnpm/lodash.isboolean@3.0.3/node_modules/lodash.isboolean/index.js +var require_lodash2 = __commonJS({ + "../../node_modules/.pnpm/lodash.isboolean@3.0.3/node_modules/lodash.isboolean/index.js"(exports2, module2) { + var boolTag = "[object Boolean]"; + var objectProto = Object.prototype; + var objectToString = objectProto.toString; + function isBoolean(value) { + return value === true || value === false || isObjectLike(value) && objectToString.call(value) == boolTag; + } + function isObjectLike(value) { + return !!value && typeof value == "object"; + } + module2.exports = isBoolean; + } +}); + +// ../../node_modules/.pnpm/lodash.isinteger@4.0.4/node_modules/lodash.isinteger/index.js +var require_lodash3 = __commonJS({ + "../../node_modules/.pnpm/lodash.isinteger@4.0.4/node_modules/lodash.isinteger/index.js"(exports2, module2) { + var INFINITY = 1 / 0; + var MAX_INTEGER = 17976931348623157e292; + var NAN = 0 / 0; + var symbolTag = "[object Symbol]"; + var reTrim = /^\s+|\s+$/g; + var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + var reIsBinary = /^0b[01]+$/i; + var reIsOctal = /^0o[0-7]+$/i; + var freeParseInt = parseInt; + var objectProto = Object.prototype; + var objectToString = objectProto.toString; + function isInteger(value) { + return typeof value == "number" && value == toInteger(value); + } + function isObject(value) { + var type = typeof value; + return !!value && (type == "object" || type == "function"); + } + function isObjectLike(value) { + return !!value && typeof value == "object"; + } + function isSymbol(value) { + return typeof value == "symbol" || isObjectLike(value) && objectToString.call(value) == symbolTag; + } + function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = value < 0 ? -1 : 1; + return sign * MAX_INTEGER; + } + return value === value ? value : 0; + } + function toInteger(value) { + var result = toFinite(value), remainder = result % 1; + return result === result ? remainder ? result - remainder : result : 0; + } + function toNumber(value) { + if (typeof value == "number") { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == "function" ? value.valueOf() : value; + value = isObject(other) ? other + "" : other; + } + if (typeof value != "string") { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ""); + var isBinary = reIsBinary.test(value); + return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value; + } + module2.exports = isInteger; + } +}); + +// ../../node_modules/.pnpm/lodash.isnumber@3.0.3/node_modules/lodash.isnumber/index.js +var require_lodash4 = __commonJS({ + "../../node_modules/.pnpm/lodash.isnumber@3.0.3/node_modules/lodash.isnumber/index.js"(exports2, module2) { + var numberTag = "[object Number]"; + var objectProto = Object.prototype; + var objectToString = objectProto.toString; + function isObjectLike(value) { + return !!value && typeof value == "object"; + } + function isNumber(value) { + return typeof value == "number" || isObjectLike(value) && objectToString.call(value) == numberTag; + } + module2.exports = isNumber; + } +}); + +// ../../node_modules/.pnpm/lodash.isplainobject@4.0.6/node_modules/lodash.isplainobject/index.js +var require_lodash5 = __commonJS({ + "../../node_modules/.pnpm/lodash.isplainobject@4.0.6/node_modules/lodash.isplainobject/index.js"(exports2, module2) { + var objectTag = "[object Object]"; + function isHostObject(value) { + var result = false; + if (value != null && typeof value.toString != "function") { + try { + result = !!(value + ""); + } catch (e) { + } + } + return result; + } + function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; + } + var funcProto = Function.prototype; + var objectProto = Object.prototype; + var funcToString = funcProto.toString; + var hasOwnProperty = objectProto.hasOwnProperty; + var objectCtorString = funcToString.call(Object); + var objectToString = objectProto.toString; + var getPrototype = overArg(Object.getPrototypeOf, Object); + function isObjectLike(value) { + return !!value && typeof value == "object"; + } + function isPlainObject(value) { + if (!isObjectLike(value) || objectToString.call(value) != objectTag || isHostObject(value)) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, "constructor") && proto.constructor; + return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString; + } + module2.exports = isPlainObject; + } +}); + +// ../../node_modules/.pnpm/lodash.isstring@4.0.1/node_modules/lodash.isstring/index.js +var require_lodash6 = __commonJS({ + "../../node_modules/.pnpm/lodash.isstring@4.0.1/node_modules/lodash.isstring/index.js"(exports2, module2) { + var stringTag = "[object String]"; + var objectProto = Object.prototype; + var objectToString = objectProto.toString; + var isArray = Array.isArray; + function isObjectLike(value) { + return !!value && typeof value == "object"; + } + function isString(value) { + return typeof value == "string" || !isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag; + } + module2.exports = isString; + } +}); + +// ../../node_modules/.pnpm/lodash.once@4.1.1/node_modules/lodash.once/index.js +var require_lodash7 = __commonJS({ + "../../node_modules/.pnpm/lodash.once@4.1.1/node_modules/lodash.once/index.js"(exports2, module2) { + var FUNC_ERROR_TEXT = "Expected a function"; + var INFINITY = 1 / 0; + var MAX_INTEGER = 17976931348623157e292; + var NAN = 0 / 0; + var symbolTag = "[object Symbol]"; + var reTrim = /^\s+|\s+$/g; + var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + var reIsBinary = /^0b[01]+$/i; + var reIsOctal = /^0o[0-7]+$/i; + var freeParseInt = parseInt; + var objectProto = Object.prototype; + var objectToString = objectProto.toString; + function before(n, func) { + var result; + if (typeof func != "function") { + throw new TypeError(FUNC_ERROR_TEXT); + } + n = toInteger(n); + return function() { + if (--n > 0) { + result = func.apply(this, arguments); + } + if (n <= 1) { + func = void 0; + } + return result; + }; + } + function once(func) { + return before(2, func); + } + function isObject(value) { + var type = typeof value; + return !!value && (type == "object" || type == "function"); + } + function isObjectLike(value) { + return !!value && typeof value == "object"; + } + function isSymbol(value) { + return typeof value == "symbol" || isObjectLike(value) && objectToString.call(value) == symbolTag; + } + function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = value < 0 ? -1 : 1; + return sign * MAX_INTEGER; + } + return value === value ? value : 0; + } + function toInteger(value) { + var result = toFinite(value), remainder = result % 1; + return result === result ? remainder ? result - remainder : result : 0; + } + function toNumber(value) { + if (typeof value == "number") { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == "function" ? value.valueOf() : value; + value = isObject(other) ? other + "" : other; + } + if (typeof value != "string") { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ""); + var isBinary = reIsBinary.test(value); + return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value; + } + module2.exports = once; + } +}); + +// ../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/sign.js +var require_sign2 = __commonJS({ + "../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/sign.js"(exports2, module2) { + var timespan = require_timespan(); + var PS_SUPPORTED = require_psSupported(); + var validateAsymmetricKey = require_validateAsymmetricKey(); + var jws = require_jws(); + var includes = require_lodash(); + var isBoolean = require_lodash2(); + var isInteger = require_lodash3(); + var isNumber = require_lodash4(); + var isPlainObject = require_lodash5(); + var isString = require_lodash6(); + var once = require_lodash7(); + var { KeyObject, createSecretKey, createPrivateKey } = require("crypto"); + var SUPPORTED_ALGS = ["RS256", "RS384", "RS512", "ES256", "ES384", "ES512", "HS256", "HS384", "HS512", "none"]; + if (PS_SUPPORTED) { + SUPPORTED_ALGS.splice(3, 0, "PS256", "PS384", "PS512"); + } + var sign_options_schema = { + expiresIn: { isValid: function(value) { + return isInteger(value) || isString(value) && value; + }, message: '"expiresIn" should be a number of seconds or string representing a timespan' }, + notBefore: { isValid: function(value) { + return isInteger(value) || isString(value) && value; + }, message: '"notBefore" should be a number of seconds or string representing a timespan' }, + audience: { isValid: function(value) { + return isString(value) || Array.isArray(value); + }, message: '"audience" must be a string or array' }, + algorithm: { isValid: includes.bind(null, SUPPORTED_ALGS), message: '"algorithm" must be a valid string enum value' }, + header: { isValid: isPlainObject, message: '"header" must be an object' }, + encoding: { isValid: isString, message: '"encoding" must be a string' }, + issuer: { isValid: isString, message: '"issuer" must be a string' }, + subject: { isValid: isString, message: '"subject" must be a string' }, + jwtid: { isValid: isString, message: '"jwtid" must be a string' }, + noTimestamp: { isValid: isBoolean, message: '"noTimestamp" must be a boolean' }, + keyid: { isValid: isString, message: '"keyid" must be a string' }, + mutatePayload: { isValid: isBoolean, message: '"mutatePayload" must be a boolean' }, + allowInsecureKeySizes: { isValid: isBoolean, message: '"allowInsecureKeySizes" must be a boolean' }, + allowInvalidAsymmetricKeyTypes: { isValid: isBoolean, message: '"allowInvalidAsymmetricKeyTypes" must be a boolean' } + }; + var registered_claims_schema = { + iat: { isValid: isNumber, message: '"iat" should be a number of seconds' }, + exp: { isValid: isNumber, message: '"exp" should be a number of seconds' }, + nbf: { isValid: isNumber, message: '"nbf" should be a number of seconds' } + }; + function validate(schema, allowUnknown, object, parameterName) { + if (!isPlainObject(object)) { + throw new Error('Expected "' + parameterName + '" to be a plain object.'); + } + Object.keys(object).forEach(function(key) { + const validator = schema[key]; + if (!validator) { + if (!allowUnknown) { + throw new Error('"' + key + '" is not allowed in "' + parameterName + '"'); + } + return; + } + if (!validator.isValid(object[key])) { + throw new Error(validator.message); + } + }); + } + function validateOptions(options) { + return validate(sign_options_schema, false, options, "options"); + } + function validatePayload(payload) { + return validate(registered_claims_schema, true, payload, "payload"); + } + var options_to_payload = { + "audience": "aud", + "issuer": "iss", + "subject": "sub", + "jwtid": "jti" + }; + var options_for_objects = [ + "expiresIn", + "notBefore", + "noTimestamp", + "audience", + "issuer", + "subject", + "jwtid" + ]; + module2.exports = function(payload, secretOrPrivateKey, options, callback) { + if (typeof options === "function") { + callback = options; + options = {}; + } else { + options = options || {}; + } + const isObjectPayload = typeof payload === "object" && !Buffer.isBuffer(payload); + const header = Object.assign({ + alg: options.algorithm || "HS256", + typ: isObjectPayload ? "JWT" : void 0, + kid: options.keyid + }, options.header); + function failure(err) { + if (callback) { + return callback(err); + } + throw err; + } + if (!secretOrPrivateKey && options.algorithm !== "none") { + return failure(new Error("secretOrPrivateKey must have a value")); + } + if (secretOrPrivateKey != null && !(secretOrPrivateKey instanceof KeyObject)) { + try { + secretOrPrivateKey = createPrivateKey(secretOrPrivateKey); + } catch (_) { + try { + secretOrPrivateKey = createSecretKey(typeof secretOrPrivateKey === "string" ? Buffer.from(secretOrPrivateKey) : secretOrPrivateKey); + } catch (_2) { + return failure(new Error("secretOrPrivateKey is not valid key material")); + } + } + } + if (header.alg.startsWith("HS") && secretOrPrivateKey.type !== "secret") { + return failure(new Error(`secretOrPrivateKey must be a symmetric key when using ${header.alg}`)); + } else if (/^(?:RS|PS|ES)/.test(header.alg)) { + if (secretOrPrivateKey.type !== "private") { + return failure(new Error(`secretOrPrivateKey must be an asymmetric key when using ${header.alg}`)); + } + if (!options.allowInsecureKeySizes && !header.alg.startsWith("ES") && secretOrPrivateKey.asymmetricKeyDetails !== void 0 && //KeyObject.asymmetricKeyDetails is supported in Node 15+ + secretOrPrivateKey.asymmetricKeyDetails.modulusLength < 2048) { + return failure(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`)); + } + } + if (typeof payload === "undefined") { + return failure(new Error("payload is required")); + } else if (isObjectPayload) { + try { + validatePayload(payload); + } catch (error) { + return failure(error); + } + if (!options.mutatePayload) { + payload = Object.assign({}, payload); + } + } else { + const invalid_options = options_for_objects.filter(function(opt) { + return typeof options[opt] !== "undefined"; + }); + if (invalid_options.length > 0) { + return failure(new Error("invalid " + invalid_options.join(",") + " option for " + typeof payload + " payload")); + } + } + if (typeof payload.exp !== "undefined" && typeof options.expiresIn !== "undefined") { + return failure(new Error('Bad "options.expiresIn" option the payload already has an "exp" property.')); + } + if (typeof payload.nbf !== "undefined" && typeof options.notBefore !== "undefined") { + return failure(new Error('Bad "options.notBefore" option the payload already has an "nbf" property.')); + } + try { + validateOptions(options); + } catch (error) { + return failure(error); + } + if (!options.allowInvalidAsymmetricKeyTypes) { + try { + validateAsymmetricKey(header.alg, secretOrPrivateKey); + } catch (error) { + return failure(error); + } + } + const timestamp = payload.iat || Math.floor(Date.now() / 1e3); + if (options.noTimestamp) { + delete payload.iat; + } else if (isObjectPayload) { + payload.iat = timestamp; + } + if (typeof options.notBefore !== "undefined") { + try { + payload.nbf = timespan(options.notBefore, timestamp); + } catch (err) { + return failure(err); + } + if (typeof payload.nbf === "undefined") { + return failure(new Error('"notBefore" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60')); + } + } + if (typeof options.expiresIn !== "undefined" && typeof payload === "object") { + try { + payload.exp = timespan(options.expiresIn, timestamp); + } catch (err) { + return failure(err); + } + if (typeof payload.exp === "undefined") { + return failure(new Error('"expiresIn" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60')); + } + } + Object.keys(options_to_payload).forEach(function(key) { + const claim = options_to_payload[key]; + if (typeof options[key] !== "undefined") { + if (typeof payload[claim] !== "undefined") { + return failure(new Error('Bad "options.' + key + '" option. The payload already has an "' + claim + '" property.')); + } + payload[claim] = options[key]; + } + }); + const encoding = options.encoding || "utf8"; + if (typeof callback === "function") { + callback = callback && once(callback); + jws.createSign({ + header, + privateKey: secretOrPrivateKey, + payload, + encoding + }).once("error", callback).once("done", function(signature) { + if (!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) { + return callback(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`)); + } + callback(null, signature); + }); + } else { + let signature = jws.sign({ header, payload, secret: secretOrPrivateKey, encoding }); + if (!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) { + throw new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`); + } + return signature; + } + }; + } +}); + +// ../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/index.js +var require_jsonwebtoken = __commonJS({ + "../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/index.js"(exports2, module2) { + module2.exports = { + decode: require_decode(), + verify: require_verify(), + sign: require_sign2(), + JsonWebTokenError: require_JsonWebTokenError(), + NotBeforeError: require_NotBeforeError(), + TokenExpiredError: require_TokenExpiredError() + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+jwt@12.0.1_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_refl_zbpccjiygvsshg6zwdywiadlwy/node_modules/@nestjs/jwt/dist/interfaces/jwt-module-options.interface.js +var JwtSecretRequestType; +var init_jwt_module_options_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+jwt@12.0.1_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_refl_zbpccjiygvsshg6zwdywiadlwy/node_modules/@nestjs/jwt/dist/interfaces/jwt-module-options.interface.js"() { + (function(JwtSecretRequestType2) { + JwtSecretRequestType2[JwtSecretRequestType2["SIGN"] = 0] = "SIGN"; + JwtSecretRequestType2[JwtSecretRequestType2["VERIFY"] = 1] = "VERIFY"; + })(JwtSecretRequestType || (JwtSecretRequestType = {})); + } +}); + +// ../../node_modules/.pnpm/@nestjs+jwt@12.0.1_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_refl_zbpccjiygvsshg6zwdywiadlwy/node_modules/@nestjs/jwt/dist/interfaces/index.js +var init_interfaces = __esm({ + "../../node_modules/.pnpm/@nestjs+jwt@12.0.1_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_refl_zbpccjiygvsshg6zwdywiadlwy/node_modules/@nestjs/jwt/dist/interfaces/index.js"() { + init_jwt_module_options_interface(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+jwt@12.0.1_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_refl_zbpccjiygvsshg6zwdywiadlwy/node_modules/@nestjs/jwt/dist/jwt.errors.js +var WrongSecretProviderError; +var init_jwt_errors = __esm({ + "../../node_modules/.pnpm/@nestjs+jwt@12.0.1_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_refl_zbpccjiygvsshg6zwdywiadlwy/node_modules/@nestjs/jwt/dist/jwt.errors.js"() { + WrongSecretProviderError = class extends Error { + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+jwt@12.0.1_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_refl_zbpccjiygvsshg6zwdywiadlwy/node_modules/@nestjs/jwt/dist/jwt.constants.js +var JWT_MODULE_OPTIONS; +var init_jwt_constants = __esm({ + "../../node_modules/.pnpm/@nestjs+jwt@12.0.1_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_refl_zbpccjiygvsshg6zwdywiadlwy/node_modules/@nestjs/jwt/dist/jwt.constants.js"() { + JWT_MODULE_OPTIONS = "JWT_MODULE_OPTIONS"; + } +}); + +// ../../node_modules/.pnpm/@nestjs+jwt@12.0.1_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_refl_zbpccjiygvsshg6zwdywiadlwy/node_modules/@nestjs/jwt/dist/jwt.providers.js +function createJwtProvider(options) { + return [{ provide: JWT_MODULE_OPTIONS, useValue: options || {} }]; +} +var init_jwt_providers = __esm({ + "../../node_modules/.pnpm/@nestjs+jwt@12.0.1_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_refl_zbpccjiygvsshg6zwdywiadlwy/node_modules/@nestjs/jwt/dist/jwt.providers.js"() { + init_jwt_constants(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+jwt@12.0.1_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_refl_zbpccjiygvsshg6zwdywiadlwy/node_modules/@nestjs/jwt/dist/jwt.service.js +var import_common, import_jsonwebtoken, __decorate2, __metadata2, __param2, JwtService; +var init_jwt_service = __esm({ + "../../node_modules/.pnpm/@nestjs+jwt@12.0.1_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_refl_zbpccjiygvsshg6zwdywiadlwy/node_modules/@nestjs/jwt/dist/jwt.service.js"() { + import_common = __toESM(require_common(), 1); + import_jsonwebtoken = __toESM(require_jsonwebtoken(), 1); + init_interfaces(); + init_jwt_constants(); + init_jwt_errors(); + __decorate2 = function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + __metadata2 = function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + __param2 = function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + JwtService = class JwtService2 { + constructor(options = {}) { + this.options = options; + this.logger = new import_common.Logger("JwtService"); + } + sign(payload, options) { + const signOptions = this.mergeJwtOptions({ ...options }, "signOptions"); + const secret = this.getSecretKey(payload, options, "privateKey", JwtSecretRequestType.SIGN); + if (secret instanceof Promise) { + secret.catch(() => { + }); + this.logger.warn('For async version of "secretOrKeyProvider", please use "signAsync".'); + throw new WrongSecretProviderError(); + } + const allowedSignOptKeys = ["secret", "privateKey"]; + const signOptKeys = Object.keys(signOptions); + if (typeof payload === "string" && signOptKeys.some((k) => !allowedSignOptKeys.includes(k))) { + throw new Error("Payload as string is not allowed with the following sign options: " + signOptKeys.join(", ")); + } + return import_jsonwebtoken.default.sign(payload, secret, signOptions); + } + signAsync(payload, options) { + const signOptions = this.mergeJwtOptions({ ...options }, "signOptions"); + const secret = this.getSecretKey(payload, options, "privateKey", JwtSecretRequestType.SIGN); + const allowedSignOptKeys = ["secret", "privateKey"]; + const signOptKeys = Object.keys(signOptions); + if (typeof payload === "string" && signOptKeys.some((k) => !allowedSignOptKeys.includes(k))) { + throw new Error("Payload as string is not allowed with the following sign options: " + signOptKeys.join(", ")); + } + return new Promise((resolve, reject) => Promise.resolve().then(() => secret).then((scrt) => { + import_jsonwebtoken.default.sign(payload, scrt, signOptions, (err, encoded) => err ? reject(err) : resolve(encoded)); + })); + } + verify(token, options) { + const verifyOptions = this.mergeJwtOptions({ ...options }, "verifyOptions"); + const secret = this.getSecretKey(token, options, "publicKey", JwtSecretRequestType.VERIFY); + if (secret instanceof Promise) { + secret.catch(() => { + }); + this.logger.warn('For async version of "secretOrKeyProvider", please use "verifyAsync".'); + throw new WrongSecretProviderError(); + } + return import_jsonwebtoken.default.verify(token, secret, verifyOptions); + } + verifyAsync(token, options) { + const verifyOptions = this.mergeJwtOptions({ ...options }, "verifyOptions"); + const secret = this.getSecretKey(token, options, "publicKey", JwtSecretRequestType.VERIFY); + return new Promise((resolve, reject) => Promise.resolve().then(() => secret).then((scrt) => { + import_jsonwebtoken.default.verify(token, scrt, verifyOptions, (err, decoded) => err ? reject(err) : resolve(decoded)); + }).catch(reject)); + } + decode(token, options) { + return import_jsonwebtoken.default.decode(token, options); + } + mergeJwtOptions(options, key) { + delete options.secret; + if (key === "signOptions") { + delete options.privateKey; + } else { + delete options.publicKey; + } + return options ? { ...this.options[key] || {}, ...options } : this.options[key]; + } + overrideSecretFromOptions(secret) { + if (this.options.secretOrPrivateKey) { + this.logger.warn(`"secretOrPrivateKey" has been deprecated, please use the new explicit "secret" or use "secretOrKeyProvider" or "privateKey"/"publicKey" exclusively.`); + secret = this.options.secretOrPrivateKey; + } + return secret; + } + getSecretKey(token, options, key, secretRequestType) { + const secret = this.options.secretOrKeyProvider ? this.options.secretOrKeyProvider(secretRequestType, token, options) : options?.secret || this.options.secret || (key === "privateKey" ? options?.privateKey || this.options.privateKey : options?.publicKey || this.options.publicKey) || this.options[key]; + return secret instanceof Promise ? secret.then((sec) => this.overrideSecretFromOptions(sec)) : this.overrideSecretFromOptions(secret); + } + }; + JwtService = __decorate2([ + (0, import_common.Injectable)(), + __param2(0, (0, import_common.Optional)()), + __param2(0, (0, import_common.Inject)(JWT_MODULE_OPTIONS)), + __metadata2("design:paramtypes", [Object]) + ], JwtService); + } +}); + +// ../../node_modules/.pnpm/@nestjs+jwt@12.0.1_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_refl_zbpccjiygvsshg6zwdywiadlwy/node_modules/@nestjs/jwt/dist/jwt.module.js +var import_common2, __decorate3, JwtModule_1, JwtModule; +var init_jwt_module = __esm({ + "../../node_modules/.pnpm/@nestjs+jwt@12.0.1_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_refl_zbpccjiygvsshg6zwdywiadlwy/node_modules/@nestjs/jwt/dist/jwt.module.js"() { + import_common2 = __toESM(require_common(), 1); + init_jwt_constants(); + init_jwt_providers(); + init_jwt_service(); + __decorate3 = function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + JwtModule = JwtModule_1 = class JwtModule2 { + static register(options) { + return { + module: JwtModule_1, + global: options.global, + providers: createJwtProvider(options) + }; + } + static registerAsync(options) { + return { + module: JwtModule_1, + global: options.global, + imports: options.imports || [], + providers: [ + ...this.createAsyncProviders(options), + ...options.extraProviders ?? [] + ] + }; + } + static createAsyncProviders(options) { + if (options.useExisting || options.useFactory) { + return [this.createAsyncOptionsProvider(options)]; + } + return [ + this.createAsyncOptionsProvider(options), + { + provide: options.useClass, + useClass: options.useClass + } + ]; + } + static createAsyncOptionsProvider(options) { + if (options.useFactory) { + return { + provide: JWT_MODULE_OPTIONS, + useFactory: options.useFactory, + inject: options.inject || [] + }; + } + return { + provide: JWT_MODULE_OPTIONS, + useFactory: async (optionsFactory) => await optionsFactory.createJwtOptions(), + inject: [options.useExisting || options.useClass] + }; + } + }; + JwtModule = JwtModule_1 = __decorate3([ + (0, import_common2.Module)({ + providers: [JwtService], + exports: [JwtService] + }) + ], JwtModule); + } +}); + +// ../../node_modules/.pnpm/@nestjs+jwt@12.0.1_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_refl_zbpccjiygvsshg6zwdywiadlwy/node_modules/@nestjs/jwt/dist/index.js +var dist_exports = {}; +__export(dist_exports, { + JsonWebTokenError: () => JsonWebTokenError, + JwtModule: () => JwtModule, + JwtSecretRequestType: () => JwtSecretRequestType, + JwtService: () => JwtService, + NotBeforeError: () => NotBeforeError, + TokenExpiredError: () => TokenExpiredError, + WrongSecretProviderError: () => WrongSecretProviderError +}); +var import_jsonwebtoken2, TokenExpiredError, NotBeforeError, JsonWebTokenError; +var init_dist = __esm({ + "../../node_modules/.pnpm/@nestjs+jwt@12.0.1_@nestjs+common@10.4.22_class-transformer@0.5.1_class-validator@0.14.4_refl_zbpccjiygvsshg6zwdywiadlwy/node_modules/@nestjs/jwt/dist/index.js"() { + import_jsonwebtoken2 = __toESM(require_jsonwebtoken(), 1); + init_interfaces(); + init_jwt_errors(); + init_jwt_module(); + init_jwt_service(); + TokenExpiredError = import_jsonwebtoken2.default.TokenExpiredError; + NotBeforeError = import_jsonwebtoken2.default.NotBeforeError; + JsonWebTokenError = import_jsonwebtoken2.default.JsonWebTokenError; + } +}); + +// ../../node_modules/.pnpm/bcryptjs@3.0.3/node_modules/bcryptjs/umd/index.js +var require_umd = __commonJS({ + "../../node_modules/.pnpm/bcryptjs@3.0.3/node_modules/bcryptjs/umd/index.js"(exports2, module2) { + (function(global2, factory) { + function preferDefault(exports3) { + return exports3.default || exports3; + } + if (typeof define === "function" && define.amd) { + define(["crypto"], function(_crypto) { + var exports3 = {}; + factory(exports3, _crypto); + return preferDefault(exports3); + }); + } else if (typeof exports2 === "object") { + factory(exports2, require("crypto")); + if (typeof module2 === "object") module2.exports = preferDefault(exports2); + } else { + (function() { + var exports3 = {}; + factory(exports3, global2.crypto); + global2.bcrypt = preferDefault(exports3); + })(); + } + })( + typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : exports2, + function(_exports, _crypto) { + "use strict"; + Object.defineProperty(_exports, "__esModule", { + value: true + }); + _exports.compare = compare; + _exports.compareSync = compareSync; + _exports.decodeBase64 = decodeBase64; + _exports.default = void 0; + _exports.encodeBase64 = encodeBase64; + _exports.genSalt = genSalt; + _exports.genSaltSync = genSaltSync; + _exports.getRounds = getRounds; + _exports.getSalt = getSalt; + _exports.hash = hash; + _exports.hashSync = hashSync; + _exports.setRandomFallback = setRandomFallback; + _exports.truncates = truncates; + _crypto = _interopRequireDefault(_crypto); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { default: e }; + } + var randomFallback = null; + function randomBytes(len) { + try { + return crypto.getRandomValues(new Uint8Array(len)); + } catch { + } + try { + return _crypto.default.randomBytes(len); + } catch { + } + if (!randomFallback) { + throw Error( + "Neither WebCryptoAPI nor a crypto module is available. Use bcrypt.setRandomFallback to set an alternative" + ); + } + return randomFallback(len); + } + function setRandomFallback(random) { + randomFallback = random; + } + function genSaltSync(rounds, seed_length) { + rounds = rounds || GENSALT_DEFAULT_LOG2_ROUNDS; + if (typeof rounds !== "number") + throw Error( + "Illegal arguments: " + typeof rounds + ", " + typeof seed_length + ); + if (rounds < 4) rounds = 4; + else if (rounds > 31) rounds = 31; + var salt = []; + salt.push("$2b$"); + if (rounds < 10) salt.push("0"); + salt.push(rounds.toString()); + salt.push("$"); + salt.push(base64_encode(randomBytes(BCRYPT_SALT_LEN), BCRYPT_SALT_LEN)); + return salt.join(""); + } + function genSalt(rounds, seed_length, callback) { + if (typeof seed_length === "function") + callback = seed_length, seed_length = void 0; + if (typeof rounds === "function") + callback = rounds, rounds = void 0; + if (typeof rounds === "undefined") rounds = GENSALT_DEFAULT_LOG2_ROUNDS; + else if (typeof rounds !== "number") + throw Error("illegal arguments: " + typeof rounds); + function _async(callback2) { + nextTick(function() { + try { + callback2(null, genSaltSync(rounds)); + } catch (err) { + callback2(err); + } + }); + } + if (callback) { + if (typeof callback !== "function") + throw Error("Illegal callback: " + typeof callback); + _async(callback); + } else + return new Promise(function(resolve, reject) { + _async(function(err, res) { + if (err) { + reject(err); + return; + } + resolve(res); + }); + }); + } + function hashSync(password, salt) { + if (typeof salt === "undefined") salt = GENSALT_DEFAULT_LOG2_ROUNDS; + if (typeof salt === "number") salt = genSaltSync(salt); + if (typeof password !== "string" || typeof salt !== "string") + throw Error( + "Illegal arguments: " + typeof password + ", " + typeof salt + ); + return _hash(password, salt); + } + function hash(password, salt, callback, progressCallback) { + function _async(callback2) { + if (typeof password === "string" && typeof salt === "number") + genSalt(salt, function(err, salt2) { + _hash(password, salt2, callback2, progressCallback); + }); + else if (typeof password === "string" && typeof salt === "string") + _hash(password, salt, callback2, progressCallback); + else + nextTick( + callback2.bind( + this, + Error( + "Illegal arguments: " + typeof password + ", " + typeof salt + ) + ) + ); + } + if (callback) { + if (typeof callback !== "function") + throw Error("Illegal callback: " + typeof callback); + _async(callback); + } else + return new Promise(function(resolve, reject) { + _async(function(err, res) { + if (err) { + reject(err); + return; + } + resolve(res); + }); + }); + } + function safeStringCompare(known, unknown) { + var diff = known.length ^ unknown.length; + for (var i = 0; i < known.length; ++i) { + diff |= known.charCodeAt(i) ^ unknown.charCodeAt(i); + } + return diff === 0; + } + function compareSync(password, hash2) { + if (typeof password !== "string" || typeof hash2 !== "string") + throw Error( + "Illegal arguments: " + typeof password + ", " + typeof hash2 + ); + if (hash2.length !== 60) return false; + return safeStringCompare( + hashSync(password, hash2.substring(0, hash2.length - 31)), + hash2 + ); + } + function compare(password, hashValue, callback, progressCallback) { + function _async(callback2) { + if (typeof password !== "string" || typeof hashValue !== "string") { + nextTick( + callback2.bind( + this, + Error( + "Illegal arguments: " + typeof password + ", " + typeof hashValue + ) + ) + ); + return; + } + if (hashValue.length !== 60) { + nextTick(callback2.bind(this, null, false)); + return; + } + hash( + password, + hashValue.substring(0, 29), + function(err, comp) { + if (err) callback2(err); + else callback2(null, safeStringCompare(comp, hashValue)); + }, + progressCallback + ); + } + if (callback) { + if (typeof callback !== "function") + throw Error("Illegal callback: " + typeof callback); + _async(callback); + } else + return new Promise(function(resolve, reject) { + _async(function(err, res) { + if (err) { + reject(err); + return; + } + resolve(res); + }); + }); + } + function getRounds(hash2) { + if (typeof hash2 !== "string") + throw Error("Illegal arguments: " + typeof hash2); + return parseInt(hash2.split("$")[2], 10); + } + function getSalt(hash2) { + if (typeof hash2 !== "string") + throw Error("Illegal arguments: " + typeof hash2); + if (hash2.length !== 60) + throw Error("Illegal hash length: " + hash2.length + " != 60"); + return hash2.substring(0, 29); + } + function truncates(password) { + if (typeof password !== "string") + throw Error("Illegal arguments: " + typeof password); + return utf8Length(password) > 72; + } + var nextTick = typeof setImmediate === "function" ? setImmediate : typeof scheduler === "object" && typeof scheduler.postTask === "function" ? scheduler.postTask.bind(scheduler) : setTimeout; + function utf8Length(string) { + var len = 0, c = 0; + for (var i = 0; i < string.length; ++i) { + c = string.charCodeAt(i); + if (c < 128) len += 1; + else if (c < 2048) len += 2; + else if ((c & 64512) === 55296 && (string.charCodeAt(i + 1) & 64512) === 56320) { + ++i; + len += 4; + } else len += 3; + } + return len; + } + function utf8Array(string) { + var offset = 0, c1, c2; + var buffer = new Array(utf8Length(string)); + for (var i = 0, k = string.length; i < k; ++i) { + c1 = string.charCodeAt(i); + if (c1 < 128) { + buffer[offset++] = c1; + } else if (c1 < 2048) { + buffer[offset++] = c1 >> 6 | 192; + buffer[offset++] = c1 & 63 | 128; + } else if ((c1 & 64512) === 55296 && ((c2 = string.charCodeAt(i + 1)) & 64512) === 56320) { + c1 = 65536 + ((c1 & 1023) << 10) + (c2 & 1023); + ++i; + buffer[offset++] = c1 >> 18 | 240; + buffer[offset++] = c1 >> 12 & 63 | 128; + buffer[offset++] = c1 >> 6 & 63 | 128; + buffer[offset++] = c1 & 63 | 128; + } else { + buffer[offset++] = c1 >> 12 | 224; + buffer[offset++] = c1 >> 6 & 63 | 128; + buffer[offset++] = c1 & 63 | 128; + } + } + return buffer; + } + var BASE64_CODE = "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split( + "" + ); + var BASE64_INDEX = [ + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + 0, + 1, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + -1, + -1, + -1, + -1, + -1, + -1, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + -1, + -1, + -1, + -1, + -1 + ]; + function base64_encode(b, len) { + var off = 0, rs = [], c1, c2; + if (len <= 0 || len > b.length) throw Error("Illegal len: " + len); + while (off < len) { + c1 = b[off++] & 255; + rs.push(BASE64_CODE[c1 >> 2 & 63]); + c1 = (c1 & 3) << 4; + if (off >= len) { + rs.push(BASE64_CODE[c1 & 63]); + break; + } + c2 = b[off++] & 255; + c1 |= c2 >> 4 & 15; + rs.push(BASE64_CODE[c1 & 63]); + c1 = (c2 & 15) << 2; + if (off >= len) { + rs.push(BASE64_CODE[c1 & 63]); + break; + } + c2 = b[off++] & 255; + c1 |= c2 >> 6 & 3; + rs.push(BASE64_CODE[c1 & 63]); + rs.push(BASE64_CODE[c2 & 63]); + } + return rs.join(""); + } + function base64_decode(s, len) { + var off = 0, slen = s.length, olen = 0, rs = [], c1, c2, c3, c4, o, code; + if (len <= 0) throw Error("Illegal len: " + len); + while (off < slen - 1 && olen < len) { + code = s.charCodeAt(off++); + c1 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1; + code = s.charCodeAt(off++); + c2 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1; + if (c1 == -1 || c2 == -1) break; + o = c1 << 2 >>> 0; + o |= (c2 & 48) >> 4; + rs.push(String.fromCharCode(o)); + if (++olen >= len || off >= slen) break; + code = s.charCodeAt(off++); + c3 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1; + if (c3 == -1) break; + o = (c2 & 15) << 4 >>> 0; + o |= (c3 & 60) >> 2; + rs.push(String.fromCharCode(o)); + if (++olen >= len || off >= slen) break; + code = s.charCodeAt(off++); + c4 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1; + o = (c3 & 3) << 6 >>> 0; + o |= c4; + rs.push(String.fromCharCode(o)); + ++olen; + } + var res = []; + for (off = 0; off < olen; off++) res.push(rs[off].charCodeAt(0)); + return res; + } + var BCRYPT_SALT_LEN = 16; + var GENSALT_DEFAULT_LOG2_ROUNDS = 10; + var BLOWFISH_NUM_ROUNDS = 16; + var MAX_EXECUTION_TIME = 100; + var P_ORIG = [ + 608135816, + 2242054355, + 320440878, + 57701188, + 2752067618, + 698298832, + 137296536, + 3964562569, + 1160258022, + 953160567, + 3193202383, + 887688300, + 3232508343, + 3380367581, + 1065670069, + 3041331479, + 2450970073, + 2306472731 + ]; + var S_ORIG = [ + 3509652390, + 2564797868, + 805139163, + 3491422135, + 3101798381, + 1780907670, + 3128725573, + 4046225305, + 614570311, + 3012652279, + 134345442, + 2240740374, + 1667834072, + 1901547113, + 2757295779, + 4103290238, + 227898511, + 1921955416, + 1904987480, + 2182433518, + 2069144605, + 3260701109, + 2620446009, + 720527379, + 3318853667, + 677414384, + 3393288472, + 3101374703, + 2390351024, + 1614419982, + 1822297739, + 2954791486, + 3608508353, + 3174124327, + 2024746970, + 1432378464, + 3864339955, + 2857741204, + 1464375394, + 1676153920, + 1439316330, + 715854006, + 3033291828, + 289532110, + 2706671279, + 2087905683, + 3018724369, + 1668267050, + 732546397, + 1947742710, + 3462151702, + 2609353502, + 2950085171, + 1814351708, + 2050118529, + 680887927, + 999245976, + 1800124847, + 3300911131, + 1713906067, + 1641548236, + 4213287313, + 1216130144, + 1575780402, + 4018429277, + 3917837745, + 3693486850, + 3949271944, + 596196993, + 3549867205, + 258830323, + 2213823033, + 772490370, + 2760122372, + 1774776394, + 2652871518, + 566650946, + 4142492826, + 1728879713, + 2882767088, + 1783734482, + 3629395816, + 2517608232, + 2874225571, + 1861159788, + 326777828, + 3124490320, + 2130389656, + 2716951837, + 967770486, + 1724537150, + 2185432712, + 2364442137, + 1164943284, + 2105845187, + 998989502, + 3765401048, + 2244026483, + 1075463327, + 1455516326, + 1322494562, + 910128902, + 469688178, + 1117454909, + 936433444, + 3490320968, + 3675253459, + 1240580251, + 122909385, + 2157517691, + 634681816, + 4142456567, + 3825094682, + 3061402683, + 2540495037, + 79693498, + 3249098678, + 1084186820, + 1583128258, + 426386531, + 1761308591, + 1047286709, + 322548459, + 995290223, + 1845252383, + 2603652396, + 3431023940, + 2942221577, + 3202600964, + 3727903485, + 1712269319, + 422464435, + 3234572375, + 1170764815, + 3523960633, + 3117677531, + 1434042557, + 442511882, + 3600875718, + 1076654713, + 1738483198, + 4213154764, + 2393238008, + 3677496056, + 1014306527, + 4251020053, + 793779912, + 2902807211, + 842905082, + 4246964064, + 1395751752, + 1040244610, + 2656851899, + 3396308128, + 445077038, + 3742853595, + 3577915638, + 679411651, + 2892444358, + 2354009459, + 1767581616, + 3150600392, + 3791627101, + 3102740896, + 284835224, + 4246832056, + 1258075500, + 768725851, + 2589189241, + 3069724005, + 3532540348, + 1274779536, + 3789419226, + 2764799539, + 1660621633, + 3471099624, + 4011903706, + 913787905, + 3497959166, + 737222580, + 2514213453, + 2928710040, + 3937242737, + 1804850592, + 3499020752, + 2949064160, + 2386320175, + 2390070455, + 2415321851, + 4061277028, + 2290661394, + 2416832540, + 1336762016, + 1754252060, + 3520065937, + 3014181293, + 791618072, + 3188594551, + 3933548030, + 2332172193, + 3852520463, + 3043980520, + 413987798, + 3465142937, + 3030929376, + 4245938359, + 2093235073, + 3534596313, + 375366246, + 2157278981, + 2479649556, + 555357303, + 3870105701, + 2008414854, + 3344188149, + 4221384143, + 3956125452, + 2067696032, + 3594591187, + 2921233993, + 2428461, + 544322398, + 577241275, + 1471733935, + 610547355, + 4027169054, + 1432588573, + 1507829418, + 2025931657, + 3646575487, + 545086370, + 48609733, + 2200306550, + 1653985193, + 298326376, + 1316178497, + 3007786442, + 2064951626, + 458293330, + 2589141269, + 3591329599, + 3164325604, + 727753846, + 2179363840, + 146436021, + 1461446943, + 4069977195, + 705550613, + 3059967265, + 3887724982, + 4281599278, + 3313849956, + 1404054877, + 2845806497, + 146425753, + 1854211946, + 1266315497, + 3048417604, + 3681880366, + 3289982499, + 290971e4, + 1235738493, + 2632868024, + 2414719590, + 3970600049, + 1771706367, + 1449415276, + 3266420449, + 422970021, + 1963543593, + 2690192192, + 3826793022, + 1062508698, + 1531092325, + 1804592342, + 2583117782, + 2714934279, + 4024971509, + 1294809318, + 4028980673, + 1289560198, + 2221992742, + 1669523910, + 35572830, + 157838143, + 1052438473, + 1016535060, + 1802137761, + 1753167236, + 1386275462, + 3080475397, + 2857371447, + 1040679964, + 2145300060, + 2390574316, + 1461121720, + 2956646967, + 4031777805, + 4028374788, + 33600511, + 2920084762, + 1018524850, + 629373528, + 3691585981, + 3515945977, + 2091462646, + 2486323059, + 586499841, + 988145025, + 935516892, + 3367335476, + 2599673255, + 2839830854, + 265290510, + 3972581182, + 2759138881, + 3795373465, + 1005194799, + 847297441, + 406762289, + 1314163512, + 1332590856, + 1866599683, + 4127851711, + 750260880, + 613907577, + 1450815602, + 3165620655, + 3734664991, + 3650291728, + 3012275730, + 3704569646, + 1427272223, + 778793252, + 1343938022, + 2676280711, + 2052605720, + 1946737175, + 3164576444, + 3914038668, + 3967478842, + 3682934266, + 1661551462, + 3294938066, + 4011595847, + 840292616, + 3712170807, + 616741398, + 312560963, + 711312465, + 1351876610, + 322626781, + 1910503582, + 271666773, + 2175563734, + 1594956187, + 70604529, + 3617834859, + 1007753275, + 1495573769, + 4069517037, + 2549218298, + 2663038764, + 504708206, + 2263041392, + 3941167025, + 2249088522, + 1514023603, + 1998579484, + 1312622330, + 694541497, + 2582060303, + 2151582166, + 1382467621, + 776784248, + 2618340202, + 3323268794, + 2497899128, + 2784771155, + 503983604, + 4076293799, + 907881277, + 423175695, + 432175456, + 1378068232, + 4145222326, + 3954048622, + 3938656102, + 3820766613, + 2793130115, + 2977904593, + 26017576, + 3274890735, + 3194772133, + 1700274565, + 1756076034, + 4006520079, + 3677328699, + 720338349, + 1533947780, + 354530856, + 688349552, + 3973924725, + 1637815568, + 332179504, + 3949051286, + 53804574, + 2852348879, + 3044236432, + 1282449977, + 3583942155, + 3416972820, + 4006381244, + 1617046695, + 2628476075, + 3002303598, + 1686838959, + 431878346, + 2686675385, + 1700445008, + 1080580658, + 1009431731, + 832498133, + 3223435511, + 2605976345, + 2271191193, + 2516031870, + 1648197032, + 4164389018, + 2548247927, + 300782431, + 375919233, + 238389289, + 3353747414, + 2531188641, + 2019080857, + 1475708069, + 455242339, + 2609103871, + 448939670, + 3451063019, + 1395535956, + 2413381860, + 1841049896, + 1491858159, + 885456874, + 4264095073, + 4001119347, + 1565136089, + 3898914787, + 1108368660, + 540939232, + 1173283510, + 2745871338, + 3681308437, + 4207628240, + 3343053890, + 4016749493, + 1699691293, + 1103962373, + 3625875870, + 2256883143, + 3830138730, + 1031889488, + 3479347698, + 1535977030, + 4236805024, + 3251091107, + 2132092099, + 1774941330, + 1199868427, + 1452454533, + 157007616, + 2904115357, + 342012276, + 595725824, + 1480756522, + 206960106, + 497939518, + 591360097, + 863170706, + 2375253569, + 3596610801, + 1814182875, + 2094937945, + 3421402208, + 1082520231, + 3463918190, + 2785509508, + 435703966, + 3908032597, + 1641649973, + 2842273706, + 3305899714, + 1510255612, + 2148256476, + 2655287854, + 3276092548, + 4258621189, + 236887753, + 3681803219, + 274041037, + 1734335097, + 3815195456, + 3317970021, + 1899903192, + 1026095262, + 4050517792, + 356393447, + 2410691914, + 3873677099, + 3682840055, + 3913112168, + 2491498743, + 4132185628, + 2489919796, + 1091903735, + 1979897079, + 3170134830, + 3567386728, + 3557303409, + 857797738, + 1136121015, + 1342202287, + 507115054, + 2535736646, + 337727348, + 3213592640, + 1301675037, + 2528481711, + 1895095763, + 1721773893, + 3216771564, + 62756741, + 2142006736, + 835421444, + 2531993523, + 1442658625, + 3659876326, + 2882144922, + 676362277, + 1392781812, + 170690266, + 3921047035, + 1759253602, + 3611846912, + 1745797284, + 664899054, + 1329594018, + 3901205900, + 3045908486, + 2062866102, + 2865634940, + 3543621612, + 3464012697, + 1080764994, + 553557557, + 3656615353, + 3996768171, + 991055499, + 499776247, + 1265440854, + 648242737, + 3940784050, + 980351604, + 3713745714, + 1749149687, + 3396870395, + 4211799374, + 3640570775, + 1161844396, + 3125318951, + 1431517754, + 545492359, + 4268468663, + 3499529547, + 1437099964, + 2702547544, + 3433638243, + 2581715763, + 2787789398, + 1060185593, + 1593081372, + 2418618748, + 4260947970, + 69676912, + 2159744348, + 86519011, + 2512459080, + 3838209314, + 1220612927, + 3339683548, + 133810670, + 1090789135, + 1078426020, + 1569222167, + 845107691, + 3583754449, + 4072456591, + 1091646820, + 628848692, + 1613405280, + 3757631651, + 526609435, + 236106946, + 48312990, + 2942717905, + 3402727701, + 1797494240, + 859738849, + 992217954, + 4005476642, + 2243076622, + 3870952857, + 3732016268, + 765654824, + 3490871365, + 2511836413, + 1685915746, + 3888969200, + 1414112111, + 2273134842, + 3281911079, + 4080962846, + 172450625, + 2569994100, + 980381355, + 4109958455, + 2819808352, + 2716589560, + 2568741196, + 3681446669, + 3329971472, + 1835478071, + 660984891, + 3704678404, + 4045999559, + 3422617507, + 3040415634, + 1762651403, + 1719377915, + 3470491036, + 2693910283, + 3642056355, + 3138596744, + 1364962596, + 2073328063, + 1983633131, + 926494387, + 3423689081, + 2150032023, + 4096667949, + 1749200295, + 3328846651, + 309677260, + 2016342300, + 1779581495, + 3079819751, + 111262694, + 1274766160, + 443224088, + 298511866, + 1025883608, + 3806446537, + 1145181785, + 168956806, + 3641502830, + 3584813610, + 1689216846, + 3666258015, + 3200248200, + 1692713982, + 2646376535, + 4042768518, + 1618508792, + 1610833997, + 3523052358, + 4130873264, + 2001055236, + 3610705100, + 2202168115, + 4028541809, + 2961195399, + 1006657119, + 2006996926, + 3186142756, + 1430667929, + 3210227297, + 1314452623, + 4074634658, + 4101304120, + 2273951170, + 1399257539, + 3367210612, + 3027628629, + 1190975929, + 2062231137, + 2333990788, + 2221543033, + 2438960610, + 1181637006, + 548689776, + 2362791313, + 3372408396, + 3104550113, + 3145860560, + 296247880, + 1970579870, + 3078560182, + 3769228297, + 1714227617, + 3291629107, + 3898220290, + 166772364, + 1251581989, + 493813264, + 448347421, + 195405023, + 2709975567, + 677966185, + 3703036547, + 1463355134, + 2715995803, + 1338867538, + 1343315457, + 2802222074, + 2684532164, + 233230375, + 2599980071, + 2000651841, + 3277868038, + 1638401717, + 4028070440, + 3237316320, + 6314154, + 819756386, + 300326615, + 590932579, + 1405279636, + 3267499572, + 3150704214, + 2428286686, + 3959192993, + 3461946742, + 1862657033, + 1266418056, + 963775037, + 2089974820, + 2263052895, + 1917689273, + 448879540, + 3550394620, + 3981727096, + 150775221, + 3627908307, + 1303187396, + 508620638, + 2975983352, + 2726630617, + 1817252668, + 1876281319, + 1457606340, + 908771278, + 3720792119, + 3617206836, + 2455994898, + 1729034894, + 1080033504, + 976866871, + 3556439503, + 2881648439, + 1522871579, + 1555064734, + 1336096578, + 3548522304, + 2579274686, + 3574697629, + 3205460757, + 3593280638, + 3338716283, + 3079412587, + 564236357, + 2993598910, + 1781952180, + 1464380207, + 3163844217, + 3332601554, + 1699332808, + 1393555694, + 1183702653, + 3581086237, + 1288719814, + 691649499, + 2847557200, + 2895455976, + 3193889540, + 2717570544, + 1781354906, + 1676643554, + 2592534050, + 3230253752, + 1126444790, + 2770207658, + 2633158820, + 2210423226, + 2615765581, + 2414155088, + 3127139286, + 673620729, + 2805611233, + 1269405062, + 4015350505, + 3341807571, + 4149409754, + 1057255273, + 2012875353, + 2162469141, + 2276492801, + 2601117357, + 993977747, + 3918593370, + 2654263191, + 753973209, + 36408145, + 2530585658, + 25011837, + 3520020182, + 2088578344, + 530523599, + 2918365339, + 1524020338, + 1518925132, + 3760827505, + 3759777254, + 1202760957, + 3985898139, + 3906192525, + 674977740, + 4174734889, + 2031300136, + 2019492241, + 3983892565, + 4153806404, + 3822280332, + 352677332, + 2297720250, + 60907813, + 90501309, + 3286998549, + 1016092578, + 2535922412, + 2839152426, + 457141659, + 509813237, + 4120667899, + 652014361, + 1966332200, + 2975202805, + 55981186, + 2327461051, + 676427537, + 3255491064, + 2882294119, + 3433927263, + 1307055953, + 942726286, + 933058658, + 2468411793, + 3933900994, + 4215176142, + 1361170020, + 2001714738, + 2830558078, + 3274259782, + 1222529897, + 1679025792, + 2729314320, + 3714953764, + 1770335741, + 151462246, + 3013232138, + 1682292957, + 1483529935, + 471910574, + 1539241949, + 458788160, + 3436315007, + 1807016891, + 3718408830, + 978976581, + 1043663428, + 3165965781, + 1927990952, + 4200891579, + 2372276910, + 3208408903, + 3533431907, + 1412390302, + 2931980059, + 4132332400, + 1947078029, + 3881505623, + 4168226417, + 2941484381, + 1077988104, + 1320477388, + 886195818, + 18198404, + 3786409e3, + 2509781533, + 112762804, + 3463356488, + 1866414978, + 891333506, + 18488651, + 661792760, + 1628790961, + 3885187036, + 3141171499, + 876946877, + 2693282273, + 1372485963, + 791857591, + 2686433993, + 3759982718, + 3167212022, + 3472953795, + 2716379847, + 445679433, + 3561995674, + 3504004811, + 3574258232, + 54117162, + 3331405415, + 2381918588, + 3769707343, + 4154350007, + 1140177722, + 4074052095, + 668550556, + 3214352940, + 367459370, + 261225585, + 2610173221, + 4209349473, + 3468074219, + 3265815641, + 314222801, + 3066103646, + 3808782860, + 282218597, + 3406013506, + 3773591054, + 379116347, + 1285071038, + 846784868, + 2669647154, + 3771962079, + 3550491691, + 2305946142, + 453669953, + 1268987020, + 3317592352, + 3279303384, + 3744833421, + 2610507566, + 3859509063, + 266596637, + 3847019092, + 517658769, + 3462560207, + 3443424879, + 370717030, + 4247526661, + 2224018117, + 4143653529, + 4112773975, + 2788324899, + 2477274417, + 1456262402, + 2901442914, + 1517677493, + 1846949527, + 2295493580, + 3734397586, + 2176403920, + 1280348187, + 1908823572, + 3871786941, + 846861322, + 1172426758, + 3287448474, + 3383383037, + 1655181056, + 3139813346, + 901632758, + 1897031941, + 2986607138, + 3066810236, + 3447102507, + 1393639104, + 373351379, + 950779232, + 625454576, + 3124240540, + 4148612726, + 2007998917, + 544563296, + 2244738638, + 2330496472, + 2058025392, + 1291430526, + 424198748, + 50039436, + 29584100, + 3605783033, + 2429876329, + 2791104160, + 1057563949, + 3255363231, + 3075367218, + 3463963227, + 1469046755, + 985887462 + ]; + var C_ORIG = [ + 1332899944, + 1700884034, + 1701343084, + 1684370003, + 1668446532, + 1869963892 + ]; + function _encipher(lr, off, P, S) { + var n, l = lr[off], r = lr[off + 1]; + l ^= P[0]; + n = S[l >>> 24]; + n += S[256 | l >> 16 & 255]; + n ^= S[512 | l >> 8 & 255]; + n += S[768 | l & 255]; + r ^= n ^ P[1]; + n = S[r >>> 24]; + n += S[256 | r >> 16 & 255]; + n ^= S[512 | r >> 8 & 255]; + n += S[768 | r & 255]; + l ^= n ^ P[2]; + n = S[l >>> 24]; + n += S[256 | l >> 16 & 255]; + n ^= S[512 | l >> 8 & 255]; + n += S[768 | l & 255]; + r ^= n ^ P[3]; + n = S[r >>> 24]; + n += S[256 | r >> 16 & 255]; + n ^= S[512 | r >> 8 & 255]; + n += S[768 | r & 255]; + l ^= n ^ P[4]; + n = S[l >>> 24]; + n += S[256 | l >> 16 & 255]; + n ^= S[512 | l >> 8 & 255]; + n += S[768 | l & 255]; + r ^= n ^ P[5]; + n = S[r >>> 24]; + n += S[256 | r >> 16 & 255]; + n ^= S[512 | r >> 8 & 255]; + n += S[768 | r & 255]; + l ^= n ^ P[6]; + n = S[l >>> 24]; + n += S[256 | l >> 16 & 255]; + n ^= S[512 | l >> 8 & 255]; + n += S[768 | l & 255]; + r ^= n ^ P[7]; + n = S[r >>> 24]; + n += S[256 | r >> 16 & 255]; + n ^= S[512 | r >> 8 & 255]; + n += S[768 | r & 255]; + l ^= n ^ P[8]; + n = S[l >>> 24]; + n += S[256 | l >> 16 & 255]; + n ^= S[512 | l >> 8 & 255]; + n += S[768 | l & 255]; + r ^= n ^ P[9]; + n = S[r >>> 24]; + n += S[256 | r >> 16 & 255]; + n ^= S[512 | r >> 8 & 255]; + n += S[768 | r & 255]; + l ^= n ^ P[10]; + n = S[l >>> 24]; + n += S[256 | l >> 16 & 255]; + n ^= S[512 | l >> 8 & 255]; + n += S[768 | l & 255]; + r ^= n ^ P[11]; + n = S[r >>> 24]; + n += S[256 | r >> 16 & 255]; + n ^= S[512 | r >> 8 & 255]; + n += S[768 | r & 255]; + l ^= n ^ P[12]; + n = S[l >>> 24]; + n += S[256 | l >> 16 & 255]; + n ^= S[512 | l >> 8 & 255]; + n += S[768 | l & 255]; + r ^= n ^ P[13]; + n = S[r >>> 24]; + n += S[256 | r >> 16 & 255]; + n ^= S[512 | r >> 8 & 255]; + n += S[768 | r & 255]; + l ^= n ^ P[14]; + n = S[l >>> 24]; + n += S[256 | l >> 16 & 255]; + n ^= S[512 | l >> 8 & 255]; + n += S[768 | l & 255]; + r ^= n ^ P[15]; + n = S[r >>> 24]; + n += S[256 | r >> 16 & 255]; + n ^= S[512 | r >> 8 & 255]; + n += S[768 | r & 255]; + l ^= n ^ P[16]; + lr[off] = r ^ P[BLOWFISH_NUM_ROUNDS + 1]; + lr[off + 1] = l; + return lr; + } + function _streamtoword(data, offp) { + for (var i = 0, word = 0; i < 4; ++i) + word = word << 8 | data[offp] & 255, offp = (offp + 1) % data.length; + return { + key: word, + offp + }; + } + function _key(key, P, S) { + var offset = 0, lr = [0, 0], plen = P.length, slen = S.length, sw; + for (var i = 0; i < plen; i++) + sw = _streamtoword(key, offset), offset = sw.offp, P[i] = P[i] ^ sw.key; + for (i = 0; i < plen; i += 2) + lr = _encipher(lr, 0, P, S), P[i] = lr[0], P[i + 1] = lr[1]; + for (i = 0; i < slen; i += 2) + lr = _encipher(lr, 0, P, S), S[i] = lr[0], S[i + 1] = lr[1]; + } + function _ekskey(data, key, P, S) { + var offp = 0, lr = [0, 0], plen = P.length, slen = S.length, sw; + for (var i = 0; i < plen; i++) + sw = _streamtoword(key, offp), offp = sw.offp, P[i] = P[i] ^ sw.key; + offp = 0; + for (i = 0; i < plen; i += 2) + sw = _streamtoword(data, offp), offp = sw.offp, lr[0] ^= sw.key, sw = _streamtoword(data, offp), offp = sw.offp, lr[1] ^= sw.key, lr = _encipher(lr, 0, P, S), P[i] = lr[0], P[i + 1] = lr[1]; + for (i = 0; i < slen; i += 2) + sw = _streamtoword(data, offp), offp = sw.offp, lr[0] ^= sw.key, sw = _streamtoword(data, offp), offp = sw.offp, lr[1] ^= sw.key, lr = _encipher(lr, 0, P, S), S[i] = lr[0], S[i + 1] = lr[1]; + } + function _crypt(b, salt, rounds, callback, progressCallback) { + var cdata = C_ORIG.slice(), clen = cdata.length, err; + if (rounds < 4 || rounds > 31) { + err = Error("Illegal number of rounds (4-31): " + rounds); + if (callback) { + nextTick(callback.bind(this, err)); + return; + } else throw err; + } + if (salt.length !== BCRYPT_SALT_LEN) { + err = Error( + "Illegal salt length: " + salt.length + " != " + BCRYPT_SALT_LEN + ); + if (callback) { + nextTick(callback.bind(this, err)); + return; + } else throw err; + } + rounds = 1 << rounds >>> 0; + var P, S, i = 0, j; + if (typeof Int32Array === "function") { + P = new Int32Array(P_ORIG); + S = new Int32Array(S_ORIG); + } else { + P = P_ORIG.slice(); + S = S_ORIG.slice(); + } + _ekskey(salt, b, P, S); + function next() { + if (progressCallback) progressCallback(i / rounds); + if (i < rounds) { + var start = Date.now(); + for (; i < rounds; ) { + i = i + 1; + _key(b, P, S); + _key(salt, P, S); + if (Date.now() - start > MAX_EXECUTION_TIME) break; + } + } else { + for (i = 0; i < 64; i++) + for (j = 0; j < clen >> 1; j++) _encipher(cdata, j << 1, P, S); + var ret = []; + for (i = 0; i < clen; i++) + ret.push((cdata[i] >> 24 & 255) >>> 0), ret.push((cdata[i] >> 16 & 255) >>> 0), ret.push((cdata[i] >> 8 & 255) >>> 0), ret.push((cdata[i] & 255) >>> 0); + if (callback) { + callback(null, ret); + return; + } else return ret; + } + if (callback) nextTick(next); + } + if (typeof callback !== "undefined") { + next(); + } else { + var res; + while (true) + if (typeof (res = next()) !== "undefined") return res || []; + } + } + function _hash(password, salt, callback, progressCallback) { + var err; + if (typeof password !== "string" || typeof salt !== "string") { + err = Error("Invalid string / salt: Not a string"); + if (callback) { + nextTick(callback.bind(this, err)); + return; + } else throw err; + } + var minor, offset; + if (salt.charAt(0) !== "$" || salt.charAt(1) !== "2") { + err = Error("Invalid salt version: " + salt.substring(0, 2)); + if (callback) { + nextTick(callback.bind(this, err)); + return; + } else throw err; + } + if (salt.charAt(2) === "$") + minor = String.fromCharCode(0), offset = 3; + else { + minor = salt.charAt(2); + if (minor !== "a" && minor !== "b" && minor !== "y" || salt.charAt(3) !== "$") { + err = Error("Invalid salt revision: " + salt.substring(2, 4)); + if (callback) { + nextTick(callback.bind(this, err)); + return; + } else throw err; + } + offset = 4; + } + if (salt.charAt(offset + 2) > "$") { + err = Error("Missing salt rounds"); + if (callback) { + nextTick(callback.bind(this, err)); + return; + } else throw err; + } + var r1 = parseInt(salt.substring(offset, offset + 1), 10) * 10, r2 = parseInt(salt.substring(offset + 1, offset + 2), 10), rounds = r1 + r2, real_salt = salt.substring(offset + 3, offset + 25); + password += minor >= "a" ? "\0" : ""; + var passwordb = utf8Array(password), saltb = base64_decode(real_salt, BCRYPT_SALT_LEN); + function finish(bytes) { + var res = []; + res.push("$2"); + if (minor >= "a") res.push(minor); + res.push("$"); + if (rounds < 10) res.push("0"); + res.push(rounds.toString()); + res.push("$"); + res.push(base64_encode(saltb, saltb.length)); + res.push(base64_encode(bytes, C_ORIG.length * 4 - 1)); + return res.join(""); + } + if (typeof callback == "undefined") + return finish(_crypt(passwordb, saltb, rounds)); + else { + _crypt( + passwordb, + saltb, + rounds, + function(err2, bytes) { + if (err2) callback(err2, null); + else callback(null, finish(bytes)); + }, + progressCallback + ); + } + } + function encodeBase64(bytes, length) { + return base64_encode(bytes, length); + } + function decodeBase64(string, length) { + return base64_decode(string, length); + } + var _default = _exports.default = { + setRandomFallback, + genSaltSync, + genSalt, + hashSync, + hash, + compareSync, + compare, + getRounds, + getSalt, + truncates, + encodeBase64, + decodeBase64 + }; + } + ); + } +}); + +// dist/modules/auth/auth.service.js +var require_auth_service = __commonJS({ + "dist/modules/auth/auth.service.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + })); + var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + }) : function(o, v) { + o["default"] = v; + }); + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __importStar2 = exports2 && exports2.__importStar || /* @__PURE__ */ (function() { + var ownKeys2 = function(o) { + ownKeys2 = Object.getOwnPropertyNames || function(o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys2(o); + }; + return function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys2(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding2(result, mod, k[i]); + } + __setModuleDefault2(result, mod); + return result; + }; + })(); + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AuthService = void 0; + var common_12 = require_common(); + var jwt_1 = (init_dist(), __toCommonJS(dist_exports)); + var bcrypt = __importStar2(require_umd()); + var prisma_service_1 = require_prisma_service(); + var AuthService = class AuthService { + prisma; + jwt; + constructor(prisma, jwt) { + this.prisma = prisma; + this.jwt = jwt; + } + /** + * Port of legacy AdminController::login (henza_server). + * + * Legacy issued a random 60-char string as `api_token` and persisted it on the + * user row; this issues a signed JWT instead. The response keeps the legacy + * shape the admin panel's auth store reads: + * - `api_token` -> stored in localStorage under token/branch_token + * - `roles` -> [{ rid }], mapped to rids by the frontend then expanded + * through checkParent() + * + * Deliberate deviation from legacy: a bad phone and a bad password both return + * 401 here. Legacy returned 404 (firstOrFail) for an unknown phone and 422 for + * a wrong password, which let anyone enumerate valid admin phone numbers. + */ + async login(dto) { + const user = await this.prisma.adminUser.findUnique({ + where: { mobile: dto.phone }, + include: { userType: { include: { permissions: true } } } + }); + if (!user || !user.isActive) { + throw new common_12.UnauthorizedException("\u0646\u0627\u0645 \u06A9\u0627\u0631\u0628\u0631\u06CC \u06CC\u0627 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0627\u0634\u062A\u0628\u0627\u0647 \u0627\u0633\u062A"); + } + const passwordOk = await bcrypt.compare(dto.password, user.passwordHash); + if (!passwordOk) { + throw new common_12.UnauthorizedException("\u0646\u0627\u0645 \u06A9\u0627\u0631\u0628\u0631\u06CC \u06CC\u0627 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0627\u0634\u062A\u0628\u0627\u0647 \u0627\u0633\u062A"); + } + const apiToken = await this.jwt.signAsync({ sub: user.id, mobile: user.mobile }); + return { + id: user.id, + name: user.fullName, + fullName: user.fullName, + mobile: user.mobile, + role: user.role, + ut: user.userTypeId, + branch_id: user.branchId, + api_token: apiToken, + roles: (user.userType?.permissions ?? []).map((p) => ({ rid: p.rid })) + }; + } + /** + * Port of legacy UserController::showData, which the router guard calls on every + * cold load to refresh the permission list: + * + * $user['permission'] = Permission::where('ut',$user->ut)->select('rid')->get()->pluck('rid'); + * + * Returns raw (unexpanded) rids — the frontend runs checkParent() on them, as in + * legacy. The guard's own checks use the pre-expanded list from JwtStrategy. + */ + async showData(adminId) { + const user = await this.prisma.adminUser.findUnique({ + where: { id: adminId }, + include: { userType: { include: { permissions: true } } } + }); + if (!user) { + throw new common_12.UnauthorizedException(); + } + return { + id: user.id, + name: user.fullName, + fullName: user.fullName, + mobile: user.mobile, + role: user.role, + ut: user.userTypeId, + branch_id: user.branchId, + user_type: user.userType ? { id: user.userType.id, title: user.userType.title } : null, + permission: (user.userType?.permissions ?? []).map((p) => p.rid) + }; + } + }; + exports2.AuthService = AuthService; + exports2.AuthService = AuthService = __decorate4([ + (0, common_12.Injectable)(), + __metadata3("design:paramtypes", [ + prisma_service_1.PrismaService, + jwt_1.JwtService + ]) + ], AuthService); + } +}); + +// dist/modules/auth/dto/login.dto.js +var require_login_dto = __commonJS({ + "dist/modules/auth/dto/login.dto.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.LoginDto = void 0; + var class_validator_1 = require_cjs(); + var LoginDto = class { + phone; + password; + }; + exports2.LoginDto = LoginDto; + __decorate4([ + (0, class_validator_1.IsString)(), + (0, class_validator_1.IsNotEmpty)(), + __metadata3("design:type", String) + ], LoginDto.prototype, "phone", void 0); + __decorate4([ + (0, class_validator_1.IsString)(), + (0, class_validator_1.IsNotEmpty)(), + __metadata3("design:type", String) + ], LoginDto.prototype, "password", void 0); + } +}); + +// dist/modules/auth/auth.controller.js +var require_auth_controller = __commonJS({ + "dist/modules/auth/auth.controller.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var __param3 = exports2 && exports2.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AuthController = void 0; + var common_12 = require_common(); + var auth_service_1 = require_auth_service(); + var login_dto_1 = require_login_dto(); + var guards_1 = require_guards2(); + var AuthController = class AuthController { + authService; + constructor(authService) { + this.authService = authService; + } + login(dto) { + return this.authService.login(dto); + } + /** Legacy `users/show` — the router guard's permission refresh. */ + me(admin) { + return this.authService.showData(admin.id); + } + }; + exports2.AuthController = AuthController; + __decorate4([ + (0, guards_1.Public)(), + (0, common_12.Post)("login"), + (0, common_12.HttpCode)(200), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [login_dto_1.LoginDto]), + __metadata3("design:returntype", void 0) + ], AuthController.prototype, "login", null); + __decorate4([ + (0, common_12.Get)("me"), + __param3(0, (0, guards_1.CurrentAdmin)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], AuthController.prototype, "me", null); + exports2.AuthController = AuthController = __decorate4([ + (0, common_12.Controller)("admin/auth"), + __metadata3("design:paramtypes", [auth_service_1.AuthService]) + ], AuthController); + } +}); + +// ../../node_modules/.pnpm/passport-jwt@4.0.1/node_modules/passport-jwt/lib/auth_header.js +var require_auth_header = __commonJS({ + "../../node_modules/.pnpm/passport-jwt@4.0.1/node_modules/passport-jwt/lib/auth_header.js"(exports2, module2) { + "use strict"; + var re = /(\S+)\s+(\S+)/; + function parseAuthHeader(hdrValue) { + if (typeof hdrValue !== "string") { + return null; + } + var matches = hdrValue.match(re); + return matches && { scheme: matches[1], value: matches[2] }; + } + module2.exports = { + parse: parseAuthHeader + }; + } +}); + +// ../../node_modules/.pnpm/passport-jwt@4.0.1/node_modules/passport-jwt/lib/helpers/assign.js +var require_assign = __commonJS({ + "../../node_modules/.pnpm/passport-jwt@4.0.1/node_modules/passport-jwt/lib/helpers/assign.js"(exports2, module2) { + module2.exports = function(target, varArgs) { + if (target == null) { + throw new TypeError("Cannot convert undefined or null to object"); + } + var to = Object(target); + for (var index = 1; index < arguments.length; index++) { + var nextSource = arguments[index]; + if (nextSource != null) { + for (var nextKey in nextSource) { + if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + return to; + }; + } +}); + +// ../../node_modules/.pnpm/passport-jwt@4.0.1/node_modules/passport-jwt/lib/verify_jwt.js +var require_verify_jwt = __commonJS({ + "../../node_modules/.pnpm/passport-jwt@4.0.1/node_modules/passport-jwt/lib/verify_jwt.js"(exports2, module2) { + var jwt = require_jsonwebtoken(); + module2.exports = function(token, secretOrKey, options, callback) { + return jwt.verify(token, secretOrKey, options, callback); + }; + } +}); + +// ../../node_modules/.pnpm/passport-jwt@4.0.1/node_modules/passport-jwt/lib/strategy.js +var require_strategy2 = __commonJS({ + "../../node_modules/.pnpm/passport-jwt@4.0.1/node_modules/passport-jwt/lib/strategy.js"(exports2, module2) { + var passport = require_lib6(); + var auth_hdr = require_auth_header(); + var util2 = require("util"); + var url = require("url"); + var assign = require_assign(); + function JwtStrategy(options, verify) { + passport.Strategy.call(this); + this.name = "jwt"; + this._secretOrKeyProvider = options.secretOrKeyProvider; + if (options.secretOrKey) { + if (this._secretOrKeyProvider) { + throw new TypeError("JwtStrategy has been given both a secretOrKey and a secretOrKeyProvider"); + } + this._secretOrKeyProvider = function(request, rawJwtToken, done) { + done(null, options.secretOrKey); + }; + } + if (!this._secretOrKeyProvider) { + throw new TypeError("JwtStrategy requires a secret or key"); + } + this._verify = verify; + if (!this._verify) { + throw new TypeError("JwtStrategy requires a verify callback"); + } + this._jwtFromRequest = options.jwtFromRequest; + if (!this._jwtFromRequest) { + throw new TypeError("JwtStrategy requires a function to retrieve jwt from requests (see option jwtFromRequest)"); + } + this._passReqToCallback = options.passReqToCallback; + var jsonWebTokenOptions = options.jsonWebTokenOptions || {}; + this._verifOpts = assign({}, jsonWebTokenOptions, { + audience: options.audience, + issuer: options.issuer, + algorithms: options.algorithms, + ignoreExpiration: !!options.ignoreExpiration + }); + } + util2.inherits(JwtStrategy, passport.Strategy); + JwtStrategy.JwtVerifier = require_verify_jwt(); + JwtStrategy.prototype.authenticate = function(req, options) { + var self2 = this; + var token = self2._jwtFromRequest(req); + if (!token) { + return self2.fail(new Error("No auth token")); + } + this._secretOrKeyProvider(req, token, function(secretOrKeyError, secretOrKey) { + if (secretOrKeyError) { + self2.fail(secretOrKeyError); + } else { + JwtStrategy.JwtVerifier(token, secretOrKey, self2._verifOpts, function(jwt_err, payload) { + if (jwt_err) { + return self2.fail(jwt_err); + } else { + var verified = function(err, user, info) { + if (err) { + return self2.error(err); + } else if (!user) { + return self2.fail(info); + } else { + return self2.success(user, info); + } + }; + try { + if (self2._passReqToCallback) { + self2._verify(req, payload, verified); + } else { + self2._verify(payload, verified); + } + } catch (ex) { + self2.error(ex); + } + } + }); + } + }); + }; + module2.exports = JwtStrategy; + } +}); + +// ../../node_modules/.pnpm/passport-jwt@4.0.1/node_modules/passport-jwt/lib/extract_jwt.js +var require_extract_jwt = __commonJS({ + "../../node_modules/.pnpm/passport-jwt@4.0.1/node_modules/passport-jwt/lib/extract_jwt.js"(exports2, module2) { + "use strict"; + var url = require("url"); + var auth_hdr = require_auth_header(); + var AUTH_HEADER = "authorization"; + var LEGACY_AUTH_SCHEME = "JWT"; + var BEARER_AUTH_SCHEME = "bearer"; + var extractors = {}; + extractors.fromHeader = function(header_name) { + return function(request) { + var token = null; + if (request.headers[header_name]) { + token = request.headers[header_name]; + } + return token; + }; + }; + extractors.fromBodyField = function(field_name) { + return function(request) { + var token = null; + if (request.body && Object.prototype.hasOwnProperty.call(request.body, field_name)) { + token = request.body[field_name]; + } + return token; + }; + }; + extractors.fromUrlQueryParameter = function(param_name) { + return function(request) { + var token = null, parsed_url = url.parse(request.url, true); + if (parsed_url.query && Object.prototype.hasOwnProperty.call(parsed_url.query, param_name)) { + token = parsed_url.query[param_name]; + } + return token; + }; + }; + extractors.fromAuthHeaderWithScheme = function(auth_scheme) { + var auth_scheme_lower = auth_scheme.toLowerCase(); + return function(request) { + var token = null; + if (request.headers[AUTH_HEADER]) { + var auth_params = auth_hdr.parse(request.headers[AUTH_HEADER]); + if (auth_params && auth_scheme_lower === auth_params.scheme.toLowerCase()) { + token = auth_params.value; + } + } + return token; + }; + }; + extractors.fromAuthHeaderAsBearerToken = function() { + return extractors.fromAuthHeaderWithScheme(BEARER_AUTH_SCHEME); + }; + extractors.fromExtractors = function(extractors2) { + if (!Array.isArray(extractors2)) { + throw new TypeError("extractors.fromExtractors expects an array"); + } + return function(request) { + var token = null; + var index = 0; + while (!token && index < extractors2.length) { + token = extractors2[index].call(this, request); + index++; + } + return token; + }; + }; + extractors.versionOneCompatibility = function(options) { + var authScheme = options.authScheme || LEGACY_AUTH_SCHEME, bodyField = options.tokenBodyField || "auth_token", queryParam = options.tokenQueryParameterName || "auth_token"; + return function(request) { + var authHeaderExtractor = extractors.fromAuthHeaderWithScheme(authScheme); + var token = authHeaderExtractor(request); + if (!token) { + var bodyExtractor = extractors.fromBodyField(bodyField); + token = bodyExtractor(request); + } + if (!token) { + var queryExtractor = extractors.fromUrlQueryParameter(queryParam); + token = queryExtractor(request); + } + return token; + }; + }; + module2.exports = extractors; + } +}); + +// ../../node_modules/.pnpm/passport-jwt@4.0.1/node_modules/passport-jwt/lib/index.js +var require_lib8 = __commonJS({ + "../../node_modules/.pnpm/passport-jwt@4.0.1/node_modules/passport-jwt/lib/index.js"(exports2, module2) { + "use strict"; + var Strategy = require_strategy2(); + var ExtractJwt = require_extract_jwt(); + module2.exports = { + Strategy, + ExtractJwt + }; + } +}); + +// dist/modules/auth/acl.constants.js +var require_acl_constants = __commonJS({ + "dist/modules/auth/acl.constants.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ALL_RIDS = void 0; + exports2.expandWithParents = expandWithParents; + exports2.ALL_RIDS = [ + "branch.create", + "branch.list", + "buy.order.list", + "cities.create", + "cities.list", + "cities.list.remove", + "cities.list.view", + "cities.list.view.edit", + "collection.create", + "collection.list", + "collection.list.edit", + "collection.list.remove", + "comment", + "comment.remove", + "comment.state", + "comment.view", + "comment.view.edit", + "config.report", + "config.statics", + "config.statics.brand", + "config.statics.brand.create", + "config.statics.brand.edit", + "config.statics.brand.remove", + "config.statics.tags", + "config.statics.tags.create", + "config.statics.tags.edit", + "config.statics.tags.remove", + "config.wallet", + "custom.config.statics.slider", + "custom.config.statics.tags.banner.ids", + "dashboard.omde", + "dashboard.tak", + "document.create", + "document.list", + "document.list.confirm", + "document.list.deny", + "document.list.edit", + "document.list.get", + "document.list.remove", + "invoice.create", + "invoice.list", + "newsletters", + "notify.create", + "notify.me", + "offers.autopromotion", + "offers.create", + "offers.create.tak", + "offers.list", + "offers.list.edit", + "offers.list.remove", + "offers.list.tak.edit", + "offers.list.tak.remove", + "offersIgnore", + "order.create", + "order.list", + "order.list.pdf", + "order.list.sts", + "order.list.sts.remove", + "order.list.sts.submit", + "order.list.view", + "order.list.view.edit", + "order.makeOrder", + "order.makeOrder.get", + "order.makeOrder.remove", + "order.makeOrder.state", + "order.makeOrder.state.remove", + "order.makeOrder.state.submit", + "order.makeOrder.view", + "order.makeOrder.view.edit", + "order.omde", + "order.omde.get", + "order.omde.remove", + "order.omde.state", + "order.omde.state.remove", + "order.omde.state.submit", + "order.omde.view", + "order.omde.view.edit", + "order.omde.view.remove", + "order.tamin", + "order.tamin.state", + "order.tamin.state.remove", + "order.tamin.state.submit", + "order.tamin.view", + "order.tamin.view.edit", + "persons.create", + "persons.create.client", + "persons.create.customer.tak", + "persons.create.seller", + "persons.list.client.omde", + "persons.list.client.omde.able", + "persons.list.client.omde.able.order", + "persons.list.client.omde.edit", + "persons.list.client.omde.unable", + "persons.list.client.omde.unable.order", + "persons.list.client.omde.view", + "persons.list.client.omde.view.documents", + "persons.list.client.omde.view.orders", + "persons.list.client.single", + "persons.list.client.single.edit", + "persons.list.client.single.view", + "persons.list.sellers", + "persons.list.sellers.able", + "persons.list.sellers.able.order", + "persons.list.sellers.edit", + "persons.list.sellers.unable", + "persons.list.sellers.unable.order", + "persons.list.sellers.view", + "persons.list.sellers.view.documents", + "persons.list.sellers.view.orders", + "product.create", + "product.list", + "product.list.edit", + "product.list.group.edit", + "product.list.remove", + "product.list.variants", + "product.list.variants.add", + "product.list.variants.edit", + "product.list.variants.remove", + "product.list.view", + "product.percent", + "report.order.item", + "report.product", + "sms.create", + "sms.create.all", + "sms.create.multiple", + "sms.create.omde", + "sms.create.reagent", + "sms.create.single", + "sms.list", + "statics", + "user.create", + "user.list", + "user.list.create", + "user.list.edit", + "user.list.remove", + "user.permission", + "user.permission.create", + "user.permission.edit", + "wallet", + "wallet.charge", + "wallet.list", + "wallet.percent", + "workshop.create", + "workshop.list" + ]; + function getParents(keys) { + const work = [...keys]; + const parents = []; + while (work.length > 1) { + work.pop(); + parents.push(work.join(".")); + } + return parents; + } + function expandWithParents(values) { + let rid = [...values]; + for (const x of values) { + const keys = x.split("."); + if (keys.length > 1) { + rid = [.../* @__PURE__ */ new Set([...rid, ...getParents(keys)])]; + } + } + return rid; + } + } +}); + +// dist/modules/auth/jwt.strategy.js +var require_jwt_strategy = __commonJS({ + "dist/modules/auth/jwt.strategy.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.JwtStrategy = void 0; + var common_12 = require_common(); + var passport_1 = require_passport(); + var passport_jwt_1 = require_lib8(); + var prisma_service_1 = require_prisma_service(); + var acl_constants_1 = require_acl_constants(); + var JwtStrategy = class JwtStrategy extends (0, passport_1.PassportStrategy)(passport_jwt_1.Strategy, "jwt") { + prisma; + constructor(prisma) { + super({ + jwtFromRequest: passport_jwt_1.ExtractJwt.fromAuthHeaderAsBearerToken(), + ignoreExpiration: false, + secretOrKey: process.env.JWT_SECRET ?? "dev-only-insecure-secret" + }); + this.prisma = prisma; + } + async validate(payload) { + const user = await this.prisma.adminUser.findUnique({ + where: { id: payload.sub }, + include: { userType: { include: { permissions: true } } } + }); + if (!user || !user.isActive) { + throw new common_12.UnauthorizedException(); + } + const rids = user.userType?.permissions.map((p) => p.rid) ?? []; + return { + id: user.id, + fullName: user.fullName, + mobile: user.mobile, + role: user.role, + userTypeId: user.userTypeId, + branchId: user.branchId, + permissions: (0, acl_constants_1.expandWithParents)(rids) + }; + } + }; + exports2.JwtStrategy = JwtStrategy; + exports2.JwtStrategy = JwtStrategy = __decorate4([ + (0, common_12.Injectable)(), + __metadata3("design:paramtypes", [prisma_service_1.PrismaService]) + ], JwtStrategy); + } +}); + +// dist/modules/auth/auth.module.js +var require_auth_module = __commonJS({ + "dist/modules/auth/auth.module.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AuthModule = void 0; + var common_12 = require_common(); + var core_12 = require_core3(); + var jwt_1 = (init_dist(), __toCommonJS(dist_exports)); + var passport_1 = require_passport(); + var prisma_module_1 = require_prisma_module(); + var auth_controller_1 = require_auth_controller(); + var auth_service_1 = require_auth_service(); + var jwt_strategy_1 = require_jwt_strategy(); + var guards_1 = require_guards2(); + var AuthModule = class AuthModule { + }; + exports2.AuthModule = AuthModule; + exports2.AuthModule = AuthModule = __decorate4([ + (0, common_12.Module)({ + imports: [ + prisma_module_1.PrismaModule, + passport_1.PassportModule, + jwt_1.JwtModule.register({ + secret: process.env.JWT_SECRET ?? "dev-only-insecure-secret", + // jsonwebtoken types expiresIn as a template-literal union, which a plain + // `string` from process.env does not satisfy; the cast is the documented escape. + signOptions: { + expiresIn: process.env.JWT_EXPIRES_IN ?? "12h" + } + }) + ], + controllers: [auth_controller_1.AuthController], + providers: [ + auth_service_1.AuthService, + jwt_strategy_1.JwtStrategy, + // Global: authenticate first, then check the rid. Routes opt out with @Public(). + { provide: core_12.APP_GUARD, useClass: guards_1.JwtAuthGuard }, + { provide: core_12.APP_GUARD, useClass: guards_1.PermissionsGuard } + ], + exports: [auth_service_1.AuthService] + }) + ], AuthModule); + } +}); + +// dist/modules/admin-table/table.service.js +var require_table_service = __commonJS({ + "dist/modules/admin-table/table.service.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.TableService = void 0; + var common_12 = require_common(); + var TableService = class TableService { + /** + * Turns a dotted path into a nested Prisma object: + * 'customer.fullName', 'x' -> { customer: { fullName: 'x' } } + */ + nest(path, leaf) { + const parts = path.split("."); + return parts.reduceRight((acc, key, i) => { + return i === parts.length - 1 ? { [key]: leaf } : { [key]: acc }; + }, leaf); + } + assertAllowed(field, allowed) { + if (allowed && !allowed.includes(field)) { + throw new common_12.BadRequestException(`Field not filterable: ${field}`); + } + } + /** Maps one legacy filter row to a Prisma condition. */ + toCondition(f, allowed) { + if (!f.field || !f.op) + return null; + this.assertAllowed(f.field, allowed); + const v = f.value; + switch (f.op) { + case "=": + return this.nest(f.field, { equals: v }); + case "!=": + return this.nest(f.field, { not: v }); + case ">": + return this.nest(f.field, { gt: v }); + case ">=": + return this.nest(f.field, { gte: v }); + case "<": + return this.nest(f.field, { lt: v }); + case "<=": + return this.nest(f.field, { lte: v }); + case "like": + return this.nest(f.field, { + contains: String(v ?? "").replace(/^%|%$/g, ""), + mode: "insensitive" + }); + case "in": + return this.nest(f.field, { in: Array.isArray(v) ? v : [v] }); + case "between": + return this.nest(f.field, { gte: v, lte: f.value2 }); + case "null": + return this.nest(f.field, { equals: null }); + case "notnull": + return this.nest(f.field, { not: null }); + default: + return null; + } + } + /** Builds `where`, `orderBy`, `skip` and `take` from an XTable request. */ + build(query, opts = {}) { + const page = query.page && query.page > 0 ? query.page : 1; + const limit = query.limit && query.limit > 0 ? query.limit : 10; + const and = []; + for (const f of query.filters ?? []) { + const cond = this.toCondition(f, opts.allowed); + if (cond) + and.push(cond); + } + const search = query.search?.trim(); + if (search && opts.searchable?.length) { + and.push({ + OR: opts.searchable.map((field) => this.nest(field, { contains: search, mode: "insensitive" })) + }); + } + let orderBy = opts.defaultOrderBy ?? { createdAt: "desc" }; + if (query.order) { + const dir = query.order.startsWith("-") ? "desc" : "asc"; + const field = query.order.replace(/^[+-]/, ""); + if (field) { + this.assertAllowed(field, opts.allowed); + orderBy = this.nest(field, dir); + } + } + return { + where: and.length ? { AND: and } : {}, + orderBy, + skip: (page - 1) * limit, + take: limit, + page, + limit + }; + } + /** Wraps rows + count into the exact envelope XTable expects. */ + respond(rows, total, query, page, limit) { + return { + rows, + query: { + search: query.search, + filters: query.filters ?? [], + total, + limit, + page + } + }; + } + /** Exports are not implemented; fail loudly instead of returning a dead url. */ + assertNotExport(query) { + if (query.op) { + throw new common_12.BadRequestException(`Export ('${query.op}') is not implemented yet in the new backend.`); + } + } + }; + exports2.TableService = TableService; + exports2.TableService = TableService = __decorate4([ + (0, common_12.Injectable)() + ], TableService); + } +}); + +// dist/modules/admin-table/admin-table.module.js +var require_admin_table_module = __commonJS({ + "dist/modules/admin-table/admin-table.module.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminTableModule = void 0; + var common_12 = require_common(); + var table_service_1 = require_table_service(); + var AdminTableModule = class AdminTableModule { + }; + exports2.AdminTableModule = AdminTableModule; + exports2.AdminTableModule = AdminTableModule = __decorate4([ + (0, common_12.Global)(), + (0, common_12.Module)({ + providers: [table_service_1.TableService], + exports: [table_service_1.TableService] + }) + ], AdminTableModule); + } +}); + +// dist/modules/admin-orders/admin-orders.service.js +var require_admin_orders_service = __commonJS({ + "dist/modules/admin-orders/admin-orders.service.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var AdminOrdersService_1; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminOrdersService = void 0; + var common_12 = require_common(); + var client_1 = require("@prisma/client"); + var prisma_service_1 = require_prisma_service(); + var table_service_1 = require_table_service(); + var orders_service_1 = require_orders_service(); + var STATUS_LABELS = { + SUSPENDED: "\u0645\u0639\u0644\u0642 (\u0633\u0642\u0641 \u0627\u0639\u062A\u0628\u0627\u0631)", + PLACED: "\u062B\u0628\u062A \u0634\u062F\u0647", + ADMIN_APPROVED: "\u062A\u0627\u06CC\u06CC\u062F \u0645\u062F\u06CC\u0631", + SOURCING: "\u062F\u0631 \u062D\u0627\u0644 \u062A\u0627\u0645\u06CC\u0646", + PREPARING: "\u062F\u0631 \u062D\u0627\u0644 \u0622\u0645\u0627\u062F\u0647\u200C\u0633\u0627\u0632\u06CC", + DELIVERED_TO_AGENT: "\u062A\u062D\u0648\u06CC\u0644 \u0628\u0647 \u0646\u0645\u0627\u06CC\u0646\u062F\u0647", + DELIVERED_TO_CUSTOMER: "\u062A\u062D\u0648\u06CC\u0644 \u0628\u0647 \u0645\u0634\u062A\u0631\u06CC", + CANCELLED: "\u0644\u063A\u0648 \u0634\u062F\u0647" + }; + var STATUS_FLOW = [ + client_1.OrderStatus.PLACED, + client_1.OrderStatus.ADMIN_APPROVED, + client_1.OrderStatus.SOURCING, + client_1.OrderStatus.PREPARING, + client_1.OrderStatus.DELIVERED_TO_AGENT, + client_1.OrderStatus.DELIVERED_TO_CUSTOMER + ]; + var AdminOrdersService = class AdminOrdersService { + static { + AdminOrdersService_1 = this; + } + prisma; + table; + orders; + constructor(prisma, table, orders) { + this.prisma = prisma; + this.table = table; + this.orders = orders; + } + /** Fields the XTable filter bar and sorter may reference. */ + static ALLOWED = [ + "id", + "orderNumber", + "status", + "createdAt", + "updatedAt", + "totalGoldWeightGrams", + "flatRialCharge", + "isSuspendedOverCreditLimit", + "customer.fullName", + "customer.mobile", + "branch.name" + ]; + /** + * Legacy `POST single-order` — the order list grid. + * + * `branchId` narrows the result to one branch, which is how the branch-mode + * build of the panel scopes its list. + */ + async list(query, branchId, channel = client_1.OrderChannel.RETAIL) { + this.table.assertNotExport(query); + const { where, orderBy, skip, take, page, limit } = this.table.build(query, { + searchable: ["orderNumber", "customer.fullName", "customer.mobile"], + allowed: AdminOrdersService_1.ALLOWED, + defaultOrderBy: { createdAt: "desc" } + }); + const scoped = { + AND: [ + where, + { channel }, + ...branchId ? [{ branchId }] : [] + ] + }; + const [rows, total] = await Promise.all([ + this.prisma.order.findMany({ + where: scoped, + orderBy, + skip, + take, + include: { + customer: true, + branch: true, + items: { include: { productVariant: { include: { product: true } } } } + } + }), + this.prisma.order.count({ where: scoped }) + ]); + return this.table.respond(rows.map((r) => this.toRow(r)), total, query, page, limit); + } + /** + * Shapes a row the way the ported list view reads it. + * + * Legacy field names are preserved (`sts_str`, `caj`, `total_price`, `items`) + * so the ported template bindings keep working unchanged. + */ + toRow(o) { + return { + id: o.id, + orderNumber: o.orderNumber, + status: o.status, + sts_str: STATUS_LABELS[o.status], + caj: o.createdAt, + uaj: o.updatedAt, + total_price: o.flatRialCharge, + totalGoldWeightGrams: o.totalGoldWeightGrams, + wageWeightGrams: o.wageWeightGrams, + isSuspendedOverCreditLimit: o.isSuspendedOverCreditLimit, + deliveredAt: o.deliveredAt, + branch_id: o.branchId, + branch: o.branch ? { id: o.branch.id, name: o.branch.name } : null, + customer: { + id: o.customer.id, + // Legacy split names into fname/lname; the new schema has one fullName. + // Both are exposed so ported templates binding either keep working. + fname: o.customer.fullName, + lname: "", + fullName: o.customer.fullName, + phone: o.customer.mobile + }, + items: o.items.map((it) => ({ + id: it.id, + title: it.productVariant.product.title, + variant_title: it.productVariant.title, + qty: it.quantity, + grams: it.computedWeightGrams, + rash: it.rashWeightGramsSnapshot + })) + }; + } + /** + * Legacy `POST major/order/table` — the wholesale (عمده) order grid. + * + * Legacy kept the two sales channels in SEPARATE tables: `orders_orders` + * (SingleCustomerOrders, served by AdminController::getSingleOrders) and + * `orders` (Order, served by MajorOrderController::index). Neither controller + * applied a type filter because the table itself was the discriminator, so the + * two lists never overlapped. + * + * The redesigned schema has one Order model, so `Order.channel` carries that + * distinction instead and each list filters on it. + */ + async listWholesale(query, branchId) { + return this.list(query, branchId, client_1.OrderChannel.WHOLESALE); + } + /** + * Legacy `POST order-tamin` — MajorOrderController::getTaminOrders. + * + * Legacy narrowed to orders whose activity contained Order::$STS[3], i.e. those + * that have reached the sourcing stage. The equivalent here is a status event + * recording a transition into SOURCING. + */ + async listTamin(query, branchId) { + this.table.assertNotExport(query); + const { where, orderBy, skip, take, page, limit } = this.table.build(query, { + searchable: ["orderNumber", "customer.fullName", "customer.mobile"], + allowed: AdminOrdersService_1.ALLOWED, + defaultOrderBy: { createdAt: "desc" } + }); + const conditions = [ + where, + { statusEvents: { some: { toStatus: client_1.OrderStatus.SOURCING } } } + ]; + if (branchId) + conditions.push({ branchId }); + const scoped = { AND: conditions }; + const [rows, total] = await Promise.all([ + this.prisma.order.findMany({ + where: scoped, + orderBy, + skip, + take, + include: { + customer: true, + branch: true, + items: { include: { productVariant: { include: { product: true } } } } + } + }), + this.prisma.order.count({ where: scoped }) + ]); + return this.table.respond(rows.map((r) => this.toRow(r)), total, query, page, limit); + } + /** Legacy `POST delete-order` — remove a wholesale order. */ + async remove(id) { + const order = await this.prisma.order.findUnique({ + where: { id }, + include: { ledgerEntries: true } + }); + if (!order) + throw new common_12.NotFoundException("\u0633\u0641\u0627\u0631\u0634 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + if (order.ledgerEntries.length > 0) { + throw new common_12.BadRequestException("\u062D\u0630\u0641 \u0627\u06CC\u0646 \u0633\u0641\u0627\u0631\u0634 \u0645\u0645\u06A9\u0646 \u0646\u06CC\u0633\u062A\u060C \u0686\u0648\u0646 \u0628\u0631\u0627\u06CC \u0622\u0646 \u0633\u0646\u062F \u062D\u0633\u0627\u0628\u062F\u0627\u0631\u06CC \u062B\u0628\u062A \u0634\u062F\u0647 \u0627\u0633\u062A."); + } + await this.prisma.$transaction([ + this.prisma.orderStatusEvent.deleteMany({ where: { orderId: id } }), + this.prisma.orderItem.deleteMany({ where: { orderId: id } }), + this.prisma.order.delete({ where: { id } }) + ]); + return { success: true }; + } + /** Legacy `GET order/:id` detail, including the status timeline. */ + async findOne(id) { + const order = await this.prisma.order.findUnique({ + where: { id }, + include: { + customer: true, + branch: true, + items: { include: { productVariant: { include: { product: true } } } }, + statusEvents: { include: { actorAdminUser: true }, orderBy: { createdAt: "asc" } } + } + }); + if (!order) + throw new common_12.NotFoundException("\u0633\u0641\u0627\u0631\u0634 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + const reached = new Set(order.statusEvents.map((e) => e.toStatus)); + return { + ...this.toRow(order), + // legacy `activity`: one entry per step, `proceed` marking those reached + activity: STATUS_FLOW.map((s) => { + const event = order.statusEvents.find((e) => e.toStatus === s); + return { + status: s, + title: STATUS_LABELS[s], + proceed: reached.has(s), + uaj: event?.createdAt ?? null, + note: event?.note ?? "" + }; + }) + }; + } + /** Farsi labels for the status dropdowns. */ + statusOptions() { + return Object.entries(STATUS_LABELS).map(([value, title]) => ({ value, title })); + } + /** + * Legacy `GET order/type` — the "نوع فروش" dropdown. + * Legacy Order::$TYPES = [1 => 'ثبت سفارش توسط مسئول فروش', 2 => 'ثبت مشتری']. + */ + typeOptions() { + return { 1: "\u062B\u0628\u062A \u0633\u0641\u0627\u0631\u0634 \u062A\u0648\u0633\u0637 \u0645\u0633\u0626\u0648\u0644 \u0641\u0631\u0648\u0634", 2: "\u062B\u0628\u062A \u0645\u0634\u062A\u0631\u06CC" }; + } + /** + * Legacy `POST /order` from views/order/create.vue — the admin order builder. + * + * Delegates to OrdersService.createOrder, which owns the weight formula + * w = rash * (1 + (wagePercent - discountPercent)/100) + * and the credit-limit gate that suspends rather than rejects an over-limit + * order. Reimplementing either here would let the two paths drift. + * + * Legacy also posted total_price / total_weight / gold_price_original computed + * in the BROWSER. Those are ignored: the server recomputes them from the + * variant snapshots, so a tampered or stale client total cannot alter a debt. + */ + async createFromAdmin(payload, actorAdminUserId) { + if (!payload.customer_id) + throw new common_12.BadRequestException("\u0645\u0634\u062A\u0631\u06CC \u0627\u0646\u062A\u062E\u0627\u0628 \u0646\u0634\u062F\u0647 \u0627\u0633\u062A"); + if (!Array.isArray(payload.order_items) || payload.order_items.length === 0) { + throw new common_12.BadRequestException("\u0633\u0628\u062F \u0633\u0641\u0627\u0631\u0634 \u062E\u0627\u0644\u06CC \u0627\u0633\u062A"); + } + const items = await Promise.all(payload.order_items.map(async (it) => { + const variant = await this.prisma.productVariant.findUnique({ where: { id: it.vid } }); + if (!variant) + throw new common_12.NotFoundException(`\u062A\u0646\u0648\u0639 \u0645\u062D\u0635\u0648\u0644 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F: ${it.vid}`); + return { + productVariantId: it.vid, + quantity: Number(it.qty) || 1, + // Fall back to the variant's own default wage when the builder did not + // negotiate a different one. + wagePercent: Number(it.percent ?? variant.defaultWagePercent), + discountPercent: Number(it.discount ?? 0), + flatRialCharge: Number(it.rial_input ?? 0) + }; + })); + const order = await this.orders.createOrder({ + customerId: payload.customer_id, + items, + // The admin builder serves the omde (major/*) flow, so orders it creates + // belong to the wholesale channel — legacy wrote them to the `orders` + // table, which MajorOrderController::index listed. + channel: client_1.OrderChannel.WHOLESALE + }); + const target = this.statusFromLegacyCode(payload.sts); + if (target && target !== client_1.OrderStatus.PLACED) { + await this.orders.updateStatus(order.id, target, actorAdminUserId, payload.note); + } + return this.findOne(order.id); + } + /** + * Legacy delivery-status codes from create.vue's `sts` map: + * 1 ثبت سفارش | 2 تایید مدیر سیستم | 3 در حال تامین + * 4 در حال آماده سازی | 5 ارسال | 6 تحویل مشتری + */ + statusFromLegacyCode(code) { + const map = { + 1: client_1.OrderStatus.PLACED, + 2: client_1.OrderStatus.ADMIN_APPROVED, + 3: client_1.OrderStatus.SOURCING, + 4: client_1.OrderStatus.PREPARING, + 5: client_1.OrderStatus.DELIVERED_TO_AGENT, + 6: client_1.OrderStatus.DELIVERED_TO_CUSTOMER + }; + return code === void 0 ? void 0 : map[Number(code)]; + } + /** + * Legacy `POST single/order-sts/edit` — advance or remove a status. + * + * Setting a status delegates to OrdersService.updateStatus rather than writing + * the row here, because that method also posts the gold debt to the ledger at + * DELIVERED_TO_AGENT. Duplicating the update would silently skip that. + */ + async setStatus(dto, actorAdminUserId) { + if (dto.remove) { + return this.removeStatusEvent(dto.orderId, dto.status); + } + return this.orders.updateStatus(dto.orderId, dto.status, actorAdminUserId, dto.note); + } + /** + * Legacy's `remove: true` branch: drop a recorded status event. + * + * Deliberately refuses to remove DELIVERED_TO_AGENT. In legacy, deleting that + * row left the posted debt ledger entries behind, so the customer stayed in + * debt for an order no longer marked delivered. Rather than reproduce a + * data-corrupting path, this rejects and explains — recorded in + * docs/ADMIN-PORT-PLAN.md. + */ + async removeStatusEvent(orderId, status) { + if (status === client_1.OrderStatus.DELIVERED_TO_AGENT) { + throw new common_12.BadRequestException("\u062D\u0630\u0641 \u0648\u0636\u0639\u06CC\u062A \xAB\u062A\u062D\u0648\u06CC\u0644 \u0628\u0647 \u0646\u0645\u0627\u06CC\u0646\u062F\u0647\xBB \u0645\u0645\u06A9\u0646 \u0646\u06CC\u0633\u062A\u060C \u0686\u0648\u0646 \u0628\u062F\u0647\u06CC \u0637\u0644\u0627 \u062F\u0631 \u0647\u0645\u06CC\u0646 \u0645\u0631\u062D\u0644\u0647 \u062B\u0628\u062A \u0634\u062F\u0647 \u0627\u0633\u062A."); + } + const event = await this.prisma.orderStatusEvent.findFirst({ + where: { orderId, toStatus: status }, + orderBy: { createdAt: "desc" } + }); + if (!event) + throw new common_12.NotFoundException("\u0648\u0636\u0639\u06CC\u062A \u0645\u0648\u0631\u062F \u0646\u0638\u0631 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + await this.prisma.orderStatusEvent.delete({ where: { id: event.id } }); + const latest = await this.prisma.orderStatusEvent.findFirst({ + where: { orderId }, + orderBy: { createdAt: "desc" } + }); + return this.prisma.order.update({ + where: { id: orderId }, + data: { status: latest?.toStatus ?? client_1.OrderStatus.PLACED } + }); + } + }; + exports2.AdminOrdersService = AdminOrdersService; + exports2.AdminOrdersService = AdminOrdersService = AdminOrdersService_1 = __decorate4([ + (0, common_12.Injectable)(), + __metadata3("design:paramtypes", [ + prisma_service_1.PrismaService, + table_service_1.TableService, + orders_service_1.OrdersService + ]) + ], AdminOrdersService); + } +}); + +// dist/modules/admin-table/table-query.dto.js +var require_table_query_dto = __commonJS({ + "dist/modules/admin-table/table-query.dto.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.TableQueryDto = exports2.TableFilterDto = void 0; + var class_transformer_1 = require_cjs2(); + var class_validator_1 = require_cjs(); + var TableFilterDto = class { + id; + field; + /** + * Legacy operators, kept verbatim. `between` uses value + value2 and is what + * the date-range filter emits. + */ + op; + value; + value2; + }; + exports2.TableFilterDto = TableFilterDto; + __decorate4([ + (0, class_validator_1.IsOptional)(), + __metadata3("design:type", Object) + ], TableFilterDto.prototype, "id", void 0); + __decorate4([ + (0, class_validator_1.IsOptional)(), + (0, class_validator_1.IsString)(), + __metadata3("design:type", String) + ], TableFilterDto.prototype, "field", void 0); + __decorate4([ + (0, class_validator_1.IsOptional)(), + (0, class_validator_1.IsIn)(["=", "!=", ">", ">=", "<", "<=", "like", "in", "between", "null", "notnull"]), + __metadata3("design:type", String) + ], TableFilterDto.prototype, "op", void 0); + __decorate4([ + (0, class_validator_1.IsOptional)(), + __metadata3("design:type", Object) + ], TableFilterDto.prototype, "value", void 0); + __decorate4([ + (0, class_validator_1.IsOptional)(), + __metadata3("design:type", Object) + ], TableFilterDto.prototype, "value2", void 0); + var TableQueryDto = class { + search; + filters; + page; + limit; + /** Sort spec: '+field' ascending, '-field' descending (legacy `order`). */ + order; + /** Columns currently visible; drives the export payload. */ + select; + /** key -> Farsi column heading, used for export headers. */ + titles; + report_title; + /** + * Export mode. Legacy expected `{ url }` back and did `window.open(data.url)`. + * Exports are not implemented yet; the controller rejects these explicitly + * rather than returning a broken url. + */ + op; + /** Echoed back inside `query`; the client owns this value. */ + total; + }; + exports2.TableQueryDto = TableQueryDto; + __decorate4([ + (0, class_validator_1.IsOptional)(), + (0, class_validator_1.IsString)(), + __metadata3("design:type", String) + ], TableQueryDto.prototype, "search", void 0); + __decorate4([ + (0, class_validator_1.IsOptional)(), + (0, class_validator_1.IsArray)(), + (0, class_validator_1.ValidateNested)({ each: true }), + (0, class_transformer_1.Type)(() => TableFilterDto), + __metadata3("design:type", Array) + ], TableQueryDto.prototype, "filters", void 0); + __decorate4([ + (0, class_validator_1.IsOptional)(), + (0, class_transformer_1.Type)(() => Number), + (0, class_validator_1.IsInt)(), + (0, class_validator_1.Min)(1), + __metadata3("design:type", Number) + ], TableQueryDto.prototype, "page", void 0); + __decorate4([ + (0, class_validator_1.IsOptional)(), + (0, class_transformer_1.Type)(() => Number), + (0, class_validator_1.IsInt)(), + (0, class_validator_1.Min)(1), + (0, class_validator_1.Max)(500), + __metadata3("design:type", Number) + ], TableQueryDto.prototype, "limit", void 0); + __decorate4([ + (0, class_validator_1.IsOptional)(), + (0, class_validator_1.IsString)(), + __metadata3("design:type", String) + ], TableQueryDto.prototype, "order", void 0); + __decorate4([ + (0, class_validator_1.IsOptional)(), + (0, class_validator_1.IsArray)(), + __metadata3("design:type", Array) + ], TableQueryDto.prototype, "select", void 0); + __decorate4([ + (0, class_validator_1.IsOptional)(), + __metadata3("design:type", Object) + ], TableQueryDto.prototype, "titles", void 0); + __decorate4([ + (0, class_validator_1.IsOptional)(), + (0, class_validator_1.IsString)(), + __metadata3("design:type", String) + ], TableQueryDto.prototype, "report_title", void 0); + __decorate4([ + (0, class_validator_1.IsOptional)(), + (0, class_validator_1.IsIn)(["excel", "json", "print"]), + __metadata3("design:type", String) + ], TableQueryDto.prototype, "op", void 0); + __decorate4([ + (0, class_validator_1.IsOptional)(), + __metadata3("design:type", Number) + ], TableQueryDto.prototype, "total", void 0); + } +}); + +// dist/modules/admin-orders/update-status.dto.js +var require_update_status_dto = __commonJS({ + "dist/modules/admin-orders/update-status.dto.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.UpdateOrderStatusDto = void 0; + var class_validator_1 = require_cjs(); + var client_1 = require("@prisma/client"); + var UpdateOrderStatusDto = class { + orderId; + status; + note; + /** legacy: row.remove = true -> delete this status event rather than add one */ + remove; + }; + exports2.UpdateOrderStatusDto = UpdateOrderStatusDto; + __decorate4([ + (0, class_validator_1.IsString)(), + __metadata3("design:type", String) + ], UpdateOrderStatusDto.prototype, "orderId", void 0); + __decorate4([ + (0, class_validator_1.IsEnum)(client_1.OrderStatus), + __metadata3("design:type", String) + ], UpdateOrderStatusDto.prototype, "status", void 0); + __decorate4([ + (0, class_validator_1.IsOptional)(), + (0, class_validator_1.IsString)(), + __metadata3("design:type", String) + ], UpdateOrderStatusDto.prototype, "note", void 0); + __decorate4([ + (0, class_validator_1.IsOptional)(), + (0, class_validator_1.IsBoolean)(), + __metadata3("design:type", Boolean) + ], UpdateOrderStatusDto.prototype, "remove", void 0); + } +}); + +// dist/modules/admin-orders/admin-orders.controller.js +var require_admin_orders_controller = __commonJS({ + "dist/modules/admin-orders/admin-orders.controller.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var __param3 = exports2 && exports2.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminOrdersController = void 0; + var common_12 = require_common(); + var admin_orders_service_1 = require_admin_orders_service(); + var table_query_dto_1 = require_table_query_dto(); + var update_status_dto_1 = require_update_status_dto(); + var guards_1 = require_guards2(); + var AdminOrdersController = class AdminOrdersController { + orders; + constructor(orders) { + this.orders = orders; + } + /** Legacy POST single-order. POST, not GET, because XTable posts its filters. */ + list(query, admin) { + return this.orders.list(query, admin.branchId ?? void 0); + } + /** Legacy POST major/order/table — the wholesale grid. */ + listWholesale(query, admin) { + return this.orders.listWholesale(query, admin.branchId ?? void 0); + } + /** Legacy POST order-tamin — orders that reached the sourcing stage. */ + listTamin(query, admin) { + return this.orders.listTamin(query, admin.branchId ?? void 0); + } + /** Legacy POST delete-order. */ + remove(body) { + return this.orders.remove(body.id); + } + /** Legacy POST /order from the admin order builder (views/order/create.vue). */ + createFromAdmin(body, admin) { + return this.orders.createFromAdmin(body, admin.id); + } + /** Legacy GET order/type. */ + typeOptions() { + return this.orders.typeOptions(); + } + statusOptions() { + return this.orders.statusOptions(); + } + /** Legacy POST single/order-sts/edit. */ + setStatus(dto, admin) { + return this.orders.setStatus(dto, admin.id); + } + findOne(id) { + return this.orders.findOne(id); + } + }; + exports2.AdminOrdersController = AdminOrdersController; + __decorate4([ + (0, common_12.Post)("list"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("order.list"), + __param3(0, (0, common_12.Body)()), + __param3(1, (0, guards_1.CurrentAdmin)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [table_query_dto_1.TableQueryDto, Object]), + __metadata3("design:returntype", void 0) + ], AdminOrdersController.prototype, "list", null); + __decorate4([ + (0, common_12.Post)("wholesale/list"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("order.omde"), + __param3(0, (0, common_12.Body)()), + __param3(1, (0, guards_1.CurrentAdmin)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [table_query_dto_1.TableQueryDto, Object]), + __metadata3("design:returntype", void 0) + ], AdminOrdersController.prototype, "listWholesale", null); + __decorate4([ + (0, common_12.Post)("tamin/list"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("order.tamin"), + __param3(0, (0, common_12.Body)()), + __param3(1, (0, guards_1.CurrentAdmin)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [table_query_dto_1.TableQueryDto, Object]), + __metadata3("design:returntype", void 0) + ], AdminOrdersController.prototype, "listTamin", null); + __decorate4([ + (0, common_12.Post)("delete"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("order.omde"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], AdminOrdersController.prototype, "remove", null); + __decorate4([ + (0, common_12.Post)("create"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("order.create"), + __param3(0, (0, common_12.Body)()), + __param3(1, (0, guards_1.CurrentAdmin)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object, Object]), + __metadata3("design:returntype", void 0) + ], AdminOrdersController.prototype, "createFromAdmin", null); + __decorate4([ + (0, common_12.Get)("type-options"), + (0, guards_1.RequirePermission)("order.create"), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", []), + __metadata3("design:returntype", void 0) + ], AdminOrdersController.prototype, "typeOptions", null); + __decorate4([ + (0, common_12.Get)("status-options"), + (0, guards_1.RequirePermission)("order.list"), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", []), + __metadata3("design:returntype", void 0) + ], AdminOrdersController.prototype, "statusOptions", null); + __decorate4([ + (0, common_12.Post)("status"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("order.list"), + __param3(0, (0, common_12.Body)()), + __param3(1, (0, guards_1.CurrentAdmin)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [update_status_dto_1.UpdateOrderStatusDto, Object]), + __metadata3("design:returntype", void 0) + ], AdminOrdersController.prototype, "setStatus", null); + __decorate4([ + (0, common_12.Get)(":id"), + (0, guards_1.RequirePermission)("order.list"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminOrdersController.prototype, "findOne", null); + exports2.AdminOrdersController = AdminOrdersController = __decorate4([ + (0, common_12.Controller)("admin/orders"), + __metadata3("design:paramtypes", [admin_orders_service_1.AdminOrdersService]) + ], AdminOrdersController); + } +}); + +// dist/modules/admin-orders/admin-orders.module.js +var require_admin_orders_module = __commonJS({ + "dist/modules/admin-orders/admin-orders.module.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminOrdersModule = void 0; + var common_12 = require_common(); + var prisma_module_1 = require_prisma_module(); + var orders_module_1 = require_orders_module(); + var admin_orders_controller_1 = require_admin_orders_controller(); + var admin_orders_service_1 = require_admin_orders_service(); + var AdminOrdersModule = class AdminOrdersModule { + }; + exports2.AdminOrdersModule = AdminOrdersModule; + exports2.AdminOrdersModule = AdminOrdersModule = __decorate4([ + (0, common_12.Module)({ + imports: [prisma_module_1.PrismaModule, orders_module_1.OrdersModule], + controllers: [admin_orders_controller_1.AdminOrdersController], + providers: [admin_orders_service_1.AdminOrdersService] + }) + ], AdminOrdersModule); + } +}); + +// dist/modules/admin-cities/admin-cities.controller.js +var require_admin_cities_controller = __commonJS({ + "dist/modules/admin-cities/admin-cities.controller.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminCitiesController = void 0; + var common_12 = require_common(); + var prisma_service_1 = require_prisma_service(); + var AdminCitiesController = class AdminCitiesController { + prisma; + constructor(prisma) { + this.prisma = prisma; + } + async list() { + const cities = await this.prisma.city.findMany({ orderBy: { name: "asc" } }); + return { rows: cities.map((c) => ({ id: c.id, title: c.name, province: c.province })) }; + } + }; + exports2.AdminCitiesController = AdminCitiesController; + __decorate4([ + (0, common_12.Post)("list"), + (0, common_12.HttpCode)(200), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", []), + __metadata3("design:returntype", Promise) + ], AdminCitiesController.prototype, "list", null); + exports2.AdminCitiesController = AdminCitiesController = __decorate4([ + (0, common_12.Controller)("admin/cities"), + __metadata3("design:paramtypes", [prisma_service_1.PrismaService]) + ], AdminCitiesController); + } +}); + +// dist/modules/admin-cities/admin-cities.module.js +var require_admin_cities_module = __commonJS({ + "dist/modules/admin-cities/admin-cities.module.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminCitiesModule = void 0; + var common_12 = require_common(); + var prisma_module_1 = require_prisma_module(); + var admin_cities_controller_1 = require_admin_cities_controller(); + var AdminCitiesModule = class AdminCitiesModule { + }; + exports2.AdminCitiesModule = AdminCitiesModule; + exports2.AdminCitiesModule = AdminCitiesModule = __decorate4([ + (0, common_12.Module)({ + imports: [prisma_module_1.PrismaModule], + controllers: [admin_cities_controller_1.AdminCitiesController] + }) + ], AdminCitiesModule); + } +}); + +// dist/modules/admin-preorders/admin-preorders.service.js +var require_admin_preorders_service = __commonJS({ + "dist/modules/admin-preorders/admin-preorders.service.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var AdminPreOrdersService_1; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminPreOrdersService = void 0; + var common_12 = require_common(); + var client_1 = require("@prisma/client"); + var prisma_service_1 = require_prisma_service(); + var table_service_1 = require_table_service(); + var PREORDER_STATUS_LABELS = { + PLACED: "\u062B\u0628\u062A \u0634\u062F\u0647", + ADMIN_APPROVED: "\u062A\u0627\u06CC\u06CC\u062F \u0645\u062F\u06CC\u0631", + WORKSHOP_APPROVED: "\u062A\u0627\u06CC\u06CC\u062F \u06A9\u0627\u0631\u06AF\u0627\u0647", + READY_TO_SHIP: "\u0622\u0645\u0627\u062F\u0647 \u0627\u0631\u0633\u0627\u0644", + DELIVERED: "\u062A\u062D\u0648\u06CC\u0644 \u0634\u062F\u0647", + CANCELLED: "\u0644\u063A\u0648 \u0634\u062F\u0647" + }; + var AdminPreOrdersService = class AdminPreOrdersService { + static { + AdminPreOrdersService_1 = this; + } + prisma; + table; + constructor(prisma, table) { + this.prisma = prisma; + this.table = table; + } + static ALLOWED = [ + "id", + "status", + "createdAt", + "updatedAt", + "colorName", + "sizeSpec", + "stoneColor", + "minaColor", + "estimatedWeightGrams", + "estimatedPriceRial", + "customer.fullName", + "customer.mobile" + ]; + /** Legacy `POST get-custom-orders`. */ + async list(query) { + this.table.assertNotExport(query); + const { where, orderBy, skip, take, page, limit } = this.table.build(query, { + searchable: ["customer.fullName", "customer.mobile"], + allowed: AdminPreOrdersService_1.ALLOWED, + defaultOrderBy: { createdAt: "desc" } + }); + const [rows, total] = await Promise.all([ + this.prisma.preOrder.findMany({ + where, + orderBy, + skip, + take, + include: { customer: true, city: true, workshop: true } + }), + this.prisma.preOrder.count({ where }) + ]); + return this.table.respond(rows.map((r) => this.toRow(r)), total, query, page, limit); + } + /** Legacy field names (color, size, color_mina, color_stone, ...) preserved. */ + toRow(p) { + return { + id: p.id, + status: p.status, + sts_str_fa: PREORDER_STATUS_LABELS[p.status], + color: p.colorName, + size: p.sizeSpec, + color_mina: p.minaColor, + color_stone: p.stoneColor, + // legacy 'sum' (quantity); a PreOrder models a single design request + sum: 1, + description: p.description, + designImageUrl: p.designImageUrl, + estimatedWeightGrams: p.estimatedWeightGrams, + estimatedPriceRial: p.estimatedPriceRial, + time_creat_fa: p.createdAt, + time_update_fa: p.updatedAt, + convertedOrderId: p.convertedOrderId, + city: p.city ? { id: p.city.id, title: p.city.name } : null, + workshop: p.workshop ? { id: p.workshop.id, name: p.workshop.name } : null, + customer: { + id: p.customer.id, + fname: p.customer.fullName, + lname: "", + name: p.customer.fullName, + fullName: p.customer.fullName, + mobile: p.customer.mobile + } + }; + } + async findOne(id) { + const p = await this.prisma.preOrder.findUnique({ + where: { id }, + include: { customer: true, city: true, workshop: true } + }); + if (!p) + throw new common_12.NotFoundException("\u0633\u0641\u0627\u0631\u0634 \u0633\u0627\u062E\u062A\u0646\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + return this.toRow(p); + } + /** Legacy `PUT custom-order/{id}`. */ + async update(id, data) { + const existing = await this.prisma.preOrder.findUnique({ where: { id } }); + if (!existing) + throw new common_12.NotFoundException("\u0633\u0641\u0627\u0631\u0634 \u0633\u0627\u062E\u062A\u0646\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + const patch = {}; + if (data.status !== void 0) + patch.status = data.status; + if (data.color !== void 0) + patch.colorName = data.color; + if (data.size !== void 0) + patch.sizeSpec = data.size; + if (data.color_mina !== void 0) + patch.minaColor = data.color_mina; + if (data.color_stone !== void 0) + patch.stoneColor = data.color_stone; + if (data.description !== void 0) + patch.description = data.description; + if (data.estimatedWeightGrams !== void 0) { + patch.estimatedWeightGrams = new client_1.Prisma.Decimal(data.estimatedWeightGrams); + } + if (data.estimatedPriceRial !== void 0) { + patch.estimatedPriceRial = new client_1.Prisma.Decimal(data.estimatedPriceRial); + } + return this.prisma.preOrder.update({ where: { id }, data: patch }); + } + /** Legacy `DELETE custom-order/{id}`. */ + async remove(id) { + const p = await this.prisma.preOrder.findUnique({ where: { id } }); + if (!p) + throw new common_12.NotFoundException("\u0633\u0641\u0627\u0631\u0634 \u0633\u0627\u062E\u062A\u0646\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + if (p.convertedOrderId) { + throw new common_12.BadRequestException("\u062D\u0630\u0641 \u0645\u0645\u06A9\u0646 \u0646\u06CC\u0633\u062A: \u0627\u06CC\u0646 \u0633\u0641\u0627\u0631\u0634 \u0633\u0627\u062E\u062A\u0646\u06CC \u0642\u0628\u0644\u0627\u064B \u0628\u0647 \u0633\u0641\u0627\u0631\u0634 \u0642\u0637\u0639\u06CC \u062A\u0628\u062F\u06CC\u0644 \u0634\u062F\u0647 \u0627\u0633\u062A."); + } + await this.prisma.$transaction([ + this.prisma.preOrderStatusEvent.deleteMany({ where: { preOrderId: id } }), + this.prisma.preOrder.delete({ where: { id } }) + ]); + return { success: true }; + } + statusOptions() { + return Object.entries(PREORDER_STATUS_LABELS).map(([value, title]) => ({ value, title })); + } + }; + exports2.AdminPreOrdersService = AdminPreOrdersService; + exports2.AdminPreOrdersService = AdminPreOrdersService = AdminPreOrdersService_1 = __decorate4([ + (0, common_12.Injectable)(), + __metadata3("design:paramtypes", [ + prisma_service_1.PrismaService, + table_service_1.TableService + ]) + ], AdminPreOrdersService); + } +}); + +// dist/modules/admin-preorders/admin-preorders.controller.js +var require_admin_preorders_controller = __commonJS({ + "dist/modules/admin-preorders/admin-preorders.controller.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var __param3 = exports2 && exports2.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminPreOrdersController = void 0; + var common_12 = require_common(); + var admin_preorders_service_1 = require_admin_preorders_service(); + var table_query_dto_1 = require_table_query_dto(); + var guards_1 = require_guards2(); + var AdminPreOrdersController = class AdminPreOrdersController { + preOrders; + constructor(preOrders) { + this.preOrders = preOrders; + } + list(query) { + return this.preOrders.list(query); + } + statusOptions() { + return this.preOrders.statusOptions(); + } + findOne(id) { + return this.preOrders.findOne(id); + } + update(id, data) { + return this.preOrders.update(id, data); + } + remove(id) { + return this.preOrders.remove(id); + } + }; + exports2.AdminPreOrdersController = AdminPreOrdersController; + __decorate4([ + (0, common_12.Post)("list"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("order.makeOrder"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [table_query_dto_1.TableQueryDto]), + __metadata3("design:returntype", void 0) + ], AdminPreOrdersController.prototype, "list", null); + __decorate4([ + (0, common_12.Get)("status-options"), + (0, guards_1.RequirePermission)("order.makeOrder"), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", []), + __metadata3("design:returntype", void 0) + ], AdminPreOrdersController.prototype, "statusOptions", null); + __decorate4([ + (0, common_12.Get)(":id"), + (0, guards_1.RequirePermission)("order.makeOrder"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminPreOrdersController.prototype, "findOne", null); + __decorate4([ + (0, common_12.Put)(":id"), + (0, guards_1.RequirePermission)("order.makeOrder"), + __param3(0, (0, common_12.Param)("id")), + __param3(1, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String, Object]), + __metadata3("design:returntype", void 0) + ], AdminPreOrdersController.prototype, "update", null); + __decorate4([ + (0, common_12.Delete)(":id"), + (0, guards_1.RequirePermission)("order.makeOrder"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminPreOrdersController.prototype, "remove", null); + exports2.AdminPreOrdersController = AdminPreOrdersController = __decorate4([ + (0, common_12.Controller)("admin/pre-orders"), + __metadata3("design:paramtypes", [admin_preorders_service_1.AdminPreOrdersService]) + ], AdminPreOrdersController); + } +}); + +// dist/modules/admin-preorders/admin-preorders.module.js +var require_admin_preorders_module = __commonJS({ + "dist/modules/admin-preorders/admin-preorders.module.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminPreOrdersModule = void 0; + var common_12 = require_common(); + var prisma_module_1 = require_prisma_module(); + var admin_preorders_controller_1 = require_admin_preorders_controller(); + var admin_preorders_service_1 = require_admin_preorders_service(); + var AdminPreOrdersModule = class AdminPreOrdersModule { + }; + exports2.AdminPreOrdersModule = AdminPreOrdersModule; + exports2.AdminPreOrdersModule = AdminPreOrdersModule = __decorate4([ + (0, common_12.Module)({ + imports: [prisma_module_1.PrismaModule], + controllers: [admin_preorders_controller_1.AdminPreOrdersController], + providers: [admin_preorders_service_1.AdminPreOrdersService] + }) + ], AdminPreOrdersModule); + } +}); + +// dist/modules/admin-branches/admin-branches.service.js +var require_admin_branches_service = __commonJS({ + "dist/modules/admin-branches/admin-branches.service.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminBranchesService = void 0; + var common_12 = require_common(); + var client_1 = require("@prisma/client"); + var prisma_service_1 = require_prisma_service(); + var table_service_1 = require_table_service(); + var AdminBranchesService = class AdminBranchesService { + prisma; + table; + constructor(prisma, table) { + this.prisma = prisma; + this.table = table; + } + // ── Branches ─────────────────────────────────────────────────────── + /** Legacy `POST branch/table`. */ + async listBranches(query) { + this.table.assertNotExport(query); + const aliases = { "user.name": "adminUsers.some.fullName" }; + const { where, orderBy, skip, take, page, limit } = this.table.build(query, { + searchable: ["name", "address", "phone"], + allowed: ["id", "name", "address", "phone", "isActive", "cityId", "city.name"], + defaultOrderBy: { name: "asc" } + }); + void aliases; + const [rows, total] = await Promise.all([ + this.prisma.branch.findMany({ + where, + orderBy, + skip, + take, + include: { + city: true, + adminUsers: { where: { isActive: true }, take: 1 }, + _count: { select: { adminUsers: true, orders: true } } + } + }), + this.prisma.branch.count({ where }) + ]); + return this.table.respond(rows.map((b) => ({ + id: b.id, + name: b.name, + address: b.address, + phone: b.phone, + active: b.isActive ? 1 : 0, + is_active: b.isActive, + city_id: b.cityId, + city: b.city ? { id: b.city.id, title: b.city.name } : null, + // legacy column key is `user.name` — the branch manager + user: b.adminUsers[0] ? { id: b.adminUsers[0].id, name: b.adminUsers[0].fullName } : null, + users_count: b._count.adminUsers, + orders_count: b._count.orders + })), total, query, page, limit); + } + async findBranch(id) { + const b = await this.prisma.branch.findUnique({ + where: { id }, + include: { city: true, adminUsers: { where: { isActive: true }, take: 1 } } + }); + if (!b) + throw new common_12.NotFoundException("\u0634\u0639\u0628\u0647 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + return { + id: b.id, + name: b.name, + address: b.address, + phone: b.phone, + is_active: b.isActive, + city_id: b.cityId, + user_id: b.adminUsers[0]?.id ?? null, + user: b.adminUsers[0] ? { id: b.adminUsers[0].id, name: b.adminUsers[0].fullName } : null + }; + } + /** Legacy `POST branch` — the manager is an EXISTING admin picked by id. */ + async createBranch(data) { + const name = String(data.name ?? "").trim(); + if (!name) + throw new common_12.BadRequestException("\u0646\u0627\u0645 \u0634\u0639\u0628\u0647 \u0627\u0644\u0632\u0627\u0645\u06CC \u0627\u0633\u062A"); + const branch = await this.prisma.branch.create({ + data: { + name, + address: data.address || null, + phone: data.phone || null, + cityId: data.city_id || null + } + }); + if (data.user_id) { + await this.assignBranchManager(branch.id, String(data.user_id)); + } + return this.findBranch(branch.id); + } + /** Legacy `PUT branch/{id}`. */ + async updateBranch(id, data) { + const existing = await this.prisma.branch.findUnique({ where: { id } }); + if (!existing) + throw new common_12.NotFoundException("\u0634\u0639\u0628\u0647 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + const patch = {}; + if (data.name !== void 0) + patch.name = String(data.name); + if (data.address !== void 0) + patch.address = data.address || null; + if (data.phone !== void 0) + patch.phone = data.phone || null; + if (data.city_id !== void 0) { + patch.city = data.city_id ? { connect: { id: String(data.city_id) } } : { disconnect: true }; + } + await this.prisma.branch.update({ where: { id }, data: patch }); + if (data.user_id !== void 0) { + await this.assignBranchManager(id, data.user_id || null); + } + return this.findBranch(id); + } + /** + * Moves the named admin onto this branch and clears whoever was on it before, + * so a branch keeps exactly one manager. Legacy did the same through its + * `->update(['branch_id' => null])` / `->update(['branch_id' => $id])` pair. + */ + async assignBranchManager(branchId, userId) { + await this.prisma.$transaction(async (tx) => { + await tx.adminUser.updateMany({ where: { branchId }, data: { branchId: null } }); + if (userId) { + const user = await tx.adminUser.findUnique({ where: { id: userId } }); + if (!user) + throw new common_12.NotFoundException("\u06A9\u0627\u0631\u0628\u0631 \u0627\u0646\u062A\u062E\u0627\u0628\u200C\u0634\u062F\u0647 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + await tx.adminUser.update({ where: { id: userId }, data: { branchId } }); + } + }); + } + /** Legacy `GET branch/active/{id}` — a toggle. */ + async toggleBranchActive(id) { + const b = await this.prisma.branch.findUnique({ where: { id } }); + if (!b) + throw new common_12.NotFoundException("\u0634\u0639\u0628\u0647 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + return this.prisma.branch.update({ + where: { id }, + data: { isActive: !b.isActive } + }); + } + // ── Workshops ────────────────────────────────────────────────────── + /** Legacy `POST workshop/table`. */ + async listWorkshops(query) { + this.table.assertNotExport(query); + const { where, orderBy, skip, take, page, limit } = this.table.build(query, { + searchable: ["name", "address", "phone"], + allowed: ["id", "name", "address", "phone", "isActive"], + defaultOrderBy: { name: "asc" } + }); + const [rows, total] = await Promise.all([ + this.prisma.workshop.findMany({ + where, + orderBy, + skip, + take, + include: { supervisor: true, _count: { select: { preOrders: true } } } + }), + this.prisma.workshop.count({ where }) + ]); + return this.table.respond(rows.map((w) => this.workshopRow(w)), total, query, page, limit); + } + workshopRow(w) { + return { + id: w.id, + name: w.name, + address: w.address, + phone: w.phone, + active: w.isActive ? 1 : 0, + is_active: w.isActive, + user: w.supervisor ? { id: w.supervisor.id, name: w.supervisor.fullName } : null, + user_id: w.supervisorId, + preorders_count: w._count.preOrders + }; + } + async findWorkshop(id) { + const w = await this.prisma.workshop.findUnique({ + where: { id }, + include: { supervisor: true, _count: { select: { preOrders: true } } } + }); + if (!w) + throw new common_12.NotFoundException("\u06A9\u0627\u0631\u06AF\u0627\u0647 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + const row = this.workshopRow(w); + const parts = String(w.supervisor?.fullName ?? "").trim().split(" "); + return { + ...row, + workshop_name: w.name, + workshop_address: w.address, + workshop_phone: w.phone, + user_fname: parts[0] ?? "", + user_lname: parts.slice(1).join(" "), + user_phone: w.supervisor?.mobile ?? "" + }; + } + /** + * Legacy `POST workshop` — creates the workshop AND its supervisor together, + * from user_fname / user_lname / user_phone. + */ + async createWorkshop(data) { + const name = String(data.workshop_name ?? data.name ?? "").trim(); + if (!name) + throw new common_12.BadRequestException("\u0646\u0627\u0645 \u06A9\u0627\u0631\u06AF\u0627\u0647 \u0627\u0644\u0632\u0627\u0645\u06CC \u0627\u0633\u062A"); + const supervisorId = await this.upsertSupervisor(data, null); + const w = await this.prisma.workshop.create({ + data: { + name, + address: data.workshop_address || data.address || null, + phone: data.workshop_phone || data.phone || null, + supervisorId + } + }); + return this.findWorkshop(w.id); + } + /** Legacy `PUT workshop/{id}`. */ + async updateWorkshop(id, data) { + const existing = await this.prisma.workshop.findUnique({ where: { id } }); + if (!existing) + throw new common_12.NotFoundException("\u06A9\u0627\u0631\u06AF\u0627\u0647 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + const patch = {}; + if (data.workshop_name !== void 0 || data.name !== void 0) { + patch.name = String(data.workshop_name ?? data.name); + } + if (data.workshop_address !== void 0 || data.address !== void 0) { + patch.address = (data.workshop_address ?? data.address) || null; + } + if (data.workshop_phone !== void 0 || data.phone !== void 0) { + patch.phone = (data.workshop_phone ?? data.phone) || null; + } + const supervisorId = await this.upsertSupervisor(data, existing.supervisorId); + if (supervisorId !== void 0) { + patch.supervisor = supervisorId ? { connect: { id: supervisorId } } : { disconnect: true }; + } + await this.prisma.workshop.update({ where: { id }, data: patch }); + return this.findWorkshop(id); + } + /** + * Creates or updates the workshop's supervisor from the inline fields. + * Returns the id to link, or `undefined` when the form sent no supervisor data + * at all (so an update leaves the existing link alone). + */ + async upsertSupervisor(data, currentId) { + const fname = String(data.user_fname ?? "").trim(); + const lname = String(data.user_lname ?? "").trim(); + const phone = String(data.user_phone ?? "").trim(); + if (!fname && !lname && !phone) + return void 0; + if (!phone) + throw new common_12.BadRequestException("\u0645\u0648\u0628\u0627\u06CC\u0644 \u0633\u0631\u067E\u0631\u0633\u062A \u06A9\u0627\u0631\u06AF\u0627\u0647 \u0627\u0644\u0632\u0627\u0645\u06CC \u0627\u0633\u062A"); + const fullName = `${fname} ${lname}`.trim(); + if (currentId) { + const current = await this.prisma.adminUser.findUnique({ where: { id: currentId } }); + if (current) { + if (phone !== current.mobile) { + const clash = await this.prisma.adminUser.findUnique({ where: { mobile: phone } }); + if (clash && clash.id !== currentId) { + throw new common_12.BadRequestException("\u0627\u06CC\u0646 \u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06CC\u0644 \u0642\u0628\u0644\u0627\u064B \u062B\u0628\u062A \u0634\u062F\u0647 \u0627\u0633\u062A"); + } + } + await this.prisma.adminUser.update({ + where: { id: currentId }, + data: { fullName, mobile: phone } + }); + return currentId; + } + } + const existing = await this.prisma.adminUser.findUnique({ where: { mobile: phone } }); + if (existing) + return existing.id; + const created = await this.prisma.adminUser.create({ + data: { + fullName, + mobile: phone, + // No password is set: the supervisor cannot sign in until one is issued. + passwordHash: "", + role: client_1.AdminRole.WORKSHOP_SUPERVISOR + } + }); + return created.id; + } + /** Legacy `GET workshop/active/{id}` — a toggle. */ + async toggleWorkshopActive(id) { + const w = await this.prisma.workshop.findUnique({ where: { id } }); + if (!w) + throw new common_12.NotFoundException("\u06A9\u0627\u0631\u06AF\u0627\u0647 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + return this.prisma.workshop.update({ + where: { id }, + data: { isActive: !w.isActive } + }); + } + /** The admin picker the branch form uses — legacy `GET user/list`. */ + async userList() { + const rows = await this.prisma.adminUser.findMany({ + where: { isActive: true }, + orderBy: { fullName: "asc" }, + select: { id: true, fullName: true, mobile: true, branchId: true } + }); + return rows.map((u) => ({ + id: u.id, + name: u.fullName, + mobile: u.mobile, + branch_id: u.branchId + })); + } + }; + exports2.AdminBranchesService = AdminBranchesService; + exports2.AdminBranchesService = AdminBranchesService = __decorate4([ + (0, common_12.Injectable)(), + __metadata3("design:paramtypes", [ + prisma_service_1.PrismaService, + table_service_1.TableService + ]) + ], AdminBranchesService); + } +}); + +// dist/modules/admin-branches/admin-branches.controller.js +var require_admin_branches_controller = __commonJS({ + "dist/modules/admin-branches/admin-branches.controller.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var __param3 = exports2 && exports2.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminBranchesController = void 0; + var common_12 = require_common(); + var admin_branches_service_1 = require_admin_branches_service(); + var table_query_dto_1 = require_table_query_dto(); + var guards_1 = require_guards2(); + var AdminBranchesController = class AdminBranchesController { + branches; + constructor(branches) { + this.branches = branches; + } + // ── branches ────────────────────────────────────────────────────── + listBranches(query) { + return this.branches.listBranches(query); + } + userList() { + return this.branches.userList(); + } + createBranch(data) { + return this.branches.createBranch(data); + } + toggleBranchActive(id) { + return this.branches.toggleBranchActive(id); + } + findBranch(id) { + return this.branches.findBranch(id); + } + updateBranch(id, data) { + return this.branches.updateBranch(id, data); + } + }; + exports2.AdminBranchesController = AdminBranchesController; + __decorate4([ + (0, common_12.Post)("list"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("branch.list"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [table_query_dto_1.TableQueryDto]), + __metadata3("design:returntype", void 0) + ], AdminBranchesController.prototype, "listBranches", null); + __decorate4([ + (0, common_12.Get)("user-list"), + (0, guards_1.RequirePermission)("branch.create"), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", []), + __metadata3("design:returntype", void 0) + ], AdminBranchesController.prototype, "userList", null); + __decorate4([ + (0, common_12.Post)(), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("branch.create"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], AdminBranchesController.prototype, "createBranch", null); + __decorate4([ + (0, common_12.Get)("active/:id"), + (0, guards_1.RequirePermission)("branch.list"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminBranchesController.prototype, "toggleBranchActive", null); + __decorate4([ + (0, common_12.Get)(":id"), + (0, guards_1.RequirePermission)("branch.list"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminBranchesController.prototype, "findBranch", null); + __decorate4([ + (0, common_12.Put)(":id"), + (0, guards_1.RequirePermission)("branch.list"), + __param3(0, (0, common_12.Param)("id")), + __param3(1, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String, Object]), + __metadata3("design:returntype", void 0) + ], AdminBranchesController.prototype, "updateBranch", null); + exports2.AdminBranchesController = AdminBranchesController = __decorate4([ + (0, common_12.Controller)("admin/branches"), + __metadata3("design:paramtypes", [admin_branches_service_1.AdminBranchesService]) + ], AdminBranchesController); + } +}); + +// dist/modules/admin-branches/admin-branches.module.js +var require_admin_branches_module = __commonJS({ + "dist/modules/admin-branches/admin-branches.module.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminBranchesModule = void 0; + var common_12 = require_common(); + var prisma_module_1 = require_prisma_module(); + var admin_branches_controller_1 = require_admin_branches_controller(); + var admin_branches_service_1 = require_admin_branches_service(); + var AdminBranchesModule = class AdminBranchesModule { + }; + exports2.AdminBranchesModule = AdminBranchesModule; + exports2.AdminBranchesModule = AdminBranchesModule = __decorate4([ + (0, common_12.Module)({ + imports: [prisma_module_1.PrismaModule], + controllers: [admin_branches_controller_1.AdminBranchesController], + providers: [admin_branches_service_1.AdminBranchesService], + // The workshops module reuses this service — branches and workshops are + // near-identical screens and share their logic. + exports: [admin_branches_service_1.AdminBranchesService] + }) + ], AdminBranchesModule); + } +}); + +// dist/modules/admin-workshops/admin-workshops.controller.js +var require_admin_workshops_controller = __commonJS({ + "dist/modules/admin-workshops/admin-workshops.controller.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var __param3 = exports2 && exports2.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminWorkshopsController = void 0; + var common_12 = require_common(); + var admin_branches_service_1 = require_admin_branches_service(); + var table_query_dto_1 = require_table_query_dto(); + var guards_1 = require_guards2(); + var AdminWorkshopsController = class AdminWorkshopsController { + branches; + constructor(branches) { + this.branches = branches; + } + list(query) { + return this.branches.listWorkshops(query); + } + create(data) { + return this.branches.createWorkshop(data); + } + toggleActive(id) { + return this.branches.toggleWorkshopActive(id); + } + findOne(id) { + return this.branches.findWorkshop(id); + } + update(id, data) { + return this.branches.updateWorkshop(id, data); + } + }; + exports2.AdminWorkshopsController = AdminWorkshopsController; + __decorate4([ + (0, common_12.Post)("list"), + (0, common_12.HttpCode)(200), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [table_query_dto_1.TableQueryDto]), + __metadata3("design:returntype", void 0) + ], AdminWorkshopsController.prototype, "list", null); + __decorate4([ + (0, common_12.Post)(), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("workshop.create"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], AdminWorkshopsController.prototype, "create", null); + __decorate4([ + (0, common_12.Get)("active/:id"), + (0, guards_1.RequirePermission)("workshop.list"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminWorkshopsController.prototype, "toggleActive", null); + __decorate4([ + (0, common_12.Get)(":id"), + (0, guards_1.RequirePermission)("workshop.list"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminWorkshopsController.prototype, "findOne", null); + __decorate4([ + (0, common_12.Put)(":id"), + (0, guards_1.RequirePermission)("workshop.list"), + __param3(0, (0, common_12.Param)("id")), + __param3(1, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String, Object]), + __metadata3("design:returntype", void 0) + ], AdminWorkshopsController.prototype, "update", null); + exports2.AdminWorkshopsController = AdminWorkshopsController = __decorate4([ + (0, common_12.Controller)("admin/workshops"), + __metadata3("design:paramtypes", [admin_branches_service_1.AdminBranchesService]) + ], AdminWorkshopsController); + } +}); + +// dist/modules/admin-workshops/admin-workshops.module.js +var require_admin_workshops_module = __commonJS({ + "dist/modules/admin-workshops/admin-workshops.module.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminWorkshopsModule = void 0; + var common_12 = require_common(); + var prisma_module_1 = require_prisma_module(); + var admin_branches_module_1 = require_admin_branches_module(); + var admin_workshops_controller_1 = require_admin_workshops_controller(); + var AdminWorkshopsModule = class AdminWorkshopsModule { + }; + exports2.AdminWorkshopsModule = AdminWorkshopsModule; + exports2.AdminWorkshopsModule = AdminWorkshopsModule = __decorate4([ + (0, common_12.Module)({ + imports: [prisma_module_1.PrismaModule, admin_branches_module_1.AdminBranchesModule], + controllers: [admin_workshops_controller_1.AdminWorkshopsController] + }) + ], AdminWorkshopsModule); + } +}); + +// dist/modules/admin-customers/admin-customers.service.js +var require_admin_customers_service = __commonJS({ + "dist/modules/admin-customers/admin-customers.service.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + })); + var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + }) : function(o, v) { + o["default"] = v; + }); + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __importStar2 = exports2 && exports2.__importStar || /* @__PURE__ */ (function() { + var ownKeys2 = function(o) { + ownKeys2 = Object.getOwnPropertyNames || function(o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys2(o); + }; + return function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys2(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding2(result, mod, k[i]); + } + __setModuleDefault2(result, mod); + return result; + }; + })(); + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var AdminCustomersService_1; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminCustomersService = exports2.kindToLegacyType = exports2.legacyTypeToKind = exports2.CUSTOMER_TYPE_STR = void 0; + var common_12 = require_common(); + var client_1 = require("@prisma/client"); + var bcrypt = __importStar2(require_umd()); + var prisma_service_1 = require_prisma_service(); + var table_service_1 = require_table_service(); + exports2.CUSTOMER_TYPE_STR = { + SALES_AGENT: " \u06A9\u0627\u0631\u0634\u0646\u0627\u0633 \u0641\u0631\u0648\u0634", + APP_SHOPKEEPER: "\u0645\u063A\u0627\u0632\u0647 \u062F\u0627\u0631 \u0627\u067E\u0644\u06CC\u06A9\u06CC\u0634\u0646", + WALK_IN_SHOPKEEPER: " \u0645\u063A\u0627\u0632\u0647 \u062F\u0627\u0631 \u062D\u0636\u0648\u0631\u06CC", + BANKER: "\u0628\u0646\u06A9\u062F\u0627\u0631", + WORKSHOP_SUPERVISOR: "\u0633\u0631\u067E\u0631\u0633\u062A \u06A9\u0627\u0631\u06AF\u0627\u0647" + }; + var LEGACY_TYPE_ID = { + SALES_AGENT: 1, + APP_SHOPKEEPER: 2, + WALK_IN_SHOPKEEPER: 3, + BANKER: 4, + WORKSHOP_SUPERVISOR: 5 + }; + var legacyTypeToKind = (t) => Object.keys(LEGACY_TYPE_ID).find((k) => LEGACY_TYPE_ID[k] === Number(t)); + exports2.legacyTypeToKind = legacyTypeToKind; + var kindToLegacyType = (k) => LEGACY_TYPE_ID[k]; + exports2.kindToLegacyType = kindToLegacyType; + function verifyStepOne(step) { + switch (step) { + case client_1.VerificationStep.UNVERIFIED: + return 3; + // rejected / not yet submitted + case client_1.VerificationStep.STEP_ONE_SUBMITTED: + return 1; + // pending review + default: + return 2; + } + } + function verifyStepTwo(step) { + switch (step) { + case client_1.VerificationStep.STEP_TWO_SUBMITTED: + return 1; + // pending review + case client_1.VerificationStep.VERIFIED: + return 2; + // accepted + default: + return 3; + } + } + var AdminCustomersService = class AdminCustomersService { + static { + AdminCustomersService_1 = this; + } + prisma; + table; + constructor(prisma, table) { + this.prisma = prisma; + this.table = table; + } + static ALLOWED = [ + "id", + "fullName", + "mobile", + "nationalCode", + "cityId", + "isActive", + "createdAt", + "updatedAt", + "verificationStep", + "goldCreditLimitGrams", + "goldDebtGrams", + "fiatDebtRial", + "referredByAgent.fullName", + // legacy filter keys, accepted so the ported table models work unchanged + "name", + "city_id", + "active", + "gram_level", + "remain", + "rial_remain" + ]; + /** Translates legacy filter field names onto real schema paths. */ + static FIELD_ALIASES = { + name: "fullName", + fname: "fullName", + lname: "fullName", + city_id: "cityId", + active: "isActive", + gram_level: "goldCreditLimitGrams", + remain: "goldDebtGrams", + rial_remain: "fiatDebtRial", + caj: "createdAt", + uaj: "updatedAt", + "reagent.name": "referredByAgent.fullName" + }; + applyAliases(query) { + const mapField = (f) => f ? AdminCustomersService_1.FIELD_ALIASES[f] ?? f : f; + return { + ...query, + filters: (query.filters ?? []).map((f) => { + const mapped = { ...f, field: mapField(f.field) }; + if (mapped.field === "isActive" && mapped.value !== void 0) { + mapped.value = String(mapped.value) === "1"; + } + return mapped; + }), + order: query.order ? `${query.order.startsWith("-") ? "-" : "+"}${mapField(query.order.replace(/^[+-]/, ""))}` : void 0 + }; + } + /** The per-scope WHERE clause, one per legacy endpoint. */ + /** + * Verified against the legacy server (henza_server), not inferred from the + * views — AdminController::getBanker / getShopkeeper / getCustomer and + * MajorCustomerController::indexArchive / indexVerify: + * + * customer -> type=2 AND is_archive=0 (مغازه دار اپلیکیشن) + * banker -> type=4 AND is_archive=0 (بنکدار) + * shopkeeper -> type=3 AND is_archive=0 (مغازه دار حضوری) + * major/verify/table -> is_archive=0 AND (step_one=1 OR step_two=1) + * major/archive/table -> is_archive=1 (no type filter) + * + * NOTE every non-archive list also excludes archived rows, so archiving a + * customer removes them from ALL type lists at once. + */ + scopeWhere(scope) { + switch (scope) { + case "banker": + return { kind: client_1.CustomerKind.BANKER, isArchived: false }; + case "shopkeeper": + return { kind: client_1.CustomerKind.WALK_IN_SHOPKEEPER, isArchived: false }; + case "non_verified": + return { + isArchived: false, + verificationStep: { + in: [client_1.VerificationStep.STEP_ONE_SUBMITTED, client_1.VerificationStep.STEP_TWO_SUBMITTED] + } + }; + case "archived": + return { isArchived: true }; + case "all": + default: + return { kind: client_1.CustomerKind.APP_SHOPKEEPER, isArchived: false }; + } + } + async list(query, scope = "all") { + this.table.assertNotExport(query); + const aliased = this.applyAliases(query); + const { where, orderBy, skip, take, page, limit } = this.table.build(aliased, { + searchable: ["fullName", "mobile", "nationalCode"], + allowed: AdminCustomersService_1.ALLOWED, + defaultOrderBy: { createdAt: "desc" } + }); + const scoped = { + AND: [where, this.scopeWhere(scope)] + }; + const [rows, total] = await Promise.all([ + this.prisma.customer.findMany({ + where: scoped, + orderBy, + skip, + take, + include: { city: true, referredByAgent: true, avatarFile: true } + }), + this.prisma.customer.count({ where: scoped }) + ]); + return this.table.respond(rows.map((r) => this.toRow(r)), total, query, page, limit); + } + /** Legacy field names preserved so the ported table models bind unchanged. */ + toRow(c) { + return { + id: c.id, + // Legacy stored fname/lname separately; the new schema has one fullName. + name: c.fullName, + fname: c.fullName, + lname: "", + mobile: c.mobile, + national_code: c.nationalCode, + city_id: c.cityId, + city: c.city ? { id: c.city.id, title: c.city.name } : null, + reagent: c.referredByAgent ? { id: c.referredByAgent.id, name: c.referredByAgent.fullName } : null, + gram_level: c.goldCreditLimitGrams, + remain: c.goldDebtGrams, + rial_remain: c.fiatDebtRial, + // legacy `percent` came from the referring agent's commission rate + percent: c.referredByAgent?.wagePercent ?? null, + // legacy kept these as two INDEPENDENT switches — see toggleSts/toggleActive + active: c.isActive ? 1 : -1, + sts: c.canPlaceOrders ? 1 : -1, + sts_str: c.canPlaceOrders ? "\u0645\u062C\u0627\u0632" : "\u063A\u06CC\u0631 \u0645\u062C\u0627\u0632", + type: (0, exports2.kindToLegacyType)(c.kind), + type_str: exports2.CUSTOMER_TYPE_STR[c.kind], + is_archive: c.isArchived ? 1 : 0, + sts_verify_step_one: verifyStepOne(c.verificationStep), + sts_verify_step_two: verifyStepTwo(c.verificationStep), + verificationStep: c.verificationStep, + national_id_image: c.nationalIdImageUrl, + business_license: c.businessLicenseUrl, + shop_image: c.shopImageUrl, + caj: c.createdAt, + uaj: c.updatedAt, + // Legacy returned the avatar as a nested object and the form read + // `data.image.image` for the preview URL — kept in that exact shape. + image_id: c.avatarFileId, + image: c.avatarFile ? { id: c.avatarFile.id, image: c.avatarFile.url } : null, + phone: c.phone, + address: c.address, + store_name: c.storeName, + zone: c.zone, + pasazh_name: c.pasazhName, + mcode: c.memberCode + }; + } + async findOne(id) { + const c = await this.prisma.customer.findUnique({ + where: { id }, + include: { + city: true, + referredByAgent: true, + avatarFile: true, + addresses: { include: { city: true } } + } + }); + if (!c) + throw new common_12.NotFoundException("\u0645\u0634\u062A\u0631\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + return { + ...this.toRow(c), + addresses: c.addresses.map((a) => ({ + id: a.id, + city: a.city ? { id: a.city.id, title: a.city.name } : null + })) + }; + } + /** + * Legacy `POST reagent` — the sales-expert ("کارشناس فروش") list. + * + * In legacy these lived in the same `customer` table under `type=1`, which is + * why the view reuses the customer column set. The redesigned schema models a + * sales expert as an AdminUser with role SALES_EXPERT, so this reads from there + * and maps onto the same legacy field names the ported table expects. + */ + async listReagents(query) { + this.table.assertNotExport(query); + const aliases = { + name: "fullName", + lname: "fullName", + caj: "createdAt", + active: "isActive", + percent: "wagePercent" + }; + const mapField = (f) => f ? aliases[f] ?? f : f; + const aliased = { + ...query, + filters: (query.filters ?? []).map((f) => { + const mapped2 = { ...f, field: mapField(f.field) }; + if (mapped2.field === "isActive" && mapped2.value !== void 0) { + mapped2.value = String(mapped2.value) === "1"; + } + return mapped2; + }), + order: query.order ? `${query.order.startsWith("-") ? "-" : "+"}${mapField(query.order.replace(/^[+-]/, ""))}` : void 0 + }; + const { where, orderBy, skip, take, page, limit } = this.table.build(aliased, { + searchable: ["fullName", "mobile"], + allowed: ["id", "fullName", "mobile", "isActive", "createdAt", "wagePercent", "role"], + defaultOrderBy: { createdAt: "desc" } + }); + const scoped = { + AND: [where, { role: "SALES_EXPERT" }] + }; + const [rows, total] = await Promise.all([ + this.prisma.adminUser.findMany({ + where: scoped, + orderBy, + skip, + take, + include: { branch: true, _count: { select: { referredCustomers: true } } } + }), + this.prisma.adminUser.count({ where: scoped }) + ]); + const mapped = await Promise.all(rows.map(async (r) => { + const agg = await this.prisma.order.aggregate({ + where: { customer: { referredByAgentId: r.id } }, + _sum: { totalGoldWeightGrams: true } + }); + return { + id: r.id, + name: r.fullName, + fname: r.fullName, + lname: "", + mobile: r.mobile, + city_id: null, + city: null, + percent: r.wagePercent, + grams_sell: agg._sum.totalGoldWeightGrams ?? 0, + child: r._count.referredCustomers, + active: r.isActive ? 1 : -1, + sts: r.isActive ? 1 : -1, + sts_str: r.isActive ? "\u0645\u062C\u0627\u0632" : "\u063A\u06CC\u0631 \u0645\u062C\u0627\u0632", + caj: r.createdAt, + uaj: r.createdAt, + branch: r.branch ? { id: r.branch.id, name: r.branch.name } : null, + // Legacy columns an AdminUser has no counterpart for. + gram_level: null, + remain: null, + rial_remain: null, + phone: null, + address: null + }; + })); + return this.table.respond(mapped, total, query, page, limit); + } + /** + * Legacy `POST single-customer` — the retail ("تک") customer list. + * + * Legacy read this from a different table than the wholesale list + * (`orders_orders`-era SingleCustomerOrders lived alongside a separate customer + * record). The redesigned schema has one Customer model, so both lists read the + * same rows; only the column set and actions differ, exactly as the two legacy + * table models did. Same gap noted for orders in docs/ADMIN-PORT-PLAN.md. + */ + async listSingle(query, branchId) { + this.table.assertNotExport(query); + const aliased = this.applyAliases(query); + const { where, orderBy, skip, take, page, limit } = this.table.build(aliased, { + searchable: ["fullName", "mobile"], + allowed: [...AdminCustomersService_1.ALLOWED, "branch.name"], + defaultOrderBy: { createdAt: "desc" } + }); + const [rows, total] = await Promise.all([ + this.prisma.customer.findMany({ + where, + orderBy, + skip, + take, + include: { + city: true, + avatarFile: true, + referredByAgent: { include: { branch: true } } + } + }), + this.prisma.customer.count({ where }) + ]); + return this.table.respond(rows.map((r) => ({ + ...this.toRow(r), + // legacy single-customer columns: fname/lname/phone/email/branch.name + email: null, + branch: r.referredByAgent?.branch ? { id: r.referredByAgent.branch.id, name: r.referredByAgent.branch.name } : null + })), total, query, page, limit); + } + /** Legacy `POST customer/create` (omdeSave) and `POST/PUT user/profile`. */ + async create(data) { + const fullName = String(data.name ?? data.fname ?? "").trim(); + const mobile = String(data.mobile ?? "").trim(); + const nationalCode = String(data.national_code ?? data.nationalCode ?? "").trim(); + if (!fullName || !mobile) { + throw new common_12.BadRequestException("\u0646\u0627\u0645 \u0648 \u0645\u0648\u0628\u0627\u06CC\u0644 \u0627\u0644\u0632\u0627\u0645\u06CC \u0627\u0633\u062A"); + } + return this.prisma.customer.create({ + data: { + fullName, + mobile, + nationalCode: nationalCode || mobile, + // schema requires it and it is unique + // The form collects a password (bulkCustomer.vue / ReagentCustomer.vue). + // It used to be discarded and '' stored, so the operator typed a password + // that silently did nothing. Hashed here when supplied; '' still means + // "no password yet", which no bcrypt hash can ever match. + passwordHash: data.password ? await bcrypt.hash(String(data.password), 10) : "", + cityId: data.city_id ?? null, + goldCreditLimitGrams: data.gram_level ? new client_1.Prisma.Decimal(String(data.gram_level)) : new client_1.Prisma.Decimal(0), + // legacy `type` — defaults to 2 (مغازه دار اپلیکیشن), matching the + // main omde list, when the form omits it. + kind: (0, exports2.legacyTypeToKind)(data.type) ?? client_1.CustomerKind.APP_SHOPKEEPER, + phone: data.phone ?? null, + address: data.address ?? null, + storeName: data.store_name ?? null, + pasazhName: data.pasazh_name ?? null, + zone: data.zone ?? null, + memberCode: data.mcode ?? null, + // legacy `image_id` from MyUpload's `ok` payload + avatarFileId: data.image_id || null, + // The sales agent who introduced this customer. The form's dropdown was + // populated from a working endpoint and the selection then thrown away. + referredByAgentId: data.reagent_id || null + } + }); + } + async update(id, data) { + const existing = await this.prisma.customer.findUnique({ where: { id } }); + if (!existing) + throw new common_12.NotFoundException("\u0645\u0634\u062A\u0631\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + const patch = {}; + if (data.name !== void 0) + patch.fullName = String(data.name); + if (data.mobile !== void 0) + patch.mobile = String(data.mobile); + if (data.national_code !== void 0) + patch.nationalCode = String(data.national_code); + if (data.city_id !== void 0) { + patch.city = data.city_id ? { connect: { id: String(data.city_id) } } : { disconnect: true }; + } + if (data.gram_level !== void 0) { + patch.goldCreditLimitGrams = new client_1.Prisma.Decimal(String(data.gram_level)); + } + if (data.type !== void 0) { + const kind = (0, exports2.legacyTypeToKind)(data.type); + if (!kind) + throw new common_12.BadRequestException("\u0646\u0648\u0639 \u0645\u0634\u062A\u0631\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A"); + patch.kind = kind; + } + if (data.phone !== void 0) + patch.phone = String(data.phone); + if (data.address !== void 0) + patch.address = String(data.address); + if (data.store_name !== void 0) + patch.storeName = String(data.store_name); + if (data.pasazh_name !== void 0) + patch.pasazhName = String(data.pasazh_name); + if (data.zone !== void 0) + patch.zone = String(data.zone); + if (data.mcode !== void 0) + patch.memberCode = String(data.mcode); + if (data.reagent_id !== void 0) { + patch.referredByAgent = data.reagent_id ? { connect: { id: String(data.reagent_id) } } : { disconnect: true }; + } + if (data.password) { + patch.passwordHash = await bcrypt.hash(String(data.password), 10); + } + if (data.image_id !== void 0) { + patch.avatarFile = data.image_id ? { connect: { id: String(data.image_id) } } : { disconnect: true }; + } + return this.prisma.customer.update({ where: { id }, data: patch }); + } + /** + * The three per-customer panels the "مشاهده اطلاعات" screens show, ported from + * legacy `single/order/{id}`, `single/report/{id}` and `single/wallet/{id}`. + */ + async customerOrders(customerId) { + const rows = await this.prisma.order.findMany({ + where: { customerId }, + orderBy: { createdAt: "desc" }, + include: { items: true, branch: true } + }); + return rows.map((o) => ({ + id: o.id, + name: o.orderNumber, + w: o.totalGoldWeightGrams, + status: o.status, + items_count: o.items.length, + branch: o.branch?.name ?? null, + caj: o.createdAt + })); + } + async customerDocuments(customerId) { + const rows = await this.prisma.ledgerEntry.findMany({ + where: { customerId }, + orderBy: { createdAt: "desc" } + }); + return rows.map((e) => ({ + id: e.id, + type: e.sourceType, + currency: e.currency, + direction: e.direction, + value: e.amount, + confirmed: e.confirmed ? 1 : 0, + note: e.note, + caj: e.createdAt + })); + } + async customerWallet(customerId) { + const rows = await this.prisma.walletBonus.findMany({ + where: { customerId }, + orderBy: { grantedAt: "desc" } + }); + return rows.map((w) => ({ + id: w.id, + value: w.goldGrams, + is_active: w.isActive, + consumed: Boolean(w.consumedAt), + caj: w.grantedAt, + expires_at: w.expiresAt + })); + } + /** Legacy `GET query/reagent` — sales experts, for the customer form's picker. */ + async queryReagents() { + const rows = await this.prisma.adminUser.findMany({ + where: { role: "SALES_EXPERT", isActive: true }, + orderBy: { fullName: "asc" }, + select: { id: true, fullName: true } + }); + return rows.map((r) => ({ id: r.id, name: r.fullName })); + } + /** + * Legacy `POST wallet/charge` — grant a wallet bonus to a customer. + * + * Legacy posted `{ customer_id, value }`. The redesigned schema models a + * wallet grant as a WalletBonus in GOLD GRAMS with an expiry, so `value` is + * read as grams. Legacy had no expiry column; a one-year window is applied + * here because `expiresAt` is required — flagged in docs/ADMIN-PORT-PLAN.md. + */ + async chargeWallet(data) { + const customer = await this.prisma.customer.findUnique({ where: { id: data.customer_id } }); + if (!customer) + throw new common_12.NotFoundException("\u0645\u0634\u062A\u0631\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + const grams = new client_1.Prisma.Decimal(String(data.value ?? 0)); + if (grams.lte(0)) { + throw new common_12.BadRequestException("\u0645\u06CC\u0632\u0627\u0646 \u0634\u0627\u0631\u0698 \u0628\u0627\u06CC\u062F \u0628\u0632\u0631\u06AF\u062A\u0631 \u0627\u0632 \u0635\u0641\u0631 \u0628\u0627\u0634\u062F"); + } + const expiresAt = /* @__PURE__ */ new Date(); + expiresAt.setFullYear(expiresAt.getFullYear() + 1); + return this.prisma.walletBonus.create({ + data: { customerId: data.customer_id, goldGrams: grams, expiresAt } + }); + } + /** + * Legacy `POST customer/toggle-active` — the ACCOUNT switch + * (AdminController::customerToggleActive). + * + * Legacy also nulled `api_token` (force-logout) and, when reactivating, sent + * the customer an SMS. The SMS is deliberately NOT fired inline here — it + * belongs to the notification module — and is noted in docs/ADMIN-PORT-PLAN.md. + */ + async toggleActive(id) { + const c = await this.prisma.customer.findUnique({ where: { id } }); + if (!c) + throw new common_12.NotFoundException("\u0645\u0634\u062A\u0631\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + return this.prisma.customer.update({ + where: { id }, + data: { isActive: !c.isActive } + }); + } + /** + * Legacy `POST customer/toggle-sts` — the ORDERING switch + * ("معلق کردن سفارش" / "فعال کردن سفارش"), AdminController::customerToggleSts. + * Independent of the account switch above. + */ + async toggleSts(id) { + const c = await this.prisma.customer.findUnique({ where: { id } }); + if (!c) + throw new common_12.NotFoundException("\u0645\u0634\u062A\u0631\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + return this.prisma.customer.update({ + where: { id }, + data: { canPlaceOrders: !c.canPlaceOrders } + }); + } + /** + * Legacy `POST major/verify`. + * + * Legacy's payload is `{ customer_id, sts_verify_step_one }` or + * `{ customer_id, sts_verify_step_two }`, where the value is 2 (accept) or + * 3 (reject) — see OmdeList.vue acceptStepOne/rejectStepOne. Accepted here in + * exactly that shape so the ported view posts unchanged. + */ + async verify(payload) { + const id = payload.customer_id; + const c = await this.prisma.customer.findUnique({ where: { id } }); + if (!c) + throw new common_12.NotFoundException("\u0645\u0634\u062A\u0631\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + let next; + if (payload.sts_verify_step_one !== void 0) { + next = payload.sts_verify_step_one === 2 ? client_1.VerificationStep.STEP_TWO_SUBMITTED : client_1.VerificationStep.UNVERIFIED; + } else if (payload.sts_verify_step_two !== void 0) { + next = payload.sts_verify_step_two === 2 ? client_1.VerificationStep.VERIFIED : client_1.VerificationStep.STEP_ONE_SUBMITTED; + } else { + throw new common_12.BadRequestException("\u0645\u0631\u062D\u0644\u0647\u200C\u06CC \u062A\u0627\u06CC\u06CC\u062F \u0645\u0634\u062E\u0635 \u0646\u0634\u062F\u0647 \u0627\u0633\u062A"); + } + return this.prisma.customer.update({ where: { id }, data: { verificationStep: next } }); + } + /** Legacy `GET major/archive/{id}` — MajorCustomerController::archive. */ + async toggleArchive(id) { + const c = await this.prisma.customer.findUnique({ where: { id } }); + if (!c) + throw new common_12.NotFoundException("\u0645\u0634\u062A\u0631\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + return this.prisma.customer.update({ + where: { id }, + data: { isArchived: !c.isArchived } + }); + } + /** Legacy `GET major/dashboard/{id}` — the per-customer summary panel. */ + async dashboard(id) { + const c = await this.prisma.customer.findUnique({ where: { id } }); + if (!c) + throw new common_12.NotFoundException("\u0645\u0634\u062A\u0631\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + const [orderCount, openOrders, ledgerCount] = await Promise.all([ + this.prisma.order.count({ where: { customerId: id } }), + this.prisma.order.count({ + where: { customerId: id, deliveredAt: null, status: { not: "CANCELLED" } } + }), + this.prisma.ledgerEntry.count({ where: { customerId: id } }) + ]); + return { + total_order: orderCount, + open_order: openOrders, + ledger_entries: ledgerCount, + gram_level: c.goldCreditLimitGrams, + remain: c.goldDebtGrams, + rial_remain: c.fiatDebtRial + }; + } + /** Legacy `PATCH` of the credit level / commission from the list row menu. */ + async updateCredit(id, data) { + const c = await this.prisma.customer.findUnique({ where: { id } }); + if (!c) + throw new common_12.NotFoundException("\u0645\u0634\u062A\u0631\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + if (data.gram_level === void 0) { + throw new common_12.BadRequestException("\u0645\u0642\u062F\u0627\u0631 \u0633\u0637\u062D \u0627\u0639\u062A\u0628\u0627\u0631 \u0627\u0631\u0633\u0627\u0644 \u0646\u0634\u062F\u0647 \u0627\u0633\u062A"); + } + return this.prisma.customer.update({ + where: { id }, + data: { goldCreditLimitGrams: new client_1.Prisma.Decimal(data.gram_level) } + }); + } + }; + exports2.AdminCustomersService = AdminCustomersService; + exports2.AdminCustomersService = AdminCustomersService = AdminCustomersService_1 = __decorate4([ + (0, common_12.Injectable)(), + __metadata3("design:paramtypes", [ + prisma_service_1.PrismaService, + table_service_1.TableService + ]) + ], AdminCustomersService); + } +}); + +// dist/modules/admin-customers/admin-customers.controller.js +var require_admin_customers_controller = __commonJS({ + "dist/modules/admin-customers/admin-customers.controller.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var __param3 = exports2 && exports2.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminCustomersController = void 0; + var common_12 = require_common(); + var admin_customers_service_1 = require_admin_customers_service(); + var table_query_dto_1 = require_table_query_dto(); + var guards_1 = require_guards2(); + var AdminCustomersController = class AdminCustomersController { + customers; + constructor(customers) { + this.customers = customers; + } + list(query, scope) { + return this.customers.list(query, scope); + } + listAll(query) { + return this.list(query, "all"); + } + listBanker(query) { + return this.list(query, "banker"); + } + listShopkeeper(query) { + return this.list(query, "shopkeeper"); + } + listNonVerified(query) { + return this.list(query, "non_verified"); + } + listArchived(query) { + return this.list(query, "archived"); + } + /** Legacy POST single-customer — the retail customer list. */ + listSingle(query, admin) { + return this.customers.listSingle(query, admin.branchId ?? void 0); + } + /** + * Legacy `GET query/reagent` — the sales-expert picker used by the customer + * form. Returns a plain array of {id, name}, as legacy did. + */ + queryReagents() { + return this.customers.queryReagents(); + } + /** Legacy POST wallet/charge. */ + chargeWallet(body) { + return this.customers.chargeWallet(body); + } + create(data) { + return this.customers.create(data); + } + update(id, data) { + return this.customers.update(id, data); + } + /** Legacy POST reagent — the sales-expert list. */ + listReagents(query) { + return this.customers.listReagents(query); + } + /** Legacy `GET single/order/{id}` — that customer's orders. */ + customerOrders(id) { + return this.customers.customerOrders(id); + } + /** Legacy `GET single/report/{id}` — that customer's ledger documents. */ + customerDocuments(id) { + return this.customers.customerDocuments(id); + } + /** Legacy `GET single/wallet/{id}` — that customer's wallet bonuses. */ + customerWallet(id) { + return this.customers.customerWallet(id); + } + dashboard(id) { + return this.customers.dashboard(id); + } + toggleArchive(id) { + return this.customers.toggleArchive(id); + } + toggleActive(body) { + return this.customers.toggleActive(body.id); + } + toggleSts(body) { + return this.customers.toggleSts(body.id); + } + verify(body) { + return this.customers.verify(body); + } + updateCredit(body) { + return this.customers.updateCredit(body.id, body); + } + findOne(id) { + return this.customers.findOne(id); + } + }; + exports2.AdminCustomersController = AdminCustomersController; + __decorate4([ + (0, common_12.Post)("list"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("persons.list.client.omde"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [table_query_dto_1.TableQueryDto]), + __metadata3("design:returntype", void 0) + ], AdminCustomersController.prototype, "listAll", null); + __decorate4([ + (0, common_12.Post)("banker/list"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("persons.list.client.omde"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [table_query_dto_1.TableQueryDto]), + __metadata3("design:returntype", void 0) + ], AdminCustomersController.prototype, "listBanker", null); + __decorate4([ + (0, common_12.Post)("shopkeeper/list"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("persons.list.client.omde"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [table_query_dto_1.TableQueryDto]), + __metadata3("design:returntype", void 0) + ], AdminCustomersController.prototype, "listShopkeeper", null); + __decorate4([ + (0, common_12.Post)("non-verified/list"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("persons.list.client.omde"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [table_query_dto_1.TableQueryDto]), + __metadata3("design:returntype", void 0) + ], AdminCustomersController.prototype, "listNonVerified", null); + __decorate4([ + (0, common_12.Post)("archived/list"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("persons.list.client.omde"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [table_query_dto_1.TableQueryDto]), + __metadata3("design:returntype", void 0) + ], AdminCustomersController.prototype, "listArchived", null); + __decorate4([ + (0, common_12.Post)("single/list"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("persons.list.client.single"), + __param3(0, (0, common_12.Body)()), + __param3(1, (0, guards_1.CurrentAdmin)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [table_query_dto_1.TableQueryDto, Object]), + __metadata3("design:returntype", void 0) + ], AdminCustomersController.prototype, "listSingle", null); + __decorate4([ + (0, common_12.Get)("query/reagent"), + (0, guards_1.RequirePermission)("persons.create"), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", []), + __metadata3("design:returntype", void 0) + ], AdminCustomersController.prototype, "queryReagents", null); + __decorate4([ + (0, common_12.Post)("wallet/charge"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("wallet"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], AdminCustomersController.prototype, "chargeWallet", null); + __decorate4([ + (0, common_12.Post)("create"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("persons.create"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], AdminCustomersController.prototype, "create", null); + __decorate4([ + (0, common_12.Put)(":id"), + (0, guards_1.RequirePermission)("persons.list.client.omde.edit"), + __param3(0, (0, common_12.Param)("id")), + __param3(1, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String, Object]), + __metadata3("design:returntype", void 0) + ], AdminCustomersController.prototype, "update", null); + __decorate4([ + (0, common_12.Post)("reagent/list"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("persons.list.sellers"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [table_query_dto_1.TableQueryDto]), + __metadata3("design:returntype", void 0) + ], AdminCustomersController.prototype, "listReagents", null); + __decorate4([ + (0, common_12.Get)(":id/orders"), + (0, guards_1.RequirePermission)("persons.list.client.omde.view.orders"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminCustomersController.prototype, "customerOrders", null); + __decorate4([ + (0, common_12.Get)(":id/documents"), + (0, guards_1.RequirePermission)("persons.list.client.omde.view.documents"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminCustomersController.prototype, "customerDocuments", null); + __decorate4([ + (0, common_12.Get)(":id/wallet"), + (0, guards_1.RequirePermission)("wallet"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminCustomersController.prototype, "customerWallet", null); + __decorate4([ + (0, common_12.Get)("dashboard/:id"), + (0, guards_1.RequirePermission)("persons.list.client.omde.view"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminCustomersController.prototype, "dashboard", null); + __decorate4([ + (0, common_12.Get)("archive/:id"), + (0, guards_1.RequirePermission)("persons.list.client.omde.edit"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminCustomersController.prototype, "toggleArchive", null); + __decorate4([ + (0, common_12.Post)("toggle-active"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("persons.list.client.omde.edit"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], AdminCustomersController.prototype, "toggleActive", null); + __decorate4([ + (0, common_12.Post)("toggle-sts"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("persons.list.client.omde.edit"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], AdminCustomersController.prototype, "toggleSts", null); + __decorate4([ + (0, common_12.Post)("verify"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("persons.list.client.omde.edit"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], AdminCustomersController.prototype, "verify", null); + __decorate4([ + (0, common_12.Post)("credit"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("persons.list.client.omde.edit"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], AdminCustomersController.prototype, "updateCredit", null); + __decorate4([ + (0, common_12.Get)(":id"), + (0, guards_1.RequirePermission)("persons.list.client.omde.view"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminCustomersController.prototype, "findOne", null); + exports2.AdminCustomersController = AdminCustomersController = __decorate4([ + (0, common_12.Controller)("admin/customers-omde"), + __metadata3("design:paramtypes", [admin_customers_service_1.AdminCustomersService]) + ], AdminCustomersController); + } +}); + +// dist/modules/admin-customers/admin-customers.module.js +var require_admin_customers_module = __commonJS({ + "dist/modules/admin-customers/admin-customers.module.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminCustomersModule = void 0; + var common_12 = require_common(); + var prisma_module_1 = require_prisma_module(); + var admin_customers_controller_1 = require_admin_customers_controller(); + var admin_customers_service_1 = require_admin_customers_service(); + var AdminCustomersModule = class AdminCustomersModule { + }; + exports2.AdminCustomersModule = AdminCustomersModule; + exports2.AdminCustomersModule = AdminCustomersModule = __decorate4([ + (0, common_12.Module)({ + imports: [prisma_module_1.PrismaModule], + controllers: [admin_customers_controller_1.AdminCustomersController], + providers: [admin_customers_service_1.AdminCustomersService], + exports: [admin_customers_service_1.AdminCustomersService] + }) + ], AdminCustomersModule); + } +}); + +// dist/modules/admin-comments/admin-comments.service.js +var require_admin_comments_service = __commonJS({ + "dist/modules/admin-comments/admin-comments.service.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var AdminCommentsService_1; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminCommentsService = void 0; + var common_12 = require_common(); + var client_1 = require("@prisma/client"); + var prisma_service_1 = require_prisma_service(); + var table_service_1 = require_table_service(); + var STATUS_BY_CODE = { + 1: client_1.CommentStatus.PENDING, + 2: client_1.CommentStatus.APPROVED, + 3: client_1.CommentStatus.REJECTED + }; + var CODE_BY_STATUS = { + PENDING: 1, + APPROVED: 2, + REJECTED: 3 + }; + var STATUS_LABELS = { + PENDING: "\u062F\u0631 \u0627\u0646\u062A\u0638\u0627\u0631 \u062A\u0627\u06CC\u06CC\u062F", + APPROVED: "\u062A\u0627\u06CC\u06CC\u062F \u0634\u062F\u0647", + REJECTED: "\u0631\u062F \u0634\u062F\u0647" + }; + var AdminCommentsService = class AdminCommentsService { + static { + AdminCommentsService_1 = this; + } + prisma; + table; + constructor(prisma, table) { + this.prisma = prisma; + this.table = table; + } + static ALLOWED = [ + "id", + "status", + "createdAt", + "updatedAt", + "body", + "customer.fullName", + "customer.mobile", + "product.title", + // legacy filter keys + "sts", + "comment", + "caj" + ]; + static FIELD_ALIASES = { + sts: "status", + comment: "body", + caj: "createdAt", + uaj: "updatedAt", + "customer.name": "customer.fullName", + "product.name": "product.title" + }; + /** Legacy `POST comment/table`. */ + async list(query) { + this.table.assertNotExport(query); + const mapField = (f) => f ? AdminCommentsService_1.FIELD_ALIASES[f] ?? f : f; + const aliased = { + ...query, + filters: (query.filters ?? []).map((f) => { + const mapped = { ...f, field: mapField(f.field) }; + if (mapped.field === "status" && mapped.value !== void 0) { + mapped.value = STATUS_BY_CODE[Number(mapped.value)] ?? mapped.value; + } + return mapped; + }), + order: query.order ? `${query.order.startsWith("-") ? "-" : "+"}${mapField(query.order.replace(/^[+-]/, ""))}` : void 0 + }; + const { where, orderBy, skip, take, page, limit } = this.table.build(aliased, { + searchable: ["body", "customer.fullName", "product.title"], + allowed: AdminCommentsService_1.ALLOWED, + defaultOrderBy: { createdAt: "desc" } + }); + const [rows, total] = await Promise.all([ + this.prisma.comment.findMany({ + where, + orderBy, + skip, + take, + include: { customer: true, product: true, replyTo: true, replies: true } + }), + this.prisma.comment.count({ where }) + ]); + return this.table.respond(rows.map((r) => this.toRow(r)), total, query, page, limit); + } + toRow(c) { + return { + id: c.id, + comment: c.body, + body: c.body, + sts: CODE_BY_STATUS[c.status], + sts_str: STATUS_LABELS[c.status], + status: c.status, + reply_to: c.replyToId, + // legacy view reads: text.length > 0 && text[0].comment !== null + reply: (c.replies ?? []).map((r) => ({ id: r.id, comment: r.body })), + product_id: c.productId, + customer_id: c.customerId, + product: { id: c.product.id, title: c.product.title, name: c.product.title }, + customer: { + id: c.customer.id, + name: c.customer.fullName, + fname: c.customer.fullName, + lname: "", + mobile: c.customer.mobile + }, + caj: c.createdAt, + uaj: c.updatedAt + }; + } + async findOne(id) { + const c = await this.prisma.comment.findUnique({ + where: { id }, + include: { customer: true, product: true, replyTo: true, replies: true } + }); + if (!c) + throw new common_12.NotFoundException("\u062F\u06CC\u062F\u06AF\u0627\u0647 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + return this.toRow(c); + } + /** + * Legacy `POST comment/sts` — moderate a comment. + * Payload is `{ id, sts }` where sts is 1/2/3. + */ + async changeStatus(id, sts) { + const c = await this.prisma.comment.findUnique({ where: { id } }); + if (!c) + throw new common_12.NotFoundException("\u062F\u06CC\u062F\u06AF\u0627\u0647 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + const status = STATUS_BY_CODE[Number(sts)]; + if (!status) { + throw new common_12.NotFoundException("\u0648\u0636\u0639\u06CC\u062A \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A"); + } + return this.prisma.comment.update({ where: { id }, data: { status } }); + } + /** Legacy `POST comment` — post a staff reply to a comment. */ + async create(data) { + return this.prisma.comment.create({ + data: { + productId: data.product_id, + customerId: data.customer_id, + body: data.comment, + replyToId: data.reply_to ?? null, + // A staff reply is visible immediately; legacy did the same. + status: client_1.CommentStatus.APPROVED + } + }); + } + /** Legacy `DELETE comment/{id}`. */ + async remove(id) { + const c = await this.prisma.comment.findUnique({ + where: { id }, + include: { replies: true } + }); + if (!c) + throw new common_12.NotFoundException("\u062F\u06CC\u062F\u06AF\u0627\u0647 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + await this.prisma.$transaction([ + this.prisma.comment.deleteMany({ where: { replyToId: id } }), + this.prisma.comment.delete({ where: { id } }) + ]); + return { success: true }; + } + /** Farsi labels for the status dropdown, keyed by legacy's numeric codes. */ + statusOptions() { + return Object.entries(STATUS_LABELS).map(([status, title]) => ({ + value: CODE_BY_STATUS[status], + title + })); + } + }; + exports2.AdminCommentsService = AdminCommentsService; + exports2.AdminCommentsService = AdminCommentsService = AdminCommentsService_1 = __decorate4([ + (0, common_12.Injectable)(), + __metadata3("design:paramtypes", [ + prisma_service_1.PrismaService, + table_service_1.TableService + ]) + ], AdminCommentsService); + } +}); + +// dist/modules/admin-comments/admin-comments.controller.js +var require_admin_comments_controller = __commonJS({ + "dist/modules/admin-comments/admin-comments.controller.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var __param3 = exports2 && exports2.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminCommentsController = void 0; + var common_12 = require_common(); + var admin_comments_service_1 = require_admin_comments_service(); + var table_query_dto_1 = require_table_query_dto(); + var guards_1 = require_guards2(); + var AdminCommentsController = class AdminCommentsController { + comments; + constructor(comments) { + this.comments = comments; + } + list(query) { + return this.comments.list(query); + } + statusOptions() { + return this.comments.statusOptions(); + } + changeStatus(body) { + return this.comments.changeStatus(body.id, body.sts); + } + create(body) { + return this.comments.create(body); + } + findOne(id) { + return this.comments.findOne(id); + } + remove(id) { + return this.comments.remove(id); + } + }; + exports2.AdminCommentsController = AdminCommentsController; + __decorate4([ + (0, common_12.Post)("list"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("comment"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [table_query_dto_1.TableQueryDto]), + __metadata3("design:returntype", void 0) + ], AdminCommentsController.prototype, "list", null); + __decorate4([ + (0, common_12.Get)("status-options"), + (0, guards_1.RequirePermission)("comment"), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", []), + __metadata3("design:returntype", void 0) + ], AdminCommentsController.prototype, "statusOptions", null); + __decorate4([ + (0, common_12.Post)("sts"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("comment"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], AdminCommentsController.prototype, "changeStatus", null); + __decorate4([ + (0, common_12.Post)(), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("comment"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], AdminCommentsController.prototype, "create", null); + __decorate4([ + (0, common_12.Get)(":id"), + (0, guards_1.RequirePermission)("comment"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminCommentsController.prototype, "findOne", null); + __decorate4([ + (0, common_12.Delete)(":id"), + (0, guards_1.RequirePermission)("comment"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminCommentsController.prototype, "remove", null); + exports2.AdminCommentsController = AdminCommentsController = __decorate4([ + (0, common_12.Controller)("admin/comments"), + __metadata3("design:paramtypes", [admin_comments_service_1.AdminCommentsService]) + ], AdminCommentsController); + } +}); + +// dist/modules/admin-comments/admin-comments.module.js +var require_admin_comments_module = __commonJS({ + "dist/modules/admin-comments/admin-comments.module.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminCommentsModule = void 0; + var common_12 = require_common(); + var prisma_module_1 = require_prisma_module(); + var admin_comments_controller_1 = require_admin_comments_controller(); + var admin_comments_service_1 = require_admin_comments_service(); + var AdminCommentsModule = class AdminCommentsModule { + }; + exports2.AdminCommentsModule = AdminCommentsModule; + exports2.AdminCommentsModule = AdminCommentsModule = __decorate4([ + (0, common_12.Module)({ + imports: [prisma_module_1.PrismaModule], + controllers: [admin_comments_controller_1.AdminCommentsController], + providers: [admin_comments_service_1.AdminCommentsService] + }) + ], AdminCommentsModule); + } +}); + +// dist/modules/admin-products/admin-products.service.js +var require_admin_products_service = __commonJS({ + "dist/modules/admin-products/admin-products.service.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var AdminProductsService_1; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminProductsService = void 0; + var common_12 = require_common(); + var client_1 = require("@prisma/client"); + var prisma_service_1 = require_prisma_service(); + var table_service_1 = require_table_service(); + var SHOW_TYPE_LABELS = { + 1: "\u0633\u0627\u06CC\u062A", + 2: "\u06AF\u0648\u0634\u06CC", + 3: "\u0633\u0627\u06CC\u062A \u0648 \u06AF\u0648\u0634\u06CC" + }; + var AdminProductsService = class AdminProductsService { + static { + AdminProductsService_1 = this; + } + prisma; + table; + constructor(prisma, table) { + this.prisma = prisma; + this.table = table; + } + static ALLOWED = [ + "id", + "title", + "productCode", + "showType", + "isActive", + "createdAt", + "brand.title", + "category.title", + // legacy filter keys + "product_code", + "show_type" + ]; + static FIELD_ALIASES = { + product_code: "productCode", + show_type: "showType", + "category.collection.title": "category.title", + caj: "createdAt" + }; + applyAliases(query) { + const mapField = (f) => f ? AdminProductsService_1.FIELD_ALIASES[f] ?? f : f; + return { + ...query, + filters: (query.filters ?? []).map((f) => { + const mapped = { ...f, field: mapField(f.field) }; + if (mapped.field === "showType" && mapped.value !== void 0) { + mapped.value = Number(mapped.value); + } + return mapped; + }), + order: query.order ? `${query.order.startsWith("-") ? "-" : "+"}${mapField(query.order.replace(/^[+-]/, ""))}` : void 0 + }; + } + /** Legacy `POST products` — the product grid. */ + async list(query) { + this.table.assertNotExport(query); + const aliased = this.applyAliases(query); + const { where, orderBy, skip, take, page, limit } = this.table.build(aliased, { + searchable: ["title", "productCode"], + allowed: AdminProductsService_1.ALLOWED, + defaultOrderBy: { createdAt: "desc" } + }); + const [rows, total] = await Promise.all([ + this.prisma.product.findMany({ + where, + orderBy, + skip, + take, + include: { + brand: true, + category: true, + images: { orderBy: { sortOrder: "asc" } }, + variants: true + } + }), + this.prisma.product.count({ where }) + ]); + return this.table.respond(rows.map((r) => this.toRow(r)), total, query, page, limit); + } + /** Legacy field names preserved so ported table models bind unchanged. */ + toRow(p) { + return { + id: p.id, + title: p.title, + product_code: p.productCode, + show_type: p.showType, + show_type_str: SHOW_TYPE_LABELS[p.showType] ?? "-", + is_active: p.isActive, + description: p.description, + brand: p.brand ? { id: p.brand.id, title: p.brand.title } : null, + // Legacy nested this as category.collection.title in the grid model. + category: p.category ? { id: p.category.id, title: p.category.title, collection: { title: p.category.title } } : null, + // legacy grid slot reads `ProductImage` + ProductImage: p.images.map((i) => ({ id: i.id, image: i.url, full: i.url, url: i.url })), + images: p.images.map((i) => ({ id: i.id, url: i.url, sortOrder: i.sortOrder })), + // The order builder's grid reads `thumb.full` and `variants_all` directly + // off each row, so both travel with the list as they did in legacy. + thumb: p.images[0] ? { full: p.images[0].url } : null, + variants_all: p.variants.map((v) => this.variantRow(v)), + variants_count: p.variants.length, + // legacy min_gram / max_gram: the product's lightest and heaviest variant, + // shown by the storefront and by the branch-allocation picker. + min_gram: p.variants.length ? p.variants.reduce((min, v) => v.rashWeightGrams.lt(min) ? v.rashWeightGrams : min, p.variants[0].rashWeightGrams) : null, + max_gram: p.variants.length ? p.variants.reduce((max, v) => v.rashWeightGrams.gt(max) ? v.rashWeightGrams : max, p.variants[0].rashWeightGrams) : null, + caj: p.createdAt + }; + } + /** Legacy `GET product/show/{id}`. */ + async findOne(id) { + const p = await this.prisma.product.findUnique({ + where: { id }, + include: { + brand: true, + category: true, + images: { orderBy: { sortOrder: "asc" } }, + variants: true, + collections: { include: { collection: true } } + } + }); + if (!p) + throw new common_12.NotFoundException("\u0645\u062D\u0635\u0648\u0644 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + return { + ...this.toRow(p), + body_html: p.description, + brand_id: p.brandId, + cats: p.categoryId ? [p.categoryId] : [], + ciny_ids: p.collections.map((c) => c.collectionId), + variants_all: p.variants.map((v) => this.variantRow(v)) + }; + } + variantRow(v) { + return { + id: v.id, + product_id_id: v.productId, + title: v.title, + sku: v.sku, + grams: v.rashWeightGrams, + percentage_pay: v.defaultWagePercent, + qty: v.qty, + is_pre_order: v.isPreOrder, + is_active: v.isActive, + // Legacy had a separate rial making-charge column; the schema models wage + // as a percentage only. Returned as null rather than faked. + rial_pay: null, + color_str: null + }; + } + /** Legacy `POST get/variants` — a POST that reads, per legacy's own routing. */ + async listVariants(query) { + this.table.assertNotExport(query); + const { where, orderBy, skip, take, page, limit } = this.table.build(query, { + searchable: ["title", "sku"], + allowed: ["id", "title", "sku", "qty", "rashWeightGrams", "isActive", "product.title"], + defaultOrderBy: { title: "asc" } + }); + const scoped = query.product_id ? { AND: [where, { productId: query.product_id }] } : where; + const [rows, total] = await Promise.all([ + this.prisma.productVariant.findMany({ + where: scoped, + orderBy, + skip, + take, + include: { product: true } + }), + this.prisma.productVariant.count({ where: scoped }) + ]); + return this.table.respond(rows.map((v) => ({ ...this.variantRow(v), product: { id: v.product.id, title: v.product.title } })), total, query, page, limit); + } + /** + * Legacy `POST product/variant` — used by the cart to refresh the products it + * holds. Returns each product with `variants_all` attached, the shape + * stores/cart.ts reads. + */ + async byIds(ids) { + if (!ids.length) + return []; + const rows = await this.prisma.product.findMany({ + where: { id: { in: ids } }, + include: { + brand: true, + category: true, + images: { orderBy: { sortOrder: "asc" } }, + variants: true + } + }); + return rows.map((p) => ({ + ...this.toRow(p), + variants_all: p.variants.map((v) => this.variantRow(v)), + // The cart reads `promotion.id`; there is no Promotion model yet (Batch 9). + promotion: null, + thumb: p.images[0] ? { full: p.images[0].url } : null + })); + } + /** + * Legacy `POST add/variant` — the order builder's inline weight editor creates + * a bespoke variant rather than mutating the shared catalog one, so other + * orders keep the weight they were placed with. + */ + async createVariant(body) { + if (!body.product_id) + throw new common_12.BadRequestException("\u0645\u062D\u0635\u0648\u0644 \u0645\u0634\u062E\u0635 \u0646\u0634\u062F\u0647 \u0627\u0633\u062A"); + const product = await this.prisma.product.findUnique({ + where: { id: body.product_id }, + include: { variants: { take: 1 } } + }); + if (!product) + throw new common_12.NotFoundException("\u0645\u062D\u0635\u0648\u0644 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + return this.prisma.productVariant.create({ + data: { + productId: body.product_id, + title: body.title, + rashWeightGrams: new client_1.Prisma.Decimal(String(body.grams ?? 0)), + // Inherit the product's existing wage rate so the bespoke weight prices + // the same way as its siblings. + defaultWagePercent: product.variants[0]?.defaultWagePercent ?? new client_1.Prisma.Decimal(0), + qty: 1 + } + }); + } + /** Legacy `GET product/{id}/variant`. */ + async variantsOf(productId) { + const rows = await this.prisma.productVariant.findMany({ where: { productId } }); + return rows.map((v) => this.variantRow(v)); + } + /** Shape of one inline variant row posted by the product form. */ + variantCreateData(v) { + return { + title: String(v.title ?? ""), + rashWeightGrams: new client_1.Prisma.Decimal(String(v.grams ?? 0)), + defaultWagePercent: new client_1.Prisma.Decimal(String(v.percentage_pay ?? 0)), + qty: Number(v.qty ?? 0), + isPreOrder: Boolean(v.is_pre_order), + isActive: v.is_active !== void 0 ? Boolean(v.is_active) : true + }; + } + /** Legacy `POST product/create`. */ + async create(data) { + const title = String(data.title ?? "").trim(); + if (!title) + throw new common_12.BadRequestException("\u0639\u0646\u0648\u0627\u0646 \u0645\u062D\u0635\u0648\u0644 \u0627\u0644\u0632\u0627\u0645\u06CC \u0627\u0633\u062A"); + const cats = Array.isArray(data.cats) ? data.cats : []; + const cinyIds = Array.isArray(data.ciny_ids) ? data.ciny_ids : []; + const variants = Array.isArray(data.variants) ? data.variants : []; + return this.prisma.product.create({ + data: { + title, + description: data.body_html ?? data.description ?? null, + productCode: data.product_code || null, + showType: data.show_type !== void 0 ? Number(data.show_type) : 3, + isActive: data.is_active !== void 0 ? Boolean(data.is_active) : true, + brandId: data.brand_id || null, + categoryId: cats[0] ?? null, + collections: cinyIds.length ? { create: cinyIds.map((collectionId) => ({ collectionId })) } : void 0, + variants: variants.length ? { create: variants.map((v) => this.variantCreateData(v)) } : void 0 + }, + include: { variants: true } + }); + } + /** Legacy `PUT product/update/{id}`. */ + async update(id, data) { + const existing = await this.prisma.product.findUnique({ where: { id } }); + if (!existing) + throw new common_12.NotFoundException("\u0645\u062D\u0635\u0648\u0644 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + const patch = {}; + if (data.title !== void 0) + patch.title = String(data.title); + if (data.body_html !== void 0) + patch.description = String(data.body_html); + if (data.product_code !== void 0) + patch.productCode = data.product_code || null; + if (data.show_type !== void 0) + patch.showType = Number(data.show_type); + if (data.is_active !== void 0) + patch.isActive = Boolean(data.is_active); + if (data.brand_id !== void 0) { + patch.brand = data.brand_id ? { connect: { id: String(data.brand_id) } } : { disconnect: true }; + } + if (Array.isArray(data.cats)) { + const catId = data.cats[0]; + patch.category = catId ? { connect: { id: catId } } : { disconnect: true }; + } + await this.prisma.product.update({ where: { id }, data: patch }); + if (Array.isArray(data.variants)) { + const posted = data.variants; + const keptIds = []; + for (const v of posted) { + const payload = this.variantCreateData(v); + if (v.id) { + await this.prisma.productVariant.update({ + where: { id: String(v.id) }, + data: payload + }); + keptIds.push(String(v.id)); + } else { + const created = await this.prisma.productVariant.create({ + data: { ...payload, productId: id } + }); + keptIds.push(created.id); + } + } + await this.prisma.productVariant.updateMany({ + where: { productId: id, id: { notIn: keptIds.length ? keptIds : ["__none__"] } }, + data: { isActive: false } + }); + } + return this.findOne(id); + } + /** + * Legacy `POST delete/product/{id}` — a DELETE expressed as POST. + * + * Refuses when the product has ever been ordered: its variants are referenced + * by OrderItem snapshots, and removing them would break order history. + * Legacy had no such guard. Deactivation is offered instead. + */ + async remove(id) { + const product = await this.prisma.product.findUnique({ + where: { id }, + include: { variants: { include: { orderItems: { take: 1 } } } } + }); + if (!product) + throw new common_12.NotFoundException("\u0645\u062D\u0635\u0648\u0644 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + const hasOrders = product.variants.some((v) => v.orderItems.length > 0); + if (hasOrders) { + throw new common_12.BadRequestException("\u062D\u0630\u0641 \u0627\u06CC\u0646 \u0645\u062D\u0635\u0648\u0644 \u0645\u0645\u06A9\u0646 \u0646\u06CC\u0633\u062A\u060C \u0686\u0648\u0646 \u062F\u0631 \u0633\u0641\u0627\u0631\u0634\u200C\u0647\u0627\u06CC \u062B\u0628\u062A\u200C\u0634\u062F\u0647 \u0627\u0633\u062A\u0641\u0627\u062F\u0647 \u0634\u062F\u0647 \u0627\u0633\u062A. \u0645\u06CC\u200C\u062A\u0648\u0627\u0646\u06CC\u062F \u0622\u0646 \u0631\u0627 \u063A\u06CC\u0631\u0641\u0639\u0627\u0644 \u06A9\u0646\u06CC\u062F."); + } + await this.prisma.$transaction([ + this.prisma.collectionProduct.deleteMany({ where: { productId: id } }), + this.prisma.comment.deleteMany({ where: { productId: id } }), + this.prisma.productImage.deleteMany({ where: { productId: id } }), + this.prisma.productVariant.deleteMany({ where: { productId: id } }), + this.prisma.product.delete({ where: { id } }) + ]); + return { success: true }; + } + /** + * Legacy `POST change/percent/count` — how many variants a bulk wage-percent + * change would affect, used by ChangePercent.vue before applying. + */ + async changePercentCount(filter) { + const where = { + product: { + ...filter.brand_id ? { brandId: filter.brand_id } : {}, + ...filter.category_id ? { categoryId: filter.category_id } : {} + } + }; + return { count: await this.prisma.productVariant.count({ where }) }; + } + /** Legacy `POST change/all` — apply a bulk wage-percent change. */ + async changePercent(data) { + if (data.percent === void 0 || Number.isNaN(Number(data.percent))) { + throw new common_12.BadRequestException("\u062F\u0631\u0635\u062F \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A"); + } + const where = { + product: { + ...data.brand_id ? { brandId: data.brand_id } : {}, + ...data.category_id ? { categoryId: data.category_id } : {} + } + }; + const result = await this.prisma.productVariant.updateMany({ + where, + data: { defaultWagePercent: new client_1.Prisma.Decimal(String(data.percent)) } + }); + return { updated: result.count }; + } + /** Legacy `GET brand` and `POST category` — pickers for the product form. */ + async brands() { + return this.prisma.brand.findMany({ orderBy: { title: "asc" } }); + } + /** Brands in the XTable envelope, for the promotion-exclusion picker. */ + async brandsTable(query) { + this.table.assertNotExport(query); + const { where, orderBy, skip, take, page, limit } = this.table.build(query, { + searchable: ["title"], + allowed: ["id", "title"], + defaultOrderBy: { title: "asc" } + }); + const [rows, total] = await Promise.all([ + this.prisma.brand.findMany({ + where, + orderBy, + skip, + take + }), + this.prisma.brand.count({ where }) + ]); + return this.table.respond(rows, total, query, page, limit); + } + async collections() { + return this.prisma.collection.findMany({ + where: { isActive: true }, + orderBy: { title: "asc" } + }); + } + showTypeOptions() { + return Object.entries(SHOW_TYPE_LABELS).map(([value, title]) => ({ + value: Number(value), + title + })); + } + }; + exports2.AdminProductsService = AdminProductsService; + exports2.AdminProductsService = AdminProductsService = AdminProductsService_1 = __decorate4([ + (0, common_12.Injectable)(), + __metadata3("design:paramtypes", [ + prisma_service_1.PrismaService, + table_service_1.TableService + ]) + ], AdminProductsService); + } +}); + +// dist/modules/admin-products/admin-products.controller.js +var require_admin_products_controller = __commonJS({ + "dist/modules/admin-products/admin-products.controller.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var __param3 = exports2 && exports2.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminProductsController = void 0; + var common_12 = require_common(); + var admin_products_service_1 = require_admin_products_service(); + var table_query_dto_1 = require_table_query_dto(); + var guards_1 = require_guards2(); + var AdminProductsController = class AdminProductsController { + products; + constructor(products) { + this.products = products; + } + list(query) { + return this.products.list(query); + } + listVariants(query) { + return this.products.listVariants(query); + } + /** + * Legacy `POST product/variant` — the cart's rehydrate call. Given a list of + * product ids it returns each product with `variants_all`, so the basket can + * refresh prices/stock and drop anything that went out of stock. + */ + byIds(body) { + return this.products.byIds(body.products_id ?? []); + } + /** + * Legacy `POST add/variant` — creates a bespoke weight variant from the order + * builder's inline weight editor. + */ + createVariant(body) { + return this.products.createVariant(body); + } + showTypeOptions() { + return this.products.showTypeOptions(); + } + brands() { + return this.products.brands(); + } + /** Brands as an XTable grid — the exclusion picker needs a selectable table. */ + brandsTable(query) { + return this.products.brandsTable(query); + } + collections() { + return this.products.collections(); + } + changePercentCount(body) { + return this.products.changePercentCount(body); + } + changePercent(body) { + return this.products.changePercent(body); + } + create(data) { + return this.products.create(data); + } + remove(id) { + return this.products.remove(id); + } + variantsOf(id) { + return this.products.variantsOf(id); + } + findOne(id) { + return this.products.findOne(id); + } + update(id, data) { + return this.products.update(id, data); + } + }; + exports2.AdminProductsController = AdminProductsController; + __decorate4([ + (0, common_12.Post)("list"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("product.list"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [table_query_dto_1.TableQueryDto]), + __metadata3("design:returntype", void 0) + ], AdminProductsController.prototype, "list", null); + __decorate4([ + (0, common_12.Post)("variants/list"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("product.list"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], AdminProductsController.prototype, "listVariants", null); + __decorate4([ + (0, common_12.Post)("by-ids"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("product.list"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], AdminProductsController.prototype, "byIds", null); + __decorate4([ + (0, common_12.Post)("variants/create"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("order.create"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], AdminProductsController.prototype, "createVariant", null); + __decorate4([ + (0, common_12.Get)("show-type-options"), + (0, guards_1.RequirePermission)("product.list"), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", []), + __metadata3("design:returntype", void 0) + ], AdminProductsController.prototype, "showTypeOptions", null); + __decorate4([ + (0, common_12.Get)("brands"), + (0, guards_1.RequirePermission)("product.list"), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", []), + __metadata3("design:returntype", void 0) + ], AdminProductsController.prototype, "brands", null); + __decorate4([ + (0, common_12.Post)("brands-table"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("product.list"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [table_query_dto_1.TableQueryDto]), + __metadata3("design:returntype", void 0) + ], AdminProductsController.prototype, "brandsTable", null); + __decorate4([ + (0, common_12.Get)("collections"), + (0, guards_1.RequirePermission)("product.list"), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", []), + __metadata3("design:returntype", void 0) + ], AdminProductsController.prototype, "collections", null); + __decorate4([ + (0, common_12.Post)("change-percent/count"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("product.percent"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], AdminProductsController.prototype, "changePercentCount", null); + __decorate4([ + (0, common_12.Post)("change-percent/apply"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("product.percent"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], AdminProductsController.prototype, "changePercent", null); + __decorate4([ + (0, common_12.Post)("create"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("product.create"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], AdminProductsController.prototype, "create", null); + __decorate4([ + (0, common_12.Post)("delete/:id"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("product.list.edit"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminProductsController.prototype, "remove", null); + __decorate4([ + (0, common_12.Get)(":id/variants"), + (0, guards_1.RequirePermission)("product.list"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminProductsController.prototype, "variantsOf", null); + __decorate4([ + (0, common_12.Get)(":id"), + (0, guards_1.RequirePermission)("product.list"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminProductsController.prototype, "findOne", null); + __decorate4([ + (0, common_12.Put)(":id"), + (0, guards_1.RequirePermission)("product.list.edit"), + __param3(0, (0, common_12.Param)("id")), + __param3(1, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String, Object]), + __metadata3("design:returntype", void 0) + ], AdminProductsController.prototype, "update", null); + exports2.AdminProductsController = AdminProductsController = __decorate4([ + (0, common_12.Controller)("admin/products"), + __metadata3("design:paramtypes", [admin_products_service_1.AdminProductsService]) + ], AdminProductsController); + } +}); + +// dist/modules/admin-products/admin-products.module.js +var require_admin_products_module = __commonJS({ + "dist/modules/admin-products/admin-products.module.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminProductsModule = void 0; + var common_12 = require_common(); + var prisma_module_1 = require_prisma_module(); + var admin_products_controller_1 = require_admin_products_controller(); + var admin_products_service_1 = require_admin_products_service(); + var AdminProductsModule = class AdminProductsModule { + }; + exports2.AdminProductsModule = AdminProductsModule; + exports2.AdminProductsModule = AdminProductsModule = __decorate4([ + (0, common_12.Module)({ + imports: [prisma_module_1.PrismaModule], + controllers: [admin_products_controller_1.AdminProductsController], + providers: [admin_products_service_1.AdminProductsService] + }) + ], AdminProductsModule); + } +}); + +// dist/modules/admin-categories/admin-categories.service.js +var require_admin_categories_service = __commonJS({ + "dist/modules/admin-categories/admin-categories.service.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var AdminCategoriesService_1; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminCategoriesService = void 0; + var common_12 = require_common(); + var prisma_service_1 = require_prisma_service(); + var table_service_1 = require_table_service(); + var TYPE_LABELS = { + 1: "\u0633\u0627\u06CC\u062A", + 2: "\u0627\u067E\u0644\u06CC\u06A9\u0634\u0646 \u0645\u0648\u0628\u0627\u06CC\u0644" + }; + var AdminCategoriesService = class AdminCategoriesService { + static { + AdminCategoriesService_1 = this; + } + prisma; + table; + constructor(prisma, table) { + this.prisma = prisma; + this.table = table; + } + static ALLOWED = [ + "id", + "title", + "type", + "parentId", + "parent.title", + // legacy filter keys + "type_str" + ]; + /** Legacy `POST category` — the category grid. */ + async list(query) { + this.table.assertNotExport(query); + const aliased = { + ...query, + filters: (query.filters ?? []).map((f) => f.field === "type_str" ? { ...f, field: "type", value: Number(f.value) } : f) + }; + const { where, orderBy, skip, take, page, limit } = this.table.build(aliased, { + searchable: ["title"], + allowed: AdminCategoriesService_1.ALLOWED, + defaultOrderBy: { title: "asc" } + }); + const [rows, total] = await Promise.all([ + this.prisma.category.findMany({ + where, + orderBy, + skip, + take, + include: { parent: true, _count: { select: { products: true, children: true } } } + }), + this.prisma.category.count({ where }) + ]); + return this.table.respond(rows.map((r) => this.toRow(r)), total, query, page, limit); + } + toRow(c) { + return { + id: c.id, + title: c.title, + type: c.type, + type_str: TYPE_LABELS[c.type] ?? "-", + image: c.imageUrl, + icon: c.iconUrl, + meta: c.metaTag, + body_html: c.description, + parent_id_id: c.parentId, + parent: c.parent ? { id: c.parent.id, title: c.parent.title } : null, + products_count: c._count.products, + children_count: c._count.children + }; + } + async findOne(id) { + const c = await this.prisma.category.findUnique({ + where: { id }, + include: { parent: true, _count: { select: { products: true, children: true } } } + }); + if (!c) + throw new common_12.NotFoundException("\u062F\u0633\u062A\u0647 \u0628\u0646\u062F\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + return this.toRow(c); + } + /** The parent picker — legacy loaded the full list and built a tree client-side. */ + async tree(type) { + const rows = await this.prisma.category.findMany({ + where: type ? { type } : {}, + orderBy: { title: "asc" }, + include: { parent: true } + }); + return rows.map((c) => ({ + id: c.id, + title: c.title, + type: c.type, + parent_id_id: c.parentId + })); + } + /** Legacy `POST category/`. */ + async create(data) { + const title = String(data.title ?? "").trim(); + if (!title) + throw new common_12.BadRequestException("\u0639\u0646\u0648\u0627\u0646 \u062F\u0633\u062A\u0647 \u0627\u0644\u0632\u0627\u0645\u06CC \u0627\u0633\u062A"); + return this.prisma.category.create({ + data: { + title, + type: data.type !== void 0 ? Number(data.type) : 1, + imageUrl: data.image || null, + iconUrl: data.icon || null, + metaTag: data.meta || null, + description: data.body_html || null, + parentId: data.parent_id_id || null + } + }); + } + /** Legacy `PUT category/{id}`. */ + async update(id, data) { + const existing = await this.prisma.category.findUnique({ where: { id } }); + if (!existing) + throw new common_12.NotFoundException("\u062F\u0633\u062A\u0647 \u0628\u0646\u062F\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + const newParent = data.parent_id_id; + if (newParent) { + if (newParent === id) { + throw new common_12.BadRequestException("\u06CC\u06A9 \u062F\u0633\u062A\u0647 \u0646\u0645\u06CC\u200C\u062A\u0648\u0627\u0646\u062F \u067E\u062F\u0631 \u062E\u0648\u062F\u0634 \u0628\u0627\u0634\u062F"); + } + if (await this.isDescendant(newParent, id)) { + throw new common_12.BadRequestException("\u062F\u0633\u062A\u0647\u200C\u06CC \u0627\u0646\u062A\u062E\u0627\u0628\u200C\u0634\u062F\u0647 \u0632\u06CC\u0631\u0645\u062C\u0645\u0648\u0639\u0647\u200C\u06CC \u0647\u0645\u06CC\u0646 \u062F\u0633\u062A\u0647 \u0627\u0633\u062A"); + } + } + const patch = {}; + if (data.title !== void 0) + patch.title = String(data.title); + if (data.type !== void 0) + patch.type = Number(data.type); + if (data.image !== void 0) + patch.imageUrl = data.image || null; + if (data.icon !== void 0) + patch.iconUrl = data.icon || null; + if (data.meta !== void 0) + patch.metaTag = data.meta || null; + if (data.body_html !== void 0) + patch.description = data.body_html || null; + if (data.parent_id_id !== void 0) { + patch.parent = newParent ? { connect: { id: newParent } } : { disconnect: true }; + } + return this.prisma.category.update({ where: { id }, data: patch }); + } + /** Walks up from `candidate` to see whether `ancestorId` is above it. */ + async isDescendant(candidate, ancestorId) { + let cursor = candidate; + const seen = /* @__PURE__ */ new Set(); + while (cursor && !seen.has(cursor)) { + seen.add(cursor); + const row = await this.prisma.category.findUnique({ + where: { id: cursor }, + select: { parentId: true } + }); + if (!row?.parentId) + return false; + if (row.parentId === ancestorId) + return true; + cursor = row.parentId; + } + return false; + } + /** Legacy `DELETE category/{id}`. */ + async remove(id) { + const c = await this.prisma.category.findUnique({ + where: { id }, + include: { _count: { select: { products: true, children: true } } } + }); + if (!c) + throw new common_12.NotFoundException("\u062F\u0633\u062A\u0647 \u0628\u0646\u062F\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + if (c._count.products > 0) { + throw new common_12.BadRequestException(`\u062D\u0630\u0641 \u0645\u0645\u06A9\u0646 \u0646\u06CC\u0633\u062A: ${c._count.products} \u0645\u062D\u0635\u0648\u0644 \u062F\u0631 \u0627\u06CC\u0646 \u062F\u0633\u062A\u0647 \u0642\u0631\u0627\u0631 \u062F\u0627\u0631\u062F.`); + } + if (c._count.children > 0) { + throw new common_12.BadRequestException(`\u062D\u0630\u0641 \u0645\u0645\u06A9\u0646 \u0646\u06CC\u0633\u062A: \u0627\u06CC\u0646 \u062F\u0633\u062A\u0647 ${c._count.children} \u0632\u06CC\u0631\u062F\u0633\u062A\u0647 \u062F\u0627\u0631\u062F.`); + } + await this.prisma.category.delete({ where: { id } }); + return { success: true }; + } + typeOptions() { + return Object.entries(TYPE_LABELS).map(([value, title]) => ({ value: Number(value), title })); + } + // ── Collections ("سینی") ─────────────────────────────────────────── + /** Legacy `GET ciny` / the collection grid. */ + async listCollections(query) { + this.table.assertNotExport(query); + const { where, orderBy, skip, take, page, limit } = this.table.build(query, { + searchable: ["title"], + allowed: ["id", "title", "isActive"], + defaultOrderBy: { title: "asc" } + }); + const [rows, total] = await Promise.all([ + this.prisma.collection.findMany({ + where, + orderBy, + skip, + take, + include: { _count: { select: { products: true } } } + }), + this.prisma.collection.count({ where }) + ]); + return this.table.respond(rows.map((c) => ({ + id: c.id, + title: c.title, + description: c.description, + is_active: c.isActive, + products_count: c._count.products + })), total, query, page, limit); + } + async createCollection(data) { + if (!data.title?.trim()) + throw new common_12.BadRequestException("\u0639\u0646\u0648\u0627\u0646 \u0633\u06CC\u0646\u06CC \u0627\u0644\u0632\u0627\u0645\u06CC \u0627\u0633\u062A"); + return this.prisma.collection.create({ + data: { + title: data.title.trim(), + description: data.description ?? null, + isActive: data.is_active ?? true + } + }); + } + async updateCollection(id, data) { + const existing = await this.prisma.collection.findUnique({ where: { id } }); + if (!existing) + throw new common_12.NotFoundException("\u0633\u06CC\u0646\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + return this.prisma.collection.update({ + where: { id }, + data: { + ...data.title !== void 0 ? { title: data.title } : {}, + ...data.description !== void 0 ? { description: data.description } : {}, + ...data.is_active !== void 0 ? { isActive: data.is_active } : {} + } + }); + } + async removeCollection(id) { + const c = await this.prisma.collection.findUnique({ where: { id } }); + if (!c) + throw new common_12.NotFoundException("\u0633\u06CC\u0646\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + await this.prisma.$transaction([ + this.prisma.collectionProduct.deleteMany({ where: { collectionId: id } }), + this.prisma.collection.delete({ where: { id } }) + ]); + return { success: true }; + } + }; + exports2.AdminCategoriesService = AdminCategoriesService; + exports2.AdminCategoriesService = AdminCategoriesService = AdminCategoriesService_1 = __decorate4([ + (0, common_12.Injectable)(), + __metadata3("design:paramtypes", [ + prisma_service_1.PrismaService, + table_service_1.TableService + ]) + ], AdminCategoriesService); + } +}); + +// dist/modules/admin-categories/admin-categories.controller.js +var require_admin_categories_controller = __commonJS({ + "dist/modules/admin-categories/admin-categories.controller.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var __param3 = exports2 && exports2.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminCategoriesController = void 0; + var common_12 = require_common(); + var admin_categories_service_1 = require_admin_categories_service(); + var table_query_dto_1 = require_table_query_dto(); + var guards_1 = require_guards2(); + var AdminCategoriesController = class AdminCategoriesController { + categories; + constructor(categories) { + this.categories = categories; + } + list(query) { + return this.categories.list(query); + } + tree(type) { + return this.categories.tree(type ? Number(type) : void 0); + } + typeOptions() { + return this.categories.typeOptions(); + } + // ── collections ("سینی") ───────────────────────────────────────── + listCollections(query) { + return this.categories.listCollections(query); + } + createCollection(body) { + return this.categories.createCollection(body); + } + updateCollection(id, body) { + return this.categories.updateCollection(id, body); + } + removeCollection(id) { + return this.categories.removeCollection(id); + } + // ── categories ──────────────────────────────────────────────────── + create(data) { + return this.categories.create(data); + } + findOne(id) { + return this.categories.findOne(id); + } + update(id, data) { + return this.categories.update(id, data); + } + remove(id) { + return this.categories.remove(id); + } + }; + exports2.AdminCategoriesController = AdminCategoriesController; + __decorate4([ + (0, common_12.Post)("list"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("collection.list"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [table_query_dto_1.TableQueryDto]), + __metadata3("design:returntype", void 0) + ], AdminCategoriesController.prototype, "list", null); + __decorate4([ + (0, common_12.Get)("tree"), + (0, guards_1.RequirePermission)("collection.list"), + __param3(0, (0, common_12.Query)("type")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminCategoriesController.prototype, "tree", null); + __decorate4([ + (0, common_12.Get)("type-options"), + (0, guards_1.RequirePermission)("collection.list"), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", []), + __metadata3("design:returntype", void 0) + ], AdminCategoriesController.prototype, "typeOptions", null); + __decorate4([ + (0, common_12.Post)("collections/list"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("collection.list"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [table_query_dto_1.TableQueryDto]), + __metadata3("design:returntype", void 0) + ], AdminCategoriesController.prototype, "listCollections", null); + __decorate4([ + (0, common_12.Post)("collections"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("collection.create"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], AdminCategoriesController.prototype, "createCollection", null); + __decorate4([ + (0, common_12.Put)("collections/:id"), + (0, guards_1.RequirePermission)("collection.list.edit"), + __param3(0, (0, common_12.Param)("id")), + __param3(1, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String, Object]), + __metadata3("design:returntype", void 0) + ], AdminCategoriesController.prototype, "updateCollection", null); + __decorate4([ + (0, common_12.Delete)("collections/:id"), + (0, guards_1.RequirePermission)("collection.list.edit"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminCategoriesController.prototype, "removeCollection", null); + __decorate4([ + (0, common_12.Post)(), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("collection.create"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], AdminCategoriesController.prototype, "create", null); + __decorate4([ + (0, common_12.Get)(":id"), + (0, guards_1.RequirePermission)("collection.list"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminCategoriesController.prototype, "findOne", null); + __decorate4([ + (0, common_12.Put)(":id"), + (0, guards_1.RequirePermission)("collection.list.edit"), + __param3(0, (0, common_12.Param)("id")), + __param3(1, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String, Object]), + __metadata3("design:returntype", void 0) + ], AdminCategoriesController.prototype, "update", null); + __decorate4([ + (0, common_12.Delete)(":id"), + (0, guards_1.RequirePermission)("collection.list.edit"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminCategoriesController.prototype, "remove", null); + exports2.AdminCategoriesController = AdminCategoriesController = __decorate4([ + (0, common_12.Controller)("admin/categories"), + __metadata3("design:paramtypes", [admin_categories_service_1.AdminCategoriesService]) + ], AdminCategoriesController); + } +}); + +// dist/modules/admin-categories/admin-categories.module.js +var require_admin_categories_module = __commonJS({ + "dist/modules/admin-categories/admin-categories.module.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminCategoriesModule = void 0; + var common_12 = require_common(); + var prisma_module_1 = require_prisma_module(); + var admin_categories_controller_1 = require_admin_categories_controller(); + var admin_categories_service_1 = require_admin_categories_service(); + var AdminCategoriesModule = class AdminCategoriesModule { + }; + exports2.AdminCategoriesModule = AdminCategoriesModule; + exports2.AdminCategoriesModule = AdminCategoriesModule = __decorate4([ + (0, common_12.Module)({ + imports: [prisma_module_1.PrismaModule], + controllers: [admin_categories_controller_1.AdminCategoriesController], + providers: [admin_categories_service_1.AdminCategoriesService] + }) + ], AdminCategoriesModule); + } +}); + +// dist/modules/admin-documents/admin-documents.service.js +var require_admin_documents_service = __commonJS({ + "dist/modules/admin-documents/admin-documents.service.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var AdminDocumentsService_1; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminDocumentsService = void 0; + var common_12 = require_common(); + var client_1 = require("@prisma/client"); + var prisma_service_1 = require_prisma_service(); + var table_service_1 = require_table_service(); + var ledger_service_1 = require_ledger_service(); + var TYPE_BY_CODE = { + 1: client_1.LedgerSourceType.REPAYMENT_MELTED_GOLD, + 2: client_1.LedgerSourceType.REPAYMENT_TRANSFER, + 3: client_1.LedgerSourceType.REPAYMENT_CHEQUE, + 4: client_1.LedgerSourceType.REPAYMENT_CASH + }; + var INSTRUMENT_BY_TYPE = { + REPAYMENT_MELTED_GOLD: "MELTED_GOLD", + REPAYMENT_TRANSFER: "TRANSFER", + REPAYMENT_CHEQUE: "CHEQUE", + REPAYMENT_CASH: "CASH" + }; + var CODE_BY_TYPE = { + REPAYMENT_MELTED_GOLD: 1, + REPAYMENT_TRANSFER: 2, + REPAYMENT_CHEQUE: 3, + REPAYMENT_CASH: 4 + }; + var TYPE_LABELS = { + ORDER_STOCK: "\u0633\u0641\u0627\u0631\u0634", + ORDER_PRE_ORDER: "\u0633\u0641\u0627\u0631\u0634 \u0633\u0627\u062E\u062A\u0646\u06CC", + REPAYMENT_MELTED_GOLD: "\u0622\u0628 \u0634\u062F\u0647", + REPAYMENT_TRANSFER: "\u062D\u0648\u0627\u0644\u0647", + REPAYMENT_CHEQUE: "\u0686\u06A9", + REPAYMENT_CASH: "\u067E\u0648\u0644\u06CC", + WALLET_BONUS: "\u0647\u062F\u06CC\u0647 \u06A9\u06CC\u0641 \u067E\u0648\u0644", + ADJUSTMENT: "\u0627\u0635\u0644\u0627\u062D" + }; + var AdminDocumentsService = class AdminDocumentsService { + static { + AdminDocumentsService_1 = this; + } + prisma; + table; + ledger; + constructor(prisma, table, ledger) { + this.prisma = prisma; + this.table = table; + this.ledger = ledger; + } + static ALLOWED = [ + "id", + "sourceType", + "currency", + "direction", + "amount", + "confirmed", + "createdAt", + "karatPerMille", + "labName", + "customer.fullName", + // legacy filter keys + "type_str", + "ayar", + "lab", + "caj" + ]; + static FIELD_ALIASES = { + type_str: "sourceType", + ayar: "karatPerMille", + lab: "labName", + caj: "createdAt", + uaj: "createdAt", + "customer.name": "customer.fullName", + value: "amount", + price: "priceRial", + original_value: "originalValue", + account_name: "accountName", + bank_name: "bankName", + to: "transferTo", + recive_date: "receivedAt", + price_per_gram: "pricePerGramRialAtEntry", + ang: "hallmark" + }; + /** Legacy `POST cash/table` — the documents grid. */ + async list(query) { + this.table.assertNotExport(query); + const mapField = (f) => f ? AdminDocumentsService_1.FIELD_ALIASES[f] ?? f : f; + const aliased = { + ...query, + filters: (query.filters ?? []).map((f) => { + const mapped = { ...f, field: mapField(f.field) }; + if (mapped.field === "sourceType" && mapped.value !== void 0) { + mapped.value = TYPE_BY_CODE[Number(mapped.value)] ?? mapped.value; + } + if (mapped.field === "confirmed" && mapped.value !== void 0) { + mapped.value = String(mapped.value) === "1"; + } + return mapped; + }), + order: query.order ? `${query.order.startsWith("-") ? "-" : "+"}${mapField(query.order.replace(/^[+-]/, ""))}` : void 0 + }; + const { where, orderBy, skip, take, page, limit } = this.table.build(aliased, { + searchable: ["note", "customer.fullName", "labName"], + allowed: AdminDocumentsService_1.ALLOWED, + defaultOrderBy: { createdAt: "desc" } + }); + const scoped = { + AND: [ + where, + { sourceType: { in: Object.values(TYPE_BY_CODE) } } + ] + }; + const [rows, total] = await Promise.all([ + this.prisma.ledgerEntry.findMany({ + where: scoped, + orderBy, + skip, + take, + include: { customer: true, postedByAdminUser: true } + }), + this.prisma.ledgerEntry.count({ where: scoped }) + ]); + return this.table.respond(rows.map((r) => this.toRow(r)), total, query, page, limit); + } + /** Legacy field names preserved so the ported table model binds unchanged. */ + toRow(e) { + return { + id: e.id, + type: CODE_BY_TYPE[e.sourceType] ?? null, + type_str: TYPE_LABELS[e.sourceType], + sourceType: e.sourceType, + currency: e.currency, + direction: e.direction, + // legacy `value` is the normalized final weight, `original_value` the raw one + value: e.amount, + original_value: e.originalValue, + price: e.priceRial, + price_per_gram: e.pricePerGramRialAtEntry, + ayar: e.karatPerMille, + lab: e.labName, + ang: e.hallmark, + account_name: e.accountName, + bank_name: e.bankName, + to: e.transferTo, + recive_date: e.receivedAt, + note: e.note, + // legacy grid renders `confirmed` through a slot using 0/1 + confirmed: e.confirmed ? 1 : 0, + confirmedAt: e.confirmedAt, + customer: { + id: e.customer.id, + name: e.customer.fullName, + fname: e.customer.fullName, + lname: "", + mobile: e.customer.mobile + }, + posted_by: e.postedByAdminUser ? e.postedByAdminUser.fullName : null, + caj: e.createdAt, + uaj: e.createdAt + }; + } + /** Legacy `GET cash/{id}`. */ + async findOne(id) { + const e = await this.prisma.ledgerEntry.findUnique({ + where: { id }, + include: { customer: true, postedByAdminUser: true } + }); + if (!e) + throw new common_12.NotFoundException("\u0633\u0646\u062F \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + return this.toRow(e); + } + /** + * Legacy `POST cash` — file a repayment document. + * + * The gram/karat/price conversions are LedgerService's job; this method only + * translates the legacy form shape and attaches the instrument metadata. + */ + async create(data, actorAdminUserId) { + const typeCode = Number(data.type ?? 2); + const sourceType = TYPE_BY_CODE[typeCode]; + if (!sourceType) + throw new common_12.BadRequestException("\u0646\u0648\u0639 \u0633\u0646\u062F \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A"); + const customerId = String(data.customer_id ?? ""); + if (!customerId) + throw new common_12.BadRequestException("\u0645\u0634\u062A\u0631\u06CC \u0627\u0646\u062A\u062E\u0627\u0628 \u0646\u0634\u062F\u0647 \u0627\u0633\u062A"); + const instrument = INSTRUMENT_BY_TYPE[sourceType]; + const rawValue = instrument === "CASH" ? String(data.price ?? 0) : instrument === "MELTED_GOLD" ? String(data.original_value ?? data.value ?? 0) : String(data.value ?? 0); + const entry = await this.ledger.postGoldRepayment({ + customerId, + instrument, + rawValue, + karatPerMille: data.ayar ? Number(data.ayar) : void 0, + pricePerGramRial: data.price_per_gram ? String(data.price_per_gram) : void 0, + note: data.note ?? void 0, + postedByAdminUserId: actorAdminUserId + }); + await this.prisma.ledgerEntry.update({ + where: { id: entry.id }, + data: this.metadataPatch(data) + }); + return this.findOne(entry.id); + } + metadataPatch(data) { + const patch = {}; + if (data.lab !== void 0) + patch.labName = data.lab || null; + if (data.ang !== void 0) + patch.hallmark = data.ang || null; + if (data.account_name !== void 0) + patch.accountName = data.account_name || null; + if (data.bank_name !== void 0) + patch.bankName = data.bank_name || null; + if (data.to !== void 0) + patch.transferTo = data.to || null; + if (data.original_value !== void 0 && data.original_value !== null) { + patch.originalValue = new client_1.Prisma.Decimal(String(data.original_value)); + } + if (data.price !== void 0 && data.price !== null) { + patch.priceRial = new client_1.Prisma.Decimal(String(data.price)); + } + if (data.recive_date) + patch.receivedAt = new Date(String(data.recive_date)); + return patch; + } + /** + * Legacy `PUT cash/{id}` — edit a document. + * + * Only metadata and the note are editable. Changing the AMOUNT of a confirmed + * entry would silently rewrite a customer's debt, so that is refused: the + * correct accounting action is a reversing adjustment, not an edit. Legacy + * allowed it. Recorded in docs/ADMIN-PORT-PLAN.md. + */ + async update(id, data) { + const existing = await this.prisma.ledgerEntry.findUnique({ where: { id } }); + if (!existing) + throw new common_12.NotFoundException("\u0633\u0646\u062F \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + const amountChanged = data.value !== void 0 && !new client_1.Prisma.Decimal(String(data.value)).equals(existing.amount); + if (existing.confirmed && amountChanged) { + throw new common_12.BadRequestException("\u0645\u0628\u0644\u063A \u0633\u0646\u062F \u062A\u0627\u06CC\u06CC\u062F\u0634\u062F\u0647 \u0642\u0627\u0628\u0644 \u0648\u06CC\u0631\u0627\u06CC\u0634 \u0646\u06CC\u0633\u062A\u060C \u0686\u0648\u0646 \u0628\u062F\u0647\u06CC \u0645\u0634\u062A\u0631\u06CC \u0628\u0631 \u0627\u0633\u0627\u0633 \u0622\u0646 \u0645\u062D\u0627\u0633\u0628\u0647 \u0634\u062F\u0647 \u0627\u0633\u062A. \u0628\u0631\u0627\u06CC \u0627\u0635\u0644\u0627\u062D\u060C \u0633\u0646\u062F \u062C\u062F\u06CC\u062F \u062B\u0628\u062A \u06A9\u0646\u06CC\u062F."); + } + const patch = this.metadataPatch(data); + if (data.note !== void 0) + patch.note = data.note || null; + if (!existing.confirmed && amountChanged) { + patch.amount = new client_1.Prisma.Decimal(String(data.value)); + } + await this.prisma.ledgerEntry.update({ where: { id }, data: patch }); + return this.findOne(id); + } + /** + * Legacy `POST cash/confirem/{id}` (legacy's own spelling) — a TOGGLE: the grid + * shows a tick on an unconfirmed row and a cross on a confirmed one, both + * calling this same endpoint. + * + * Confirming delegates to LedgerService so the customer balance moves through + * the one code path that owns it. Un-confirming reverses that same amount + * rather than editing the balance directly, so the two stay consistent. + */ + async toggleConfirm(id, adminUserId) { + const e = await this.prisma.ledgerEntry.findUnique({ where: { id } }); + if (!e) + throw new common_12.NotFoundException("\u0633\u0646\u062F \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + if (!e.confirmed) { + await this.ledger.confirmEntry(id, adminUserId); + return this.findOne(id); + } + await this.prisma.$transaction(async (tx) => { + const delta = e.direction === client_1.LedgerDirection.CREDIT ? e.amount : e.amount.negated(); + const field = e.currency === client_1.LedgerCurrency.GOLD_GRAM ? "goldDebtGrams" : "fiatDebtRial"; + await tx.customer.update({ + where: { id: e.customerId }, + data: { [field]: { increment: delta } } + }); + await tx.ledgerEntry.update({ + where: { id }, + data: { confirmed: false, confirmedAt: null } + }); + }); + return this.findOne(id); + } + /** + * Legacy `DELETE cash/{id}`. + * + * A confirmed entry has already moved the customer's balance; deleting it + * would leave that balance overstated with no trace. Refused — legacy allowed + * it. Unconfirmed entries never touched a balance, so they delete cleanly. + */ + async remove(id) { + const e = await this.prisma.ledgerEntry.findUnique({ where: { id } }); + if (!e) + throw new common_12.NotFoundException("\u0633\u0646\u062F \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + if (e.confirmed) { + throw new common_12.BadRequestException("\u062D\u0630\u0641 \u0633\u0646\u062F \u062A\u0627\u06CC\u06CC\u062F\u0634\u062F\u0647 \u0645\u0645\u06A9\u0646 \u0646\u06CC\u0633\u062A\u060C \u0686\u0648\u0646 \u062F\u0631 \u062A\u0631\u0627\u0632 \u0645\u0634\u062A\u0631\u06CC \u0627\u0639\u0645\u0627\u0644 \u0634\u062F\u0647 \u0627\u0633\u062A."); + } + await this.prisma.ledgerEntry.delete({ where: { id } }); + return { success: true }; + } + typeOptions() { + return Object.entries(TYPE_BY_CODE).map(([code, sourceType]) => ({ + value: Number(code), + title: TYPE_LABELS[sourceType] + })); + } + // ── Wallet ───────────────────────────────────────────────────────── + /** Legacy `POST wallet` grid — the list of granted wallet bonuses. */ + async listWallet(query) { + this.table.assertNotExport(query); + const { where, orderBy, skip, take, page, limit } = this.table.build(query, { + searchable: ["customer.fullName"], + allowed: ["id", "goldGrams", "grantedAt", "expiresAt", "isActive", "customer.fullName"], + defaultOrderBy: { grantedAt: "desc" } + }); + const [rows, total] = await Promise.all([ + this.prisma.walletBonus.findMany({ + where, + orderBy, + skip, + take, + include: { customer: true } + }), + this.prisma.walletBonus.count({ where }) + ]); + return this.table.respond(rows.map((w) => ({ + id: w.id, + value: w.goldGrams, + grams: w.goldGrams, + is_active: w.isActive, + consumed: Boolean(w.consumedAt), + caj: w.grantedAt, + expires_at: w.expiresAt, + customer: { + id: w.customer.id, + name: w.customer.fullName, + mobile: w.customer.mobile + } + })), total, query, page, limit); + } + /** + * Legacy `GET /wallet/config` and `/wallet/birthday/config`, plus their POST + * counterparts — the wallet settings screen (views/manage/wallet.vue). + * Stored in the Setting key/value table that replaces legacy `config_static`. + */ + async getSetting(key) { + const row = await this.prisma.setting.findUnique({ where: { key } }); + return row?.value ?? {}; + } + async setSetting(key, value) { + const row = await this.prisma.setting.upsert({ + where: { key }, + update: { value }, + create: { key, value } + }); + return row.value; + } + /** The customer picker used by the document form — legacy `GET query/customer`. */ + async queryCustomers() { + const rows = await this.prisma.customer.findMany({ + where: { isActive: true }, + orderBy: { fullName: "asc" }, + select: { id: true, fullName: true, mobile: true } + }); + return rows.map((c) => ({ id: c.id, name: c.fullName, fname: c.fullName, lname: "", mobile: c.mobile })); + } + }; + exports2.AdminDocumentsService = AdminDocumentsService; + exports2.AdminDocumentsService = AdminDocumentsService = AdminDocumentsService_1 = __decorate4([ + (0, common_12.Injectable)(), + __metadata3("design:paramtypes", [ + prisma_service_1.PrismaService, + table_service_1.TableService, + ledger_service_1.LedgerService + ]) + ], AdminDocumentsService); + } +}); + +// dist/modules/admin-documents/admin-documents.controller.js +var require_admin_documents_controller = __commonJS({ + "dist/modules/admin-documents/admin-documents.controller.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var __param3 = exports2 && exports2.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminDocumentsController = void 0; + var common_12 = require_common(); + var admin_documents_service_1 = require_admin_documents_service(); + var table_query_dto_1 = require_table_query_dto(); + var guards_1 = require_guards2(); + var AdminDocumentsController = class AdminDocumentsController { + documents; + constructor(documents) { + this.documents = documents; + } + list(query) { + return this.documents.list(query); + } + typeOptions() { + return this.documents.typeOptions(); + } + queryCustomers() { + return this.documents.queryCustomers(); + } + listWallet(query) { + return this.documents.listWallet(query); + } + // ── wallet settings (views/manage/wallet.vue) ──────────────────── + getWalletConfig() { + return this.documents.getSetting("wallet.config"); + } + setWalletConfig(body) { + return this.documents.setSetting("wallet.config", body); + } + getBirthdayConfig() { + return this.documents.getSetting("wallet.birthday"); + } + setBirthdayConfig(body) { + return this.documents.setSetting("wallet.birthday", body); + } + create(data, admin) { + return this.documents.create(data, admin.id); + } + /** Legacy POST cash/confirem/{id} — a toggle, not a one-way confirm. */ + toggleConfirm(id, admin) { + return this.documents.toggleConfirm(id, admin.id); + } + findOne(id) { + return this.documents.findOne(id); + } + update(id, data) { + return this.documents.update(id, data); + } + remove(id) { + return this.documents.remove(id); + } + }; + exports2.AdminDocumentsController = AdminDocumentsController; + __decorate4([ + (0, common_12.Post)("list"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("document.list"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [table_query_dto_1.TableQueryDto]), + __metadata3("design:returntype", void 0) + ], AdminDocumentsController.prototype, "list", null); + __decorate4([ + (0, common_12.Get)("type-options"), + (0, guards_1.RequirePermission)("document.list"), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", []), + __metadata3("design:returntype", void 0) + ], AdminDocumentsController.prototype, "typeOptions", null); + __decorate4([ + (0, common_12.Get)("query/customer"), + (0, guards_1.RequirePermission)("document.create"), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", []), + __metadata3("design:returntype", void 0) + ], AdminDocumentsController.prototype, "queryCustomers", null); + __decorate4([ + (0, common_12.Post)("wallet/list"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("wallet"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [table_query_dto_1.TableQueryDto]), + __metadata3("design:returntype", void 0) + ], AdminDocumentsController.prototype, "listWallet", null); + __decorate4([ + (0, common_12.Get)("wallet/config"), + (0, guards_1.RequirePermission)("config.wallet"), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", []), + __metadata3("design:returntype", void 0) + ], AdminDocumentsController.prototype, "getWalletConfig", null); + __decorate4([ + (0, common_12.Post)("wallet/config"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("config.wallet"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], AdminDocumentsController.prototype, "setWalletConfig", null); + __decorate4([ + (0, common_12.Get)("wallet/birthday/config"), + (0, guards_1.RequirePermission)("config.wallet"), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", []), + __metadata3("design:returntype", void 0) + ], AdminDocumentsController.prototype, "getBirthdayConfig", null); + __decorate4([ + (0, common_12.Post)("wallet/birthday/config"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("config.wallet"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], AdminDocumentsController.prototype, "setBirthdayConfig", null); + __decorate4([ + (0, common_12.Post)(), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("document.create"), + __param3(0, (0, common_12.Body)()), + __param3(1, (0, guards_1.CurrentAdmin)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object, Object]), + __metadata3("design:returntype", void 0) + ], AdminDocumentsController.prototype, "create", null); + __decorate4([ + (0, common_12.Post)(":id/confirm"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("document.list.edit"), + __param3(0, (0, common_12.Param)("id")), + __param3(1, (0, guards_1.CurrentAdmin)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String, Object]), + __metadata3("design:returntype", void 0) + ], AdminDocumentsController.prototype, "toggleConfirm", null); + __decorate4([ + (0, common_12.Get)(":id"), + (0, guards_1.RequirePermission)("document.list"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminDocumentsController.prototype, "findOne", null); + __decorate4([ + (0, common_12.Put)(":id"), + (0, guards_1.RequirePermission)("document.list.edit"), + __param3(0, (0, common_12.Param)("id")), + __param3(1, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String, Object]), + __metadata3("design:returntype", void 0) + ], AdminDocumentsController.prototype, "update", null); + __decorate4([ + (0, common_12.Delete)(":id"), + (0, guards_1.RequirePermission)("document.list.edit"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminDocumentsController.prototype, "remove", null); + exports2.AdminDocumentsController = AdminDocumentsController = __decorate4([ + (0, common_12.Controller)("admin/documents"), + __metadata3("design:paramtypes", [admin_documents_service_1.AdminDocumentsService]) + ], AdminDocumentsController); + } +}); + +// dist/modules/admin-documents/admin-documents.module.js +var require_admin_documents_module = __commonJS({ + "dist/modules/admin-documents/admin-documents.module.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminDocumentsModule = void 0; + var common_12 = require_common(); + var prisma_module_1 = require_prisma_module(); + var accounting_module_1 = require_accounting_module(); + var admin_documents_controller_1 = require_admin_documents_controller(); + var admin_documents_service_1 = require_admin_documents_service(); + var AdminDocumentsModule = class AdminDocumentsModule { + }; + exports2.AdminDocumentsModule = AdminDocumentsModule; + exports2.AdminDocumentsModule = AdminDocumentsModule = __decorate4([ + (0, common_12.Module)({ + imports: [prisma_module_1.PrismaModule, accounting_module_1.AccountingModule], + controllers: [admin_documents_controller_1.AdminDocumentsController], + providers: [admin_documents_service_1.AdminDocumentsService] + }) + ], AdminDocumentsModule); + } +}); + +// dist/modules/admin-promotions/admin-promotions.service.js +var require_admin_promotions_service = __commonJS({ + "dist/modules/admin-promotions/admin-promotions.service.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var AdminPromotionsService_1; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminPromotionsService = void 0; + var common_12 = require_common(); + var client_1 = require("@prisma/client"); + var prisma_service_1 = require_prisma_service(); + var table_service_1 = require_table_service(); + var SCOPE_BY_CODE = { + 1: client_1.PromotionScope.PRODUCT, + 2: client_1.PromotionScope.CATEGORY, + 3: client_1.PromotionScope.CUSTOMER, + 4: client_1.PromotionScope.BRAND + }; + var CODE_BY_SCOPE = { + PRODUCT: 1, + CATEGORY: 2, + CUSTOMER: 3, + BRAND: 4 + }; + var SCOPE_LABELS = { + PRODUCT: "\u0645\u062D\u0635\u0648\u0644\u0627\u062A", + CATEGORY: "\u062F\u0633\u062A\u0647 \u0628\u0646\u062F\u06CC", + CUSTOMER: "\u0645\u0634\u062A\u0631\u06CC", + BRAND: "\u0628\u0631\u0646\u062F" + }; + var USAGE_BY_CODE = { + 1: client_1.PromotionUsage.ONCE, + 2: client_1.PromotionUsage.UNTIL_END_DATE + }; + var CODE_BY_USAGE = { + ONCE: 1, + UNTIL_END_DATE: 2 + }; + var AdminPromotionsService = class AdminPromotionsService { + static { + AdminPromotionsService_1 = this; + } + prisma; + table; + constructor(prisma, table) { + this.prisma = prisma; + this.table = table; + } + static ALLOWED = [ + "id", + "title", + "scope", + "usage", + "discountPercent", + "isActive", + "platform", + "startsAt", + "endsAt", + "createdAt", + // legacy filter keys + "promotion_type_str", + "status", + "start", + "end", + "discount_percent" + ]; + static FIELD_ALIASES = { + promotion_type_str: "scope", + type: "scope", + use_only: "usage", + status: "isActive", + start: "startsAt", + end: "endsAt", + discount_percent: "discountPercent", + caj: "createdAt" + }; + /** Legacy `GET product/variant/promotion` — the promotions grid. */ + async list(query) { + this.table.assertNotExport(query); + const mapField = (f) => f ? AdminPromotionsService_1.FIELD_ALIASES[f] ?? f : f; + const aliased = { + ...query, + filters: (query.filters ?? []).map((f) => { + const mapped = { ...f, field: mapField(f.field) }; + if (mapped.field === "scope" && mapped.value !== void 0) { + mapped.value = SCOPE_BY_CODE[Number(mapped.value)] ?? mapped.value; + } + if (mapped.field === "isActive" && mapped.value !== void 0) { + mapped.value = String(mapped.value) === "1"; + } + return mapped; + }), + order: query.order ? `${query.order.startsWith("-") ? "-" : "+"}${mapField(query.order.replace(/^[+-]/, ""))}` : void 0 + }; + const { where, orderBy, skip, take, page, limit } = this.table.build(aliased, { + searchable: ["title", "description"], + allowed: AdminPromotionsService_1.ALLOWED, + defaultOrderBy: { createdAt: "desc" } + }); + const [rows, total] = await Promise.all([ + this.prisma.promotion.findMany({ + where, + orderBy, + skip, + take, + include: { product: true, category: true, customer: true, brand: true } + }), + this.prisma.promotion.count({ where }) + ]); + return this.table.respond(rows.map((r) => this.toRow(r)), total, query, page, limit); + } + toRow(p) { + return { + id: p.id, + title: p.title, + description: p.description, + type: CODE_BY_SCOPE[p.scope], + promotion_type_str: SCOPE_LABELS[p.scope], + use_only: CODE_BY_USAGE[p.usage], + discount_percent: p.discountPercent, + // legacy grid renders `status` through a slot + status: p.isActive ? 1 : 0, + is_active: p.isActive, + /** + * Legacy `type_customer`: 1 = تک (retail), 2 = عمده (wholesale). The grid + * uses it BOTH to pick which permission gates the row's edit/delete icons + * AND to choose which edit route opens. A customer-scoped promotion is the + * retail ("tak") kind; everything else is the wholesale kind. + */ + type_customer: p.scope === client_1.PromotionScope.CUSTOMER ? 1 : 2, + platform: p.platform, + start: p.startsAt, + end: p.endsAt, + product_id: p.productId, + category_id: p.categoryId, + customer_id: p.customerId, + brand_id: p.brandId, + product: p.product ? { id: p.product.id, title: p.product.title } : null, + category: p.category ? { id: p.category.id, title: p.category.title } : null, + customer: p.customer ? { id: p.customer.id, name: p.customer.fullName } : null, + brand: p.brand ? { id: p.brand.id, title: p.brand.title } : null, + caj: p.createdAt + }; + } + async findOne(id) { + const p = await this.prisma.promotion.findUnique({ + where: { id }, + include: { product: true, category: true, customer: true, brand: true } + }); + if (!p) + throw new common_12.NotFoundException("\u062A\u062E\u0641\u06CC\u0641 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + return this.toRow(p); + } + /** + * Maps the legacy form payload onto the model, attaching the ONE target that + * matches the chosen scope and clearing the others — so a promotion can never + * carry, say, both a product and a customer. + */ + buildData(data) { + const scope = SCOPE_BY_CODE[Number(data.type ?? 1)]; + if (!scope) + throw new common_12.BadRequestException("\u0646\u0648\u0639 \u062A\u062E\u0641\u06CC\u0641 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A"); + const usage = USAGE_BY_CODE[Number(data.use_only ?? 1)] ?? client_1.PromotionUsage.ONCE; + const percent = new client_1.Prisma.Decimal(String(data.discount_percent ?? 0)); + if (percent.lt(0) || percent.gt(100)) { + throw new common_12.BadRequestException("\u062F\u0631\u0635\u062F \u062A\u062E\u0641\u06CC\u0641 \u0628\u0627\u06CC\u062F \u0628\u06CC\u0646 \u06F0 \u062A\u0627 \u06F1\u06F0\u06F0 \u0628\u0627\u0634\u062F"); + } + const startsAt = data.start ? new Date(String(data.start)) : null; + const endsAt = data.end ? new Date(String(data.end)) : null; + if (startsAt && endsAt && endsAt < startsAt) { + throw new common_12.BadRequestException("\u062A\u0627\u0631\u06CC\u062E \u067E\u0627\u06CC\u0627\u0646 \u0646\u0645\u06CC\u200C\u062A\u0648\u0627\u0646\u062F \u0642\u0628\u0644 \u0627\u0632 \u062A\u0627\u0631\u06CC\u062E \u0634\u0631\u0648\u0639 \u0628\u0627\u0634\u062F"); + } + return { + title: String(data.title ?? "").trim(), + description: data.description || null, + scope, + usage, + discountPercent: percent, + isActive: data.is_active !== void 0 ? Boolean(data.is_active) : true, + platform: data.platform !== void 0 ? Number(data.platform) : 3, + startsAt, + endsAt, + productId: scope === client_1.PromotionScope.PRODUCT ? data.product_id ?? null : null, + categoryId: scope === client_1.PromotionScope.CATEGORY ? data.category_id ?? null : null, + customerId: scope === client_1.PromotionScope.CUSTOMER ? data.customer_id ?? null : null, + brandId: scope === client_1.PromotionScope.BRAND ? data.brand_id ?? null : null + }; + } + /** Legacy `POST product/variant/promotion`. */ + async create(data) { + const payload = this.buildData(data); + if (!payload.title) + throw new common_12.BadRequestException("\u0639\u0646\u0648\u0627\u0646 \u062A\u062E\u0641\u06CC\u0641 \u0627\u0644\u0632\u0627\u0645\u06CC \u0627\u0633\u062A"); + return this.prisma.promotion.create({ data: payload }); + } + /** Legacy `PUT product/variant/promotion/{id}`. */ + async update(id, data) { + const existing = await this.prisma.promotion.findUnique({ where: { id } }); + if (!existing) + throw new common_12.NotFoundException("\u062A\u062E\u0641\u06CC\u0641 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + const payload = this.buildData({ ...data, type: CODE_BY_SCOPE[existing.scope] }); + return this.prisma.promotion.update({ where: { id }, data: payload }); + } + /** Legacy `DELETE product/variant/promotion/{id}`. */ + async remove(id) { + const p = await this.prisma.promotion.findUnique({ where: { id } }); + if (!p) + throw new common_12.NotFoundException("\u062A\u062E\u0641\u06CC\u0641 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + await this.prisma.promotion.delete({ where: { id } }); + return { success: true }; + } + scopeOptions() { + return Object.entries(SCOPE_BY_CODE).map(([code, scope]) => ({ + value: Number(code), + title: SCOPE_LABELS[scope] + })); + } + usageOptions() { + return [ + { value: 1, title: " \u0641\u0642\u0637 \u06CC\u06A9\u0628\u0627\u0631" }, + { value: 2, title: "\u062A\u0627 \u062A\u0627\u0631\u06CC\u062E \u067E\u0627\u06CC\u0627\u0646" } + ]; + } + /** + * Legacy `GET /autopromotion` and its POST counterpart — the settings screen + * for "تخفیف اتوماتیک یکبار مصرف ویژه مشتریان جدید": a one-shot welcome + * discount for new customers, configured as an on/off state plus a percentage. + * + * Stored in the Setting key/value table, like the other config screens. + */ + async getAutoPromotion() { + const row = await this.prisma.setting.findUnique({ where: { key: "promotion.auto" } }); + return row?.value ?? { state: false, discount_percent: null }; + } + async setAutoPromotion(data) { + const percent = Number(data.discount_percent ?? 0); + if (Number.isNaN(percent) || percent < 0 || percent > 100) { + throw new common_12.BadRequestException("\u062F\u0631\u0635\u062F \u062A\u062E\u0641\u06CC\u0641 \u0628\u0627\u06CC\u062F \u0628\u06CC\u0646 \u06F0 \u062A\u0627 \u06F1\u06F0\u06F0 \u0628\u0627\u0634\u062F"); + } + const value = { state: Boolean(data.state), discount_percent: percent }; + const row = await this.prisma.setting.upsert({ + where: { key: "promotion.auto" }, + update: { value }, + create: { key: "promotion.auto", value } + }); + return row.value; + } + // ── Exclusions (views/offersIgnore) ──────────────────────────────── + /** + * Legacy `GET /ignore` — the full exclusion list. + * + * The view reads it as a flat array and filters client-side: + * items_id(type) { return this.ignoreList.filter(i => i.type == type).map(x => x.item_id) } + * so the flat shape with `item_id` is preserved. + */ + async listExclusions() { + const rows = await this.prisma.promotionExclusion.findMany({ + orderBy: [{ type: "asc" }, { createdAt: "asc" }] + }); + return rows.map((e) => ({ id: e.id, type: e.type, item_id: e.itemId })); + } + /** + * Legacy `POST /ignore` with `{ type, item_id: [...] }`. + * + * The posted array is the COMPLETE selection for that type — the view binds it + * to a checkbox table — so this replaces that type's rows rather than adding + * to them. Anything unchecked is therefore removed. + */ + async createExclusion(data) { + const type = Number(data.type); + if (!type) + throw new common_12.BadRequestException("\u0646\u0648\u0639 \u0627\u0633\u062A\u062B\u0646\u0627\u0621 \u0627\u0644\u0632\u0627\u0645\u06CC \u0627\u0633\u062A"); + const itemIds = Array.isArray(data.item_id) ? data.item_id.map((x) => String(x)).filter(Boolean) : []; + await this.prisma.$transaction([ + this.prisma.promotionExclusion.deleteMany({ where: { type } }), + this.prisma.promotionExclusion.createMany({ + data: itemIds.map((itemId) => ({ type, itemId })), + skipDuplicates: true + }) + ]); + return this.listExclusions(); + } + /** + * Legacy `DELETE /ignore/{id}` — the view's "حذف نوع استثناء" card removes a + * whole TYPE, so a numeric id is treated as a type and a cuid as one row. + */ + async removeExclusion(id) { + if (/^\d+$/.test(id)) { + const type = Number(id); + const { count } = await this.prisma.promotionExclusion.deleteMany({ where: { type } }); + if (count === 0) + throw new common_12.NotFoundException("\u0627\u0633\u062A\u062B\u0646\u0627\u06CC\u06CC \u0628\u0631\u0627\u06CC \u0627\u06CC\u0646 \u0646\u0648\u0639 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + return { success: true, removed: count }; + } + const e = await this.prisma.promotionExclusion.findUnique({ where: { id } }); + if (!e) + throw new common_12.NotFoundException("\u0627\u0633\u062A\u062B\u0646\u0627\u0621 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + await this.prisma.promotionExclusion.delete({ where: { id } }); + return { success: true, removed: 1 }; + } + }; + exports2.AdminPromotionsService = AdminPromotionsService; + exports2.AdminPromotionsService = AdminPromotionsService = AdminPromotionsService_1 = __decorate4([ + (0, common_12.Injectable)(), + __metadata3("design:paramtypes", [ + prisma_service_1.PrismaService, + table_service_1.TableService + ]) + ], AdminPromotionsService); + } +}); + +// dist/modules/admin-promotions/admin-promotions.controller.js +var require_admin_promotions_controller = __commonJS({ + "dist/modules/admin-promotions/admin-promotions.controller.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var __param3 = exports2 && exports2.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminPromotionsController = void 0; + var common_12 = require_common(); + var admin_promotions_service_1 = require_admin_promotions_service(); + var table_query_dto_1 = require_table_query_dto(); + var guards_1 = require_guards2(); + var AdminPromotionsController = class AdminPromotionsController { + promotions; + constructor(promotions) { + this.promotions = promotions; + } + list(query) { + return this.promotions.list(query); + } + scopeOptions() { + return this.promotions.scopeOptions(); + } + usageOptions() { + return this.promotions.usageOptions(); + } + getAutoPromotion() { + return this.promotions.getAutoPromotion(); + } + setAutoPromotion(body) { + return this.promotions.setAutoPromotion(body); + } + // ── exclusions ──────────────────────────────────────────────────── + listExclusions() { + return this.promotions.listExclusions(); + } + createExclusion(body) { + return this.promotions.createExclusion(body); + } + removeExclusion(id) { + return this.promotions.removeExclusion(id); + } + // ── promotions ──────────────────────────────────────────────────── + create(data) { + return this.promotions.create(data); + } + findOne(id) { + return this.promotions.findOne(id); + } + update(id, data) { + return this.promotions.update(id, data); + } + remove(id) { + return this.promotions.remove(id); + } + }; + exports2.AdminPromotionsController = AdminPromotionsController; + __decorate4([ + (0, common_12.Post)("list"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("offers.list"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [table_query_dto_1.TableQueryDto]), + __metadata3("design:returntype", void 0) + ], AdminPromotionsController.prototype, "list", null); + __decorate4([ + (0, common_12.Get)("scope-options"), + (0, guards_1.RequirePermission)("offers.list"), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", []), + __metadata3("design:returntype", void 0) + ], AdminPromotionsController.prototype, "scopeOptions", null); + __decorate4([ + (0, common_12.Get)("usage-options"), + (0, guards_1.RequirePermission)("offers.list"), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", []), + __metadata3("design:returntype", void 0) + ], AdminPromotionsController.prototype, "usageOptions", null); + __decorate4([ + (0, common_12.Get)("auto"), + (0, guards_1.RequirePermission)("offers.autopromotion"), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", []), + __metadata3("design:returntype", void 0) + ], AdminPromotionsController.prototype, "getAutoPromotion", null); + __decorate4([ + (0, common_12.Post)("auto"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("offers.autopromotion"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], AdminPromotionsController.prototype, "setAutoPromotion", null); + __decorate4([ + (0, common_12.Get)("exclusions"), + (0, guards_1.RequirePermission)("offersIgnore"), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", []), + __metadata3("design:returntype", void 0) + ], AdminPromotionsController.prototype, "listExclusions", null); + __decorate4([ + (0, common_12.Post)("exclusions"), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("offersIgnore"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], AdminPromotionsController.prototype, "createExclusion", null); + __decorate4([ + (0, common_12.Delete)("exclusions/:id"), + (0, guards_1.RequirePermission)("offersIgnore"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminPromotionsController.prototype, "removeExclusion", null); + __decorate4([ + (0, common_12.Post)(), + (0, common_12.HttpCode)(200), + (0, guards_1.RequirePermission)("offers.create"), + __param3(0, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [Object]), + __metadata3("design:returntype", void 0) + ], AdminPromotionsController.prototype, "create", null); + __decorate4([ + (0, common_12.Get)(":id"), + (0, guards_1.RequirePermission)("offers.list"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminPromotionsController.prototype, "findOne", null); + __decorate4([ + (0, common_12.Put)(":id"), + (0, guards_1.RequirePermission)("offers.list.edit"), + __param3(0, (0, common_12.Param)("id")), + __param3(1, (0, common_12.Body)()), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String, Object]), + __metadata3("design:returntype", void 0) + ], AdminPromotionsController.prototype, "update", null); + __decorate4([ + (0, common_12.Delete)(":id"), + (0, guards_1.RequirePermission)("offers.list.edit"), + __param3(0, (0, common_12.Param)("id")), + __metadata3("design:type", Function), + __metadata3("design:paramtypes", [String]), + __metadata3("design:returntype", void 0) + ], AdminPromotionsController.prototype, "remove", null); + exports2.AdminPromotionsController = AdminPromotionsController = __decorate4([ + (0, common_12.Controller)("admin/promotions"), + __metadata3("design:paramtypes", [admin_promotions_service_1.AdminPromotionsService]) + ], AdminPromotionsController); + } +}); + +// dist/modules/admin-promotions/admin-promotions.module.js +var require_admin_promotions_module = __commonJS({ + "dist/modules/admin-promotions/admin-promotions.module.js"(exports2) { + "use strict"; + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminPromotionsModule = void 0; + var common_12 = require_common(); + var prisma_module_1 = require_prisma_module(); + var admin_promotions_controller_1 = require_admin_promotions_controller(); + var admin_promotions_service_1 = require_admin_promotions_service(); + var AdminPromotionsModule = class AdminPromotionsModule { + }; + exports2.AdminPromotionsModule = AdminPromotionsModule; + exports2.AdminPromotionsModule = AdminPromotionsModule = __decorate4([ + (0, common_12.Module)({ + imports: [prisma_module_1.PrismaModule], + controllers: [admin_promotions_controller_1.AdminPromotionsController], + providers: [admin_promotions_service_1.AdminPromotionsService] + }) + ], AdminPromotionsModule); + } +}); + +// dist/modules/admin-users/admin-users.service.js +var require_admin_users_service = __commonJS({ + "dist/modules/admin-users/admin-users.service.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + })); + var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + }) : function(o, v) { + o["default"] = v; + }); + var __decorate4 = exports2 && exports2.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __importStar2 = exports2 && exports2.__importStar || /* @__PURE__ */ (function() { + var ownKeys2 = function(o) { + ownKeys2 = Object.getOwnPropertyNames || function(o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys2(o); + }; + return function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys2(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding2(result, mod, k[i]); + } + __setModuleDefault2(result, mod); + return result; + }; + })(); + var __metadata3 = exports2 && exports2.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var AdminUsersService_1; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AdminUsersService = void 0; + var common_12 = require_common(); + var client_1 = require("@prisma/client"); + var bcrypt = __importStar2(require_umd()); + var prisma_service_1 = require_prisma_service(); + var table_service_1 = require_table_service(); + var AdminUsersService = class AdminUsersService { + static { + AdminUsersService_1 = this; + } + prisma; + table; + constructor(prisma, table) { + this.prisma = prisma; + this.table = table; + } + static ALLOWED = [ + "id", + "fullName", + "mobile", + "role", + "isActive", + "createdAt", + "userTypeId", + "userType.title", + "branch.name", + // legacy filter keys + "name", + "ut" + ]; + static FIELD_ALIASES = { + name: "fullName", + ut: "userTypeId", + caj: "createdAt", + active: "isActive" + }; + /** Legacy `GET users` — the admin user grid. */ + async list(query) { + this.table.assertNotExport(query); + const mapField = (f) => f ? AdminUsersService_1.FIELD_ALIASES[f] ?? f : f; + const aliased = { + ...query, + filters: (query.filters ?? []).map((f) => { + const mapped = { ...f, field: mapField(f.field) }; + if (mapped.field === "isActive" && mapped.value !== void 0) { + mapped.value = String(mapped.value) === "1"; + } + if (mapped.field === "userTypeId" && mapped.value !== void 0) { + mapped.value = Number(mapped.value); + } + return mapped; + }), + order: query.order ? `${query.order.startsWith("-") ? "-" : "+"}${mapField(query.order.replace(/^[+-]/, ""))}` : void 0 + }; + const { where, orderBy, skip, take, page, limit } = this.table.build(aliased, { + searchable: ["fullName", "mobile"], + allowed: AdminUsersService_1.ALLOWED, + defaultOrderBy: { createdAt: "desc" } + }); + const [rows, total] = await Promise.all([ + this.prisma.adminUser.findMany({ + where, + orderBy, + skip, + take, + include: { userType: true, branch: true } + }), + this.prisma.adminUser.count({ where }) + ]); + return this.table.respond(rows.map((r) => this.toRow(r)), total, query, page, limit); + } + /** Legacy field names preserved; the password hash is never exposed. */ + toRow(u) { + return { + id: u.id, + name: u.fullName, + fname: u.fullName, + lname: "", + mobile: u.mobile, + role: u.role, + ut: u.userTypeId, + user_type: u.userType ? { id: u.userType.id, title: u.userType.title } : null, + branch_id: u.branchId, + branch: u.branch ? { id: u.branch.id, name: u.branch.name } : null, + percent: u.wagePercent, + active: u.isActive ? 1 : -1, + is_active: u.isActive, + caj: u.createdAt + }; + } + async findOne(id) { + const u = await this.prisma.adminUser.findUnique({ + where: { id }, + include: { userType: true, branch: true } + }); + if (!u) + throw new common_12.NotFoundException("\u06A9\u0627\u0631\u0628\u0631 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + return this.toRow(u); + } + /** Legacy `POST users`. */ + async create(data) { + const fullName = String(data.name ?? data.fname ?? "").trim(); + const mobile = String(data.mobile ?? "").trim(); + const password = String(data.password ?? ""); + if (!fullName) + throw new common_12.BadRequestException("\u0646\u0627\u0645 \u0627\u0644\u0632\u0627\u0645\u06CC \u0627\u0633\u062A"); + if (!mobile) + throw new common_12.BadRequestException("\u0645\u0648\u0628\u0627\u06CC\u0644 \u0627\u0644\u0632\u0627\u0645\u06CC \u0627\u0633\u062A"); + if (!password) + throw new common_12.BadRequestException("\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0627\u0644\u0632\u0627\u0645\u06CC \u0627\u0633\u062A"); + const existing = await this.prisma.adminUser.findUnique({ where: { mobile } }); + if (existing) + throw new common_12.BadRequestException("\u0627\u06CC\u0646 \u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06CC\u0644 \u0642\u0628\u0644\u0627\u064B \u062B\u0628\u062A \u0634\u062F\u0647 \u0627\u0633\u062A"); + return this.prisma.adminUser.create({ + data: { + fullName, + mobile, + passwordHash: await bcrypt.hash(password, 10), + role: data.role ?? client_1.AdminRole.SALES_EXPERT, + userTypeId: data.ut !== void 0 && data.ut !== null ? Number(data.ut) : null, + branchId: data.branch_id || null, + wagePercent: data.percent !== void 0 && data.percent !== null ? new client_1.Prisma.Decimal(String(data.percent)) : null, + isActive: data.is_active !== void 0 ? Boolean(data.is_active) : true + }, + include: { userType: true, branch: true } + }); + } + /** Legacy `PUT users/{id}`. */ + async update(id, data) { + const existing = await this.prisma.adminUser.findUnique({ where: { id } }); + if (!existing) + throw new common_12.NotFoundException("\u06A9\u0627\u0631\u0628\u0631 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + const patch = {}; + if (data.name !== void 0) + patch.fullName = String(data.name); + if (data.mobile !== void 0) { + const mobile = String(data.mobile); + if (mobile !== existing.mobile) { + const clash = await this.prisma.adminUser.findUnique({ where: { mobile } }); + if (clash) + throw new common_12.BadRequestException("\u0627\u06CC\u0646 \u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06CC\u0644 \u0642\u0628\u0644\u0627\u064B \u062B\u0628\u062A \u0634\u062F\u0647 \u0627\u0633\u062A"); + } + patch.mobile = mobile; + } + if (data.password) + patch.passwordHash = await bcrypt.hash(String(data.password), 10); + if (data.role !== void 0) + patch.role = data.role; + if (data.ut !== void 0) { + patch.userType = data.ut ? { connect: { id: Number(data.ut) } } : { disconnect: true }; + } + if (data.branch_id !== void 0) { + patch.branch = data.branch_id ? { connect: { id: String(data.branch_id) } } : { disconnect: true }; + } + if (data.percent !== void 0) { + patch.wagePercent = data.percent === null ? null : new client_1.Prisma.Decimal(String(data.percent)); + } + if (data.is_active !== void 0) + patch.isActive = Boolean(data.is_active); + return this.prisma.adminUser.update({ + where: { id }, + data: patch, + include: { userType: true, branch: true } + }); + } + /** + * Legacy `DELETE users/{id}`. + * + * Refuses to delete an admin who has posted ledger entries or changed order + * statuses — those rows reference them, and losing the actor would erase the + * audit trail. Deactivation is offered instead. Legacy deleted regardless. + */ + async remove(id, actorId) { + const u = await this.prisma.adminUser.findUnique({ + where: { id }, + include: { + _count: { select: { postedLedgerEntries: true, orderStatusEvents: true } } + } + }); + if (!u) + throw new common_12.NotFoundException("\u06A9\u0627\u0631\u0628\u0631 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + if (id === actorId) { + throw new common_12.BadRequestException("\u0646\u0645\u06CC\u200C\u062A\u0648\u0627\u0646\u06CC\u062F \u062D\u0633\u0627\u0628 \u06A9\u0627\u0631\u0628\u0631\u06CC \u062E\u0648\u062F\u062A\u0627\u0646 \u0631\u0627 \u062D\u0630\u0641 \u06A9\u0646\u06CC\u062F"); + } + const refs = u._count.postedLedgerEntries + u._count.orderStatusEvents; + if (refs > 0) { + throw new common_12.BadRequestException(`\u062D\u0630\u0641 \u0627\u06CC\u0646 \u06A9\u0627\u0631\u0628\u0631 \u0645\u0645\u06A9\u0646 \u0646\u06CC\u0633\u062A\u060C \u0686\u0648\u0646 ${refs} \u0633\u0646\u062F \u06CC\u0627 \u062A\u063A\u06CC\u06CC\u0631 \u0648\u0636\u0639\u06CC\u062A \u0628\u0647 \u0646\u0627\u0645 \u0627\u0648 \u062B\u0628\u062A \u0634\u062F\u0647 \u0627\u0633\u062A. \u0645\u06CC\u200C\u062A\u0648\u0627\u0646\u06CC\u062F \u063A\u06CC\u0631\u0641\u0639\u0627\u0644\u0634 \u06A9\u0646\u06CC\u062F.`); + } + await this.prisma.adminUser.delete({ where: { id } }); + return { success: true }; + } + // ── User types + the permission matrix ───────────────────────────── + /** Legacy `GET const/__list__ut` — the access-level picker. */ + async listUserTypes() { + const rows = await this.prisma.userType.findMany({ + orderBy: { id: "asc" }, + include: { _count: { select: { adminUsers: true, permissions: true } } } + }); + return rows.map((t) => ({ + id: t.id, + title: t.title, + users_count: t._count.adminUsers, + permissions_count: t._count.permissions + })); + } + /** + * Legacy `POST const` with `{key: "__list__ut", val: "