@lyxa.ai/core 1.0.15-debug-0.8 → 1.0.15-debug-0.10

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.
@@ -6,6 +6,7 @@ exports.createGlobalDiscriminatorModel = createGlobalDiscriminatorModel;
6
6
  const mongoose_1 = require("mongoose");
7
7
  const typegoose_1 = require("@typegoose/typegoose");
8
8
  const soft_delete_plugin_1 = require("./plugins/soft-delete-plugin");
9
+ const models_1 = require("./models");
9
10
  (0, soft_delete_plugin_1.applySoftDeletePlugin)();
10
11
  let globalConnection;
11
12
  let connectionPromise = null;
@@ -21,6 +22,7 @@ async function initGlobalConnection(uri, environment) {
21
22
  connection.once('connected', () => {
22
23
  console.log('Global connection successfully established');
23
24
  globalConnection = connection;
25
+ (0, models_1.ensureModelsLoaded)();
24
26
  for (const [modelName, { Class, options, resolve }] of pendingModels.entries()) {
25
27
  const model = (0, typegoose_1.getModelForClass)(Class, {
26
28
  existingConnection: globalConnection,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/mongo/index.ts"],"names":[],"mappings":"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","sourcesContent":["import mongoose, { Connection, createConnection } from 'mongoose';\r\nimport { getDiscriminatorModelForClass, getModelForClass, ReturnModelType } from '@typegoose/typegoose';\r\nimport { AnyParamConstructor, IModelOptions } from \"@typegoose/typegoose/lib/types\";\r\nimport { applySoftDeletePlugin } from './plugins/soft-delete-plugin';\r\n\r\n// Apply the soft delete plugin globally before any connections or models\r\napplySoftDeletePlugin();\r\n\r\n// Track connection status\r\nlet globalConnection: Connection | undefined;\r\nlet connectionPromise: Promise<Connection> | null = null;\r\nlet pendingModels = new Map<string, {\r\n Class: AnyParamConstructor<any>,\r\n options?: IModelOptions,\r\n resolve: (model: any) => void\r\n}>();\r\n\r\nlet pendingDiscriminatorModels = new Map<string, {\r\n baseModel: any,\r\n subClass: AnyParamConstructor<any>,\r\n discriminatorName?: string,\r\n options?: IModelOptions,\r\n resolve: (model: any) => void\r\n}>();\r\n\r\n/**\r\n * Initialize the global database connection\r\n */\r\nexport async function initGlobalConnection(uri: string, environment: string): Promise<Connection> {\r\n if (!connectionPromise) {\r\n connectionPromise = new Promise<Connection>((resolve) => {\r\n console.log(`Initializing global connection for environment: ${environment}`);\r\n const connection = createConnection(uri, {\r\n dbName: `lyxa-${environment}-global`,\r\n });\r\n\r\n connection.once('connected', () => {\r\n console.log('Global connection successfully established');\r\n globalConnection = connection;\r\n\r\n // Initialize any pending models with the real connection\r\n for (const [modelName, { Class, options, resolve }] of pendingModels.entries()) {\r\n const model = getModelForClass(Class, {\r\n existingConnection: globalConnection,\r\n ...options\r\n });\r\n resolve(model);\r\n }\r\n pendingModels.clear();\r\n\r\n // Initialize any pending discriminator models\r\n for (const [modelName, { baseModel, subClass, discriminatorName, options, resolve }] of pendingDiscriminatorModels.entries()) {\r\n const model = getDiscriminatorModelForClass(baseModel, subClass, discriminatorName, {\r\n existingConnection: globalConnection,\r\n ...options\r\n });\r\n resolve(model);\r\n }\r\n pendingDiscriminatorModels.clear();\r\n\r\n resolve(connection);\r\n });\r\n });\r\n }\r\n return connectionPromise;\r\n}\r\n\r\n/**\r\n * Creates a Typegoose model that will use the global connection when it's ready.\r\n * Safe to call during module initialization before initGlobalConnection.\r\n */\r\nexport function createGlobalModel<T extends AnyParamConstructor<any>>(\r\n Class: T,\r\n options?: IModelOptions\r\n): ReturnModelType<T> {\r\n const modelName = options?.schemaOptions?.collection || Class.name;\r\n\r\n // If the connection is already initialized, create the model directly\r\n if (globalConnection) {\r\n return getModelForClass(Class, {\r\n existingConnection: globalConnection,\r\n ...options\r\n });\r\n }\r\n\r\n console.log(`Registering model ${modelName} to be initialized when global connection is ready`);\r\n\r\n // Create a lazy-loaded model instance that will initialize once the connection is ready\r\n let actualModel: ReturnModelType<T> | null = null;\r\n let modelReadyPromise: Promise<ReturnModelType<T>> | null = null;\r\n\r\n // Setup the promise that will resolve once the model is ready\r\n modelReadyPromise = new Promise<ReturnModelType<T>>((resolve) => {\r\n // Register this model to be initialized when connection is ready\r\n pendingModels.set(modelName, { Class, options, resolve });\r\n });\r\n\r\n // Create a proxy that forwards operations to the real model once it's available\r\n const modelProxy = new Proxy({} as ReturnModelType<T>, {\r\n get(target, prop, receiver) {\r\n return async function(...args: any[]) {\r\n if (!actualModel) {\r\n actualModel = await modelReadyPromise!;\r\n }\r\n\r\n const propValue = (actualModel as any)[prop];\r\n if (typeof propValue === 'function') {\r\n return propValue.apply(actualModel, args);\r\n }\r\n return propValue;\r\n };\r\n }\r\n });\r\n\r\n return modelProxy;\r\n}\r\n\r\n/**\r\n * Creates a Typegoose discriminator model that will use the global connection when it's ready.\r\n * Safe to call during module initialization before initGlobalConnection.\r\n */\r\nexport function createGlobalDiscriminatorModel<\r\n Base extends AnyParamConstructor<any>,\r\n Sub extends AnyParamConstructor<any>,\r\n>(\r\n baseModel: ReturnModelType<Base>,\r\n subClass: Sub,\r\n discriminatorName?: string,\r\n options?: IModelOptions,\r\n): ReturnModelType<Sub> {\r\n const modelName = discriminatorName || subClass.name;\r\n\r\n // If the connection is already initialized, create the model directly\r\n if (globalConnection) {\r\n return getDiscriminatorModelForClass(baseModel, subClass, discriminatorName, {\r\n existingConnection: globalConnection,\r\n ...options\r\n });\r\n }\r\n\r\n console.log(`Registering discriminator model ${modelName} to be initialized when global connection is ready`);\r\n\r\n // Create a lazy-loaded model instance that will initialize once the connection is ready\r\n let actualModel: ReturnModelType<Sub> | null = null;\r\n let modelReadyPromise: Promise<ReturnModelType<Sub>> | null = null;\r\n\r\n // Setup the promise that will resolve once the model is ready\r\n modelReadyPromise = new Promise<ReturnModelType<Sub>>((resolve) => {\r\n // Register this discriminator model to be initialized when connection is ready\r\n pendingDiscriminatorModels.set(modelName, {\r\n baseModel,\r\n subClass,\r\n discriminatorName,\r\n options,\r\n resolve\r\n });\r\n });\r\n\r\n // Create a proxy that forwards operations to the real model once it's available\r\n const modelProxy = new Proxy({} as ReturnModelType<Sub>, {\r\n get(target, prop, receiver) {\r\n return async function(...args: any[]) {\r\n if (!actualModel) {\r\n actualModel = await modelReadyPromise!;\r\n }\r\n\r\n const propValue = (actualModel as any)[prop];\r\n if (typeof propValue === 'function') {\r\n return propValue.apply(actualModel, args);\r\n }\r\n return propValue;\r\n };\r\n }\r\n });\r\n\r\n return modelProxy;\r\n}\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/mongo/index.ts"],"names":[],"mappings":"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","sourcesContent":["import mongoose, { Connection, createConnection } from 'mongoose';\r\nimport { getDiscriminatorModelForClass, getModelForClass, ReturnModelType } from '@typegoose/typegoose';\r\nimport { AnyParamConstructor, IModelOptions } from \"@typegoose/typegoose/lib/types\";\r\nimport { applySoftDeletePlugin } from './plugins/soft-delete-plugin';\r\nimport { ensureModelsLoaded } from './models';\r\n\r\n// Apply the soft delete plugin globally before any connections or models\r\napplySoftDeletePlugin();\r\n\r\n// Track connection status\r\nlet globalConnection: Connection | undefined;\r\nlet connectionPromise: Promise<Connection> | null = null;\r\nlet pendingModels = new Map<string, {\r\n Class: AnyParamConstructor<any>,\r\n options?: IModelOptions,\r\n resolve: (model: any) => void\r\n}>();\r\n\r\nlet pendingDiscriminatorModels = new Map<string, {\r\n baseModel: any,\r\n subClass: AnyParamConstructor<any>,\r\n discriminatorName?: string,\r\n options?: IModelOptions,\r\n resolve: (model: any) => void\r\n}>();\r\n\r\n/**\r\n * Initialize the global database connection\r\n */\r\nexport async function initGlobalConnection(uri: string, environment: string): Promise<Connection> {\r\n if (!connectionPromise) {\r\n connectionPromise = new Promise<Connection>((resolve) => {\r\n console.log(`Initializing global connection for environment: ${environment}`);\r\n const connection = createConnection(uri, {\r\n dbName: `lyxa-${environment}-global`,\r\n });\r\n\r\n connection.once('connected', () => {\r\n console.log('Global connection successfully established');\r\n globalConnection = connection;\r\n ensureModelsLoaded()\r\n\r\n // Initialize any pending models with the real connection\r\n for (const [modelName, { Class, options, resolve }] of pendingModels.entries()) {\r\n const model = getModelForClass(Class, {\r\n existingConnection: globalConnection,\r\n ...options\r\n });\r\n resolve(model);\r\n }\r\n pendingModels.clear();\r\n\r\n // Initialize any pending discriminator models\r\n for (const [modelName, { baseModel, subClass, discriminatorName, options, resolve }] of pendingDiscriminatorModels.entries()) {\r\n const model = getDiscriminatorModelForClass(baseModel, subClass, discriminatorName, {\r\n existingConnection: globalConnection,\r\n ...options\r\n });\r\n resolve(model);\r\n }\r\n pendingDiscriminatorModels.clear();\r\n\r\n resolve(connection);\r\n });\r\n });\r\n }\r\n return connectionPromise;\r\n}\r\n\r\n/**\r\n * Creates a Typegoose model that will use the global connection when it's ready.\r\n * Safe to call during module initialization before initGlobalConnection.\r\n */\r\nexport function createGlobalModel<T extends AnyParamConstructor<any>>(\r\n Class: T,\r\n options?: IModelOptions\r\n): ReturnModelType<T> {\r\n const modelName = options?.schemaOptions?.collection || Class.name;\r\n\r\n // If the connection is already initialized, create the model directly\r\n if (globalConnection) {\r\n return getModelForClass(Class, {\r\n existingConnection: globalConnection,\r\n ...options\r\n });\r\n }\r\n\r\n console.log(`Registering model ${modelName} to be initialized when global connection is ready`);\r\n\r\n // Create a lazy-loaded model instance that will initialize once the connection is ready\r\n let actualModel: ReturnModelType<T> | null = null;\r\n let modelReadyPromise: Promise<ReturnModelType<T>> | null = null;\r\n\r\n // Setup the promise that will resolve once the model is ready\r\n modelReadyPromise = new Promise<ReturnModelType<T>>((resolve) => {\r\n // Register this model to be initialized when connection is ready\r\n pendingModels.set(modelName, { Class, options, resolve });\r\n });\r\n\r\n // Create a proxy that forwards operations to the real model once it's available\r\n const modelProxy = new Proxy({} as ReturnModelType<T>, {\r\n get(target, prop, receiver) {\r\n return async function(...args: any[]) {\r\n if (!actualModel) {\r\n actualModel = await modelReadyPromise!;\r\n }\r\n\r\n const propValue = (actualModel as any)[prop];\r\n if (typeof propValue === 'function') {\r\n return propValue.apply(actualModel, args);\r\n }\r\n return propValue;\r\n };\r\n }\r\n });\r\n\r\n return modelProxy;\r\n}\r\n\r\n/**\r\n * Creates a Typegoose discriminator model that will use the global connection when it's ready.\r\n * Safe to call during module initialization before initGlobalConnection.\r\n */\r\nexport function createGlobalDiscriminatorModel<\r\n Base extends AnyParamConstructor<any>,\r\n Sub extends AnyParamConstructor<any>,\r\n>(\r\n baseModel: ReturnModelType<Base>,\r\n subClass: Sub,\r\n discriminatorName?: string,\r\n options?: IModelOptions,\r\n): ReturnModelType<Sub> {\r\n const modelName = discriminatorName || subClass.name;\r\n\r\n // If the connection is already initialized, create the model directly\r\n if (globalConnection) {\r\n return getDiscriminatorModelForClass(baseModel, subClass, discriminatorName, {\r\n existingConnection: globalConnection,\r\n ...options\r\n });\r\n }\r\n\r\n console.log(`Registering discriminator model ${modelName} to be initialized when global connection is ready`);\r\n\r\n // Create a lazy-loaded model instance that will initialize once the connection is ready\r\n let actualModel: ReturnModelType<Sub> | null = null;\r\n let modelReadyPromise: Promise<ReturnModelType<Sub>> | null = null;\r\n\r\n // Setup the promise that will resolve once the model is ready\r\n modelReadyPromise = new Promise<ReturnModelType<Sub>>((resolve) => {\r\n // Register this discriminator model to be initialized when connection is ready\r\n pendingDiscriminatorModels.set(modelName, {\r\n baseModel,\r\n subClass,\r\n discriminatorName,\r\n options,\r\n resolve\r\n });\r\n });\r\n\r\n // Create a proxy that forwards operations to the real model once it's available\r\n const modelProxy = new Proxy({} as ReturnModelType<Sub>, {\r\n get(target, prop, receiver) {\r\n return async function(...args: any[]) {\r\n if (!actualModel) {\r\n actualModel = await modelReadyPromise!;\r\n }\r\n\r\n const propValue = (actualModel as any)[prop];\r\n if (typeof propValue === 'function') {\r\n return propValue.apply(actualModel, args);\r\n }\r\n return propValue;\r\n };\r\n }\r\n });\r\n\r\n return modelProxy;\r\n}\r\n"]}
@@ -1,60 +1,61 @@
1
- export * from './activity-log.model';
2
- export * from './admin.model';
3
- export * from './admin-access-control.model';
4
- export * from './app-screen-setting.model';
5
- export * from './attribute.model';
6
- export * from './banner.model';
7
- export * from './bob-finance.model';
8
- export * from './brand.model';
9
- export * from './category.model';
10
- export * from './counter.model';
11
- export * from './coupon.model';
12
- export * from './deal-setting.model';
13
- export * from './dish.model';
14
- export * from './faq.model';
15
- export * from './favourite.model';
16
- export * from './featured-setting.model';
17
- export * from './filter-container.model';
18
- export * from './list-container.model';
19
- export * from './loyalty-point-category.model';
20
- export * from './loyalty-point-setting.model';
21
- export * from './marketing.model';
22
- export * from './meal-plan.model';
23
- export * from './notification.model';
24
- export * from './nutrition.model';
25
- export * from './order.model';
26
- export * from './parent.model';
27
- export * from './payout.model';
28
- export * from './product-marketing.model';
29
- export * from './product.model';
30
- export * from './punch-marketing-history.model';
31
- export * from './rating-setting.model';
32
- export * from './referral-setting.model';
33
- export * from './request-area.model';
34
- export * from './rider-review.model';
35
- export * from './rider.model';
36
- export * from './role.model';
37
- export * from './setting.model';
38
- export * from './shop-access-control.model';
39
- export * from './shop-category.model';
40
- export * from './shop-meal-plan.model';
41
- export * from './shop-product.model';
42
- export * from './shop-review.model';
43
- export * from './shop.model';
44
- export * from './subscription-setting.model';
45
- export * from './subscription.model';
46
- export * from './tag.model';
47
- export * from './transaction.model';
48
- export * from './zone.model';
49
- export * from './providers/buy1-get1-marketing.model';
50
- export * from './providers/custom-coupon.model';
51
- export * from './providers/discount-marketing.model';
52
- export * from './providers/featured-marketing.model';
53
- export * from './providers/free-delivery-marketing.model';
54
- export * from './providers/global-coupon.model';
55
- export * from './providers/individual-store-coupon.model';
56
- export * from './providers/individual-user-coupon.model';
57
- export * from './providers/loyalty-point-marketing.model';
58
- export * from './providers/punch-marketing.model';
59
- export * from './providers/referral-code-coupon.model';
60
- export * from './providers/referral-reward-coupon.model';
1
+ export * from "./activity-log.model";
2
+ export * from "./admin.model";
3
+ export * from "./admin-access-control.model";
4
+ export * from "./app-screen-setting.model";
5
+ export * from "./attribute.model";
6
+ export * from "./banner.model";
7
+ export * from "./bob-finance.model";
8
+ export * from "./brand.model";
9
+ export * from "./category.model";
10
+ export * from "./counter.model";
11
+ export * from "./coupon.model";
12
+ export * from "./deal-setting.model";
13
+ export * from "./dish.model";
14
+ export * from "./faq.model";
15
+ export * from "./favourite.model";
16
+ export * from "./featured-setting.model";
17
+ export * from "./filter-container.model";
18
+ export * from "./list-container.model";
19
+ export * from "./loyalty-point-category.model";
20
+ export * from "./loyalty-point-setting.model";
21
+ export * from "./marketing.model";
22
+ export * from "./meal-plan.model";
23
+ export * from "./notification.model";
24
+ export * from "./nutrition.model";
25
+ export * from "./order.model";
26
+ export * from "./parent.model";
27
+ export * from "./payout.model";
28
+ export * from "./product-marketing.model";
29
+ export * from "./product.model";
30
+ export * from "./punch-marketing-history.model";
31
+ export * from "./rating-setting.model";
32
+ export * from "./referral-setting.model";
33
+ export * from "./request-area.model";
34
+ export * from "./rider-review.model";
35
+ export * from "./rider.model";
36
+ export * from "./role.model";
37
+ export * from "./setting.model";
38
+ export * from "./shop-access-control.model";
39
+ export * from "./shop-category.model";
40
+ export * from "./shop-meal-plan.model";
41
+ export * from "./shop-product.model";
42
+ export * from "./shop-review.model";
43
+ export * from "./shop.model";
44
+ export * from "./subscription-setting.model";
45
+ export * from "./subscription.model";
46
+ export * from "./tag.model";
47
+ export * from "./transaction.model";
48
+ export * from "./zone.model";
49
+ export * from "./providers/buy1-get1-marketing.model";
50
+ export * from "./providers/custom-coupon.model";
51
+ export * from "./providers/discount-marketing.model";
52
+ export * from "./providers/featured-marketing.model";
53
+ export * from "./providers/free-delivery-marketing.model";
54
+ export * from "./providers/global-coupon.model";
55
+ export * from "./providers/individual-store-coupon.model";
56
+ export * from "./providers/individual-user-coupon.model";
57
+ export * from "./providers/loyalty-point-marketing.model";
58
+ export * from "./providers/punch-marketing.model";
59
+ export * from "./providers/referral-code-coupon.model";
60
+ export * from "./providers/referral-reward-coupon.model";
61
+ export declare function ensureModelsLoaded(): boolean;
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.ensureModelsLoaded = ensureModelsLoaded;
17
18
  __exportStar(require("./activity-log.model"), exports);
18
19
  __exportStar(require("./admin.model"), exports);
19
20
  __exportStar(require("./admin-access-control.model"), exports);
@@ -74,4 +75,8 @@ __exportStar(require("./providers/loyalty-point-marketing.model"), exports);
74
75
  __exportStar(require("./providers/punch-marketing.model"), exports);
75
76
  __exportStar(require("./providers/referral-code-coupon.model"), exports);
76
77
  __exportStar(require("./providers/referral-reward-coupon.model"), exports);
78
+ function ensureModelsLoaded() {
79
+ console.log("All models have been registered");
80
+ return true;
81
+ }
77
82
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/mongo/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,gDAA8B;AAC9B,+DAA6C;AAC7C,6DAA2C;AAC3C,oDAAkC;AAClC,iDAA+B;AAC/B,sDAAoC;AACpC,gDAA8B;AAC9B,mDAAiC;AAGjC,kDAAgC;AAChC,iDAA+B;AAC/B,uDAAqC;AACrC,+CAA6B;AAC7B,8CAA4B;AAC5B,oDAAkC;AAClC,2DAAyC;AACzC,2DAAyC;AACzC,yDAAuC;AACvC,iEAA+C;AAC/C,gEAA8C;AAC9C,oDAAkC;AAClC,oDAAkC;AAClC,uDAAqC;AACrC,oDAAkC;AAClC,gDAA8B;AAC9B,iDAA+B;AAC/B,iDAA+B;AAC/B,4DAA0C;AAC1C,kDAAgC;AAChC,kEAAgD;AAChD,yDAAuC;AACvC,2DAAyC;AACzC,uDAAqC;AACrC,uDAAqC;AACrC,gDAA8B;AAC9B,+CAA6B;AAC7B,kDAAgC;AAChC,8DAA4C;AAC5C,wDAAsC;AACtC,yDAAuC;AACvC,uDAAqC;AACrC,sDAAoC;AACpC,+CAA6B;AAC7B,+DAA6C;AAC7C,uDAAqC;AACrC,8CAA4B;AAC5B,sDAAoC;AACpC,+CAA6B;AAC7B,wEAAsD;AAKtD,kEAAgD;AAChD,uEAAqD;AACrD,uEAAqD;AACrD,4EAA0D;AAC1D,kEAAgD;AAChD,4EAA0D;AAC1D,2EAAyD;AACzD,4EAA0D;AAC1D,oEAAkD;AAClD,yEAAuD;AACvD,2EAAyD","sourcesContent":["export * from './activity-log.model';\r\nexport * from './admin.model';\r\nexport * from './admin-access-control.model';\r\nexport * from './app-screen-setting.model';\r\nexport * from './attribute.model';\r\nexport * from './banner.model';\r\nexport * from './bob-finance.model';\r\nexport * from './brand.model';\r\nexport * from './category.model';\r\n// export * from './core-auth-identity.model';\r\n// export * from './core-user.model';\r\nexport * from './counter.model';\r\nexport * from './coupon.model';\r\nexport * from './deal-setting.model';\r\nexport * from './dish.model';\r\nexport * from './faq.model';\r\nexport * from './favourite.model';\r\nexport * from './featured-setting.model';\r\nexport * from './filter-container.model';\r\nexport * from './list-container.model';\r\nexport * from './loyalty-point-category.model';\r\nexport * from './loyalty-point-setting.model';\r\nexport * from './marketing.model';\r\nexport * from './meal-plan.model';\r\nexport * from './notification.model';\r\nexport * from './nutrition.model';\r\nexport * from './order.model';\r\nexport * from './parent.model';\r\nexport * from './payout.model';\r\nexport * from './product-marketing.model';\r\nexport * from './product.model';\r\nexport * from './punch-marketing-history.model';\r\nexport * from './rating-setting.model';\r\nexport * from './referral-setting.model';\r\nexport * from './request-area.model';\r\nexport * from './rider-review.model';\r\nexport * from './rider.model';\r\nexport * from './role.model';\r\nexport * from './setting.model';\r\nexport * from './shop-access-control.model';\r\nexport * from './shop-category.model';\r\nexport * from './shop-meal-plan.model';\r\nexport * from './shop-product.model';\r\nexport * from './shop-review.model';\r\nexport * from './shop.model';\r\nexport * from './subscription-setting.model';\r\nexport * from './subscription.model';\r\nexport * from './tag.model';\r\nexport * from './transaction.model';\r\nexport * from './zone.model';\r\nexport * from './providers/buy1-get1-marketing.model';\r\n// export * from './providers/core-apple-auth-identity.model';\r\n// export * from './providers/core-email-auth-identity.model';\r\n// export * from './providers/core-google-auth-identity.model';\r\n// export * from './providers/core-phone-auth-identity.model';\r\nexport * from './providers/custom-coupon.model';\r\nexport * from './providers/discount-marketing.model';\r\nexport * from './providers/featured-marketing.model';\r\nexport * from './providers/free-delivery-marketing.model';\r\nexport * from './providers/global-coupon.model';\r\nexport * from './providers/individual-store-coupon.model';\r\nexport * from './providers/individual-user-coupon.model';\r\nexport * from './providers/loyalty-point-marketing.model';\r\nexport * from './providers/punch-marketing.model';\r\nexport * from './providers/referral-code-coupon.model';\r\nexport * from './providers/referral-reward-coupon.model';\r\n\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/mongo/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAmEA,gDAGC;AAtED,uDAAqC;AACrC,gDAA8B;AAC9B,+DAA6C;AAC7C,6DAA2C;AAC3C,oDAAkC;AAClC,iDAA+B;AAC/B,sDAAoC;AACpC,gDAA8B;AAC9B,mDAAiC;AAGjC,kDAAgC;AAChC,iDAA+B;AAC/B,uDAAqC;AACrC,+CAA6B;AAC7B,8CAA4B;AAC5B,oDAAkC;AAClC,2DAAyC;AACzC,2DAAyC;AACzC,yDAAuC;AACvC,iEAA+C;AAC/C,gEAA8C;AAC9C,oDAAkC;AAClC,oDAAkC;AAClC,uDAAqC;AACrC,oDAAkC;AAClC,gDAA8B;AAC9B,iDAA+B;AAC/B,iDAA+B;AAC/B,4DAA0C;AAC1C,kDAAgC;AAChC,kEAAgD;AAChD,yDAAuC;AACvC,2DAAyC;AACzC,uDAAqC;AACrC,uDAAqC;AACrC,gDAA8B;AAC9B,+CAA6B;AAC7B,kDAAgC;AAChC,8DAA4C;AAC5C,wDAAsC;AACtC,yDAAuC;AACvC,uDAAqC;AACrC,sDAAoC;AACpC,+CAA6B;AAC7B,+DAA6C;AAC7C,uDAAqC;AACrC,8CAA4B;AAC5B,sDAAoC;AACpC,+CAA6B;AAC7B,wEAAsD;AAKtD,kEAAgD;AAChD,uEAAqD;AACrD,uEAAqD;AACrD,4EAA0D;AAC1D,kEAAgD;AAChD,4EAA0D;AAC1D,2EAAyD;AACzD,4EAA0D;AAC1D,oEAAkD;AAClD,yEAAuD;AACvD,2EAAyD;AAEzD,SAAgB,kBAAkB;IAChC,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["export * from \"./activity-log.model\";\r\nexport * from \"./admin.model\";\r\nexport * from \"./admin-access-control.model\";\r\nexport * from \"./app-screen-setting.model\";\r\nexport * from \"./attribute.model\";\r\nexport * from \"./banner.model\";\r\nexport * from \"./bob-finance.model\";\r\nexport * from \"./brand.model\";\r\nexport * from \"./category.model\";\r\n// export * from './core-auth-identity.model';\r\n// export * from './core-user.model';\r\nexport * from \"./counter.model\";\r\nexport * from \"./coupon.model\";\r\nexport * from \"./deal-setting.model\";\r\nexport * from \"./dish.model\";\r\nexport * from \"./faq.model\";\r\nexport * from \"./favourite.model\";\r\nexport * from \"./featured-setting.model\";\r\nexport * from \"./filter-container.model\";\r\nexport * from \"./list-container.model\";\r\nexport * from \"./loyalty-point-category.model\";\r\nexport * from \"./loyalty-point-setting.model\";\r\nexport * from \"./marketing.model\";\r\nexport * from \"./meal-plan.model\";\r\nexport * from \"./notification.model\";\r\nexport * from \"./nutrition.model\";\r\nexport * from \"./order.model\";\r\nexport * from \"./parent.model\";\r\nexport * from \"./payout.model\";\r\nexport * from \"./product-marketing.model\";\r\nexport * from \"./product.model\";\r\nexport * from \"./punch-marketing-history.model\";\r\nexport * from \"./rating-setting.model\";\r\nexport * from \"./referral-setting.model\";\r\nexport * from \"./request-area.model\";\r\nexport * from \"./rider-review.model\";\r\nexport * from \"./rider.model\";\r\nexport * from \"./role.model\";\r\nexport * from \"./setting.model\";\r\nexport * from \"./shop-access-control.model\";\r\nexport * from \"./shop-category.model\";\r\nexport * from \"./shop-meal-plan.model\";\r\nexport * from \"./shop-product.model\";\r\nexport * from \"./shop-review.model\";\r\nexport * from \"./shop.model\";\r\nexport * from \"./subscription-setting.model\";\r\nexport * from \"./subscription.model\";\r\nexport * from \"./tag.model\";\r\nexport * from \"./transaction.model\";\r\nexport * from \"./zone.model\";\r\nexport * from \"./providers/buy1-get1-marketing.model\";\r\n// export * from './providers/core-apple-auth-identity.model';\r\n// export * from './providers/core-email-auth-identity.model';\r\n// export * from './providers/core-google-auth-identity.model';\r\n// export * from './providers/core-phone-auth-identity.model';\r\nexport * from \"./providers/custom-coupon.model\";\r\nexport * from \"./providers/discount-marketing.model\";\r\nexport * from \"./providers/featured-marketing.model\";\r\nexport * from \"./providers/free-delivery-marketing.model\";\r\nexport * from \"./providers/global-coupon.model\";\r\nexport * from \"./providers/individual-store-coupon.model\";\r\nexport * from \"./providers/individual-user-coupon.model\";\r\nexport * from \"./providers/loyalty-point-marketing.model\";\r\nexport * from \"./providers/punch-marketing.model\";\r\nexport * from \"./providers/referral-code-coupon.model\";\r\nexport * from \"./providers/referral-reward-coupon.model\";\r\n\r\nexport function ensureModelsLoaded() {\r\n console.log(\"All models have been registered\");\r\n return true;\r\n}\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lyxa.ai/core",
3
- "version": "1.0.15-debug-0.8",
3
+ "version": "1.0.15-debug-0.10",
4
4
  "description": "The Core system of the Lyxa services.",
5
5
  "author": "elie <42282499+Internalizable@users.noreply.github.com>",
6
6
  "license": "MIT",