@plexus-ms/lib 0.9.0 → 0.10.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.
package/dist/propagate.js CHANGED
@@ -1,19 +1,23 @@
1
- // propagate: bring every consumer of the presets up to a train (§ 3 PLX-Updates).
1
+ // propagate: bring every consumer of the presets up to a train (§ 3 PLX-Updates),
2
+ // as one pull request per consumer.
2
3
  //
3
- // `copier update`, at the version plx pins (copier.ts), at every consumer site
4
- // in the workspace (tenant repo roots and their apps/*), then the marker synced to the answers file, lockfiles
5
- // refreshed where manifests moved, and the consumers' hand-owned workflows
6
- // pinned to the train. A consumer is touched only on its expected branch and
7
- // with no tracked modifications (consumers.ts). Propagation never aborts the
8
- // run: a failing or conflicting site is recorded and the rest continues; the
9
- // summary says what needs a human. Reviewing diffs and committing the
10
- // consumers stays human.
4
+ // Each consumer is cloned from its origin at the branch the train lands on
5
+ // (consumers.ts) into a scratch directory; there `copier update` runs at the
6
+ // version plx pins (copier.ts) at every site (the repo root, then its apps/*),
7
+ // the marker is synced to the answers file, the lockfile refreshed where
8
+ // manifests moved, the hand-owned workflows pinned to the train; then one
9
+ // commit, pushed as `train/<version>`, and a pull request against the branch.
10
+ // A conflict is committed with its markers and reported, and the pull request
11
+ // is opened all the same: that is where it gets resolved. Propagation never
12
+ // aborts the run: a failing or conflicting consumer is recorded and the rest
13
+ // continues; the summary says what needs a human. Reviewing and merging the
14
+ // pull requests stays human.
11
15
  //
12
- // The dry run is an honest preview: each consumer is cloned into a scratch
13
- // directory and copier-updated there from the LOCAL preset checkout at main,
14
- // so the diff and any conflicts show before a tag exists. That scratch work
15
- // goes through `Context.stage`: performed in every mode, since nothing the
16
- // operator owns changes.
16
+ // The dry run is an honest preview: the same clones, copier-updated from the
17
+ // LOCAL preset checkout at main, so the diff and any conflicts show before a
18
+ // tag exists; nothing is committed, pushed or opened. The scratch work goes
19
+ // through `Context.stage`: performed in every mode, since nothing the operator
20
+ // owns changes.
17
21
  //
18
22
  // plx propagate ~/dev # to the current train
19
23
  // plx -n propagate ~/dev # preview in scratch clones
@@ -26,11 +30,20 @@ import { MARKER_FILE } from "./marker.js";
26
30
  import { overview } from "./overview.js";
27
31
  import { run, write } from "./plan.js";
28
32
  import { TRAIN_REPOS, UPSTREAM } from "./train.js";
29
- /** True when nothing in the summary needs a human. */
33
+ /** True when nothing in the summary needs a human but the pull requests. */
30
34
  export const isClean = (s) => s.conflicted.length === 0 && s.failed.length === 0 && s.skipped.length === 0;
