monorise 1.0.0 → 1.1.0-dev.1

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 (100) hide show
  1. package/dist/base/index.d.ts +110 -3
  2. package/dist/base/index.js +3 -1
  3. package/dist/base/index.js.map +1 -1
  4. package/dist/cli/cli.js +6 -0
  5. package/dist/cli/cli.js.map +1 -1
  6. package/dist/core/chunk-QV4Q5377.js +76 -0
  7. package/dist/core/chunk-QV4Q5377.js.map +1 -0
  8. package/dist/core/index.d.ts +191 -38
  9. package/dist/core/index.js +1539 -122
  10. package/dist/core/index.js.map +1 -1
  11. package/dist/core/service.config-ZJEZ6EKA.js +13 -0
  12. package/dist/core/service.config-ZJEZ6EKA.js.map +1 -0
  13. package/dist/proxy/index.d.ts +35 -0
  14. package/dist/proxy/index.js +75 -0
  15. package/dist/proxy/index.js.map +1 -0
  16. package/dist/react/actions/websocket.action.d.ts +71 -0
  17. package/dist/react/actions/websocket.action.d.ts.map +1 -0
  18. package/dist/react/chunk-2QOYO3GF.js +182 -0
  19. package/dist/react/chunk-2QOYO3GF.js.map +1 -0
  20. package/dist/react/chunk-4WSYM746.js +383 -0
  21. package/dist/react/chunk-4WSYM746.js.map +1 -0
  22. package/dist/react/chunk-5XIRNUBL.js +43 -0
  23. package/dist/react/chunk-5XIRNUBL.js.map +1 -0
  24. package/dist/react/chunk-7JDOKZGQ.js +172 -0
  25. package/dist/react/chunk-7JDOKZGQ.js.map +1 -0
  26. package/dist/react/chunk-A5TI2FW3.js +13 -0
  27. package/dist/react/chunk-A5TI2FW3.js.map +1 -0
  28. package/dist/react/chunk-BJXCFDMF.js +15 -0
  29. package/dist/react/chunk-BJXCFDMF.js.map +1 -0
  30. package/dist/react/chunk-BUTF5RJU.js +29 -0
  31. package/dist/react/chunk-BUTF5RJU.js.map +1 -0
  32. package/dist/react/chunk-DTRWUIDH.js +402 -0
  33. package/dist/react/chunk-DTRWUIDH.js.map +1 -0
  34. package/dist/react/chunk-GFVCNWVT.js +54 -0
  35. package/dist/react/chunk-GFVCNWVT.js.map +1 -0
  36. package/dist/react/chunk-JT5EZZSL.js +489 -0
  37. package/dist/react/chunk-JT5EZZSL.js.map +1 -0
  38. package/dist/react/chunk-KJX5LOMN.js +43 -0
  39. package/dist/react/chunk-KJX5LOMN.js.map +1 -0
  40. package/dist/react/chunk-KLXK4V6G.js +65 -0
  41. package/dist/react/chunk-KLXK4V6G.js.map +1 -0
  42. package/dist/react/chunk-LJLMKEKI.js +245 -0
  43. package/dist/react/chunk-LJLMKEKI.js.map +1 -0
  44. package/dist/react/chunk-MIXAYX55.js +147 -0
  45. package/dist/react/chunk-MIXAYX55.js.map +1 -0
  46. package/dist/react/chunk-RPNCWADG.js +248 -0
  47. package/dist/react/chunk-RPNCWADG.js.map +1 -0
  48. package/dist/react/chunk-S6RDMHHH.js +47 -0
  49. package/dist/react/chunk-S6RDMHHH.js.map +1 -0
  50. package/dist/react/chunk-U6RIOMF4.js +893 -0
  51. package/dist/react/chunk-U6RIOMF4.js.map +1 -0
  52. package/dist/react/chunk-WCRLJFBW.js +5568 -0
  53. package/dist/react/chunk-WCRLJFBW.js.map +1 -0
  54. package/dist/react/chunk-YF6S7S36.js +588 -0
  55. package/dist/react/chunk-YF6S7S36.js.map +1 -0
  56. package/dist/react/dist-es-5WYA7CWK.js +379 -0
  57. package/dist/react/dist-es-5WYA7CWK.js.map +1 -0
  58. package/dist/react/dist-es-CR5AOOCO.js +333 -0
  59. package/dist/react/dist-es-CR5AOOCO.js.map +1 -0
  60. package/dist/react/dist-es-KZ3GLAJI.js +494 -0
  61. package/dist/react/dist-es-KZ3GLAJI.js.map +1 -0
  62. package/dist/react/dist-es-R4TRTT45.js +22 -0
  63. package/dist/react/dist-es-R4TRTT45.js.map +1 -0
  64. package/dist/react/dist-es-SKDPAJEW.js +169 -0
  65. package/dist/react/dist-es-SKDPAJEW.js.map +1 -0
  66. package/dist/react/dist-es-TOHBZNTZ.js +71 -0
  67. package/dist/react/dist-es-TOHBZNTZ.js.map +1 -0
  68. package/dist/react/dist-es-XNAC47MK.js +90 -0
  69. package/dist/react/dist-es-XNAC47MK.js.map +1 -0
  70. package/dist/react/event-streams-WAZW4P3K.js +277 -0
  71. package/dist/react/event-streams-WAZW4P3K.js.map +1 -0
  72. package/dist/react/index.d.ts +53 -4
  73. package/dist/react/index.d.ts.map +1 -1
  74. package/dist/react/index.js +10991 -190
  75. package/dist/react/index.js.map +1 -1
  76. package/dist/react/loadSso-KXVD6CBM.js +556 -0
  77. package/dist/react/loadSso-KXVD6CBM.js.map +1 -0
  78. package/dist/react/service.config-I7RKP6FE.js +14 -0
  79. package/dist/react/service.config-I7RKP6FE.js.map +1 -0
  80. package/dist/react/services/core.service.d.ts +11 -1
  81. package/dist/react/services/core.service.d.ts.map +1 -1
  82. package/dist/react/signin-SEY3FDQ5.js +653 -0
  83. package/dist/react/signin-SEY3FDQ5.js.map +1 -0
  84. package/dist/react/sso-oidc-REODVHH5.js +786 -0
  85. package/dist/react/sso-oidc-REODVHH5.js.map +1 -0
  86. package/dist/react/sts-I3M4QP37.js +3948 -0
  87. package/dist/react/sts-I3M4QP37.js.map +1 -0
  88. package/dist/react/websocket/WebSocketManager.d.ts +68 -0
  89. package/dist/react/websocket/WebSocketManager.d.ts.map +1 -0
  90. package/dist/react/websocket/index.d.ts +3 -0
  91. package/dist/react/websocket/index.d.ts.map +1 -0
  92. package/dist/react/websocket/optimistic.d.ts +51 -0
  93. package/dist/react/websocket/optimistic.d.ts.map +1 -0
  94. package/dist/react/websocket-OSLLJSNO.js +10 -0
  95. package/dist/react/websocket-OSLLJSNO.js.map +1 -0
  96. package/dist/sst/components/monorise-core.d.ts +10 -0
  97. package/dist/sst/components/monorise-core.d.ts.map +1 -1
  98. package/dist/sst/index.js +75 -12
  99. package/dist/sst/index.js.map +1 -1
  100. package/package.json +9 -1
