@mailwoman/cartographer 1.0.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 (100) hide show
  1. package/README.md +3 -0
  2. package/base/buildings.ts +124 -0
  3. package/base/composition.ts +119 -0
  4. package/base/index.ts +10 -0
  5. package/base/layers.ts +52 -0
  6. package/base/terrain.ts +33 -0
  7. package/base/theme.ts +118 -0
  8. package/bdc/index.ts +395 -0
  9. package/coverage/index.ts +89 -0
  10. package/hspa/index.ts +20 -0
  11. package/index.ts +12 -0
  12. package/out/base/buildings.d.ts +11 -0
  13. package/out/base/buildings.d.ts.map +1 -0
  14. package/out/base/buildings.js +109 -0
  15. package/out/base/buildings.js.map +1 -0
  16. package/out/base/composition.d.ts +33 -0
  17. package/out/base/composition.d.ts.map +1 -0
  18. package/out/base/composition.js +86 -0
  19. package/out/base/composition.js.map +1 -0
  20. package/out/base/index.d.ts +10 -0
  21. package/out/base/index.d.ts.map +1 -0
  22. package/out/base/index.js +10 -0
  23. package/out/base/index.js.map +1 -0
  24. package/out/base/layers.d.ts +9 -0
  25. package/out/base/layers.d.ts.map +1 -0
  26. package/out/base/layers.js +49 -0
  27. package/out/base/layers.js.map +1 -0
  28. package/out/base/terrain.d.ts +20 -0
  29. package/out/base/terrain.d.ts.map +1 -0
  30. package/out/base/terrain.js +29 -0
  31. package/out/base/terrain.js.map +1 -0
  32. package/out/base/theme.d.ts +20 -0
  33. package/out/base/theme.d.ts.map +1 -0
  34. package/out/base/theme.js +103 -0
  35. package/out/base/theme.js.map +1 -0
  36. package/out/bdc/index.d.ts +27 -0
  37. package/out/bdc/index.d.ts.map +1 -0
  38. package/out/bdc/index.js +344 -0
  39. package/out/bdc/index.js.map +1 -0
  40. package/out/coverage/index.d.ts +58 -0
  41. package/out/coverage/index.d.ts.map +1 -0
  42. package/out/coverage/index.js +77 -0
  43. package/out/coverage/index.js.map +1 -0
  44. package/out/hspa/index.d.ts +12 -0
  45. package/out/hspa/index.d.ts.map +1 -0
  46. package/out/hspa/index.js +18 -0
  47. package/out/hspa/index.js.map +1 -0
  48. package/out/index.d.ts +12 -0
  49. package/out/index.d.ts.map +1 -0
  50. package/out/index.js +12 -0
  51. package/out/index.js.map +1 -0
  52. package/out/race-dots/index.d.ts +61 -0
  53. package/out/race-dots/index.d.ts.map +1 -0
  54. package/out/race-dots/index.js +59 -0
  55. package/out/race-dots/index.js.map +1 -0
  56. package/out/styles/index.d.ts +8 -0
  57. package/out/styles/index.d.ts.map +1 -0
  58. package/out/styles/index.js +8 -0
  59. package/out/styles/index.js.map +1 -0
  60. package/out/styles/layers.d.ts +33 -0
  61. package/out/styles/layers.d.ts.map +1 -0
  62. package/out/styles/layers.js +108 -0
  63. package/out/styles/layers.js.map +1 -0
  64. package/out/styles/sources.d.ts +22 -0
  65. package/out/styles/sources.d.ts.map +1 -0
  66. package/out/styles/sources.js +12 -0
  67. package/out/styles/sources.js.map +1 -0
  68. package/out/tiger/index.d.ts +11 -0
  69. package/out/tiger/index.d.ts.map +1 -0
  70. package/out/tiger/index.js +64 -0
  71. package/out/tiger/index.js.map +1 -0
  72. package/out/tiles/api.d.ts +20 -0
  73. package/out/tiles/api.d.ts.map +1 -0
  74. package/out/tiles/api.js +41 -0
  75. package/out/tiles/api.js.map +1 -0
  76. package/out/tiles/coords.d.ts +16 -0
  77. package/out/tiles/coords.d.ts.map +1 -0
  78. package/out/tiles/coords.js +34 -0
  79. package/out/tiles/coords.js.map +1 -0
  80. package/out/tiles/index.d.ts +9 -0
  81. package/out/tiles/index.d.ts.map +1 -0
  82. package/out/tiles/index.js +9 -0
  83. package/out/tiles/index.js.map +1 -0
  84. package/out/tiles/schema.d.ts +41 -0
  85. package/out/tiles/schema.d.ts.map +1 -0
  86. package/out/tiles/schema.js +7 -0
  87. package/out/tiles/schema.js.map +1 -0
  88. package/out/tsconfig.tsbuildinfo +1 -0
  89. package/package.json +46 -0
  90. package/race-dots/index.ts +68 -0
  91. package/styles/index.ts +8 -0
  92. package/styles/layers.ts +148 -0
  93. package/styles/sources.ts +26 -0
  94. package/tiger/index.ts +71 -0
  95. package/tiles/api.ts +53 -0
  96. package/tiles/coords.ts +46 -0
  97. package/tiles/index.ts +9 -0
  98. package/tiles/schema.ts +42 -0
  99. package/tsconfig.json +22 -0
  100. package/typedoc.json +4 -0
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ *
6
+ * Race-by-dot-density overlay — the Cooper Center "Racial Dot Map" reading, on the demo. One dot
7
+ * per ~N people, placed at random inside its Census block (built by `scripts/census/race-dots.ts`
8
+ * + tippecanoe), colored by 2020 P.L. 94-171 race/ethnicity category.
9
+ *
10
+ * The PMTiles ships a single `dots` source-layer carrying a `cat` property; we expose each category
11
+ * as its OWN default-off circle layer (filtered on `cat`) so the demo's LayerToggleControl gives
12
+ * each its own checkbox — show the full mosaic, or isolate one group's geography, no extra UI.
13
+ * Same idiom as the coverage overlay.
14
+ *
15
+ * Served as XYZ vector tiles by the tile worker from `nexus-assets/tiles/race-dots-la.pmtiles`; the
16
+ * consumer passes its TileJSON URL (`tiles.sister.software/race-dots-la.json`) to
17
+ * `createRaceDotsSource`.
18
+ *
19
+ * The dot is a _representation_, not a record: a random position inside the block, standing in for
20
+ * ~N real people of that category. It says nothing about any individual address.
21
+ */
22
+ import { TileSetSourceID } from "../styles/sources.js";
23
+ export const RaceDotsTileSetID = TileSetSourceID("race-dots-la");
24
+ /** The single source-layer the race-dots PMTiles ships (tippecanoe `-l dots`). */
25
+ export const RACE_DOTS_SOURCE_LAYER = "dots";
26
+ /** The togglable categories. Each becomes its own default-off layer + LayerToggleControl checkbox. */
27
+ export const RaceDotsCategories = [
28
+ { id: "race-dots-white", label: "Race · White", color: "#1f78b4", match: ["white"] },
29
+ { id: "race-dots-black", label: "Race · Black", color: "#33a02c", match: ["black"] },
30
+ { id: "race-dots-hispanic", label: "Race · Hispanic", color: "#ff7f00", match: ["hispanic"] },
31
+ { id: "race-dots-asian", label: "Race · Asian", color: "#e31a1c", match: ["asian"] },
32
+ { id: "race-dots-other", label: "Race · Other", color: "#8c6d31", match: ["aian", "nhpi", "other", "multi"] },
33
+ ];
34
+ /** Build the race-dots source spec from the tile worker's TileJSON endpoint. */
35
+ export function createRaceDotsSource(url) {
36
+ return { type: "vector", url };
37
+ }
38
+ function dotLayer(id, color, cats) {
39
+ return {
40
+ id,
41
+ type: "circle",
42
+ source: RaceDotsTileSetID,
43
+ "source-layer": RACE_DOTS_SOURCE_LAYER,
44
+ // Default OFF — an overlay, surfaced via the layer toggle, never on by default.
45
+ layout: { visibility: "none" },
46
+ filter: cats.length === 1 ? ["==", ["get", "cat"], cats[0]] : ["in", ["get", "cat"], ["literal", cats]],
47
+ paint: {
48
+ "circle-radius": ["interpolate", ["linear"], ["zoom"], 4, 0.7, 9, 1.7, 12, 2.8, 16, 4.5],
49
+ "circle-color": color,
50
+ "circle-opacity": 0.85,
51
+ },
52
+ };
53
+ }
54
+ /**
55
+ * One default-off circle layer per category. Plain MapLibre specs — the demo adds them imperatively
56
+ * on map-load with a `beforeId` of the first symbol layer, so the dots sit beneath place labels.
57
+ */
58
+ export const RaceDotsLayers = RaceDotsCategories.map((c) => dotLayer(c.id, c.color, c.match));
59
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../race-dots/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC,cAAc,CAAC,CAAA;AAEhE,kFAAkF;AAClF,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAA;AAE5C,sGAAsG;AACtG,MAAM,CAAC,MAAM,kBAAkB,GAAG;IACjC,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE;IACpF,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE;IACpF,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE;IAC7F,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE;IACpF,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;CACpG,CAAA;AAEV,gFAAgF;AAChF,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC/C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAA;AAC/B,CAAC;AAED,SAAS,QAAQ,CAAC,EAAU,EAAE,KAAa,EAAE,IAAuB;IACnE,OAAO;QACN,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,iBAAiB;QACzB,cAAc,EAAE,sBAAsB;QACtC,gFAAgF;QAChF,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE;QAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACxG,KAAK,EAAE;YACN,eAAe,EAAE,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;YACxF,cAAc,EAAE,KAAK;YACrB,gBAAgB,EAAE,IAAI;SACtB;KACD,CAAA;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAA+B,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACtF,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAChC,CAAA"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ export * from "./layers.js";
7
+ export * from "./sources.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../styles/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ export * from "./layers.js";
7
+ export * from "./sources.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../styles/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ import type { LayerSpecification } from "@maplibre/maplibre-gl-style-spec";
7
+ declare const kNext: unique symbol;
8
+ declare const kPrev: unique symbol;
9
+ /**
10
+ * Declares a namespaced layer identifier.
11
+ */
12
+ export declare function LayerID<Namespace extends string, LayerID extends string>(namespace: Namespace, layer: LayerID): `${Namespace}/${LayerID}`;
13
+ export type LayerSpecificationListInput<T extends LayerSpecification = LayerSpecification> = T & ({
14
+ beforeID?: string;
15
+ afterID?: never;
16
+ } | {
17
+ afterID?: string;
18
+ beforeID?: never;
19
+ });
20
+ export type LayerSpecificationListItem<T extends LayerSpecification = LayerSpecification> = T & {
21
+ [kNext]?: LayerSpecificationListItem;
22
+ [kPrev]?: LayerSpecificationListItem;
23
+ };
24
+ export declare class LayerSpecificationList {
25
+ #private;
26
+ constructor(layers: LayerSpecification[]);
27
+ takeLayer(fromID?: string): Iterable<LayerSpecificationListItem>;
28
+ [Symbol.iterator](): Iterator<LayerSpecificationListItem>;
29
+ insert(input: LayerSpecificationListInput): void;
30
+ remove(layerID: string): void;
31
+ }
32
+ export {};
33
+ //# sourceMappingURL=layers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layers.d.ts","sourceRoot":"","sources":["../../styles/layers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AAE1E,QAAA,MAAM,KAAK,EAAE,OAAO,MAAuB,CAAA;AAC3C,QAAA,MAAM,KAAK,EAAE,OAAO,MAAuB,CAAA;AAE3C;;GAEG;AACH,wBAAgB,OAAO,CAAC,SAAS,SAAS,MAAM,EAAE,OAAO,SAAS,MAAM,EACvE,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,OAAO,GACZ,GAAG,SAAS,IAAI,OAAO,EAAE,CAE3B;AAED,MAAM,MAAM,2BAA2B,CAAC,CAAC,SAAS,kBAAkB,GAAG,kBAAkB,IAAI,CAAC,GAC7F,CAAC;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,CAAA;AAElF,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,kBAAkB,GAAG,kBAAkB,IAAI,CAAC,GAAG;IAC/F,CAAC,KAAK,CAAC,CAAC,EAAE,0BAA0B,CAAA;IACpC,CAAC,KAAK,CAAC,CAAC,EAAE,0BAA0B,CAAA;CACpC,CAAA;AAED,qBAAa,sBAAsB;;gBAItB,MAAM,EAAE,kBAAkB,EAAE;IAyBhC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,0BAA0B,CAAC;IAsBhE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,0BAA0B,CAAC;IAI1D,MAAM,CAAC,KAAK,EAAE,2BAA2B;IA6CzC,MAAM,CAAC,OAAO,EAAE,MAAM;CAiB7B"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ import { ResourceError } from "@mailwoman/core/errors";
7
+ const kNext = Symbol("next");
8
+ const kPrev = Symbol("prev");
9
+ /**
10
+ * Declares a namespaced layer identifier.
11
+ */
12
+ export function LayerID(namespace, layer) {
13
+ return `${namespace}/${layer}`;
14
+ }
15
+ export class LayerSpecificationList {
16
+ #layersByID = new Map();
17
+ #headLayer;
18
+ constructor(layers) {
19
+ if (layers.length === 0) {
20
+ throw new Error("No layers provided");
21
+ }
22
+ layers.forEach((item, index) => {
23
+ const prev = layers[index - 1];
24
+ const next = layers[index + 1];
25
+ if (prev) {
26
+ prev[kNext] = item;
27
+ }
28
+ if (next) {
29
+ next[kPrev] = item;
30
+ }
31
+ this.#layersByID.set(item.id, item);
32
+ if (index === 0) {
33
+ this.#headLayer = item;
34
+ }
35
+ });
36
+ }
37
+ *takeLayer(fromID) {
38
+ let item;
39
+ if (fromID) {
40
+ item = this.#layersByID.get(fromID);
41
+ if (!item) {
42
+ throw ResourceError.from(404, `Layer with ID ${fromID} not found`);
43
+ }
44
+ }
45
+ else {
46
+ if (!this.#headLayer)
47
+ return;
48
+ item = this.#headLayer;
49
+ }
50
+ while (item) {
51
+ yield item;
52
+ item = item[kNext];
53
+ }
54
+ }
55
+ *[Symbol.iterator]() {
56
+ yield* this.takeLayer();
57
+ }
58
+ insert(input) {
59
+ const layerToInsert = input;
60
+ if (input.beforeID && input.afterID) {
61
+ throw ResourceError.from(400, `Layer (${layerToInsert.id}) cannot provide both \`beforeID\` and \`afterID\``);
62
+ }
63
+ if (input.beforeID) {
64
+ const beforeLayer = this.#layersByID.get(input.beforeID);
65
+ if (!beforeLayer) {
66
+ throw ResourceError.from(404, `Cannot insert layer (${input.id}) before non-existent layer (${input.beforeID})`);
67
+ }
68
+ const prev = beforeLayer[kPrev];
69
+ if (prev) {
70
+ prev[kNext] = layerToInsert;
71
+ }
72
+ beforeLayer[kPrev] = layerToInsert;
73
+ layerToInsert[kNext] = beforeLayer;
74
+ }
75
+ else if (input.afterID) {
76
+ const afterLayer = this.#layersByID.get(input.afterID);
77
+ if (!afterLayer) {
78
+ throw ResourceError.from(404, `Cannot insert layer (${input.id}) after non-existent layer (${input.afterID})`);
79
+ }
80
+ const next = afterLayer[kNext];
81
+ if (next) {
82
+ next[kPrev] = layerToInsert;
83
+ layerToInsert[kNext] = next;
84
+ }
85
+ afterLayer[kNext] = layerToInsert;
86
+ layerToInsert[kPrev] = afterLayer;
87
+ }
88
+ else {
89
+ throw ResourceError.from(400, `Layer (${input.id}) must provide either \`beforeID\` or \`afterID\``);
90
+ }
91
+ this.#layersByID.set(layerToInsert.id, layerToInsert);
92
+ }
93
+ remove(layerID) {
94
+ const item = this.#layersByID.get(layerID);
95
+ if (!item)
96
+ return;
97
+ const prev = item[kPrev];
98
+ const next = item[kNext];
99
+ if (prev) {
100
+ prev[kNext] = next;
101
+ }
102
+ if (next) {
103
+ next[kPrev] = prev;
104
+ }
105
+ this.#layersByID.delete(layerID);
106
+ }
107
+ }
108
+ //# sourceMappingURL=layers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layers.js","sourceRoot":"","sources":["../../styles/layers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ import type { SourceSpecification } from "maplibre-gl";
7
+ import type { Tagged } from "type-fest";
8
+ /**
9
+ * The tilesets available in the Nexus Tile API.
10
+ */
11
+ export type TileSetSourceID<T extends string = string> = Tagged<string, "TileSetSourceID", T>;
12
+ /**
13
+ * Declares a tileset identifier.
14
+ */
15
+ export declare function TileSetSourceID<T extends string>(value: T): TileSetSourceID<T>;
16
+ /**
17
+ * Vector source specifications for each tileset.
18
+ */
19
+ export type TileSetSourceRecord = {
20
+ [T in TileSetSourceID]: SourceSpecification;
21
+ };
22
+ //# sourceMappingURL=sources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sources.d.ts","sourceRoot":"","sources":["../../styles/sources.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAIvC;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAA;AAC7F;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAE9E;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;KAAG,CAAC,IAAI,eAAe,GAAG,mBAAmB;CAAE,CAAA"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ /**
7
+ * Declares a tileset identifier.
8
+ */
9
+ export function TileSetSourceID(value) {
10
+ return value;
11
+ }
12
+ //# sourceMappingURL=sources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../styles/sources.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH;;GAEG;AACH,MAAM,UAAU,eAAe,CAAmB,KAAQ;IACzD,OAAO,KAAsC,CAAA;AAC9C,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ import type { LayerSpecificationListInput } from "../styles/layers.js";
7
+ import { TileSetSourceID } from "../styles/sources.js";
8
+ export declare const TIGERTractsTileSetID: TileSetSourceID<"tiger-tracts">;
9
+ export declare const TIGERBlocksTileSetID: TileSetSourceID<"tiger-blocks">;
10
+ export declare const TIGERLayers: LayerSpecificationListInput[];
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../tiger/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,eAAO,MAAM,oBAAoB,iCAAkC,CAAA;AACnE,eAAO,MAAM,oBAAoB,iCAAkC,CAAA;AAEnE,eAAO,MAAM,WAAW,EAAE,2BAA2B,EAyDpD,CAAA"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ import { HillsLayerID } from "../base/layers.js";
7
+ import { TileSetSourceID } from "../styles/sources.js";
8
+ export const TIGERTractsTileSetID = TileSetSourceID("tiger-tracts");
9
+ export const TIGERBlocksTileSetID = TileSetSourceID("tiger-blocks");
10
+ export const TIGERLayers = [
11
+ {
12
+ afterID: HillsLayerID,
13
+ metadata: {
14
+ queryable: false,
15
+ },
16
+ id: "boundary-tracts",
17
+ "source-layer": "tracts",
18
+ source: TIGERTractsTileSetID,
19
+ type: "line",
20
+ filter: [">=", ["get", "ALAND"], 0],
21
+ maxzoom: 9,
22
+ paint: {
23
+ "line-color": "white",
24
+ "line-width": 1,
25
+ "line-opacity": [
26
+ // We fade out the outline at higher zoom levels
27
+ "interpolate",
28
+ ["linear"],
29
+ ["zoom"],
30
+ 5,
31
+ 0.01,
32
+ 10,
33
+ 0.25,
34
+ ],
35
+ },
36
+ },
37
+ {
38
+ beforeID: "water",
39
+ metadata: {
40
+ queryable: false,
41
+ },
42
+ id: "boundary-blocks",
43
+ "source-layer": "blocks",
44
+ source: TIGERBlocksTileSetID,
45
+ type: "line",
46
+ filter: [">=", ["get", "ALAND"], 0],
47
+ minzoom: 9,
48
+ paint: {
49
+ "line-color": "orange",
50
+ "line-width": 1,
51
+ "line-opacity": [
52
+ // We fade out the outline at higher zoom levels
53
+ "interpolate",
54
+ ["linear"],
55
+ ["zoom"],
56
+ 9,
57
+ 0.01,
58
+ 16,
59
+ 0.5,
60
+ ],
61
+ },
62
+ },
63
+ ];
64
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../tiger/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAe,CAAC,cAAc,CAAC,CAAA;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAe,CAAC,cAAc,CAAC,CAAA;AAEnE,MAAM,CAAC,MAAM,WAAW,GAAkC;IACzD;QACC,OAAO,EAAE,YAAY;QACrB,QAAQ,EAAE;YACT,SAAS,EAAE,KAAK;SAChB;QAED,EAAE,EAAE,iBAAiB;QACrB,cAAc,EAAE,QAAQ;QACxB,MAAM,EAAE,oBAAoB;QAC5B,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,EAAE,CAAC;QACV,KAAK,EAAE;YACN,YAAY,EAAE,OAAO;YACrB,YAAY,EAAE,CAAC;YAEf,cAAc,EAAE;gBACf,gDAAgD;gBAChD,aAAa;gBACb,CAAC,QAAQ,CAAC;gBACV,CAAC,MAAM,CAAC;gBACR,CAAC;gBACD,IAAI;gBACJ,EAAE;gBACF,IAAI;aACJ;SACD;KACD;IAED;QACC,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE;YACT,SAAS,EAAE,KAAK;SAChB;QACD,EAAE,EAAE,iBAAiB;QACrB,cAAc,EAAE,QAAQ;QACxB,MAAM,EAAE,oBAAoB;QAC5B,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,EAAE,CAAC;QACV,KAAK,EAAE;YACN,YAAY,EAAE,QAAQ;YACtB,YAAY,EAAE,CAAC;YAEf,cAAc,EAAE;gBACf,gDAAgD;gBAChD,aAAa;gBACb,CAAC,QAAQ,CAAC;gBACV,CAAC,MAAM,CAAC;gBACR,CAAC;gBACD,IAAI;gBACJ,EAAE;gBACF,GAAG;aACH;SACD;KACD;CACD,CAAA"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ import { APIClient } from "@mailwoman/core/api";
7
+ import type { VectorSourceSpecification } from "maplibre-gl";
8
+ import type { TileSetSourceID, TileSetSourceRecord } from "../styles/sources.js";
9
+ /**
10
+ * API Client for fetching Protomap tile data.
11
+ */
12
+ export declare const TileAPI: APIClient<{
13
+ displayName: string;
14
+ axios: {
15
+ baseURL: string;
16
+ };
17
+ }>;
18
+ export declare function fetchTileSetSourceSpec(tileSetID: TileSetSourceID): Promise<[TileSetSourceID, VectorSourceSpecification]>;
19
+ export declare function fetchTileSetSources(tileSetIDs: TileSetSourceID[]): Promise<TileSetSourceRecord>;
20
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../tiles/api.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAqB,MAAM,qBAAqB,CAAA;AAClE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAGhF;;GAEG;AACH,eAAO,MAAM,OAAO;;;;;EAKlB,CAAA;AAEF,wBAAgB,sBAAsB,CACrC,SAAS,EAAE,eAAe,GACxB,OAAO,CAAC,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAC,CAgBvD;AAED,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAWrG"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ import { APIClient, pluckResponseData } from "@mailwoman/core/api";
7
+ /**
8
+ * API Client for fetching Protomap tile data.
9
+ */
10
+ export const TileAPI = new APIClient({
11
+ displayName: "TileAPI",
12
+ axios: {
13
+ baseURL: "https://tiles.sister.software",
14
+ },
15
+ });
16
+ export function fetchTileSetSourceSpec(tileSetID) {
17
+ return TileAPI.fetch({ url: `/${tileSetID}.json` })
18
+ .then(pluckResponseData)
19
+ .then((metadata) => {
20
+ const sourceSpec = {
21
+ type: "vector",
22
+ scheme: metadata.scheme,
23
+ tiles: metadata.tiles,
24
+ minzoom: metadata.minzoom,
25
+ maxzoom: metadata.maxzoom,
26
+ attribution: metadata.attribution || "Sister Software. et al.",
27
+ bounds: metadata.bounds,
28
+ };
29
+ return [tileSetID, sourceSpec];
30
+ });
31
+ }
32
+ export async function fetchTileSetSources(tileSetIDs) {
33
+ const tileSetPromises = tileSetIDs.map(fetchTileSetSourceSpec);
34
+ const tileSetPairs = await Promise.all(tileSetPromises);
35
+ const tileSetSources = {};
36
+ for (const [tileSetID, sourceSpec] of tileSetPairs) {
37
+ tileSetSources[tileSetID] = sourceSpec;
38
+ }
39
+ return tileSetSources;
40
+ }
41
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../tiles/api.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAKlE;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC;IACpC,WAAW,EAAE,SAAS;IACtB,KAAK,EAAE;QACN,OAAO,EAAE,+BAA+B;KACxC;CACD,CAAC,CAAA;AAEF,MAAM,UAAU,sBAAsB,CACrC,SAA0B;IAE1B,OAAO,OAAO,CAAC,KAAK,CAAW,EAAE,GAAG,EAAE,IAAI,SAAS,OAAO,EAAE,CAAC;SAC3D,IAAI,CAAC,iBAAiB,CAAC;SACvB,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;QAClB,MAAM,UAAU,GAA8B;YAC7C,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,yBAAyB;YAC9D,MAAM,EAAE,QAAQ,CAAC,MAAM;SACvB,CAAA;QAED,OAAO,CAAC,SAAS,EAAE,UAAU,CAAU,CAAA;IACxC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,UAA6B;IACtE,MAAM,eAAe,GAAG,UAAU,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;IAE9D,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IACvD,MAAM,cAAc,GAAwB,EAAE,CAAA;IAE9C,KAAK,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,YAAY,EAAE,CAAC;QACpD,cAAc,CAAC,SAAS,CAAC,GAAG,UAAU,CAAA;IACvC,CAAC;IAED,OAAO,cAAc,CAAA;AACtB,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ /**
7
+ * Literal type for a tile coord array.
8
+ */
9
+ export type TileCoords = [zoom: number, xCoord: number, yCoord: number];
10
+ export declare function parseTileCoordParams({ z, x, y }: Record<string, string | undefined>): TileCoords | null;
11
+ export declare function pointToTileFraction(zoom: number, longitude: number, latitude: number): TileCoords;
12
+ /**
13
+ * Get the tile for a point at a specified zoom level
14
+ */
15
+ export declare function pointToTile(zoom: number, longitude: number, latitude: number): TileCoords;
16
+ //# sourceMappingURL=coords.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coords.d.ts","sourceRoot":"","sources":["../../tiles/coords.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAEvE,wBAAgB,oBAAoB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,UAAU,GAAG,IAAI,CAMvG;AAMD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,CAajG;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,CAIzF"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ export function parseTileCoordParams({ z, x, y }) {
7
+ const coords = [z, x, y].map((n) => parseInt(n, 10)).filter((n) => !isNaN(n));
8
+ if (coords.length !== 3)
9
+ return null;
10
+ return coords;
11
+ }
12
+ /*
13
+ * Get the precise fractional tile location for a point at a zoom level
14
+ *
15
+ */
16
+ export function pointToTileFraction(zoom, longitude, latitude) {
17
+ const sin = Math.sin((latitude * Math.PI) / 180);
18
+ const z2 = Math.pow(2, zoom);
19
+ let x = z2 * (longitude / 360 + 0.5);
20
+ const y = z2 * (0.5 - (0.25 * Math.log((1 + sin) / (1 - sin))) / Math.PI);
21
+ // Wrap Tile X
22
+ x = x % z2;
23
+ if (x < 0)
24
+ x = x + z2;
25
+ return [zoom, x, y];
26
+ }
27
+ /**
28
+ * Get the tile for a point at a specified zoom level
29
+ */
30
+ export function pointToTile(zoom, longitude, latitude) {
31
+ const [, x, y] = pointToTileFraction(zoom, longitude, latitude);
32
+ return [zoom, Math.floor(x), Math.floor(y)];
33
+ }
34
+ //# sourceMappingURL=coords.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coords.js","sourceRoot":"","sources":["../../tiles/coords.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,UAAU,oBAAoB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAsC;IACnF,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAE9E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAEpC,OAAO,MAAoB,CAAA;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,SAAiB,EAAE,QAAgB;IACpF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAA;IAChD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAC5B,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,GAAG,GAAG,GAAG,GAAG,CAAC,CAAA;IAEpC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;IAEzE,cAAc;IACd,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;IAEV,IAAI,CAAC,GAAG,CAAC;QAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;IAErB,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,SAAiB,EAAE,QAAgB;IAC5E,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;IAE/D,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5C,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ export * from "./api.js";
7
+ export * from "./coords.js";
8
+ export * from "./schema.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../tiles/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ export * from "./api.js";
7
+ export * from "./coords.js";
8
+ export * from "./schema.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../tiles/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ /**
7
+ * TileJSON is an open standard for representing map metadata.
8
+ *
9
+ * @see {@link https://github.com/mapbox/tilejson-spec TileJSON Specification}
10
+ */
11
+ export interface TileJSON {
12
+ /**
13
+ * The version of the TileJSON spec that is implemented by this JSON object.
14
+ *
15
+ * @default "3.0.0"
16
+ */
17
+ tilejson: string;
18
+ scheme: "xyz";
19
+ tiles: string[];
20
+ vector_layers: TileJSONVectorLayer[];
21
+ attribution?: string;
22
+ description?: string;
23
+ name: string;
24
+ version: string;
25
+ bounds: [minLon: number, minLat: number, maxLon: number, maxLat: number];
26
+ center: [centerLon: number, centerLat: number, centerZoom: number];
27
+ minzoom: number;
28
+ maxzoom: number;
29
+ }
30
+ /**
31
+ * A vector layer definition for a TileJSON object.
32
+ */
33
+ export interface TileJSONVectorLayer {
34
+ description?: string;
35
+ id: string;
36
+ fields: Record<string, string>;
37
+ source: string;
38
+ minzoom?: number;
39
+ maxzoom?: number;
40
+ }
41
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../tiles/schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACxB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,KAAK,CAAA;IACb,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,aAAa,EAAE,mBAAmB,EAAE,CAAA;IACpC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACxE,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;IAClE,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../tiles/schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}