31
- const PREVIEW_BASE = 'ship-base';
35
+ const BASE_TAG = 'ship-base';
36
+ const trainBranch = (train) => `train/${train}`;
32
37
  export async function propagate(ctx, workspace, train) {
33
- const summary = { train, preview: ctx.dryRun, clean: [], conflicted: [], failed: [], skipped: [] };
38
+ const summary = {
39
+ train,
40
+ preview: ctx.dryRun,
41
+ clean: [],
42
+ conflicted: [],
43
+ failed: [],
44
+ skipped: [],
45
+ pulls: [],
46
+ };
34
47
  const upstream = join(workspace, UPSTREAM);
35
48
  const tree = await overview(ctx, workspace);
36
49
  const upstreamDir = tree.children.find((c) => c.path === upstream);
@@ -42,47 +55,31 @@ export async function propagate(ctx, workspace, train) {
42
55
  ctx.say(`⚠ ${c.rel}: ${c.skipped} — skipped (fix it, then re-run propagate)`);
43
56
  summary.skipped.push({ path: c.rel, reason: c.skipped });
44
57
  }
45
- const active = consumers.filter((c) => !c.skipped);
46
- const scratch = ctx.dryRun ? (await ctx.stage(run('mktemp', ['-d'])))?.trim() : undefined;
47
- const clones = new Map();
48
- /** The preview clone of a consumer, made on first use, with the base marked for diffing manifests. */
49
- const cloneOf = async (consumer) => {
50
- let clone = clones.get(consumer.path);
51
- if (!clone) {
52
- clone = join(scratch ?? '', consumer.rel);
53
- await ctx.stage(run('git', ['clone', '--quiet', consumer.path, clone]));
54
- await ctx.stage(run('git', ['tag', PREVIEW_BASE], { cwd: clone }));
55
- clones.set(consumer.path, clone);
56
- }
57
- return clone;
58
- };
59
- // Preview commits are plain plumbing on a throwaway clone: unsigned, no hooks, a stand-in identity.
60
- const previewCommit = (clone, message) => ctx
61
- .stage(run('git', ['add', '-A'], { cwd: clone }))
62
- .then(() => ctx.stage(run('git', [
63
- '-c',
64
- 'commit.gpgsign=false',
65
- '-c',
66
- 'user.name=plx',
67
- '-c',
68
- 'user.email=plx@localhost',
69
- 'commit',
70
- '--quiet',
71
- '--no-verify',
72
- '--allow-empty',
73
- '-m',
74
- message,
75
- ], { cwd: clone })));
58
+ for (const preset of presets)
59
+ if (!consumers.some((c) => c.sites.some((s) => s.preset === preset)))
60
+ ctx.say(`• no consumers of ${presetSource(preset)} found under ${workspace}`);
61
+ const scratch = (await ctx.stage(run('mktemp', ['-d'])))?.trim() ?? '';
76
62
  try {
77
- for (const preset of presets) {
78
- const sites = active.flatMap((c) => c.sites.filter((s) => s.preset === preset).map((s) => [c, s]));
79
- if (sites.length === 0)
80
- ctx.say(`• no consumers of ${presetSource(preset)} found under ${workspace}`);
81
- for (const [consumer, site] of sites)
82
- await updateSite(ctx, consumer, site, join(upstream, preset), summary, cloneOf, previewCommit);
63
+ for (const consumer of consumers) {
64
+ if (consumer.skipped || !consumer.origin)
65
+ continue;
66
+ const clone = join(scratch, consumer.rel);
67
+ ctx.say(`→ ${consumer.rel}: clone ${consumer.origin} at ${consumer.branch}`);
68
+ try {
69
+ await ctx.stage(run('git', ['clone', '--quiet', '--branch', consumer.branch, consumer.origin, clone]));
70
+ await ctx.stage(run('git', ['tag', BASE_TAG], { cwd: clone }));
71
+ }
72
+ catch (error) {
73
+ ctx.say(` ✗ FAILED — clone${detail(error)}`);
74
+ summary.failed.push(consumer.rel);
75
+ continue;
76
+ }
77
+ for (const site of consumer.sites)
78
+ await updateSite(ctx, consumer, site, clone, upstream, summary);
79
+ await refreshLockfile(ctx, consumer, clone, summary);
80
+ await bumpConsumerRefs(ctx, consumer, clone, train);
81
+ await openPull(ctx, consumer, clone, train, summary);
83
82
  }
84
- await refreshLockfiles(ctx, active, summary, clones);
85
- await bumpConsumerRefs(ctx, consumers, train);
86
83
  }
87
84
  finally {
88
85
  if (scratch)
@@ -90,28 +87,42 @@ export async function propagate(ctx, workspace, train) {
90
87
  }
91
88
  return summary;
92
89
  }
93
- async function updateSite(ctx, consumer, site, localPreset, summary, cloneOf, previewCommit) {
94
- // The repo the update lands in and the site inside it: the consumer and the
95
- // site themselves, or their counterparts in the preview clone.
96
- let repo = consumer.path;
97
- let target = site.path;
90
+ // Preview commits are plain plumbing on a throwaway clone: unsigned, no hooks, a stand-in identity.
91
+ const previewCommit = (ctx, clone, message) => ctx
92
+ .stage(run('git', ['add', '-A'], { cwd: clone }))
93
+ .then(() => ctx.stage(run('git', [
94
+ '-c',
95
+ 'commit.gpgsign=false',
96
+ '-c',
97
+ 'user.name=plx',
98
+ '-c',
99
+ 'user.email=plx@localhost',
100
+ 'commit',
101
+ '--quiet',
102
+ '--no-verify',
103
+ '--allow-empty',
104
+ '-m',
105
+ message,
106
+ ], { cwd: clone })));
107
+ async function updateSite(ctx, consumer, site, clone, upstream, summary) {
108
+ const target = join(clone, relative(consumer.path, site.path));
109
+ const localPreset = join(upstream, site.preset);
98
110
  try {
99
111
  if (ctx.dryRun) {
100
112
  ctx.say(`→ ${site.rel}: copier update (preview from ${localPreset}@main)`);
101
- repo = await cloneOf(consumer);
102
- target = join(repo, relative(consumer.path, site.path));
103
113
  // Point the clone's answers at the local preset so the preview reads it;
104
- // copier refuses a dirty subproject, hence the commit. Template tasks
105
- // (mise install, hook setup) are the real run's business.
106
- const answers = await ctx.readFile(join(site.path, ANSWERS_FILE));
114
+ // copier refuses a dirty subproject, hence the commit.
115
+ const answers = await ctx.readFile(join(target, ANSWERS_FILE));
107
116
  await ctx.stage(write(join(target, ANSWERS_FILE), answers.replace(/^_src_path: .*$/m, `_src_path: ${localPreset}`)));
108
- await previewCommit(repo, `plx preview: ${site.rel} reads ${localPreset} from the local checkout`);
117
+ await previewCommit(ctx, clone, `plx preview: ${site.rel} reads ${localPreset} from the local checkout`);
109
118
  await ctx.stage(run('mise', copierVia(['update', '--skip-answered', '--trust', '--defaults', '--skip-tasks', '--vcs-ref', 'main']), { cwd: target }));
110
119
  }
111
120
  else {
112
121
  ctx.say(`→ ${site.rel}: copier update`);
113
- // Unattended, a new question takes its default; on a terminal copier asks.
114
- const args = ['update', '--skip-answered', '--trust', ...(ctx.yes ? ['--defaults'] : [])];
122
+ // Template tasks (mise install, hook setup) serve a developer's checkout,
123
+ // not a pull request. Unattended, a new question takes its default; on a
124
+ // terminal copier asks.
125
+ const args = ['update', '--skip-answered', '--trust', '--skip-tasks', ...(ctx.yes ? ['--defaults'] : [])];
115
126
  await ctx.apply([run('mise', copierVia(args), { cwd: target, interactive: true })]);
116
127
  }
117
128
  }
@@ -122,17 +133,21 @@ async function updateSite(ctx, consumer, site, localPreset, summary, cloneOf, pr
122
133
  }
123
134
  // copier applies the template diff with `git apply --3way`, which leaves
124
135
  // unmerged index entries and inline markers when a hunk does not apply.
125
- const status = await ctx.read('git', ['status', '--porcelain'], { cwd: repo });
136
+ // Scoped to the site: the root site's changes are still in the tree when
137
+ // its apps are updated.
138
+ const status = await ctx.read('git', ['status', '--porcelain', '--', '.'], { cwd: target });
126
139
  let conflict = hasUnmergedEntries(status);
127
- const changed = (await ctx.read('git', ['diff', '--name-only'], { cwd: repo })).split('\n').filter(Boolean);
140
+ const changed = (await ctx.read('git', ['diff', '--name-only', '--relative', '--', '.'], { cwd: target }))
141
+ .split('\n')
142
+ .filter(Boolean);
128
143
  for (const f of changed) {
129
- const text = await ctx.readFile(join(repo, f)).catch(() => '');
144
+ const text = await ctx.readFile(join(target, f)).catch(() => '');
130
145
  if (hasConflictMarkers(text))
131
146
  conflict = true;
132
147
  }
133
148
  await syncSiteMarker(ctx, site, target);
134
149
  if (conflict) {
135
- ctx.say(' ✗ CONFLICTS — resolve the <<<<<<< markers, then git add:');
150
+ ctx.say(' ✗ CONFLICTS — committed with their <<<<<<< markers, to resolve in the pull request:');
136
151
  summary.conflicted.push(site.rel);
137
152
  }
138
153
  else {
@@ -141,9 +156,9 @@ async function updateSite(ctx, consumer, site, localPreset, summary, cloneOf, pr
141
156
  }
142
157
  for (const line of status.split('\n').filter(Boolean))
143
158
  ctx.say(` ${line}`);
144
- // Each preview site is committed in the clone so the next site's status lists only its own changes.
159
+ // Each preview site is committed so the next site's answers rewrite starts from a clean tree.
145
160
  if (ctx.dryRun)
146
- await previewCommit(repo, `plx preview: ${site.rel} updated`);
161
+ await previewCommit(ctx, clone, `plx preview: ${site.rel} updated`);
147
162
  }
148
163
  /** The marker's `plexus` follows the answers file's `_commit` after an update (bookkeeping.ts). */
149
164
  async function syncSiteMarker(ctx, site, target) {
@@ -157,64 +172,154 @@ async function syncSiteMarker(ctx, site, target) {
157
172
  if (synced === marker)
158
173
  return;
159
174
  ctx.say(` marker: plexus → ${commit} in ${site.rel}/${MARKER_FILE}`);
160
- const step = write(join(target, MARKER_FILE), synced);
161
- if (ctx.dryRun)
162
- await ctx.stage(step);
163
- else
164
- await ctx.apply([step]);
175
+ await ctx.stage(write(join(target, MARKER_FILE), synced));
165
176
  }
166
- /** Refresh the lockfile once per consumer whose manifests the updates touched. */
167
- async function refreshLockfiles(ctx, consumers, summary, clones) {
177
+ /** Refresh the lockfile when the updates touched a manifest (`mise exec` trusts the clone's config on its own). */
178
+ async function refreshLockfile(ctx, consumer, clone, summary) {
179
+ if ((await ctx.readFile(join(clone, 'pnpm-workspace.yaml')).catch(() => undefined)) === undefined)
180
+ return;
168
181
  const manifests = ['*package.json', 'pnpm-workspace.yaml'];
169
- for (const c of consumers) {
170
- if ((await ctx.readFile(join(c.path, 'pnpm-workspace.yaml')).catch(() => undefined)) === undefined)
171
- continue;
172
- const repo = ctx.dryRun ? clones.get(c.path) : c.path;
173
- if (!repo)
174
- continue;
175
- const range = ctx.dryRun ? [PREVIEW_BASE] : [];
176
- const unchanged = await ctx
177
- .read('git', ['diff', '--quiet', ...range, '--', ...manifests], { cwd: repo })
178
- .then(() => true)
179
- .catch(() => false);
180
- if (unchanged)
181
- continue;
182
- ctx.say(`→ ${c.rel}: pnpm install (manifests changed)`);
183
- try {
184
- await ctx.apply([run('mise', ['exec', '--', 'pnpm', 'install', '--reporter=silent'], { cwd: c.path })]);
185
- }
186
- catch (error) {
187
- ctx.say(` ✗ pnpm install failed${detail(error)}`);
188
- summary.failed.push(`${c.rel}/pnpm-lock.yaml`);
189
- }
182
+ const unchanged = await ctx
183
+ .read('git', ['diff', '--quiet', BASE_TAG, '--', ...manifests], { cwd: clone })
184
+ .then(() => true)
185
+ .catch(() => false);
186
+ if (unchanged)
187
+ return;
188
+ ctx.say(`→ ${consumer.rel}: pnpm install (manifests changed)`);
189
+ try {
190
+ await ctx.apply([run('mise', ['exec', '--', 'pnpm', 'install', '--reporter=silent'], { cwd: clone })]);
191
+ }
192
+ catch (error) {
193
+ ctx.say(` ✗ pnpm install failed${detail(error)}`);
194
+ summary.failed.push(`${consumer.rel}/pnpm-lock.yaml`);
190
195
  }
191
196
  }
192
- /** Consumers' hand-owned workflows pin ci-cd by tag; lockstep them to the train. */
193
- async function bumpConsumerRefs(ctx, consumers, train) {
194
- for (const c of consumers) {
195
- const dir = join(c.path, '.github', 'workflows');
196
- const entries = await ctx.readDir(dir).catch(() => []);
197
- const files = entries
198
- .filter((e) => !e.directory && /\.ya?ml$/.test(e.name))
199
- .map((e) => e.name)
200
- .sort();
201
- if (files.length === 0)
197
+ /** Consumers' hand-owned workflows pin the reusable workflows by tag; lockstep them to the train. */
198
+ async function bumpConsumerRefs(ctx, consumer, clone, train) {
199
+ const dir = join(clone, '.github', 'workflows');
200
+ const entries = await ctx.readDir(dir).catch(() => []);
201
+ const files = entries
202
+ .filter((e) => !e.directory && /\.ya?ml$/.test(e.name))
203
+ .map((e) => e.name)
204
+ .sort();
205
+ for (const f of files) {
206
+ const text = await ctx.readFile(join(dir, f));
207
+ if (!text.includes(WORKFLOW_REF))
202
208
  continue;
203
- if (c.skipped) {
204
- ctx.say(`⚠ ${c.rel}: workflow refs not bumped (skipped above)`);
209
+ const bumped = bumpWorkflowRefs(text, train);
210
+ if (bumped === text)
205
211
  continue;
206
- }
207
- for (const f of files) {
208
- const text = await ctx.readFile(join(dir, f));
209
- if (!text.includes(WORKFLOW_REF))
210
- continue;
211
- const bumped = bumpWorkflowRefs(text, train);
212
- if (bumped === text)
213
- continue;
214
- ctx.say(`→ ${c.rel}: ${f} ci-cd refs → @${train}`);
215
- await ctx.apply([write(join(dir, f), bumped)]);
216
- }
212
+ ctx.say(`→ ${consumer.rel}: ${f} workflow refs → @${train}`);
213
+ await ctx.stage(write(join(dir, f), bumped));
214
+ }
215
+ }
216
+ /**
217
+ * One commit, the train branch pushed, and a pull request against the
218
+ * consumer's branch: opened once, found again on a re-run. The branch is plx's
219
+ * own, so a re-run may move it, with a lease on what it fetched.
220
+ */
221
+ async function openPull(ctx, consumer, clone, train, summary) {
222
+ const branch = trainBranch(train);
223
+ if (ctx.dryRun) {
224
+ ctx.say(` (preview) ${consumer.rel}: would commit, push ${branch} and open a pull request against ${consumer.branch}`);
225
+ return;
226
+ }
227
+ if ((await ctx.read('git', ['status', '--porcelain'], { cwd: clone })).trim() === '') {
228
+ ctx.say(`• ${consumer.rel}: nothing changed — no pull request`);
229
+ return;
230
+ }
231
+ const head = `${consumer.origin} ${branch}`;
232
+ try {
233
+ await ctx.apply([
234
+ run('git', ['add', '-A'], { cwd: clone }),
235
+ run('git', ['commit', '--quiet', '--no-verify', '-m', `chore: train ${train}`], { cwd: clone }),
236
+ ]);
237
+ // The lease needs the remote-tracking ref; a fresh clone has none for a branch it did not check out.
238
+ await ctx
239
+ .read('git', ['fetch', '--quiet', 'origin', `+refs/heads/${branch}:refs/remotes/origin/${branch}`], {
240
+ cwd: clone,
241
+ })
242
+ .catch(() => '');
243
+ await ctx.apply([
244
+ run('git', ['push', '--quiet', '--force-with-lease', 'origin', `HEAD:refs/heads/${branch}`], { cwd: clone }),
245
+ ]);
246
+ }
247
+ catch (error) {
248
+ ctx.say(` ✗ FAILED — push to ${head}${detail(error)}`);
249
+ summary.failed.push(consumer.rel);
250
+ return;
251
+ }
252
+ const existing = (await ctx
253
+ .read('gh', [
254
+ 'pr',
255
+ 'list',
256
+ '--head',
257
+ branch,
258
+ '--base',
259
+ consumer.branch,
260
+ '--state',
261
+ 'open',
262
+ '--json',
263
+ 'url',
264
+ '--jq',
265
+ '.[0].url',
266
+ ], { cwd: clone })
267
+ .catch(() => '')).trim();
268
+ if (existing) {
269
+ ctx.say(`• ${consumer.rel}: pull request updated: ${existing}`);
270
+ summary.pulls.push(existing);
271
+ return;
272
+ }
273
+ const sites = consumer.sites.map((s) => s.rel);
274
+ const conflicted = sites.filter((s) => summary.conflicted.includes(s));
275
+ const body = [
276
+ `Train ${train} (§ 1.5 PLX): \`copier update\` at ${sites.join(', ')}, the marker, the lockfile where manifests moved, and the workflow refs.`,
277
+ conflicted.length > 0
278
+ ? `Conflicts to resolve, committed with their markers: ${conflicted.join(', ')}.`
279
+ : 'Merged clean at every site.',
280
+ 'Opened by `plx ship`.',
281
+ ].join('\n\n');
282
+ try {
283
+ await ctx.apply([
284
+ run('gh', [
285
+ 'pr',
286
+ 'create',
287
+ '--base',
288
+ consumer.branch,
289
+ '--head',
290
+ branch,
291
+ '--title',
292
+ `chore: train ${train}`,
293
+ '--body',
294
+ body,
295
+ ], { cwd: clone }),
296
+ ]);
297
+ }
298
+ catch (error) {
299
+ ctx.say(` ✗ FAILED — pull request${detail(error)}`);
300
+ summary.failed.push(consumer.rel);
301
+ return;
217
302
  }
303
+ const url = (await ctx
304
+ .read('gh', [
305
+ 'pr',
306
+ 'list',
307
+ '--head',
308
+ branch,
309
+ '--base',
310
+ consumer.branch,
311
+ '--state',
312
+ 'open',
313
+ '--json',
314
+ 'url',
315
+ '--jq',
316
+ '.[0].url',
317
+ ], {
318
+ cwd: clone,
319
+ })
320
+ .catch(() => '')).trim();
321
+ ctx.say(`• ${consumer.rel}: pull request opened${url ? `: ${url}` : ''}`);
322
+ summary.pulls.push(url || `${consumer.rel} ${branch}`);
218
323
  }
219
324
  const detail = (error) => {
220
325
  const message = error instanceof Error ? error.message : String(error);
@@ -1 +1 @@
1
- {"version":3,"file":"propagate.js","sourceRoot":"","sources":["../src/propagate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"propagate.js","sourceRoot":"","sources":["../src/propagate.ts"],"names":[],"mappings":"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"}
package/dist/ship.d.ts CHANGED
@@ -1,5 +1,12 @@
1
1
  import type { Context } from './context.ts';
2
2
  import { type Summary } from './propagate.ts';
3
+ /** How the wait for npm between the phases behaves, in milliseconds. */
4
+ export interface PublishWait {
5
+ /** Between two polls of the registry. */
6
+ interval: number;
7
+ /** After which the run stops, resumable. */
8
+ timeout: number;
9
+ }
3
10
  export interface ShipOptions {
4
11
  /** The workspace: the upstream umbrella and the consumers sit under it. */
5
12
  workspace: string;
@@ -11,6 +18,8 @@ export interface ShipOptions {
11
18
  today?: string;
12
19
  /** The running plx's version: when given, refuse to run behind its newest release (self.ts). */
13
20
  plx?: string;
21
+ /** The publish wait's pacing; the defaults suit a real registry, tests shorten them. */
22
+ wait?: Partial<PublishWait>;
14
23
  }
15
24
  export interface ShipResult extends Summary {
16
25
  /** The version released, or already current when only propagating. */
@@ -1 +1 @@
1
- {"version":3,"file":"ship.d.ts","sourceRoot":"","sources":["../src/ship.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAKzD,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAC;IAClB,qGAAqG;IACrG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gGAAgG;IAChG,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAW,SAAQ,OAAO;IACzC,sEAAsE;IACtE,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAUlF"}
1
+ {"version":3,"file":"ship.d.ts","sourceRoot":"","sources":["../src/ship.ts"],"names":[],"mappings":"AA4CA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAgBzD,wEAAwE;AACxE,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAC;IAClB,qGAAqG;IACrG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gGAAgG;IAChG,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wFAAwF;IACxF,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,UAAW,SAAQ,OAAO;IACzC,sEAAsE;IACtE,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAclF"}