@sgftech/medusa-plugin-marketplace-v2 0.1.26
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/.babelrc.js +12 -0
- package/.eslintrc.js +68 -0
- package/.vscode/settings.json +2 -0
- package/.yarnrc.yml +1 -0
- package/README.md +70 -0
- package/SECURITY.md +21 -0
- package/data/seed-onboarding.json +141 -0
- package/data/seed.json +1006 -0
- package/dist/api/middlewares/authenticate-user.d.ts +15 -0
- package/dist/api/middlewares/authenticate-user.js +212 -0
- package/dist/api/middlewares/authenticate-user.js.map +1 -0
- package/dist/api/middlewares/logged-in-user-v2.d.ts +3 -0
- package/dist/api/middlewares/logged-in-user-v2.js +69 -0
- package/dist/api/middlewares/logged-in-user-v2.js.map +1 -0
- package/dist/api/middlewares/logged-in-user.d.ts +1 -0
- package/dist/api/middlewares/logged-in-user.js +18 -0
- package/dist/api/middlewares/logged-in-user.js.map +1 -0
- package/dist/api/routes/admin/create-product.d.ts +1 -0
- package/dist/api/routes/admin/create-product.js +19 -0
- package/dist/api/routes/admin/create-product.js.map +1 -0
- package/dist/api/routes/admin/create-store.d.ts +1 -0
- package/dist/api/routes/admin/create-store.js +19 -0
- package/dist/api/routes/admin/create-store.js.map +1 -0
- package/dist/api/routes/admin/create-user.d.ts +1 -0
- package/dist/api/routes/admin/create-user.js +19 -0
- package/dist/api/routes/admin/create-user.js.map +1 -0
- package/dist/index.d.ts +0 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/dist/migrations/1629000000000-create-workflow-table.d.ts +5 -0
- package/dist/migrations/1629000000000-create-workflow-table.js +29 -0
- package/dist/migrations/1629000000000-create-workflow-table.js.map +1 -0
- package/dist/migrations/1629000000001-workflow-table-stage.d.ts +5 -0
- package/dist/migrations/1629000000001-workflow-table-stage.js +48 -0
- package/dist/migrations/1629000000001-workflow-table-stage.js.map +1 -0
- package/dist/migrations/1632467997443-workflow-requests.d.ts +5 -0
- package/dist/migrations/1632467997443-workflow-requests.js +48 -0
- package/dist/migrations/1632467997443-workflow-requests.js.map +1 -0
- package/dist/migrations/1632468000000-update-workflow-keys-table.d.ts +5 -0
- package/dist/migrations/1632468000000-update-workflow-keys-table.js +31 -0
- package/dist/migrations/1632468000000-update-workflow-keys-table.js.map +1 -0
- package/dist/migrations/1632470000000-add-approvers-to-workflow-stage.d.ts +5 -0
- package/dist/migrations/1632470000000-add-approvers-to-workflow-stage.js +52 -0
- package/dist/migrations/1632470000000-add-approvers-to-workflow-stage.js.map +1 -0
- package/dist/migrations/1632471000000-update-user-table-for-approvers.d.ts +5 -0
- package/dist/migrations/1632471000000-update-user-table-for-approvers.js +43 -0
- package/dist/migrations/1632471000000-update-user-table-for-approvers.js.map +1 -0
- package/dist/migrations/1632472000000-update-workflow-request-table-for-approvals.d.ts +5 -0
- package/dist/migrations/1632472000000-update-workflow-request-table-for-approvals.js +43 -0
- package/dist/migrations/1632472000000-update-workflow-request-table-for-approvals.js.map +1 -0
- package/dist/migrations/1632473000000-create-approval-table.d.ts +5 -0
- package/dist/migrations/1632473000000-create-approval-table.js +54 -0
- package/dist/migrations/1632473000000-create-approval-table.js.map +1 -0
- package/dist/migrations/1652101349791-order.migration.d.ts +6 -0
- package/dist/migrations/1652101349791-order.migration.js +26 -0
- package/dist/migrations/1652101349791-order.migration.js.map +1 -0
- package/dist/migrations/1655123458263-invite.migration.d.ts +6 -0
- package/dist/migrations/1655123458263-invite.migration.js +23 -0
- package/dist/migrations/1655123458263-invite.migration.js.map +1 -0
- package/dist/migrations/1655131148363-role.migration.d.ts +6 -0
- package/dist/migrations/1655131148363-role.migration.js +32 -0
- package/dist/migrations/1655131148363-role.migration.js.map +1 -0
- package/dist/migrations/1655131601491-permission.migration.d.ts +6 -0
- package/dist/migrations/1655131601491-permission.migration.js +47 -0
- package/dist/migrations/1655131601491-permission.migration.js.map +1 -0
- package/dist/migrations/1655132360987-user.migration.d.ts +6 -0
- package/dist/migrations/1655132360987-user.migration.js +29 -0
- package/dist/migrations/1655132360987-user.migration.js.map +1 -0
- package/dist/migrations/1666588571522-user.migration.d.ts +6 -0
- package/dist/migrations/1666588571522-user.migration.js +27 -0
- package/dist/migrations/1666588571522-user.migration.js.map +1 -0
- package/dist/migrations/1666588577183-store.migration.d.ts +6 -0
- package/dist/migrations/1666588577183-store.migration.js +26 -0
- package/dist/migrations/1666588577183-store.migration.js.map +1 -0
- package/dist/migrations/1667045765051-customer.migration.d.ts +6 -0
- package/dist/migrations/1667045765051-customer.migration.js +33 -0
- package/dist/migrations/1667045765051-customer.migration.js.map +1 -0
- package/dist/migrations/1683175918497-add-user-stores.migration.d.ts +6 -0
- package/dist/migrations/1683175918497-add-user-stores.migration.js +60 -0
- package/dist/migrations/1683175918497-add-user-stores.migration.js.map +1 -0
- package/dist/migrations/1683177500538-add-product-store-id.migration.d.ts +6 -0
- package/dist/migrations/1683177500538-add-product-store-id.migration.js +53 -0
- package/dist/migrations/1683177500538-add-product-store-id.migration.js.map +1 -0
- package/dist/migrations/address.migration.d.ts +6 -0
- package/dist/migrations/address.migration.js +25 -0
- package/dist/migrations/address.migration.js.map +1 -0
- package/dist/migrations/product.migration.d.ts +6 -0
- package/dist/migrations/product.migration.js +21 -0
- package/dist/migrations/product.migration.js.map +1 -0
- package/dist/migrations/stage-status.d.ts +5 -0
- package/dist/migrations/stage-status.js +22 -0
- package/dist/migrations/stage-status.js.map +1 -0
- package/dist/migrations/user.migration.d.ts +6 -0
- package/dist/migrations/user.migration.js +21 -0
- package/dist/migrations/user.migration.js.map +1 -0
- package/dist/models/address.d.ts +3 -0
- package/dist/models/address.js +18 -0
- package/dist/models/address.js.map +1 -0
- package/dist/models/customer.d.ts +9 -0
- package/dist/models/customer.js +49 -0
- package/dist/models/customer.js.map +1 -0
- package/dist/models/invite.d.ts +6 -0
- package/dist/models/invite.js +32 -0
- package/dist/models/invite.js.map +1 -0
- package/dist/models/order.d.ts +9 -0
- package/dist/models/order.js +48 -0
- package/dist/models/order.js.map +1 -0
- package/dist/models/permission.d.ts +8 -0
- package/dist/models/permission.js +56 -0
- package/dist/models/permission.js.map +1 -0
- package/dist/models/product.d.ts +5 -0
- package/dist/models/product.js +43 -0
- package/dist/models/product.js.map +1 -0
- package/dist/models/role.d.ts +12 -0
- package/dist/models/role.js +68 -0
- package/dist/models/role.js.map +1 -0
- package/dist/models/setting.d.ts +69 -0
- package/dist/models/setting.js +46 -0
- package/dist/models/setting.js.map +1 -0
- package/dist/models/store.d.ts +15 -0
- package/dist/models/store.js +85 -0
- package/dist/models/store.js.map +1 -0
- package/dist/models/user.d.ts +15 -0
- package/dist/models/user.js +76 -0
- package/dist/models/user.js.map +1 -0
- package/dist/models/workflow-approval.d.ts +8 -0
- package/dist/models/workflow-approval.js +37 -0
- package/dist/models/workflow-approval.js.map +1 -0
- package/dist/models/workflow-requests.d.ts +9 -0
- package/dist/models/workflow-requests.js +42 -0
- package/dist/models/workflow-requests.js.map +1 -0
- package/dist/models/workflow-stage.d.ts +8 -0
- package/dist/models/workflow-stage.js +38 -0
- package/dist/models/workflow-stage.js.map +1 -0
- package/dist/models/workflow.d.ts +8 -0
- package/dist/models/workflow.js +37 -0
- package/dist/models/workflow.js.map +1 -0
- package/dist/repositories/address.d.ts +7 -0
- package/dist/repositories/address.js +11 -0
- package/dist/repositories/address.js.map +1 -0
- package/dist/repositories/currency.d.ts +7 -0
- package/dist/repositories/currency.js +11 -0
- package/dist/repositories/currency.js.map +1 -0
- package/dist/repositories/customer.d.ts +12 -0
- package/dist/repositories/customer.js +11 -0
- package/dist/repositories/customer.js.map +1 -0
- package/dist/repositories/invite.d.ts +7 -0
- package/dist/repositories/invite.js +11 -0
- package/dist/repositories/invite.js.map +1 -0
- package/dist/repositories/order.d.ts +9 -0
- package/dist/repositories/order.js +11 -0
- package/dist/repositories/order.js.map +1 -0
- package/dist/repositories/permission.d.ts +3 -0
- package/dist/repositories/permission.js +8 -0
- package/dist/repositories/permission.js.map +1 -0
- package/dist/repositories/product.d.ts +43 -0
- package/dist/repositories/product.js +11 -0
- package/dist/repositories/product.js.map +1 -0
- package/dist/repositories/role.d.ts +3 -0
- package/dist/repositories/role.js +8 -0
- package/dist/repositories/role.js.map +1 -0
- package/dist/repositories/store.d.ts +7 -0
- package/dist/repositories/store.js +11 -0
- package/dist/repositories/store.js.map +1 -0
- package/dist/repositories/user.d.ts +7 -0
- package/dist/repositories/user.js +11 -0
- package/dist/repositories/user.js.map +1 -0
- package/dist/services/currency.d.ts +24 -0
- package/dist/services/currency.js +49 -0
- package/dist/services/currency.js.map +1 -0
- package/dist/services/customer.d.ts +34 -0
- package/dist/services/customer.js +137 -0
- package/dist/services/customer.js.map +1 -0
- package/dist/services/process-constant.d.ts +17 -0
- package/dist/services/process-constant.js +27 -0
- package/dist/services/process-constant.js.map +1 -0
- package/dist/services/product.d.ts +121 -0
- package/dist/services/product.js +382 -0
- package/dist/services/product.js.map +1 -0
- package/dist/services/region.d.ts +42 -0
- package/dist/services/region.js +190 -0
- package/dist/services/region.js.map +1 -0
- package/dist/services/store.d.ts +98 -0
- package/dist/services/store.js +607 -0
- package/dist/services/store.js.map +1 -0
- package/dist/services/user.d.ts +74 -0
- package/dist/services/user.js +356 -0
- package/dist/services/user.js.map +1 -0
- package/dist/services/workflow-request.d.ts +14 -0
- package/dist/services/workflow-request.js +100 -0
- package/dist/services/workflow-request.js.map +1 -0
- package/dist/services/workflow-stage.d.ts +19 -0
- package/dist/services/workflow-stage.js +46 -0
- package/dist/services/workflow-stage.js.map +1 -0
- package/dist/services/workflow.d.ts +22 -0
- package/dist/services/workflow.js +108 -0
- package/dist/services/workflow.js.map +1 -0
- package/dist/subscribers/customer.d.ts +5 -0
- package/dist/subscribers/customer.js +20 -0
- package/dist/subscribers/customer.js.map +1 -0
- package/dist/subscribers/product.d.ts +11 -0
- package/dist/subscribers/product.js +30 -0
- package/dist/subscribers/product.js.map +1 -0
- package/dist/subscribers/store.d.ts +25 -0
- package/dist/subscribers/store.js +54 -0
- package/dist/subscribers/store.js.map +1 -0
- package/dist/subscribers/user.d.ts +16 -0
- package/dist/subscribers/user.js +62 -0
- package/dist/subscribers/user.js.map +1 -0
- package/dist/types/global.d.ts +1 -0
- package/dist/types/global.js +3 -0
- package/dist/types/global.js.map +1 -0
- package/dist/types/oidc-types.d.ts +13 -0
- package/dist/types/oidc-types.js +3 -0
- package/dist/types/oidc-types.js.map +1 -0
- package/index.js +50 -0
- package/package.json +105 -0
- package/tsconfig.admin.json +8 -0
- package/tsconfig.json +33 -0
- package/tsconfig.server.json +8 -0
- package/tsconfig.spec.json +5 -0
- package/yarn-error.log +12869 -0
|
@@ -0,0 +1,607 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable valid-jsdoc */
|
|
3
|
+
/* eslint-disable max-len */
|
|
4
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
|
+
};
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
const awilix_1 = require("awilix");
|
|
9
|
+
const services_1 = require("@medusajs/medusa/dist/services");
|
|
10
|
+
const store_1 = require("../models/store");
|
|
11
|
+
const medusa_1 = require("@medusajs/medusa");
|
|
12
|
+
const medusa_core_utils_1 = require("medusa-core-utils");
|
|
13
|
+
const process_constant_1 = require("./process-constant");
|
|
14
|
+
const currency_1 = __importDefault(require("./currency"));
|
|
15
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
16
|
+
class StoreService extends services_1.StoreService {
|
|
17
|
+
constructor(container, configModule, defaultStore) {
|
|
18
|
+
super(container);
|
|
19
|
+
this.container = container;
|
|
20
|
+
this.manager = container.manager;
|
|
21
|
+
this.logger = container.logger;
|
|
22
|
+
this.configModule = configModule;
|
|
23
|
+
this.storeRepository_ = container.storeRepository;
|
|
24
|
+
this.eventBus_ = container.eventBusService;
|
|
25
|
+
this.currencyService = container.currencyService;
|
|
26
|
+
this.defaultStore = defaultStore;
|
|
27
|
+
this.loggedInUser = Object.keys(container).includes("loggedInUser")
|
|
28
|
+
? container.loggedInUser
|
|
29
|
+
: undefined;
|
|
30
|
+
this.defaultAdmin = Object.keys(container).includes("defaultAdmin")
|
|
31
|
+
? container.defaultAdmin
|
|
32
|
+
: undefined;
|
|
33
|
+
const setDefaultAdmin = async (data) => {
|
|
34
|
+
if (data.process == process_constant_1.ProcessConstantService.process_signature) {
|
|
35
|
+
this.defaultAdmin = data.user;
|
|
36
|
+
this.eventBus_.unsubscribe("medusa.default.admin.registered", setDefaultAdmin, {
|
|
37
|
+
subscriberId: "medusa.default.admin.registered"
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
this.eventBus_.subscribe("medusa.default.admin.registered", setDefaultAdmin);
|
|
42
|
+
}
|
|
43
|
+
withTransaction(transactionManager) {
|
|
44
|
+
if (!transactionManager) {
|
|
45
|
+
return this;
|
|
46
|
+
}
|
|
47
|
+
const cloned = new StoreService({
|
|
48
|
+
manager: transactionManager,
|
|
49
|
+
storeRepository: this.storeRepository_,
|
|
50
|
+
currencyRepository: this.currencyRepository_,
|
|
51
|
+
eventBusService: this.eventBus_,
|
|
52
|
+
logger: this.logger,
|
|
53
|
+
defaultAdmin: this.defaultAdmin,
|
|
54
|
+
loggedInUser: this.loggedInUser,
|
|
55
|
+
currencyService: this.currencyService
|
|
56
|
+
}, this.configModule, this.defaultStore);
|
|
57
|
+
cloned.transactionManager_ = transactionManager;
|
|
58
|
+
return cloned;
|
|
59
|
+
}
|
|
60
|
+
/* @OnMedusaEntityEvent.After.Insert(User, { async: true })
|
|
61
|
+
public async createStoreForNewUser(
|
|
62
|
+
params: MedusaEventHandlerParams<User, "Insert">,
|
|
63
|
+
): Promise<EntityEventType<User, "Insert">> {
|
|
64
|
+
const { event } = params;
|
|
65
|
+
const user = event.entity;
|
|
66
|
+
let storeId = Object.keys(this.container).includes("loggedInUser") ?
|
|
67
|
+
this.container.loggedInUser.store_id :
|
|
68
|
+
null;
|
|
69
|
+
if (storeId) {
|
|
70
|
+
return event;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const existingStoreInAccount = await this.retrieveStoreInAccount();
|
|
74
|
+
if (existingStoreInAccount && !storeId) {
|
|
75
|
+
if (!existingStoreInAccount.members) {
|
|
76
|
+
throw new Error("Store created without admin user");
|
|
77
|
+
} else {
|
|
78
|
+
existingStoreInAccount.members.push(user);
|
|
79
|
+
this.manager.save(existingStoreInAccount);
|
|
80
|
+
}
|
|
81
|
+
} else if (!storeId && user.role == UserRoles.ADMIN) {
|
|
82
|
+
const createdStore = (await this.create()) as Store;
|
|
83
|
+
storeId = createdStore.id;
|
|
84
|
+
} else {
|
|
85
|
+
throw new Error("Attempting to create store for non admin user");
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
user.store_id = storeId;
|
|
90
|
+
event.manager.save(user);
|
|
91
|
+
|
|
92
|
+
return event;
|
|
93
|
+
}
|
|
94
|
+
*/
|
|
95
|
+
async attachExternalAccountToStoreAfterUpdate(event) {
|
|
96
|
+
const user = event.entity;
|
|
97
|
+
await this.attachStoreToExternalAccount(user, event);
|
|
98
|
+
return event;
|
|
99
|
+
}
|
|
100
|
+
async attachStoreToExternalAccount(user, event) {
|
|
101
|
+
var _a, _b;
|
|
102
|
+
if (((_b = (_a = user.stores) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) == 0) {
|
|
103
|
+
console.log(`user ${user.email} is not attached to store`);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const ids = user.stores.map((store) => {
|
|
107
|
+
return {
|
|
108
|
+
id: store.id
|
|
109
|
+
};
|
|
110
|
+
});
|
|
111
|
+
const stores = await this.manager.find(store_1.Store, {
|
|
112
|
+
where: ids
|
|
113
|
+
});
|
|
114
|
+
stores.map((store) => {
|
|
115
|
+
store.externalAccountId = event.entity.externalAccountId;
|
|
116
|
+
store.externalProviderId = event.entity.externalProviderId;
|
|
117
|
+
});
|
|
118
|
+
const result = await this.manager.save(stores);
|
|
119
|
+
return result;
|
|
120
|
+
}
|
|
121
|
+
async attachExternalAccountToStore(event) {
|
|
122
|
+
const user = event.entity;
|
|
123
|
+
await this.attachStoreToExternalAccount(user, event);
|
|
124
|
+
return event;
|
|
125
|
+
}
|
|
126
|
+
/*
|
|
127
|
+
@OnMedusaEntityEvent.Before.Insert(Invite, { async: true })
|
|
128
|
+
public async addStoreToInvite(
|
|
129
|
+
params: MedusaEventHandlerParams<Invite, "Insert">
|
|
130
|
+
): Promise<EntityEventType<Invite, "Insert">> {
|
|
131
|
+
const { event } = params;
|
|
132
|
+
const stores = this.container.loggedInUser.stores;
|
|
133
|
+
|
|
134
|
+
if (!event.entity.store_id && stores?.length>0) {
|
|
135
|
+
event.entity.store_id = store_id;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
return event;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
*/
|
|
142
|
+
/** Create a store for a particular user. It mainly used from the event BeforeInsert to create a store
|
|
143
|
+
* for the user that is being inserting.
|
|
144
|
+
* @param user
|
|
145
|
+
*/
|
|
146
|
+
/* public async createForUser(user: User): Promise<Store | void> {
|
|
147
|
+
if (user.stores?.length>0) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
const storeRepo = this.activeManager_.withRepository(
|
|
151
|
+
this.storeRepository_
|
|
152
|
+
);
|
|
153
|
+
const store = storeRepo.create() as Store;
|
|
154
|
+
return storeRepo.save(store);
|
|
155
|
+
}*/
|
|
156
|
+
/**
|
|
157
|
+
* Return the store that belongs to the authenticated user.
|
|
158
|
+
* @param relations
|
|
159
|
+
*/
|
|
160
|
+
async retrieve(config) {
|
|
161
|
+
if (config) {
|
|
162
|
+
return await this.retrieveRelations(config.relations);
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
return await this.retrieveRelations();
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
async retrieveByStoreIdOrName(storeId, config) {
|
|
169
|
+
if (config) {
|
|
170
|
+
return (await this.retrieveRelationsByStoreId(storeId, config.relations));
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
return (await this.retrieveRelationsByStoreId(storeId));
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Return the store that belongs to the account.
|
|
178
|
+
* @param relations
|
|
179
|
+
* @account Id
|
|
180
|
+
*/
|
|
181
|
+
async retrieveRelationsByStoreId(storeId, relations) {
|
|
182
|
+
if (!storeId) {
|
|
183
|
+
return super.retrieve({
|
|
184
|
+
relations
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
const storeRepo = this.activeManager_.withRepository(this.storeRepository_);
|
|
188
|
+
const store = await storeRepo.findOne({
|
|
189
|
+
relations,
|
|
190
|
+
where: [{ id: storeId }, { name: storeId }]
|
|
191
|
+
});
|
|
192
|
+
return store;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Return the store that belongs to the account.
|
|
196
|
+
* @param relations
|
|
197
|
+
* @account Id
|
|
198
|
+
*/
|
|
199
|
+
async retrieveStoreInAccount(accountId, relations) {
|
|
200
|
+
return await this.atomicPhase_(async (manager) => {
|
|
201
|
+
if (!accountId) {
|
|
202
|
+
return (await super
|
|
203
|
+
.withTransaction(manager)
|
|
204
|
+
.retrieve());
|
|
205
|
+
}
|
|
206
|
+
const storeRepo = this.activeManager_.getRepository(store_1.Store);
|
|
207
|
+
const store = await storeRepo.findOne({
|
|
208
|
+
relations,
|
|
209
|
+
where: {
|
|
210
|
+
externalAccountId: accountId
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
return store;
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Return the store that belongs to the account the logged in user is attached to.
|
|
218
|
+
* @param relations
|
|
219
|
+
*/
|
|
220
|
+
async retrieveStoreInLoggedInUserAccount(relations, accountId) {
|
|
221
|
+
var _a;
|
|
222
|
+
if (!(Object.keys(this.container).includes("loggedInUser") &&
|
|
223
|
+
this.container.loggedInUser)) {
|
|
224
|
+
return super.retrieve();
|
|
225
|
+
}
|
|
226
|
+
const storeRepo = this.activeManager_.getRepository(store_1.Store);
|
|
227
|
+
const store = await storeRepo.findOne({
|
|
228
|
+
relations,
|
|
229
|
+
where: {
|
|
230
|
+
externalAccountId: (_a = this.container.loggedInUser.externalAccountId) !== null && _a !== void 0 ? _a : accountId
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
return store;
|
|
234
|
+
}
|
|
235
|
+
async retrieveActiveUsers() {
|
|
236
|
+
let user = Object.keys(this.container).includes("loggedInUser")
|
|
237
|
+
? this.container.loggedInUser
|
|
238
|
+
: undefined;
|
|
239
|
+
const defaultAdmin = Object.keys(this.container).includes("defaultAdmin")
|
|
240
|
+
? this.container.defaultAdmin
|
|
241
|
+
: undefined;
|
|
242
|
+
let defaultAdminUser;
|
|
243
|
+
if (defaultAdmin) {
|
|
244
|
+
defaultAdminUser = Array.isArray(defaultAdmin)
|
|
245
|
+
? this.container.defaultAdmin[0]
|
|
246
|
+
: this.container.defaultAdmin;
|
|
247
|
+
user = user !== null && user !== void 0 ? user : defaultAdminUser;
|
|
248
|
+
}
|
|
249
|
+
return { user, adminUser: defaultAdminUser };
|
|
250
|
+
}
|
|
251
|
+
async getUserStores(user) {
|
|
252
|
+
const stores = await this.atomicPhase_(async (manager) => {
|
|
253
|
+
if (user.stores) {
|
|
254
|
+
return user.stores;
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
const storeSelection = manager
|
|
258
|
+
.getRepository(store_1.Store)
|
|
259
|
+
.createQueryBuilder("stores")
|
|
260
|
+
.leftJoinAndSelect("store.members", "user")
|
|
261
|
+
.andWhere(`user.id=${user.id}`);
|
|
262
|
+
const filteredStores = await storeSelection.getMany();
|
|
263
|
+
return filteredStores;
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
return stores;
|
|
267
|
+
}
|
|
268
|
+
async getUserStoreIds(user) {
|
|
269
|
+
const stores = await this.getUserStores(user);
|
|
270
|
+
const ids = stores.map((store) => {
|
|
271
|
+
return {
|
|
272
|
+
id: store.id
|
|
273
|
+
};
|
|
274
|
+
});
|
|
275
|
+
return ids;
|
|
276
|
+
}
|
|
277
|
+
async getUserStore(user, relations) {
|
|
278
|
+
/** filter the non default store */
|
|
279
|
+
const storeRepo = this.activeManager_.getRepository(store_1.Store);
|
|
280
|
+
let store;
|
|
281
|
+
const ids = await this.getUserStoreIds(user);
|
|
282
|
+
const storeRelations = relations !== null && relations !== void 0 ? relations : [];
|
|
283
|
+
if (!storeRelations.includes("members")) {
|
|
284
|
+
storeRelations.push("members");
|
|
285
|
+
}
|
|
286
|
+
if (!storeRelations.includes("products")) {
|
|
287
|
+
storeRelations.push("products");
|
|
288
|
+
}
|
|
289
|
+
if ((relations === null || relations === void 0 ? void 0 : relations.length) && (relations === null || relations === void 0 ? void 0 : relations.length) > 0) {
|
|
290
|
+
store = (await storeRepo.findOne({
|
|
291
|
+
where: ids,
|
|
292
|
+
relations
|
|
293
|
+
}));
|
|
294
|
+
}
|
|
295
|
+
return store;
|
|
296
|
+
}
|
|
297
|
+
async retrieveDefaultStore(relations) {
|
|
298
|
+
if (this.defaultStore && !relations) {
|
|
299
|
+
return this.defaultStore;
|
|
300
|
+
}
|
|
301
|
+
const defaultStoreName = process.env.DEFAULT_STORE_NAME;
|
|
302
|
+
const storeRepo = this.activeManager_.getRepository(store_1.Store);
|
|
303
|
+
this.logger.debug("referencing default store");
|
|
304
|
+
const relationsToInclude = !relations
|
|
305
|
+
? ["members"]
|
|
306
|
+
: (relations === null || relations === void 0 ? void 0 : relations.includes("members"))
|
|
307
|
+
? relations.concat(" ").concat("members")
|
|
308
|
+
: relations;
|
|
309
|
+
const store = (await storeRepo.findOne({
|
|
310
|
+
where: {
|
|
311
|
+
name: defaultStoreName
|
|
312
|
+
},
|
|
313
|
+
relations: relationsToInclude
|
|
314
|
+
}));
|
|
315
|
+
this.defaultStore = lodash_1.default.cloneDeep(store);
|
|
316
|
+
return this.defaultStore;
|
|
317
|
+
}
|
|
318
|
+
async retrieveRelations(relations) {
|
|
319
|
+
// while (!user && timeOut) {
|
|
320
|
+
const { user, adminUser } = await this.retrieveActiveUsers();
|
|
321
|
+
let store;
|
|
322
|
+
if (!user) {
|
|
323
|
+
this.logger.info("no logged in user");
|
|
324
|
+
}
|
|
325
|
+
/** fetching the default store */
|
|
326
|
+
/** no user logged in usually at startup time */
|
|
327
|
+
if (!user || user == adminUser) {
|
|
328
|
+
store = await this.retrieveDefaultStore(relations);
|
|
329
|
+
/** return the default store */
|
|
330
|
+
}
|
|
331
|
+
else {
|
|
332
|
+
/** fetching user store */
|
|
333
|
+
store = await this.getUserStore(user, relations);
|
|
334
|
+
}
|
|
335
|
+
if (!store && !user) {
|
|
336
|
+
const defaultStoreName = process.env.DEFAULT_STORE_NAME;
|
|
337
|
+
store = await this.createUserStore(defaultStoreName);
|
|
338
|
+
}
|
|
339
|
+
return store;
|
|
340
|
+
}
|
|
341
|
+
async createUserStore(storeName) {
|
|
342
|
+
let store;
|
|
343
|
+
const storeRepo = this.activeManager_.getRepository(store_1.Store);
|
|
344
|
+
try {
|
|
345
|
+
store = await storeRepo.findOne({
|
|
346
|
+
where: {
|
|
347
|
+
name: storeName
|
|
348
|
+
}
|
|
349
|
+
});
|
|
350
|
+
if (store) {
|
|
351
|
+
return store;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
catch {
|
|
355
|
+
this.logger.info("unable to retrieve store");
|
|
356
|
+
}
|
|
357
|
+
this.logger.info("creating default store");
|
|
358
|
+
const defaultCurrency = await this.currencyService
|
|
359
|
+
.withTransaction(this.activeManager_)
|
|
360
|
+
.getDefaultCurrency();
|
|
361
|
+
store = storeRepo.create();
|
|
362
|
+
store = await storeRepo.save(store);
|
|
363
|
+
store.name = storeName;
|
|
364
|
+
this.logger.info("updating currencies in default store");
|
|
365
|
+
this.setDefaultCurrency(currency_1.default.DEFAULT_CURRENCY_CODE, store.id);
|
|
366
|
+
store.default_currency_code = defaultCurrency.code;
|
|
367
|
+
/* store = (await this.withTransaction(this.activeManager_).update(
|
|
368
|
+
{
|
|
369
|
+
name: storeName,
|
|
370
|
+
default_currency_code: defaultCurrency.code
|
|
371
|
+
},
|
|
372
|
+
store.id
|
|
373
|
+
)) as Store;*/
|
|
374
|
+
await storeRepo.save(store);
|
|
375
|
+
return store;
|
|
376
|
+
}
|
|
377
|
+
async addMemberToStore(user, storeId, role) {
|
|
378
|
+
const storeRepo = this.activeManager_.getRepository(store_1.Store);
|
|
379
|
+
const store = await storeRepo.findOne({
|
|
380
|
+
where: {
|
|
381
|
+
id: storeId
|
|
382
|
+
},
|
|
383
|
+
relations: ["members"]
|
|
384
|
+
});
|
|
385
|
+
user.role = role !== null && role !== void 0 ? role : user.role; /** over ride default role */
|
|
386
|
+
/** check if member exists in store */
|
|
387
|
+
if (store.members) {
|
|
388
|
+
const existingUser = store.members.find((userInStore) => {
|
|
389
|
+
return userInStore.id == user.id;
|
|
390
|
+
});
|
|
391
|
+
if (existingUser) {
|
|
392
|
+
return store;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
if (store.members &&
|
|
396
|
+
user.externalAccountId == store.externalAccountId &&
|
|
397
|
+
user.externalProviderId == store.externalProviderId) {
|
|
398
|
+
store.members.push(user);
|
|
399
|
+
}
|
|
400
|
+
else {
|
|
401
|
+
store.externalAccountId = user.externalAccountId;
|
|
402
|
+
store.externalProviderId = user.externalProviderId;
|
|
403
|
+
store.members = [user];
|
|
404
|
+
}
|
|
405
|
+
const updatedStore = await storeRepo.save(store);
|
|
406
|
+
return updatedStore;
|
|
407
|
+
}
|
|
408
|
+
async updateMemberToStore(user, storeId, role) {
|
|
409
|
+
return await this.atomicPhase_(async (manager) => {
|
|
410
|
+
var _a;
|
|
411
|
+
const storeRepo = manager.getRepository(store_1.Store);
|
|
412
|
+
const store = await storeRepo.findOne({
|
|
413
|
+
where: { id: storeId },
|
|
414
|
+
relations: ["members"]
|
|
415
|
+
});
|
|
416
|
+
user.role = role !== null && role !== void 0 ? role : user.role; /** over ride default role */
|
|
417
|
+
if (store.members &&
|
|
418
|
+
user.externalAccountId == store.externalAccountId &&
|
|
419
|
+
user.externalProviderId == store.externalProviderId) {
|
|
420
|
+
const index = store.members.findIndex((userInStore) => {
|
|
421
|
+
return (userInStore.id == user.id &&
|
|
422
|
+
userInStore.email == user.email);
|
|
423
|
+
});
|
|
424
|
+
if (index) {
|
|
425
|
+
/** updating member */
|
|
426
|
+
const member = store.members[index];
|
|
427
|
+
for (const key of Object.keys(user)) {
|
|
428
|
+
if (key == "email") {
|
|
429
|
+
continue;
|
|
430
|
+
}
|
|
431
|
+
member[key] = user[key];
|
|
432
|
+
}
|
|
433
|
+
// await storeRepo.save(store);
|
|
434
|
+
}
|
|
435
|
+
else {
|
|
436
|
+
throw new Error(`${user.email} doesn't belong to this store ${(_a = store.name) !== null && _a !== void 0 ? _a : store.id}`);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
else {
|
|
440
|
+
store.externalAccountId = user.externalAccountId;
|
|
441
|
+
store.externalProviderId = user.externalProviderId;
|
|
442
|
+
store.members = [user];
|
|
443
|
+
}
|
|
444
|
+
return await storeRepo.save(store);
|
|
445
|
+
// return store;
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
async createRegisteredStore(event) {
|
|
449
|
+
var _a;
|
|
450
|
+
let store;
|
|
451
|
+
const user = event.entity;
|
|
452
|
+
if ((_a = user.stores) === null || _a === void 0 ? void 0 : _a.length) {
|
|
453
|
+
return (store = await this.retrieve());
|
|
454
|
+
}
|
|
455
|
+
else if (user.role == medusa_1.UserRoles.ADMIN) {
|
|
456
|
+
store = (await this.create());
|
|
457
|
+
await this.addMemberToStore(user, store.id, user.role);
|
|
458
|
+
}
|
|
459
|
+
else {
|
|
460
|
+
store = await this.retrieveStoreInLoggedInUserAccount();
|
|
461
|
+
await this.addMemberToStore(user, store.id, user.role);
|
|
462
|
+
}
|
|
463
|
+
return store;
|
|
464
|
+
}
|
|
465
|
+
async setDefaultCurrency(code, store_id) {
|
|
466
|
+
const storeRepo = this.activeManager_.withRepository(this.storeRepository_);
|
|
467
|
+
const currencyRepository = this.activeManager_.withRepository(this.currencyRepository_);
|
|
468
|
+
const curr = await currencyRepository.findOne({
|
|
469
|
+
where: { code: code.toLowerCase() }
|
|
470
|
+
});
|
|
471
|
+
if (!curr) {
|
|
472
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.INVALID_DATA, `Currency ${code} not found`);
|
|
473
|
+
}
|
|
474
|
+
const store = await this.retrieveByStoreIdOrName(store_id, {
|
|
475
|
+
relations: ["currencies"]
|
|
476
|
+
});
|
|
477
|
+
const doesStoreInclCurrency = store.currencies
|
|
478
|
+
.map((c) => c.code.toLowerCase())
|
|
479
|
+
.includes(curr.code.toLowerCase());
|
|
480
|
+
if (doesStoreInclCurrency) {
|
|
481
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.DUPLICATE_ERROR, "Currency already added");
|
|
482
|
+
}
|
|
483
|
+
store.currencies = [curr];
|
|
484
|
+
store.default_currency_code = curr.code;
|
|
485
|
+
store.default_currency = curr;
|
|
486
|
+
return await storeRepo.save(store);
|
|
487
|
+
}
|
|
488
|
+
async update(data, id) {
|
|
489
|
+
if (!id) {
|
|
490
|
+
return (await super.update(data));
|
|
491
|
+
}
|
|
492
|
+
return await this.atomicPhase_(async (transactionManager) => {
|
|
493
|
+
const storeRepository = transactionManager.getRepository(store_1.Store);
|
|
494
|
+
const currencyRepository = transactionManager.getRepository(medusa_1.Currency);
|
|
495
|
+
const { metadata, default_currency_code, currencies: storeCurrencies, ...rest } = data;
|
|
496
|
+
const store = await this.retrieveByStoreIdOrName(id, {
|
|
497
|
+
relations: ["currencies"]
|
|
498
|
+
});
|
|
499
|
+
if (metadata) {
|
|
500
|
+
store.metadata = (0, medusa_1.setMetadata)(store, metadata);
|
|
501
|
+
}
|
|
502
|
+
if (storeCurrencies) {
|
|
503
|
+
const defaultCurr = default_currency_code !== null && default_currency_code !== void 0 ? default_currency_code : store.default_currency_code;
|
|
504
|
+
const hasDefCurrency = storeCurrencies.find((c) => c.toLowerCase() === defaultCurr.toLowerCase());
|
|
505
|
+
// throw if we are trying to remove a currency from store currently used as default
|
|
506
|
+
if (!hasDefCurrency) {
|
|
507
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.INVALID_DATA, "You are not allowed to remove default currency from store currencies without replacing it as well");
|
|
508
|
+
}
|
|
509
|
+
store.currencies = await Promise.all(storeCurrencies.map(async (curr) => {
|
|
510
|
+
const currency = await currencyRepository.findOne({
|
|
511
|
+
where: { code: curr.toLowerCase() }
|
|
512
|
+
});
|
|
513
|
+
if (!currency) {
|
|
514
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.INVALID_DATA, `Currency with code ${curr} does not exist`);
|
|
515
|
+
}
|
|
516
|
+
return currency;
|
|
517
|
+
}));
|
|
518
|
+
}
|
|
519
|
+
if (default_currency_code) {
|
|
520
|
+
const hasDefCurrency = store.currencies.find((c) => c.code.toLowerCase() ===
|
|
521
|
+
default_currency_code.toLowerCase());
|
|
522
|
+
if (!hasDefCurrency) {
|
|
523
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.INVALID_DATA, `Store does not have currency: ${default_currency_code}`);
|
|
524
|
+
}
|
|
525
|
+
const curr = (await currencyRepository.findOne({
|
|
526
|
+
where: {
|
|
527
|
+
code: default_currency_code.toLowerCase()
|
|
528
|
+
}
|
|
529
|
+
}));
|
|
530
|
+
store.default_currency = curr;
|
|
531
|
+
store.default_currency_code = curr.code;
|
|
532
|
+
}
|
|
533
|
+
for (const [key, value] of Object.entries(rest)) {
|
|
534
|
+
store[key] = value;
|
|
535
|
+
}
|
|
536
|
+
return await storeRepository.save(store);
|
|
537
|
+
});
|
|
538
|
+
}
|
|
539
|
+
async addCurrency(code, id) {
|
|
540
|
+
if (!id) {
|
|
541
|
+
return (await super.addCurrency(code));
|
|
542
|
+
}
|
|
543
|
+
return await this.atomicPhase_(async (transactionManager) => {
|
|
544
|
+
const storeRepo = transactionManager.getRepository(store_1.Store);
|
|
545
|
+
const currencyRepository = transactionManager.getRepository(medusa_1.Currency);
|
|
546
|
+
const curr = await currencyRepository.findOne({
|
|
547
|
+
where: { code: code.toLowerCase() }
|
|
548
|
+
});
|
|
549
|
+
if (!curr) {
|
|
550
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.INVALID_DATA, `Currency ${code} not found`);
|
|
551
|
+
}
|
|
552
|
+
const store = await this.retrieve({
|
|
553
|
+
relations: ["currencies"]
|
|
554
|
+
});
|
|
555
|
+
const doesStoreInclCurrency = store.currencies
|
|
556
|
+
.map((c) => c.code.toLowerCase())
|
|
557
|
+
.includes(curr.code.toLowerCase());
|
|
558
|
+
if (doesStoreInclCurrency) {
|
|
559
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.DUPLICATE_ERROR, "Currency already added");
|
|
560
|
+
}
|
|
561
|
+
store.currencies = [...store.currencies, curr];
|
|
562
|
+
return await storeRepo.save(store);
|
|
563
|
+
});
|
|
564
|
+
}
|
|
565
|
+
/**
|
|
566
|
+
* Removes a currency from the store
|
|
567
|
+
* @param code - 3 character ISO currency code
|
|
568
|
+
* @return result after update
|
|
569
|
+
*/
|
|
570
|
+
async removeCurrency(code, id) {
|
|
571
|
+
if (!id) {
|
|
572
|
+
return (await super.removeCurrency(code));
|
|
573
|
+
}
|
|
574
|
+
const storeRepo = this.activeManager_.getRepository(store_1.Store);
|
|
575
|
+
const store = await this.retrieveByStoreIdOrName(id, {
|
|
576
|
+
relations: ["currencies"]
|
|
577
|
+
});
|
|
578
|
+
const doesCurrencyExists = store.currencies.some((c) => c.code === code.toLowerCase());
|
|
579
|
+
if (!doesCurrencyExists) {
|
|
580
|
+
return store;
|
|
581
|
+
}
|
|
582
|
+
store.currencies = store.currencies.filter((c) => c.code !== code);
|
|
583
|
+
return await storeRepo.save(store);
|
|
584
|
+
}
|
|
585
|
+
async purgeStore(store_id) {
|
|
586
|
+
const storeRepo = this.activeManager_.getRepository(store_1.Store);
|
|
587
|
+
return await storeRepo.delete({
|
|
588
|
+
id: store_id
|
|
589
|
+
});
|
|
590
|
+
}
|
|
591
|
+
async retrieveStore(idOrNameOrSlug) {
|
|
592
|
+
const storeRepo = this.activeManager_.getRepository(store_1.Store);
|
|
593
|
+
return await storeRepo.findOne({
|
|
594
|
+
where: [
|
|
595
|
+
{
|
|
596
|
+
id: idOrNameOrSlug
|
|
597
|
+
},
|
|
598
|
+
{
|
|
599
|
+
name: idOrNameOrSlug
|
|
600
|
+
}
|
|
601
|
+
]
|
|
602
|
+
});
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
exports.default = StoreService;
|
|
606
|
+
StoreService.LIFE_TIME = awilix_1.Lifetime.SCOPED;
|
|
607
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/services/store.ts"],"names":[],"mappings":"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"}
|