worldorbit 3.1.0 → 3.2.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.
@@ -1,5 +1,5 @@
1
1
  import { collectAtlasDiagnostics } from "./atlas-validate.js";
2
- export function createEmptyAtlasDocument(systemId = "WorldOrbit", version = "2.6.1") {
2
+ export function createEmptyAtlasDocument(systemId = "WorldOrbit", version = "2.6") {
3
3
  return {
4
4
  format: "worldorbit",
5
5
  version,
@@ -67,7 +67,7 @@ function validateRelation(relation, objectMap, diagnostics) {
67
67
  }
68
68
  function validateViewpoint(viewpoint, groupIds, eventIds, sourceSchemaVersion, diagnostics, objectMap) {
69
69
  const filter = viewpoint.filter;
70
- if (sourceSchemaVersion === "2.1" || sourceSchemaVersion === "2.5" || sourceSchemaVersion === "2.6.1") {
70
+ if (sourceSchemaVersion === "2.1" || sourceSchemaVersion === "2.5" || sourceSchemaVersion === "2.6") {
71
71
  if (filter) {
72
72
  for (const groupId of filter.groupIds) {
73
73
  if (!groupIds.has(groupId)) {
@@ -210,12 +210,12 @@ function parseAtlasSource(source, forcedOutputVersion) {
210
210
  function assertDraftSchemaHeader(tokens, line) {
211
211
  if (tokens.length !== 2 ||
212
212
  tokens[0].value.toLowerCase() !== "schema" ||
213
- !["2.0-draft", "2.0", "2.1", "2.5", "2.6.1"].includes(tokens[1].value.toLowerCase())) {
214
- throw new WorldOrbitError('Expected atlas header "schema 2.0", "schema 2.1", "schema 2.5", "schema 2.6.1", or legacy "schema 2.0-draft"', line, tokens[0]?.column ?? 1);
213
+ !["2.0-draft", "2.0", "2.1", "2.5", "2.6"].includes(tokens[1].value.toLowerCase())) {
214
+ throw new WorldOrbitError('Expected atlas header "schema 2.0", "schema 2.1", "schema 2.5", "schema 2.6", or legacy "schema 2.0-draft"', line, tokens[0]?.column ?? 1);
215
215
  }
216
216
  const version = tokens[1].value.toLowerCase();
217
- return version === "2.6.1"
218
- ? "2.6.1"
217
+ return version === "2.6"
218
+ ? "2.6"
219
219
  : version === "2.5"
220
220
  ? "2.5"
221
221
  : version === "2.1"
@@ -1566,8 +1566,10 @@ function schemaVersionRank(version) {
1566
1566
  return 2;
1567
1567
  case "2.5":
1568
1568
  return 3;
1569
- case "2.6.1":
1569
+ case "2.6":
1570
1570
  return 4;
1571
+ default:
1572
+ return 5;
1571
1573
  }
1572
1574
  }
1573
1575
  function preprocessAtlasSource(source) {
@@ -18,8 +18,8 @@ export function upgradeDocumentToV2(document, options = {}) {
18
18
  }
19
19
  return {
20
20
  format: "worldorbit",
21
- version: "2.6.1",
22
- schemaVersion: "2.6.1",
21
+ version: "2.6",
22
+ schemaVersion: "2.6",
23
23
  sourceVersion: document.version,
24
24
  theme: document.theme ?? null,
25
25
  system,
@@ -39,18 +39,18 @@ export function formatDocument(document, options = {}) {
39
39
  const useDraft = schema === "2.0" ||
40
40
  schema === "2.1" ||
41
41
  schema === "2.5" ||
42
- schema === "2.6.1" ||
42
+ schema === "2.6" ||
43
43
  schema === "2.0-draft" ||
44
44
  document.version === "2.0" ||
45
45
  document.version === "2.1" ||
46
46
  document.version === "2.5" ||
47
- document.version === "2.6.1" ||
47
+ document.version === "2.6" ||
48
48
  document.version === "2.0-draft";
49
49
  if (useDraft) {
50
50
  if (schema === "2.0-draft") {
51
51
  const legacyDraftDocument = document.version === "2.0-draft"
52
52
  ? document
53
- : document.version === "2.0" || document.version === "2.1" || document.version === "2.5" || document.version === "2.6.1"
53
+ : document.version === "2.0" || document.version === "2.1" || document.version === "2.5" || document.version === "2.6"
54
54
  ? {
55
55
  ...document,
56
56
  version: "2.0-draft",
@@ -59,7 +59,7 @@ export function formatDocument(document, options = {}) {
59
59
  : upgradeDocumentToDraftV2(document);
60
60
  return formatDraftDocument(legacyDraftDocument);
61
61
  }
62
- const atlasDocument = document.version === "2.0" || document.version === "2.1" || document.version === "2.5" || document.version === "2.6.1"
62
+ const atlasDocument = document.version === "2.0" || document.version === "2.1" || document.version === "2.5" || document.version === "2.6"
63
63
  ? document
64
64
  : document.version === "2.0-draft"
65
65
  ? {
@@ -68,7 +68,7 @@ export function formatDocument(document, options = {}) {
68
68
  schemaVersion: "2.0",
69
69
  }
70
70
  : upgradeDocumentToV2(document);
71
- if ((schema === "2.0" || schema === "2.1" || schema === "2.5" || schema === "2.6.1") && atlasDocument.version !== schema) {
71
+ if ((schema === "2.0" || schema === "2.1" || schema === "2.5" || schema === "2.6") && atlasDocument.version !== schema) {
72
72
  return formatAtlasDocument({
73
73
  ...atlasDocument,
74
74
  version: schema,
@@ -5,9 +5,10 @@ import { WorldOrbitError } from "./errors.js";
5
5
  import { normalizeDocument } from "./normalize.js";
6
6
  import { parseWorldOrbit } from "./parse.js";
7
7
  import { validateDocument } from "./validate.js";
8
- const ATLAS_SCHEMA_PATTERN = /^schema\s+2(?:\.0|\.1|\.5)?$/i;
8
+ const ATLAS_SCHEMA_PATTERN = /^schema\s+2(?:\.0|\.1|\.5|\.6)?$/i;
9
9
  const ATLAS_SCHEMA_21_PATTERN = /^schema\s+2\.1$/i;
10
10
  const ATLAS_SCHEMA_25_PATTERN = /^schema\s+2\.5$/i;
11
+ const ATLAS_SCHEMA_26_PATTERN = /^schema\s+2\.6$/i;
11
12
  const LEGACY_DRAFT_SCHEMA_PATTERN = /^schema\s+2\.0-draft$/i;
12
13
  export function detectWorldOrbitSchemaVersion(source) {
13
14
  for (const line of stripCommentsForSchemaDetection(source).split(/\r?\n/)) {
@@ -22,7 +23,10 @@ export function detectWorldOrbitSchemaVersion(source) {
22
23
  return "2.1";
23
24
  }
24
25
  if (ATLAS_SCHEMA_25_PATTERN.test(trimmed)) {
25
- return "2.6.1";
26
+ return "2.5";
27
+ }
28
+ if (ATLAS_SCHEMA_26_PATTERN.test(trimmed)) {
29
+ return "2.6";
26
30
  }
27
31
  if (ATLAS_SCHEMA_PATTERN.test(trimmed)) {
28
32
  return "2.0";
@@ -88,7 +92,7 @@ export function loadWorldOrbitSourceWithDiagnostics(source) {
88
92
  schemaVersion === "2.0-draft" ||
89
93
  schemaVersion === "2.1" ||
90
94
  schemaVersion === "2.5" ||
91
- schemaVersion === "2.6.1") {
95
+ schemaVersion === "2.6") {
92
96
  return loadAtlasSourceWithDiagnostics(source, schemaVersion);
93
97
  }
94
98
  let ast;
@@ -1064,7 +1064,7 @@ function parseViewpointGroups(value, document, relationships, objectMap) {
1064
1064
  return splitListValue(value).map((entry) => {
1065
1065
  if (document.schemaVersion === "2.1" ||
1066
1066
  document.schemaVersion === "2.5" ||
1067
- document.schemaVersion === "2.6.1" ||
1067
+ document.schemaVersion === "2.6" ||
1068
1068
  document.groups.some((group) => group.id === entry)) {
1069
1069
  return entry;
1070
1070
  }
@@ -2,7 +2,7 @@ export type WorldOrbitObjectType = "system" | "star" | "planet" | "moon" | "belt
2
2
  export type PlacementMode = "orbit" | "at" | "surface" | "free";
3
3
  export type Unit = "au" | "km" | "m" | "ly" | "pc" | "kpc" | "re" | "rj" | "sol" | "me" | "mj" | "s" | "min" | "h" | "d" | "y" | "ky" | "my" | "gy" | "K" | "deg";
4
4
  export type WorldOrbitDocumentVersion = "1.0";
5
- export type WorldOrbitAtlasDocumentVersion = "2.0" | "2.1" | "2.5" | "2.6.1";
5
+ export type WorldOrbitAtlasDocumentVersion = "2.0" | "2.1" | "2.5" | "2.6";
6
6
  export type WorldOrbitDraftDocumentVersion = "2.0-draft";
7
7
  export type WorldOrbitAnyDocumentVersion = WorldOrbitDocumentVersion | WorldOrbitAtlasDocumentVersion | WorldOrbitDraftDocumentVersion;
8
8
  export type ViewProjection = "topdown" | "isometric" | "orthographic" | "perspective";
@@ -1,5 +1,5 @@
1
1
  import { collectAtlasDiagnostics } from "./atlas-validate.js";
2
- export function createEmptyAtlasDocument(systemId = "WorldOrbit", version = "2.6.1") {
2
+ export function createEmptyAtlasDocument(systemId = "WorldOrbit", version = "2.6") {
3
3
  return {
4
4
  format: "worldorbit",
5
5
  version,
@@ -67,7 +67,7 @@ function validateRelation(relation, objectMap, diagnostics) {
67
67
  }
68
68
  function validateViewpoint(viewpoint, groupIds, eventIds, sourceSchemaVersion, diagnostics, objectMap) {
69
69
  const filter = viewpoint.filter;
70
- if (sourceSchemaVersion === "2.1" || sourceSchemaVersion === "2.5" || sourceSchemaVersion === "2.6.1") {
70
+ if (sourceSchemaVersion === "2.1" || sourceSchemaVersion === "2.5" || sourceSchemaVersion === "2.6") {
71
71
  if (filter) {
72
72
  for (const groupId of filter.groupIds) {
73
73
  if (!groupIds.has(groupId)) {
@@ -210,12 +210,12 @@ function parseAtlasSource(source, forcedOutputVersion) {
210
210
  function assertDraftSchemaHeader(tokens, line) {
211
211
  if (tokens.length !== 2 ||
212
212
  tokens[0].value.toLowerCase() !== "schema" ||
213
- !["2.0-draft", "2.0", "2.1", "2.5", "2.6.1"].includes(tokens[1].value.toLowerCase())) {
214
- throw new WorldOrbitError('Expected atlas header "schema 2.0", "schema 2.1", "schema 2.5", "schema 2.6.1", or legacy "schema 2.0-draft"', line, tokens[0]?.column ?? 1);
213
+ !["2.0-draft", "2.0", "2.1", "2.5", "2.6"].includes(tokens[1].value.toLowerCase())) {
214
+ throw new WorldOrbitError('Expected atlas header "schema 2.0", "schema 2.1", "schema 2.5", "schema 2.6", or legacy "schema 2.0-draft"', line, tokens[0]?.column ?? 1);
215
215
  }
216
216
  const version = tokens[1].value.toLowerCase();
217
- return version === "2.6.1"
218
- ? "2.6.1"
217
+ return version === "2.6"
218
+ ? "2.6"
219
219
  : version === "2.5"
220
220
  ? "2.5"
221
221
  : version === "2.1"
@@ -1566,8 +1566,10 @@ function schemaVersionRank(version) {
1566
1566
  return 2;
1567
1567
  case "2.5":
1568
1568
  return 3;
1569
- case "2.6.1":
1569
+ case "2.6":
1570
1570
  return 4;
1571
+ default:
1572
+ return 5;
1571
1573
  }
1572
1574
  }
1573
1575
  function preprocessAtlasSource(source) {
@@ -18,8 +18,8 @@ export function upgradeDocumentToV2(document, options = {}) {
18
18
  }
19
19
  return {
20
20
  format: "worldorbit",
21
- version: "2.6.1",
22
- schemaVersion: "2.6.1",
21
+ version: "2.6",
22
+ schemaVersion: "2.6",
23
23
  sourceVersion: document.version,
24
24
  theme: document.theme ?? null,
25
25
  system,
@@ -39,18 +39,18 @@ export function formatDocument(document, options = {}) {
39
39
  const useDraft = schema === "2.0" ||
40
40
  schema === "2.1" ||
41
41
  schema === "2.5" ||
42
- schema === "2.6.1" ||
42
+ schema === "2.6" ||
43
43
  schema === "2.0-draft" ||
44
44
  document.version === "2.0" ||
45
45
  document.version === "2.1" ||
46
46
  document.version === "2.5" ||
47
- document.version === "2.6.1" ||
47
+ document.version === "2.6" ||
48
48
  document.version === "2.0-draft";
49
49
  if (useDraft) {
50
50
  if (schema === "2.0-draft") {
51
51
  const legacyDraftDocument = document.version === "2.0-draft"
52
52
  ? document
53
- : document.version === "2.0" || document.version === "2.1" || document.version === "2.5" || document.version === "2.6.1"
53
+ : document.version === "2.0" || document.version === "2.1" || document.version === "2.5" || document.version === "2.6"
54
54
  ? {
55
55
  ...document,
56
56
  version: "2.0-draft",
@@ -59,7 +59,7 @@ export function formatDocument(document, options = {}) {
59
59
  : upgradeDocumentToDraftV2(document);
60
60
  return formatDraftDocument(legacyDraftDocument);
61
61
  }
62
- const atlasDocument = document.version === "2.0" || document.version === "2.1" || document.version === "2.5" || document.version === "2.6.1"
62
+ const atlasDocument = document.version === "2.0" || document.version === "2.1" || document.version === "2.5" || document.version === "2.6"
63
63
  ? document
64
64
  : document.version === "2.0-draft"
65
65
  ? {
@@ -68,7 +68,7 @@ export function formatDocument(document, options = {}) {
68
68
  schemaVersion: "2.0",
69
69
  }
70
70
  : upgradeDocumentToV2(document);
71
- if ((schema === "2.0" || schema === "2.1" || schema === "2.5" || schema === "2.6.1") && atlasDocument.version !== schema) {
71
+ if ((schema === "2.0" || schema === "2.1" || schema === "2.5" || schema === "2.6") && atlasDocument.version !== schema) {
72
72
  return formatAtlasDocument({
73
73
  ...atlasDocument,
74
74
  version: schema,
@@ -5,9 +5,10 @@ import { WorldOrbitError } from "./errors.js";
5
5
  import { normalizeDocument } from "./normalize.js";
6
6
  import { parseWorldOrbit } from "./parse.js";
7
7
  import { validateDocument } from "./validate.js";
8
- const ATLAS_SCHEMA_PATTERN = /^schema\s+2(?:\.0|\.1|\.5)?$/i;
8
+ const ATLAS_SCHEMA_PATTERN = /^schema\s+2(?:\.0|\.1|\.5|\.6)?$/i;
9
9
  const ATLAS_SCHEMA_21_PATTERN = /^schema\s+2\.1$/i;
10
10
  const ATLAS_SCHEMA_25_PATTERN = /^schema\s+2\.5$/i;
11
+ const ATLAS_SCHEMA_26_PATTERN = /^schema\s+2\.6$/i;
11
12
  const LEGACY_DRAFT_SCHEMA_PATTERN = /^schema\s+2\.0-draft$/i;
12
13
  export function detectWorldOrbitSchemaVersion(source) {
13
14
  for (const line of stripCommentsForSchemaDetection(source).split(/\r?\n/)) {
@@ -22,7 +23,10 @@ export function detectWorldOrbitSchemaVersion(source) {
22
23
  return "2.1";
23
24
  }
24
25
  if (ATLAS_SCHEMA_25_PATTERN.test(trimmed)) {
25
- return "2.6.1";
26
+ return "2.5";
27
+ }
28
+ if (ATLAS_SCHEMA_26_PATTERN.test(trimmed)) {
29
+ return "2.6";
26
30
  }
27
31
  if (ATLAS_SCHEMA_PATTERN.test(trimmed)) {
28
32
  return "2.0";
@@ -88,7 +92,7 @@ export function loadWorldOrbitSourceWithDiagnostics(source) {
88
92
  schemaVersion === "2.0-draft" ||
89
93
  schemaVersion === "2.1" ||
90
94
  schemaVersion === "2.5" ||
91
- schemaVersion === "2.6.1") {
95
+ schemaVersion === "2.6") {
92
96
  return loadAtlasSourceWithDiagnostics(source, schemaVersion);
93
97
  }
94
98
  let ast;
@@ -1064,7 +1064,7 @@ function parseViewpointGroups(value, document, relationships, objectMap) {
1064
1064
  return splitListValue(value).map((entry) => {
1065
1065
  if (document.schemaVersion === "2.1" ||
1066
1066
  document.schemaVersion === "2.5" ||
1067
- document.schemaVersion === "2.6.1" ||
1067
+ document.schemaVersion === "2.6" ||
1068
1068
  document.groups.some((group) => group.id === entry)) {
1069
1069
  return entry;
1070
1070
  }
@@ -2,7 +2,7 @@ export type WorldOrbitObjectType = "system" | "star" | "planet" | "moon" | "belt
2
2
  export type PlacementMode = "orbit" | "at" | "surface" | "free";
3
3
  export type Unit = "au" | "km" | "m" | "ly" | "pc" | "kpc" | "re" | "rj" | "sol" | "me" | "mj" | "s" | "min" | "h" | "d" | "y" | "ky" | "my" | "gy" | "K" | "deg";
4
4
  export type WorldOrbitDocumentVersion = "1.0";
5
- export type WorldOrbitAtlasDocumentVersion = "2.0" | "2.1" | "2.5" | "2.6.1";
5
+ export type WorldOrbitAtlasDocumentVersion = "2.0" | "2.1" | "2.5" | "2.6";
6
6
  export type WorldOrbitDraftDocumentVersion = "2.0-draft";
7
7
  export type WorldOrbitAnyDocumentVersion = WorldOrbitDocumentVersion | WorldOrbitAtlasDocumentVersion | WorldOrbitDraftDocumentVersion;
8
8
  export type ViewProjection = "topdown" | "isometric" | "orthographic" | "perspective";