@ztimson/momentum 0.53.1 → 0.58.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.
Files changed (86) hide show
  1. package/README.md +200 -148
  2. package/bin/build-models.mjs +28 -37
  3. package/dist/actions.d.ts +32 -43
  4. package/dist/actions.d.ts.map +1 -1
  5. package/dist/ai.d.ts +38 -17
  6. package/dist/ai.d.ts.map +1 -1
  7. package/dist/analytics.d.ts +169 -36
  8. package/dist/analytics.d.ts.map +1 -1
  9. package/dist/api.d.ts +22 -22
  10. package/dist/api.d.ts.map +1 -1
  11. package/dist/asset-controller.d.ts +92 -0
  12. package/dist/asset-controller.d.ts.map +1 -0
  13. package/dist/audit.d.ts +22 -0
  14. package/dist/audit.d.ts.map +1 -0
  15. package/dist/auth.d.ts +39 -92
  16. package/dist/auth.d.ts.map +1 -1
  17. package/dist/call.d.ts +39 -0
  18. package/dist/call.d.ts.map +1 -0
  19. package/dist/captcha.d.ts +14 -0
  20. package/dist/captcha.d.ts.map +1 -0
  21. package/dist/client.d.ts +44 -33
  22. package/dist/client.d.ts.map +1 -1
  23. package/dist/core.d.ts +50 -21
  24. package/dist/core.d.ts.map +1 -1
  25. package/dist/data.d.ts +59 -77
  26. package/dist/data.d.ts.map +1 -1
  27. package/dist/dialog.d.ts +11 -0
  28. package/dist/dialog.d.ts.map +1 -0
  29. package/dist/discounts.d.ts +8 -12
  30. package/dist/discounts.d.ts.map +1 -1
  31. package/dist/email.d.ts +19 -19
  32. package/dist/email.d.ts.map +1 -1
  33. package/dist/forms.d.ts +6 -13
  34. package/dist/forms.d.ts.map +1 -1
  35. package/dist/groups.d.ts +22 -16
  36. package/dist/groups.d.ts.map +1 -1
  37. package/dist/index.d.ts +13 -3
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +4446 -0
  40. package/dist/index.mjs +3422 -1731
  41. package/dist/logger.d.ts +78 -48
  42. package/dist/logger.d.ts.map +1 -1
  43. package/dist/momentum.d.ts +69 -15
  44. package/dist/momentum.d.ts.map +1 -1
  45. package/dist/momentum.worker.d.mts +2 -0
  46. package/dist/momentum.worker.d.mts.map +1 -0
  47. package/dist/momentum.worker.mjs +103 -0
  48. package/dist/notifications.d.ts +39 -0
  49. package/dist/notifications.d.ts.map +1 -0
  50. package/dist/pdf.d.ts +31 -14
  51. package/dist/pdf.d.ts.map +1 -1
  52. package/dist/products.d.ts +47 -0
  53. package/dist/products.d.ts.map +1 -0
  54. package/dist/routes.d.ts +40 -0
  55. package/dist/routes.d.ts.map +1 -0
  56. package/dist/schemas.d.ts +79 -0
  57. package/dist/schemas.d.ts.map +1 -0
  58. package/dist/settings.d.ts +30 -14
  59. package/dist/settings.d.ts.map +1 -1
  60. package/dist/sms.d.ts +14 -0
  61. package/dist/sms.d.ts.map +1 -0
  62. package/dist/sockets.d.ts +21 -10
  63. package/dist/sockets.d.ts.map +1 -1
  64. package/dist/static.d.ts +4 -2
  65. package/dist/static.d.ts.map +1 -1
  66. package/dist/storage.d.ts +103 -24
  67. package/dist/storage.d.ts.map +1 -1
  68. package/dist/templates.d.ts +23 -0
  69. package/dist/templates.d.ts.map +1 -0
  70. package/dist/tokens.d.ts +50 -0
  71. package/dist/tokens.d.ts.map +1 -0
  72. package/dist/totp.d.ts +45 -0
  73. package/dist/totp.d.ts.map +1 -0
  74. package/dist/transactions.d.ts +153 -0
  75. package/dist/transactions.d.ts.map +1 -0
  76. package/dist/users.d.ts +63 -25
  77. package/dist/users.d.ts.map +1 -1
  78. package/dist/webRtc.d.ts +39 -0
  79. package/dist/webRtc.d.ts.map +1 -0
  80. package/package.json +53 -43
  81. package/dist/index.cjs +0 -2755
  82. package/dist/momentum.worker.js +0 -16
  83. package/dist/payments.d.ts +0 -184
  84. package/dist/payments.d.ts.map +0 -1
  85. package/dist/phone.d.ts +0 -19
  86. package/dist/phone.d.ts.map +0 -1
