@things-factory/operato-mms 5.0.0-alpha.5 → 5.0.0-alpha.50
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-server/graphql/resolvers/interface-with-hub/add-release-order.js +70 -69
- package/dist-server/graphql/resolvers/interface-with-hub/add-release-order.js.map +1 -1
- package/dist-server/graphql/resolvers/interface-with-hub/auto-add-release-order.js +70 -69
- package/dist-server/graphql/resolvers/interface-with-hub/auto-add-release-order.js.map +1 -1
- package/dist-server/graphql/resolvers/interface-with-hub/warehouse-marketplace-products.js +32 -24
- package/dist-server/graphql/resolvers/interface-with-hub/warehouse-marketplace-products.js.map +1 -1
- package/dist-server/routers/etrax-router.js +27 -11
- package/dist-server/routers/etrax-router.js.map +1 -1
- package/package.json +60 -62
- package/server/graphql/resolvers/interface-with-hub/add-release-order.ts +73 -75
- package/server/graphql/resolvers/interface-with-hub/auto-add-release-order.ts +73 -75
- package/server/graphql/resolvers/interface-with-hub/warehouse-marketplace-products.ts +36 -24
- package/server/routers/etrax-router.ts +40 -13
- package/translations/en.json +2 -0
- package/translations/ko.json +21 -19
- package/translations/ms.json +2 -0
- package/translations/zh.json +2 -0
- package/config.development.js +0 -88
|
@@ -77,17 +77,24 @@ etraxRouter.post(`/lmd/etrax/status_update`, async (context, next) => {
|
|
|
77
77
|
'marketplaceOrderItems',
|
|
78
78
|
'marketplaceOrderItems.marketplaceOrderShippingItems',
|
|
79
79
|
'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping',
|
|
80
|
-
'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping.fulfillmentCenter'
|
|
80
|
+
'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping.fulfillmentCenter',
|
|
81
|
+
'marketplaceOrderItems.marketplaceProductVariation',
|
|
81
82
|
]
|
|
82
83
|
})
|
|
83
84
|
let orderItems: MarketplaceOrderItem[] = order.marketplaceOrderItems
|
|
84
85
|
|
|
86
|
+
const marketplaceStore: MarketplaceStore = order.marketplaceStore
|
|
87
|
+
|
|
88
|
+
const marketplaceTransporter: MarketplaceTransporter = await getRepository(MarketplaceTransporter).findOne({
|
|
89
|
+
where: { marketplaceStore },
|
|
90
|
+
relations: ['pickupTransporter']
|
|
91
|
+
})
|
|
92
|
+
|
|
85
93
|
for (const orderItem of orderItems) {
|
|
86
94
|
if (orderItem.marketplaceOrderShippingItems[0].marketplaceOrderShipping !== null) {
|
|
87
95
|
const orderShippingItems: MarketplaceOrderShippingItem[] = orderItem.marketplaceOrderShippingItems
|
|
88
96
|
const orderShipping: MarketplaceOrderShipping = orderShippingItems[0].marketplaceOrderShipping
|
|
89
97
|
const fulfillmentCenter: FulfillmentCenter = orderShipping?.fulfillmentCenter
|
|
90
|
-
const marketplaceStore: MarketplaceStore = order.marketplaceStore
|
|
91
98
|
|
|
92
99
|
const currentDate: Date = new Date()
|
|
93
100
|
|
|
@@ -98,11 +105,6 @@ etraxRouter.post(`/lmd/etrax/status_update`, async (context, next) => {
|
|
|
98
105
|
customerBizplace => customerBizplace.company.domain.id == order?.domain.id
|
|
99
106
|
).id
|
|
100
107
|
|
|
101
|
-
const marketplaceTransporter: MarketplaceTransporter = await getRepository(MarketplaceTransporter).findOne({
|
|
102
|
-
where: { marketplaceStore },
|
|
103
|
-
relations: ['pickupTransporter']
|
|
104
|
-
})
|
|
105
|
-
|
|
106
108
|
let patch = {
|
|
107
109
|
id: orderShipping.releaseOrderId,
|
|
108
110
|
trackingNo: trackingNo,
|
|
@@ -117,14 +119,11 @@ etraxRouter.post(`/lmd/etrax/status_update`, async (context, next) => {
|
|
|
117
119
|
|
|
118
120
|
await orderShippingRepo.update(
|
|
119
121
|
{ id: orderShipping.id },
|
|
120
|
-
{ trackingNo: trackingNo, airwayBill: awbUrl, updatedAt: currentDate }
|
|
122
|
+
{ trackingNo: trackingNo, airwayBill: awbUrl, updatedAt: currentDate, transporter: marketplaceTransporter?.pickupTransporter.name || orderShipping.transporter }
|
|
121
123
|
)
|
|
122
124
|
}
|
|
123
125
|
}
|
|
124
126
|
|
|
125
|
-
const storeId = order.marketplaceStore.id
|
|
126
|
-
const marketplaceStore: MarketplaceStore = await StoreAPI.getMarketplaceStore(storeId)
|
|
127
|
-
|
|
128
127
|
// to-do update tracking no to every marketplaces
|
|
129
128
|
if (marketplaceStore.platform === 'woocommerce' || marketplaceStore.platform === 'shopify') {
|
|
130
129
|
const note = 'http://ets.sntglobal.com/?mod=tracking&action=index&orders=' + trackingNo
|
|
@@ -139,17 +138,45 @@ etraxRouter.post(`/lmd/etrax/status_update`, async (context, next) => {
|
|
|
139
138
|
trackingUrl: note,
|
|
140
139
|
trackingNo,
|
|
141
140
|
order: orderInfo,
|
|
142
|
-
note
|
|
141
|
+
note,
|
|
142
|
+
transporter: marketplaceTransporter?.pickupTransporter.name
|
|
143
143
|
})
|
|
144
144
|
|
|
145
145
|
if (marketplaceStore.platform === 'woocommerce') {
|
|
146
146
|
await StoreAPI.updateOrderStatus(marketplaceStore, {
|
|
147
147
|
orderId: order.name,
|
|
148
|
-
status: '
|
|
148
|
+
status: 'DELIVERED'
|
|
149
149
|
})
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
+
try {
|
|
154
|
+
const updatedOrder = await StoreAPI.getStoreOrder(marketplaceStore, { orderId: order.name })
|
|
155
|
+
|
|
156
|
+
order.status = updatedOrder.status
|
|
157
|
+
order.orderUpdatedAt = updatedOrder.orderUpdatedAt
|
|
158
|
+
order.trackingNo = updatedOrder.trackingNo
|
|
159
|
+
order.shippingProvider = updatedOrder.shippingProvider
|
|
160
|
+
await getRepository(MarketplaceOrder).save(order)
|
|
161
|
+
|
|
162
|
+
for (let idx = 0; idx < order.marketplaceOrderItems.length; idx++) {
|
|
163
|
+
let matchItem = updatedOrder.orderItems.find(
|
|
164
|
+
i => i.variationId == order.marketplaceOrderItems[idx].marketplaceProductVariation.variationId
|
|
165
|
+
)
|
|
166
|
+
|
|
167
|
+
if (matchItem) {
|
|
168
|
+
let targetMarketplaceOrderItem = {
|
|
169
|
+
...order.marketplaceOrderItems[idx],
|
|
170
|
+
shippingProvider: matchItem.shippingProvider,
|
|
171
|
+
trackingCode: matchItem.trackingNo,
|
|
172
|
+
status: matchItem.status
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
await getRepository(MarketplaceOrderItem).save(targetMarketplaceOrderItem)
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
} catch(e) {}
|
|
179
|
+
|
|
153
180
|
const resp = {
|
|
154
181
|
Status: 'SUCCESS',
|
|
155
182
|
Code: 200,
|
package/translations/en.json
CHANGED
|
@@ -114,6 +114,7 @@
|
|
|
114
114
|
"field.required_branch": "required branch",
|
|
115
115
|
"field.required_sender": "required sender",
|
|
116
116
|
"field.required_tracking": "required tracking",
|
|
117
|
+
"field.reserve_enabled": "reserve enabled",
|
|
117
118
|
"field.reserve_qty": "reserve qty",
|
|
118
119
|
"field.ro_created": "ro created",
|
|
119
120
|
"field.save": "save",
|
|
@@ -145,6 +146,7 @@
|
|
|
145
146
|
"field.town": "town",
|
|
146
147
|
"field.tracking_no": "tracking no",
|
|
147
148
|
"field.tracking_url": "tracking URL",
|
|
149
|
+
"field.transporter": "transporter",
|
|
148
150
|
"field.type": "type",
|
|
149
151
|
"field.unit": "unit",
|
|
150
152
|
"field.uom_value": "UOM value",
|
package/translations/ko.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
|
-
"field.variation_id": "
|
|
3
|
-
"field.voucher_amt": "
|
|
2
|
+
"field.variation_id": "변수 ID",
|
|
3
|
+
"field.voucher_amt": "바우처 금액",
|
|
4
4
|
"field.shipping_rebate": "[ko] shipping rebate",
|
|
5
|
-
"field.shipping_mode": "
|
|
5
|
+
"field.shipping_mode": "선적 모드",
|
|
6
6
|
"field.service_fee": "[ko] service fee",
|
|
7
7
|
"field.transaction_fee": "[ko] transaction fee",
|
|
8
8
|
"field.total_released_amt": "[ko] total release amount",
|
|
9
|
-
"field.voucher_code": "
|
|
9
|
+
"field.voucher_code": "바우처 코드",
|
|
10
10
|
"field.comission_fee": "[ko] comission fee",
|
|
11
|
-
"field.fulfilment_center": "
|
|
12
|
-
"button.add_product": "
|
|
13
|
-
"button.add": "
|
|
11
|
+
"field.fulfilment_center": "풀필먼트센터",
|
|
12
|
+
"button.add_product": "상품 추가",
|
|
13
|
+
"button.add": "추가",
|
|
14
14
|
"button.airway_bill": "[ko] airway bill",
|
|
15
15
|
"button.auto_link": "[ko] auto link",
|
|
16
16
|
"button.back": "[ko] back",
|
|
@@ -45,15 +45,15 @@
|
|
|
45
45
|
"field.address_id": "[ko] address id",
|
|
46
46
|
"field.assigned_warehouse_sku": "[ko] assigned warehouse sku",
|
|
47
47
|
"field.auto_shipping_fee_subsidy_by_lazada": "[ko] auto shipping fee subsidy (by lazada)",
|
|
48
|
-
"field.available_to_purchase": "
|
|
49
|
-
"field.available": "
|
|
48
|
+
"field.available_to_purchase": "구매 가능",
|
|
49
|
+
"field.available": "가능",
|
|
50
50
|
"field.batch_id": "[ko] batch no",
|
|
51
51
|
"field.branch_id": "[ko] branch id",
|
|
52
52
|
"field.branch": "[ko] branch",
|
|
53
|
-
"field.buyer_username": "
|
|
54
|
-
"field.channel_sku": "
|
|
55
|
-
"field.city": "
|
|
56
|
-
"field.country": "
|
|
53
|
+
"field.buyer_username": "구매자 이름",
|
|
54
|
+
"field.channel_sku": "채널 SKU",
|
|
55
|
+
"field.city": "도시",
|
|
56
|
+
"field.country": "국가",
|
|
57
57
|
"field.commission_fee": "[ko] commission fee",
|
|
58
58
|
"field.criteria": "[ko] criteria",
|
|
59
59
|
"field.date": "[ko] date",
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"field.is_splitted": "[ko] splitted",
|
|
70
70
|
"field.item_count": "[ko] item count",
|
|
71
71
|
"field.item_price_credit": "[ko] item price credit",
|
|
72
|
-
"field.item": "
|
|
72
|
+
"field.item": "항목",
|
|
73
73
|
"field.last_updated": "[ko] last updated",
|
|
74
74
|
"field.lazada_bonus": "[ko] lazada bonus",
|
|
75
75
|
"field.lazada_bonus_lzd_cofund": "[ko] lazada bonus - LZD co-fund",
|
|
@@ -114,6 +114,7 @@
|
|
|
114
114
|
"field.required_branch": "[ko] required branch",
|
|
115
115
|
"field.required_sender": "[ko] required sender",
|
|
116
116
|
"field.required_tracking": "[ko] required tracking",
|
|
117
|
+
"field.reserve_enabled": "[ko] reserve enabled",
|
|
117
118
|
"field.reserve_qty": "[ko] reserve qty",
|
|
118
119
|
"field.ro_created": "[ko] ro created",
|
|
119
120
|
"field.save": "[ko] save",
|
|
@@ -144,6 +145,7 @@
|
|
|
144
145
|
"field.town": "[ko] town",
|
|
145
146
|
"field.tracking_no": "[ko] tracking no",
|
|
146
147
|
"field.tracking_url": "[ko] tracking URL",
|
|
148
|
+
"field.transporter": "[ko] transporter",
|
|
147
149
|
"field.type": "[ko] type",
|
|
148
150
|
"field.unit": "[ko] unit",
|
|
149
151
|
"field.uom_value": "[ko] UOM value",
|
|
@@ -358,8 +360,8 @@
|
|
|
358
360
|
"title.stock_replenishment_detail": "[ko] stock replenishment detail",
|
|
359
361
|
"title.stock_replenishment_list": "[ko] stock replenishment list",
|
|
360
362
|
"title.stock_replenishment": "[ko] stock replenishment",
|
|
361
|
-
"title.sync_marketplace_order": "
|
|
362
|
-
"title.uploaded_images": "
|
|
363
|
-
"title.vas": "
|
|
364
|
-
"title.warehouse_products": "
|
|
365
|
-
}
|
|
363
|
+
"title.sync_marketplace_order": "마켓플레이스 주문 동기화",
|
|
364
|
+
"title.uploaded_images": "업로드된 이미지",
|
|
365
|
+
"title.vas": "VAS",
|
|
366
|
+
"title.warehouse_products": "창고 상품"
|
|
367
|
+
}
|
package/translations/ms.json
CHANGED
|
@@ -114,6 +114,7 @@
|
|
|
114
114
|
"field.required_branch": "[ms] required branch",
|
|
115
115
|
"field.required_sender": "[ms] required sender",
|
|
116
116
|
"field.required_tracking": "[ms] required tracking",
|
|
117
|
+
"field.reserve_enabled": "[ms] reserve enabled",
|
|
117
118
|
"field.reserve_qty": "[ms] reserve qty",
|
|
118
119
|
"field.ro_created": "[ms] ro created",
|
|
119
120
|
"field.save": "[ms] save",
|
|
@@ -144,6 +145,7 @@
|
|
|
144
145
|
"field.town": "[ms] town",
|
|
145
146
|
"field.tracking_no": "[ms] tracking no",
|
|
146
147
|
"field.tracking_url": "[ms] tracking URL",
|
|
148
|
+
"field.transporter": "[ms] transporter",
|
|
147
149
|
"field.type": "[ms] type",
|
|
148
150
|
"field.unit": "[ms] unit",
|
|
149
151
|
"field.uom_value": "[ms] UOM value",
|
package/translations/zh.json
CHANGED
|
@@ -114,6 +114,7 @@
|
|
|
114
114
|
"field.required_branch": "[zh] required branch",
|
|
115
115
|
"field.required_sender": "[zh] required sender",
|
|
116
116
|
"field.required_tracking": "[zh] required tracking",
|
|
117
|
+
"field.reserve_enabled": "[zh] reserve enabled",
|
|
117
118
|
"field.reserve_qty": "[zh] reserve qty",
|
|
118
119
|
"field.ro_created": "[zh] ro created",
|
|
119
120
|
"field.save": "[zh] save",
|
|
@@ -144,6 +145,7 @@
|
|
|
144
145
|
"field.town": "[zh] town",
|
|
145
146
|
"field.tracking_no": "[zh] tracking no",
|
|
146
147
|
"field.tracking_url": "[zh] tracking URL",
|
|
148
|
+
"field.transporter": "[zh] transporter",
|
|
147
149
|
"field.type": "[zh] type",
|
|
148
150
|
"field.unit": "[zh] unit",
|
|
149
151
|
"field.uom_value": "[zh] UOM value",
|
package/config.development.js
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
domainType: 'company',
|
|
3
|
-
ormconfig: {
|
|
4
|
-
name: 'default',
|
|
5
|
-
type: 'sqlite',
|
|
6
|
-
database: 'db.sqlite',
|
|
7
|
-
synchronize: false,
|
|
8
|
-
logging: true,
|
|
9
|
-
logger: 'debug'
|
|
10
|
-
// name: 'default',
|
|
11
|
-
// type: 'postgres',
|
|
12
|
-
// database: 'postgres',
|
|
13
|
-
// username: 'postgres',
|
|
14
|
-
// password: 'abcd1234',
|
|
15
|
-
// host: 'localhost',
|
|
16
|
-
// port: 15432,
|
|
17
|
-
// synchronize: true,
|
|
18
|
-
// logging: true
|
|
19
|
-
},
|
|
20
|
-
oauth2: {
|
|
21
|
-
platforms: [
|
|
22
|
-
{
|
|
23
|
-
name: 'Operato Hub',
|
|
24
|
-
apiURL: 'http://operato-m.localhost:3000/api'
|
|
25
|
-
}
|
|
26
|
-
]
|
|
27
|
-
},
|
|
28
|
-
useVirtualHostBasedDomain: false,
|
|
29
|
-
port: 5000,
|
|
30
|
-
uploads: 'uploads',
|
|
31
|
-
attachmentsPath: 'attachments',
|
|
32
|
-
SECRET: '0xD58F835B69D207A76CC5F84a70a1D0d4C79dfC95',
|
|
33
|
-
logger: {
|
|
34
|
-
file: {
|
|
35
|
-
filename: 'logs/application-%DATE%.log',
|
|
36
|
-
datePattern: 'YYYY-MM-DD-HH',
|
|
37
|
-
zippedArchive: true,
|
|
38
|
-
maxSize: '200m',
|
|
39
|
-
maxFiles: '1m',
|
|
40
|
-
level: 'info'
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
fulfillmentIntegrationOperato: {
|
|
44
|
-
host: 'operatohub.com',
|
|
45
|
-
platform: 'operato',
|
|
46
|
-
application: 'Operato MMS',
|
|
47
|
-
appKey: '480d19cbfb0655357878119559d47333',
|
|
48
|
-
appSecret: 'dc5078bc17d50a18ef6fc3188934bbbd',
|
|
49
|
-
callback: 'https://www.myoperato.com/callback-operato'
|
|
50
|
-
},
|
|
51
|
-
marketplaceIntegrationShopee: {
|
|
52
|
-
platform: 'shopee',
|
|
53
|
-
isUAT: false,
|
|
54
|
-
application: 'Operato MMS',
|
|
55
|
-
partnerId: 846025,
|
|
56
|
-
partnerKey: 'd34cfd85a603f196a0d74ebe08043280c1a27788bb36bdffd61e7e0bb1c90b64'
|
|
57
|
-
},
|
|
58
|
-
marketplaceIntegrationLazada: {
|
|
59
|
-
platform: 'lazada',
|
|
60
|
-
application: 'operato-mms',
|
|
61
|
-
appKey: '120961',
|
|
62
|
-
appSecret: 'HB3RTNEXHlVSlBr9SmWF8AjbSUT7a825',
|
|
63
|
-
callback: 'https://myoperato.com/lazada-callback'
|
|
64
|
-
},
|
|
65
|
-
notification: {
|
|
66
|
-
fcm: {
|
|
67
|
-
serviceAccount: {
|
|
68
|
-
project_id: 'operato',
|
|
69
|
-
private_key:
|
|
70
|
-
'-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDYNOfyNjPMSeG9\nzU1qs0cpVK5cVfadcUaw5g+hkQZMOMlAA7uqW2eX4vkayj7MzbYUayH+sei8044Q\nJIyl6f26dNX1VT3UgTmSmCS0v48EBEZHCgusrUGFjduLRN6OS6uvrXW1xKA18k9q\nai1C2EHCXF2AE4PTvf239RC1UIOnVePcMtT7rMTdHRO4s8OKVuSDbzIt8k1cV3Zt\nES0YsJlkELqBisYpV//2/ZSILTt39J9JzrVef03X9kkoo9p+YnNyy6tWsfQPfgJO\nybiRGBNxiyJ/E2pxRo/WqU0go9OzYJlGaSUrUx09heNiRD1b0MAOmyPDJz/6AaTk\nkU/A+kLzAgMBAAECggEADQ5s2gtR53VSujk1V/Xe8e0Di99DwaWUj5w6YhcK7/wX\nPdQRN4Fw6RLeLjL7xeG/rCNSwzm6hKSrQJL5zLnWW7XbMdyQRk6jdmnVAEv3zACi\nFH9+eFK3e+Q214XfgWz/v4p/FZdRLCYni5VBNHcwyWxLLS/V1ynzB3KM1sDiTRmI\npcT7+uTtwrKgJq64sXtFE2pYrFxDdCiyqzkhv/2ed4YIowAjpKBbbcCDKeVxVkoz\nC1P4PAzs9EeUuKSWYrWaUjN17lqtRlYeT1ylR1PIJuWqd4cKfgoEgz+lHwRPDCEX\nAYbk3nofiJIPBhSfCHrXS755wK48mY8vMwFdfCPJeQKBgQDsz4tjYTHdat5A25n5\nekwMxZwFQ5OvMV4eulwZUDMypTAYSz1iB6sDlgwKDm5omZIfuneqCEIvrqxV/kx3\n5wV/DANHO3hYxdp/NV7rM23xmqlaKZhHQbDono1Fm/LP6DEmJiD7N2eFKsXYcPpR\nSAIdCv0X3zkDQ4zRi51yJlCXzQKBgQDpufJBxCoXngiQJ2j14lWVAeOOdQ6zh5Ip\nBcDwF0X67cNSN3Wl40bS4yLFdolhEAyj5m0WPuYYXpjzhHhZ0W3V3ItdBkrmwIvy\nWOWu26qN0ZbwxVS2qVpHuj6iHWJKHuDZZUkFtJg3BeeBSOUHSA8TvjnA0xd83xeb\n8ZJasWoFvwKBgQDFs/gQ/gIdcq0exLfluh5nw0qgcmyHpNWJHdjqITS9IX/nqFkU\n0IYLtmdStf2jQiLmbkydHcvz9wZVvLqml67VBHhwLcwpgPULoskd34/4V0Dvzy4c\nv1Esw8H5zVqIDLeLu+VpFjZMzQrjyl6RIWbyTExEc84rVWfpQYAu3qIGOQKBgAFr\nXatEk7TdAtRNSPflTfu/rTAaSeKROjQBkvBiU8x4US1YpOBDBxUUyAtG8wKh5FHC\nfnsaGq+fM3KXJVv2R6J62mXQOfg4xyDLpWlwcBK4aSBBMoiBcsjouqSlZQlqMpdf\nZBgixqHe6U8BsFJg/6ZxC0y+e3AIss4Bo4/lb+1lAoGAFOexvaBh21K6W3inmRW4\nLlkVYJaBJ20OwokXg5aXjBiHxqmk7VLAuFbkpb5LOKH2xPILRQ0OEkn51yVymS3T\n9lLpHOFTQXt5tF2/F7NW7kaQJNlLr/h5jPi3O9XHeFmuaN2z150ZB6zzgjeGKzr8\ni+1fgTsRfDtNw8xkSH9qL1Y=\n-----END PRIVATE KEY-----\n',
|
|
71
|
-
client_email: 'firebase-adminsdk-xmm2e@operato.iam.gserviceaccount.com'
|
|
72
|
-
},
|
|
73
|
-
appConfig: {
|
|
74
|
-
apiKey: 'AIzaSyDdTM2BTLHSt2LNS0G5QB8G0i4KBXFiG7U',
|
|
75
|
-
projectId: 'operato',
|
|
76
|
-
messagingSenderId: 79537064975,
|
|
77
|
-
appId: '1:79537064975:web:32f53119e9c8c6ee2a277a'
|
|
78
|
-
},
|
|
79
|
-
serverKey:
|
|
80
|
-
'AAAAEoTHTA8:APA91bGwt-4HT82Dfwf_VwbQaKT0_qHd0Y3tuW41udjWz5Lz0Ko0mEMD6WbHHSILvQpa6yuoGGKCMsrU7VW2qWRrUm3CYpyG9oSwshNm1tIhljAnOuUfwHCoawbVLwf9qlWpHt4dwCoc'
|
|
81
|
-
},
|
|
82
|
-
vapidKey: {
|
|
83
|
-
subject: 'mailto:heartyoh@hatiolab.com',
|
|
84
|
-
publicKey: 'BAkVkITsCXBIsYL1yeaBmx5_dn57we-ZXMjirPPHzC2dan82cdEnAio_53PQ-1_w3ykWCBPrrFAWQ_d9N4cFF0o',
|
|
85
|
-
privateKey: '4pmlt3Wk019u7nqU3Q_oGZE6LbUDjjf8DpmAcn9-iss'
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|