worldorbit 2.5.2

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 (113) hide show
  1. package/LICENSE.md +5 -0
  2. package/README.md +250 -0
  3. package/dist/browser/core/dist/index.js +4009 -0
  4. package/dist/browser/markdown/dist/index.js +3951 -0
  5. package/dist/browser/viewer/dist/index.js +5981 -0
  6. package/dist/constants.d.ts +8 -0
  7. package/dist/constants.js +84 -0
  8. package/dist/errors.d.ts +7 -0
  9. package/dist/errors.js +16 -0
  10. package/dist/index.d.ts +18 -0
  11. package/dist/index.js +25 -0
  12. package/dist/normalize.d.ts +2 -0
  13. package/dist/normalize.js +243 -0
  14. package/dist/parse.d.ts +2 -0
  15. package/dist/parse.js +126 -0
  16. package/dist/render.d.ts +6 -0
  17. package/dist/render.js +683 -0
  18. package/dist/tokenize.d.ts +4 -0
  19. package/dist/tokenize.js +68 -0
  20. package/dist/types.d.ts +208 -0
  21. package/dist/types.js +1 -0
  22. package/dist/unpkg/core/dist/index.js +4081 -0
  23. package/dist/unpkg/markdown/dist/index.js +3979 -0
  24. package/dist/unpkg/test.html +1 -0
  25. package/dist/unpkg/viewer/dist/index.js +6038 -0
  26. package/dist/unpkg/worldorbit-core.min.js +5 -0
  27. package/dist/unpkg/worldorbit-markdown.min.js +81 -0
  28. package/dist/unpkg/worldorbit-viewer.min.js +232 -0
  29. package/dist/unpkg/worldorbit.d.ts +2 -0
  30. package/dist/unpkg/worldorbit.js +2 -0
  31. package/dist/unpkg/worldorbit.min.js +236 -0
  32. package/dist/validate.d.ts +2 -0
  33. package/dist/validate.js +31 -0
  34. package/dist/viewer-state.d.ts +16 -0
  35. package/dist/viewer-state.js +130 -0
  36. package/dist/viewer.d.ts +2 -0
  37. package/dist/viewer.js +434 -0
  38. package/package.json +64 -0
  39. package/packages/core/README.md +13 -0
  40. package/packages/core/dist/atlas-edit.d.ts +11 -0
  41. package/packages/core/dist/atlas-edit.js +210 -0
  42. package/packages/core/dist/diagnostics.d.ts +10 -0
  43. package/packages/core/dist/diagnostics.js +109 -0
  44. package/packages/core/dist/draft-parse.d.ts +3 -0
  45. package/packages/core/dist/draft-parse.js +642 -0
  46. package/packages/core/dist/draft.d.ts +15 -0
  47. package/packages/core/dist/draft.js +343 -0
  48. package/packages/core/dist/errors.d.ts +7 -0
  49. package/packages/core/dist/errors.js +16 -0
  50. package/packages/core/dist/format.d.ts +4 -0
  51. package/packages/core/dist/format.js +364 -0
  52. package/packages/core/dist/index.d.ts +28 -0
  53. package/packages/core/dist/index.js +44 -0
  54. package/packages/core/dist/load.d.ts +4 -0
  55. package/packages/core/dist/load.js +130 -0
  56. package/packages/core/dist/markdown.d.ts +2 -0
  57. package/packages/core/dist/markdown.js +37 -0
  58. package/packages/core/dist/normalize.d.ts +2 -0
  59. package/packages/core/dist/normalize.js +304 -0
  60. package/packages/core/dist/parse.d.ts +2 -0
  61. package/packages/core/dist/parse.js +133 -0
  62. package/packages/core/dist/scene.d.ts +3 -0
  63. package/packages/core/dist/scene.js +1484 -0
  64. package/packages/core/dist/schema.d.ts +8 -0
  65. package/packages/core/dist/schema.js +298 -0
  66. package/packages/core/dist/tokenize.d.ts +4 -0
  67. package/packages/core/dist/tokenize.js +68 -0
  68. package/packages/core/dist/types.d.ts +382 -0
  69. package/packages/core/dist/types.js +1 -0
  70. package/packages/core/dist/validate.d.ts +2 -0
  71. package/packages/core/dist/validate.js +56 -0
  72. package/packages/editor/dist/editor.d.ts +2 -0
  73. package/packages/editor/dist/editor.js +2620 -0
  74. package/packages/editor/dist/index.d.ts +2 -0
  75. package/packages/editor/dist/index.js +1 -0
  76. package/packages/editor/dist/types.d.ts +53 -0
  77. package/packages/editor/dist/types.js +1 -0
  78. package/packages/markdown/README.md +9 -0
  79. package/packages/markdown/dist/html.d.ts +3 -0
  80. package/packages/markdown/dist/html.js +57 -0
  81. package/packages/markdown/dist/index.d.ts +4 -0
  82. package/packages/markdown/dist/index.js +3 -0
  83. package/packages/markdown/dist/rehype.d.ts +10 -0
  84. package/packages/markdown/dist/rehype.js +49 -0
  85. package/packages/markdown/dist/remark.d.ts +9 -0
  86. package/packages/markdown/dist/remark.js +28 -0
  87. package/packages/markdown/dist/types.d.ts +11 -0
  88. package/packages/markdown/dist/types.js +1 -0
  89. package/packages/viewer/README.md +12 -0
  90. package/packages/viewer/dist/atlas-state.d.ts +12 -0
  91. package/packages/viewer/dist/atlas-state.js +251 -0
  92. package/packages/viewer/dist/atlas-viewer.d.ts +2 -0
  93. package/packages/viewer/dist/atlas-viewer.js +448 -0
  94. package/packages/viewer/dist/custom-element.d.ts +1 -0
  95. package/packages/viewer/dist/custom-element.js +64 -0
  96. package/packages/viewer/dist/embed.d.ts +20 -0
  97. package/packages/viewer/dist/embed.js +138 -0
  98. package/packages/viewer/dist/index.d.ts +9 -0
  99. package/packages/viewer/dist/index.js +8 -0
  100. package/packages/viewer/dist/minimap.d.ts +3 -0
  101. package/packages/viewer/dist/minimap.js +63 -0
  102. package/packages/viewer/dist/render.d.ts +6 -0
  103. package/packages/viewer/dist/render.js +585 -0
  104. package/packages/viewer/dist/theme.d.ts +4 -0
  105. package/packages/viewer/dist/theme.js +98 -0
  106. package/packages/viewer/dist/tooltip.d.ts +3 -0
  107. package/packages/viewer/dist/tooltip.js +154 -0
  108. package/packages/viewer/dist/types.d.ts +256 -0
  109. package/packages/viewer/dist/types.js +1 -0
  110. package/packages/viewer/dist/viewer-state.d.ts +19 -0
  111. package/packages/viewer/dist/viewer-state.js +162 -0
  112. package/packages/viewer/dist/viewer.d.ts +2 -0
  113. package/packages/viewer/dist/viewer.js +1156 -0
