@contractspec/example.team-hub 1.57.0 → 1.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/dist/announcement/announcement.operations.d.ts +50 -56
  2. package/dist/announcement/announcement.operations.d.ts.map +1 -1
  3. package/dist/announcement/announcement.operations.js +70 -51
  4. package/dist/announcement/announcement.schema.d.ts +50 -55
  5. package/dist/announcement/announcement.schema.d.ts.map +1 -1
  6. package/dist/announcement/announcement.schema.js +29 -71
  7. package/dist/announcement/index.d.ts +6 -3
  8. package/dist/announcement/index.d.ts.map +1 -0
  9. package/dist/announcement/index.js +73 -3
  10. package/dist/browser/announcement/announcement.operations.js +71 -0
  11. package/dist/browser/announcement/announcement.schema.js +30 -0
  12. package/dist/browser/announcement/index.js +73 -0
  13. package/dist/browser/docs/index.js +94 -0
  14. package/dist/browser/docs/team-hub.docblock.js +94 -0
  15. package/dist/browser/entities/index.js +231 -0
  16. package/dist/browser/events.js +134 -0
  17. package/dist/browser/example.js +42 -0
  18. package/dist/browser/handlers/index.js +5 -0
  19. package/dist/browser/index.js +642 -0
  20. package/dist/browser/presentations/index.js +131 -0
  21. package/dist/browser/presentations/team-hub.presentation.js +131 -0
  22. package/dist/browser/presentations.js +148 -0
  23. package/dist/browser/ritual/index.js +124 -0
  24. package/dist/browser/ritual/ritual.operations.js +121 -0
  25. package/dist/browser/ritual/ritual.schema.js +41 -0
  26. package/dist/browser/space/index.js +66 -0
  27. package/dist/browser/space/space.operations.js +64 -0
  28. package/dist/browser/space/space.schema.js +27 -0
  29. package/dist/browser/task/index.js +171 -0
  30. package/dist/browser/task/task.operations.js +168 -0
  31. package/dist/browser/task/task.schema.js +40 -0
  32. package/dist/browser/team-hub.capability.js +40 -0
  33. package/dist/browser/team-hub.feature.js +69 -0
  34. package/dist/docs/index.d.ts +2 -1
  35. package/dist/docs/index.d.ts.map +1 -0
  36. package/dist/docs/index.js +95 -1
  37. package/dist/docs/team-hub.docblock.d.ts +2 -1
  38. package/dist/docs/team-hub.docblock.d.ts.map +1 -0
  39. package/dist/docs/team-hub.docblock.js +45 -56
  40. package/dist/entities/index.d.ts +138 -143
  41. package/dist/entities/index.d.ts.map +1 -1
  42. package/dist/entities/index.js +221 -252
  43. package/dist/events.d.ts +217 -223
  44. package/dist/events.d.ts.map +1 -1
  45. package/dist/events.js +122 -201
  46. package/dist/example.d.ts +2 -6
  47. package/dist/example.d.ts.map +1 -1
  48. package/dist/example.js +41 -55
  49. package/dist/handlers/index.d.ts +1 -4
  50. package/dist/handlers/index.d.ts.map +1 -1
  51. package/dist/handlers/index.js +5 -8
  52. package/dist/index.d.ts +12 -15
  53. package/dist/index.d.ts.map +1 -0
  54. package/dist/index.js +642 -15
  55. package/dist/node/announcement/announcement.operations.js +71 -0
  56. package/dist/node/announcement/announcement.schema.js +30 -0
  57. package/dist/node/announcement/index.js +73 -0
  58. package/dist/node/docs/index.js +94 -0
  59. package/dist/node/docs/team-hub.docblock.js +94 -0
  60. package/dist/node/entities/index.js +231 -0
  61. package/dist/node/events.js +134 -0
  62. package/dist/node/example.js +42 -0
  63. package/dist/node/handlers/index.js +5 -0
  64. package/dist/node/index.js +642 -0
  65. package/dist/node/presentations/index.js +131 -0
  66. package/dist/node/presentations/team-hub.presentation.js +131 -0
  67. package/dist/node/presentations.js +148 -0
  68. package/dist/node/ritual/index.js +124 -0
  69. package/dist/node/ritual/ritual.operations.js +121 -0
  70. package/dist/node/ritual/ritual.schema.js +41 -0
  71. package/dist/node/space/index.js +66 -0
  72. package/dist/node/space/space.operations.js +64 -0
  73. package/dist/node/space/space.schema.js +27 -0
  74. package/dist/node/task/index.js +171 -0
  75. package/dist/node/task/task.operations.js +168 -0
  76. package/dist/node/task/task.schema.js +40 -0
  77. package/dist/node/team-hub.capability.js +40 -0
  78. package/dist/node/team-hub.feature.js +69 -0
  79. package/dist/presentations/index.d.ts +2 -2
  80. package/dist/presentations/index.d.ts.map +1 -0
  81. package/dist/presentations/index.js +132 -3
  82. package/dist/presentations/team-hub.presentation.d.ts +6 -11
  83. package/dist/presentations/team-hub.presentation.d.ts.map +1 -1
  84. package/dist/presentations/team-hub.presentation.js +126 -125
  85. package/dist/presentations.d.ts +7 -11
  86. package/dist/presentations.d.ts.map +1 -1
  87. package/dist/presentations.js +142 -147
  88. package/dist/ritual/index.d.ts +6 -3
  89. package/dist/ritual/index.d.ts.map +1 -0
  90. package/dist/ritual/index.js +124 -3
  91. package/dist/ritual/ritual.operations.d.ts +92 -98
  92. package/dist/ritual/ritual.operations.d.ts.map +1 -1
  93. package/dist/ritual/ritual.operations.js +119 -95
  94. package/dist/ritual/ritual.schema.d.ts +67 -72
  95. package/dist/ritual/ritual.schema.d.ts.map +1 -1
  96. package/dist/ritual/ritual.schema.js +39 -95
  97. package/dist/space/index.d.ts +6 -3
  98. package/dist/space/index.d.ts.map +1 -0
  99. package/dist/space/index.js +66 -3
  100. package/dist/space/space.operations.d.ts +38 -44
  101. package/dist/space/space.operations.d.ts.map +1 -1
  102. package/dist/space/space.operations.js +63 -50
  103. package/dist/space/space.schema.d.ts +38 -43
  104. package/dist/space/space.schema.d.ts.map +1 -1
  105. package/dist/space/space.schema.js +26 -59
  106. package/dist/task/index.d.ts +6 -3
  107. package/dist/task/index.d.ts.map +1 -0
  108. package/dist/task/index.js +171 -3
  109. package/dist/task/task.operations.d.ts +212 -218
  110. package/dist/task/task.operations.d.ts.map +1 -1
  111. package/dist/task/task.operations.js +163 -174
  112. package/dist/task/task.schema.d.ts +63 -68
  113. package/dist/task/task.schema.d.ts.map +1 -1
  114. package/dist/task/task.schema.js +38 -91
  115. package/dist/team-hub.capability.d.ts +3 -8
  116. package/dist/team-hub.capability.d.ts.map +1 -1
  117. package/dist/team-hub.capability.js +41 -38
  118. package/dist/team-hub.feature.d.ts +1 -6
  119. package/dist/team-hub.feature.d.ts.map +1 -1
  120. package/dist/team-hub.feature.js +68 -159
  121. package/package.json +261 -57
  122. package/dist/announcement/announcement.operations.js.map +0 -1
  123. package/dist/announcement/announcement.schema.js.map +0 -1
  124. package/dist/docs/team-hub.docblock.js.map +0 -1
  125. package/dist/entities/index.js.map +0 -1
  126. package/dist/events.js.map +0 -1
  127. package/dist/example.js.map +0 -1
  128. package/dist/handlers/index.js.map +0 -1
  129. package/dist/presentations/team-hub.presentation.js.map +0 -1
  130. package/dist/presentations.js.map +0 -1
  131. package/dist/ritual/ritual.operations.js.map +0 -1
  132. package/dist/ritual/ritual.schema.js.map +0 -1
  133. package/dist/space/space.operations.js.map +0 -1
  134. package/dist/space/space.schema.js.map +0 -1
  135. package/dist/task/task.operations.js.map +0 -1
  136. package/dist/task/task.schema.js.map +0 -1
  137. package/dist/team-hub.capability.js.map +0 -1
  138. package/dist/team-hub.feature.js.map +0 -1