@@ -0,0 +1,68 @@
1
+ export type ConnectionState = 'connecting' | 'connected' | 'reconnecting' | 'disconnected';
2
+ export interface ClientMessage {
3
+ action: 'subscribe' | 'unsubscribe' | 'ephemeral' | 'ping';
4
+ id: string;
5
+ payload: {
6
+ entityType?: string;
7
+ byEntityType?: string;
8
+ byEntityId?: string;
9
+ mutualEntityType?: string;
10
+ channel?: string;
11
+ data?: unknown;
12
+ };
13
+ }
14
+ export interface ServerMessage {
15
+ type: 'entity.created' | 'entity.updated' | 'entity.deleted' | 'mutual.created' | 'mutual.updated' | 'mutual.deleted' | 'ephemeral' | 'ack' | 'error' | 'pong';
16
+ id: string;
17
+ payload: unknown;
18
+ }
19
+ type MessageHandler = (message: ServerMessage) => void;
20
+ type ConnectionStateHandler = (state: ConnectionState) => void;
21
+ export declare class WebSocketManager {
22
+ private ws;
23
+ private url;
24
+ private token;
25
+ private state;
26
+ private reconnectAttempts;
27
+ private maxReconnectAttempts;
28
+ private reconnectDelay;
29
+ private maxReconnectDelay;
30
+ private heartbeatInterval;
31
+ private heartbeatTimeout;
32
+ private readonly heartbeatIntervalMs;
33
+ private readonly heartbeatTimeoutMs;
34
+ private messageHandlers;
35
+ private stateHandlers;
36
+ private entitySubscriptions;
37
+ private mutualSubscriptions;
38
+ private ephemeralSubscriptions;
39
+ private pendingMessages;
40
+ disableAutoReconnect: boolean;
41
+ constructor(url: string, token: string);
42
+ connect(): void;
43
+ disconnect(): void;
44
+ subscribeEntityType(entityType: string): string;
45
+ unsubscribeEntityType(subKey: string): void;
46
+ subscribeMutualType(byEntityType: string, byEntityId: string, mutualEntityType: string): string;
47
+ unsubscribeMutualType(subKey: string): void;
48
+ subscribeEphemeral(channel: string): string;
49
+ unsubscribeEphemeral(subKey: string): void;
50
+ sendEphemeral(channel: string, data: unknown): void;
51
+ send(message: ClientMessage): void;
52
+ onMessage(handler: MessageHandler): () => void;
53
+ onStateChange(handler: ConnectionStateHandler): () => void;
54
+ getState(): ConnectionState;
55
+ private setState;
56
+ private handleOpen;
57
+ private handleClose;
58
+ private handleError;
59
+ private handleMessage;
60
+ private scheduleReconnect;
61
+ private resubscribeAll;
62
+ private flushPendingMessages;
63
+ private startHeartbeat;
64
+ private stopHeartbeat;
65
+ private handlePong;
66
+ }
67
+ export {};
68
+ //# sourceMappingURL=WebSocketManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebSocketManager.d.ts","sourceRoot":"","sources":["../../websocket/WebSocketManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { WebSocketManager, type ConnectionState, type ClientMessage, type ServerMessage, } from './WebSocketManager';
2
+ export { OptimisticEngine, type OptimisticOperation, } from './optimistic';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../websocket/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,gBAAgB,EAChB,KAAK,mBAAmB,GACzB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,51 @@
1
+ export interface OptimisticOperation {
2
+ id: string;
3
+ type: 'create' | 'update' | 'delete';
4
+ entityType: string;
5
+ entityId: string;
6
+ previousData?: unknown;
7
+ optimisticData: unknown;
8
+ timestamp: number;
9
+ }
10
+ export declare class OptimisticEngine {
11
+ private operations;
12
+ private onRollback?;
13
+ private onConfirm?;
14
+ constructor(options?: {
15
+ onRollback?: (operation: OptimisticOperation) => void;
16
+ onConfirm?: (operation: OptimisticOperation) => void;
17
+ });
18
+ /**
19
+ * Register an optimistic operation
20
+ */
21
+ register(operation: Omit<OptimisticOperation, 'id' | 'timestamp'>): string;
22
+ /**
23
+ * Confirm an operation (server acknowledged)
24
+ */
25
+ confirm(mutationId: string): void;
26
+ /**
27
+ * Rollback an operation (server rejected or failed)
28
+ */
29
+ rollback(mutationId: string): OptimisticOperation | undefined;
30
+ /**
31
+ * Check if an entity has pending optimistic operations
32
+ */
33
+ hasPendingOperation(entityType: string, entityId: string): boolean;
34
+ /**
35
+ * Get pending operation for an entity
36
+ */
37
+ getPendingOperation(entityType: string, entityId: string): OptimisticOperation | undefined;
38
+ /**
39
+ * Clear all operations (e.g., on disconnect)
40
+ */
41
+ clear(): OptimisticOperation[];
42
+ /**
43
+ * Get all pending operations
44
+ */
45
+ getAllPending(): OptimisticOperation[];
46
+ /**
47
+ * Clean up old operations (older than specified ms)
48
+ */
49
+ cleanup(maxAgeMs?: number): number;
50
+ }
51
+ //# sourceMappingURL=optimistic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimistic.d.ts","sourceRoot":"","sources":["../../websocket/optimistic.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,UAAU,CAAC,CAA2C;IAC9D,OAAO,CAAC,SAAS,CAAC,CAA2C;gBAEjD,OAAO,CAAC,EAAE;QACpB,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,mBAAmB,KAAK,IAAI,CAAC;QACtD,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,mBAAmB,KAAK,IAAI,CAAC;KACtD;IAKD;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,MAAM;IAY1E;;OAEG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAQjC;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAU7D;;OAEG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IASlE;;OAEG;IACH,mBAAmB,CACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,mBAAmB,GAAG,SAAS;IASlC;;OAEG;IACH,KAAK,IAAI,mBAAmB,EAAE;IAM9B;;OAEG;IACH,aAAa,IAAI,mBAAmB,EAAE;IAItC;;OAEG;IACH,OAAO,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM;CAalD"}
@@ -0,0 +1,10 @@
1
+ import {
2
+ OptimisticEngine,
3
+ WebSocketManager
4
+ } from "./chunk-DTRWUIDH.js";
5
+ import "./chunk-MIXAYX55.js";
6
+ export {
7
+ OptimisticEngine,
8
+ WebSocketManager
9
+ };
10
+ //# sourceMappingURL=websocket-OSLLJSNO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,10 +1,19 @@
1
1
  import { SingleTable } from './single-table';
2
+ type WebSocketHandlerArgs = {
3
+ memory?: sst.aws.FunctionArgs['memory'];
4
+ timeout?: sst.aws.FunctionArgs['timeout'];
5
+ };
6
+ type WebSocketConfig = {
7
+ enabled: true;
8
+ handler?: WebSocketHandlerArgs;
9
+ };
2
10
  type MonoriseCoreArgs = {
3
11
  tableTtl?: string;
4
12
  slackWebhook?: string;
5
13
  allowHeaders?: string[];
6
14
  allowOrigins?: string[];
7
15
  configRoot?: string;
16
+ webSocket?: WebSocketConfig;
8
17
  };
