@sideline/domain 0.11.0 → 0.12.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/cjs/api/ActivityLogApi.js +126 -0
- package/dist/cjs/api/ActivityLogApi.js.map +1 -0
- package/dist/cjs/api/ActivityStatsApi.js +37 -0
- package/dist/cjs/api/ActivityStatsApi.js.map +1 -0
- package/dist/cjs/index.js +15 -1
- package/dist/cjs/models/ActivityLog.js +24 -0
- package/dist/cjs/models/ActivityLog.js.map +1 -0
- package/dist/cjs/models/ActivityStats.js +120 -0
- package/dist/cjs/models/ActivityStats.js.map +1 -0
- package/dist/cjs/models/ActivityType.js +10 -0
- package/dist/cjs/models/ActivityType.js.map +1 -0
- package/dist/cjs/rpc/SyncRpcs.js +2 -1
- package/dist/cjs/rpc/SyncRpcs.js.map +1 -1
- package/dist/cjs/rpc/activity/ActivityRpcGroup.js +29 -0
- package/dist/cjs/rpc/activity/ActivityRpcGroup.js.map +1 -0
- package/dist/cjs/rpc/activity/ActivityRpcModels.js +31 -0
- package/dist/cjs/rpc/activity/ActivityRpcModels.js.map +1 -0
- package/dist/cjs/rpc/event/EventRpcGroup.js +7 -1
- package/dist/cjs/rpc/event/EventRpcGroup.js.map +1 -1
- package/dist/cjs/rpc/event/EventRpcModels.js +7 -1
- package/dist/cjs/rpc/event/EventRpcModels.js.map +1 -1
- package/dist/dts/api/ActivityLogApi.d.ts +163 -0
- package/dist/dts/api/ActivityLogApi.d.ts.map +1 -0
- package/dist/dts/api/ActivityStatsApi.d.ts +58 -0
- package/dist/dts/api/ActivityStatsApi.d.ts.map +1 -0
- package/dist/dts/api/AgeThresholdApi.d.ts +2 -2
- package/dist/dts/api/EventApi.d.ts +4 -4
- package/dist/dts/api/GroupApi.d.ts +1 -1
- package/dist/dts/index.d.ts +7 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/models/ActivityLog.d.ts +122 -0
- package/dist/dts/models/ActivityLog.d.ts.map +1 -0
- package/dist/dts/models/ActivityStats.d.ts +28 -0
- package/dist/dts/models/ActivityStats.d.ts.map +1 -0
- package/dist/dts/models/ActivityType.d.ts +6 -0
- package/dist/dts/models/ActivityType.d.ts.map +1 -0
- package/dist/dts/models/ChannelSyncEvent.d.ts +4 -4
- package/dist/dts/models/Event.d.ts +2 -2
- package/dist/dts/models/EventRsvp.d.ts +4 -4
- package/dist/dts/models/RoleSyncEvent.d.ts +4 -4
- package/dist/dts/rpc/SyncRpcs.d.ts +14 -2
- package/dist/dts/rpc/SyncRpcs.d.ts.map +1 -1
- package/dist/dts/rpc/activity/ActivityRpcGroup.d.ts +14 -0
- package/dist/dts/rpc/activity/ActivityRpcGroup.d.ts.map +1 -0
- package/dist/dts/rpc/activity/ActivityRpcModels.d.ts +67 -0
- package/dist/dts/rpc/activity/ActivityRpcModels.d.ts.map +1 -0
- package/dist/dts/rpc/event/EventRpcGroup.d.ts +5 -2
- package/dist/dts/rpc/event/EventRpcGroup.d.ts.map +1 -1
- package/dist/dts/rpc/event/EventRpcModels.d.ts +13 -0
- package/dist/dts/rpc/event/EventRpcModels.d.ts.map +1 -1
- package/dist/esm/api/ActivityLogApi.js +108 -0
- package/dist/esm/api/ActivityLogApi.js.map +1 -0
- package/dist/esm/api/ActivityStatsApi.js +27 -0
- package/dist/esm/api/ActivityStatsApi.js.map +1 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/models/ActivityLog.js +17 -0
- package/dist/esm/models/ActivityLog.js.map +1 -0
- package/dist/esm/models/ActivityStats.js +111 -0
- package/dist/esm/models/ActivityStats.js.map +1 -0
- package/dist/esm/models/ActivityType.js +4 -0
- package/dist/esm/models/ActivityType.js.map +1 -0
- package/dist/esm/rpc/SyncRpcs.js +2 -1
- package/dist/esm/rpc/SyncRpcs.js.map +1 -1
- package/dist/esm/rpc/activity/ActivityRpcGroup.js +23 -0
- package/dist/esm/rpc/activity/ActivityRpcGroup.js.map +1 -0
- package/dist/esm/rpc/activity/ActivityRpcModels.js +21 -0
- package/dist/esm/rpc/activity/ActivityRpcModels.js.map +1 -0
- package/dist/esm/rpc/event/EventRpcGroup.js +9 -3
- package/dist/esm/rpc/event/EventRpcGroup.js.map +1 -1
- package/dist/esm/rpc/event/EventRpcModels.js +5 -0
- package/dist/esm/rpc/event/EventRpcModels.js.map +1 -1
- package/package.json +1 -1
- package/src/api/ActivityLogApi.ts +135 -0
- package/src/api/ActivityStatsApi.ts +42 -0
- package/src/index.ts +12 -0
- package/src/models/ActivityLog.ts +21 -0
- package/src/models/ActivityStats.ts +131 -0
- package/src/models/ActivityType.ts +7 -0
- package/src/rpc/SyncRpcs.ts +2 -0
- package/src/rpc/activity/ActivityRpcGroup.ts +31 -0
- package/src/rpc/activity/ActivityRpcModels.ts +32 -0
- package/src/rpc/event/EventRpcGroup.ts +7 -1
- package/src/rpc/event/EventRpcModels.ts +6 -0
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { RpcGroup } from '@effect/rpc';
|
|
2
|
-
declare const SyncRpcs_base: RpcGroup.RpcGroup<import("@effect/rpc/Rpc").Rpc<"
|
|
2
|
+
declare const SyncRpcs_base: RpcGroup.RpcGroup<import("@effect/rpc/Rpc").Rpc<"Activity/LogActivity", import("effect/Schema").Struct<{
|
|
3
|
+
guild_id: import("effect/Schema").brand<typeof import("effect/Schema").String, "Snowflake">;
|
|
4
|
+
discord_user_id: import("effect/Schema").brand<typeof import("effect/Schema").String, "Snowflake">;
|
|
5
|
+
activity_type: typeof import("effect/Schema").String;
|
|
6
|
+
duration_minutes: import("effect/Schema").OptionFromNullOr<import("effect/Schema").filter<typeof import("effect/Schema").Int>>;
|
|
7
|
+
note: import("effect/Schema").OptionFromNullOr<typeof import("effect/Schema").String>;
|
|
8
|
+
}>, typeof import("./activity/ActivityRpcModels.js").LogActivityResult, import("effect/Schema").Union<[typeof import("./activity/ActivityRpcModels.js").ActivityMemberNotFound, typeof import("./activity/ActivityRpcModels.js").ActivityGuildNotFound]>, never> | import("@effect/rpc/Rpc").Rpc<"Activity/GetStats", import("effect/Schema").Struct<{
|
|
9
|
+
guild_id: import("effect/Schema").brand<typeof import("effect/Schema").String, "Snowflake">;
|
|
10
|
+
discord_user_id: import("effect/Schema").brand<typeof import("effect/Schema").String, "Snowflake">;
|
|
11
|
+
}>, typeof import("./activity/ActivityRpcModels.js").GetStatsResult, import("effect/Schema").Union<[typeof import("./activity/ActivityRpcModels.js").ActivityMemberNotFound, typeof import("./activity/ActivityRpcModels.js").ActivityGuildNotFound]>, never> | import("@effect/rpc/Rpc").Rpc<"Channel/GetUnprocessedEvents", import("effect/Schema").Struct<{
|
|
3
12
|
limit: typeof import("effect/Schema").Number;
|
|
4
13
|
}>, import("effect/Schema").Array$<import("effect/Schema").Union<[typeof import("./channel/ChannelRpcEvents.js").ChannelCreatedEvent, typeof import("./channel/ChannelRpcEvents.js").ChannelDeletedEvent, typeof import("./channel/ChannelRpcEvents.js").ChannelMemberAddedEvent, typeof import("./channel/ChannelRpcEvents.js").ChannelMemberRemovedEvent]>>, typeof import("effect/Schema").Never, never> | import("@effect/rpc/Rpc").Rpc<"Channel/MarkEventProcessed", import("effect/Schema").Struct<{
|
|
5
14
|
id: import("effect/Schema").brand<typeof import("effect/Schema").String, "ChannelSyncEventId">;
|
|
@@ -52,7 +61,9 @@ declare const SyncRpcs_base: RpcGroup.RpcGroup<import("@effect/rpc/Rpc").Rpc<"Ch
|
|
|
52
61
|
guild_id: import("effect/Schema").brand<typeof import("effect/Schema").String, "Snowflake">;
|
|
53
62
|
offset: typeof import("effect/Schema").Number;
|
|
54
63
|
limit: typeof import("effect/Schema").Number;
|
|
55
|
-
}>, typeof import("./event/EventRpcModels.js").GuildEventListResult, typeof import("./event/EventRpcModels.js").GuildNotFound, never> | import("@effect/rpc/Rpc").Rpc<"Event/
|
|
64
|
+
}>, typeof import("./event/EventRpcModels.js").GuildEventListResult, typeof import("./event/EventRpcModels.js").GuildNotFound, never> | import("@effect/rpc/Rpc").Rpc<"Event/GetTrainingTypesByGuild", import("effect/Schema").Struct<{
|
|
65
|
+
guild_id: import("effect/Schema").brand<typeof import("effect/Schema").String, "Snowflake">;
|
|
66
|
+
}>, import("effect/Schema").Array$<typeof import("./event/EventRpcModels.js").TrainingTypeChoice>, typeof import("effect/Schema").Never, never> | import("@effect/rpc/Rpc").Rpc<"Event/CreateEvent", import("effect/Schema").Struct<{
|
|
56
67
|
guild_id: import("effect/Schema").brand<typeof import("effect/Schema").String, "Snowflake">;
|
|
57
68
|
discord_user_id: import("effect/Schema").brand<typeof import("effect/Schema").String, "Snowflake">;
|
|
58
69
|
event_type: import("effect/Schema").Literal<["training", "match", "tournament", "meeting", "social", "other"]>;
|
|
@@ -61,6 +72,7 @@ declare const SyncRpcs_base: RpcGroup.RpcGroup<import("@effect/rpc/Rpc").Rpc<"Ch
|
|
|
61
72
|
end_at: import("effect/Schema").OptionFromNullOr<typeof import("effect/Schema").String>;
|
|
62
73
|
location: import("effect/Schema").OptionFromNullOr<typeof import("effect/Schema").String>;
|
|
63
74
|
description: import("effect/Schema").OptionFromNullOr<typeof import("effect/Schema").String>;
|
|
75
|
+
training_type_id: import("effect/Schema").OptionFromNullOr<import("effect/Schema").brand<typeof import("effect/Schema").String, "TrainingTypeId">>;
|
|
64
76
|
}>, typeof import("./event/EventRpcModels.js").CreateEventResult, import("effect/Schema").Union<[typeof import("./event/EventRpcModels.js").CreateEventNotMember, typeof import("./event/EventRpcModels.js").CreateEventForbidden, typeof import("./event/EventRpcModels.js").CreateEventInvalidDate]>, never> | import("@effect/rpc/Rpc").Rpc<"Guild/RegisterGuild", import("effect/Schema").Struct<{
|
|
65
77
|
guild_id: import("effect/Schema").brand<typeof import("effect/Schema").String, "Snowflake">;
|
|
66
78
|
guild_name: typeof import("effect/Schema").String;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncRpcs.d.ts","sourceRoot":"","sources":["../../../src/rpc/SyncRpcs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC
|
|
1
|
+
{"version":3,"file":"SyncRpcs.d.ts","sourceRoot":"","sources":["../../../src/rpc/SyncRpcs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOvC,qBAAa,QAAS,SAAQ,aAM7B;CAAG"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Rpc, RpcGroup } from '@effect/rpc';
|
|
2
|
+
import { Schema } from 'effect';
|
|
3
|
+
import { ActivityGuildNotFound, ActivityMemberNotFound, GetStatsResult, LogActivityResult } from './ActivityRpcModels.js';
|
|
4
|
+
export declare const ActivityRpcGroup: RpcGroup.RpcGroup<Rpc.Rpc<"Activity/LogActivity", Schema.Struct<{
|
|
5
|
+
guild_id: Schema.brand<typeof Schema.String, "Snowflake">;
|
|
6
|
+
discord_user_id: Schema.brand<typeof Schema.String, "Snowflake">;
|
|
7
|
+
activity_type: typeof Schema.String;
|
|
8
|
+
duration_minutes: Schema.OptionFromNullOr<Schema.filter<typeof Schema.Int>>;
|
|
9
|
+
note: Schema.OptionFromNullOr<typeof Schema.String>;
|
|
10
|
+
}>, typeof LogActivityResult, Schema.Union<[typeof ActivityMemberNotFound, typeof ActivityGuildNotFound]>, never> | Rpc.Rpc<"Activity/GetStats", Schema.Struct<{
|
|
11
|
+
guild_id: Schema.brand<typeof Schema.String, "Snowflake">;
|
|
12
|
+
discord_user_id: Schema.brand<typeof Schema.String, "Snowflake">;
|
|
13
|
+
}>, typeof GetStatsResult, Schema.Union<[typeof ActivityMemberNotFound, typeof ActivityGuildNotFound]>, never>>;
|
|
14
|
+
//# sourceMappingURL=ActivityRpcGroup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActivityRpcGroup.d.ts","sourceRoot":"","sources":["../../../../src/rpc/activity/ActivityRpcGroup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAEhC,eAAO,MAAM,gBAAgB;;;;;;;;;+GAoBR,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Schema } from 'effect';
|
|
2
|
+
declare const LogActivityResult_base: Schema.Class<LogActivityResult, {
|
|
3
|
+
id: Schema.brand<typeof Schema.String, "ActivityLogId">;
|
|
4
|
+
activity_type_id: typeof Schema.String;
|
|
5
|
+
logged_at: typeof Schema.String;
|
|
6
|
+
}, Schema.Struct.Encoded<{
|
|
7
|
+
id: Schema.brand<typeof Schema.String, "ActivityLogId">;
|
|
8
|
+
activity_type_id: typeof Schema.String;
|
|
9
|
+
logged_at: typeof Schema.String;
|
|
10
|
+
}>, never, {
|
|
11
|
+
readonly id: string & import("effect/Brand").Brand<"ActivityLogId">;
|
|
12
|
+
} & {
|
|
13
|
+
readonly activity_type_id: string;
|
|
14
|
+
} & {
|
|
15
|
+
readonly logged_at: string;
|
|
16
|
+
}, {}, {}>;
|
|
17
|
+
export declare class LogActivityResult extends LogActivityResult_base {
|
|
18
|
+
}
|
|
19
|
+
declare const ActivityMemberNotFound_base: Schema.TaggedErrorClass<ActivityMemberNotFound, "ActivityMemberNotFound", {
|
|
20
|
+
readonly _tag: Schema.tag<"ActivityMemberNotFound">;
|
|
21
|
+
}>;
|
|
22
|
+
export declare class ActivityMemberNotFound extends ActivityMemberNotFound_base {
|
|
23
|
+
}
|
|
24
|
+
declare const ActivityGuildNotFound_base: Schema.TaggedErrorClass<ActivityGuildNotFound, "ActivityGuildNotFound", {
|
|
25
|
+
readonly _tag: Schema.tag<"ActivityGuildNotFound">;
|
|
26
|
+
}>;
|
|
27
|
+
export declare class ActivityGuildNotFound extends ActivityGuildNotFound_base {
|
|
28
|
+
}
|
|
29
|
+
declare const GetStatsResult_base: Schema.Class<GetStatsResult, {
|
|
30
|
+
current_streak: typeof Schema.Int;
|
|
31
|
+
longest_streak: typeof Schema.Int;
|
|
32
|
+
total_activities: typeof Schema.Int;
|
|
33
|
+
total_duration_minutes: typeof Schema.Int;
|
|
34
|
+
counts: Schema.Array$<Schema.Struct<{
|
|
35
|
+
activity_type_id: typeof Schema.String;
|
|
36
|
+
activity_type_name: typeof Schema.String;
|
|
37
|
+
count: typeof Schema.Int;
|
|
38
|
+
}>>;
|
|
39
|
+
}, Schema.Struct.Encoded<{
|
|
40
|
+
current_streak: typeof Schema.Int;
|
|
41
|
+
longest_streak: typeof Schema.Int;
|
|
42
|
+
total_activities: typeof Schema.Int;
|
|
43
|
+
total_duration_minutes: typeof Schema.Int;
|
|
44
|
+
counts: Schema.Array$<Schema.Struct<{
|
|
45
|
+
activity_type_id: typeof Schema.String;
|
|
46
|
+
activity_type_name: typeof Schema.String;
|
|
47
|
+
count: typeof Schema.Int;
|
|
48
|
+
}>>;
|
|
49
|
+
}>, never, {
|
|
50
|
+
readonly counts: readonly {
|
|
51
|
+
readonly activity_type_id: string;
|
|
52
|
+
readonly count: number;
|
|
53
|
+
readonly activity_type_name: string;
|
|
54
|
+
}[];
|
|
55
|
+
} & {
|
|
56
|
+
readonly current_streak: number;
|
|
57
|
+
} & {
|
|
58
|
+
readonly longest_streak: number;
|
|
59
|
+
} & {
|
|
60
|
+
readonly total_activities: number;
|
|
61
|
+
} & {
|
|
62
|
+
readonly total_duration_minutes: number;
|
|
63
|
+
}, {}, {}>;
|
|
64
|
+
export declare class GetStatsResult extends GetStatsResult_base {
|
|
65
|
+
}
|
|
66
|
+
export {};
|
|
67
|
+
//# sourceMappingURL=ActivityRpcModels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActivityRpcModels.d.ts","sourceRoot":"","sources":["../../../../src/rpc/activity/ActivityRpcModels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;;;;;;;;;;;;;;;;AAGhC,qBAAa,iBAAkB,SAAQ,sBAIrC;CAAG;;;;AAEL,qBAAa,sBAAuB,SAAQ,2BAG3C;CAAG;;;;AAEJ,qBAAa,qBAAsB,SAAQ,0BAG1C;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEJ,qBAAa,cAAe,SAAQ,mBAYlC;CAAG"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Rpc, RpcGroup } from '@effect/rpc';
|
|
2
2
|
import { Schema } from 'effect';
|
|
3
|
-
import { ChannelEventEntry, CreateEventForbidden, CreateEventInvalidDate, CreateEventNotMember, CreateEventResult, EventDiscordMessage, EventEmbedInfo, GuildEventListResult, GuildNotFound, RsvpAttendeesResult, RsvpCountsResult, RsvpDeadlinePassed, RsvpEventNotFound, RsvpMemberNotFound, RsvpNotGroupMember, RsvpReminderSummary } from './EventRpcModels.js';
|
|
3
|
+
import { ChannelEventEntry, CreateEventForbidden, CreateEventInvalidDate, CreateEventNotMember, CreateEventResult, EventDiscordMessage, EventEmbedInfo, GuildEventListResult, GuildNotFound, RsvpAttendeesResult, RsvpCountsResult, RsvpDeadlinePassed, RsvpEventNotFound, RsvpMemberNotFound, RsvpNotGroupMember, RsvpReminderSummary, TrainingTypeChoice } from './EventRpcModels.js';
|
|
4
4
|
export declare const EventRpcGroup: RpcGroup.RpcGroup<Rpc.Rpc<"Event/GetUnprocessedEvents", Schema.Struct<{
|
|
5
5
|
limit: typeof Schema.Number;
|
|
6
6
|
}>, Schema.Array$<Schema.Union<[typeof import("./EventRpcEvents.js").EventCreatedEvent, typeof import("./EventRpcEvents.js").EventUpdatedEvent, typeof import("./EventRpcEvents.js").EventCancelledEvent, typeof import("./EventRpcEvents.js").RsvpReminderEvent]>>, typeof Schema.Never, never> | Rpc.Rpc<"Event/MarkEventProcessed", Schema.Struct<{
|
|
@@ -36,7 +36,9 @@ export declare const EventRpcGroup: RpcGroup.RpcGroup<Rpc.Rpc<"Event/GetUnproces
|
|
|
36
36
|
guild_id: Schema.brand<typeof Schema.String, "Snowflake">;
|
|
37
37
|
offset: typeof Schema.Number;
|
|
38
38
|
limit: typeof Schema.Number;
|
|
39
|
-
}>, typeof GuildEventListResult, typeof GuildNotFound, never> | Rpc.Rpc<"Event/
|
|
39
|
+
}>, typeof GuildEventListResult, typeof GuildNotFound, never> | Rpc.Rpc<"Event/GetTrainingTypesByGuild", Schema.Struct<{
|
|
40
|
+
guild_id: Schema.brand<typeof Schema.String, "Snowflake">;
|
|
41
|
+
}>, Schema.Array$<typeof TrainingTypeChoice>, typeof Schema.Never, never> | Rpc.Rpc<"Event/CreateEvent", Schema.Struct<{
|
|
40
42
|
guild_id: Schema.brand<typeof Schema.String, "Snowflake">;
|
|
41
43
|
discord_user_id: Schema.brand<typeof Schema.String, "Snowflake">;
|
|
42
44
|
event_type: Schema.Literal<["training", "match", "tournament", "meeting", "social", "other"]>;
|
|
@@ -45,5 +47,6 @@ export declare const EventRpcGroup: RpcGroup.RpcGroup<Rpc.Rpc<"Event/GetUnproces
|
|
|
45
47
|
end_at: Schema.OptionFromNullOr<typeof Schema.String>;
|
|
46
48
|
location: Schema.OptionFromNullOr<typeof Schema.String>;
|
|
47
49
|
description: Schema.OptionFromNullOr<typeof Schema.String>;
|
|
50
|
+
training_type_id: Schema.OptionFromNullOr<Schema.brand<typeof Schema.String, "TrainingTypeId">>;
|
|
48
51
|
}>, typeof CreateEventResult, Schema.Union<[typeof CreateEventNotMember, typeof CreateEventForbidden, typeof CreateEventInvalidDate]>, never>>;
|
|
49
52
|
//# sourceMappingURL=EventRpcGroup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventRpcGroup.d.ts","sourceRoot":"","sources":["../../../../src/rpc/event/EventRpcGroup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"EventRpcGroup.d.ts","sourceRoot":"","sources":["../../../../src/rpc/event/EventRpcGroup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAE7B,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8IAsFR,CAAC"}
|
|
@@ -290,5 +290,18 @@ declare const RsvpReminderSummary_base: Schema.Class<RsvpReminderSummary, {
|
|
|
290
290
|
}, {}, {}>;
|
|
291
291
|
export declare class RsvpReminderSummary extends RsvpReminderSummary_base {
|
|
292
292
|
}
|
|
293
|
+
declare const TrainingTypeChoice_base: Schema.Class<TrainingTypeChoice, {
|
|
294
|
+
id: Schema.brand<typeof Schema.String, "TrainingTypeId">;
|
|
295
|
+
name: typeof Schema.String;
|
|
296
|
+
}, Schema.Struct.Encoded<{
|
|
297
|
+
id: Schema.brand<typeof Schema.String, "TrainingTypeId">;
|
|
298
|
+
name: typeof Schema.String;
|
|
299
|
+
}>, never, {
|
|
300
|
+
readonly name: string;
|
|
301
|
+
} & {
|
|
302
|
+
readonly id: string & import("effect/Brand").Brand<"TrainingTypeId">;
|
|
303
|
+
}, {}, {}>;
|
|
304
|
+
export declare class TrainingTypeChoice extends TrainingTypeChoice_base {
|
|
305
|
+
}
|
|
293
306
|
export {};
|
|
294
307
|
//# sourceMappingURL=EventRpcModels.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventRpcModels.d.ts","sourceRoot":"","sources":["../../../../src/rpc/event/EventRpcModels.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"EventRpcModels.d.ts","sourceRoot":"","sources":["../../../../src/rpc/event/EventRpcModels.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;;;;;;;;;;;;AAIhC,qBAAa,mBAAoB,SAAQ,wBAGvC;CAAG;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,cAAe,SAAQ,mBAOlC;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAWrC;CAAG;;;;AAEL,qBAAa,kBAAmB,SAAQ,uBAGvC;CAAG;;;;AAEJ,qBAAa,kBAAmB,SAAQ,uBAGvC;CAAG;;;;AAEJ,qBAAa,iBAAkB,SAAQ,sBAGtC;CAAG;;;;AAEJ,qBAAa,kBAAmB,SAAQ,uBAGvC;CAAG;;;;AAEJ,qBAAa,oBAAqB,SAAQ,yBAGzC;CAAG;;;;AAEJ,qBAAa,oBAAqB,SAAQ,yBAGzC;CAAG;;;;AAEJ,qBAAa,sBAAuB,SAAQ,2BAG3C;CAAG;;;;;;;;;;;;AAEJ,qBAAa,iBAAkB,SAAQ,sBAGrC;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,mBAAoB,SAAQ,wBAUvC;CAAG;;;;;;;;;;;;;;;;AAEL,qBAAa,oBAAqB,SAAQ,yBAMxC;CAAG;;;;AAEL,qBAAa,aAAc,SAAQ,kBAAwD;CAAG;;;;;;;;;;;;;;;;;;;;AAE9F,qBAAa,iBAAkB,SAAQ,sBAKrC;CAAG;;;;;;;;;;;;AAEL,qBAAa,mBAAoB,SAAQ,wBAGvC;CAAG;;;;;;;;;;;;;;;;AAEL,qBAAa,oBAAqB,SAAQ,yBAMxC;CAAG;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,mBAAoB,SAAQ,wBAKvC;CAAG;;;;;;;;;;;;AAEL,qBAAa,kBAAmB,SAAQ,uBAGtC;CAAG"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from '@effect/platform';
|
|
2
|
+
import { Schema } from 'effect';
|
|
3
|
+
import { AuthMiddleware } from '../api/Auth.js';
|
|
4
|
+
import { ActivityLogId, ActivitySource } from '../models/ActivityLog.js';
|
|
5
|
+
import { ActivityTypeId } from '../models/ActivityType.js';
|
|
6
|
+
import { TeamId } from '../models/Team.js';
|
|
7
|
+
import { TeamMemberId } from '../models/TeamMember.js';
|
|
8
|
+
export class ActivityLogEntry extends /*#__PURE__*/Schema.Class('ActivityLogEntry')({
|
|
9
|
+
id: ActivityLogId,
|
|
10
|
+
activityTypeId: ActivityTypeId,
|
|
11
|
+
activityTypeName: Schema.String,
|
|
12
|
+
loggedAt: Schema.String,
|
|
13
|
+
durationMinutes: /*#__PURE__*/Schema.OptionFromNullOr(Schema.Int),
|
|
14
|
+
note: /*#__PURE__*/Schema.OptionFromNullOr(Schema.String),
|
|
15
|
+
source: ActivitySource
|
|
16
|
+
}) {}
|
|
17
|
+
export class ActivityLogListResponse extends /*#__PURE__*/Schema.Class('ActivityLogListResponse')({
|
|
18
|
+
logs: /*#__PURE__*/Schema.Array(ActivityLogEntry)
|
|
19
|
+
}) {}
|
|
20
|
+
export class CreateActivityLogRequest extends /*#__PURE__*/Schema.Class('CreateActivityLogRequest')({
|
|
21
|
+
activityTypeId: ActivityTypeId,
|
|
22
|
+
durationMinutes: /*#__PURE__*/Schema.OptionFromNullOr(/*#__PURE__*/Schema.Int.pipe(/*#__PURE__*/Schema.between(1, 1440))),
|
|
23
|
+
note: /*#__PURE__*/Schema.OptionFromNullOr(Schema.String)
|
|
24
|
+
}) {}
|
|
25
|
+
export class UpdateActivityLogRequest extends /*#__PURE__*/Schema.Class('UpdateActivityLogRequest')({
|
|
26
|
+
activityTypeId: /*#__PURE__*/Schema.optionalWith(ActivityTypeId, {
|
|
27
|
+
as: 'Option'
|
|
28
|
+
}),
|
|
29
|
+
durationMinutes: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.OptionFromNullOr(/*#__PURE__*/Schema.Int.pipe(/*#__PURE__*/Schema.between(1, 1440))), {
|
|
30
|
+
as: 'Option'
|
|
31
|
+
}),
|
|
32
|
+
note: /*#__PURE__*/Schema.optionalWith(/*#__PURE__*/Schema.OptionFromNullOr(Schema.String), {
|
|
33
|
+
as: 'Option'
|
|
34
|
+
})
|
|
35
|
+
}) {}
|
|
36
|
+
export class ActivityTypeEntry extends /*#__PURE__*/Schema.Class('ActivityTypeEntry')({
|
|
37
|
+
id: ActivityTypeId,
|
|
38
|
+
name: Schema.String,
|
|
39
|
+
slug: /*#__PURE__*/Schema.OptionFromNullOr(Schema.String)
|
|
40
|
+
}) {}
|
|
41
|
+
export class ActivityTypeListResponse extends /*#__PURE__*/Schema.Class('ActivityTypeListResponse')({
|
|
42
|
+
activityTypes: /*#__PURE__*/Schema.Array(ActivityTypeEntry)
|
|
43
|
+
}) {}
|
|
44
|
+
export class MemberNotFound extends /*#__PURE__*/Schema.TaggedError()('ActivityLogMemberNotFound', {}, /*#__PURE__*/HttpApiSchema.annotations({
|
|
45
|
+
status: 404
|
|
46
|
+
})) {}
|
|
47
|
+
export class Forbidden extends /*#__PURE__*/Schema.TaggedError()('ActivityLogForbidden', {}, /*#__PURE__*/HttpApiSchema.annotations({
|
|
48
|
+
status: 403
|
|
49
|
+
})) {}
|
|
50
|
+
export class LogNotFound extends /*#__PURE__*/Schema.TaggedError()('ActivityLogNotFound', {}, /*#__PURE__*/HttpApiSchema.annotations({
|
|
51
|
+
status: 404
|
|
52
|
+
})) {}
|
|
53
|
+
export class MemberInactive extends /*#__PURE__*/Schema.TaggedError()('ActivityLogMemberInactive', {}, /*#__PURE__*/HttpApiSchema.annotations({
|
|
54
|
+
status: 403
|
|
55
|
+
})) {}
|
|
56
|
+
export class AutoSourceForbidden extends /*#__PURE__*/Schema.TaggedError()('ActivityLogAutoSourceForbidden', {}, /*#__PURE__*/HttpApiSchema.annotations({
|
|
57
|
+
status: 403
|
|
58
|
+
})) {}
|
|
59
|
+
export class ActivityLogApiGroup extends /*#__PURE__*/HttpApiGroup.make('activityLog').add(HttpApiEndpoint.get('listLogs', '/teams/:teamId/members/:memberId/activity-logs').addSuccess(ActivityLogListResponse).addError(MemberNotFound, {
|
|
60
|
+
status: 404
|
|
61
|
+
}).addError(Forbidden, {
|
|
62
|
+
status: 403
|
|
63
|
+
}).setPath(Schema.Struct({
|
|
64
|
+
teamId: TeamId,
|
|
65
|
+
memberId: TeamMemberId
|
|
66
|
+
})).middleware(AuthMiddleware)).add(HttpApiEndpoint.post('createLog', '/teams/:teamId/members/:memberId/activity-logs').addSuccess(ActivityLogEntry, {
|
|
67
|
+
status: 201
|
|
68
|
+
}).addError(MemberNotFound, {
|
|
69
|
+
status: 404
|
|
70
|
+
}).addError(Forbidden, {
|
|
71
|
+
status: 403
|
|
72
|
+
}).addError(MemberInactive, {
|
|
73
|
+
status: 403
|
|
74
|
+
}).setPath(Schema.Struct({
|
|
75
|
+
teamId: TeamId,
|
|
76
|
+
memberId: TeamMemberId
|
|
77
|
+
})).setPayload(CreateActivityLogRequest).middleware(AuthMiddleware)).add(HttpApiEndpoint.patch('updateLog', '/teams/:teamId/members/:memberId/activity-logs/:logId').addSuccess(ActivityLogEntry).addError(LogNotFound, {
|
|
78
|
+
status: 404
|
|
79
|
+
}).addError(Forbidden, {
|
|
80
|
+
status: 403
|
|
81
|
+
}).addError(MemberInactive, {
|
|
82
|
+
status: 403
|
|
83
|
+
}).addError(AutoSourceForbidden, {
|
|
84
|
+
status: 403
|
|
85
|
+
}).setPath(Schema.Struct({
|
|
86
|
+
teamId: TeamId,
|
|
87
|
+
memberId: TeamMemberId,
|
|
88
|
+
logId: ActivityLogId
|
|
89
|
+
})).setPayload(UpdateActivityLogRequest).middleware(AuthMiddleware)).add(HttpApiEndpoint.post('deleteLog', '/teams/:teamId/members/:memberId/activity-logs/:logId/delete').addSuccess(Schema.Void, {
|
|
90
|
+
status: 204
|
|
91
|
+
}).addError(LogNotFound, {
|
|
92
|
+
status: 404
|
|
93
|
+
}).addError(Forbidden, {
|
|
94
|
+
status: 403
|
|
95
|
+
}).addError(MemberInactive, {
|
|
96
|
+
status: 403
|
|
97
|
+
}).addError(AutoSourceForbidden, {
|
|
98
|
+
status: 403
|
|
99
|
+
}).setPath(Schema.Struct({
|
|
100
|
+
teamId: TeamId,
|
|
101
|
+
memberId: TeamMemberId,
|
|
102
|
+
logId: ActivityLogId
|
|
103
|
+
})).middleware(AuthMiddleware)).add(/*#__PURE__*/HttpApiEndpoint.get('listActivityTypes', '/teams/:teamId/activity-types').addSuccess(ActivityTypeListResponse).addError(Forbidden, {
|
|
104
|
+
status: 403
|
|
105
|
+
}).setPath(Schema.Struct({
|
|
106
|
+
teamId: TeamId
|
|
107
|
+
})).middleware(AuthMiddleware)) {}
|
|
108
|
+
//# sourceMappingURL=ActivityLogApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActivityLogApi.js","names":["HttpApiEndpoint","HttpApiGroup","HttpApiSchema","Schema","AuthMiddleware","ActivityLogId","ActivitySource","ActivityTypeId","TeamId","TeamMemberId","ActivityLogEntry","Class","id","activityTypeId","activityTypeName","String","loggedAt","durationMinutes","OptionFromNullOr","Int","note","source","ActivityLogListResponse","logs","Array","CreateActivityLogRequest","pipe","between","UpdateActivityLogRequest","optionalWith","as","ActivityTypeEntry","name","slug","ActivityTypeListResponse","activityTypes","MemberNotFound","TaggedError","annotations","status","Forbidden","LogNotFound","MemberInactive","AutoSourceForbidden","ActivityLogApiGroup","make","add","get","addSuccess","addError","setPath","Struct","teamId","memberId","middleware","post","setPayload","patch","logId","Void"],"sources":["../../../src/api/ActivityLogApi.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from '@effect/platform';
|
|
2
|
+
import { Schema } from 'effect';
|
|
3
|
+
import { AuthMiddleware } from '../api/Auth.js';
|
|
4
|
+
import { TeamId } from '../models/Team.js';
|
|
5
|
+
import { TeamMemberId } from '../models/TeamMember.js';
|
|
6
|
+
export class ActivityStatsResponse extends /*#__PURE__*/Schema.Class('ActivityStatsResponse')({
|
|
7
|
+
currentStreak: Schema.Int,
|
|
8
|
+
longestStreak: Schema.Int,
|
|
9
|
+
totalActivities: Schema.Int,
|
|
10
|
+
totalDurationMinutes: Schema.Int,
|
|
11
|
+
counts: /*#__PURE__*/Schema.Array(/*#__PURE__*/Schema.Struct({
|
|
12
|
+
activityTypeId: Schema.String,
|
|
13
|
+
activityTypeName: Schema.String,
|
|
14
|
+
count: Schema.Int
|
|
15
|
+
}))
|
|
16
|
+
}) {}
|
|
17
|
+
export class MemberNotFound extends /*#__PURE__*/Schema.TaggedError()('ActivityStatsMemberNotFound', {}, /*#__PURE__*/HttpApiSchema.annotations({
|
|
18
|
+
status: 404
|
|
19
|
+
})) {}
|
|
20
|
+
export class Forbidden extends /*#__PURE__*/Schema.TaggedError()('ActivityStatsForbidden', {}, /*#__PURE__*/HttpApiSchema.annotations({
|
|
21
|
+
status: 403
|
|
22
|
+
})) {}
|
|
23
|
+
export class ActivityStatsApiGroup extends /*#__PURE__*/HttpApiGroup.make('activityStats').add(/*#__PURE__*/HttpApiEndpoint.get('getMemberStats', '/teams/:teamId/members/:memberId/activity-stats').addSuccess(ActivityStatsResponse).addError(MemberNotFound).addError(Forbidden).setPath(Schema.Struct({
|
|
24
|
+
teamId: TeamId,
|
|
25
|
+
memberId: TeamMemberId
|
|
26
|
+
})).middleware(AuthMiddleware)) {}
|
|
27
|
+
//# sourceMappingURL=ActivityStatsApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActivityStatsApi.js","names":["HttpApiEndpoint","HttpApiGroup","HttpApiSchema","Schema","AuthMiddleware","TeamId","TeamMemberId","ActivityStatsResponse","Class","currentStreak","Int","longestStreak","totalActivities","totalDurationMinutes","counts","Array","Struct","activityTypeId","String","activityTypeName","count","MemberNotFound","TaggedError","annotations","status","Forbidden","ActivityStatsApiGroup","make","add","get","addSuccess","addError","setPath","teamId","memberId","middleware"],"sources":["../../../src/api/ActivityStatsApi.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,eAAe,EAAEC,YAAY,EAAEC,aAAa,QAAQ,kBAAkB;AAC/E,SAASC,MAAM,QAAQ,QAAQ;AAC/B,SAASC,cAAc,QAAQ,gBAAgB;AAC/C,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,YAAY,QAAQ,yBAAyB;AAEtD,OAAM,MAAOC,qBAAsB,sBAAQJ,MAAM,CAACK,KAAK,CACrD,uBAAuB,CACxB,CAAC;EACAC,aAAa,EAAEN,MAAM,CAACO,GAAG;EACzBC,aAAa,EAAER,MAAM,CAACO,GAAG;EACzBE,eAAe,EAAET,MAAM,CAACO,GAAG;EAC3BG,oBAAoB,EAAEV,MAAM,CAACO,GAAG;EAChCI,MAAM,eAAEX,MAAM,CAACY,KAAK,cAClBZ,MAAM,CAACa,MAAM,CAAC;IACZC,cAAc,EAAEd,MAAM,CAACe,MAAM;IAC7BC,gBAAgB,EAAEhB,MAAM,CAACe,MAAM;IAC/BE,KAAK,EAAEjB,MAAM,CAACO;GACf,CAAC;CAEL,CAAC;AAEF,OAAM,MAAOW,cAAe,sBAAQlB,MAAM,CAACmB,WAAW,EAAkB,CACtE,6BAA6B,EAC7B,EAAE,eACFpB,aAAa,CAACqB,WAAW,CAAC;EAAEC,MAAM,EAAE;AAAG,CAAE,CAAC,CAC3C;AAED,OAAM,MAAOC,SAAU,sBAAQtB,MAAM,CAACmB,WAAW,EAAa,CAC5D,wBAAwB,EACxB,EAAE,eACFpB,aAAa,CAACqB,WAAW,CAAC;EAAEC,MAAM,EAAE;AAAG,CAAE,CAAC,CAC3C;AAED,OAAM,MAAOE,qBAAsB,sBAAQzB,YAAY,CAAC0B,IAAI,CAAC,eAAe,CAAC,CAACC,GAAG,cAC/E5B,eAAe,CAAC6B,GAAG,CAAC,gBAAgB,EAAE,iDAAiD,CAAC,CACrFC,UAAU,CAACvB,qBAAqB,CAAC,CACjCwB,QAAQ,CAACV,cAAc,CAAC,CACxBU,QAAQ,CAACN,SAAS,CAAC,CACnBO,OAAO,CAAC7B,MAAM,CAACa,MAAM,CAAC;EAAEiB,MAAM,EAAE5B,MAAM;EAAE6B,QAAQ,EAAE5B;AAAY,CAAE,CAAC,CAAC,CAClE6B,UAAU,CAAC/B,cAAc,CAAC,CAC9B","ignoreList":[]}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export * as ApiGroup from './ApiGroup.js';
|
|
2
|
+
export * as ActivityLogApi from './api/ActivityLogApi.js';
|
|
3
|
+
export * as ActivityStatsApi from './api/ActivityStatsApi.js';
|
|
2
4
|
export * as AgeThresholdApi from './api/AgeThresholdApi.js';
|
|
3
5
|
export * as Auth from './api/Auth.js';
|
|
4
6
|
export * as EventApi from './api/EventApi.js';
|
|
@@ -12,6 +14,9 @@ export * as RoleApi from './api/RoleApi.js';
|
|
|
12
14
|
export * as Roster from './api/Roster.js';
|
|
13
15
|
export * as TeamSettingsApi from './api/TeamSettingsApi.js';
|
|
14
16
|
export * as TrainingTypeApi from './api/TrainingTypeApi.js';
|
|
17
|
+
export * as ActivityLog from './models/ActivityLog.js';
|
|
18
|
+
export * as ActivityStats from './models/ActivityStats.js';
|
|
19
|
+
export * as ActivityType from './models/ActivityType.js';
|
|
15
20
|
export * as AgeThresholdRule from './models/AgeThresholdRule.js';
|
|
16
21
|
export * as ChannelSyncEvent from './models/ChannelSyncEvent.js';
|
|
17
22
|
export * as Discord from './models/Discord.js';
|
|
@@ -37,6 +42,8 @@ export * as TeamMember from './models/TeamMember.js';
|
|
|
37
42
|
export * as TeamSettings from './models/TeamSettings.js';
|
|
38
43
|
export * as TrainingType from './models/TrainingType.js';
|
|
39
44
|
export * as User from './models/User.js';
|
|
45
|
+
export * as ActivityRpcGroup from './rpc/activity/ActivityRpcGroup.js';
|
|
46
|
+
export * as ActivityRpcModels from './rpc/activity/ActivityRpcModels.js';
|
|
40
47
|
export * as ChannelRpcEvents from './rpc/channel/ChannelRpcEvents.js';
|
|
41
48
|
export * as ChannelRpcGroup from './rpc/channel/ChannelRpcGroup.js';
|
|
42
49
|
export * as ChannelRpcModels from './rpc/channel/ChannelRpcModels.js';
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["ApiGroup","AgeThresholdApi","Auth","EventApi","EventRsvpApi","EventSeriesApi","GroupApi","ICalApi","Invite","NotificationApi","RoleApi","Roster","TeamSettingsApi","TrainingTypeApi","AgeThresholdRule","ChannelSyncEvent","Discord","DiscordChannelMapping","DiscordRoleMapping","Event","EventRsvp","EventSeries","GroupModel","ICalToken","MemberRole","Notification","OAuthConnection","Role","RoleGroup","RoleSyncEvent","RosterMemberModel","RosterModel","Session","Team","TeamInvite","TeamMember","TeamSettings","TrainingType","User","ChannelRpcEvents","ChannelRpcGroup","ChannelRpcModels","EventRpcEvents","EventRpcGroup","EventRpcModels","GuildRpcGroup","RoleRpcEvents","RoleRpcGroup","RoleRpcModels","SyncRpcs"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,QAAQ,MAAM,eAAe;AAEzC,OAAO,KAAKC,eAAe,MAAM,0BAA0B;AAE3D,OAAO,KAAKC,IAAI,MAAM,eAAe;AAErC,OAAO,KAAKC,QAAQ,MAAM,mBAAmB;AAE7C,OAAO,KAAKC,YAAY,MAAM,uBAAuB;AAErD,OAAO,KAAKC,cAAc,MAAM,yBAAyB;AAEzD,OAAO,KAAKC,QAAQ,MAAM,mBAAmB;AAE7C,OAAO,KAAKC,OAAO,MAAM,kBAAkB;AAE3C,OAAO,KAAKC,MAAM,MAAM,iBAAiB;AAEzC,OAAO,KAAKC,eAAe,MAAM,0BAA0B;AAE3D,OAAO,KAAKC,OAAO,MAAM,kBAAkB;AAE3C,OAAO,KAAKC,MAAM,MAAM,iBAAiB;AAEzC,OAAO,KAAKC,eAAe,MAAM,0BAA0B;AAE3D,OAAO,KAAKC,eAAe,MAAM,0BAA0B;AAE3D,OAAO,KAAKC,gBAAgB,MAAM,8BAA8B;AAEhE,OAAO,KAAKC,gBAAgB,MAAM,8BAA8B;AAEhE,OAAO,KAAKC,OAAO,MAAM,qBAAqB;AAE9C,OAAO,KAAKC,qBAAqB,MAAM,mCAAmC;AAE1E,OAAO,KAAKC,kBAAkB,MAAM,gCAAgC;AAEpE,OAAO,KAAKC,KAAK,MAAM,mBAAmB;AAE1C,OAAO,KAAKC,SAAS,MAAM,uBAAuB;AAElD,OAAO,KAAKC,WAAW,MAAM,yBAAyB;AAEtD,OAAO,KAAKC,UAAU,MAAM,wBAAwB;AAEpD,OAAO,KAAKC,SAAS,MAAM,uBAAuB;AAElD,OAAO,KAAKC,UAAU,MAAM,wBAAwB;AAEpD,OAAO,KAAKC,YAAY,MAAM,0BAA0B;AAExD,OAAO,KAAKC,eAAe,MAAM,6BAA6B;AAE9D,OAAO,KAAKC,IAAI,MAAM,kBAAkB;AAExC,OAAO,KAAKC,SAAS,MAAM,uBAAuB;AAElD,OAAO,KAAKC,aAAa,MAAM,2BAA2B;AAE1D,OAAO,KAAKC,iBAAiB,MAAM,+BAA+B;AAElE,OAAO,KAAKC,WAAW,MAAM,yBAAyB;AAEtD,OAAO,KAAKC,OAAO,MAAM,qBAAqB;AAE9C,OAAO,KAAKC,IAAI,MAAM,kBAAkB;AAExC,OAAO,KAAKC,UAAU,MAAM,wBAAwB;AAEpD,OAAO,KAAKC,UAAU,MAAM,wBAAwB;AAEpD,OAAO,KAAKC,YAAY,MAAM,0BAA0B;AAExD,OAAO,KAAKC,YAAY,MAAM,0BAA0B;AAExD,OAAO,KAAKC,IAAI,MAAM,kBAAkB;AACxC,OAAO,KAAKC,gBAAgB,MAAM,mCAAmC;AACrE,OAAO,KAAKC,eAAe,MAAM,kCAAkC;AACnE,OAAO,KAAKC,gBAAgB,MAAM,mCAAmC;AACrE,OAAO,KAAKC,cAAc,MAAM,+BAA+B;AAC/D,OAAO,KAAKC,aAAa,MAAM,8BAA8B;AAC7D,OAAO,KAAKC,cAAc,MAAM,+BAA+B;AAC/D,OAAO,KAAKC,aAAa,MAAM,8BAA8B;AAC7D,OAAO,KAAKC,aAAa,MAAM,6BAA6B;AAC5D,OAAO,KAAKC,YAAY,MAAM,4BAA4B;AAC1D,OAAO,KAAKC,aAAa,MAAM,6BAA6B;AAC5D,OAAO,KAAKC,QAAQ,MAAM,mBAAmB","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["ApiGroup","ActivityLogApi","ActivityStatsApi","AgeThresholdApi","Auth","EventApi","EventRsvpApi","EventSeriesApi","GroupApi","ICalApi","Invite","NotificationApi","RoleApi","Roster","TeamSettingsApi","TrainingTypeApi","ActivityLog","ActivityStats","ActivityType","AgeThresholdRule","ChannelSyncEvent","Discord","DiscordChannelMapping","DiscordRoleMapping","Event","EventRsvp","EventSeries","GroupModel","ICalToken","MemberRole","Notification","OAuthConnection","Role","RoleGroup","RoleSyncEvent","RosterMemberModel","RosterModel","Session","Team","TeamInvite","TeamMember","TeamSettings","TrainingType","User","ActivityRpcGroup","ActivityRpcModels","ChannelRpcEvents","ChannelRpcGroup","ChannelRpcModels","EventRpcEvents","EventRpcGroup","EventRpcModels","GuildRpcGroup","RoleRpcEvents","RoleRpcGroup","RoleRpcModels","SyncRpcs"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,QAAQ,MAAM,eAAe;AAEzC,OAAO,KAAKC,cAAc,MAAM,yBAAyB;AAEzD,OAAO,KAAKC,gBAAgB,MAAM,2BAA2B;AAE7D,OAAO,KAAKC,eAAe,MAAM,0BAA0B;AAE3D,OAAO,KAAKC,IAAI,MAAM,eAAe;AAErC,OAAO,KAAKC,QAAQ,MAAM,mBAAmB;AAE7C,OAAO,KAAKC,YAAY,MAAM,uBAAuB;AAErD,OAAO,KAAKC,cAAc,MAAM,yBAAyB;AAEzD,OAAO,KAAKC,QAAQ,MAAM,mBAAmB;AAE7C,OAAO,KAAKC,OAAO,MAAM,kBAAkB;AAE3C,OAAO,KAAKC,MAAM,MAAM,iBAAiB;AAEzC,OAAO,KAAKC,eAAe,MAAM,0BAA0B;AAE3D,OAAO,KAAKC,OAAO,MAAM,kBAAkB;AAE3C,OAAO,KAAKC,MAAM,MAAM,iBAAiB;AAEzC,OAAO,KAAKC,eAAe,MAAM,0BAA0B;AAE3D,OAAO,KAAKC,eAAe,MAAM,0BAA0B;AAE3D,OAAO,KAAKC,WAAW,MAAM,yBAAyB;AAEtD,OAAO,KAAKC,aAAa,MAAM,2BAA2B;AAE1D,OAAO,KAAKC,YAAY,MAAM,0BAA0B;AAExD,OAAO,KAAKC,gBAAgB,MAAM,8BAA8B;AAEhE,OAAO,KAAKC,gBAAgB,MAAM,8BAA8B;AAEhE,OAAO,KAAKC,OAAO,MAAM,qBAAqB;AAE9C,OAAO,KAAKC,qBAAqB,MAAM,mCAAmC;AAE1E,OAAO,KAAKC,kBAAkB,MAAM,gCAAgC;AAEpE,OAAO,KAAKC,KAAK,MAAM,mBAAmB;AAE1C,OAAO,KAAKC,SAAS,MAAM,uBAAuB;AAElD,OAAO,KAAKC,WAAW,MAAM,yBAAyB;AAEtD,OAAO,KAAKC,UAAU,MAAM,wBAAwB;AAEpD,OAAO,KAAKC,SAAS,MAAM,uBAAuB;AAElD,OAAO,KAAKC,UAAU,MAAM,wBAAwB;AAEpD,OAAO,KAAKC,YAAY,MAAM,0BAA0B;AAExD,OAAO,KAAKC,eAAe,MAAM,6BAA6B;AAE9D,OAAO,KAAKC,IAAI,MAAM,kBAAkB;AAExC,OAAO,KAAKC,SAAS,MAAM,uBAAuB;AAElD,OAAO,KAAKC,aAAa,MAAM,2BAA2B;AAE1D,OAAO,KAAKC,iBAAiB,MAAM,+BAA+B;AAElE,OAAO,KAAKC,WAAW,MAAM,yBAAyB;AAEtD,OAAO,KAAKC,OAAO,MAAM,qBAAqB;AAE9C,OAAO,KAAKC,IAAI,MAAM,kBAAkB;AAExC,OAAO,KAAKC,UAAU,MAAM,wBAAwB;AAEpD,OAAO,KAAKC,UAAU,MAAM,wBAAwB;AAEpD,OAAO,KAAKC,YAAY,MAAM,0BAA0B;AAExD,OAAO,KAAKC,YAAY,MAAM,0BAA0B;AAExD,OAAO,KAAKC,IAAI,MAAM,kBAAkB;AACxC,OAAO,KAAKC,gBAAgB,MAAM,oCAAoC;AACtE,OAAO,KAAKC,iBAAiB,MAAM,qCAAqC;AACxE,OAAO,KAAKC,gBAAgB,MAAM,mCAAmC;AACrE,OAAO,KAAKC,eAAe,MAAM,kCAAkC;AACnE,OAAO,KAAKC,gBAAgB,MAAM,mCAAmC;AACrE,OAAO,KAAKC,cAAc,MAAM,+BAA+B;AAC/D,OAAO,KAAKC,aAAa,MAAM,8BAA8B;AAC7D,OAAO,KAAKC,cAAc,MAAM,+BAA+B;AAC/D,OAAO,KAAKC,aAAa,MAAM,8BAA8B;AAC7D,OAAO,KAAKC,aAAa,MAAM,6BAA6B;AAC5D,OAAO,KAAKC,YAAY,MAAM,4BAA4B;AAC1D,OAAO,KAAKC,aAAa,MAAM,6BAA6B;AAC5D,OAAO,KAAKC,QAAQ,MAAM,mBAAmB","ignoreList":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Model } from '@effect/sql';
|
|
2
|
+
import { Schema } from 'effect';
|
|
3
|
+
import { ActivityTypeId } from '../models/ActivityType.js';
|
|
4
|
+
import { TeamMemberId } from '../models/TeamMember.js';
|
|
5
|
+
export const ActivityLogId = /*#__PURE__*/Schema.String.pipe(/*#__PURE__*/Schema.brand('ActivityLogId'));
|
|
6
|
+
export const ActivitySource = /*#__PURE__*/Schema.Literal('manual', 'auto');
|
|
7
|
+
export class ActivityLog extends /*#__PURE__*/Model.Class('ActivityLog')({
|
|
8
|
+
id: /*#__PURE__*/Model.Generated(ActivityLogId),
|
|
9
|
+
team_member_id: TeamMemberId,
|
|
10
|
+
activity_type_id: ActivityTypeId,
|
|
11
|
+
logged_at: Model.DateTimeInsertFromDate,
|
|
12
|
+
duration_minutes: /*#__PURE__*/Schema.OptionFromNullOr(/*#__PURE__*/Schema.Int.pipe(/*#__PURE__*/Schema.between(1, 1440))),
|
|
13
|
+
note: /*#__PURE__*/Schema.OptionFromNullOr(Schema.String),
|
|
14
|
+
source: ActivitySource,
|
|
15
|
+
created_at: Model.DateTimeInsertFromDate
|
|
16
|
+
}) {}
|
|
17
|
+
//# sourceMappingURL=ActivityLog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActivityLog.js","names":["Model","Schema","ActivityTypeId","TeamMemberId","ActivityLogId","String","pipe","brand","ActivitySource","Literal","ActivityLog","Class","id","Generated","team_member_id","activity_type_id","logged_at","DateTimeInsertFromDate","duration_minutes","OptionFromNullOr","Int","between","note","source","created_at"],"sources":["../../../src/models/ActivityLog.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,KAAK,QAAQ,aAAa;AACnC,SAASC,MAAM,QAAQ,QAAQ;AAC/B,SAASC,cAAc,QAAQ,2BAA2B;AAC1D,SAASC,YAAY,QAAQ,yBAAyB;AAEtD,OAAO,MAAMC,aAAa,gBAAGH,MAAM,CAACI,MAAM,CAACC,IAAI,cAACL,MAAM,CAACM,KAAK,CAAC,eAAe,CAAC,CAAC;AAG9E,OAAO,MAAMC,cAAc,gBAAGP,MAAM,CAACQ,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;AAG9D,OAAM,MAAOC,WAAY,sBAAQV,KAAK,CAACW,KAAK,CAAc,aAAa,CAAC,CAAC;EACvEC,EAAE,eAAEZ,KAAK,CAACa,SAAS,CAACT,aAAa,CAAC;EAClCU,cAAc,EAAEX,YAAY;EAC5BY,gBAAgB,EAAEb,cAAc;EAChCc,SAAS,EAAEhB,KAAK,CAACiB,sBAAsB;EACvCC,gBAAgB,eAAEjB,MAAM,CAACkB,gBAAgB,cAAClB,MAAM,CAACmB,GAAG,CAACd,IAAI,cAACL,MAAM,CAACoB,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;EACnFC,IAAI,eAAErB,MAAM,CAACkB,gBAAgB,CAAClB,MAAM,CAACI,MAAM,CAAC;EAC5CkB,MAAM,EAAEf,cAAc;EACtBgB,UAAU,EAAExB,KAAK,CAACiB;CACnB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { Option } from 'effect';
|
|
2
|
+
/** Calculate current and longest streaks from a list of activity dates (ISO date strings like "2026-03-25"). */
|
|
3
|
+
export const calculateStreaks = (dates, today) => {
|
|
4
|
+
const uniqueDates = [...new Set(dates)].sort();
|
|
5
|
+
if (uniqueDates.length === 0) return {
|
|
6
|
+
currentStreak: 0,
|
|
7
|
+
longestStreak: 0
|
|
8
|
+
};
|
|
9
|
+
// Calculate longest streak by walking sorted dates forward
|
|
10
|
+
let longestStreak = 1;
|
|
11
|
+
let currentRun = 1;
|
|
12
|
+
for (let i = 1; i < uniqueDates.length; i++) {
|
|
13
|
+
const prev = uniqueDates[i - 1];
|
|
14
|
+
const curr = uniqueDates[i];
|
|
15
|
+
if (prev !== undefined && curr !== undefined && daysBetween(prev, curr) === 1) {
|
|
16
|
+
currentRun++;
|
|
17
|
+
longestStreak = Math.max(longestStreak, currentRun);
|
|
18
|
+
} else {
|
|
19
|
+
currentRun = 1;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
// Calculate current streak: walk backwards from today or yesterday
|
|
23
|
+
const lastDate = uniqueDates[uniqueDates.length - 1];
|
|
24
|
+
if (lastDate === undefined) return {
|
|
25
|
+
currentStreak: 0,
|
|
26
|
+
longestStreak: 0
|
|
27
|
+
};
|
|
28
|
+
const gapFromToday = daysBetween(lastDate, today);
|
|
29
|
+
// If most recent activity is more than 1 day ago, current streak is 0
|
|
30
|
+
if (gapFromToday > 1) return {
|
|
31
|
+
currentStreak: 0,
|
|
32
|
+
longestStreak
|
|
33
|
+
};
|
|
34
|
+
let currentStreak = 1;
|
|
35
|
+
for (let i = uniqueDates.length - 2; i >= 0; i--) {
|
|
36
|
+
const curr = uniqueDates[i];
|
|
37
|
+
const next = uniqueDates[i + 1];
|
|
38
|
+
if (curr !== undefined && next !== undefined && daysBetween(curr, next) === 1) {
|
|
39
|
+
currentStreak++;
|
|
40
|
+
} else {
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
currentStreak,
|
|
46
|
+
longestStreak
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
/** Calculate full stats from activity rows. */
|
|
50
|
+
export const calculateStats = (rows, today) => {
|
|
51
|
+
if (rows.length === 0) {
|
|
52
|
+
return {
|
|
53
|
+
currentStreak: 0,
|
|
54
|
+
longestStreak: 0,
|
|
55
|
+
totalActivities: 0,
|
|
56
|
+
totalDurationMinutes: 0,
|
|
57
|
+
counts: []
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
const dates = rows.map(r => r.logged_at_date);
|
|
61
|
+
const {
|
|
62
|
+
currentStreak,
|
|
63
|
+
longestStreak
|
|
64
|
+
} = calculateStreaks(dates, today);
|
|
65
|
+
let totalDurationMinutes = 0;
|
|
66
|
+
const countMap = new Map();
|
|
67
|
+
for (const row of rows) {
|
|
68
|
+
totalDurationMinutes += Option.getOrElse(row.duration_minutes, () => 0);
|
|
69
|
+
const existing = countMap.get(row.activity_type_id);
|
|
70
|
+
if (existing) {
|
|
71
|
+
existing.count++;
|
|
72
|
+
} else {
|
|
73
|
+
countMap.set(row.activity_type_id, {
|
|
74
|
+
activityTypeName: row.activity_type_name,
|
|
75
|
+
count: 1
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const counts = Array.from(countMap.entries()).map(([activityTypeId, {
|
|
80
|
+
activityTypeName,
|
|
81
|
+
count
|
|
82
|
+
}]) => ({
|
|
83
|
+
activityTypeId,
|
|
84
|
+
activityTypeName,
|
|
85
|
+
count
|
|
86
|
+
}));
|
|
87
|
+
return {
|
|
88
|
+
currentStreak,
|
|
89
|
+
longestStreak,
|
|
90
|
+
totalActivities: rows.length,
|
|
91
|
+
totalDurationMinutes,
|
|
92
|
+
counts
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
/** Returns today's date as an ISO string in the Europe/Prague timezone. */
|
|
96
|
+
export const todayInPrague = () => {
|
|
97
|
+
const parts = new Intl.DateTimeFormat('en-CA', {
|
|
98
|
+
timeZone: 'Europe/Prague',
|
|
99
|
+
year: 'numeric',
|
|
100
|
+
month: '2-digit',
|
|
101
|
+
day: '2-digit'
|
|
102
|
+
}).formatToParts(new Date());
|
|
103
|
+
const get = type => parts.find(p => p.type === type)?.value ?? '';
|
|
104
|
+
return `${get('year')}-${get('month')}-${get('day')}`;
|
|
105
|
+
};
|
|
106
|
+
/** Returns the number of days between two ISO date strings. Always positive. Inputs must be date-only strings (UTC midnight). */
|
|
107
|
+
const daysBetween = (a, b) => {
|
|
108
|
+
const msPerDay = 86400000;
|
|
109
|
+
return Math.round(Math.abs(new Date(b).getTime() - new Date(a).getTime()) / msPerDay);
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=ActivityStats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActivityStats.js","names":["Option","calculateStreaks","dates","today","uniqueDates","Set","sort","length","currentStreak","longestStreak","currentRun","i","prev","curr","undefined","daysBetween","Math","max","lastDate","gapFromToday","next","calculateStats","rows","totalActivities","totalDurationMinutes","counts","map","r","logged_at_date","countMap","Map","row","getOrElse","duration_minutes","existing","get","activity_type_id","count","set","activityTypeName","activity_type_name","Array","from","entries","activityTypeId","todayInPrague","parts","Intl","DateTimeFormat","timeZone","year","month","day","formatToParts","Date","type","find","p","value","a","b","msPerDay","round","abs","getTime"],"sources":["../../../src/models/ActivityStats.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Schema } from 'effect';
|
|
2
|
+
export const ActivityTypeId = /*#__PURE__*/Schema.String.pipe(/*#__PURE__*/Schema.brand('ActivityTypeId'));
|
|
3
|
+
export const ActivityTypeSlug = /*#__PURE__*/Schema.Literal('gym', 'running', 'stretching', 'training');
|
|
4
|
+
//# sourceMappingURL=ActivityType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActivityType.js","names":["Schema","ActivityTypeId","String","pipe","brand","ActivityTypeSlug","Literal"],"sources":["../../../src/models/ActivityType.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAM,QAAQ,QAAQ;AAE/B,OAAO,MAAMC,cAAc,gBAAGD,MAAM,CAACE,MAAM,CAACC,IAAI,cAACH,MAAM,CAACI,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAGhF,OAAO,MAAMC,gBAAgB,gBAAGL,MAAM,CAACM,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,CAAC","ignoreList":[]}
|
package/dist/esm/rpc/SyncRpcs.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { RpcGroup } from '@effect/rpc';
|
|
2
|
+
import { ActivityRpcGroup } from './activity/ActivityRpcGroup.js';
|
|
2
3
|
import { ChannelRpcGroup } from './channel/ChannelRpcGroup.js';
|
|
3
4
|
import { EventRpcGroup } from './event/EventRpcGroup.js';
|
|
4
5
|
import { GuildRpcGroup } from './guild/GuildRpcGroup.js';
|
|
5
6
|
import { RoleRpcGroup } from './role/RoleRpcGroup.js';
|
|
6
|
-
export class SyncRpcs extends /*#__PURE__*/RpcGroup.make().merge(RoleRpcGroup, ChannelRpcGroup, GuildRpcGroup, EventRpcGroup) {}
|
|
7
|
+
export class SyncRpcs extends /*#__PURE__*/RpcGroup.make().merge(RoleRpcGroup, ChannelRpcGroup, GuildRpcGroup, EventRpcGroup, ActivityRpcGroup) {}
|
|
7
8
|
//# sourceMappingURL=SyncRpcs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncRpcs.js","names":["RpcGroup","ChannelRpcGroup","EventRpcGroup","GuildRpcGroup","RoleRpcGroup","SyncRpcs","make","merge"],"sources":["../../../src/rpc/SyncRpcs.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAQ,QAAQ,aAAa;AACtC,SAASC,eAAe,QAAQ,8BAA8B;AAC9D,SAASC,aAAa,QAAQ,0BAA0B;AACxD,SAASC,aAAa,QAAQ,0BAA0B;AACxD,SAASC,YAAY,QAAQ,wBAAwB;AAErD,OAAM,MAAOC,QAAS,
|
|
1
|
+
{"version":3,"file":"SyncRpcs.js","names":["RpcGroup","ActivityRpcGroup","ChannelRpcGroup","EventRpcGroup","GuildRpcGroup","RoleRpcGroup","SyncRpcs","make","merge"],"sources":["../../../src/rpc/SyncRpcs.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAQ,QAAQ,aAAa;AACtC,SAASC,gBAAgB,QAAQ,gCAAgC;AACjE,SAASC,eAAe,QAAQ,8BAA8B;AAC9D,SAASC,aAAa,QAAQ,0BAA0B;AACxD,SAASC,aAAa,QAAQ,0BAA0B;AACxD,SAASC,YAAY,QAAQ,wBAAwB;AAErD,OAAM,MAAOC,QAAS,sBAAQN,QAAQ,CAACO,IAAI,EAAE,CAACC,KAAK,CACjDH,YAAY,EACZH,eAAe,EACfE,aAAa,EACbD,aAAa,EACbF,gBAAgB,CACjB","ignoreList":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Rpc, RpcGroup } from '@effect/rpc';
|
|
2
|
+
import { Schema } from 'effect';
|
|
3
|
+
import { Discord } from '../../index.js';
|
|
4
|
+
import { ActivityGuildNotFound, ActivityMemberNotFound, GetStatsResult, LogActivityResult } from './ActivityRpcModels.js';
|
|
5
|
+
export const ActivityRpcGroup = /*#__PURE__*/RpcGroup.make(Rpc.make('LogActivity', {
|
|
6
|
+
payload: {
|
|
7
|
+
guild_id: Discord.Snowflake,
|
|
8
|
+
discord_user_id: Discord.Snowflake,
|
|
9
|
+
activity_type: Schema.String,
|
|
10
|
+
duration_minutes: Schema.OptionFromNullOr(Schema.Int.pipe(Schema.between(1, 1440))),
|
|
11
|
+
note: Schema.OptionFromNullOr(Schema.String)
|
|
12
|
+
},
|
|
13
|
+
success: LogActivityResult,
|
|
14
|
+
error: Schema.Union(ActivityMemberNotFound, ActivityGuildNotFound)
|
|
15
|
+
}), Rpc.make('GetStats', {
|
|
16
|
+
payload: {
|
|
17
|
+
guild_id: Discord.Snowflake,
|
|
18
|
+
discord_user_id: Discord.Snowflake
|
|
19
|
+
},
|
|
20
|
+
success: GetStatsResult,
|
|
21
|
+
error: Schema.Union(ActivityMemberNotFound, ActivityGuildNotFound)
|
|
22
|
+
})).prefix('Activity/');
|
|
23
|
+
//# sourceMappingURL=ActivityRpcGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActivityRpcGroup.js","names":["Rpc","RpcGroup","Schema","Discord","ActivityGuildNotFound","ActivityMemberNotFound","GetStatsResult","LogActivityResult","ActivityRpcGroup","make","payload","guild_id","Snowflake","discord_user_id","activity_type","String","duration_minutes","OptionFromNullOr","Int","pipe","between","note","success","error","Union","prefix"],"sources":["../../../../src/rpc/activity/ActivityRpcGroup.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,GAAG,EAAEC,QAAQ,QAAQ,aAAa;AAC3C,SAASC,MAAM,QAAQ,QAAQ;AAC/B,SAASC,OAAO,QAAQ,gBAAa;AACrC,SACEC,qBAAqB,EACrBC,sBAAsB,EACtBC,cAAc,EACdC,iBAAiB,QACZ,wBAAwB;AAE/B,OAAO,MAAMC,gBAAgB,gBAAGP,QAAQ,CAACQ,IAAI,CAC3CT,GAAG,CAACS,IAAI,CAAC,aAAa,EAAE;EACtBC,OAAO,EAAE;IACPC,QAAQ,EAAER,OAAO,CAACS,SAAS;IAC3BC,eAAe,EAAEV,OAAO,CAACS,SAAS;IAClCE,aAAa,EAAEZ,MAAM,CAACa,MAAM;IAC5BC,gBAAgB,EAAEd,MAAM,CAACe,gBAAgB,CAACf,MAAM,CAACgB,GAAG,CAACC,IAAI,CAACjB,MAAM,CAACkB,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACnFC,IAAI,EAAEnB,MAAM,CAACe,gBAAgB,CAACf,MAAM,CAACa,MAAM;GAC5C;EACDO,OAAO,EAAEf,iBAAiB;EAC1BgB,KAAK,EAAErB,MAAM,CAACsB,KAAK,CAACnB,sBAAsB,EAAED,qBAAqB;CAClE,CAAC,EACFJ,GAAG,CAACS,IAAI,CAAC,UAAU,EAAE;EACnBC,OAAO,EAAE;IACPC,QAAQ,EAAER,OAAO,CAACS,SAAS;IAC3BC,eAAe,EAAEV,OAAO,CAACS;GAC1B;EACDU,OAAO,EAAEhB,cAAc;EACvBiB,KAAK,EAAErB,MAAM,CAACsB,KAAK,CAACnB,sBAAsB,EAAED,qBAAqB;CAClE,CAAC,CACH,CAACqB,MAAM,CAAC,WAAW,CAAC","ignoreList":[]}
|