@@ -1,61 +1,55 @@
1
- import * as _contractspec_lib_schema0 from "@contractspec/lib.schema";
2
- import * as _contractspec_lib_contracts0 from "@contractspec/lib.contracts";
3
-
4
- //#region src/announcement/announcement.operations.d.ts
5
1
  /**
6
2
  * Post an announcement.
7
3
  */
8
- declare const PostAnnouncementContract: _contractspec_lib_contracts0.OperationSpec<_contractspec_lib_schema0.SchemaModel<{
9
- title: {
10
- type: _contractspec_lib_schema0.FieldType<string, string>;
11
- isOptional: false;
12
- };
13
- body: {
14
- type: _contractspec_lib_schema0.FieldType<string, string>;
15
- isOptional: false;
16
- };
17
- audience: {
18
- type: _contractspec_lib_schema0.FieldType<string, string>;
19
- isOptional: false;
20
- };
21
- audienceRole: {
22
- type: _contractspec_lib_schema0.FieldType<string, string>;
23
- isOptional: true;
24
- };
25
- spaceId: {
26
- type: _contractspec_lib_schema0.FieldType<string, string>;
27
- isOptional: true;
28
- };
29
- expiresAt: {
30
- type: _contractspec_lib_schema0.FieldType<Date, string>;
31
- isOptional: true;
32
- };
33
- }>, _contractspec_lib_schema0.SchemaModel<{
34
- id: {
35
- type: _contractspec_lib_schema0.FieldType<string, string>;
36
- isOptional: false;
37
- };
38
- title: {
39
- type: _contractspec_lib_schema0.FieldType<string, string>;
40
- isOptional: false;
41
- };
42
- body: {
43
- type: _contractspec_lib_schema0.FieldType<string, string>;
44
- isOptional: false;
45
- };
46
- audience: {
47
- type: _contractspec_lib_schema0.FieldType<string, string>;
48
- isOptional: false;
49
- };
50
- audienceRole: {
51
- type: _contractspec_lib_schema0.FieldType<string, string>;
52
- isOptional: true;
53
- };
54
- spaceId: {
55
- type: _contractspec_lib_schema0.FieldType<string, string>;
56
- isOptional: true;
57
- };
4
+ export declare const PostAnnouncementContract: import("@contractspec/lib.contracts").OperationSpec<import("@contractspec/lib.schema").SchemaModel<{
5
+ title: {
6
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
7
+ isOptional: false;
8
+ };
9
+ body: {
10
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
11
+ isOptional: false;
12
+ };
13
+ audience: {
14
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
15
+ isOptional: false;
16
+ };
17
+ audienceRole: {
18
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
19
+ isOptional: true;
20
+ };
21
+ spaceId: {
22
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
23
+ isOptional: true;
24
+ };
25
+ expiresAt: {
26
+ type: import("@contractspec/lib.schema").FieldType<Date, string>;
27
+ isOptional: true;
28
+ };
29
+ }>, import("@contractspec/lib.schema").SchemaModel<{
30
+ id: {
31
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
32
+ isOptional: false;
33
+ };
34
+ title: {
35
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
36
+ isOptional: false;
37
+ };
38
+ body: {
39
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
40
+ isOptional: false;
41
+ };
42
+ audience: {
43
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
44
+ isOptional: false;
45
+ };
46
+ audienceRole: {
47
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
48
+ isOptional: true;
49
+ };
50
+ spaceId: {
51
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
52
+ isOptional: true;
53
+ };
58
54
  }>, undefined>;
59
- //#endregion
60
- export { PostAnnouncementContract };
61
55
  //# sourceMappingURL=announcement.operations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"announcement.operations.d.ts","names":[],"sources":["../../src/announcement/announcement.operations.ts"],"mappings":";;;;;;;cAWa,wBAAA,+BAAwB,aAAA,2BAAA,WAAA;;UAqCnC,yBAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;UArCmC,yBAAA,CAAA,SAAA"}
1
+ {"version":3,"file":"announcement.operations.d.ts","sourceRoot":"","sources":["../../src/announcement/announcement.operations.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAqCnC,CAAC"}
@@ -1,53 +1,72 @@
1
- import { AnnouncementModel, PostAnnouncementInputModel } from "./announcement.schema.js";
2
- import { defineCommand } from "@contractspec/lib.contracts";
3
-
4
- //#region src/announcement/announcement.operations.ts
5
- const OWNERS = ["@examples.team-hub"];
6
- /**
7
- * Post an announcement.
8
- */
9
- const PostAnnouncementContract = defineCommand({
10
- meta: {
11
- key: "team.announcement.post",
12
- version: "1.0.0",
13
- stability: "stable",
14
- owners: [...OWNERS],
15
- tags: [
16
- "team-hub",
17
- "announcement",
18
- "post"
19
- ],
20
- description: "Post an announcement.",
21
- goal: "Communicate with team.",
22
- context: "Communication."
23
- },
24
- io: {
25
- input: PostAnnouncementInputModel,
26
- output: AnnouncementModel
27
- },
28
- policy: { auth: "user" },
29
- acceptance: {
30
- scenarios: [{
31
- key: "post-announcement-happy-path",
32
- given: ["User is authenticated"],
33
- when: ["User posts an announcement"],
34
- then: ["Announcement is posted and distributed"]
35
- }],
36
- examples: [{
37
- key: "post-general",
38
- input: {
39
- spaceId: "space-123",
40
- title: "New Policy",
41
- content: "Please read..."
42
- },
43
- output: {
44
- id: "ann-456",
45
- status: "posted"
46
- }
47
- }]
48
- }
1
+ // @bun
2
+ // src/announcement/announcement.schema.ts
3
+ import { defineSchemaModel, ScalarTypeEnum } from "@contractspec/lib.schema";
4
+ var AnnouncementModel = defineSchemaModel({
5
+ name: "Announcement",
6
+ description: "Announcement to spaces/org",
7
+ fields: {
8
+ id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
9
+ title: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
10
+ body: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
11
+ audience: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
12
+ audienceRole: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
13
+ spaceId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true }
14
+ }
15
+ });
16
+ var PostAnnouncementInputModel = defineSchemaModel({
17
+ name: "PostAnnouncementInput",
18
+ description: "Post an announcement",
19
+ fields: {
20
+ title: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
21
+ body: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
22
+ audience: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
23
+ audienceRole: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
24
+ spaceId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
25
+ expiresAt: { type: ScalarTypeEnum.DateTime(), isOptional: true }
26
+ }
49
27
  });
50
28
 
51
- //#endregion
52
- export { PostAnnouncementContract };
53
- //# sourceMappingURL=announcement.operations.js.map
29
+ // src/announcement/announcement.operations.ts
30
+ import { defineCommand } from "@contractspec/lib.contracts";
31
+ var OWNERS = ["@examples.team-hub"];
32
+ var PostAnnouncementContract = defineCommand({
33
+ meta: {
34
+ key: "team.announcement.post",
35
+ version: "1.0.0",
36
+ stability: "stable",
37
+ owners: [...OWNERS],
38
+ tags: ["team-hub", "announcement", "post"],
39
+ description: "Post an announcement.",
40
+ goal: "Communicate with team.",
41
+ context: "Communication."
42
+ },
43
+ io: {
44
+ input: PostAnnouncementInputModel,
45
+ output: AnnouncementModel
46
+ },
47
+ policy: { auth: "user" },
48
+ acceptance: {
49
+ scenarios: [
50
+ {
51
+ key: "post-announcement-happy-path",
52
+ given: ["User is authenticated"],
53
+ when: ["User posts an announcement"],
54
+ then: ["Announcement is posted and distributed"]
55
+ }
56
+ ],
57
+ examples: [
58
+ {
59
+ key: "post-general",
60
+ input: {
61
+ spaceId: "space-123",
62
+ title: "New Policy",
63
+ content: "Please read..."
64
+ },
65
+ output: { id: "ann-456", status: "posted" }
66
+ }
67
+ ]
68
+ }
69
+ });
70
+ export {
71
+ PostAnnouncementContract
72
+ };
@@ -1,64 +1,59 @@
1
- import * as _contractspec_lib_schema0 from "@contractspec/lib.schema";
2
-
3
- //#region src/announcement/announcement.schema.d.ts
4
1
  /**
5
2
  * Announcement to spaces/org.
6
3
  */
7
- declare const AnnouncementModel: _contractspec_lib_schema0.SchemaModel<{
8
- id: {
9
- type: _contractspec_lib_schema0.FieldType<string, string>;
10
- isOptional: false;
11
- };
12
- title: {
13
- type: _contractspec_lib_schema0.FieldType<string, string>;
14
- isOptional: false;
15
- };
16
- body: {
17
- type: _contractspec_lib_schema0.FieldType<string, string>;
18
- isOptional: false;
19
- };
20
- audience: {
21
- type: _contractspec_lib_schema0.FieldType<string, string>;
22
- isOptional: false;
23
- };
24
- audienceRole: {
25
- type: _contractspec_lib_schema0.FieldType<string, string>;
26
- isOptional: true;
27
- };
28
- spaceId: {
29
- type: _contractspec_lib_schema0.FieldType<string, string>;
30
- isOptional: true;
31
- };
4
+ export declare const AnnouncementModel: import("@contractspec/lib.schema").SchemaModel<{
5
+ id: {
6
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
7
+ isOptional: false;
8
+ };
9
+ title: {
10
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
11
+ isOptional: false;
12
+ };
13
+ body: {
14
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
15
+ isOptional: false;
16
+ };
17
+ audience: {
18
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
19
+ isOptional: false;
20
+ };
21
+ audienceRole: {
22
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
23
+ isOptional: true;
24
+ };
25
+ spaceId: {
26
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
27
+ isOptional: true;
28
+ };
32
29
  }>;
33
30
  /**
34
31
  * Input for posting an announcement.
35
32
  */
36
- declare const PostAnnouncementInputModel: _contractspec_lib_schema0.SchemaModel<{
37
- title: {
38
- type: _contractspec_lib_schema0.FieldType<string, string>;
39
- isOptional: false;
40
- };
41
- body: {
42
- type: _contractspec_lib_schema0.FieldType<string, string>;
43
- isOptional: false;
44
- };
45
- audience: {
46
- type: _contractspec_lib_schema0.FieldType<string, string>;
47
- isOptional: false;
48
- };
49
- audienceRole: {
50
- type: _contractspec_lib_schema0.FieldType<string, string>;
51
- isOptional: true;
52
- };
53
- spaceId: {
54
- type: _contractspec_lib_schema0.FieldType<string, string>;
55
- isOptional: true;
56
- };
57
- expiresAt: {
58
- type: _contractspec_lib_schema0.FieldType<Date, string>;
59
- isOptional: true;
60
- };
33
+ export declare const PostAnnouncementInputModel: import("@contractspec/lib.schema").SchemaModel<{
34
+ title: {
35
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
36
+ isOptional: false;
37
+ };
38
+ body: {
39
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
40
+ isOptional: false;
41
+ };
42
+ audience: {
43
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
44
+ isOptional: false;
45
+ };
46
+ audienceRole: {
47
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
48
+ isOptional: true;
49
+ };
50
+ spaceId: {
51
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
52
+ isOptional: true;
53
+ };
54
+ expiresAt: {
55
+ type: import("@contractspec/lib.schema").FieldType<Date, string>;
56
+ isOptional: true;
57
+ };
61
58
  }>;
62
- //#endregion
63
- export { AnnouncementModel, PostAnnouncementInputModel };
64
59
  //# sourceMappingURL=announcement.schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"announcement.schema.d.ts","names":[],"sources":["../../src/announcement/announcement.schema.ts"],"mappings":";;;;;;cAKa,iBAAA,4BAAiB,WAAA;;UAW5B,yBAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;cAKW,0BAAA,4BAA0B,WAAA;;UAWrC,yBAAA,CAAA,SAAA"}
1
+ {"version":3,"file":"announcement.schema.d.ts","sourceRoot":"","sources":["../../src/announcement/announcement.schema.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;EAW5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;EAWrC,CAAC"}
@@ -1,73 +1,31 @@
1
- import { ScalarTypeEnum, defineSchemaModel } from "@contractspec/lib.schema";
2
-
3
- //#region src/announcement/announcement.schema.ts
4
- /**
5
- * Announcement to spaces/org.
6
- */
7
- const AnnouncementModel = defineSchemaModel({
8
- name: "Announcement",
9
- description: "Announcement to spaces/org",
10
- fields: {
11
- id: {
12
- type: ScalarTypeEnum.String_unsecure(),
13
- isOptional: false
14
- },
15
- title: {
16
- type: ScalarTypeEnum.String_unsecure(),
17
- isOptional: false
18
- },
19
- body: {
20
- type: ScalarTypeEnum.String_unsecure(),
21
- isOptional: false
22
- },
23
- audience: {
24
- type: ScalarTypeEnum.String_unsecure(),
25
- isOptional: false
26
- },
27
- audienceRole: {
28
- type: ScalarTypeEnum.String_unsecure(),
29
- isOptional: true
30
- },
31
- spaceId: {
32
- type: ScalarTypeEnum.String_unsecure(),
33
- isOptional: true
34
- }
35
- }
1
+ // @bun
2
+ // src/announcement/announcement.schema.ts
3
+ import { defineSchemaModel, ScalarTypeEnum } from "@contractspec/lib.schema";
4
+ var AnnouncementModel = defineSchemaModel({
5
+ name: "Announcement",
6
+ description: "Announcement to spaces/org",
7
+ fields: {
8
+ id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
9
+ title: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
10
+ body: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
11
+ audience: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
12
+ audienceRole: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
13
+ spaceId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true }
14
+ }
36
15
  });
37
- /**
38
- * Input for posting an announcement.
39
- */
40
- const PostAnnouncementInputModel = defineSchemaModel({
41
- name: "PostAnnouncementInput",
42
- description: "Post an announcement",
43
- fields: {
44
- title: {
45
- type: ScalarTypeEnum.String_unsecure(),
46
- isOptional: false
47
- },
48
- body: {
49
- type: ScalarTypeEnum.String_unsecure(),
50
- isOptional: false
51
- },
52
- audience: {
53
- type: ScalarTypeEnum.String_unsecure(),
54
- isOptional: false
55
- },
56
- audienceRole: {
57
- type: ScalarTypeEnum.String_unsecure(),
58
- isOptional: true
59
- },
60
- spaceId: {
61
- type: ScalarTypeEnum.String_unsecure(),
62
- isOptional: true
63
- },
64
- expiresAt: {
65
- type: ScalarTypeEnum.DateTime(),
66
- isOptional: true
67
- }
68
- }
16
+ var PostAnnouncementInputModel = defineSchemaModel({
17
+ name: "PostAnnouncementInput",
18
+ description: "Post an announcement",
19
+ fields: {
20
+ title: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
21
+ body: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
22
+ audience: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
23
+ audienceRole: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
24
+ spaceId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
25
+ expiresAt: { type: ScalarTypeEnum.DateTime(), isOptional: true }
26
+ }
69
27
  });
70
-
71
- //#endregion
72
- export { AnnouncementModel, PostAnnouncementInputModel };
73
- //# sourceMappingURL=announcement.schema.js.map
28
+ export {
29
+ PostAnnouncementInputModel,
30
+ AnnouncementModel
31
+ };
@@ -1,3 +1,6 @@
1
- import { PostAnnouncementContract } from "./announcement.operations.js";
2
- import { AnnouncementModel, PostAnnouncementInputModel } from "./announcement.schema.js";
3
- export { AnnouncementModel, PostAnnouncementContract, PostAnnouncementInputModel };
1
+ /**
2
+ * Announcement domain - Team announcement management.
3
+ */
4
+ export { AnnouncementModel, PostAnnouncementInputModel, } from './announcement.schema';
5
+ export { PostAnnouncementContract } from './announcement.operations';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/announcement/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -1,4 +1,74 @@
1
- import { AnnouncementModel, PostAnnouncementInputModel } from "./announcement.schema.js";
2
- import { PostAnnouncementContract } from "./announcement.operations.js";
1
+ // @bun
2
+ // src/announcement/announcement.schema.ts
3
+ import { defineSchemaModel, ScalarTypeEnum } from "@contractspec/lib.schema";
4
+ var AnnouncementModel = defineSchemaModel({
5
+ name: "Announcement",
6
+ description: "Announcement to spaces/org",
7
+ fields: {
8
+ id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
9
+ title: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
10
+ body: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
11
+ audience: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
12
+ audienceRole: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
13
+ spaceId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true }
14
+ }
15
+ });
16
+ var PostAnnouncementInputModel = defineSchemaModel({
17
+ name: "PostAnnouncementInput",
18
+ description: "Post an announcement",
19
+ fields: {
20
+ title: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
21
+ body: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
22
+ audience: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
23
+ audienceRole: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
24
+ spaceId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
25
+ expiresAt: { type: ScalarTypeEnum.DateTime(), isOptional: true }
26
+ }
27
+ });
3
28
 
4
- export { AnnouncementModel, PostAnnouncementContract, PostAnnouncementInputModel };
29
+ // src/announcement/announcement.operations.ts
30
+ import { defineCommand } from "@contractspec/lib.contracts";
31
+ var OWNERS = ["@examples.team-hub"];
32
+ var PostAnnouncementContract = defineCommand({
33
+ meta: {
34
+ key: "team.announcement.post",
35
+ version: "1.0.0",
36
+ stability: "stable",
37
+ owners: [...OWNERS],
38
+ tags: ["team-hub", "announcement", "post"],
39
+ description: "Post an announcement.",
40
+ goal: "Communicate with team.",
41
+ context: "Communication."
42
+ },
43
+ io: {
44
+ input: PostAnnouncementInputModel,
45
+ output: AnnouncementModel
46
+ },
47
+ policy: { auth: "user" },
48
+ acceptance: {
49
+ scenarios: [
50
+ {
51
+ key: "post-announcement-happy-path",
52
+ given: ["User is authenticated"],
53
+ when: ["User posts an announcement"],
54
+ then: ["Announcement is posted and distributed"]
55
+ }
56
+ ],
57
+ examples: [
58
+ {
59
+ key: "post-general",
60
+ input: {
61
+ spaceId: "space-123",
62
+ title: "New Policy",
63
+ content: "Please read..."
64
+ },
65
+ output: { id: "ann-456", status: "posted" }
66
+ }
67
+ ]
68
+ }
69
+ });
70
+ export {
71
+ PostAnnouncementInputModel,
72
+ PostAnnouncementContract,
73
+ AnnouncementModel
74
+ };
@@ -0,0 +1,71 @@
1
+ // src/announcement/announcement.schema.ts
2
+ import { defineSchemaModel, ScalarTypeEnum } from "@contractspec/lib.schema";
3
+ var AnnouncementModel = defineSchemaModel({
4
+ name: "Announcement",
5
+ description: "Announcement to spaces/org",
6
+ fields: {
7
+ id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
8
+ title: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
9
+ body: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
10
+ audience: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
11
+ audienceRole: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
12
+ spaceId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true }
13
+ }
14
+ });
15
+ var PostAnnouncementInputModel = defineSchemaModel({
16
+ name: "PostAnnouncementInput",
17
+ description: "Post an announcement",
18
+ fields: {
19
+ title: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
20
+ body: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
21
+ audience: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
22
+ audienceRole: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
23
+ spaceId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
24
+ expiresAt: { type: ScalarTypeEnum.DateTime(), isOptional: true }
25
+ }
26
+ });
27
+
28
+ // src/announcement/announcement.operations.ts
29
+ import { defineCommand } from "@contractspec/lib.contracts";
30
+ var OWNERS = ["@examples.team-hub"];
31
+ var PostAnnouncementContract = defineCommand({
32
+ meta: {
33
+ key: "team.announcement.post",
34
+ version: "1.0.0",
35
+ stability: "stable",
36
+ owners: [...OWNERS],
37
+ tags: ["team-hub", "announcement", "post"],
38
+ description: "Post an announcement.",
39
+ goal: "Communicate with team.",
40
+ context: "Communication."
41
+ },
42
+ io: {
43
+ input: PostAnnouncementInputModel,
44
+ output: AnnouncementModel
45
+ },
46
+ policy: { auth: "user" },
47
+ acceptance: {
48
+ scenarios: [
49
+ {
50
+ key: "post-announcement-happy-path",
51
+ given: ["User is authenticated"],
52
+ when: ["User posts an announcement"],
53
+ then: ["Announcement is posted and distributed"]
54
+ }
55
+ ],
56
+ examples: [
57
+ {
58
+ key: "post-general",
59
+ input: {
60
+ spaceId: "space-123",
61
+ title: "New Policy",
62
+ content: "Please read..."
63
+ },
64
+ output: { id: "ann-456", status: "posted" }
65
+ }
66
+ ]
67
+ }
68
+ });
69
+ export {
70
+ PostAnnouncementContract
71
+ };
@@ -0,0 +1,30 @@
1
+ // src/announcement/announcement.schema.ts
2
+ import { defineSchemaModel, ScalarTypeEnum } from "@contractspec/lib.schema";
3
+ var AnnouncementModel = defineSchemaModel({
4
+ name: "Announcement",
5
+ description: "Announcement to spaces/org",
6
+ fields: {
7
+ id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
8
+ title: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
9
+ body: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
10
+ audience: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
11
+ audienceRole: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
12
+ spaceId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true }
13
+ }
14
+ });
15
+ var PostAnnouncementInputModel = defineSchemaModel({
16
+ name: "PostAnnouncementInput",
17
+ description: "Post an announcement",
18
+ fields: {
19
+ title: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
20
+ body: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
21
+ audience: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
22
+ audienceRole: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
23
+ spaceId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
24
+ expiresAt: { type: ScalarTypeEnum.DateTime(), isOptional: true }
25
+ }
26
+ });
27
+ export {
28
+ PostAnnouncementInputModel,
29
+ AnnouncementModel
30
+ };