9
18
  export declare class MonoriseCore {
10
19
  readonly id: string;
@@ -12,6 +21,7 @@ export declare class MonoriseCore {
12
21
  readonly bus: sst.aws.Bus;
13
22
  readonly table: SingleTable;
14
23
  readonly alarmTopic: sst.aws.SnsTopic;
24
+ readonly websocket?: sst.aws.ApiGatewayWebSocket;
15
25
  constructor(id: string, args?: MonoriseCoreArgs);
16
26
  }
17
27
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"monorise-core.d.ts","sourceRoot":"","sources":["../../components/monorise-core.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,KAAK,gBAAgB,GAAG;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,qBAAa,YAAY;IACvB,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC;IAC1C,SAAgB,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;IACjC,SAAgB,KAAK,EAAE,WAAW,CAAC;IACnC,SAAgB,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAEjC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB;CAsMhD"}
1
+ {"version":3,"file":"monorise-core.d.ts","sourceRoot":"","sources":["../../components/monorise-core.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,KAAK,oBAAoB,GAAG;IAC1B,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;CAC3C,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B,CAAC;AAEF,qBAAa,YAAY;IACvB,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC;IAC1C,SAAgB,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;IACjC,SAAgB,KAAK,EAAE,WAAW,CAAC;IACnC,SAAgB,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC7C,SAAgB,SAAS,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC;gBAE5C,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB;CAyRhD"}
package/dist/sst/index.js CHANGED
@@ -418,9 +418,9 @@ var SingleTable = class {
418
418
  // components/monorise-core.ts
419
419
  var MonoriseCore = class {
420
420
  constructor(id, args) {
421
- var _a;
421
+ var _a, _b, _c, _d, _e, _f;
422
422
  const runtime = "nodejs22.x";
423
- const configRootCommand = (args == null ? void 0 : args.configRoot) ? `--config-root ${args.configRoot}` : "";
423
+ const configRootCommand = (args == null ? void 0 : args.configRoot) ? `--config-root ${args == null ? void 0 : args.configRoot}` : "";
424
424
  const dotMonorisePath = path2.join((_a = args == null ? void 0 : args.configRoot) != null ? _a : "", ".monorise");
425
425
  new sst.x.DevCommand("Monorise", {
426
426
  dev: {
@@ -449,16 +449,12 @@ var MonoriseCore = class {
449
449
  });
450
450
  const secretApiKeys = new sst.Secret("API_KEYS", '["secret1", "secret2"]');
451
451
  const appHandlerName = `${$app.stage}-${$app.name}-${id}-app-handler`;
452
- this.api.route("ANY /core/{proxy+}", {
453
- name: appHandlerName,
454
- handler: `${dotMonorisePath}/handle.appHandler`,
455
- link: [this.table.table, this.bus, secretApiKeys],
456
- environment: {
457
- API_KEYS: secretApiKeys.value,
458
- CORE_TABLE: this.table.table.name,
459
- CORE_EVENT_BUS: this.bus.name
460
- }
461
- });
452
+ const appHandlerEnvironment = {
453
+ API_KEYS: secretApiKeys.value,
454
+ CORE_TABLE: this.table.table.name,
455
+ CORE_EVENT_BUS: this.bus.name
456
+ };
457
+ const appHandlerLinks = [this.table.table, this.bus, secretApiKeys];
462
458
  this.alarmTopic = new sst.aws.SnsTopic(`${id}-monorise-dlq-alarm-topic`);
463
459
  const environment = {
464
460
  CORE_TABLE: this.table.table.name,
@@ -527,6 +523,73 @@ var MonoriseCore = class {
527
523
  ]
528
524
  }
529
525
  });
526
+ if ((_b = args == null ? void 0 : args.webSocket) == null ? void 0 : _b.enabled) {
527
+ const memory = (_d = (_c = args.webSocket.handler) == null ? void 0 : _c.memory) != null ? _d : "512 MB";
528
+ const timeout = (_f = (_e = args.webSocket.handler) == null ? void 0 : _e.timeout) != null ? _f : "30 seconds";
529
+ this.websocket = new sst.aws.ApiGatewayWebSocket(`${id}-websocket`, {});
530
+ const wsEnvironment = {
531
+ CORE_TABLE: this.table.table.name,
532
+ WEBSOCKET_MANAGEMENT_ENDPOINT: this.websocket.managementEndpoint
533
+ };
534
+ const connectHandler = new sst.aws.Function(`${id}-ws-connect`, {
535
+ handler: `${dotMonorisePath}/handle.wsConnect`,
536
+ runtime,
537
+ memory,
538
+ timeout,
539
+ environment: wsEnvironment,
540
+ link: [this.table.table, this.websocket]
541
+ });
542
+ const disconnectHandler = new sst.aws.Function(`${id}-ws-disconnect`, {
543
+ handler: `${dotMonorisePath}/handle.wsDisconnect`,
544
+ runtime,
545
+ memory,
546
+ timeout,
547
+ environment: wsEnvironment,
548
+ link: [this.table.table]
549
+ });
550
+ const defaultHandler = new sst.aws.Function(`${id}-ws-default`, {
551
+ handler: `${dotMonorisePath}/handle.wsDefault`,
552
+ runtime,
553
+ memory,
554
+ timeout,
555
+ environment: wsEnvironment,
556
+ link: [this.table.table, this.websocket]
557
+ });
558
+ this.websocket.route("$connect", connectHandler.arn);
559
+ this.websocket.route("$disconnect", disconnectHandler.arn);
560
+ this.websocket.route("$default", defaultHandler.arn);
561
+ this.table.table.subscribe(
562
+ `${id}-ws-broadcast`,
563
+ {
564
+ name: `${$app.stage}-${$app.name}-${id}-ws-broadcast`,
565
+ handler: `${dotMonorisePath}/handle.wsBroadcast`,
566
+ runtime,
567
+ memory: "1024 MB",
568
+ timeout: "60 seconds",
569
+ environment: wsEnvironment,
570
+ link: [this.table.table, this.websocket]
571
+ },
572
+ {
573
+ transform: {
574
+ eventSourceMapping: {
575
+ startingPosition: "LATEST",
576
+ bisectBatchOnFunctionError: true,
577
+ maximumRetryAttempts: 1
578
+ }
579
+ }
580
+ }
581
+ );
582
+ }
583
+ if (this.websocket) {
584
+ appHandlerEnvironment.WEBSOCKET_URL = this.websocket.url;
585
+ appHandlerLinks.push(this.websocket);
586
+ }
587
+ this.api.route("ANY /core/{proxy+}", {
588
+ name: appHandlerName,
589
+ handler: `${dotMonorisePath}/handle.appHandler`,
590
+ link: appHandlerLinks,
591
+ environment: appHandlerEnvironment
592
+ });
530
593
  new aws.cloudwatch.Dashboard(`${id}-monorise-dashboard`, {
531
594
  dashboardName: `${$app.stage}-${$app.name}-${id}-monorise`,
532
595
  dashboardBody: $resolve([
@@ -1 +1 @@
1
- {"version":3,"sources":["../components/monorise-core.ts","../constants/event.ts","../components/dashboard.ts","../components/q-function.ts","../components/single-table.ts","../constants/table.ts","../index.ts"],"sourcesContent":["import path from 'node:path';\nimport { EVENT, SOURCE } from '../constants/event';\nimport { createFunctionWidgets } from './dashboard';\nimport { QFunction } from './q-function';\nimport { SingleTable } from './single-table';\n\ntype MonoriseCoreArgs = {\n tableTtl?: string;\n slackWebhook?: string;\n allowHeaders?: string[];\n allowOrigins?: string[];\n configRoot?: string;\n};\n\nexport class MonoriseCore {\n public readonly id: string;\n public readonly api: sst.aws.ApiGatewayV2;\n public readonly bus: sst.aws.Bus;\n public readonly table: SingleTable;\n public readonly alarmTopic: sst.aws.SnsTopic;\n\n constructor(id: string, args?: MonoriseCoreArgs) {\n const runtime: sst.aws.FunctionArgs['runtime'] = 'nodejs22.x';\n const configRootCommand = args?.configRoot\n ? `--config-root ${args.configRoot}`\n : '';\n const dotMonorisePath = path.join(args?.configRoot ?? '', '.monorise');\n\n new sst.x.DevCommand('Monorise', {\n dev: {\n autostart: true,\n command: `npx monorise dev ${configRootCommand}`,\n },\n });\n\n this.id = id;\n\n this.api = new sst.aws.ApiGatewayV2(`${id}-monorise-api`, {\n cors: {\n allowMethods: ['*'],\n allowCredentials: true,\n allowHeaders: [\n ...(args?.allowHeaders ? args.allowHeaders : []),\n 'Content-Type',\n 'Authorization',\n ],\n allowOrigins: args?.allowOrigins,\n },\n });\n\n this.bus = new sst.aws.Bus(`${id}-monorise-bus`);\n this.table = new SingleTable(id, {\n ttl: args?.tableTtl,\n runtime,\n configRoot: args?.configRoot,\n });\n\n const secretApiKeys = new sst.Secret('API_KEYS', '[\"secret1\", \"secret2\"]');\n\n const appHandlerName = `${$app.stage}-${$app.name}-${id}-app-handler`;\n this.api.route('ANY /core/{proxy+}', {\n name: appHandlerName,\n handler: `${dotMonorisePath}/handle.appHandler`,\n link: [this.table.table, this.bus, secretApiKeys],\n environment: {\n API_KEYS: secretApiKeys.value,\n CORE_TABLE: this.table.table.name,\n CORE_EVENT_BUS: this.bus.name,\n },\n });\n\n this.alarmTopic = new sst.aws.SnsTopic(`${id}-monorise-dlq-alarm-topic`);\n\n const environment = {\n CORE_TABLE: this.table.table.name,\n CORE_EVENT_BUS: this.bus.name,\n };\n\n /**\n * Event Processors\n */\n const mutualProcessorName = `${$app.stage}-${$app.name}-${id}-mutual-processor`;\n const tagProcessorName = `${$app.stage}-${$app.name}-${id}-tag-processor`;\n const treeProcessorName = `${$app.stage}-${$app.name}-${id}-tree-processor`;\n\n const mutualProcessor = new QFunction('mutual', {\n name: mutualProcessorName,\n handler: `${dotMonorisePath}/handle.mutualHandler`,\n memory: '512 MB',\n timeout: '30 seconds',\n visibilityTimeout: '30 seconds',\n alarmTopic: this.alarmTopic,\n runtime,\n environment,\n link: [this.table.table, this.bus],\n });\n\n const tagProcessor = new QFunction('tag', {\n name: tagProcessorName,\n handler: `${dotMonorisePath}/handle.tagHandler`,\n memory: '512 MB',\n timeout: '30 seconds',\n visibilityTimeout: '30 seconds',\n alarmTopic: this.alarmTopic,\n runtime,\n environment,\n link: [this.table.table],\n });\n\n const treeProcessor = new QFunction('tree', {\n name: treeProcessorName,\n handler: `${dotMonorisePath}/handle.treeHandler`,\n memory: '512 MB',\n timeout: '30 seconds',\n visibilityTimeout: '30 seconds',\n alarmTopic: this.alarmTopic,\n runtime,\n environment,\n link: [this.table.table],\n });\n\n this.bus.subscribeQueue(`${id}-mutual-queue-rule`, mutualProcessor.queue, {\n pattern: {\n source: [SOURCE.CORE],\n detailType: [\n EVENT.CORE.ENTITY_MUTUAL_TO_CREATE.DetailType,\n EVENT.CORE.ENTITY_MUTUAL_TO_UPDATE.DetailType,\n ],\n },\n });\n\n this.bus.subscribeQueue(`${id}-tag-queue-rule`, tagProcessor.queue, {\n pattern: {\n source: [SOURCE.CORE],\n detailType: [\n EVENT.CORE.ENTITY_CREATED.DetailType,\n EVENT.CORE.ENTITY_UPDATED.DetailType,\n ],\n },\n });\n\n this.bus.subscribeQueue(`${id}-tree-queue-rule`, treeProcessor.queue, {\n pattern: {\n source: [SOURCE.CORE],\n detailType: [\n EVENT.CORE.ENTITY_MUTUAL_PROCESSED.DetailType,\n EVENT.CORE.PREJOIN_RELATIONSHIP_SYNC.DetailType,\n ],\n },\n });\n\n /**\n * CloudWatch Dashboard\n */\n new aws.cloudwatch.Dashboard(`${id}-monorise-dashboard`, {\n dashboardName: `${$app.stage}-${$app.name}-${id}-monorise`,\n dashboardBody: $resolve([\n aws.getRegionOutput().name,\n this.table.table.name,\n mutualProcessor.dlq.nodes.queue.name,\n tagProcessor.dlq.nodes.queue.name,\n treeProcessor.dlq.nodes.queue.name,\n this.table.dlq.nodes.queue.name,\n ]).apply(\n ([region, tableName, mutualDlq, tagDlq, treeDlq, replicatorDlq]) => {\n const dynamoDbUrl = `https://${region}.console.aws.amazon.com/dynamodbv2/home?region=${region}#table?name=${tableName}&tab=monitoring`;\n\n return JSON.stringify({\n widgets: [\n {\n type: 'text',\n x: 0,\n y: 0,\n width: 24,\n height: 2,\n properties: {\n markdown: `### Related Resources\\n[View DynamoDB Table Metrics](${dynamoDbUrl})`,\n },\n },\n ...createFunctionWidgets(\n 'API Handler',\n appHandlerName,\n 2,\n region,\n ),\n ...createFunctionWidgets(\n 'Replicator',\n this.table.replicatorFunctionName,\n 9,\n region,\n replicatorDlq,\n ),\n ...createFunctionWidgets(\n 'Mutual Processor',\n mutualProcessorName,\n 16,\n region,\n mutualDlq,\n ),\n ...createFunctionWidgets(\n 'Tag Processor',\n tagProcessorName,\n 23,\n region,\n tagDlq,\n ),\n ...createFunctionWidgets(\n 'Tree Processor',\n treeProcessorName,\n 30,\n region,\n treeDlq,\n ),\n ],\n });\n },\n ),\n });\n }\n}\n","import type { Entity as EntityType } from '@monorise/base';\n\nconst SOURCE = {\n CORE: 'core-service',\n GENERAL: 'general',\n};\n\nexport type EventDetail = {\n Source: string;\n DetailType: string;\n};\n\nconst EVENT = {\n CORE: {\n LOGIN_EMAIL_REQUESTED: {\n Source: SOURCE.CORE,\n DetailType: 'login-email-requested',\n },\n\n /*\n * Entity\n */\n ENTITY_CREATED: {\n Source: SOURCE.CORE,\n DetailType: 'entity-created',\n },\n ENTITY_UPSERTED: {\n Source: SOURCE.CORE,\n DetailType: 'entity-upserted',\n },\n ENTITY_UPDATED: {\n Source: SOURCE.CORE,\n DetailType: 'entity-updated',\n },\n ENTITY_DELETED: {\n Source: SOURCE.CORE,\n DetailType: 'entity-deleted',\n },\n ENTITY_MUTUAL_TO_CREATE: {\n Source: SOURCE.CORE,\n DetailType: 'entity-mutual-to-create',\n },\n ENTITY_MUTUAL_TO_UPDATE: {\n Source: SOURCE.CORE,\n DetailType: 'entity-mutual-to-update',\n },\n ENTITY_MUTUAL_PROCESSED: {\n Source: SOURCE.CORE,\n DetailType: 'entity-mutual-processed',\n },\n\n CREATE_ENTITY: {\n Source: SOURCE.CORE,\n DetailType: 'create-entity',\n },\n\n /*\n * Mutual\n */\n MUTUAL_CREATED: (byEntityType: EntityType, entityType: EntityType) => ({\n Source: SOURCE.CORE,\n DetailType: `mutual-created:${byEntityType}:${entityType}`,\n }),\n MUTUAL_UPDATED: (byEntityType: EntityType, entityType: EntityType) => ({\n Source: SOURCE.CORE,\n DetailType: `mutual-updated:${byEntityType}:${entityType}`,\n }),\n MUTUAL_DELETED: (byEntityType: EntityType, entityType: EntityType) => ({\n Source: SOURCE.CORE,\n DetailType: `mutual-deleted:${byEntityType}:${entityType}`,\n }),\n PREJOIN_RELATIONSHIP_SYNC: {\n Source: SOURCE.CORE,\n DetailType: 'prejoin-relationship-sync',\n },\n },\n\n GENERAL: {\n ENDPOINT_ERROR: {\n Source: SOURCE.GENERAL,\n DetailType: 'endpoint-error',\n },\n },\n};\n\nexport { SOURCE, EVENT };\n","export function createFunctionWidgets(\n title: string,\n functionName: string,\n y: number,\n region: string,\n dlqName?: string,\n) {\n const hasDlq = !!dlqName;\n const w = hasDlq ? 4 : 5;\n const widgets: object[] = [];\n let x = 0;\n\n // Section header\n widgets.push({\n type: 'text',\n x: 0,\n y,\n width: 24,\n height: 1,\n properties: {\n markdown: `## ${title}`,\n },\n });\n\n const metricY = y + 1;\n\n widgets.push({\n type: 'metric',\n x,\n y: metricY,\n width: w,\n height: 6,\n properties: {\n metrics: [\n ['AWS/Lambda', 'Invocations', 'FunctionName', functionName],\n ],\n title: 'Invocations',\n stat: 'Sum',\n period: 300,\n region,\n },\n });\n x += w;\n\n widgets.push({\n type: 'metric',\n x,\n y: metricY,\n width: w,\n height: 6,\n properties: {\n metrics: [\n [\n 'AWS/Lambda',\n 'Duration',\n 'FunctionName',\n functionName,\n { label: 'Avg' },\n ],\n ['...', { stat: 'p99', label: 'p99' }],\n ],\n title: 'Duration (ms)',\n stat: 'Average',\n period: 300,\n region,\n },\n });\n x += w;\n\n widgets.push({\n type: 'metric',\n x,\n y: metricY,\n width: w,\n height: 6,\n properties: {\n metrics: [\n ['AWS/Lambda', 'Errors', 'FunctionName', functionName],\n ],\n title: 'Errors',\n stat: 'Sum',\n period: 300,\n region,\n },\n });\n x += w;\n\n widgets.push({\n type: 'metric',\n x,\n y: metricY,\n width: w,\n height: 6,\n properties: {\n metrics: [\n [\n {\n expression: '100 - 100 * errors / invocations',\n label: 'Success Rate (%)',\n id: 'successRate',\n },\n ],\n [\n 'AWS/Lambda',\n 'Invocations',\n 'FunctionName',\n functionName,\n { id: 'invocations', visible: false },\n ],\n [\n 'AWS/Lambda',\n 'Errors',\n 'FunctionName',\n functionName,\n { id: 'errors', visible: false },\n ],\n ],\n title: 'Success Rate (%)',\n stat: 'Sum',\n period: 300,\n region,\n yAxis: { left: { min: 0, max: 100 } },\n },\n });\n x += w;\n\n const concurrentW = hasDlq ? w : 24 - x;\n widgets.push({\n type: 'metric',\n x,\n y: metricY,\n width: concurrentW,\n height: 6,\n properties: {\n metrics: [\n [\n 'AWS/Lambda',\n 'ConcurrentExecutions',\n 'FunctionName',\n functionName,\n ],\n ],\n title: 'Concurrent Executions',\n stat: 'Maximum',\n period: 300,\n region,\n },\n });\n x += concurrentW;\n\n if (dlqName) {\n widgets.push({\n type: 'metric',\n x,\n y: metricY,\n width: 24 - x,\n height: 6,\n properties: {\n metrics: [\n [\n 'AWS/SQS',\n 'ApproximateNumberOfMessagesVisible',\n 'QueueName',\n dlqName,\n ],\n ],\n title: 'DLQ Messages',\n stat: 'Maximum',\n period: 300,\n region,\n },\n });\n }\n\n return widgets;\n}\n","type DurationMinutes =\n | `${number} second`\n | `${number} seconds`\n | `${number} minute`\n | `${number} minutes`;\n\ninterface QFunctionArgs extends sst.aws.FunctionArgs {\n visibilityTimeout?: sst.aws.QueueArgs['visibilityTimeout'];\n maxBatchingWindow?: DurationMinutes;\n batchSize?: number;\n alarmTopic?: sst.aws.SnsTopic;\n}\n\nexport class QFunction {\n public readonly id: string;\n public readonly queue: sst.aws.Queue;\n public readonly dlq: sst.aws.Queue;\n private function: sst.aws.Function;\n\n constructor(id: string, args: QFunctionArgs) {\n this.id = id;\n\n const {\n visibilityTimeout,\n maxBatchingWindow,\n batchSize,\n alarmTopic,\n link,\n ...functionArgs\n } = args;\n\n this.dlq = new sst.aws.Queue(`${id}-queue-dlq`);\n\n this.queue = new sst.aws.Queue(`${id}-queue`, {\n visibilityTimeout,\n dlq: this.dlq.arn,\n });\n\n this.function = new sst.aws.Function(`${id}-processor`, {\n ...functionArgs,\n link: (link as any[])?.length\n ? [this.queue, ...(link as any[])]\n : [this.queue],\n });\n\n this.queue.subscribe(this.function.arn, {\n batch: {\n partialResponses: true,\n window: maxBatchingWindow,\n size: batchSize,\n },\n });\n\n if (alarmTopic) {\n const dlqMessageAlarm = new aws.cloudwatch.MetricAlarm(\n `${id}-dlq-message-alarm`,\n {\n name: `${$app.stage}-${$app.name}-${id}-dlq-alarm`,\n comparisonOperator: 'GreaterThanOrEqualToThreshold',\n evaluationPeriods: 1,\n metricName: 'ApproximateNumberOfMessagesVisible',\n namespace: 'AWS/SQS',\n period: 60,\n statistic: 'Sum',\n threshold: 1,\n dimensions: {\n QueueName: this.dlq.nodes.queue.name,\n },\n alarmDescription:\n 'Alarm when there is at least one message in the DLQ.',\n // Actions to take when the alarm changes to ALARM state.\n alarmActions: [alarmTopic.arn],\n // Actions to take when the alarm changes to OK state.\n // okActions: [alarmSnsTopic.arn],\n },\n );\n }\n }\n}\n","import path from 'node:path';\nimport {\n ENTITY_REPLICATION_INDEX,\n MUTUAL_REPLICATION_INDEX,\n} from '../constants/table';\n\ntype SingleTableArgs = {\n ttl?: string;\n runtime?: sst.aws.FunctionArgs['runtime'];\n configRoot?: string;\n};\n\nexport class SingleTable {\n public readonly id: string;\n public readonly table: sst.aws.Dynamo;\n public readonly dlq: sst.aws.Queue;\n public readonly replicatorFunctionName: string;\n\n constructor(id: string, args?: SingleTableArgs) {\n this.id = id;\n this.replicatorFunctionName = `${$app.stage}-${$app.name}-${id}-core-replicator`;\n this.dlq = new sst.aws.Queue(`${id}-core-replicator-dlq`);\n this.table = new sst.aws.Dynamo(`${id}-core-table`, {\n fields: {\n PK: 'string',\n SK: 'string',\n R1PK: 'string',\n R1SK: 'string',\n R2PK: 'string',\n R2SK: 'string',\n },\n primaryIndex: { hashKey: 'PK', rangeKey: 'SK' },\n globalIndexes: {\n [ENTITY_REPLICATION_INDEX]: {\n hashKey: 'R1PK',\n rangeKey: 'R1SK',\n projection: [\n 'PK',\n 'SK',\n 'R2PK',\n 'R2SK',\n 'updatedAt',\n 'mutualUpdatedAt',\n ],\n },\n [MUTUAL_REPLICATION_INDEX]: {\n hashKey: 'R2PK',\n rangeKey: 'R2SK',\n projection: [\n 'PK',\n 'SK',\n 'R2PK',\n 'R2SK',\n 'updatedAt',\n 'mutualUpdatedAt',\n ],\n },\n },\n stream: 'new-and-old-images',\n ttl: args?.ttl,\n });\n\n const environment = {\n CORE_TABLE: this.table.name,\n };\n\n this.table.subscribe(\n `${id}-core-replicator`,\n {\n name: this.replicatorFunctionName,\n handler: path.join(\n args?.configRoot ?? '',\n '.monorise/handle.replicationHandler',\n ),\n timeout: '60 seconds',\n memory: '512 MB',\n runtime: args?.runtime,\n environment,\n link: [this.table, this.dlq],\n },\n {\n transform: {\n eventSourceMapping: {\n startingPosition: 'LATEST',\n bisectBatchOnFunctionError: true,\n maximumRetryAttempts: 1,\n destinationConfig: {\n onFailure: {\n destinationArn: this.dlq.arn,\n },\n },\n },\n },\n },\n );\n }\n}\n","export const ENTITY_REPLICATION_INDEX = 'ENTITY_REPLICATION_INDEX';\nexport const MUTUAL_REPLICATION_INDEX = 'MUTUAL_REPLICATION_INDEX';\n","import { MonoriseCore } from './components/monorise-core';\nimport { QFunction } from './components/q-function';\n\nexport const monorise = {\n module: {\n Core: MonoriseCore,\n },\n block: {\n QFunction,\n },\n};\n"],"mappings":"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","names":["path","path"]}
1
+ {"version":3,"sources":["../components/monorise-core.ts","../constants/event.ts","../components/dashboard.ts","../components/q-function.ts","../components/single-table.ts","../constants/table.ts","../index.ts"],"sourcesContent":["import path from 'node:path';\nimport { EVENT, SOURCE } from '../constants/event';\nimport { createFunctionWidgets } from './dashboard';\nimport { QFunction } from './q-function';\nimport { SingleTable } from './single-table';\n\ntype WebSocketHandlerArgs = {\n memory?: sst.aws.FunctionArgs['memory'];\n timeout?: sst.aws.FunctionArgs['timeout'];\n};\n\ntype WebSocketConfig = {\n enabled: true;\n handler?: WebSocketHandlerArgs;\n};\n\ntype MonoriseCoreArgs = {\n tableTtl?: string;\n slackWebhook?: string;\n allowHeaders?: string[];\n allowOrigins?: string[];\n configRoot?: string;\n webSocket?: WebSocketConfig;\n};\n\nexport class MonoriseCore {\n public readonly id: string;\n public readonly api: sst.aws.ApiGatewayV2;\n public readonly bus: sst.aws.Bus;\n public readonly table: SingleTable;\n public readonly alarmTopic: sst.aws.SnsTopic;\n public readonly websocket?: sst.aws.ApiGatewayWebSocket;\n\n constructor(id: string, args?: MonoriseCoreArgs) {\n const runtime: sst.aws.FunctionArgs['runtime'] = 'nodejs22.x';\n const configRootCommand = args?.configRoot\n ? `--config-root ${args?.configRoot}`\n : '';\n const dotMonorisePath = path.join(args?.configRoot ?? '', '.monorise');\n\n new sst.x.DevCommand('Monorise', {\n dev: {\n autostart: true,\n command: `npx monorise dev ${configRootCommand}`,\n },\n });\n\n this.id = id;\n\n this.api = new sst.aws.ApiGatewayV2(`${id}-monorise-api`, {\n cors: {\n allowMethods: ['*'],\n allowCredentials: true,\n allowHeaders: [\n ...(args?.allowHeaders ? args.allowHeaders : []),\n 'Content-Type',\n 'Authorization',\n ],\n allowOrigins: args?.allowOrigins,\n },\n });\n\n this.bus = new sst.aws.Bus(`${id}-monorise-bus`);\n this.table = new SingleTable(id, {\n ttl: args?.tableTtl,\n runtime,\n configRoot: args?.configRoot,\n });\n\n const secretApiKeys = new sst.Secret('API_KEYS', '[\"secret1\", \"secret2\"]');\n\n const appHandlerName = `${$app.stage}-${$app.name}-${id}-app-handler`;\n const appHandlerEnvironment: Record<string, any> = {\n API_KEYS: secretApiKeys.value,\n CORE_TABLE: this.table.table.name,\n CORE_EVENT_BUS: this.bus.name,\n };\n const appHandlerLinks: any[] = [this.table.table, this.bus, secretApiKeys];\n\n this.alarmTopic = new sst.aws.SnsTopic(`${id}-monorise-dlq-alarm-topic`);\n\n const environment = {\n CORE_TABLE: this.table.table.name,\n CORE_EVENT_BUS: this.bus.name,\n };\n\n /**\n * Event Processors\n */\n const mutualProcessorName = `${$app.stage}-${$app.name}-${id}-mutual-processor`;\n const tagProcessorName = `${$app.stage}-${$app.name}-${id}-tag-processor`;\n const treeProcessorName = `${$app.stage}-${$app.name}-${id}-tree-processor`;\n\n const mutualProcessor = new QFunction('mutual', {\n name: mutualProcessorName,\n handler: `${dotMonorisePath}/handle.mutualHandler`,\n memory: '512 MB',\n timeout: '30 seconds',\n visibilityTimeout: '30 seconds',\n alarmTopic: this.alarmTopic,\n runtime,\n environment,\n link: [this.table.table, this.bus],\n });\n\n const tagProcessor = new QFunction('tag', {\n name: tagProcessorName,\n handler: `${dotMonorisePath}/handle.tagHandler`,\n memory: '512 MB',\n timeout: '30 seconds',\n visibilityTimeout: '30 seconds',\n alarmTopic: this.alarmTopic,\n runtime,\n environment,\n link: [this.table.table],\n });\n\n const treeProcessor = new QFunction('tree', {\n name: treeProcessorName,\n handler: `${dotMonorisePath}/handle.treeHandler`,\n memory: '512 MB',\n timeout: '30 seconds',\n visibilityTimeout: '30 seconds',\n alarmTopic: this.alarmTopic,\n runtime,\n environment,\n link: [this.table.table],\n });\n\n this.bus.subscribeQueue(`${id}-mutual-queue-rule`, mutualProcessor.queue, {\n pattern: {\n source: [SOURCE.CORE],\n detailType: [\n EVENT.CORE.ENTITY_MUTUAL_TO_CREATE.DetailType,\n EVENT.CORE.ENTITY_MUTUAL_TO_UPDATE.DetailType,\n ],\n },\n });\n\n this.bus.subscribeQueue(`${id}-tag-queue-rule`, tagProcessor.queue, {\n pattern: {\n source: [SOURCE.CORE],\n detailType: [\n EVENT.CORE.ENTITY_CREATED.DetailType,\n EVENT.CORE.ENTITY_UPDATED.DetailType,\n ],\n },\n });\n\n this.bus.subscribeQueue(`${id}-tree-queue-rule`, treeProcessor.queue, {\n pattern: {\n source: [SOURCE.CORE],\n detailType: [\n EVENT.CORE.ENTITY_MUTUAL_PROCESSED.DetailType,\n EVENT.CORE.PREJOIN_RELATIONSHIP_SYNC.DetailType,\n ],\n },\n });\n\n /**\n * Optional WebSocket Setup\n */\n if (args?.webSocket?.enabled) {\n const memory = args.webSocket.handler?.memory ?? '512 MB';\n const timeout = args.webSocket.handler?.timeout ?? '30 seconds';\n\n // WebSocket API Gateway\n this.websocket = new sst.aws.ApiGatewayWebSocket(`${id}-websocket`, {});\n\n const wsEnvironment = {\n CORE_TABLE: this.table.table.name,\n WEBSOCKET_MANAGEMENT_ENDPOINT: this.websocket.managementEndpoint,\n };\n\n // $connect handler\n const connectHandler = new sst.aws.Function(`${id}-ws-connect`, {\n handler: `${dotMonorisePath}/handle.wsConnect`,\n runtime,\n memory,\n timeout,\n environment: wsEnvironment,\n link: [this.table.table, this.websocket],\n });\n\n // $disconnect handler\n const disconnectHandler = new sst.aws.Function(`${id}-ws-disconnect`, {\n handler: `${dotMonorisePath}/handle.wsDisconnect`,\n runtime,\n memory,\n timeout,\n environment: wsEnvironment,\n link: [this.table.table],\n });\n\n // $default handler\n const defaultHandler = new sst.aws.Function(`${id}-ws-default`, {\n handler: `${dotMonorisePath}/handle.wsDefault`,\n runtime,\n memory,\n timeout,\n environment: wsEnvironment,\n link: [this.table.table, this.websocket],\n });\n\n // Set WebSocket routes\n this.websocket.route('$connect', connectHandler.arn);\n this.websocket.route('$disconnect', disconnectHandler.arn);\n this.websocket.route('$default', defaultHandler.arn);\n\n // Subscribe broadcast handler to DynamoDB Stream\n this.table.table.subscribe(\n `${id}-ws-broadcast`,\n {\n name: `${$app.stage}-${$app.name}-${id}-ws-broadcast`,\n handler: `${dotMonorisePath}/handle.wsBroadcast`,\n runtime,\n memory: '1024 MB',\n timeout: '60 seconds',\n environment: wsEnvironment,\n link: [this.table.table, this.websocket],\n },\n {\n transform: {\n eventSourceMapping: {\n startingPosition: 'LATEST',\n bisectBatchOnFunctionError: true,\n maximumRetryAttempts: 1,\n },\n },\n },\n );\n }\n\n // Add WebSocket URL to app handler if WebSocket is enabled\n if (this.websocket) {\n appHandlerEnvironment.WEBSOCKET_URL = this.websocket.url;\n appHandlerLinks.push(this.websocket);\n }\n\n this.api.route('ANY /core/{proxy+}', {\n name: appHandlerName,\n handler: `${dotMonorisePath}/handle.appHandler`,\n link: appHandlerLinks,\n environment: appHandlerEnvironment,\n });\n\n /**\n * CloudWatch Dashboard\n */\n new aws.cloudwatch.Dashboard(`${id}-monorise-dashboard`, {\n dashboardName: `${$app.stage}-${$app.name}-${id}-monorise`,\n dashboardBody: $resolve([\n aws.getRegionOutput().name,\n this.table.table.name,\n mutualProcessor.dlq.nodes.queue.name,\n tagProcessor.dlq.nodes.queue.name,\n treeProcessor.dlq.nodes.queue.name,\n this.table.dlq.nodes.queue.name,\n ]).apply(\n ([region, tableName, mutualDlq, tagDlq, treeDlq, replicatorDlq]) => {\n const dynamoDbUrl = `https://${region}.console.aws.amazon.com/dynamodbv2/home?region=${region}#table?name=${tableName}&tab=monitoring`;\n\n return JSON.stringify({\n widgets: [\n {\n type: 'text',\n x: 0,\n y: 0,\n width: 24,\n height: 2,\n properties: {\n markdown: `### Related Resources\\n[View DynamoDB Table Metrics](${dynamoDbUrl})`,\n },\n },\n ...createFunctionWidgets(\n 'API Handler',\n appHandlerName,\n 2,\n region,\n ),\n ...createFunctionWidgets(\n 'Replicator',\n this.table.replicatorFunctionName,\n 9,\n region,\n replicatorDlq,\n ),\n ...createFunctionWidgets(\n 'Mutual Processor',\n mutualProcessorName,\n 16,\n region,\n mutualDlq,\n ),\n ...createFunctionWidgets(\n 'Tag Processor',\n tagProcessorName,\n 23,\n region,\n tagDlq,\n ),\n ...createFunctionWidgets(\n 'Tree Processor',\n treeProcessorName,\n 30,\n region,\n treeDlq,\n ),\n ],\n });\n },\n ),\n });\n }\n}\n","import type { Entity as EntityType } from '@monorise/base';\n\nconst SOURCE = {\n CORE: 'core-service',\n GENERAL: 'general',\n};\n\nexport type EventDetail = {\n Source: string;\n DetailType: string;\n};\n\nconst EVENT = {\n CORE: {\n LOGIN_EMAIL_REQUESTED: {\n Source: SOURCE.CORE,\n DetailType: 'login-email-requested',\n },\n\n /*\n * Entity\n */\n ENTITY_CREATED: {\n Source: SOURCE.CORE,\n DetailType: 'entity-created',\n },\n ENTITY_UPSERTED: {\n Source: SOURCE.CORE,\n DetailType: 'entity-upserted',\n },\n ENTITY_UPDATED: {\n Source: SOURCE.CORE,\n DetailType: 'entity-updated',\n },\n ENTITY_DELETED: {\n Source: SOURCE.CORE,\n DetailType: 'entity-deleted',\n },\n ENTITY_MUTUAL_TO_CREATE: {\n Source: SOURCE.CORE,\n DetailType: 'entity-mutual-to-create',\n },\n ENTITY_MUTUAL_TO_UPDATE: {\n Source: SOURCE.CORE,\n DetailType: 'entity-mutual-to-update',\n },\n ENTITY_MUTUAL_PROCESSED: {\n Source: SOURCE.CORE,\n DetailType: 'entity-mutual-processed',\n },\n\n CREATE_ENTITY: {\n Source: SOURCE.CORE,\n DetailType: 'create-entity',\n },\n\n /*\n * Mutual\n */\n MUTUAL_CREATED: (byEntityType: EntityType, entityType: EntityType) => ({\n Source: SOURCE.CORE,\n DetailType: `mutual-created:${byEntityType}:${entityType}`,\n }),\n MUTUAL_UPDATED: (byEntityType: EntityType, entityType: EntityType) => ({\n Source: SOURCE.CORE,\n DetailType: `mutual-updated:${byEntityType}:${entityType}`,\n }),\n MUTUAL_DELETED: (byEntityType: EntityType, entityType: EntityType) => ({\n Source: SOURCE.CORE,\n DetailType: `mutual-deleted:${byEntityType}:${entityType}`,\n }),\n PREJOIN_RELATIONSHIP_SYNC: {\n Source: SOURCE.CORE,\n DetailType: 'prejoin-relationship-sync',\n },\n },\n\n GENERAL: {\n ENDPOINT_ERROR: {\n Source: SOURCE.GENERAL,\n DetailType: 'endpoint-error',\n },\n },\n};\n\nexport { SOURCE, EVENT };\n","export function createFunctionWidgets(\n title: string,\n functionName: string,\n y: number,\n region: string,\n dlqName?: string,\n) {\n const hasDlq = !!dlqName;\n const w = hasDlq ? 4 : 5;\n const widgets: object[] = [];\n let x = 0;\n\n // Section header\n widgets.push({\n type: 'text',\n x: 0,\n y,\n width: 24,\n height: 1,\n properties: {\n markdown: `## ${title}`,\n },\n });\n\n const metricY = y + 1;\n\n widgets.push({\n type: 'metric',\n x,\n y: metricY,\n width: w,\n height: 6,\n properties: {\n metrics: [\n ['AWS/Lambda', 'Invocations', 'FunctionName', functionName],\n ],\n title: 'Invocations',\n stat: 'Sum',\n period: 300,\n region,\n },\n });\n x += w;\n\n widgets.push({\n type: 'metric',\n x,\n y: metricY,\n width: w,\n height: 6,\n properties: {\n metrics: [\n [\n 'AWS/Lambda',\n 'Duration',\n 'FunctionName',\n functionName,\n { label: 'Avg' },\n ],\n ['...', { stat: 'p99', label: 'p99' }],\n ],\n title: 'Duration (ms)',\n stat: 'Average',\n period: 300,\n region,\n },\n });\n x += w;\n\n widgets.push({\n type: 'metric',\n x,\n y: metricY,\n width: w,\n height: 6,\n properties: {\n metrics: [\n ['AWS/Lambda', 'Errors', 'FunctionName', functionName],\n ],\n title: 'Errors',\n stat: 'Sum',\n period: 300,\n region,\n },\n });\n x += w;\n\n widgets.push({\n type: 'metric',\n x,\n y: metricY,\n width: w,\n height: 6,\n properties: {\n metrics: [\n [\n {\n expression: '100 - 100 * errors / invocations',\n label: 'Success Rate (%)',\n id: 'successRate',\n },\n ],\n [\n 'AWS/Lambda',\n 'Invocations',\n 'FunctionName',\n functionName,\n { id: 'invocations', visible: false },\n ],\n [\n 'AWS/Lambda',\n 'Errors',\n 'FunctionName',\n functionName,\n { id: 'errors', visible: false },\n ],\n ],\n title: 'Success Rate (%)',\n stat: 'Sum',\n period: 300,\n region,\n yAxis: { left: { min: 0, max: 100 } },\n },\n });\n x += w;\n\n const concurrentW = hasDlq ? w : 24 - x;\n widgets.push({\n type: 'metric',\n x,\n y: metricY,\n width: concurrentW,\n height: 6,\n properties: {\n metrics: [\n [\n 'AWS/Lambda',\n 'ConcurrentExecutions',\n 'FunctionName',\n functionName,\n ],\n ],\n title: 'Concurrent Executions',\n stat: 'Maximum',\n period: 300,\n region,\n },\n });\n x += concurrentW;\n\n if (dlqName) {\n widgets.push({\n type: 'metric',\n x,\n y: metricY,\n width: 24 - x,\n height: 6,\n properties: {\n metrics: [\n [\n 'AWS/SQS',\n 'ApproximateNumberOfMessagesVisible',\n 'QueueName',\n dlqName,\n ],\n ],\n title: 'DLQ Messages',\n stat: 'Maximum',\n period: 300,\n region,\n },\n });\n }\n\n return widgets;\n}\n","type DurationMinutes =\n | `${number} second`\n | `${number} seconds`\n | `${number} minute`\n | `${number} minutes`;\n\ninterface QFunctionArgs extends sst.aws.FunctionArgs {\n visibilityTimeout?: sst.aws.QueueArgs['visibilityTimeout'];\n maxBatchingWindow?: DurationMinutes;\n batchSize?: number;\n alarmTopic?: sst.aws.SnsTopic;\n}\n\nexport class QFunction {\n public readonly id: string;\n public readonly queue: sst.aws.Queue;\n public readonly dlq: sst.aws.Queue;\n private function: sst.aws.Function;\n\n constructor(id: string, args: QFunctionArgs) {\n this.id = id;\n\n const {\n visibilityTimeout,\n maxBatchingWindow,\n batchSize,\n alarmTopic,\n link,\n ...functionArgs\n } = args;\n\n this.dlq = new sst.aws.Queue(`${id}-queue-dlq`);\n\n this.queue = new sst.aws.Queue(`${id}-queue`, {\n visibilityTimeout,\n dlq: this.dlq.arn,\n });\n\n this.function = new sst.aws.Function(`${id}-processor`, {\n ...functionArgs,\n link: (link as any[])?.length\n ? [this.queue, ...(link as any[])]\n : [this.queue],\n });\n\n this.queue.subscribe(this.function.arn, {\n batch: {\n partialResponses: true,\n window: maxBatchingWindow,\n size: batchSize,\n },\n });\n\n if (alarmTopic) {\n const dlqMessageAlarm = new aws.cloudwatch.MetricAlarm(\n `${id}-dlq-message-alarm`,\n {\n name: `${$app.stage}-${$app.name}-${id}-dlq-alarm`,\n comparisonOperator: 'GreaterThanOrEqualToThreshold',\n evaluationPeriods: 1,\n metricName: 'ApproximateNumberOfMessagesVisible',\n namespace: 'AWS/SQS',\n period: 60,\n statistic: 'Sum',\n threshold: 1,\n dimensions: {\n QueueName: this.dlq.nodes.queue.name,\n },\n alarmDescription:\n 'Alarm when there is at least one message in the DLQ.',\n // Actions to take when the alarm changes to ALARM state.\n alarmActions: [alarmTopic.arn],\n // Actions to take when the alarm changes to OK state.\n // okActions: [alarmSnsTopic.arn],\n },\n );\n }\n }\n}\n","import path from 'node:path';\nimport {\n ENTITY_REPLICATION_INDEX,\n MUTUAL_REPLICATION_INDEX,\n} from '../constants/table';\n\ntype SingleTableArgs = {\n ttl?: string;\n runtime?: sst.aws.FunctionArgs['runtime'];\n configRoot?: string;\n};\n\nexport class SingleTable {\n public readonly id: string;\n public readonly table: sst.aws.Dynamo;\n public readonly dlq: sst.aws.Queue;\n public readonly replicatorFunctionName: string;\n\n constructor(id: string, args?: SingleTableArgs) {\n this.id = id;\n this.replicatorFunctionName = `${$app.stage}-${$app.name}-${id}-core-replicator`;\n this.dlq = new sst.aws.Queue(`${id}-core-replicator-dlq`);\n this.table = new sst.aws.Dynamo(`${id}-core-table`, {\n fields: {\n PK: 'string',\n SK: 'string',\n R1PK: 'string',\n R1SK: 'string',\n R2PK: 'string',\n R2SK: 'string',\n },\n primaryIndex: { hashKey: 'PK', rangeKey: 'SK' },\n globalIndexes: {\n [ENTITY_REPLICATION_INDEX]: {\n hashKey: 'R1PK',\n rangeKey: 'R1SK',\n projection: [\n 'PK',\n 'SK',\n 'R2PK',\n 'R2SK',\n 'updatedAt',\n 'mutualUpdatedAt',\n ],\n },\n [MUTUAL_REPLICATION_INDEX]: {\n hashKey: 'R2PK',\n rangeKey: 'R2SK',\n projection: [\n 'PK',\n 'SK',\n 'R2PK',\n 'R2SK',\n 'updatedAt',\n 'mutualUpdatedAt',\n ],\n },\n },\n stream: 'new-and-old-images',\n ttl: args?.ttl,\n });\n\n const environment = {\n CORE_TABLE: this.table.name,\n };\n\n this.table.subscribe(\n `${id}-core-replicator`,\n {\n name: this.replicatorFunctionName,\n handler: path.join(\n args?.configRoot ?? '',\n '.monorise/handle.replicationHandler',\n ),\n timeout: '60 seconds',\n memory: '512 MB',\n runtime: args?.runtime,\n environment,\n link: [this.table, this.dlq],\n },\n {\n transform: {\n eventSourceMapping: {\n startingPosition: 'LATEST',\n bisectBatchOnFunctionError: true,\n maximumRetryAttempts: 1,\n destinationConfig: {\n onFailure: {\n destinationArn: this.dlq.arn,\n },\n },\n },\n },\n },\n );\n }\n}\n","export const ENTITY_REPLICATION_INDEX = 'ENTITY_REPLICATION_INDEX';\nexport const MUTUAL_REPLICATION_INDEX = 'MUTUAL_REPLICATION_INDEX';\n","import { MonoriseCore } from './components/monorise-core';\nimport { QFunction } from './components/q-function';\n\nexport const monorise = {\n module: {\n Core: MonoriseCore,\n },\n block: {\n QFunction,\n },\n};\n\n\n\n"],"mappings":"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","names":["path","path"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "monorise",
3
- "version": "1.0.0",
3
+ "version": "1.1.0-dev.1",
4
4
  "description": "Monorise - A unified package for all Monorise functionality",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -36,6 +36,11 @@
36
36
  "./cli": {
37
37
  "import": "./dist/cli/cli.js",
38
38
  "types": "./dist/cli/cli.d.ts"
39
+ },
40
+ "./proxy": {
41
+ "import": "./dist/proxy/index.js",
42
+ "types": "./dist/proxy/index.d.ts",
43
+ "require": "./dist/proxy/index.js"
39
44
  }
40
45
  },
41
46
  "typesVersions": {
@@ -54,6 +59,9 @@
54
59
  ],
55
60
  "cli": [
56
61
  "./dist/cli/cli.d.ts"
62
+ ],
63
+ "proxy": [
64
+ "./dist/proxy/index.d.ts"
57
65
  ]
58
66
  }
59
67
  },