monorise 1.0.0 → 1.1.0-dev.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/dist/base/index.d.ts +84 -3
- package/dist/base/index.js.map +1 -1
- package/dist/cli/cli.js +6 -0
- package/dist/cli/cli.js.map +1 -1
- package/dist/core/chunk-QV4Q5377.js +76 -0
- package/dist/core/chunk-QV4Q5377.js.map +1 -0
- package/dist/core/index.d.ts +182 -35
- package/dist/core/index.js +1486 -94
- package/dist/core/index.js.map +1 -1
- package/dist/core/service.config-ZJEZ6EKA.js +13 -0
- package/dist/core/service.config-ZJEZ6EKA.js.map +1 -0
- package/dist/proxy/index.d.ts +35 -0
- package/dist/proxy/index.js +75 -0
- package/dist/proxy/index.js.map +1 -0
- package/dist/react/actions/websocket.action.d.ts +71 -0
- package/dist/react/actions/websocket.action.d.ts.map +1 -0
- package/dist/react/chunk-4D22OCZG.js +65 -0
- package/dist/react/chunk-4D22OCZG.js.map +1 -0
- package/dist/react/chunk-4N3P4ONH.js +588 -0
- package/dist/react/chunk-4N3P4ONH.js.map +1 -0
- package/dist/react/chunk-4Y4KWGJD.js +182 -0
- package/dist/react/chunk-4Y4KWGJD.js.map +1 -0
- package/dist/react/chunk-757E5UYA.js +893 -0
- package/dist/react/chunk-757E5UYA.js.map +1 -0
- package/dist/react/chunk-A5TI2FW3.js +13 -0
- package/dist/react/chunk-A5TI2FW3.js.map +1 -0
- package/dist/react/chunk-B3XDGUFO.js +489 -0
- package/dist/react/chunk-B3XDGUFO.js.map +1 -0
- package/dist/react/chunk-BPBCUO2Z.js +248 -0
- package/dist/react/chunk-BPBCUO2Z.js.map +1 -0
- package/dist/react/chunk-CQBOIXWK.js +142 -0
- package/dist/react/chunk-CQBOIXWK.js.map +1 -0
- package/dist/react/chunk-DRH2BB7I.js +383 -0
- package/dist/react/chunk-DRH2BB7I.js.map +1 -0
- package/dist/react/chunk-EQ3PKQ2S.js +402 -0
- package/dist/react/chunk-EQ3PKQ2S.js.map +1 -0
- package/dist/react/chunk-H64MMAL7.js +245 -0
- package/dist/react/chunk-H64MMAL7.js.map +1 -0
- package/dist/react/chunk-KJX5LOMN.js +43 -0
- package/dist/react/chunk-KJX5LOMN.js.map +1 -0
- package/dist/react/chunk-MO35V2Y7.js +172 -0
- package/dist/react/chunk-MO35V2Y7.js.map +1 -0
- package/dist/react/chunk-UC3E72G7.js +73 -0
- package/dist/react/chunk-UC3E72G7.js.map +1 -0
- package/dist/react/chunk-UHMKB3OR.js +5568 -0
- package/dist/react/chunk-UHMKB3OR.js.map +1 -0
- package/dist/react/chunk-UQPQBWEQ.js +54 -0
- package/dist/react/chunk-UQPQBWEQ.js.map +1 -0
- package/dist/react/chunk-XCDCVRJR.js +43 -0
- package/dist/react/chunk-XCDCVRJR.js.map +1 -0
- package/dist/react/chunk-XOYAZDIH.js +47 -0
- package/dist/react/chunk-XOYAZDIH.js.map +1 -0
- package/dist/react/chunk-YNFQEPO5.js +29 -0
- package/dist/react/chunk-YNFQEPO5.js.map +1 -0
- package/dist/react/dist-es-35AO47NO.js +90 -0
- package/dist/react/dist-es-35AO47NO.js.map +1 -0
- package/dist/react/dist-es-5GDBXNKQ.js +333 -0
- package/dist/react/dist-es-5GDBXNKQ.js.map +1 -0
- package/dist/react/dist-es-B3JDGWY6.js +71 -0
- package/dist/react/dist-es-B3JDGWY6.js.map +1 -0
- package/dist/react/dist-es-IWIE5JLA.js +169 -0
- package/dist/react/dist-es-IWIE5JLA.js.map +1 -0
- package/dist/react/dist-es-NRIS3TYJ.js +494 -0
- package/dist/react/dist-es-NRIS3TYJ.js.map +1 -0
- package/dist/react/dist-es-VCXAEYYN.js +22 -0
- package/dist/react/dist-es-VCXAEYYN.js.map +1 -0
- package/dist/react/dist-es-VU33JFTZ.js +379 -0
- package/dist/react/dist-es-VU33JFTZ.js.map +1 -0
- package/dist/react/event-streams-OSOTOTTP.js +277 -0
- package/dist/react/event-streams-OSOTOTTP.js.map +1 -0
- package/dist/react/index.d.ts +53 -4
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +10948 -190
- package/dist/react/index.js.map +1 -1
- package/dist/react/loadSso-ME7MKAM3.js +556 -0
- package/dist/react/loadSso-ME7MKAM3.js.map +1 -0
- package/dist/react/service.config-ZJEZ6EKA-FC2TR3GH.js +14 -0
- package/dist/react/service.config-ZJEZ6EKA-FC2TR3GH.js.map +1 -0
- package/dist/react/services/core.service.d.ts +11 -1
- package/dist/react/services/core.service.d.ts.map +1 -1
- package/dist/react/signin-LOXYIE5I.js +653 -0
- package/dist/react/signin-LOXYIE5I.js.map +1 -0
- package/dist/react/sso-oidc-X63KRRLO.js +786 -0
- package/dist/react/sso-oidc-X63KRRLO.js.map +1 -0
- package/dist/react/sts-OXBEY7HY.js +3948 -0
- package/dist/react/sts-OXBEY7HY.js.map +1 -0
- package/dist/react/websocket/WebSocketManager.d.ts +68 -0
- package/dist/react/websocket/WebSocketManager.d.ts.map +1 -0
- package/dist/react/websocket/index.d.ts +3 -0
- package/dist/react/websocket/index.d.ts.map +1 -0
- package/dist/react/websocket/optimistic.d.ts +51 -0
- package/dist/react/websocket/optimistic.d.ts.map +1 -0
- package/dist/react/websocket-QHA7SQXG.js +10 -0
- package/dist/react/websocket-QHA7SQXG.js.map +1 -0
- package/dist/sst/components/monorise-core.d.ts +10 -0
- package/dist/sst/components/monorise-core.d.ts.map +1 -1
- package/dist/sst/index.js +75 -12
- package/dist/sst/index.js.map +1 -1
- 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 @@
|
|
|
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 @@
|
|
|
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;
|
|
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
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
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([
|
package/dist/sst/index.js.map
CHANGED
|
@@ -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.0",
|
|
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
|
},
|