@lyxa.ai/core 1.4.196 → 1.4.197
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/libraries/event/EventEnums.d.ts +2 -1
- package/dist/libraries/event/EventEnums.js +1 -0
- package/dist/libraries/event/EventEnums.js.map +1 -1
- package/dist/libraries/event/events/sync-products-categories-event.d.ts +8 -0
- package/dist/libraries/event/events/sync-products-categories-event.js +15 -0
- package/dist/libraries/event/events/sync-products-categories-event.js.map +1 -0
- package/dist/libraries/mongo/models/embedded/product-category.model.d.ts +4 -0
- package/dist/libraries/mongo/models/embedded/product-category.model.js +32 -0
- package/dist/libraries/mongo/models/embedded/product-category.model.js.map +1 -0
- package/dist/libraries/mongo/models/product.model.d.ts +3 -0
- package/dist/libraries/mongo/models/product.model.js +11 -0
- package/dist/libraries/mongo/models/product.model.js.map +1 -1
- package/dist/libraries/mongo/models/user-app-section-setting.model.d.ts +3 -0
- package/dist/libraries/mongo/models/user-app-section-setting.model.js +10 -0
- package/dist/libraries/mongo/models/user-app-section-setting.model.js.map +1 -1
- package/dist/libraries/trpc/middlewares/auth.d.ts +1 -1
- package/dist/libraries/trpc/middlewares/createRoleProtectedProcedure.d.ts +1 -1
- package/dist/libraries/trpc/middlewares/phone-verified.d.ts +1 -1
- package/dist/libraries/trpc/middlewares/publicUserDecoder.d.ts +1 -1
- package/dist/types/README.md +1 -1
- package/dist/types/package.json +1 -1
- package/dist/types/utilities/enum.d.ts +2 -1
- package/dist/types/utilities/enum.js +1 -0
- package/dist/types/utilities/enum.js.map +1 -1
- package/dist/types/utilities/validation/common-validation.d.ts +12 -12
- package/dist/utilities/enum.d.ts +2 -1
- package/dist/utilities/enum.js +1 -0
- package/dist/utilities/enum.js.map +1 -1
- package/package.json +1 -1
|
@@ -18,5 +18,6 @@ export declare enum PublishEventEnums {
|
|
|
18
18
|
SYNC_USER_SHOP_PUNCH_MARKETING_HISTORY_CACHE_EVENT = "sync_user_shop_punch_marketing_history_cache_event",
|
|
19
19
|
RIDER_SCORE_EVENT = "rider.score.calculate",
|
|
20
20
|
RIDER_ORDER_COMPLETED_EVENT = "rider_order_completed_event",
|
|
21
|
-
MARKETING_RETURN_PUNCH_COUPON_EVENT = "marketing_return_punch_coupon_event"
|
|
21
|
+
MARKETING_RETURN_PUNCH_COUPON_EVENT = "marketing_return_punch_coupon_event",
|
|
22
|
+
SYNC_ALL_PRODUCTS_PARENT_SUB_CATEGORIES_EVENT = "sync_all_products_parent_sub_categories_event"
|
|
22
23
|
}
|
|
@@ -23,5 +23,6 @@ var PublishEventEnums;
|
|
|
23
23
|
PublishEventEnums["RIDER_SCORE_EVENT"] = "rider.score.calculate";
|
|
24
24
|
PublishEventEnums["RIDER_ORDER_COMPLETED_EVENT"] = "rider_order_completed_event";
|
|
25
25
|
PublishEventEnums["MARKETING_RETURN_PUNCH_COUPON_EVENT"] = "marketing_return_punch_coupon_event";
|
|
26
|
+
PublishEventEnums["SYNC_ALL_PRODUCTS_PARENT_SUB_CATEGORIES_EVENT"] = "sync_all_products_parent_sub_categories_event";
|
|
26
27
|
})(PublishEventEnums || (exports.PublishEventEnums = PublishEventEnums = {}));
|
|
27
28
|
//# sourceMappingURL=EventEnums.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventEnums.js","sourceRoot":"/","sources":["libraries/event/EventEnums.ts"],"names":[],"mappings":";;;AAAA,IAAY,
|
|
1
|
+
{"version":3,"file":"EventEnums.js","sourceRoot":"/","sources":["libraries/event/EventEnums.ts"],"names":[],"mappings":";;;AAAA,IAAY,iBAsBX;AAtBD,WAAY,iBAAiB;IAC5B,4EAAuD,CAAA;IACvD,sEAAiD,CAAA;IACjD,4EAAuD,CAAA;IACvD,sEAAiD,CAAA;IACjD,wGAAmF,CAAA;IACnF,sHAAiG,CAAA;IACjG,oGAA+E,CAAA;IAC/E,sFAAiE,CAAA;IACjE,8FAAyE,CAAA;IACzE,sHAAiG,CAAA;IACjG,4GAAuF,CAAA;IACvF,kFAA6D,CAAA;IAC7D,0GAAqF,CAAA;IACrF,oGAA+E,CAAA;IAC/E,oHAA+F,CAAA;IAC/F,8HAAyG,CAAA;IACzG,8HAAyG,CAAA;IACzG,gEAA2C,CAAA;IAC3C,gFAA2D,CAAA;IAC3D,gGAA2E,CAAA;IAC3E,oHAA+F,CAAA;AAChG,CAAC,EAtBW,iBAAiB,iCAAjB,iBAAiB,QAsB5B","sourcesContent":["export enum PublishEventEnums {\n\tADMIN_ACTIVITY_LOGS_EVENT = 'admin_activity_logs_event',\n\tMESSAGE_RECEIVED_EVENT = 'message_received_event',\n\tTICKET_NOTIFICATION_EVENT = 'ticket_notification_event',\n\tCART_ITEM_UPSERT_EVENT = 'cart_item_upsert_event',\n\tSHOP_ACTIVE_TIMINGS_BATCH_PROCESS_EVENT = 'shop_active_timings_batch_process_event',\n\tMONGO_STREAM_CHANGES_BATCH_PROCESS_SHOPS_EVENT = 'mongo_stream_changes_batch_process_shops_event',\n\tBULK_UPDATE_SHOPS_SEARCH_FIELDS_EVENT = 'bulk_update_shops_search_fields_event',\n\tSOCKET_PUSH_NOTIFICATION_EVENT = 'socket_push_notification_event',\n\tBULK_UPDATE_SHOP_ZONE_STATUS_EVENT = 'bulk_update_shop_zone_status_event',\n\tSYNC_ALL_PRODUCTS_PRODUCT_MARKETING_INFO_EVENT = 'sync_all_products_product_marketing_info_event',\n\tSYNC_ALL_SHOPS_AVG_PREPARATION_TIME_EVENT = 'sync_all_shops_avg_preperation_time_event',\n\tSYNC_SINGLE_SHOP_CACHE_EVENT = 'sync_single_shop_cache_event',\n\tSYNC_SINGLE_SHOP_ORDER_AGAIN_CACHE_EVENT = 'sync_single_shop_order_again_cache_event',\n\tSYNC_SINGLE_SHOP_SECTIONS_CACHE_EVENT = 'sync_single_shop_sections_cache_event',\n\tSYNC_ALL_CUSTOMIZED_SHOP_SECTIONS_CACHE_EVENT = 'sync_all_customized_shop_sections_cache_event',\n\tSYNC_ALL_USERS_PUNCH_MARKETING_HISTORY_CACHE_EVENT = 'sync_all_users_punch_marketing_history_cache_event',\n\tSYNC_USER_SHOP_PUNCH_MARKETING_HISTORY_CACHE_EVENT = 'sync_user_shop_punch_marketing_history_cache_event',\n\tRIDER_SCORE_EVENT = 'rider.score.calculate',\n\tRIDER_ORDER_COMPLETED_EVENT = 'rider_order_completed_event',\n\tMARKETING_RETURN_PUNCH_COUPON_EVENT = 'marketing_return_punch_coupon_event',\n\tSYNC_ALL_PRODUCTS_PARENT_SUB_CATEGORIES_EVENT = 'sync_all_products_parent_sub_categories_event',\n}\n \n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BaseEvent } from '../BaseEvent';
|
|
2
|
+
import { DTO } from '../../../utilities/validation/global-validation';
|
|
3
|
+
declare const SyncAllProductsCategoriesSchema: import("zod").ZodObject<{}, "strict", import("zod").ZodTypeAny, {}, {}>;
|
|
4
|
+
export type SyncAllProductsCategoriesDTO = DTO<typeof SyncAllProductsCategoriesSchema>;
|
|
5
|
+
export declare class SyncAllProductsParentSubCategoriesEvent extends BaseEvent<Record<string, unknown>> {
|
|
6
|
+
constructor(payload: SyncAllProductsCategoriesDTO);
|
|
7
|
+
}
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SyncAllProductsParentSubCategoriesEvent = void 0;
|
|
4
|
+
const BaseEvent_1 = require("../BaseEvent");
|
|
5
|
+
const EventEnums_1 = require("../EventEnums");
|
|
6
|
+
const global_validation_1 = require("../../../utilities/validation/global-validation");
|
|
7
|
+
const schemaBuilder = (0, global_validation_1.createSchemaBuilder)({});
|
|
8
|
+
const { BaseSchema: SyncAllProductsCategoriesSchema } = schemaBuilder.getAllSchemas({ createdAt: true });
|
|
9
|
+
class SyncAllProductsParentSubCategoriesEvent extends BaseEvent_1.BaseEvent {
|
|
10
|
+
constructor(payload) {
|
|
11
|
+
super(EventEnums_1.PublishEventEnums.SYNC_ALL_PRODUCTS_PARENT_SUB_CATEGORIES_EVENT, payload);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.SyncAllProductsParentSubCategoriesEvent = SyncAllProductsParentSubCategoriesEvent;
|
|
15
|
+
//# sourceMappingURL=sync-products-categories-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-products-categories-event.js","sourceRoot":"/","sources":["libraries/event/events/sync-products-categories-event.ts"],"names":[],"mappings":";;;AAAA,4CAAyC;AACzC,8CAAkD;AAClD,uFAA2F;AAE3F,MAAM,aAAa,GAAG,IAAA,uCAAmB,EAAC,EAAE,CAAC,CAAC;AAC9C,MAAM,EAAE,UAAU,EAAE,+BAA+B,EAAE,GAAG,aAAa,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAIzG,MAAa,uCAAwC,SAAQ,qBAAkC;IAC9F,YAAY,OAAqC;QAChD,KAAK,CACJ,8BAAiB,CAAC,6CAA6C,EAC/D,OAAkC,CAClC,CAAC;IACH,CAAC;CACD;AAPD,0FAOC","sourcesContent":["import { BaseEvent } from '../BaseEvent';\nimport { PublishEventEnums } from '../EventEnums';\nimport { createSchemaBuilder, DTO } from '../../../utilities/validation/global-validation';\n\nconst schemaBuilder = createSchemaBuilder({});\nconst { BaseSchema: SyncAllProductsCategoriesSchema } = schemaBuilder.getAllSchemas({ createdAt: true });\n\nexport type SyncAllProductsCategoriesDTO = DTO<typeof SyncAllProductsCategoriesSchema>;\n\nexport class SyncAllProductsParentSubCategoriesEvent extends BaseEvent<Record<string, unknown>> {\n\tconstructor(payload: SyncAllProductsCategoriesDTO) {\n\t\tsuper(\n\t\t\tPublishEventEnums.SYNC_ALL_PRODUCTS_PARENT_SUB_CATEGORIES_EVENT,\n\t\t\tpayload as Record<string, unknown>\n\t\t);\n\t}\n}\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ProductCategory = void 0;
|
|
13
|
+
const typegoose_1 = require("@typegoose/typegoose");
|
|
14
|
+
let ProductCategory = class ProductCategory {
|
|
15
|
+
categoryId;
|
|
16
|
+
name;
|
|
17
|
+
};
|
|
18
|
+
exports.ProductCategory = ProductCategory;
|
|
19
|
+
__decorate([
|
|
20
|
+
(0, typegoose_1.prop)({ type: String }),
|
|
21
|
+
__metadata("design:type", String)
|
|
22
|
+
], ProductCategory.prototype, "categoryId", void 0);
|
|
23
|
+
__decorate([
|
|
24
|
+
(0, typegoose_1.prop)({ type: String }),
|
|
25
|
+
__metadata("design:type", String)
|
|
26
|
+
], ProductCategory.prototype, "name", void 0);
|
|
27
|
+
exports.ProductCategory = ProductCategory = __decorate([
|
|
28
|
+
(0, typegoose_1.modelOptions)({
|
|
29
|
+
schemaOptions: { _id: false },
|
|
30
|
+
})
|
|
31
|
+
], ProductCategory);
|
|
32
|
+
//# sourceMappingURL=product-category.model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"product-category.model.js","sourceRoot":"/","sources":["libraries/mongo/models/embedded/product-category.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAA0D;AAKnD,IAAM,eAAe,GAArB,MAAM,eAAe;IAEpB,UAAU,CAAU;IAGpB,IAAI,CAAU;CACrB,CAAA;AANY,0CAAe;AAEpB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;mDACI;AAGpB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;6CACF;0BALT,eAAe;IAH3B,IAAA,wBAAY,EAAC;QACb,aAAa,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;KAC7B,CAAC;GACW,eAAe,CAM3B","sourcesContent":["import { modelOptions, prop } from '@typegoose/typegoose';\n\n@modelOptions({\n\tschemaOptions: { _id: false },\n})\nexport class ProductCategory {\n\t@prop({ type: String })\n\tpublic categoryId!: string;\n\n\t@prop({ type: String })\n\tpublic name!: string;\n}\n"]}
|
|
@@ -10,6 +10,7 @@ import { ShopCategory } from './shop-category.model';
|
|
|
10
10
|
import { ProductMarketing } from '.';
|
|
11
11
|
import { PreparingTime } from './embedded/preparing-time.model';
|
|
12
12
|
import { ProductMarketingInfo } from './embedded/product-marketing-info.model';
|
|
13
|
+
import { ProductCategory } from './embedded/product-category.model';
|
|
13
14
|
export declare class Product extends TimeStamps {
|
|
14
15
|
productId: string;
|
|
15
16
|
shop: Ref<Shop>;
|
|
@@ -49,4 +50,6 @@ export declare class Product extends TimeStamps {
|
|
|
49
50
|
productMarketing?: Ref<ProductMarketing>;
|
|
50
51
|
productMarketingInfo?: ProductMarketingInfo[];
|
|
51
52
|
externalRefs?: ExternalRef[];
|
|
53
|
+
parentCategory?: ProductCategory;
|
|
54
|
+
subCategory?: ProductCategory;
|
|
52
55
|
}
|
|
@@ -26,6 +26,7 @@ const normalize_field_plugin_1 = require("../plugins/normalize-field.plugin");
|
|
|
26
26
|
const id_generator_1 = require("../../../utilities/id-generator");
|
|
27
27
|
const preparing_time_model_1 = require("./embedded/preparing-time.model");
|
|
28
28
|
const product_marketing_info_model_1 = require("./embedded/product-marketing-info.model");
|
|
29
|
+
const product_category_model_1 = require("./embedded/product-category.model");
|
|
29
30
|
let Product = class Product extends defaultClasses_1.TimeStamps {
|
|
30
31
|
productId;
|
|
31
32
|
shop;
|
|
@@ -65,6 +66,8 @@ let Product = class Product extends defaultClasses_1.TimeStamps {
|
|
|
65
66
|
productMarketing;
|
|
66
67
|
productMarketingInfo;
|
|
67
68
|
externalRefs;
|
|
69
|
+
parentCategory;
|
|
70
|
+
subCategory;
|
|
68
71
|
};
|
|
69
72
|
exports.Product = Product;
|
|
70
73
|
__decorate([
|
|
@@ -224,6 +227,14 @@ __decorate([
|
|
|
224
227
|
(0, typegoose_1.prop)({ type: () => [external_ref_model_1.ExternalRef], default: [] }),
|
|
225
228
|
__metadata("design:type", Array)
|
|
226
229
|
], Product.prototype, "externalRefs", void 0);
|
|
230
|
+
__decorate([
|
|
231
|
+
(0, typegoose_1.prop)({ type: product_category_model_1.ProductCategory }),
|
|
232
|
+
__metadata("design:type", product_category_model_1.ProductCategory)
|
|
233
|
+
], Product.prototype, "parentCategory", void 0);
|
|
234
|
+
__decorate([
|
|
235
|
+
(0, typegoose_1.prop)({ type: product_category_model_1.ProductCategory }),
|
|
236
|
+
__metadata("design:type", product_category_model_1.ProductCategory)
|
|
237
|
+
], Product.prototype, "subCategory", void 0);
|
|
227
238
|
exports.Product = Product = __decorate([
|
|
228
239
|
(0, typegoose_1.modelOptions)({
|
|
229
240
|
schemaOptions: { collection: 'products', toJSON: { virtuals: true }, toObject: { virtuals: true } },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"product.model.js","sourceRoot":"/","sources":["libraries/mongo/models/product.model.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomBytes } from 'crypto';\nimport { Index, modelOptions, plugin, pre, prop, Ref } from '@typegoose/typegoose';\nimport { TimeStamps } from '@typegoose/typegoose/lib/defaultClasses';\nimport {\n\tCounterType,\n\tItemType,\n\tPriceOption,\n\tProductDietaryType,\n\tProductType,\n\tStatus,\n} from '../../../utilities/enum';\nimport { ProductNutrition } from './embedded/product-nutrition.model';\nimport { ExternalRef } from './embedded/external-ref.model';\nimport { Shop } from './shop.model';\nimport { PriceBreakdown } from './embedded/price-breakdown.model';\nimport { AttributeMap } from './embedded/attribute-map.model';\nimport { ShopCategory } from './shop-category.model';\nimport { BannerModel, CounterModel, ProductMarketing, ProductModel } from '.';\nimport { handlePreSaveForSorting } from '../utilities/sorting-order.hooks';\nimport { normalizeFieldPlugin } from '../plugins/normalize-field.plugin';\nimport { generateId } from '../../../utilities/id-generator';\nimport { PreparingTime } from './embedded/preparing-time.model';\nimport mongoose from 'mongoose';\nimport { ProductMarketingInfo } from './embedded/product-marketing-info.model';\n\n@modelOptions({\n\tschemaOptions: { collection: 'products', toJSON: { virtuals: true }, toObject: { virtuals: true } },\n})\n@Index(\n\t{ nameNormalized: 1, shop: 1, shopCategory: 1 },\n\t{ unique: true, partialFilterExpression: { deletedAt: null } }\n)\n@Index({ shop: 1, shopCategory: 1 }, { partialFilterExpression: { deletedAt: null } })\n@Index({ shop: 1, isStockEnabled: 1, stockQuantity: 1 }, { partialFilterExpression: { deletedAt: null } })\n@Index({ nameNormalized: 1 }, { partialFilterExpression: { deletedAt: null } })\n@Index(\n\t{ stockAvailableAt: 1 },\n\t{ partialFilterExpression: { deletedAt: null, stockAvailableAt: { $exists: true, $ne: null } } }\n)\n@pre<Product>('save', async function (next) {\n\t// Set sortingOrder\n\tawait handlePreSaveForSorting.call(this, ProductModel, {\n\t\tshop: this.shop,\n\t\tshopCategory: this.shopCategory,\n\t});\n\n\tnext();\n})\n@pre<Product>('save', async function () {\n\tif (this.isNew) {\n\t\tthis.productId = await generateId(CounterModel, CounterType.ITEM);\n\t}\n})\n@pre<Product>('save', function (next) {\n\tensureBreakdownIds(this.priceBreakdowns);\n\tnext();\n})\n@pre<mongoose.Query<Product, Product>>(['findOneAndUpdate', 'updateOne', 'updateMany'], function (next) {\n\ttry {\n\t\tconst update = this.getUpdate() as any;\n\t\tif (!update) return next();\n\n\t\t// handles direct and $set\n\t\tif (update.priceBreakdowns) ensureBreakdownIds(update.priceBreakdowns);\n\t\tif (update.$set?.priceBreakdowns) ensureBreakdownIds(update.$set.priceBreakdowns);\n\n\t\t// handles $push\n\t\tconst pushed = update.$push?.priceBreakdowns;\n\t\tif (pushed) ensureBreakdownIds(Array.isArray(pushed.$each) ? pushed.$each : [pushed]);\n\n\t\t// handles $addToSet\n\t\tconst addedToSet = update.$addToSet?.priceBreakdowns;\n\t\tif (addedToSet) ensureBreakdownIds(Array.isArray(addedToSet.$each) ? addedToSet.$each : [addedToSet]);\n\n\t\tnext();\n\t} catch (err) {\n\t\tnext(err as Error);\n\t}\n})\n@pre<Product>('save', async function (next) {\n\tif (this.isStockEnabled && this.stockQuantity !== undefined) {\n\t\tif (this.stockQuantity < 1) {\n\t\t\tawait deactivateBannerForOutOfStockProduct(this._id);\n\t\t}\n\t}\n\tnext();\n})\n@plugin(normalizeFieldPlugin, { field: 'name' })\nexport class Product extends TimeStamps {\n\t@prop({ type: String, unique: true, index: true })\n\tpublic productId: string;\n\n\t@prop({ required: true, ref: () => Shop })\n\tpublic shop!: Ref<Shop>;\n\n\t@prop({ required: true, type: String, trim: true, maxlength: 100 })\n\tpublic name!: string;\n\n\t@prop({ type: String, trim: true, lowercase: true, select: false })\n\tpublic nameNormalized?: string;\n\n\t@prop({ type: String, trim: true, maxlength: 50 })\n\tpublic barcode?: string;\n\n\t@prop({ required: true, ref: () => ShopCategory })\n\tpublic shopCategory!: Ref<ShopCategory>;\n\n\t@prop({ required: true, type: String, enum: ItemType })\n\tpublic itemType!: ItemType;\n\n\t@prop({ type: String, enum: ProductType })\n\tpublic productType?: ProductType;\n\n\t@prop({ type: String })\n\tpublic logo?: string;\n\n\t@prop({ type: [String], default: [] })\n\tpublic images?: string[];\n\n\t@prop({ type: String, enum: PriceOption, default: PriceOption.SINGLE_PRICE })\n\tpublic priceOption?: PriceOption;\n\n\t@prop({ required: true, type: [PriceBreakdown] })\n\tpublic priceBreakdowns?: PriceBreakdown[];\n\n\t@prop({ type: String, maxlength: 500 })\n\tpublic description?: string;\n\n\t@prop({ type: [AttributeMap], default: [] })\n\tpublic attributeMaps?: AttributeMap[];\n\n\t@prop({ ref: () => Product, default: [] })\n\tpublic addons?: Ref<Product>[];\n\n\t@prop({ type: Boolean, default: false })\n\tpublic isNutritionEnabled?: boolean;\n\n\t@prop({ type: Number, min: 0 })\n\tpublic nutritionPackSize?: number;\n\n\t@prop({ type: String })\n\tpublic nutritionPackSizeUnit?: string;\n\n\t@prop({ type: String })\n\tpublic sku?: string;\n\n\t@prop({ type: [ProductNutrition], default: [] })\n\tpublic nutritions?: ProductNutrition[];\n\n\t@prop({ type: [String], enum: ProductDietaryType, default: [] })\n\tpublic dietaryTypes?: ProductDietaryType[];\n\n\t@prop({ type: Number, min: -9999, max: 9999 })\n\tpublic storedTemperature?: number;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic isStockEnabled?: boolean;\n\n\t@prop({ type: Number, max: 999999999 }) // isStockEnabled: true and stockQuantity < 1 means out of stock\n\tpublic stockQuantity?: number;\n\n\t/**\n\t * Optional scheduled restore timestamp.\n\t * When set along with stockQuantity < 1, the system will automatically\n\t * set the item back to in-stock once this datetime is reached.\n\t * Cleared when the item is manually restored or the schedule is cancelled.\n\t */\n\t@prop({ type: Date })\n\tpublic stockAvailableAt?: Date;\n\n\t@prop({ type: String, enum: Status })\n\tpublic statusBeforeOutOfStock?: Status;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic isDrinkIncluded?: boolean;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic isLargeItem?: boolean;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic isPreOrderEnabled?: boolean;\n\n\t// this field needed when pre-order enabled\n\t@prop({ type: PreparingTime })\n\tpublic preparingTime?: PreparingTime;\n\n\t@prop({ type: Number, min: 0, max: 999999999 }) // 0 means, it is disable\n\tpublic orderQuantityLimit?: number;\n\n\t@prop({ type: String, maxlength: 250 })\n\tpublic note?: string;\n\n\t@prop({ type: String, enum: Status, default: Status.ACTIVE })\n\tpublic status?: Status;\n\n\t@prop({ type: Number })\n\tpublic sortingOrder?: number;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic isHidden?: boolean;\n\n\t@prop({\n\t\tref: () => ProductMarketing,\n\t\tforeignField: 'product',\n\t\tlocalField: '_id',\n\t\tjustOne: true,\n\t})\n\tpublic productMarketing?: Ref<ProductMarketing>; // Virtual reference to ProductMarketing\n\n\t@prop({ type: () => [ProductMarketingInfo], default: [] })\n\tpublic productMarketingInfo?: ProductMarketingInfo[]; // precomputed product marketing info for efficient query\n\n\t@prop({ type: () => [ExternalRef], default: [] })\n\tpublic externalRefs?: ExternalRef[];\n}\n\nfunction ensureBreakdownIds(breakdowns: any[] | undefined) {\n\tif (!breakdowns?.length) return;\n\tfor (const breakdown of breakdowns) {\n\t\tif (!breakdown.uid) breakdown.uid = randomBytes(8).toString('hex');\n\t}\n}\n\nasync function deactivateBannerForOutOfStockProduct(productId: mongoose.Types.ObjectId) {\n\tawait BannerModel.updateMany(\n\t\t{\n\t\t\tproduct: productId,\n\t\t\tstatus: Status.ACTIVE,\n\t\t\tdeletedAt: null,\n\t\t},\n\t\t{\n\t\t\t$set: { status: Status.INACTIVE },\n\t\t}\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"product.model.js","sourceRoot":"/","sources":["libraries/mongo/models/product.model.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomBytes } from 'crypto';\nimport { Index, modelOptions, plugin, pre, prop, Ref } from '@typegoose/typegoose';\nimport { TimeStamps } from '@typegoose/typegoose/lib/defaultClasses';\nimport {\n\tCounterType,\n\tItemType,\n\tPriceOption,\n\tProductDietaryType,\n\tProductType,\n\tStatus,\n} from '../../../utilities/enum';\nimport { ProductNutrition } from './embedded/product-nutrition.model';\nimport { ExternalRef } from './embedded/external-ref.model';\nimport { Shop } from './shop.model';\nimport { PriceBreakdown } from './embedded/price-breakdown.model';\nimport { AttributeMap } from './embedded/attribute-map.model';\nimport { ShopCategory } from './shop-category.model';\nimport { BannerModel, CounterModel, ProductMarketing, ProductModel } from '.';\nimport { handlePreSaveForSorting } from '../utilities/sorting-order.hooks';\nimport { normalizeFieldPlugin } from '../plugins/normalize-field.plugin';\nimport { generateId } from '../../../utilities/id-generator';\nimport { PreparingTime } from './embedded/preparing-time.model';\nimport mongoose from 'mongoose';\nimport { ProductMarketingInfo } from './embedded/product-marketing-info.model';\nimport { ProductCategory } from './embedded/product-category.model';\n\n@modelOptions({\n\tschemaOptions: { collection: 'products', toJSON: { virtuals: true }, toObject: { virtuals: true } },\n})\n@Index(\n\t{ nameNormalized: 1, shop: 1, shopCategory: 1 },\n\t{ unique: true, partialFilterExpression: { deletedAt: null } }\n)\n@Index({ shop: 1, shopCategory: 1 }, { partialFilterExpression: { deletedAt: null } })\n@Index({ shop: 1, isStockEnabled: 1, stockQuantity: 1 }, { partialFilterExpression: { deletedAt: null } })\n@Index({ nameNormalized: 1 }, { partialFilterExpression: { deletedAt: null } })\n@Index(\n\t{ stockAvailableAt: 1 },\n\t{ partialFilterExpression: { deletedAt: null, stockAvailableAt: { $exists: true, $ne: null } } }\n)\n@pre<Product>('save', async function (next) {\n\t// Set sortingOrder\n\tawait handlePreSaveForSorting.call(this, ProductModel, {\n\t\tshop: this.shop,\n\t\tshopCategory: this.shopCategory,\n\t});\n\n\tnext();\n})\n@pre<Product>('save', async function () {\n\tif (this.isNew) {\n\t\tthis.productId = await generateId(CounterModel, CounterType.ITEM);\n\t}\n})\n@pre<Product>('save', function (next) {\n\tensureBreakdownIds(this.priceBreakdowns);\n\tnext();\n})\n@pre<mongoose.Query<Product, Product>>(['findOneAndUpdate', 'updateOne', 'updateMany'], function (next) {\n\ttry {\n\t\tconst update = this.getUpdate() as any;\n\t\tif (!update) return next();\n\n\t\t// handles direct and $set\n\t\tif (update.priceBreakdowns) ensureBreakdownIds(update.priceBreakdowns);\n\t\tif (update.$set?.priceBreakdowns) ensureBreakdownIds(update.$set.priceBreakdowns);\n\n\t\t// handles $push\n\t\tconst pushed = update.$push?.priceBreakdowns;\n\t\tif (pushed) ensureBreakdownIds(Array.isArray(pushed.$each) ? pushed.$each : [pushed]);\n\n\t\t// handles $addToSet\n\t\tconst addedToSet = update.$addToSet?.priceBreakdowns;\n\t\tif (addedToSet) ensureBreakdownIds(Array.isArray(addedToSet.$each) ? addedToSet.$each : [addedToSet]);\n\n\t\tnext();\n\t} catch (err) {\n\t\tnext(err as Error);\n\t}\n})\n@pre<Product>('save', async function (next) {\n\tif (this.isStockEnabled && this.stockQuantity !== undefined) {\n\t\tif (this.stockQuantity < 1) {\n\t\t\tawait deactivateBannerForOutOfStockProduct(this._id);\n\t\t}\n\t}\n\tnext();\n})\n@plugin(normalizeFieldPlugin, { field: 'name' })\nexport class Product extends TimeStamps {\n\t@prop({ type: String, unique: true, index: true })\n\tpublic productId: string;\n\n\t@prop({ required: true, ref: () => Shop })\n\tpublic shop!: Ref<Shop>;\n\n\t@prop({ required: true, type: String, trim: true, maxlength: 100 })\n\tpublic name!: string;\n\n\t@prop({ type: String, trim: true, lowercase: true, select: false })\n\tpublic nameNormalized?: string;\n\n\t@prop({ type: String, trim: true, maxlength: 50 })\n\tpublic barcode?: string;\n\n\t@prop({ required: true, ref: () => ShopCategory })\n\tpublic shopCategory!: Ref<ShopCategory>;\n\n\t@prop({ required: true, type: String, enum: ItemType })\n\tpublic itemType!: ItemType;\n\n\t@prop({ type: String, enum: ProductType })\n\tpublic productType?: ProductType;\n\n\t@prop({ type: String })\n\tpublic logo?: string;\n\n\t@prop({ type: [String], default: [] })\n\tpublic images?: string[];\n\n\t@prop({ type: String, enum: PriceOption, default: PriceOption.SINGLE_PRICE })\n\tpublic priceOption?: PriceOption;\n\n\t@prop({ required: true, type: [PriceBreakdown] })\n\tpublic priceBreakdowns?: PriceBreakdown[];\n\n\t@prop({ type: String, maxlength: 500 })\n\tpublic description?: string;\n\n\t@prop({ type: [AttributeMap], default: [] })\n\tpublic attributeMaps?: AttributeMap[];\n\n\t@prop({ ref: () => Product, default: [] })\n\tpublic addons?: Ref<Product>[];\n\n\t@prop({ type: Boolean, default: false })\n\tpublic isNutritionEnabled?: boolean;\n\n\t@prop({ type: Number, min: 0 })\n\tpublic nutritionPackSize?: number;\n\n\t@prop({ type: String })\n\tpublic nutritionPackSizeUnit?: string;\n\n\t@prop({ type: String })\n\tpublic sku?: string;\n\n\t@prop({ type: [ProductNutrition], default: [] })\n\tpublic nutritions?: ProductNutrition[];\n\n\t@prop({ type: [String], enum: ProductDietaryType, default: [] })\n\tpublic dietaryTypes?: ProductDietaryType[];\n\n\t@prop({ type: Number, min: -9999, max: 9999 })\n\tpublic storedTemperature?: number;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic isStockEnabled?: boolean;\n\n\t@prop({ type: Number, max: 999999999 }) // isStockEnabled: true and stockQuantity < 1 means out of stock\n\tpublic stockQuantity?: number;\n\n\t/**\n\t * Optional scheduled restore timestamp.\n\t * When set along with stockQuantity < 1, the system will automatically\n\t * set the item back to in-stock once this datetime is reached.\n\t * Cleared when the item is manually restored or the schedule is cancelled.\n\t */\n\t@prop({ type: Date })\n\tpublic stockAvailableAt?: Date;\n\n\t@prop({ type: String, enum: Status })\n\tpublic statusBeforeOutOfStock?: Status;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic isDrinkIncluded?: boolean;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic isLargeItem?: boolean;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic isPreOrderEnabled?: boolean;\n\n\t// this field needed when pre-order enabled\n\t@prop({ type: PreparingTime })\n\tpublic preparingTime?: PreparingTime;\n\n\t@prop({ type: Number, min: 0, max: 999999999 }) // 0 means, it is disable\n\tpublic orderQuantityLimit?: number;\n\n\t@prop({ type: String, maxlength: 250 })\n\tpublic note?: string;\n\n\t@prop({ type: String, enum: Status, default: Status.ACTIVE })\n\tpublic status?: Status;\n\n\t@prop({ type: Number })\n\tpublic sortingOrder?: number;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic isHidden?: boolean;\n\n\t@prop({\n\t\tref: () => ProductMarketing,\n\t\tforeignField: 'product',\n\t\tlocalField: '_id',\n\t\tjustOne: true,\n\t})\n\tpublic productMarketing?: Ref<ProductMarketing>; // Virtual reference to ProductMarketing\n\n\t@prop({ type: () => [ProductMarketingInfo], default: [] })\n\tpublic productMarketingInfo?: ProductMarketingInfo[]; // precomputed product marketing info for efficient query\n\n\t@prop({ type: () => [ExternalRef], default: [] })\n\tpublic externalRefs?: ExternalRef[];\n\n\t@prop({ type: ProductCategory })\n\tpublic parentCategory?: ProductCategory;\n\n\t@prop({ type: ProductCategory })\n\tpublic subCategory?: ProductCategory;\n}\n\nfunction ensureBreakdownIds(breakdowns: any[] | undefined) {\n\tif (!breakdowns?.length) return;\n\tfor (const breakdown of breakdowns) {\n\t\tif (!breakdown.uid) breakdown.uid = randomBytes(8).toString('hex');\n\t}\n}\n\nasync function deactivateBannerForOutOfStockProduct(productId: mongoose.Types.ObjectId) {\n\tawait BannerModel.updateMany(\n\t\t{\n\t\t\tproduct: productId,\n\t\t\tstatus: Status.ACTIVE,\n\t\t\tdeletedAt: null,\n\t\t},\n\t\t{\n\t\t\t$set: { status: Status.INACTIVE },\n\t\t}\n\t);\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Ref } from '@typegoose/typegoose';
|
|
2
2
|
import { TimeStamps } from '@typegoose/typegoose/lib/defaultClasses';
|
|
3
3
|
import { Status, UserAppSectionItemType, UserAppSectionType } from '../../../utilities/enum';
|
|
4
|
+
import { ServicePackage, Vendor } from '.';
|
|
4
5
|
import { Shop } from './shop.model';
|
|
5
6
|
import { Product } from './product.model';
|
|
6
7
|
import { Zone } from './zone.model';
|
|
@@ -12,5 +13,7 @@ export declare class UserAppSectionSetting extends TimeStamps {
|
|
|
12
13
|
sortingOrder?: number;
|
|
13
14
|
customizedShops?: Ref<Shop>[];
|
|
14
15
|
customizedItems?: Ref<Product>[];
|
|
16
|
+
customizedVendors?: Ref<Vendor>[];
|
|
17
|
+
customizedServicePackages?: Ref<ServicePackage>[];
|
|
15
18
|
visibleZones?: Ref<Zone>[];
|
|
16
19
|
}
|
|
@@ -26,6 +26,8 @@ let UserAppSectionSetting = class UserAppSectionSetting extends defaultClasses_1
|
|
|
26
26
|
sortingOrder;
|
|
27
27
|
customizedShops;
|
|
28
28
|
customizedItems;
|
|
29
|
+
customizedVendors;
|
|
30
|
+
customizedServicePackages;
|
|
29
31
|
visibleZones;
|
|
30
32
|
};
|
|
31
33
|
exports.UserAppSectionSetting = UserAppSectionSetting;
|
|
@@ -57,6 +59,14 @@ __decorate([
|
|
|
57
59
|
(0, typegoose_1.prop)({ ref: () => product_model_1.Product }),
|
|
58
60
|
__metadata("design:type", Array)
|
|
59
61
|
], UserAppSectionSetting.prototype, "customizedItems", void 0);
|
|
62
|
+
__decorate([
|
|
63
|
+
(0, typegoose_1.prop)({ ref: () => _1.Vendor }),
|
|
64
|
+
__metadata("design:type", Array)
|
|
65
|
+
], UserAppSectionSetting.prototype, "customizedVendors", void 0);
|
|
66
|
+
__decorate([
|
|
67
|
+
(0, typegoose_1.prop)({ ref: () => _1.ServicePackage }),
|
|
68
|
+
__metadata("design:type", Array)
|
|
69
|
+
], UserAppSectionSetting.prototype, "customizedServicePackages", void 0);
|
|
60
70
|
__decorate([
|
|
61
71
|
(0, typegoose_1.prop)({ ref: () => zone_model_1.Zone }),
|
|
62
72
|
__metadata("design:type", Array)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-app-section-setting.model.js","sourceRoot":"/","sources":["libraries/mongo/models/user-app-section-setting.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAqF;AACrF,4EAAqE;AACrE,kDAA6F;AAC7F,
|
|
1
|
+
{"version":3,"file":"user-app-section-setting.model.js","sourceRoot":"/","sources":["libraries/mongo/models/user-app-section-setting.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAqF;AACrF,4EAAqE;AACrE,kDAA6F;AAC7F,wBAAuE;AAEvE,0EAG0C;AAC1C,6CAAoC;AACpC,mDAA0C;AAC1C,6CAAoC;AAoB7B,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,2BAAU;IAE7C,QAAQ,CAA0B;IAGlC,OAAO,CAAsB;IAG7B,KAAK,CAAU;IAGf,MAAM,CAAU;IAGhB,YAAY,CAAU;IAGtB,eAAe,CAAe;IAG9B,eAAe,CAAkB;IAGjC,iBAAiB,CAAiB;IAGlC,yBAAyB,CAAyB;IAGlD,YAAY,CAAe;CAClC,CAAA;AA9BY,sDAAqB;AAE1B;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAAsB,EAAE,CAAC;;uDAC5B;AAGlC;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAkB,EAAE,CAAC;;sDAC7B;AAG7B;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;oDACjB;AAGf;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAM,EAAE,OAAO,EAAE,aAAM,CAAC,MAAM,EAAE,CAAC;;qDACtC;AAGhB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;2DACM;AAGtB;IADN,IAAA,gBAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,iBAAI,EAAE,CAAC;;8DACW;AAG9B;IADN,IAAA,gBAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,uBAAO,EAAE,CAAC;;8DACW;AAGjC;IADN,IAAA,gBAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,SAAM,EAAE,CAAC;;gEACa;AAGlC;IADN,IAAA,gBAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,iBAAc,EAAE,CAAC;;wEACqB;AAGlD;IADN,IAAA,gBAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,iBAAI,EAAE,CAAC;;2DACQ;gCA7BtB,qBAAqB;IAlBjC,IAAA,wBAAY,EAAC;QACb,aAAa,EAAE;YACd,UAAU,EAAE,uBAAuB;SACnC;KACD,CAAC;IACD,IAAA,eAAG,EAAwB,MAAM,EAAE,KAAK,WAAW,IAAI;QACvD,MAAM,uDAAiC,CAAC,IAAI,CAAC,IAAI,EAAE,6BAA0B,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE5G,IAAI,EAAE,CAAC;IACR,CAAC,CAAC;IACD,IAAA,eAAG,EACH,kBAAkB,EAClB,KAAK,WAAoD,IAAI;QAC5D,MAAM,yDAAmC,CAAC,IAAI,CAAC,IAAI,EAAE,6BAA0B,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAE/F,IAAI,EAAE,CAAC;IACR,CAAC,CACD;GACY,qBAAqB,CA8BjC","sourcesContent":["import { Index, modelOptions, pre, prop, Ref, Severity } from '@typegoose/typegoose';\nimport { TimeStamps } from '@typegoose/typegoose/lib/defaultClasses';\nimport { Status, UserAppSectionItemType, UserAppSectionType } from '../../../utilities/enum';\nimport { ServicePackage, UserAppSectionSettingModel, Vendor } from '.';\nimport { Query } from 'mongoose';\nimport {\n\thandlePreSaveForSortingWithStatus,\n\thandlePreUpdateForSortingWithStatus,\n} from '../utilities/sorting-order.hooks';\nimport { Shop } from './shop.model';\nimport { Product } from './product.model';\nimport { Zone } from './zone.model';\n\n@modelOptions({\n\tschemaOptions: {\n\t\tcollection: 'userAppSectionSetting',\n\t},\n})\n@pre<UserAppSectionSetting>('save', async function (next) {\n\tawait handlePreSaveForSortingWithStatus.call(this, UserAppSectionSettingModel, { itemType: this.itemType });\n\n\tnext();\n})\n@pre<UserAppSectionSetting>(\n\t'findOneAndUpdate',\n\tasync function (this: Query<any, UserAppSectionSetting>, next) {\n\t\tawait handlePreUpdateForSortingWithStatus.call(this, UserAppSectionSettingModel, ['itemType']);\n\n\t\tnext();\n\t}\n)\nexport class UserAppSectionSetting extends TimeStamps {\n\t@prop({ required: true, type: String, enum: UserAppSectionItemType })\n\tpublic itemType!: UserAppSectionItemType;\n\n\t@prop({ required: true, type: String, enum: UserAppSectionType })\n\tpublic section!: UserAppSectionType;\n\n\t@prop({ required: true, type: String })\n\tpublic alias!: string;\n\n\t@prop({ type: String, enum: Status, default: Status.ACTIVE })\n\tpublic status?: Status;\n\n\t@prop({ type: Number })\n\tpublic sortingOrder?: number;\n\n\t@prop({ ref: () => Shop })\n\tpublic customizedShops?: Ref<Shop>[];\n\n\t@prop({ ref: () => Product })\n\tpublic customizedItems?: Ref<Product>[];\n\n\t@prop({ ref: () => Vendor })\n\tpublic customizedVendors?: Ref<Vendor>[];\n\n\t@prop({ ref: () => ServicePackage })\n\tpublic customizedServicePackages?: Ref<ServicePackage>[];\n\n\t@prop({ ref: () => Zone })\n\tpublic visibleZones?: Ref<Zone>[];\n}\n"]}
|
|
@@ -5,9 +5,9 @@ interface AuthOptions {
|
|
|
5
5
|
autoRefresh?: boolean;
|
|
6
6
|
}
|
|
7
7
|
export declare function createAuthenticatedProcedure(options: AuthOptions): import("@trpc/server").TRPCProcedureBuilder<import("../context").LyxaHTTPContext, object, {
|
|
8
|
+
req: import("http").IncomingMessage;
|
|
8
9
|
res: import("http").ServerResponse<import("http").IncomingMessage>;
|
|
9
10
|
tokenType: TokenType | undefined;
|
|
10
|
-
req: import("http").IncomingMessage;
|
|
11
11
|
requestId: string | undefined;
|
|
12
12
|
entity: import("../context").EntityContext | undefined;
|
|
13
13
|
usedRefreshToken: boolean | undefined;
|
|
@@ -4,9 +4,9 @@ interface RoleProtectedOptions {
|
|
|
4
4
|
allowedRoles: string[];
|
|
5
5
|
}
|
|
6
6
|
export declare function createRoleProtectedProcedure(options: RoleProtectedOptions): import("@trpc/server").TRPCProcedureBuilder<import("../context").LyxaHTTPContext, object, {
|
|
7
|
+
req: import("http").IncomingMessage;
|
|
7
8
|
res: import("http").ServerResponse<import("http").IncomingMessage>;
|
|
8
9
|
tokenType: import("../../auth").TokenType | undefined;
|
|
9
|
-
req: import("http").IncomingMessage;
|
|
10
10
|
requestId: string | undefined;
|
|
11
11
|
entity: import("../context").EntityContext | undefined;
|
|
12
12
|
usedRefreshToken: boolean | undefined;
|
|
@@ -3,9 +3,9 @@ interface PhoneVerifiedOptions {
|
|
|
3
3
|
entityTypes: AuthEntityType[];
|
|
4
4
|
}
|
|
5
5
|
export declare function createPhoneVerifiedProcedure(options: PhoneVerifiedOptions): import("@trpc/server").TRPCProcedureBuilder<import("../context").LyxaHTTPContext, object, {
|
|
6
|
+
req: import("http").IncomingMessage;
|
|
6
7
|
res: import("http").ServerResponse<import("http").IncomingMessage>;
|
|
7
8
|
tokenType: import("../../auth").TokenType | undefined;
|
|
8
|
-
req: import("http").IncomingMessage;
|
|
9
9
|
requestId: string | undefined;
|
|
10
10
|
entity: import("../context").EntityContext | undefined;
|
|
11
11
|
usedRefreshToken: boolean | undefined;
|
|
@@ -5,9 +5,9 @@ interface AuthOptions {
|
|
|
5
5
|
autoRefresh?: boolean;
|
|
6
6
|
}
|
|
7
7
|
export declare function publicUserDecoder(options: AuthOptions): import("@trpc/server").TRPCProcedureBuilder<import("../context").LyxaHTTPContext, object, {
|
|
8
|
+
req: import("http").IncomingMessage;
|
|
8
9
|
res: import("http").ServerResponse<import("http").IncomingMessage>;
|
|
9
10
|
tokenType: TokenType | undefined;
|
|
10
|
-
req: import("http").IncomingMessage;
|
|
11
11
|
requestId: string | undefined;
|
|
12
12
|
entity: import("../context").EntityContext | undefined;
|
|
13
13
|
usedRefreshToken: boolean | undefined;
|
package/dist/types/README.md
CHANGED
package/dist/types/package.json
CHANGED
|
@@ -272,7 +272,8 @@ export declare enum UserAppSectionType {
|
|
|
272
272
|
TOP_PICKS_COFFEE = "top_picks_coffee",
|
|
273
273
|
CUSTOMIZED_SHOPS = "customized_shops",
|
|
274
274
|
CUSTOMIZED_ITEMS = "customized_items",
|
|
275
|
-
LIMITED_TIME_OFFER = "limited_time_offer"
|
|
275
|
+
LIMITED_TIME_OFFER = "limited_time_offer",
|
|
276
|
+
CUSTOMIZED_PACKAGES = "customized_packages"
|
|
276
277
|
}
|
|
277
278
|
export declare enum UserAppSectionItemType {
|
|
278
279
|
HOME = "home",
|
|
@@ -303,6 +303,7 @@ var UserAppSectionType;
|
|
|
303
303
|
UserAppSectionType["CUSTOMIZED_SHOPS"] = "customized_shops";
|
|
304
304
|
UserAppSectionType["CUSTOMIZED_ITEMS"] = "customized_items";
|
|
305
305
|
UserAppSectionType["LIMITED_TIME_OFFER"] = "limited_time_offer";
|
|
306
|
+
UserAppSectionType["CUSTOMIZED_PACKAGES"] = "customized_packages";
|
|
306
307
|
})(UserAppSectionType || (exports.UserAppSectionType = UserAppSectionType = {}));
|
|
307
308
|
var UserAppSectionItemType;
|
|
308
309
|
(function (UserAppSectionItemType) {
|