@shopfront/bridge 2.0.1 → 2.0.4
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/.github/workflows/npm-publish.yml +13 -2
- package/lib/Application.d.ts +2 -18
- package/lib/Application.js +1 -141
- package/lib/ApplicationEvents.d.ts +54 -5
- package/lib/BaseApplication.d.ts +11 -17
- package/lib/BaseApplication.js +197 -1
- package/lib/BaseBridge.d.ts +1 -0
- package/lib/BaseBridge.js +1 -3
- package/lib/Bridge.d.ts +0 -19
- package/lib/Bridge.js +2 -1
- package/lib/Events/DirectEvents/BaseDirectEvent.d.ts +13 -0
- package/lib/Events/DirectEvents/BaseDirectEvent.js +5 -0
- package/lib/Events/DirectEvents/SaleAddCustomer.d.ts +13 -0
- package/lib/Events/DirectEvents/SaleAddCustomer.js +24 -0
- package/lib/Events/DirectEvents/SaleAddProduct.d.ts +13 -0
- package/lib/Events/DirectEvents/SaleAddProduct.js +24 -0
- package/lib/Events/DirectEvents/SaleChangeQuantity.d.ts +13 -0
- package/lib/Events/DirectEvents/SaleChangeQuantity.js +24 -0
- package/lib/Events/DirectEvents/SaleClear.d.ts +13 -0
- package/lib/Events/DirectEvents/SaleClear.js +21 -0
- package/lib/Events/DirectEvents/SaleRemoveCustomer.d.ts +13 -0
- package/lib/Events/DirectEvents/SaleRemoveCustomer.js +21 -0
- package/lib/Events/DirectEvents/SaleRemoveProduct.d.ts +13 -0
- package/lib/Events/DirectEvents/SaleRemoveProduct.js +24 -0
- package/lib/Events/DirectEvents/SaleUpdateProducts.d.ts +13 -0
- package/lib/Events/DirectEvents/SaleUpdateProducts.js +24 -0
- package/lib/Events/DirectEvents/types/SaleEventData.d.ts +70 -0
- package/lib/Events/DirectEvents/types/SaleEventData.js +1 -0
- package/lib/Mocks/APIs/Sale/MockCurrentSale.d.ts +7 -2
- package/lib/Mocks/APIs/Sale/MockCurrentSale.js +94 -10
- package/lib/Mocks/MockApplication.d.ts +8 -21
- package/lib/Mocks/MockApplication.js +12 -165
- package/lib/Mocks/MockBridge.d.ts +1 -1
- package/lib/Mocks/MockBridge.js +3 -1
- package/package.json +1 -1
- package/.idea/codeStyles/Project.xml +0 -10
- package/.idea/codeStyles/codeStyleConfig.xml +0 -5
- package/.idea/git_toolbox_blame.xml +0 -6
- package/.idea/git_toolbox_prj.xml +0 -15
- package/.idea/inspectionProfiles/Project_Default.xml +0 -11
- package/.idea/jsLinters/eslint.xml +0 -6
- package/.idea/misc.xml +0 -6
- package/.idea/modules.xml +0 -8
- package/.idea/php.xml +0 -33
- package/.idea/shopfront-embedded-bridge.iml +0 -10
- package/.idea/vcs.xml +0 -6
|
@@ -1,27 +1,5 @@
|
|
|
1
1
|
import { isDirectShopfrontEvent, ToShopfront, } from "../ApplicationEvents.js";
|
|
2
2
|
import { BaseApplication } from "../BaseApplication.js";
|
|
3
|
-
import { AudioPermissionChange } from "../Events/AudioPermissionChange.js";
|
|
4
|
-
import { AudioReady } from "../Events/AudioReady.js";
|
|
5
|
-
import { FormatIntegratedProduct } from "../Events/FormatIntegratedProduct.js";
|
|
6
|
-
import { FulfilmentCollectOrder } from "../Events/FulfilmentCollectOrder.js";
|
|
7
|
-
import { FulfilmentCompleteOrder } from "../Events/FulfilmentCompleteOrder.js";
|
|
8
|
-
import { FulfilmentGetOrder } from "../Events/FulfilmentGetOrder.js";
|
|
9
|
-
import { FulfilmentOrderApproval } from "../Events/FulfilmentOrderApproval.js";
|
|
10
|
-
import { FulfilmentProcessOrder } from "../Events/FulfilmentProcessOrder.js";
|
|
11
|
-
import { FulfilmentVoidOrder } from "../Events/FulfilmentVoidOrder.js";
|
|
12
|
-
import { GiftCardCodeCheck } from "../Events/GiftCardCodeCheck.js";
|
|
13
|
-
import { InternalPageMessage } from "../Events/InternalPageMessage.js";
|
|
14
|
-
import { PaymentMethodsEnabled } from "../Events/PaymentMethodsEnabled.js";
|
|
15
|
-
import { Ready } from "../Events/Ready.js";
|
|
16
|
-
import { RegisterChanged } from "../Events/RegisterChanged.js";
|
|
17
|
-
import { RequestButtons } from "../Events/RequestButtons.js";
|
|
18
|
-
import { RequestCustomerListOptions } from "../Events/RequestCustomerListOptions.js";
|
|
19
|
-
import { RequestSaleKeys } from "../Events/RequestSaleKeys.js";
|
|
20
|
-
import { RequestSellScreenOptions } from "../Events/RequestSellScreenOptions.js";
|
|
21
|
-
import { RequestSettings } from "../Events/RequestSettings.js";
|
|
22
|
-
import { RequestTableColumns } from "../Events/RequestTableColumns.js";
|
|
23
|
-
import { SaleComplete } from "../Events/SaleComplete.js";
|
|
24
|
-
import { UIPipeline } from "../Events/UIPipeline.js";
|
|
25
3
|
import ActionEventRegistrar from "../Utilities/ActionEventRegistrar.js";
|
|
26
4
|
import { MockCurrentSale } from "./APIs/Sale/MockCurrentSale.js";
|
|
27
5
|
import { MockDatabase } from "./Database/MockDatabase.js";
|
|
@@ -32,7 +10,7 @@ export class MockApplication extends BaseApplication {
|
|
|
32
10
|
/**
|
|
33
11
|
* Handles an application event
|
|
34
12
|
*/
|
|
35
|
-
this.handleEvent = (event, data, id) => {
|
|
13
|
+
this.handleEvent = async (event, data, id) => {
|
|
36
14
|
if (event === "READY") {
|
|
37
15
|
this.isReady = true;
|
|
38
16
|
this.key = data.key;
|
|
@@ -66,7 +44,7 @@ export class MockApplication extends BaseApplication {
|
|
|
66
44
|
// Handled elsewhere
|
|
67
45
|
return;
|
|
68
46
|
}
|
|
69
|
-
this.emit(event, data, id);
|
|
47
|
+
await this.emit(event, data, id);
|
|
70
48
|
};
|
|
71
49
|
/**
|
|
72
50
|
* Updates the cached location data
|
|
@@ -95,21 +73,18 @@ export class MockApplication extends BaseApplication {
|
|
|
95
73
|
/**
|
|
96
74
|
* Calls any registered listeners for the received event
|
|
97
75
|
*/
|
|
98
|
-
emit(event, data = {}, id) {
|
|
76
|
+
async emit(event, data = {}, id) {
|
|
99
77
|
if (isDirectShopfrontEvent(event)) {
|
|
100
78
|
const listeners = this.directListeners[event];
|
|
101
79
|
if (typeof listeners === "undefined") {
|
|
102
|
-
|
|
103
|
-
return;
|
|
80
|
+
return this.bridge.sendMessage(ToShopfront.NOT_LISTENING_TO_EVENT);
|
|
104
81
|
}
|
|
105
82
|
const results = [];
|
|
106
83
|
for (const e of listeners.values()) {
|
|
107
|
-
results.push(e());
|
|
84
|
+
results.push(e.emit(data));
|
|
108
85
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
// Ensure void is returned
|
|
112
|
-
});
|
|
86
|
+
await Promise.all(results);
|
|
87
|
+
return;
|
|
113
88
|
}
|
|
114
89
|
const results = [];
|
|
115
90
|
if (typeof this.listeners[event] === "undefined") {
|
|
@@ -124,137 +99,9 @@ export class MockApplication extends BaseApplication {
|
|
|
124
99
|
for (const e of this.listeners[event].values()) {
|
|
125
100
|
results.push(e.emit(data, bridge));
|
|
126
101
|
}
|
|
102
|
+
await Promise.allSettled(results);
|
|
127
103
|
// The responses have been removed as we don't currently need them
|
|
128
104
|
}
|
|
129
|
-
/**
|
|
130
|
-
* @inheritDoc
|
|
131
|
-
*/
|
|
132
|
-
addEventListener(event, callback) {
|
|
133
|
-
if (isDirectShopfrontEvent(event)) {
|
|
134
|
-
if (typeof this.directListeners[event] === "undefined") {
|
|
135
|
-
this.directListeners[event] = new Set();
|
|
136
|
-
}
|
|
137
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
138
|
-
this.directListeners[event].add(callback);
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
142
|
-
let c;
|
|
143
|
-
switch (event) {
|
|
144
|
-
case "READY":
|
|
145
|
-
c = new Ready(callback);
|
|
146
|
-
this.listeners[event].set(callback, c);
|
|
147
|
-
break;
|
|
148
|
-
case "REQUEST_SETTINGS":
|
|
149
|
-
c = new RequestSettings(callback);
|
|
150
|
-
this.listeners[event].set(callback, c);
|
|
151
|
-
break;
|
|
152
|
-
case "REQUEST_BUTTONS":
|
|
153
|
-
c = new RequestButtons(callback);
|
|
154
|
-
this.listeners[event].set(callback, c);
|
|
155
|
-
break;
|
|
156
|
-
case "REQUEST_TABLE_COLUMNS":
|
|
157
|
-
c = new RequestTableColumns(callback);
|
|
158
|
-
this.listeners[event].set(callback, c);
|
|
159
|
-
break;
|
|
160
|
-
case "REQUEST_SELL_SCREEN_OPTIONS":
|
|
161
|
-
c = new RequestSellScreenOptions(callback);
|
|
162
|
-
this.listeners[event].set(callback, c);
|
|
163
|
-
break;
|
|
164
|
-
case "INTERNAL_PAGE_MESSAGE":
|
|
165
|
-
c = new InternalPageMessage(callback, this);
|
|
166
|
-
this.listeners[event].set(callback, c);
|
|
167
|
-
break;
|
|
168
|
-
case "REGISTER_CHANGED":
|
|
169
|
-
c = new RegisterChanged(callback);
|
|
170
|
-
this.listeners[event].set(callback, c);
|
|
171
|
-
break;
|
|
172
|
-
case "REQUEST_CUSTOMER_LIST_OPTIONS":
|
|
173
|
-
c = new RequestCustomerListOptions(callback);
|
|
174
|
-
this.listeners[event].set(callback, c);
|
|
175
|
-
break;
|
|
176
|
-
case "FORMAT_INTEGRATED_PRODUCT":
|
|
177
|
-
c = new FormatIntegratedProduct(callback);
|
|
178
|
-
this.listeners[event].set(callback, c);
|
|
179
|
-
break;
|
|
180
|
-
case "REQUEST_SALE_KEYS":
|
|
181
|
-
c = new RequestSaleKeys(callback);
|
|
182
|
-
this.listeners[event].set(callback, c);
|
|
183
|
-
break;
|
|
184
|
-
case "SALE_COMPLETE":
|
|
185
|
-
c = new SaleComplete(callback);
|
|
186
|
-
this.listeners[event].set(callback, c);
|
|
187
|
-
break;
|
|
188
|
-
case "UI_PIPELINE":
|
|
189
|
-
c = new UIPipeline(callback);
|
|
190
|
-
this.listeners[event].set(callback, c);
|
|
191
|
-
break;
|
|
192
|
-
case "PAYMENT_METHODS_ENABLED":
|
|
193
|
-
c = new PaymentMethodsEnabled(callback);
|
|
194
|
-
this.listeners[event].set(callback, c);
|
|
195
|
-
break;
|
|
196
|
-
case "AUDIO_READY":
|
|
197
|
-
c = new AudioReady(callback);
|
|
198
|
-
this.listeners[event].set(callback, c);
|
|
199
|
-
break;
|
|
200
|
-
case "AUDIO_PERMISSION_CHANGE":
|
|
201
|
-
c = new AudioPermissionChange(callback);
|
|
202
|
-
this.listeners[event].set(callback, c);
|
|
203
|
-
break;
|
|
204
|
-
case "FULFILMENT_GET_ORDER":
|
|
205
|
-
if (this.listeners[event].size !== 0) {
|
|
206
|
-
throw new TypeError("Application already has 'FULFILMENT_GET_ORDER' event listener registered.");
|
|
207
|
-
}
|
|
208
|
-
c = new FulfilmentGetOrder(callback);
|
|
209
|
-
this.listeners[event].set(callback, c);
|
|
210
|
-
break;
|
|
211
|
-
case "FULFILMENT_VOID_ORDER":
|
|
212
|
-
c = new FulfilmentVoidOrder(callback);
|
|
213
|
-
this.listeners[event].set(callback, c);
|
|
214
|
-
break;
|
|
215
|
-
case "FULFILMENT_PROCESS_ORDER":
|
|
216
|
-
c = new FulfilmentProcessOrder(callback);
|
|
217
|
-
this.listeners[event].set(callback, c);
|
|
218
|
-
break;
|
|
219
|
-
case "FULFILMENT_ORDER_APPROVAL":
|
|
220
|
-
c = new FulfilmentOrderApproval(callback);
|
|
221
|
-
this.listeners[event].set(callback, c);
|
|
222
|
-
break;
|
|
223
|
-
case "FULFILMENT_ORDER_COLLECTED":
|
|
224
|
-
c = new FulfilmentCollectOrder(callback);
|
|
225
|
-
this.listeners[event].set(callback, c);
|
|
226
|
-
break;
|
|
227
|
-
case "FULFILMENT_ORDER_COMPLETED":
|
|
228
|
-
c = new FulfilmentCompleteOrder(callback);
|
|
229
|
-
this.listeners[event].set(callback, c);
|
|
230
|
-
break;
|
|
231
|
-
case "GIFT_CARD_CODE_CHECK":
|
|
232
|
-
c = new GiftCardCodeCheck(callback);
|
|
233
|
-
this.listeners[event].set(callback, c);
|
|
234
|
-
break;
|
|
235
|
-
}
|
|
236
|
-
if (typeof c === "undefined") {
|
|
237
|
-
throw new TypeError(`${event} has not been defined`);
|
|
238
|
-
}
|
|
239
|
-
if (event === "READY" && this.isReady) {
|
|
240
|
-
c = c;
|
|
241
|
-
c.emit({
|
|
242
|
-
outlet: this.outlet,
|
|
243
|
-
register: this.register,
|
|
244
|
-
user: this.user,
|
|
245
|
-
});
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* @inheritDoc
|
|
250
|
-
*/
|
|
251
|
-
removeEventListener(event, callback) {
|
|
252
|
-
if (isDirectShopfrontEvent(event)) {
|
|
253
|
-
this.directListeners[event]?.delete(callback);
|
|
254
|
-
return;
|
|
255
|
-
}
|
|
256
|
-
this.listeners[event].delete(callback);
|
|
257
|
-
}
|
|
258
105
|
/**
|
|
259
106
|
* @inheritDoc
|
|
260
107
|
*/
|
|
@@ -319,7 +166,6 @@ export class MockApplication extends BaseApplication {
|
|
|
319
166
|
const payments = sale.getPayments();
|
|
320
167
|
let totalPaid = 0;
|
|
321
168
|
for (const payment of payments) {
|
|
322
|
-
// TODO: Double check this is still the case
|
|
323
169
|
if (payment.getCashout()) {
|
|
324
170
|
return {
|
|
325
171
|
success: false,
|
|
@@ -463,7 +309,7 @@ export class MockApplication extends BaseApplication {
|
|
|
463
309
|
/**
|
|
464
310
|
* Mocks an event being fired from Shopfront
|
|
465
311
|
*/
|
|
466
|
-
fireEvent(event, ...data) {
|
|
312
|
+
async fireEvent(event, ...data) {
|
|
467
313
|
let params;
|
|
468
314
|
if (data.length > 0) {
|
|
469
315
|
if (typeof data[0] === "object") {
|
|
@@ -474,9 +320,10 @@ export class MockApplication extends BaseApplication {
|
|
|
474
320
|
else {
|
|
475
321
|
params = data[0];
|
|
476
322
|
}
|
|
477
|
-
// We don't care about the Bridge
|
|
323
|
+
// We don't care about the Bridge param in FromShopfront events, as that is passed in by the `emit` method
|
|
324
|
+
// Direct events do not pass in a second parameter
|
|
478
325
|
}
|
|
479
|
-
this.emit(event, params, "");
|
|
326
|
+
await this.emit(event, params, "");
|
|
480
327
|
}
|
|
481
328
|
;
|
|
482
329
|
}
|
|
@@ -19,7 +19,7 @@ export declare class MockBridge extends BaseBridge {
|
|
|
19
19
|
/**
|
|
20
20
|
* @inheritDoc
|
|
21
21
|
*/
|
|
22
|
-
sendMessage(type: ApplicationEvents.ToShopfront, data?: unknown, id?: string): void
|
|
22
|
+
sendMessage(type: ApplicationEvents.ToShopfront, data?: unknown, id?: string): Promise<void>;
|
|
23
23
|
/**
|
|
24
24
|
* @inheritDoc
|
|
25
25
|
*/
|
package/lib/Mocks/MockBridge.js
CHANGED
|
@@ -4,6 +4,8 @@ export class MockBridge extends BaseBridge {
|
|
|
4
4
|
constructor(key, url) {
|
|
5
5
|
super(key, url);
|
|
6
6
|
this.isReady = false;
|
|
7
|
+
this.registerListeners();
|
|
8
|
+
this.sendMessage(ApplicationEvents.ToShopfront.READY);
|
|
7
9
|
}
|
|
8
10
|
/**
|
|
9
11
|
* @inheritDoc
|
|
@@ -26,7 +28,7 @@ export class MockBridge extends BaseBridge {
|
|
|
26
28
|
/**
|
|
27
29
|
* @inheritDoc
|
|
28
30
|
*/
|
|
29
|
-
sendMessage(type, data, id) {
|
|
31
|
+
async sendMessage(type, data, id) {
|
|
30
32
|
if (type === ApplicationEvents.ToShopfront.READY) {
|
|
31
33
|
if (typeof data !== "undefined") {
|
|
32
34
|
throw new TypeError("The `data` parameter must be undefined when requesting ready state");
|
package/package.json
CHANGED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
<component name="ProjectCodeStyleConfiguration">
|
|
2
|
-
<code_scheme name="Project" version="173">
|
|
3
|
-
<JSCodeStyleSettings version="0">
|
|
4
|
-
<option name="FORCE_SEMICOLON_STYLE" value="true" />
|
|
5
|
-
</JSCodeStyleSettings>
|
|
6
|
-
<TypeScriptCodeStyleSettings version="0">
|
|
7
|
-
<option name="FORCE_SEMICOLON_STYLE" value="true" />
|
|
8
|
-
</TypeScriptCodeStyleSettings>
|
|
9
|
-
</code_scheme>
|
|
10
|
-
</component>
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<project version="4">
|
|
3
|
-
<component name="GitToolBoxProjectSettings">
|
|
4
|
-
<option name="commitMessageIssueKeyValidationOverride">
|
|
5
|
-
<BoolValueOverride>
|
|
6
|
-
<option name="enabled" value="true" />
|
|
7
|
-
</BoolValueOverride>
|
|
8
|
-
</option>
|
|
9
|
-
<option name="commitMessageValidationEnabledOverride">
|
|
10
|
-
<BoolValueOverride>
|
|
11
|
-
<option name="enabled" value="true" />
|
|
12
|
-
</BoolValueOverride>
|
|
13
|
-
</option>
|
|
14
|
-
</component>
|
|
15
|
-
</project>
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
<component name="InspectionProjectProfileManager">
|
|
2
|
-
<profile version="1.0">
|
|
3
|
-
<option name="myName" value="Project Default" />
|
|
4
|
-
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
|
|
5
|
-
<inspection_tool class="ImplicitTypeConversion" enabled="true" level="WARNING" enabled_by_default="true">
|
|
6
|
-
<option name="BITS" value="1720" />
|
|
7
|
-
<option name="FLAG_EXPLICIT_CONVERSION" value="true" />
|
|
8
|
-
<option name="IGNORE_NODESET_TO_BOOLEAN_VIA_STRING" value="true" />
|
|
9
|
-
</inspection_tool>
|
|
10
|
-
</profile>
|
|
11
|
-
</component>
|
package/.idea/misc.xml
DELETED
package/.idea/modules.xml
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<project version="4">
|
|
3
|
-
<component name="ProjectModuleManager">
|
|
4
|
-
<modules>
|
|
5
|
-
<module fileurl="file://$PROJECT_DIR$/.idea/shopfront-embedded-bridge.iml" filepath="$PROJECT_DIR$/.idea/shopfront-embedded-bridge.iml" />
|
|
6
|
-
</modules>
|
|
7
|
-
</component>
|
|
8
|
-
</project>
|
package/.idea/php.xml
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<project version="4">
|
|
3
|
-
<component name="MessDetectorOptionsConfiguration">
|
|
4
|
-
<option name="transferred" value="true" />
|
|
5
|
-
</component>
|
|
6
|
-
<component name="PHPCSFixerOptionsConfiguration">
|
|
7
|
-
<option name="transferred" value="true" />
|
|
8
|
-
</component>
|
|
9
|
-
<component name="PHPCodeSnifferOptionsConfiguration">
|
|
10
|
-
<option name="transferred" value="true" />
|
|
11
|
-
</component>
|
|
12
|
-
<component name="PhpCodeSniffer">
|
|
13
|
-
<phpcs_settings>
|
|
14
|
-
<phpcs_by_interpreter asDefaultInterpreter="true" interpreter_id="bb870563-23b2-4cfc-9ac5-70a3316d78e5" timeout="30000" />
|
|
15
|
-
</phpcs_settings>
|
|
16
|
-
</component>
|
|
17
|
-
<component name="PhpStan">
|
|
18
|
-
<PhpStan_settings>
|
|
19
|
-
<phpstan_by_interpreter asDefaultInterpreter="true" interpreter_id="bb870563-23b2-4cfc-9ac5-70a3316d78e5" timeout="60000" />
|
|
20
|
-
</PhpStan_settings>
|
|
21
|
-
</component>
|
|
22
|
-
<component name="PhpStanOptionsConfiguration">
|
|
23
|
-
<option name="transferred" value="true" />
|
|
24
|
-
</component>
|
|
25
|
-
<component name="Psalm">
|
|
26
|
-
<Psalm_settings>
|
|
27
|
-
<psalm_fixer_by_interpreter asDefaultInterpreter="true" interpreter_id="bb870563-23b2-4cfc-9ac5-70a3316d78e5" timeout="60000" />
|
|
28
|
-
</Psalm_settings>
|
|
29
|
-
</component>
|
|
30
|
-
<component name="PsalmOptionsConfiguration">
|
|
31
|
-
<option name="transferred" value="true" />
|
|
32
|
-
</component>
|
|
33
|
-
</project>
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<module type="WEB_MODULE" version="4">
|
|
3
|
-
<component name="NewModuleRootManager">
|
|
4
|
-
<content url="file://$MODULE_DIR$">
|
|
5
|
-
<excludeFolder url="file://$MODULE_DIR$/lib" />
|
|
6
|
-
</content>
|
|
7
|
-
<orderEntry type="inheritedJdk" />
|
|
8
|
-
<orderEntry type="sourceFolder" forTests="false" />
|
|
9
|
-
</component>
|
|
10
|
-
</module>
|