@@ -0,0 +1,8 @@
1
+ import type { UnitFamily, WorldOrbitFieldSchema, WorldOrbitObjectType } from "./types.js";
2
+ export declare const WORLDORBIT_OBJECT_TYPES: Set<WorldOrbitObjectType>;
3
+ export declare const WORLDORBIT_FIELD_SCHEMAS: ReadonlyMap<string, WorldOrbitFieldSchema>;
4
+ export declare const WORLDORBIT_FIELD_KEYS: Set<string>;
5
+ export declare function getFieldSchema(key: string): WorldOrbitFieldSchema | undefined;
6
+ export declare function isKnownFieldKey(key: string): boolean;
7
+ export declare function supportsObjectType(schema: WorldOrbitFieldSchema, objectType: WorldOrbitObjectType): boolean;
8
+ export declare function unitFamilyAllowsUnit(family: UnitFamily, unit: string | null): boolean;
@@ -0,0 +1,298 @@
1
+ const ALL_OBJECTS = [
2
+ "system",
3
+ "star",
4
+ "planet",
5
+ "moon",
6
+ "belt",
7
+ "asteroid",
8
+ "comet",
9
+ "ring",
10
+ "structure",
11
+ "phenomenon",
12
+ ];
13
+ const NON_SYSTEM_OBJECTS = ALL_OBJECTS.filter((objectType) => objectType !== "system");
14
+ const IMAGE_OBJECTS = [
15
+ "star",
16
+ "planet",
17
+ "moon",
18
+ "asteroid",
19
+ "comet",
20
+ "structure",
21
+ "phenomenon",
22
+ ];
23
+ const ANCHORED_OBJECTS = ["structure", "phenomenon"];
24
+ const ORBITAL_OBJECTS = [
25
+ "star",
26
+ "planet",
27
+ "moon",
28
+ "belt",
29
+ "asteroid",
30
+ "comet",
31
+ "ring",
32
+ "structure",
33
+ "phenomenon",
34
+ ];
35
+ const FREE_OBJECTS = [
36
+ "star",
37
+ "planet",
38
+ "moon",
39
+ "belt",
40
+ "asteroid",
41
+ "comet",
42
+ "ring",
43
+ "structure",
44
+ "phenomenon",
45
+ ];
46
+ function createField(key, options) {
47
+ return {
48
+ key,
49
+ ...options,
50
+ };
51
+ }
52
+ export const WORLDORBIT_OBJECT_TYPES = new Set(ALL_OBJECTS);
53
+ export const WORLDORBIT_FIELD_SCHEMAS = new Map([
54
+ createField("orbit", {
55
+ kind: "string",
56
+ placement: true,
57
+ arity: "single",
58
+ objectTypes: ORBITAL_OBJECTS,
59
+ }),
60
+ createField("distance", {
61
+ kind: "unit",
62
+ placement: true,
63
+ arity: "single",
64
+ objectTypes: ORBITAL_OBJECTS,
65
+ unitFamily: "distance",
66
+ }),
67
+ createField("semiMajor", {
68
+ kind: "unit",
69
+ placement: true,
70
+ arity: "single",
71
+ objectTypes: ORBITAL_OBJECTS,
72
+ unitFamily: "distance",
73
+ }),
74
+ createField("eccentricity", {
75
+ kind: "number",
76
+ placement: true,
77
+ arity: "single",
78
+ objectTypes: ORBITAL_OBJECTS,
79
+ }),
80
+ createField("period", {
81
+ kind: "unit",
82
+ placement: true,
83
+ arity: "single",
84
+ objectTypes: ORBITAL_OBJECTS,
85
+ unitFamily: "duration",
86
+ }),
87
+ createField("angle", {
88
+ kind: "unit",
89
+ placement: true,
90
+ arity: "single",
91
+ objectTypes: ORBITAL_OBJECTS,
92
+ unitFamily: "angle",
93
+ }),
94
+ createField("inclination", {
95
+ kind: "unit",
96
+ placement: true,
97
+ arity: "single",
98
+ objectTypes: ORBITAL_OBJECTS,
99
+ unitFamily: "angle",
100
+ }),
101
+ createField("phase", {
102
+ kind: "unit",
103
+ placement: true,
104
+ arity: "single",
105
+ objectTypes: ORBITAL_OBJECTS,
106
+ unitFamily: "angle",
107
+ }),
108
+ createField("at", {
109
+ kind: "string",
110
+ placement: true,
111
+ arity: "single",
112
+ objectTypes: ANCHORED_OBJECTS,
113
+ }),
114
+ createField("surface", {
115
+ kind: "string",
116
+ placement: true,
117
+ arity: "single",
118
+ objectTypes: ANCHORED_OBJECTS,
119
+ }),
120
+ createField("free", {
121
+ kind: "string",
122
+ placement: true,
123
+ arity: "single",
124
+ objectTypes: FREE_OBJECTS,
125
+ }),
126
+ createField("kind", {
127
+ kind: "string",
128
+ placement: false,
129
+ arity: "single",
130
+ objectTypes: NON_SYSTEM_OBJECTS,
131
+ }),
132
+ createField("class", {
133
+ kind: "string",
134
+ placement: false,
135
+ arity: "single",
136
+ objectTypes: NON_SYSTEM_OBJECTS,
137
+ }),
138
+ createField("culture", {
139
+ kind: "string",
140
+ placement: false,
141
+ arity: "single",
142
+ objectTypes: NON_SYSTEM_OBJECTS,
143
+ }),
144
+ createField("tags", {
145
+ kind: "list",
146
+ placement: false,
147
+ arity: "multiple",
148
+ objectTypes: ALL_OBJECTS,
149
+ }),
150
+ createField("color", {
151
+ kind: "string",
152
+ placement: false,
153
+ arity: "single",
154
+ objectTypes: ALL_OBJECTS,
155
+ }),
156
+ createField("image", {
157
+ kind: "string",
158
+ placement: false,
159
+ arity: "single",
160
+ objectTypes: IMAGE_OBJECTS,
161
+ }),
162
+ createField("hidden", {
163
+ kind: "boolean",
164
+ placement: false,
165
+ arity: "single",
166
+ objectTypes: ALL_OBJECTS,
167
+ }),
168
+ createField("radius", {
169
+ kind: "unit",
170
+ placement: false,
171
+ arity: "single",
172
+ objectTypes: NON_SYSTEM_OBJECTS,
173
+ unitFamily: "radius",
174
+ }),
175
+ createField("mass", {
176
+ kind: "unit",
177
+ placement: false,
178
+ arity: "single",
179
+ objectTypes: NON_SYSTEM_OBJECTS,
180
+ unitFamily: "mass",
181
+ }),
182
+ createField("density", {
183
+ kind: "unit",
184
+ placement: false,
185
+ arity: "single",
186
+ objectTypes: NON_SYSTEM_OBJECTS,
187
+ unitFamily: "generic",
188
+ }),
189
+ createField("gravity", {
190
+ kind: "unit",
191
+ placement: false,
192
+ arity: "single",
193
+ objectTypes: NON_SYSTEM_OBJECTS,
194
+ unitFamily: "generic",
195
+ }),
196
+ createField("temperature", {
197
+ kind: "unit",
198
+ placement: false,
199
+ arity: "single",
200
+ objectTypes: NON_SYSTEM_OBJECTS,
201
+ unitFamily: "generic",
202
+ }),
203
+ createField("albedo", {
204
+ kind: "number",
205
+ placement: false,
206
+ arity: "single",
207
+ objectTypes: NON_SYSTEM_OBJECTS,
208
+ }),
209
+ createField("atmosphere", {
210
+ kind: "string",
211
+ placement: false,
212
+ arity: "single",
213
+ objectTypes: ["planet", "moon", "asteroid", "comet", "phenomenon"],
214
+ }),
215
+ createField("inner", {
216
+ kind: "unit",
217
+ placement: false,
218
+ arity: "single",
219
+ objectTypes: ["belt", "ring", "phenomenon"],
220
+ unitFamily: "distance",
221
+ }),
222
+ createField("outer", {
223
+ kind: "unit",
224
+ placement: false,
225
+ arity: "single",
226
+ objectTypes: ["belt", "ring", "phenomenon"],
227
+ unitFamily: "distance",
228
+ }),
229
+ createField("view", {
230
+ kind: "string",
231
+ placement: false,
232
+ arity: "single",
233
+ objectTypes: ["system"],
234
+ }),
235
+ createField("scale", {
236
+ kind: "string",
237
+ placement: false,
238
+ arity: "single",
239
+ objectTypes: ["system"],
240
+ }),
241
+ createField("units", {
242
+ kind: "string",
243
+ placement: false,
244
+ arity: "single",
245
+ objectTypes: ["system"],
246
+ }),
247
+ createField("title", {
248
+ kind: "string",
249
+ placement: false,
250
+ arity: "single",
251
+ objectTypes: ["system"],
252
+ }),
253
+ createField("on", {
254
+ kind: "string",
255
+ placement: false,
256
+ arity: "single",
257
+ objectTypes: NON_SYSTEM_OBJECTS,
258
+ }),
259
+ createField("source", {
260
+ kind: "string",
261
+ placement: false,
262
+ arity: "single",
263
+ objectTypes: NON_SYSTEM_OBJECTS,
264
+ }),
265
+ createField("cycle", {
266
+ kind: "unit",
267
+ placement: false,
268
+ arity: "single",
269
+ objectTypes: NON_SYSTEM_OBJECTS,
270
+ unitFamily: "duration",
271
+ }),
272
+ ].map((schema) => [schema.key, schema]));
273
+ export const WORLDORBIT_FIELD_KEYS = new Set(WORLDORBIT_FIELD_SCHEMAS.keys());
274
+ export function getFieldSchema(key) {
275
+ return WORLDORBIT_FIELD_SCHEMAS.get(key);
276
+ }
277
+ export function isKnownFieldKey(key) {
278
+ return WORLDORBIT_FIELD_KEYS.has(key);
279
+ }
280
+ export function supportsObjectType(schema, objectType) {
281
+ return schema.objectTypes.includes(objectType);
282
+ }
283
+ export function unitFamilyAllowsUnit(family, unit) {
284
+ switch (family) {
285
+ case "distance":
286
+ return unit === null || ["au", "km", "re", "sol"].includes(unit);
287
+ case "radius":
288
+ return unit === null || ["km", "re", "sol"].includes(unit);
289
+ case "mass":
290
+ return unit === null || ["me", "sol"].includes(unit);
291
+ case "duration":
292
+ return unit === null || ["h", "d", "y"].includes(unit);
293
+ case "angle":
294
+ return unit === null || unit === "deg";
295
+ case "generic":
296
+ return true;
297
+ }
298
+ }
@@ -0,0 +1,4 @@
1
+ import type { LineToken, TokenizeOptions } from "./types.js";
2
+ export declare function tokenizeLine(input: string): string[];
3
+ export declare function tokenizeLineDetailed(input: string, options?: TokenizeOptions): LineToken[];
4
+ export declare function getIndent(rawLine: string): number;
@@ -0,0 +1,68 @@
1
+ import { WorldOrbitError } from "./errors.js";
2
+ export function tokenizeLine(input) {
3
+ return tokenizeLineDetailed(input).map((token) => token.value);
4
+ }
5
+ export function tokenizeLineDetailed(input, options = {}) {
6
+ const tokens = [];
7
+ const columnOffset = options.columnOffset ?? 0;
8
+ let current = "";
9
+ let tokenColumn = null;
10
+ let tokenWasQuoted = false;
11
+ let inQuotes = false;
12
+ let quoteColumn = null;
13
+ const pushToken = () => {
14
+ if (tokenColumn === null) {
15
+ return;
16
+ }
17
+ tokens.push({
18
+ value: current,
19
+ column: tokenColumn,
20
+ quoted: tokenWasQuoted,
21
+ });
22
+ current = "";
23
+ tokenColumn = null;
24
+ tokenWasQuoted = false;
25
+ };
26
+ for (let index = 0; index < input.length; index++) {
27
+ const ch = input[index];
28
+ const absoluteColumn = columnOffset + index + 1;
29
+ if (inQuotes && ch === "\\") {
30
+ const next = input[index + 1];
31
+ if (next === '"' || next === "\\") {
32
+ current += next;
33
+ index++;
34
+ continue;
35
+ }
36
+ }
37
+ if (ch === '"') {
38
+ if (!inQuotes) {
39
+ if (tokenColumn === null) {
40
+ tokenColumn = absoluteColumn;
41
+ }
42
+ tokenWasQuoted = true;
43
+ quoteColumn = absoluteColumn;
44
+ inQuotes = true;
45
+ }
46
+ else {
47
+ inQuotes = false;
48
+ }
49
+ continue;
50
+ }
51
+ if (!inQuotes && /\s/.test(ch)) {
52
+ pushToken();
53
+ continue;
54
+ }
55
+ if (tokenColumn === null) {
56
+ tokenColumn = absoluteColumn;
57
+ }
58
+ current += ch;
59
+ }
60
+ if (inQuotes) {
61
+ throw new WorldOrbitError("Unclosed quote in line", options.line, quoteColumn ?? columnOffset + input.length);
62
+ }
63
+ pushToken();
64
+ return tokens;
65
+ }
66
+ export function getIndent(rawLine) {
67
+ return rawLine.match(/^\s*/)?.[0].length ?? 0;
68
+ }