package/dist/auth.d.ts CHANGED
@@ -1,87 +1,27 @@
1
- import { Api } from './api';
2
- import { PathEvent, PathEventEmitter } from '@ztimson/utils';
3
- import { Meta } from './core';
1
+ import { PathEvent, PathEventEmitter } from './core';
2
+ import { Momentum } from './momentum';
3
+ import { Totp, TotpMethods } from './totp';
4
4
  import { User } from './users';
5
- export type AuthOptions = {
6
- /** Path to login page */
7
- loginUrl?: string;
5
+ export type SessionData = {
6
+ /** User token */
7
+ token: string | null;
8
+ /** Current user */
9
+ user: User | null;
10
+ /** Combined custom values */
11
+ custom: any;
12
+ /** UI dashboard page */
13
+ dashboardUrl: string | null;
14
+ /** Redirect user to URL on login */
15
+ loginRedirect: string | null;
16
+ /** Combined permissions */
17
+ permissions: string[];
8
18
  };
9
- export type UserToken = Meta & {
10
- /** User defined name */
11
- name: string;
12
- /** Assigned to */
13
- owner: string;
14
- /** Token value */
15
- token: string;
16
- /** Expiration */
17
- expire: null | Date;
18
- };
19
- /** Manage user tokens */
20
- export declare class Token extends PathEventEmitter {
21
- private api;
22
- constructor(api: Api);
23
- /**
24
- * Fetch all tokens for user
25
- * @param {string} username User to search
26
- * @return {Promise<UserToken[]>} List of tokens
27
- */
28
- all(username: string): Promise<UserToken[]>;
29
- /**
30
- * Create a new user token
31
- * @param {{name: string, owner: string, expire: null | Date}} token Token settings
32
- * @return {Promise<UserToken>} Crated token
33
- */
34
- create(token: {
35
- name: string;
36
- owner: string;
37
- expire: null | Date;
38
- }): Promise<UserToken>;
39
- /**
40
- * Delete an existing user token
41
- * @param {string} id Token ID
42
- * @return {Promise<void>} Resolves once complete
43
- */
44
- delete(id: string): Promise<void>;
45
- }
46
- /** Mange user 2FA */
47
- export declare class Totp {
48
- private api;
49
- constructor(api: Api);
50
- /**
51
- * Disable 2FA for user
52
- * @param {string} username User to disable 2FA for
53
- * @return {Promise<void>} Resolves once complete
54
- */
55
- disable(username: string): import('@ztimson/utils').PromiseProgress<void>;
56
- /**
57
- * Enable 2FA for user
58
- * @param {string} username User to reset
59
- * @return {Promise<void>} Resolves once complete
60
- */
61
- enable: (username: string) => Promise<void>;
62
- /**
63
- * Reset users 2FA
64
- * @param {string} username User to reset
65
- * @return {Promise<void>} Resolves once complete
66
- */
67
- reset(username: string): Promise<void>;
68
- /**
69
- * Setup 2FA authentication method
70
- * @param {string} username User to setup
71
- * @param {string} method Authenticator type
72
- * @param {string | null} totp null to being process, 2FA code to validate method
73
- * @return {Promise<void>} Resolves once complete
74
- */
75
- setup(username: string, method?: string, totp?: string): import('@ztimson/utils').PromiseProgress<void>;
76
- }
77
19
  /** Manage User Authentication */
78
20
  export declare class Auth extends PathEventEmitter {
79
- private readonly opts;
80
- private readonly api;
81
- /** Manage user tokens */
82
- token: Token;
21
+ protected momentum: Momentum;
83
22
  /** Manage user 2FA */
84
23
  totp: Totp;
24
+ session?: SessionData | null;
85
25
  private _permissions;
86
26
  /** Get current user permissions */
87
27
  get permissions(): string[];
@@ -91,12 +31,18 @@ export declare class Auth extends PathEventEmitter {
91
31
  get user(): User | null | undefined;
92
32
  /** Update user info without changing the session */
93
33
  set user(user: User | null | undefined);
94
- constructor(api: Api | string, opts?: AuthOptions);
34
+ constructor(momentum: Momentum);
35
+ /** Filter list of permissions to ones the user has */
95
36
  filter: (...events: (string | PathEvent)[]) => PathEvent[];
37
+ /** Does user have any permissions (or) */
96
38
  has: (...events: (string | PathEvent)[]) => boolean;
39
+ /** Does user have all permissions (and) */
97
40
  hasAll: (...events: (string | PathEvent)[]) => boolean;
41
+ /** Raise error if user has no permissions (or) */
98
42
  hasFatal: (...events: (string | PathEvent)[]) => void;
43
+ /** Raise error if user missing any permissions (and) */
99
44
  hasAllFatal: (...events: (string | PathEvent)[]) => void;
45
+ handleLogin(reload?: boolean): Promise<SessionData | null | undefined>;
100
46
  /**
101
47
  * Check if origin is recognized & whitelisted
102
48
  * @param {string} host Origin to check
@@ -105,15 +51,19 @@ export declare class Auth extends PathEventEmitter {
105
51
  knownHost(host?: string): Promise<void>;
106
52
  /**
107
53
  * Login a user & return the account
108
- * @param {string} username username
54
+ * @param {string} id username
109
55
  * @param {string} password user's password
110
- * @param {{totp: string, expire: null | number | Date}} opts 2FA code and expiry options (null to never expire)
111
- * @return {Promise<User | null>} User account on success
56
+ * @param {{totp: string, totpMethod: TotpMethods, expire: null | number | Date}} opts 2FA code, 2FA code push method, and expiry options (null to never expire)
57
+ * @return {Promise<{reset?: string, token?: string} | null>} User account on success
112
58
  */
113
- login(username: string, password: string, opts?: {
59
+ login(id: string, password?: string, opts?: {
114
60
  totp?: string;
61
+ totpMethod?: TotpMethods;
115
62
  expire?: number | Date | null;
116
- }): Promise<User | null>;
63
+ }): Promise<{
64
+ reset?: string;
65
+ token?: string;
66
+ } | null>;
117
67
  /**
118
68
  * Login via Momentum single sign on
119
69
  * @param {string} host Host origin attempting to login
@@ -123,14 +73,14 @@ export declare class Auth extends PathEventEmitter {
123
73
  /**
124
74
  * Logout current user
125
75
  */
126
- logout(): void;
76
+ logout(): Promise<void>;
127
77
  /**
128
78
  * Create a new user with login
129
79
  * @param {Partial<User> & {password: string}} user User data with password
130
80
  * @return {Promise<User>} Registered user data
131
81
  */
132
82
  register(user: Partial<User> & {
133
- username: string;
83
+ _id: string;
134
84
  password: string;
135
85
  }): Promise<User>;
136
86
  /**
@@ -152,12 +102,9 @@ export declare class Auth extends PathEventEmitter {
152
102
  * @param {boolean} set Set as current active session
153
103
  * @return {Promise<{token: string, user: User, permissions: string[], custom: any} | null>} Session information
154
104
  */
155
- session(token?: string, set?: boolean): Promise<{
156
- token: string;
157
- user: User;
158
- permissions: string[];
159
- custom: any;
160
- } | null>;
105
+ readSession(token?: string | null, set?: boolean): Promise<SessionData | null>;
106
+ /** Unlock an account that has been locked from too many login attempts */
107
+ unlock(username: string): Promise<void>;
161
108
  /**
162
109
  * Update password for user
163
110
  * @param {string} username User to reset
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
package/dist/call.d.ts ADDED
@@ -0,0 +1,39 @@
1
+ import { Message, PathEventEmitter } from './core';
2
+ import { Momentum } from './momentum';
3
+ export type InteractiveCall = {
4
+ /** Default message */
5
+ '_': string | {
6
+ forward: {
7
+ user: string;
8
+ } | {
9
+ number: string;
10
+ };
11
+ };
12
+ /** Interactive voice response on key press */
13
+ [key: string]: string | {
14
+ forward: {
15
+ user: string;
16
+ } | {
17
+ number: string;
18
+ };
19
+ } | InteractiveCall;
20
+ };
21
+ /** Create call with steps */
22
+ export type PhoneCall = Omit<Message, 'body'> & {
23
+ /** Text to speech, use dictionary to create an interactive voice response system (IVR) */
24
+ body: string | InteractiveCall;
25
+ /** Create voice recording of call */
26
+ record?: boolean;
27
+ };
28
+ /** Send messages */
29
+ export declare class Call extends PathEventEmitter {
30
+ protected momentum: Momentum;
31
+ constructor(momentum: Momentum);
32
+ /**
33
+ * Place a call to number
34
+ * @param {Call} message Text that will be converted to speech
35
+ * @return {Promise<any>} Twilio call instance
36
+ */
37
+ create(message: PhoneCall): Promise<any>;
38
+ }
39
+ //# sourceMappingURL=call.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../src/call.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,gBAAgB,EAAM,MAAM,QAAQ,CAAC;AACtD,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AAEpC,MAAM,MAAM,eAAe,GAAG;IAC7B,sBAAsB;IACtB,GAAG,EAAE,MAAM,GAAG;QAAC,OAAO,EAAE;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC,GAAG;YAAC,MAAM,EAAE,MAAM,CAAA;SAAC,CAAA;KAAC,CAAC;IAC3D,8CAA8C;IAC9C,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG;QAAC,OAAO,EAAE;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC,GAAG;YAAC,MAAM,EAAE,MAAM,CAAA;SAAC,CAAA;KAAC,GAAG,eAAe,CAAC;CACvF,CAAC;AAEF,6BAA6B;AAC7B,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG;IAC/C,0FAA0F;IAC1F,IAAI,EAAE,MAAM,GAAG,eAAe,CAAC;IAC/B,qCAAqC;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB,CAAA;AAED,oBAAoB;AACpB,qBAAa,IAAK,SAAQ,gBAAgB;IAC7B,SAAS,CAAC,QAAQ,EAAE,QAAQ;gBAAlB,QAAQ,EAAE,QAAQ;IAIxC;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;CAIxC"}
@@ -0,0 +1,14 @@
1
+ export declare class Captcha {
2
+ private start;
3
+ private events;
4
+ private lastMouse;
5
+ private velocities;
6
+ private _score;
7
+ private set score(value);
8
+ get score(): number;
9
+ get verdict(): 'unknown' | 'human' | 'bot';
10
+ constructor();
11
+ private validUserAgent;
12
+ update(): void;
13
+ }
14
+ //# sourceMappingURL=captcha.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captcha.d.ts","sourceRoot":"","sources":["../src/captcha.ts"],"names":[],"mappings":"AAAA,qBAAa,OAAO;IACnB,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,MAAM,CAAoF;IAClG,OAAO,CAAC,SAAS,CAAkD;IACnE,OAAO,CAAC,UAAU,CAAgB;IAElC,OAAO,CAAC,MAAM,CAAO;IACrB,OAAO,KAAK,KAAK,QAAwB;IACzC,IAAI,KAAK,WAA0B;IAEnC,IAAI,OAAO,IAAI,SAAS,GAAG,OAAO,GAAG,KAAK,CAIzC;;IAsCD,OAAO,CAAC,cAAc;IAStB,MAAM;CAyCN"}
package/dist/client.d.ts CHANGED
@@ -1,50 +1,61 @@
1
- import { PathEventEmitter } from '@ztimson/utils';
2
- import { Api } from './api';
3
- import { Settings } from './settings';
1
+ import { Momentum } from './momentum';
2
+ import { PathEventEmitter } from './core';
4
3
  export type Platform = 'windows' | 'android' | 'ios' | 'mac' | 'linux' | 'unknown';
4
+ /** Handle device settings */
5
5
  export declare class Client extends PathEventEmitter {
6
- private api;
7
- private readonly settings;
8
- /** Check if iframed */
9
- get iframe(): boolean;
10
- /** Check if mobile device */
11
- get mobile(): boolean;
12
- private _notifications;
13
- /** Are notifications enabled */
14
- get notifications(): boolean;
15
- private set notifications(value);
6
+ protected momentum: Momentum;
7
+ private captcha;
8
+ private nativePwaPrompt?;
9
+ private speed;
10
+ private updating;
11
+ get actorType(): 'unknown' | 'human' | 'bot';
12
+ get captchaScore(): number;
13
+ /** Check for updates */
14
+ readonly updateReady: Promise<boolean>;
15
+ /** Check if PWA can be installed */
16
+ get canInstall(): boolean;
17
+ /** Running inside a container */
18
+ get isApp(): boolean;
19
+ /** Running inside an electron app */
20
+ get isElectron(): boolean;
21
+ /** Headless client without access to DOM */
22
+ get isHeadless(): boolean;
23
+ /** Running inside an iframe */
24
+ get isIframe(): boolean;
25
+ /** Running on a mobile device */
26
+ get isMobile(): boolean;
27
+ private _isPwa?;
28
+ /** Running as a PWA */
29
+ get isPwa(): boolean;
16
30
  private _platform?;
17
31
  /** Get the current platform type */
18
32
  get platform(): Platform;
19
- /** Get Push Subscription info */
20
- get pushSubscription(): Promise<PushSubscription | null>;
21
- private _pwa?;
22
- /** Check if running as a PWA */
23
- get pwa(): boolean;
24
- constructor(api: Api, settings: Settings);
33
+ get storage(): boolean;
34
+ constructor(momentum: Momentum);
25
35
  /**
26
36
  * Inject the client theme settings, meta tags & PWA prompt
27
37
  * @param opts Injection options: reload - use cached settings or reload; pwa - disabled auto pwa prompt
28
38
  * @return {Promise<void>} Resolves on completion
29
39
  */
30
- init(opts?: {
40
+ inject(opts?: {
41
+ install?: boolean;
31
42
  reload?: boolean;
32
- pwa?: boolean;
33
- }): Promise<void>;
43
+ }): Promise<{
44
+ [key: string]: any;
45
+ }>;
34
46
  /**
35
- * Create UI prompt for user to install as PWA
36
- * @param platform Platform prompt, leave blank to auto-detect
47
+ * Get current network speed
48
+ * @param {boolean} format false = number (bytes-per-second), true = formated string
49
+ * @returns {Promise<number | string>}
37
50
  */
38
- pwaPrompt(platform?: 'android' | 'ios'): void;
51
+ networkSpeed(format: true): Promise<string>;
52
+ networkSpeed(format?: false): Promise<number>;
39
53
  /**
40
- * Enable device notifications
41
- * @return {Promise<null>} Resolves on success
54
+ * Create an installation prompt popup
55
+ * @param platform Platform specific prompt, leave blank to auto-detect
42
56
  */
43
- enableNotifications(): Promise<null>;
44
- /**
45
- * Disable device notifications
46
- * @return {Promise<void>} Resolves on success
47
- */
48
- disableNotifications(): Promise<void>;
57
+ install(platform?: Platform): Promise<unknown>;
58
+ /** Update service worker & other tabs */
59
+ update(): void;
49
60
  }
50
61
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,gBAAgB,EAAM,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AAEpC,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,CAAC;AAEnF,qBAAa,MAAO,SAAQ,gBAAgB;IA6C/B,OAAO,CAAC,GAAG;IAAO,OAAO,CAAC,QAAQ,CAAC,QAAQ;IA3CvD,uBAAuB;IACvB,IAAI,MAAM,IAAI,OAAO,CAAyC;IAE9D,6BAA6B;IAC7B,IAAI,MAAM,IAAI,OAAO,CAAuD;IAE5E,OAAO,CAAC,cAAc,CAAS;IAC/B,gCAAgC;IAChC,IAAI,aAAa,IAAI,OAAO,CAAgC;IAC5D,OAAO,KAAK,aAAa,QAGxB;IAED,OAAO,CAAC,SAAS,CAAC,CAAW;IAC7B,oCAAoC;IACpC,IAAI,QAAQ,IAAI,QAAQ,CAWvB;IAED,iCAAiC;IACjC,IAAI,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAGvD;IAED,OAAO,CAAC,IAAI,CAAC,CAAU;IACvB,gCAAgC;IAChC,IAAI,GAAG,IAAI,OAAO,CAIjB;gBAEmB,GAAG,EAAE,GAAG,EAAmB,QAAQ,EAAE,QAAQ;IAKjE;;;;OAIG;IACG,IAAI,CAAC,IAAI,GAAE;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAM;IA4FvD;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,EAAE,SAAS,GAAG,KAAK;IAqItC;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAa1C;;;OAGG;IACG,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;CAO3C"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,gBAAgB,EAAM,MAAM,QAAQ,CAAA;AAE5C,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,CAAC;AAEnF,6BAA6B;AAC7B,qBAAa,MAAO,SAAQ,gBAAgB;IAmE/B,SAAS,CAAC,QAAQ,EAAE,QAAQ;IAlExC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,eAAe,CAAC,CAAM;IAC9B,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,QAAQ,CAAS;IAEzB,IAAI,SAAS,IAAI,SAAS,GAAG,OAAO,GAAG,KAAK,CAAiC;IAC7E,IAAI,YAAY,IAAI,MAAM,CAA+B;IAEzD,wBAAwB;IACxB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAYnC;IAEH,oCAAoC;IACpC,IAAI,UAAU,IAAI,OAAO,CAAmC;IAE5D,iCAAiC;IACjC,IAAI,KAAK,IAAI,OAAO,CAA2D;IAE/E,qCAAqC;IACrC,IAAI,UAAU,IAAI,OAAO,CAAgD;IAEzE,4CAA4C;IAC5C,IAAI,UAAU,IAAI,OAAO,CAAyC;IAElE,+BAA+B;IAC/B,IAAI,QAAQ,IAAI,OAAO,CAAyC;IAEhE,iCAAiC;IACjC,IAAI,QAAQ,IAAI,OAAO,CAAuD;IAE9E,OAAO,CAAC,MAAM,CAAC,CAAU;IACzB,uBAAuB;IACvB,IAAI,KAAK,IAAI,OAAO,CAInB;IAED,OAAO,CAAC,SAAS,CAAC,CAAW;IAC7B,oCAAoC;IACpC,IAAI,QAAQ,IAAI,QAAQ,CAWvB;IAED,IAAI,OAAO,YAAiD;gBAEtC,QAAQ,EAAE,QAAQ;IAyBxC;;;;OAIG;IACG,MAAM,CAAC,IAAI,GAAE;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAM,GAAG,OAAO,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;IA+F7F;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAC3C,YAAY,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAO7C;;;OAGG;IACG,OAAO,CAAC,QAAQ,GAAE,QAAwB;IAqGhD,yCAAyC;IACzC,MAAM;CAUN"}
package/dist/core.d.ts CHANGED
@@ -1,33 +1,57 @@
1
- import { PathEvent } from '@ztimson/utils';
1
+ /** Communication method */
2
+ export type AlertMethod = 'call' | 'email' | 'notification' | 'sms';
3
+ /** Alert */
4
+ export type Alert = {
5
+ /** Triggering event */
6
+ event: string;
7
+ /** Notify via methods */
8
+ method: AlertMethod[];
9
+ /** Notification name/title */
10
+ message: Omit<Message, 'to'> & {
11
+ /** Include link */
12
+ link?: string;
13
+ };
14
+ };
15
+ /** Excel formula column type */
16
+ export type Formula = string | any;
17
+ /** Link column type */
18
+ export type Link = string;
2
19
  /** Metadata model */
3
20
  export type Meta = {
4
21
  /** Document ID */
5
- _id?: string | any;
22
+ readonly _id?: string | any;
6
23
  /** Creator username */
7
- _createdBy: string;
24
+ readonly _createdBy?: string | null;
8
25
  /** Created timestamp */
9
- _createdDate: Date;
26
+ readonly _createdDate?: Date | null;
10
27
  /** Modifier username */
11
- _updatedBy: string;
28
+ readonly _updatedBy?: string | null;
12
29
  /** Modified timestamp */
13
- _updatedDate: Date;
30
+ readonly _updatedDate?: Date | null;
14
31
  };
15
- /** Methods of notification */
16
- export type NotificationMethod = 'email' | 'notification' | 'sms' | 'voice';
17
- /** Notification model */
18
- export type Notification = {
19
- /** Triggering event */
20
- event: string;
21
- /** Notify via methods */
22
- method: NotificationMethod[];
23
- /** Notification name/title */
24
- subject?: string | ((event: PathEvent, ...args: any[]) => string);
25
- /** Body of notification */
26
- body: string | ((event: PathEvent, ...args: any[]) => string);
27
- /** Link to on activation */
28
- link?: string;
32
+ /** SMS or Phone call message */
33
+ export type Message = {
34
+ /** Message recipients */
35
+ to: string | string[];
36
+ /** Message subject/title */
37
+ subject?: string;
38
+ /** Leave blank or specify a from address if there are options */
39
+ from?: string;
40
+ /** Message body */
41
+ body: string;
42
+ };
43
+ /** Saved message log */
44
+ export type MessageLog<T> = {
45
+ /** Message UID */
46
+ readonly _id: string;
47
+ /** Sent timestamp */
48
+ readonly _createdBy: string | null;
49
+ /** Message initiator */
50
+ readonly _createdDate: Date;
51
+ /** Message body */
52
+ message: T;
29
53
  };
30
- export type Optional<T, O> = Omit<T, keyof O> & Pick<Partial<O>, keyof O>;
54
+ export { type IPathEventEmitter, PE, PES, PathEvent, type PathListener, type PathUnsubscribe, PathEventEmitter } from '@ztimson/utils';
31
55
  /** Recursive type for defining tree data */
32
56
  export type TreeNode<T> = T & {
33
57
  /** Name of node */
@@ -35,4 +59,9 @@ export type TreeNode<T> = T & {
35
59
  /** Node children */
36
60
  children: TreeNode<T>[];
37
61
  };
62
+ export { type Unsubscribe } from '@ztimson/utils';
63
+ export declare function treeBuilder<T extends {
64
+ path: string;
65
+ }>(schemas: T[]): TreeNode<T>[];
66
+ export declare function validEvent(event: string): boolean;
38
67
  //# sourceMappingURL=core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAEzC,qBAAqB;AACrB,MAAM,MAAM,IAAI,GAAG;IAClB,kBAAkB;IAClB,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,YAAY,EAAE,IAAI,CAAC;IACnB,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,YAAY,EAAE,IAAI,CAAC;CACnB,CAAA;AAED,8BAA8B;AAC9B,MAAM,MAAM,kBAAkB,GAAI,OAAO,GAAG,cAAc,GAAG,KAAK,GAAG,OAAO,CAAC;AAE7E,yBAAyB;AACzB,MAAM,MAAM,YAAY,GAAG;IAC1B,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,CAAC;IAClE,2BAA2B;IAC3B,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,CAAC;IAC9D,4BAA4B;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,CAAA;AAED,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAE1E,4CAA4C;AAC5C,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG;IAC7B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;CACxB,CAAC"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,cAAc,GAAG,KAAK,CAAC;AAEpE,YAAY;AACZ,MAAM,MAAM,KAAK,GAAG;IACnB,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,8BAA8B;IAC9B,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG;QAC9B,mBAAmB;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;CACF,CAAA;AAED,gCAAgC;AAChC,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,GAAG,CAAC;AAEnC,uBAAuB;AACvB,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC;AAE1B,qBAAqB;AACrB,MAAM,MAAM,IAAI,GAAG;IAClB,kBAAkB;IAClB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IAC5B,uBAAuB;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,wBAAwB;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACpC,wBAAwB;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,yBAAyB;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpC,CAAA;AAED,gCAAgC;AAChC,MAAM,MAAM,OAAO,GAAG;IACrB,yBAAyB;IACzB,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACtB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;CACb,CAAA;AAED,wBAAwB;AACxB,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC3B,kBAAkB;IAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,qBAAqB;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,wBAAwB;IACxB,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC;IAC5B,mBAAmB;IACnB,OAAO,EAAE,CAAC,CAAC;CACX,CAAA;AAED,OAAO,EACN,KAAK,iBAAiB,EACtB,EAAE,EAAE,GAAG,EAAE,SAAS,EAClB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,gBAAgB,EAChB,MAAM,gBAAgB,CAAC;AAExB,4CAA4C;AAC5C,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG;IAC7B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;CACxB,CAAC;AAEF,OAAO,EAAC,KAAK,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAEhD,wBAAgB,WAAW,CAAC,CAAC,SAAS;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CA0CjF;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,WAMvC"}
package/dist/data.d.ts CHANGED
@@ -1,91 +1,73 @@
1
- import { Api } from './api';
2
- import { Meta, TreeNode } from './core';
3
- import { PathEventEmitter, PromiseProgress } from '@ztimson/utils';
1
+ import { Unsubscribe } from '@ztimson/utils';
2
+ import { Meta, PathEventEmitter } from './core';
3
+ import { Momentum } from './momentum';
4
+ /** Generic MongoDB document */
4
5
  export type Document<T> = Meta & T;
6
+ /** Raw MongoDB query */
5
7
  export type RawQuery = {
6
- operand: 'delete' | 'deleteOne' | 'find' | 'findOne' | 'insert' | 'replaceOne' | 'update' | 'updateOne';
8
+ /** Query operation type */
9
+ operand: 'delete' | 'deleteOne' | 'find' | 'findOne' | 'insertOne' | 'replaceOne' | 'update' | 'updateOne';
10
+ /** Filter affected documents */
7
11
  filter?: any;
12
+ /** Query */
8
13
  data?: any;
14
+ /** MongoDB operation options */
9
15
  options?: any;
16
+ /** Return document count */
10
17
  count?: boolean;
11
18
  };
12
- export type Schema = Meta & {
13
- /** Collection path/name */
14
- path: string;
15
- /** Description of data */
16
- description?: string;
17
- /** Associated form for viewing/editing */
18
- form?: string;
19
- /** Hide columns */
20
- hide?: string[];
21
- /** Lock collection from changes */
22
- lock?: boolean;
23
- /** Data must match defined columns */
24
- strict?: boolean;
25
- /** Allow updates to create row if missing */
26
- upsert?: boolean;
27
- /** Defined fields */
28
- columns?: SchemaColumn[];
29
- };
30
- export type SchemaColumn = {
31
- /** Display label */
32
- label: string;
33
- /** Property key */
34
- prop: string;
35
- /** Variable type */
36
- type?: 'any' | 'boolean' | 'formula' | 'javascript' | 'link' | 'number' | 'string' | 'timestamp';
37
- /** Display formating */
38
- format?: any;
39
- /** Default value */
40
- default?: any;
41
- /** Must have value */
42
- required?: boolean;
43
- /** Style */
44
- style: SchemaColumnStyle;
45
- };
46
- export type SchemaColumnStyle = {
47
- /** Align column content */
48
- align?: 'center' | 'left' | 'right';
49
- /** Background color */
50
- background?: string;
51
- /** Bold column text */
52
- bold?: boolean;
53
- /** Column text color */
54
- color?: string;
55
- /** Italicize column text */
56
- italics?: boolean;
57
- /** Strikethrough column text */
58
- strike?: boolean;
59
- /** Underline column text */
60
- underline?: boolean;
61
- /** Column width */
62
- width?: string;
63
- /** Conditional formating */
64
- conditional: (Omit<SchemaColumnStyle, 'conditional'> & {
65
- condition: string;
66
- })[];
67
- };
68
- declare class Schemas extends PathEventEmitter {
69
- private api;
70
- constructor(api: Api);
71
- delete(path: string): PromiseProgress<any>;
72
- read(tree?: false): Promise<Schema[]>;
73
- read(tree: true): Promise<TreeNode<Schema>[]>;
74
- read(path: string): Promise<Schema>;
75
- update(schema: Partial<Schema> & {
76
- path: string;
77
- }): PromiseProgress<Schema>;
78
- }
19
+ /** Create custom data collections */
79
20
  export declare class Data extends PathEventEmitter {
80
- private readonly api;
81
- schema: Schemas;
82
- constructor(api: Api | string);
21
+ protected momentum: Momentum;
22
+ protected readonly subscribers: {
23
+ [key: string]: Unsubscribe;
24
+ };
25
+ constructor(momentum: Momentum);
26
+ /**
27
+ * Create new document in collection
28
+ * @param {string} collection Target collection
29
+ * @param {Document<T>} document New document
30
+ * @return {Promise<Document<T>>} New saved document
31
+ */
83
32
  create<T>(collection: string, document: Document<T>): Promise<Document<T>>;
84
- delete(collection: string, id: number): Promise<void>;
33
+ /**
34
+ * Delete document from collection
35
+ * @param {string} collection Target collection
36
+ * @param {number} id Document ID
37
+ * @return {Promise<void>} Returns once complete
38
+ */
39
+ delete(collection: string, id: number): Promise<number>;
40
+ /**
41
+ * Read collection/document
42
+ * @param {string} collection target collection/document
43
+ * @return {Promise<T[] | T>} Found collection of documents
44
+ */
85
45
  read<T extends Meta>(collection: string): Promise<T[]>;
86
46
  read<T extends Meta>(collection: string, id: number): Promise<T>;
47
+ /**
48
+ * Update document in collection
49
+ * @param {string} collection Target collection
50
+ * @param {Document<T>} document Document to update
51
+ * @param {boolean} append Append or replace existing document
52
+ * @return {Promise<Document<T>>} New saved document
53
+ */
87
54
  update<T>(collection: string, document: Document<T>, append?: boolean): Promise<Document<T>>;
88
- raw<T>(collection: string, query: RawQuery): Promise<Document<T>>;
55
+ /**
56
+ * Create raw MongoDB query
57
+ * @param {string} collection Target collection name
58
+ * @param {RawQuery} query Raw query
59
+ * @return {Promise<any>} Query response
60
+ */
61
+ raw<T>(collection: string, query: RawQuery): Promise<any>;
62
+ /**
63
+ * Subscribe to live updates with callback
64
+ * @param path Path to data
65
+ * @param {(value: T[]) => any | null} callback Received changes
66
+ * @param opts Reload data immediately
67
+ * @return {() => void} Function to unsubscribe
68
+ */
69
+ sync<T>(path: string, callback: ((value: T | T[]) => any), opts?: {
70
+ reload?: boolean;
71
+ }): Unsubscribe;
89
72
  }
90
- export {};
91
73
  //# sourceMappingURL=data.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAC,KAAK,IAAI,EAAE,gBAAgB,EAAM,MAAM,QAAQ,CAAC;AACxD,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AAEpC,+BAA+B;AAC/B,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;AAEnC,wBAAwB;AACxB,MAAM,MAAM,QAAQ,GAAG;IACtB,2BAA2B;IAC3B,OAAO,EAAE,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC3G,gCAAgC;IAChC,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,YAAY;IACZ,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,gCAAgC;IAChC,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,4BAA4B;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB,CAAA;AAED,qCAAqC;AACrC,qBAAa,IAAK,SAAQ,gBAAgB;IAG7B,SAAS,CAAC,QAAQ,EAAE,QAAQ;IAFxC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;KAAC,CAAM;gBAE5C,QAAQ,EAAE,QAAQ;IAIxC;;;;;OAKG;IACH,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAY1E;;;;;OAKG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAU7D;;;;OAIG;IACH,IAAI,CAAC,CAAC,SAAS,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IACtD,IAAI,CAAC,CAAC,SAAS,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAShE;;;;;;OAMG;IACH,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAY5F;;;;;OAKG;IACH,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;IASzD;;;;;;OAMG;IACH,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,GAAE;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAM,GAAG,WAAW;CAmBtG"}