@peabody-soft/mbs-model-ts 1.0.0
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/LICENCE +661 -0
- package/dist/Address.d.ts +33 -0
- package/dist/Address.js +97 -0
- package/dist/Attachment.d.ts +16 -0
- package/dist/Attachment.js +49 -0
- package/dist/AttachmentBaseUrl.d.ts +11 -0
- package/dist/AttachmentBaseUrl.js +41 -0
- package/dist/AuthTokens.d.ts +13 -0
- package/dist/AuthTokens.js +30 -0
- package/dist/Business.d.ts +44 -0
- package/dist/Business.js +87 -0
- package/dist/BusinessIdentifier.d.ts +8 -0
- package/dist/BusinessIdentifier.js +14 -0
- package/dist/BusinessLink.d.ts +21 -0
- package/dist/BusinessLink.js +61 -0
- package/dist/BusinessProfile.d.ts +11 -0
- package/dist/BusinessProfile.js +27 -0
- package/dist/CartEditor.d.ts +59 -0
- package/dist/CartEditor.js +324 -0
- package/dist/Catalog.d.ts +28 -0
- package/dist/Catalog.js +115 -0
- package/dist/Constants.d.ts +10 -0
- package/dist/Constants.js +43 -0
- package/dist/ContainerNames.d.ts +2 -0
- package/dist/ContainerNames.js +21 -0
- package/dist/Database.d.ts +15 -0
- package/dist/Database.js +1 -0
- package/dist/Entity.d.ts +27 -0
- package/dist/Entity.js +69 -0
- package/dist/Enums.d.ts +16 -0
- package/dist/Enums.js +18 -0
- package/dist/Exceptions.d.ts +4 -0
- package/dist/Exceptions.js +8 -0
- package/dist/GeneralSettings.d.ts +46 -0
- package/dist/GeneralSettings.js +99 -0
- package/dist/HttpStatusCodes.d.ts +2 -0
- package/dist/HttpStatusCodes.js +34 -0
- package/dist/Ids.d.ts +17 -0
- package/dist/Ids.js +78 -0
- package/dist/Item.d.ts +12 -0
- package/dist/Item.js +30 -0
- package/dist/LatLong.d.ts +7 -0
- package/dist/LatLong.js +17 -0
- package/dist/LiveData.d.ts +30 -0
- package/dist/LiveData.js +76 -0
- package/dist/Measures.d.ts +20 -0
- package/dist/Measures.js +34 -0
- package/dist/Message.d.ts +16 -0
- package/dist/Message.js +32 -0
- package/dist/MockDatabase.d.ts +19 -0
- package/dist/MockDatabase.js +73 -0
- package/dist/Model.d.ts +63 -0
- package/dist/Model.js +629 -0
- package/dist/Order.d.ts +31 -0
- package/dist/Order.js +70 -0
- package/dist/Package.d.ts +25 -0
- package/dist/Package.js +52 -0
- package/dist/PackageIdentifier.d.ts +8 -0
- package/dist/PackageIdentifier.js +14 -0
- package/dist/PaymentMethodDetail.d.ts +8 -0
- package/dist/PaymentMethodDetail.js +17 -0
- package/dist/Photo.d.ts +11 -0
- package/dist/Photo.js +29 -0
- package/dist/Price.d.ts +17 -0
- package/dist/Price.js +52 -0
- package/dist/PriceList.d.ts +3 -0
- package/dist/PriceList.js +5 -0
- package/dist/Product.d.ts +33 -0
- package/dist/Product.js +84 -0
- package/dist/ProductCategory.d.ts +10 -0
- package/dist/ProductCategory.js +18 -0
- package/dist/Profile.d.ts +20 -0
- package/dist/Profile.js +55 -0
- package/dist/ProtoMap.d.ts +71 -0
- package/dist/ProtoMap.js +1126 -0
- package/dist/Routes.d.ts +7 -0
- package/dist/Routes.js +12 -0
- package/dist/Service.d.ts +16 -0
- package/dist/Service.js +1 -0
- package/dist/ServiceExceptions.d.ts +40 -0
- package/dist/ServiceExceptions.js +84 -0
- package/dist/ServiceProxy.d.ts +25 -0
- package/dist/ServiceProxy.js +117 -0
- package/dist/ShoppingList.d.ts +64 -0
- package/dist/ShoppingList.js +188 -0
- package/dist/SyncCache.d.ts +28 -0
- package/dist/SyncCache.js +137 -0
- package/dist/SyncKeys.d.ts +5 -0
- package/dist/SyncKeys.js +41 -0
- package/dist/SyncState.d.ts +8 -0
- package/dist/SyncState.js +30 -0
- package/dist/Tax.d.ts +10 -0
- package/dist/Tax.js +30 -0
- package/dist/UserProfile.d.ts +16 -0
- package/dist/UserProfile.js +40 -0
- package/dist/WorkingDays.d.ts +33 -0
- package/dist/WorkingDays.js +121 -0
- package/dist/generated/Address.d.ts +77 -0
- package/dist/generated/Address.js +110 -0
- package/dist/generated/AddressList.d.ts +39 -0
- package/dist/generated/AddressList.js +60 -0
- package/dist/generated/AddressType.d.ts +15 -0
- package/dist/generated/AddressType.js +20 -0
- package/dist/generated/Attachment.d.ts +66 -0
- package/dist/generated/Attachment.js +89 -0
- package/dist/generated/AttachmentType.d.ts +154 -0
- package/dist/generated/AttachmentType.js +159 -0
- package/dist/generated/AuthTokens.d.ts +56 -0
- package/dist/generated/AuthTokens.js +74 -0
- package/dist/generated/AuthenticationMethod.d.ts +24 -0
- package/dist/generated/AuthenticationMethod.js +29 -0
- package/dist/generated/Business.d.ts +54 -0
- package/dist/generated/Business.js +75 -0
- package/dist/generated/BusinessIdentifier.d.ts +36 -0
- package/dist/generated/BusinessIdentifier.js +60 -0
- package/dist/generated/BusinessIdentifierType.d.ts +49 -0
- package/dist/generated/BusinessIdentifierType.js +54 -0
- package/dist/generated/BusinessLink.d.ts +76 -0
- package/dist/generated/BusinessLink.js +99 -0
- package/dist/generated/BusinessSyncInRequest.d.ts +42 -0
- package/dist/generated/BusinessSyncInRequest.js +60 -0
- package/dist/generated/BusinessSyncInResponse.d.ts +42 -0
- package/dist/generated/BusinessSyncInResponse.js +60 -0
- package/dist/generated/BusinessSyncOutRequest.d.ts +82 -0
- package/dist/generated/BusinessSyncOutRequest.js +107 -0
- package/dist/generated/BusinessSyncOutResponse.d.ts +106 -0
- package/dist/generated/BusinessSyncOutResponse.js +139 -0
- package/dist/generated/Configuration.d.ts +48 -0
- package/dist/generated/Configuration.js +63 -0
- package/dist/generated/Constants.d.ts +474 -0
- package/dist/generated/Constants.js +479 -0
- package/dist/generated/CreateUserRequest.d.ts +37 -0
- package/dist/generated/CreateUserRequest.js +59 -0
- package/dist/generated/DimensionUnit.d.ts +28 -0
- package/dist/generated/DimensionUnit.js +33 -0
- package/dist/generated/Dimensions.d.ts +41 -0
- package/dist/generated/Dimensions.js +76 -0
- package/dist/generated/Entity.d.ts +62 -0
- package/dist/generated/Entity.js +83 -0
- package/dist/generated/FulfillmentMode.d.ts +32 -0
- package/dist/generated/FulfillmentMode.js +37 -0
- package/dist/generated/GeneralSettings.d.ts +141 -0
- package/dist/generated/GeneralSettings.js +186 -0
- package/dist/generated/Item.d.ts +54 -0
- package/dist/generated/Item.js +82 -0
- package/dist/generated/LatLong.d.ts +36 -0
- package/dist/generated/LatLong.js +59 -0
- package/dist/generated/Message.d.ts +80 -0
- package/dist/generated/Message.js +114 -0
- package/dist/generated/MessageType.d.ts +34 -0
- package/dist/generated/MessageType.js +39 -0
- package/dist/generated/OrderStatus.d.ts +50 -0
- package/dist/generated/OrderStatus.js +55 -0
- package/dist/generated/Package.d.ts +63 -0
- package/dist/generated/Package.js +92 -0
- package/dist/generated/PackageIdentifier.d.ts +36 -0
- package/dist/generated/PackageIdentifier.js +60 -0
- package/dist/generated/PackageIdentifierType.d.ts +49 -0
- package/dist/generated/PackageIdentifierType.js +54 -0
- package/dist/generated/PartyPreferencesPayload.d.ts +41 -0
- package/dist/generated/PartyPreferencesPayload.js +60 -0
- package/dist/generated/PaymentMethod.d.ts +20 -0
- package/dist/generated/PaymentMethod.js +25 -0
- package/dist/generated/PaymentMethodDetail.d.ts +37 -0
- package/dist/generated/PaymentMethodDetail.js +59 -0
- package/dist/generated/Price.d.ts +52 -0
- package/dist/generated/Price.js +75 -0
- package/dist/generated/PriceList.d.ts +34 -0
- package/dist/generated/PriceList.js +51 -0
- package/dist/generated/Product.d.ts +77 -0
- package/dist/generated/Product.js +106 -0
- package/dist/generated/ProductCategory.d.ts +32 -0
- package/dist/generated/ProductCategory.js +51 -0
- package/dist/generated/ProductType.d.ts +42 -0
- package/dist/generated/ProductType.js +47 -0
- package/dist/generated/ProfileSyncOutRequest.d.ts +51 -0
- package/dist/generated/ProfileSyncOutRequest.js +75 -0
- package/dist/generated/ProfileSyncOutResponse.d.ts +56 -0
- package/dist/generated/ProfileSyncOutResponse.js +77 -0
- package/dist/generated/ReservedPackage.d.ts +34 -0
- package/dist/generated/ReservedPackage.js +39 -0
- package/dist/generated/Role.d.ts +71 -0
- package/dist/generated/Role.js +76 -0
- package/dist/generated/SalesOrderPayload.d.ts +85 -0
- package/dist/generated/SalesOrderPayload.js +123 -0
- package/dist/generated/ShoppingList.d.ts +99 -0
- package/dist/generated/ShoppingList.js +132 -0
- package/dist/generated/ShoppingListItem.d.ts +102 -0
- package/dist/generated/ShoppingListItem.js +139 -0
- package/dist/generated/TaskStatus.d.ts +20 -0
- package/dist/generated/TaskStatus.js +25 -0
- package/dist/generated/Tax.d.ts +37 -0
- package/dist/generated/Tax.js +60 -0
- package/dist/generated/TaxType.d.ts +25 -0
- package/dist/generated/TaxType.js +30 -0
- package/dist/generated/UrlAndToken.d.ts +54 -0
- package/dist/generated/UrlAndToken.js +67 -0
- package/dist/generated/User.d.ts +63 -0
- package/dist/generated/User.js +89 -0
- package/dist/generated/Weight.d.ts +33 -0
- package/dist/generated/Weight.js +60 -0
- package/dist/generated/WeightUnit.d.ts +28 -0
- package/dist/generated/WeightUnit.js +33 -0
- package/dist/generated/WorkingDays.d.ts +42 -0
- package/dist/generated/WorkingDays.js +68 -0
- package/dist/generated/WorkingHours.d.ts +33 -0
- package/dist/generated/WorkingHours.js +52 -0
- package/dist/generated/WorkingHoursRange.d.ts +42 -0
- package/dist/generated/WorkingHoursRange.js +59 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.js +60 -0
- package/package.json +55 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// A Database that holds everything in a Map, for tests and training mode to run against with no
|
|
2
|
+
// network. Enforces the eTag rule for real (write only if the new eTag is greater), so a test proves the sync is actually idempotent.
|
|
3
|
+
export default class MockDatabase {
|
|
4
|
+
constructor() {
|
|
5
|
+
this._containers = new Map();
|
|
6
|
+
}
|
|
7
|
+
async getContainer(name) {
|
|
8
|
+
let container = this._containers.get(name);
|
|
9
|
+
if (container === undefined) {
|
|
10
|
+
container = new MockContainer();
|
|
11
|
+
this._containers.set(name, container);
|
|
12
|
+
}
|
|
13
|
+
return container;
|
|
14
|
+
}
|
|
15
|
+
async getContainerNames() {
|
|
16
|
+
return Object.freeze([...this._containers.keys()]);
|
|
17
|
+
}
|
|
18
|
+
async deleteContainer(name) {
|
|
19
|
+
this._containers.delete(name);
|
|
20
|
+
}
|
|
21
|
+
// For a test that wants to look at what was stored without going through a sync
|
|
22
|
+
getContainerIfPresent(name) {
|
|
23
|
+
return this._containers.get(name) ?? null;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export class MockContainer {
|
|
27
|
+
constructor() {
|
|
28
|
+
// Set by a test just before the write it wants to fail
|
|
29
|
+
this.failNextWrite = false;
|
|
30
|
+
// How many times write has been called, so that a test can show a sync did not write per entity
|
|
31
|
+
this.writeCount = 0;
|
|
32
|
+
this._blobs = new Map();
|
|
33
|
+
}
|
|
34
|
+
async read(id) {
|
|
35
|
+
return this._blobs.get(id) ?? null;
|
|
36
|
+
}
|
|
37
|
+
async readAll() {
|
|
38
|
+
return Object.freeze([...this._blobs.values()]);
|
|
39
|
+
}
|
|
40
|
+
async write(blobs, deletes) {
|
|
41
|
+
++this.writeCount;
|
|
42
|
+
// Fails before touching anything, so a test can prove a failed write changes nothing.
|
|
43
|
+
if (this.failNextWrite) {
|
|
44
|
+
this.failNextWrite = false;
|
|
45
|
+
throw new Error("Mock store was told to fail this write");
|
|
46
|
+
}
|
|
47
|
+
let appliedCount = 0;
|
|
48
|
+
for (const blob of blobs) {
|
|
49
|
+
if (!MockContainer.isNewer(blob, this._blobs.get(blob.id) ?? null))
|
|
50
|
+
continue;
|
|
51
|
+
this._blobs.set(blob.id, blob);
|
|
52
|
+
++appliedCount;
|
|
53
|
+
}
|
|
54
|
+
// Unconditional, and after the writes, exactly as the Database contract says
|
|
55
|
+
for (const id of deletes)
|
|
56
|
+
this._blobs.delete(id);
|
|
57
|
+
return appliedCount;
|
|
58
|
+
}
|
|
59
|
+
// Greater eTag wins; a blob with no eTag (or overwriting one with none) is always written.
|
|
60
|
+
static isNewer(incoming, stored) {
|
|
61
|
+
if (stored === null)
|
|
62
|
+
return true;
|
|
63
|
+
if (incoming.eTag === null || stored.eTag === null)
|
|
64
|
+
return true;
|
|
65
|
+
return incoming.eTag > stored.eTag;
|
|
66
|
+
}
|
|
67
|
+
get size() {
|
|
68
|
+
return this._blobs.size;
|
|
69
|
+
}
|
|
70
|
+
has(id) {
|
|
71
|
+
return this._blobs.has(id);
|
|
72
|
+
}
|
|
73
|
+
}
|
package/dist/Model.d.ts
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { AuthenticationMethod as proto_AuthenticationMethod } from "./generated/AuthenticationMethod";
|
|
2
|
+
import { FulfillmentMode as proto_FulfillmentMode } from "./generated/FulfillmentMode";
|
|
3
|
+
import Address from "./Address";
|
|
4
|
+
import Business from "./Business";
|
|
5
|
+
import Database from "./Database";
|
|
6
|
+
import LiveData from "./LiveData";
|
|
7
|
+
import Profile from "./Profile";
|
|
8
|
+
import Service from "./Service";
|
|
9
|
+
import ShoppingList from "./ShoppingList";
|
|
10
|
+
import UserProfile from "./UserProfile";
|
|
11
|
+
export default class Model {
|
|
12
|
+
private constructor();
|
|
13
|
+
static initialize(service: Service, database: Database): void;
|
|
14
|
+
static getInstance(): Model;
|
|
15
|
+
get business(): LiveData<Business | null>;
|
|
16
|
+
get profile(): LiveData<Profile | null>;
|
|
17
|
+
signIn(authenticationMethod: proto_AuthenticationMethod, subjectId: string, authenticationToken: string): Promise<void>;
|
|
18
|
+
createUser(authenticationMethod: proto_AuthenticationMethod, subjectId: string, authenticationToken: string, userToCreate: UserProfile): Promise<void>;
|
|
19
|
+
updateUser(userProfile: UserProfile): Promise<void>;
|
|
20
|
+
signOut(): Promise<void>;
|
|
21
|
+
setBusinessId(businessId: string): Promise<void>;
|
|
22
|
+
updateCart(shoppingList: ShoppingList): Promise<void>;
|
|
23
|
+
updateCartLocalOnly(shoppingList: ShoppingList): Promise<void>;
|
|
24
|
+
createOrder(fulfillmentMode: proto_FulfillmentMode, deliveryAddressId: bigint, deliveryAddress: Address | null, note: string | null): Promise<void>;
|
|
25
|
+
private beginSignIn;
|
|
26
|
+
private pushBusinessMessages;
|
|
27
|
+
private storeCart;
|
|
28
|
+
private requireBusinessBeingBrowsed;
|
|
29
|
+
private requireCustomerOfBusiness;
|
|
30
|
+
private static requireDeliveryAddress;
|
|
31
|
+
private businessSyncIn;
|
|
32
|
+
private syncAnonymousBusiness;
|
|
33
|
+
private syncBusinessContainer;
|
|
34
|
+
private requireBusinessLink;
|
|
35
|
+
private readJoinBusinessId;
|
|
36
|
+
private static findBusinessEntity;
|
|
37
|
+
private static findBusinessLink;
|
|
38
|
+
private static getBusinessContainerName;
|
|
39
|
+
private requireBusinessAuthTokens;
|
|
40
|
+
private profileSyncIn;
|
|
41
|
+
private createProfileOnServer;
|
|
42
|
+
private static requireJoinedBusiness;
|
|
43
|
+
private cacheProfileResponse;
|
|
44
|
+
private writeProfileResponse;
|
|
45
|
+
private storeIssuedTokens;
|
|
46
|
+
private getProfileContainerName;
|
|
47
|
+
private requireProfileContainerName;
|
|
48
|
+
private buildProfileAuthTokens;
|
|
49
|
+
private requireProfileAuthTokens;
|
|
50
|
+
private publishBusiness;
|
|
51
|
+
private publishProfile;
|
|
52
|
+
private static getService;
|
|
53
|
+
private static getCache;
|
|
54
|
+
private static _service;
|
|
55
|
+
private static _cache;
|
|
56
|
+
private static _instance;
|
|
57
|
+
private _authenticationMethod;
|
|
58
|
+
private _subjectId;
|
|
59
|
+
private _authenticationToken;
|
|
60
|
+
private _businessId;
|
|
61
|
+
private readonly _business;
|
|
62
|
+
private readonly _profile;
|
|
63
|
+
}
|