@dreamboard-games/workspace-codegen 0.1.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 (73) hide show
  1. package/LICENSE +89 -0
  2. package/NOTICE +1 -0
  3. package/dist/hex-geometry.d.ts +2 -0
  4. package/dist/hex-geometry.js +49 -0
  5. package/dist/index.d.ts +13 -0
  6. package/dist/index.js +22 -0
  7. package/dist/manifest-contract.d.ts +14 -0
  8. package/dist/manifest-contract.js +4897 -0
  9. package/dist/manifest-validation.d.ts +6 -0
  10. package/dist/manifest-validation.js +506 -0
  11. package/dist/ownership.d.ts +31 -0
  12. package/dist/ownership.js +86 -0
  13. package/dist/preset-card-sets.d.ts +5 -0
  14. package/dist/preset-card-sets.js +135 -0
  15. package/dist/seeds.d.ts +6 -0
  16. package/dist/seeds.js +766 -0
  17. package/ownership.json +51 -0
  18. package/package.json +46 -0
  19. package/src/__fixtures__/sdk-types/invalid-card-properties-extra-key.ts +62 -0
  20. package/src/__fixtures__/sdk-types/invalid-card-properties-missing-required.ts +60 -0
  21. package/src/__fixtures__/sdk-types/invalid-card-properties-wrong-enum.ts +61 -0
  22. package/src/__fixtures__/sdk-types/invalid-card-properties-wrong-nested.ts +61 -0
  23. package/src/__fixtures__/sdk-types/invalid-card-properties-wrong-scalar.ts +61 -0
  24. package/src/__fixtures__/sdk-types/invalid-card-visibility.ts +40 -0
  25. package/src/__fixtures__/sdk-types/invalid-container-card-set-manifest.ts +62 -0
  26. package/src/__fixtures__/sdk-types/invalid-die-fields-wrong-array-item.ts +43 -0
  27. package/src/__fixtures__/sdk-types/invalid-die-fields-wrong-player-id.ts +43 -0
  28. package/src/__fixtures__/sdk-types/invalid-die-fields-wrong-resource-id.ts +43 -0
  29. package/src/__fixtures__/sdk-types/invalid-die-home-per-player-zone-no-owner.ts +35 -0
  30. package/src/__fixtures__/sdk-types/invalid-die-seed-type-id.ts +31 -0
  31. package/src/__fixtures__/sdk-types/invalid-die-visibility.ts +28 -0
  32. package/src/__fixtures__/sdk-types/invalid-generic-board-edge-id.ts +38 -0
  33. package/src/__fixtures__/sdk-types/invalid-generic-board-nested-field.ts +45 -0
  34. package/src/__fixtures__/sdk-types/invalid-hex-edge-field-edge-id.ts +47 -0
  35. package/src/__fixtures__/sdk-types/invalid-hex-vertex-field-vertex-id.ts +47 -0
  36. package/src/__fixtures__/sdk-types/invalid-manifest.ts +143 -0
  37. package/src/__fixtures__/sdk-types/invalid-piece-fields-extra-key.ts +62 -0
  38. package/src/__fixtures__/sdk-types/invalid-piece-fields-wrong-card-id.ts +61 -0
  39. package/src/__fixtures__/sdk-types/invalid-piece-fields-wrong-enum.ts +61 -0
  40. package/src/__fixtures__/sdk-types/invalid-piece-fields-wrong-scalar.ts +61 -0
  41. package/src/__fixtures__/sdk-types/invalid-piece-fields-wrong-zone-id.ts +61 -0
  42. package/src/__fixtures__/sdk-types/invalid-piece-home-per-player-container-no-owner.ts +48 -0
  43. package/src/__fixtures__/sdk-types/invalid-piece-home-per-player-edge-no-owner.ts +47 -0
  44. package/src/__fixtures__/sdk-types/invalid-piece-home-per-player-space-no-owner.ts +42 -0
  45. package/src/__fixtures__/sdk-types/invalid-piece-home-per-player-vertex-no-owner.ts +49 -0
  46. package/src/__fixtures__/sdk-types/invalid-piece-seed-type-id.ts +30 -0
  47. package/src/__fixtures__/sdk-types/invalid-piece-visibility.ts +28 -0
  48. package/src/__fixtures__/sdk-types/invalid-slot-host-manifest.ts +47 -0
  49. package/src/__fixtures__/sdk-types/invalid-slot-id-manifest.ts +49 -0
  50. package/src/__fixtures__/sdk-types/invalid-square-board-edge-id.ts +47 -0
  51. package/src/__fixtures__/sdk-types/invalid-square-board-space-id.ts +47 -0
  52. package/src/__fixtures__/sdk-types/invalid-square-board-vertex-id.ts +49 -0
  53. package/src/__fixtures__/sdk-types/invalid-square-container-field-space-id.ts +59 -0
  54. package/src/__fixtures__/sdk-types/invalid-square-container-host-space-id.ts +49 -0
  55. package/src/__fixtures__/sdk-types/invalid-square-relation-field-scalar.ts +48 -0
  56. package/src/__fixtures__/sdk-types/invalid-square-relation-space-id.ts +48 -0
  57. package/src/__fixtures__/sdk-types/invalid-square-space-fields-enum.ts +44 -0
  58. package/src/__fixtures__/sdk-types/invalid-square-space-fields-extra-key.ts +45 -0
  59. package/src/__fixtures__/sdk-types/valid-die-type-omits-sides.ts +29 -0
  60. package/src/__fixtures__/sdk-types/valid-manifest-omits-board-templates.ts +19 -0
  61. package/src/__fixtures__/sdk-types/valid-manifest.ts +612 -0
  62. package/src/__fixtures__/sdk-types/valid-player-scoped-seed-homes.ts +59 -0
  63. package/src/authoring-benchmark.test.ts +362 -0
  64. package/src/hex-geometry.ts +69 -0
  65. package/src/index.ts +64 -0
  66. package/src/manifest-contract.test.ts +1764 -0
  67. package/src/manifest-contract.ts +6581 -0
  68. package/src/manifest-validation.test.ts +393 -0
  69. package/src/manifest-validation.ts +795 -0
  70. package/src/ownership.ts +127 -0
  71. package/src/preset-card-sets.ts +169 -0
  72. package/src/sdk-types-authoring.test.ts +361 -0
  73. package/src/seeds.ts +800 -0
@@ -0,0 +1,47 @@
1
+ import { defineTopologyManifest } from "@dreamboard/sdk-types";
2
+
3
+ defineTopologyManifest({
4
+ players: {
5
+ minPlayers: 2,
6
+ maxPlayers: 2,
7
+ optimalPlayers: 2,
8
+ },
9
+ cardSets: [],
10
+ zones: [],
11
+ boardTemplates: [],
12
+ boards: [
13
+ {
14
+ id: "player-grid",
15
+ name: "Player Grid",
16
+ layout: "square",
17
+ scope: "perPlayer",
18
+ spaces: [
19
+ { id: "cell-a", row: 0, col: 0 },
20
+ { id: "cell-b", row: 0, col: 1 },
21
+ ],
22
+ relations: [],
23
+ containers: [],
24
+ edges: [],
25
+ vertices: [],
26
+ },
27
+ ],
28
+ pieceTypes: [{ id: "meeple", name: "Meeple" }],
29
+ pieceSeeds: [
30
+ {
31
+ id: "worker-a",
32
+ typeId: "meeple",
33
+ home: {
34
+ type: "edge",
35
+ boardId: "player-grid",
36
+ ref: {
37
+ spaces: ["cell-a", "cell-b"],
38
+ },
39
+ },
40
+ },
41
+ ],
42
+ dieTypes: [],
43
+ dieSeeds: [],
44
+ resources: [],
45
+ setupOptions: [],
46
+ setupProfiles: [],
47
+ } as const);
@@ -0,0 +1,42 @@
1
+ import { defineTopologyManifest } from "@dreamboard/sdk-types";
2
+
3
+ defineTopologyManifest({
4
+ players: {
5
+ minPlayers: 2,
6
+ maxPlayers: 2,
7
+ optimalPlayers: 2,
8
+ },
9
+ cardSets: [],
10
+ zones: [],
11
+ boardTemplates: [],
12
+ boards: [
13
+ {
14
+ id: "player-grid",
15
+ name: "Player Grid",
16
+ layout: "square",
17
+ scope: "perPlayer",
18
+ spaces: [{ id: "cell-a", row: 0, col: 0 }],
19
+ relations: [],
20
+ containers: [],
21
+ edges: [],
22
+ vertices: [],
23
+ },
24
+ ],
25
+ pieceTypes: [{ id: "meeple", name: "Meeple" }],
26
+ pieceSeeds: [
27
+ {
28
+ id: "worker-a",
29
+ typeId: "meeple",
30
+ home: {
31
+ type: "space",
32
+ boardId: "player-grid",
33
+ spaceId: "cell-a",
34
+ },
35
+ },
36
+ ],
37
+ dieTypes: [],
38
+ dieSeeds: [],
39
+ resources: [],
40
+ setupOptions: [],
41
+ setupProfiles: [],
42
+ } as const);
@@ -0,0 +1,49 @@
1
+ import { defineTopologyManifest } from "@dreamboard/sdk-types";
2
+
3
+ defineTopologyManifest({
4
+ players: {
5
+ minPlayers: 2,
6
+ maxPlayers: 2,
7
+ optimalPlayers: 2,
8
+ },
9
+ cardSets: [],
10
+ zones: [],
11
+ boardTemplates: [],
12
+ boards: [
13
+ {
14
+ id: "player-grid",
15
+ name: "Player Grid",
16
+ layout: "square",
17
+ scope: "perPlayer",
18
+ spaces: [
19
+ { id: "cell-a", row: 0, col: 0 },
20
+ { id: "cell-b", row: 0, col: 1 },
21
+ { id: "cell-c", row: 1, col: 0 },
22
+ { id: "cell-d", row: 1, col: 1 },
23
+ ],
24
+ relations: [],
25
+ containers: [],
26
+ edges: [],
27
+ vertices: [],
28
+ },
29
+ ],
30
+ pieceTypes: [{ id: "meeple", name: "Meeple" }],
31
+ pieceSeeds: [
32
+ {
33
+ id: "worker-a",
34
+ typeId: "meeple",
35
+ home: {
36
+ type: "vertex",
37
+ boardId: "player-grid",
38
+ ref: {
39
+ spaces: ["cell-a", "cell-b", "cell-c", "cell-d"],
40
+ },
41
+ },
42
+ },
43
+ ],
44
+ dieTypes: [],
45
+ dieSeeds: [],
46
+ resources: [],
47
+ setupOptions: [],
48
+ setupProfiles: [],
49
+ } as const);
@@ -0,0 +1,30 @@
1
+ import { defineTopologyManifest } from "@dreamboard/sdk-types";
2
+
3
+ defineTopologyManifest({
4
+ players: {
5
+ minPlayers: 2,
6
+ maxPlayers: 2,
7
+ optimalPlayers: 2,
8
+ },
9
+ cardSets: [],
10
+ zones: [],
11
+ boardTemplates: [],
12
+ boards: [],
13
+ pieceTypes: [
14
+ {
15
+ id: "meeple",
16
+ name: "Meeple",
17
+ },
18
+ ],
19
+ pieceSeeds: [
20
+ {
21
+ id: "worker-a",
22
+ typeId: "missing-meeple",
23
+ },
24
+ ],
25
+ dieTypes: [],
26
+ dieSeeds: [],
27
+ resources: [],
28
+ setupOptions: [],
29
+ setupProfiles: [],
30
+ } as const);
@@ -0,0 +1,28 @@
1
+ import { defineTopologyManifest } from "@dreamboard/sdk-types";
2
+
3
+ defineTopologyManifest({
4
+ players: {
5
+ minPlayers: 2,
6
+ maxPlayers: 2,
7
+ optimalPlayers: 2,
8
+ },
9
+ cardSets: [],
10
+ zones: [],
11
+ boardTemplates: [],
12
+ boards: [],
13
+ pieceTypes: [{ id: "meeple", name: "Meeple" }],
14
+ pieceSeeds: [
15
+ {
16
+ id: "worker-a",
17
+ typeId: "meeple",
18
+ visibility: {
19
+ visibleTo: ["player-3"],
20
+ },
21
+ },
22
+ ],
23
+ dieTypes: [],
24
+ dieSeeds: [],
25
+ resources: [],
26
+ setupOptions: [],
27
+ setupProfiles: [],
28
+ } as const);
@@ -0,0 +1,47 @@
1
+ import { defineTopologyManifest } from "@dreamboard/sdk-types";
2
+
3
+ defineTopologyManifest({
4
+ players: {
5
+ minPlayers: 2,
6
+ maxPlayers: 2,
7
+ optimalPlayers: 2,
8
+ },
9
+ cardSets: [],
10
+ zones: [],
11
+ boardTemplates: [],
12
+ boards: [],
13
+ pieceTypes: [
14
+ {
15
+ id: "player-mat",
16
+ name: "Player Mat",
17
+ slots: [{ id: "worker-rest", name: "Worker Rest" }],
18
+ },
19
+ {
20
+ id: "worker",
21
+ name: "Worker",
22
+ },
23
+ ],
24
+ pieceSeeds: [
25
+ {
26
+ id: "mat-alpha",
27
+ typeId: "player-mat",
28
+ },
29
+ {
30
+ id: "worker-a",
31
+ typeId: "worker",
32
+ home: {
33
+ type: "slot",
34
+ host: {
35
+ kind: "piece",
36
+ id: "missing-host",
37
+ },
38
+ slotId: "worker-rest",
39
+ },
40
+ },
41
+ ],
42
+ dieTypes: [],
43
+ dieSeeds: [],
44
+ resources: [],
45
+ setupOptions: [],
46
+ setupProfiles: [],
47
+ } as const);
@@ -0,0 +1,49 @@
1
+ import { defineTopologyManifest } from "@dreamboard/sdk-types";
2
+
3
+ defineTopologyManifest({
4
+ players: {
5
+ minPlayers: 2,
6
+ maxPlayers: 2,
7
+ optimalPlayers: 2,
8
+ },
9
+ cardSets: [],
10
+ zones: [],
11
+ boardTemplates: [],
12
+ boards: [],
13
+ pieceTypes: [],
14
+ pieceSeeds: [],
15
+ dieTypes: [
16
+ {
17
+ id: "die-holder",
18
+ name: "Die Holder",
19
+ sides: 6,
20
+ slots: [{ id: "staging", name: "Staging" }],
21
+ },
22
+ {
23
+ id: "d6",
24
+ name: "D6",
25
+ sides: 6,
26
+ },
27
+ ],
28
+ dieSeeds: [
29
+ {
30
+ id: "holder-a",
31
+ typeId: "die-holder",
32
+ },
33
+ {
34
+ id: "d6-a",
35
+ typeId: "d6",
36
+ home: {
37
+ type: "slot",
38
+ host: {
39
+ kind: "die",
40
+ id: "holder-a",
41
+ },
42
+ slotId: "missing-slot",
43
+ },
44
+ },
45
+ ],
46
+ resources: [],
47
+ setupOptions: [],
48
+ setupProfiles: [],
49
+ } as const);
@@ -0,0 +1,47 @@
1
+ import { defineTopologyManifest } from "@dreamboard/sdk-types";
2
+
3
+ defineTopologyManifest({
4
+ players: {
5
+ minPlayers: 2,
6
+ maxPlayers: 2,
7
+ optimalPlayers: 2,
8
+ },
9
+ cardSets: [],
10
+ zones: [],
11
+ boardTemplates: [
12
+ {
13
+ id: "square-template",
14
+ name: "Square Template",
15
+ layout: "square",
16
+ boardFieldsSchema: {
17
+ properties: {
18
+ activeEdgeId: { type: "edgeId" },
19
+ },
20
+ },
21
+ spaces: [
22
+ { id: "square-a", row: 0, col: 0 },
23
+ { id: "square-b", row: 0, col: 1 },
24
+ ],
25
+ },
26
+ ],
27
+ boards: [
28
+ {
29
+ id: "square-board",
30
+ name: "Square Board",
31
+ layout: "square",
32
+ scope: "shared",
33
+ templateId: "square-template",
34
+ fields: {
35
+ activeEdgeId: "square-edge:missing",
36
+ },
37
+ spaces: [{ id: "square-a", row: 0, col: 0 }],
38
+ },
39
+ ],
40
+ pieceTypes: [],
41
+ pieceSeeds: [],
42
+ dieTypes: [],
43
+ dieSeeds: [],
44
+ resources: [],
45
+ setupOptions: [],
46
+ setupProfiles: [],
47
+ } as const);
@@ -0,0 +1,47 @@
1
+ import { defineTopologyManifest } from "@dreamboard/sdk-types";
2
+
3
+ defineTopologyManifest({
4
+ players: {
5
+ minPlayers: 2,
6
+ maxPlayers: 2,
7
+ optimalPlayers: 2,
8
+ },
9
+ cardSets: [],
10
+ zones: [],
11
+ boardTemplates: [
12
+ {
13
+ id: "square-template",
14
+ name: "Square Template",
15
+ layout: "square",
16
+ boardFieldsSchema: {
17
+ properties: {
18
+ activeSpaceId: { type: "spaceId" },
19
+ },
20
+ },
21
+ spaces: [
22
+ { id: "square-a", row: 0, col: 0 },
23
+ { id: "square-b", row: 0, col: 1 },
24
+ ],
25
+ },
26
+ ],
27
+ boards: [
28
+ {
29
+ id: "square-board",
30
+ name: "Square Board",
31
+ layout: "square",
32
+ scope: "shared",
33
+ templateId: "square-template",
34
+ fields: {
35
+ activeSpaceId: "missing-space",
36
+ },
37
+ spaces: [{ id: "square-a", row: 0, col: 0 }],
38
+ },
39
+ ],
40
+ pieceTypes: [],
41
+ pieceSeeds: [],
42
+ dieTypes: [],
43
+ dieSeeds: [],
44
+ resources: [],
45
+ setupOptions: [],
46
+ setupProfiles: [],
47
+ } as const);
@@ -0,0 +1,49 @@
1
+ import { defineTopologyManifest } from "@dreamboard/sdk-types";
2
+
3
+ defineTopologyManifest({
4
+ players: {
5
+ minPlayers: 2,
6
+ maxPlayers: 2,
7
+ optimalPlayers: 2,
8
+ },
9
+ cardSets: [],
10
+ zones: [],
11
+ boardTemplates: [
12
+ {
13
+ id: "square-template",
14
+ name: "Square Template",
15
+ layout: "square",
16
+ boardFieldsSchema: {
17
+ properties: {
18
+ activeVertexId: { type: "vertexId" },
19
+ },
20
+ },
21
+ spaces: [
22
+ { id: "square-a", row: 0, col: 0 },
23
+ { id: "square-b", row: 0, col: 1 },
24
+ { id: "square-c", row: 1, col: 0 },
25
+ { id: "square-d", row: 1, col: 1 },
26
+ ],
27
+ },
28
+ ],
29
+ boards: [
30
+ {
31
+ id: "square-board",
32
+ name: "Square Board",
33
+ layout: "square",
34
+ scope: "shared",
35
+ templateId: "square-template",
36
+ fields: {
37
+ activeVertexId: "square-vertex:9,9",
38
+ },
39
+ spaces: [{ id: "square-a", row: 0, col: 0 }],
40
+ },
41
+ ],
42
+ pieceTypes: [],
43
+ pieceSeeds: [],
44
+ dieTypes: [],
45
+ dieSeeds: [],
46
+ resources: [],
47
+ setupOptions: [],
48
+ setupProfiles: [],
49
+ } as const);
@@ -0,0 +1,59 @@
1
+ import { defineTopologyManifest } from "@dreamboard/sdk-types";
2
+
3
+ defineTopologyManifest({
4
+ players: {
5
+ minPlayers: 2,
6
+ maxPlayers: 2,
7
+ optimalPlayers: 2,
8
+ },
9
+ cardSets: [
10
+ {
11
+ id: "main",
12
+ name: "Main",
13
+ type: "manual",
14
+ cardSchema: {
15
+ properties: {},
16
+ },
17
+ cards: [],
18
+ },
19
+ ],
20
+ zones: [],
21
+ boardTemplates: [],
22
+ boards: [
23
+ {
24
+ id: "square-board",
25
+ name: "Square Board",
26
+ layout: "square",
27
+ scope: "shared",
28
+ containerFieldsSchema: {
29
+ properties: {
30
+ anchorSpaceId: {
31
+ type: "spaceId",
32
+ },
33
+ },
34
+ },
35
+ spaces: [
36
+ { id: "square-a", row: 0, col: 0 },
37
+ { id: "square-b", row: 0, col: 1 },
38
+ ],
39
+ containers: [
40
+ {
41
+ id: "slot-a",
42
+ name: "Slot A",
43
+ host: { type: "space", spaceId: "square-a" },
44
+ allowedCardSetIds: ["main"],
45
+ fields: {
46
+ anchorSpaceId: "missing-space",
47
+ },
48
+ },
49
+ ],
50
+ },
51
+ ],
52
+ pieceTypes: [],
53
+ pieceSeeds: [],
54
+ dieTypes: [],
55
+ dieSeeds: [],
56
+ resources: [],
57
+ setupOptions: [],
58
+ setupProfiles: [],
59
+ } as const);
@@ -0,0 +1,49 @@
1
+ import { defineTopologyManifest } from "@dreamboard/sdk-types";
2
+
3
+ defineTopologyManifest({
4
+ players: {
5
+ minPlayers: 2,
6
+ maxPlayers: 2,
7
+ optimalPlayers: 2,
8
+ },
9
+ cardSets: [
10
+ {
11
+ id: "main",
12
+ name: "Main",
13
+ type: "manual",
14
+ cardSchema: {
15
+ properties: {},
16
+ },
17
+ cards: [],
18
+ },
19
+ ],
20
+ zones: [],
21
+ boardTemplates: [],
22
+ boards: [
23
+ {
24
+ id: "square-board",
25
+ name: "Square Board",
26
+ layout: "square",
27
+ scope: "shared",
28
+ spaces: [
29
+ { id: "square-a", row: 0, col: 0 },
30
+ { id: "square-b", row: 0, col: 1 },
31
+ ],
32
+ containers: [
33
+ {
34
+ id: "slot-a",
35
+ name: "Slot A",
36
+ host: { type: "space", spaceId: "missing-space" },
37
+ allowedCardSetIds: ["main"],
38
+ },
39
+ ],
40
+ },
41
+ ],
42
+ pieceTypes: [],
43
+ pieceSeeds: [],
44
+ dieTypes: [],
45
+ dieSeeds: [],
46
+ resources: [],
47
+ setupOptions: [],
48
+ setupProfiles: [],
49
+ } as const);
@@ -0,0 +1,48 @@
1
+ import { defineTopologyManifest } from "@dreamboard/sdk-types";
2
+
3
+ defineTopologyManifest({
4
+ players: {
5
+ minPlayers: 2,
6
+ maxPlayers: 2,
7
+ optimalPlayers: 2,
8
+ },
9
+ cardSets: [],
10
+ zones: [],
11
+ boardTemplates: [],
12
+ boards: [
13
+ {
14
+ id: "square-board",
15
+ name: "Square Board",
16
+ layout: "square",
17
+ scope: "shared",
18
+ relationFieldsSchema: {
19
+ properties: {
20
+ cost: {
21
+ type: "integer",
22
+ },
23
+ },
24
+ },
25
+ spaces: [
26
+ { id: "square-a", row: 0, col: 0 },
27
+ { id: "square-b", row: 0, col: 1 },
28
+ ],
29
+ relations: [
30
+ {
31
+ typeId: "adjacent",
32
+ fromSpaceId: "square-a",
33
+ toSpaceId: "square-b",
34
+ fields: {
35
+ cost: "high",
36
+ },
37
+ },
38
+ ],
39
+ },
40
+ ],
41
+ pieceTypes: [],
42
+ pieceSeeds: [],
43
+ dieTypes: [],
44
+ dieSeeds: [],
45
+ resources: [],
46
+ setupOptions: [],
47
+ setupProfiles: [],
48
+ } as const);
@@ -0,0 +1,48 @@
1
+ import { defineTopologyManifest } from "@dreamboard/sdk-types";
2
+
3
+ defineTopologyManifest({
4
+ players: {
5
+ minPlayers: 2,
6
+ maxPlayers: 2,
7
+ optimalPlayers: 2,
8
+ },
9
+ cardSets: [],
10
+ zones: [],
11
+ boardTemplates: [],
12
+ boards: [
13
+ {
14
+ id: "square-board",
15
+ name: "Square Board",
16
+ layout: "square",
17
+ scope: "shared",
18
+ relationFieldsSchema: {
19
+ properties: {
20
+ cost: {
21
+ type: "integer",
22
+ },
23
+ },
24
+ },
25
+ spaces: [
26
+ { id: "square-a", row: 0, col: 0 },
27
+ { id: "square-b", row: 0, col: 1 },
28
+ ],
29
+ relations: [
30
+ {
31
+ typeId: "adjacent",
32
+ fromSpaceId: "square-a",
33
+ toSpaceId: "missing-space",
34
+ fields: {
35
+ cost: 1,
36
+ },
37
+ },
38
+ ],
39
+ },
40
+ ],
41
+ pieceTypes: [],
42
+ pieceSeeds: [],
43
+ dieTypes: [],
44
+ dieSeeds: [],
45
+ resources: [],
46
+ setupOptions: [],
47
+ setupProfiles: [],
48
+ } as const);
@@ -0,0 +1,44 @@
1
+ import { defineTopologyManifest } from "@dreamboard/sdk-types";
2
+
3
+ defineTopologyManifest({
4
+ players: {
5
+ minPlayers: 2,
6
+ maxPlayers: 2,
7
+ optimalPlayers: 2,
8
+ },
9
+ cardSets: [],
10
+ zones: [],
11
+ boardTemplates: [
12
+ {
13
+ id: "square-template",
14
+ name: "Square Template",
15
+ layout: "square",
16
+ spaceFieldsSchema: {
17
+ properties: {
18
+ terrain: {
19
+ type: "enum",
20
+ enums: ["grass", "water"],
21
+ },
22
+ },
23
+ },
24
+ spaces: [
25
+ {
26
+ id: "square-a",
27
+ row: 0,
28
+ col: 0,
29
+ fields: {
30
+ terrain: "lava",
31
+ },
32
+ },
33
+ ],
34
+ },
35
+ ],
36
+ boards: [],
37
+ pieceTypes: [],
38
+ pieceSeeds: [],
39
+ dieTypes: [],
40
+ dieSeeds: [],
41
+ resources: [],
42
+ setupOptions: [],
43
+ setupProfiles: [],
44
+ } as const);