@maka/maka-cli 5.84.0 → 5.86.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 (77) hide show
  1. package/bundle/typescript/package.json +1 -1
  2. package/bundle/typescript/src/commands/game/sideQuest/commands/call.d.ts +0 -28
  3. package/bundle/typescript/src/commands/game/sideQuest/commands/call.js +1 -41
  4. package/bundle/typescript/src/commands/game/sideQuest/commands/call.js.map +1 -1
  5. package/bundle/typescript/src/commands/game/sideQuest/commands/go.d.ts +1 -1
  6. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +47 -6
  7. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
  8. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +1 -1
  9. package/bundle/typescript/src/commands/game/sideQuest/commands/job-offer.js +16 -1
  10. package/bundle/typescript/src/commands/game/sideQuest/commands/job-offer.js.map +1 -1
  11. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +31 -6
  12. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
  13. package/bundle/typescript/src/commands/game/sideQuest/commands/map.js +1 -1
  14. package/bundle/typescript/src/commands/game/sideQuest/commands/mark.js +1 -1
  15. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +11 -8
  16. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +1 -1
  17. package/bundle/typescript/src/commands/game/sideQuest/commands/take.js +1 -1
  18. package/bundle/typescript/src/commands/game/sideQuest/commands/tap.d.ts +1 -1
  19. package/bundle/typescript/src/commands/game/sideQuest/commands/tap.js +1 -1
  20. package/bundle/typescript/src/commands/game/sideQuest/engine-version.js +1 -1
  21. package/bundle/typescript/src/commands/game/sideQuest/factories/item-factory.js +20 -0
  22. package/bundle/typescript/src/commands/game/sideQuest/factories/item-factory.js.map +1 -1
  23. package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +14 -0
  24. package/bundle/typescript/src/commands/game/sideQuest/game.js +28 -4
  25. package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
  26. package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +11 -0
  27. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +86 -16
  28. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
  29. package/bundle/typescript/src/commands/game/sideQuest/models/room.d.ts +1 -1
  30. package/bundle/typescript/src/commands/game/sideQuest/models/room.js +1 -1
  31. package/bundle/typescript/src/commands/game/sideQuest/scenes/scene1.json +1 -1
  32. package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +86 -10
  33. package/bundle/typescript/src/commands/game/sideQuest/types/repro.d.ts +15 -6
  34. package/bundle/typescript/src/commands/game/sideQuest/types/seed/item-seed.d.ts +17 -0
  35. package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.js +1 -1
  36. package/bundle/typescript/src/commands/game/sideQuest/utilities/bystander.d.ts +17 -0
  37. package/bundle/typescript/src/commands/game/sideQuest/utilities/bystander.js +123 -0
  38. package/bundle/typescript/src/commands/game/sideQuest/utilities/bystander.js.map +1 -0
  39. package/bundle/typescript/src/commands/game/sideQuest/utilities/ddp-lite.d.ts +53 -0
  40. package/bundle/typescript/src/commands/game/sideQuest/utilities/ddp-lite.js +43 -3
  41. package/bundle/typescript/src/commands/game/sideQuest/utilities/ddp-lite.js.map +1 -1
  42. package/bundle/typescript/src/commands/game/sideQuest/utilities/ephemeral.d.ts +116 -0
  43. package/bundle/typescript/src/commands/game/sideQuest/utilities/ephemeral.js +96 -0
  44. package/bundle/typescript/src/commands/game/sideQuest/utilities/ephemeral.js.map +1 -0
  45. package/bundle/typescript/src/commands/game/sideQuest/utilities/first-aid.js +7 -1
  46. package/bundle/typescript/src/commands/game/sideQuest/utilities/first-aid.js.map +1 -1
  47. package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.d.ts +1 -1
  48. package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js +59 -4
  49. package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js.map +1 -1
  50. package/bundle/typescript/src/commands/game/sideQuest/utilities/meet-location.d.ts +37 -0
  51. package/bundle/typescript/src/commands/game/sideQuest/utilities/meet-location.js +51 -0
  52. package/bundle/typescript/src/commands/game/sideQuest/utilities/meet-location.js.map +1 -0
  53. package/bundle/typescript/src/commands/game/sideQuest/utilities/perception.d.ts +76 -0
  54. package/bundle/typescript/src/commands/game/sideQuest/utilities/perception.js +84 -0
  55. package/bundle/typescript/src/commands/game/sideQuest/utilities/perception.js.map +1 -0
  56. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.d.ts +2 -2
  57. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js +1 -1
  58. package/bundle/typescript/src/commands/game/sideQuest/utilities/shared-run.d.ts +86 -0
  59. package/bundle/typescript/src/commands/game/sideQuest/utilities/shared-run.js +137 -21
  60. package/bundle/typescript/src/commands/game/sideQuest/utilities/shared-run.js.map +1 -1
  61. package/bundle/typescript/src/commands/game/sideQuest/utilities/sin.d.ts +10 -0
  62. package/bundle/typescript/src/commands/game/sideQuest/utilities/sin.js +55 -0
  63. package/bundle/typescript/src/commands/game/sideQuest/utilities/sin.js.map +1 -1
  64. package/bundle/typescript/src/commands/game/sideQuest/utilities/street-gang.d.ts +17 -0
  65. package/bundle/typescript/src/commands/game/sideQuest/utilities/street-gang.js +139 -0
  66. package/bundle/typescript/src/commands/game/sideQuest/utilities/street-gang.js.map +1 -0
  67. package/bundle/typescript/src/commands/testCmd/mocha.sub.cmd.js +46 -44
  68. package/bundle/typescript/src/commands/testCmd/mocha.sub.cmd.js.map +1 -1
  69. package/bundle/typescript/src/commands/update.js +6 -20
  70. package/bundle/typescript/src/commands/update.js.map +1 -1
  71. package/bundle/typescript/src/tools/self-update/binary-install.d.ts +113 -0
  72. package/bundle/typescript/src/tools/self-update/binary-install.js +178 -0
  73. package/bundle/typescript/src/tools/self-update/binary-install.js.map +1 -0
  74. package/bundle/typescript/src/tools/self-update/update-maka.d.ts +3 -1
  75. package/bundle/typescript/src/tools/self-update/update-maka.js +219 -3
  76. package/bundle/typescript/src/tools/self-update/update-maka.js.map +1 -1
  77. package/package.json +1 -1
@@ -1,6 +1,8 @@
1
1
  import { Logger } from './logger.js';
2
2
  import { rollPool, formatRoll } from './dice.js';
3
3
  import { isWatched } from './surveillance.js';
4
+ import { spawnEphemeral } from './ephemeral.js';
5
+ import { AI } from '../../../../tools/ai/ai.class.js';
4
6
  /**
5
7
  * IDENTITY AT THE COUNTER (SINs & commerce, player go 2026-08-24;
6
8
  * canon p.363-368, values engine-adapted -- the RAG was down). The
@@ -128,6 +130,52 @@ export function paperPurchase(p, basePrice, availability, meta) {
128
130
  const SWEEP_CHANCE_WATCHED = 0.10;
129
131
  const SWEEP_CHANCE_STREET = 0.04;
130
132
  const SWEEP_HOT_BONUS = 0.05;
133
+ /**
134
+ * THE OFFICER IS A MOUTH, NOT A JUDGE (7ALf6u7PvTg6TZSm7).
135
+ *
136
+ * Every ruling in this sweep is already made by the time this runs:
137
+ * wandRead returned the band, addHeat billed it, a burned fake is
138
+ * already out of the inventory. Spawning a body afterwards adds someone
139
+ * to talk to and changes NOTHING about the outcome, which is why it is
140
+ * safe -- the worst a bad brief can do here is write bad dialogue.
141
+ *
142
+ * NO AI, NO GOVERNOR (ruling). With AI off the sweep keeps exactly its
143
+ * existing prose and no body is spawned at all: a stranger standing
144
+ * mute in the room is a bug report waiting ("this cop won't talk"),
145
+ * while the prose alone is a working game. sweep-officer.test.ts asserts
146
+ * that path is byte-identical to the old output.
147
+ */
148
+ function postSweepOfficer(game, room, band) {
149
+ if (!game.scene || !game.ephemerals || !AI.isConfigured())
150
+ return;
151
+ const stance = band === 'clean'
152
+ ? `Their wand just went green on the person in front of them, so they are already half-turned toward the next face in the room -- bored, procedural, done with this one.`
153
+ : band === 'odd'
154
+ ? `Their wand muttered something they did not like about the person in front of them and they waved them on anyway. They are not satisfied, and they are still watching.`
155
+ : band === 'busted'
156
+ ? `Their wand just CHOKED on a forgery. They want this person off the floor, not processed -- paperwork is somebody else's afternoon.`
157
+ : `The person in front of them has no SIN at all, which in a place like this is the whole offense. They have already taken the photographs.`;
158
+ spawnEphemeral({ scene: game.scene, ephemerals: game.ephemerals }, {
159
+ name: SWEEP_OFFICER_NAME,
160
+ description: `a private-security patrol officer working this floor with a SIN wand. ${stance} They are a uniform doing a shift -- not a character in anyone's story, not connected to whatever brought these people here, and off this floor the moment the sweep moves on.`,
161
+ kind: 'authority',
162
+ // EXCHANGE-scoped: they exist for as long as the player stands
163
+ // there talking. Walking out ends it (ruling), and the officer does
164
+ // not follow.
165
+ until: 'exchange',
166
+ room,
167
+ // A working rent-a-cop, not a boss fight. Deliberately ordinary:
168
+ // the player who decides to swing at security should be picking a
169
+ // fight with a person, not a set piece.
170
+ combat: {
171
+ body: 3, agility: 3, reaction: 3, strength: 3, willpower: 3,
172
+ logic: 3, intuition: 3, charisma: 3, edge: 1, combatSkill: 3,
173
+ skills: { perception: 3, firearms: 3, intimidation: 2 },
174
+ },
175
+ });
176
+ }
177
+ /** One name, so a second sweep in the same room can never double-spawn. */
178
+ export const SWEEP_OFFICER_NAME = 'Patrol Officer';
131
179
  export function maybeSinSweep(game, actor, room, meta) {
132
180
  if (!game.onRun || actor.plane !== 'meat')
133
181
  return '';
@@ -156,6 +204,9 @@ export function maybeSinSweep(game, actor, room, meta) {
156
204
  if (actor.qualities.has('sinner-criminal')) {
157
205
  game.addHeat(3, 'sweep: criminal SIN logged on site');
158
206
  lines.push(`Your CRIMINAL SIN answers before you can. They log it, photograph you, and wave you on -- but this site now KNOWS a felon walked its floor, and the district feed has your route.`);
207
+ // A logged felon waved on is the 'odd' stance exactly: not
208
+ // satisfied, still watching, no grounds to hold you.
209
+ postSweepOfficer(game, room, 'odd');
159
210
  return lines.join('\n');
160
211
  }
161
212
  const fake = bestFakeSin(actor);
@@ -167,20 +218,24 @@ export function maybeSinSweep(game, actor, room, meta) {
167
218
  if (band === 'clean') {
168
219
  game.addHeat(1, 'sweep: fake SIN logged (datatrail)');
169
220
  lines.push(`Your Rating ${fake.rating} fake answers -- green light. A name that isn't yours goes in their log, and the patrol moves on.`);
221
+ postSweepOfficer(game, room, 'clean');
170
222
  return lines.join('\n');
171
223
  }
172
224
  if (band === 'odd') {
173
225
  game.addHeat(2, 'sweep: fake SIN read as ODD');
174
226
  lines.push(`The wand mutters over your Rating ${fake.rating} fake -- "something's odd," the officer says, and stares a beat too long before waving you on. The fake survives; the extra attention doesn't wash off.`);
227
+ postSweepOfficer(game, room, 'odd');
175
228
  return lines.join('\n');
176
229
  }
177
230
  actor.inventory.removeItem(fake.item.name);
178
231
  game.addHeat(3, 'sweep: fake SIN burned');
179
232
  lines.push(`The wand CHOKES on your Rating ${fake.rating} fake -- BURNED, flagged everywhere at once. Security wants you gone, not processed: they shove you toward the door and put your face on the district feed.`);
233
+ postSweepOfficer(game, room, 'busted');
180
234
  return lines.join('\n');
181
235
  }
182
236
  game.addHeat(4, 'sweep: SINless, face remembered');
183
237
  lines.push(`No SIN at all -- in a place like this that IS the offense. They photograph you from three angles and escort you off the floor. The district feed has your face now; the ride home will be interesting.`);
238
+ postSweepOfficer(game, room, 'sinless');
184
239
  return lines.join('\n');
185
240
  }
186
241
  export function venueSinCheck(p, host, opts) {
@@ -1 +1 @@
1
- {"version":3,"file":"sin.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/sin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sin.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/sin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { Player } from '../models/player.js';
2
+ import { Room } from '../models/room.js';
3
+ import { IEphemeralHost } from './ephemeral.js';
4
+ export interface IGangHost extends IEphemeralHost {
5
+ /** Rooms that have already had their encounter -- once each, ever. */
6
+ gangedRooms: Set<string>;
7
+ }
8
+ /**
9
+ * Maybe somebody is holding this corner. Returns the line to show, or
10
+ * '' for the overwhelmingly common case of nothing happening.
11
+ *
12
+ * NO AI, NO GOVERNOR (ruling, and the same branch the officer takes):
13
+ * with AI off nothing spawns and nothing is narrated, because a mute
14
+ * hostile stranger is worse than an empty street. The test asserts this
15
+ * path returns the empty string exactly.
16
+ */
17
+ export declare function maybeStreetGang(host: IGangHost, actor: Player, room: Room): string;
@@ -0,0 +1,139 @@
1
+ import { Logger } from './logger.js';
2
+ import { isOutdoorsPlace } from './outdoors.js';
3
+ import { spawnEphemeral } from './ephemeral.js';
4
+ import { AI } from '../../../../tools/ai/ai.class.js';
5
+ /**
6
+ * THE SECOND EPHEMERAL KIND: a street gang holding its block
7
+ * (7ALf6u7PvTg6TZSm7, Maka named three kinds -- "authority checking
8
+ * SINs, hostile mobs, neutral npcs"). The officer shipped first; this
9
+ * is the mob, on the rails that officer proved.
10
+ *
11
+ * A GANG IS NOT A RESPONSE TEAM, and that distinction is the whole
12
+ * reason this is safe to add. The engine deliberately promises that
13
+ * NOBODY COMES when heat climbs (see Game.heatBand): SR5 p.352 and Run
14
+ * Faster p.220 put HTR response at 2D6 HOURS in a Zone 0 barrens, every
15
+ * shipped scene is a barrens district, and a player already reported
16
+ * the old lie -- "HTR assembling somewhere close, warning, but it never
17
+ * resulted in anything". Nothing arriving is the CORRECT outcome there.
18
+ *
19
+ * So this must never read as security responding to heat, or it
20
+ * reintroduces exactly the defect that was removed. It is not wired to
21
+ * heat at all. Gangers are territorial predators who were already
22
+ * standing on that corner: canon-supported and explicitly separate from
23
+ * HTR (core p.34-35 "street gangs claim territory ... and defend it
24
+ * against all comers, usually by challenging strangers to fights";
25
+ * Splintered State p.11 "law enforcement will not show up at any point
26
+ * -- this is the Barrens"; Run Faster p.220 on Zone 0).
27
+ *
28
+ * THEY DO NOT ATTACK ON SIGHT. They are spawned `hostile`, which per
29
+ * Player.hostile adds a REASON to the brief and nothing else -- the AI
30
+ * still chooses, and challenging, shaking down, or sizing you up are
31
+ * all likelier openings than shooting. That keeps the governor's
32
+ * founding property intact: an ephemeral voices, it does not rule.
33
+ */
34
+ /**
35
+ * PROFESSIONAL RATING 1 GANGER, canon stats (SR5 p.382, "Gangers &
36
+ * Street Scum"): B/A/R/S 4, W/L/I/C 3, with Blades, Clubs,
37
+ * Intimidation, Pistols and Unarmed Combat.
38
+ *
39
+ * Copied rather than invented, and deliberately NOT scaled up. Canon's
40
+ * own barrens encounter calls a gang ambush "a straightforward, quick,
41
+ * and easy fight" for runners (Splintered State p.11). A mob that
42
+ * threatened a professional crew would be a set piece, and a set piece
43
+ * is a scene NPC's job, not a passing face's.
44
+ */
45
+ const GANGER_COMBAT = {
46
+ body: 4, agility: 4, reaction: 4, strength: 4,
47
+ willpower: 3, logic: 3, intuition: 3, charisma: 3,
48
+ edge: 1, combatSkill: 3,
49
+ skills: { blades: 3, clubs: 3, intimidation: 3, firearms: 3, unarmed: 3, perception: 2 },
50
+ };
51
+ /** How often a street corner turns out to be somebody's corner. */
52
+ const GANG_CHANCE = 0.08;
53
+ /**
54
+ * The most that can ever be standing at once. THE CAP IS THE
55
+ * ACCUMULATION RULE (coordinator: a mob must NOT accumulate), and it is
56
+ * enforced against every ephemeral of this kind currently alive, not
57
+ * per spawn -- a per-spawn limit would let three quiet blocks in a row
58
+ * put nine gangers on the map.
59
+ */
60
+ const MAX_STANDING = 3;
61
+ const GANG_NAMES = ['Halloweener', 'Ancient', 'Cutter', 'Spike', 'Blood Mountain Boy'];
62
+ /**
63
+ * Maybe somebody is holding this corner. Returns the line to show, or
64
+ * '' for the overwhelmingly common case of nothing happening.
65
+ *
66
+ * NO AI, NO GOVERNOR (ruling, and the same branch the officer takes):
67
+ * with AI off nothing spawns and nothing is narrated, because a mute
68
+ * hostile stranger is worse than an empty street. The test asserts this
69
+ * path returns the empty string exactly.
70
+ */
71
+ export function maybeStreetGang(host, actor, room) {
72
+ if (!AI.isConfigured())
73
+ return '';
74
+ if (actor.plane !== 'meat')
75
+ return '';
76
+ // Gangs prowl STREETS. Indoors is somebody's premises, and whoever
77
+ // owns it is a scene NPC's job.
78
+ if (!isOutdoorsPlace(room))
79
+ return '';
80
+ if (host.gangedRooms.has(room.name))
81
+ return '';
82
+ // ALREADY-STANDING CHECK BEFORE THE ROLL, so a busy street cannot
83
+ // stack. Counted across the whole registry, which is what makes the
84
+ // cap mean "on the map" rather than "in this doorway".
85
+ const standing = [...host.ephemerals.values()].filter(m => m.kind === 'mob').length;
86
+ if (standing >= MAX_STANDING)
87
+ return '';
88
+ if (Math.random() >= GANG_CHANCE)
89
+ return '';
90
+ host.gangedRooms.add(room.name);
91
+ // Sized to what is left under the cap, never to the player's party:
92
+ // scaling opposition to the crew is a SCENE's job, and a passing
93
+ // shakedown that grew with the table would quietly become the set
94
+ // piece this is not.
95
+ const wanted = Math.min(2, MAX_STANDING - standing);
96
+ const spawned = [];
97
+ for (let i = 0; i < wanted; i++) {
98
+ const name = uniqueName(host, i);
99
+ if (!name)
100
+ break;
101
+ const npc = spawnEphemeral(host, {
102
+ name,
103
+ description: `a ganger holding this block -- colors on, hands loose, watching a stranger walk onto their corner. They are local muscle and nothing more: not security, not police, not anybody's employee, and they have never heard of whatever brought you here.`,
104
+ kind: 'mob',
105
+ // FIGHT-SCOPED, which for a territorial gang is also the honest
106
+ // reading of canon: they hold the block. Walk away without a
107
+ // fight and they let you go rather than following (see the
108
+ // despawn call in go.ts, which passes fightActive from the
109
+ // recency of your last exchange). Start something and they stay
110
+ // with it through the doorway.
111
+ until: 'fight',
112
+ room,
113
+ combat: GANGER_COMBAT,
114
+ });
115
+ if (!npc)
116
+ continue;
117
+ // OPPOSITION, not an ambush (Player.hostile): this gives them a
118
+ // reason, and the AI still chooses what to do with it.
119
+ npc.hostile = true;
120
+ spawned.push(npc.name);
121
+ }
122
+ if (spawned.length === 0)
123
+ return '';
124
+ Logger.getInstance().write(`Street gang on ${room.name}: ${spawned.join(', ')}.`);
125
+ return `{yellow-fg}This corner is somebody's corner. ${spawned.length === 1 ? `${spawned[0]} peels off a wall and squares up -- not in a hurry, just interested.` : `${spawned.join(' and ')} peel off a wall and spread out, unhurried, taking their time about it.`}{/yellow-fg}`;
126
+ }
127
+ /** A name nobody in the scene is already using. */
128
+ function uniqueName(host, offset) {
129
+ for (let i = 0; i < GANG_NAMES.length; i++) {
130
+ const base = GANG_NAMES[(offset + i) % GANG_NAMES.length];
131
+ for (const suffix of ['', ' (2)', ' (3)']) {
132
+ const candidate = `${base}${suffix}`;
133
+ if (!host.scene.getActor(candidate))
134
+ return candidate;
135
+ }
136
+ }
137
+ return undefined;
138
+ }
139
+ //# sourceMappingURL=street-gang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"street-gang.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/street-gang.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,8 @@ Command.create({
18
18
  { name: 'rawLogs', boolFlag: true, description: 'Display raw test output without formatting' },
19
19
  { name: 'port', description: 'Specify the port number for the test server' },
20
20
  { name: 'inspect', boolFlag: true, description: 'Enable Node.js inspector for debugging tests' },
21
- { name: 'testAppPath', description: 'Specify a custom path to the test app directory' }
21
+ { name: 'testAppPath', description: 'Specify a custom path to the test app directory' },
22
+ { name: 'settings', description: 'Path to a custom settings.json file (defaults to the resolved env config)' }
22
23
  ],
23
24
  usage: 'maka test:mocha',
24
25
  aliases: ['m'],
@@ -35,16 +36,8 @@ Command.create({
35
36
  }
36
37
  await this.pkg.checkNpmPackage('@testing-library/dom meteor-node-stubs chai', { shouldInstall: true });
37
38
  const env = (opts.env) ? this.cfg.getEnvFromShorthand(opts.env) : 'local';
38
- if (!opts.unit || !!opts.once) {
39
- args = args.concat([
40
- '--full-app'
41
- ]);
42
- }
43
- // meteor doesn't understand "unit"
44
- if (opts.unit) {
45
- delete opts.unit;
46
- }
47
- let driver = opts['driver-package'] || opts['driver'] || 'none';
39
+ const usePackages = !!opts.packages;
40
+ let driver = opts.driverPackage || opts.driver || 'none';
48
41
  if (driver === 'none') {
49
42
  const config = JSON.parse(fs.readFileSync(path.join(this.fsi.findProjectDirectory(), '.maka', 'config.json'), 'utf8'));
50
43
  if (config.engines.test === 'jasmine') {
@@ -57,12 +50,6 @@ Command.create({
57
50
  if (driver === 'none') {
58
51
  throw new Error('This project does not have a mocha test driver');
59
52
  }
60
- if (!opts['driver-package'] || !opts['driver']) {
61
- args = args.concat([
62
- '--driver-package',
63
- driver
64
- ]);
65
- }
66
53
  // always ensure local exists
67
54
  const localExists = this.cfg.checkConfigExists('local');
68
55
  if (!localExists) {
@@ -72,17 +59,10 @@ Command.create({
72
59
  }
73
60
  const configPath = this.cfg.getAppConfigPath(env);
74
61
  const processDotEnvPath = path.join(configPath, 'process.env');
75
- let settingsPath = path.join(configPath, 'settings.json');
76
62
  // allow settings override
77
- if (opts.settings) {
78
- settingsPath = opts.settings;
79
- }
80
- else {
81
- settingsPath = path.join(configPath, 'settings.json');
82
- }
63
+ const settingsPath = opts.settings || path.join(configPath, 'settings.json');
83
64
  // source the env file into the process environment
84
65
  if (this.fsi.isFile(processDotEnvPath)) {
85
- // Use path.relative to compute the relative path
86
66
  const relativeDotEnvPath = path.relative(process.cwd(), processDotEnvPath);
87
67
  Log.notice('Node Env Config: ' + relativeDotEnvPath);
88
68
  this.dotenvx.load(processDotEnvPath);
@@ -92,33 +72,55 @@ Command.create({
92
72
  Log.info('Cannot find Node Environment file, creating: ' + relativeDotEnvPath);
93
73
  await this.fsi.createFile({ filePath: processDotEnvPath, data: '' });
94
74
  }
75
+ // Meteor's own binary understands a completely different, kebab-case
76
+ // flag surface than the one this command advertises -- several of ours
77
+ // are camelCase aliases with no meteor equivalent under that spelling
78
+ // at all. Building meteorArgs explicitly from validated `opts`, rather
79
+ // than re-forwarding raw process.argv with ad-hoc filtering, is the
80
+ // only way to guarantee nothing maka-only or wrongly-cased leaks
81
+ // through to a binary that aborts on the first option it doesn't
82
+ // recognize. Confirmed against a real Meteor 3.5 install: --unit,
83
+ // --driverPackage, --rawLogs, --testAppPath, and a bare --driver each
84
+ // die with "--x: unknown option" and meteor's usage text instead of
85
+ // running anything; --env's VALUE leaked through too, as an orphaned
86
+ // positional argument, even in the old code's attempt to strip it.
87
+ const meteorArgs = [];
88
+ // --unit has no meteor flag of its own -- Meteor's own distinction is
89
+ // `test` (isolated/"unit") vs `test --full-app`. Its only real job is
90
+ // suppressing --full-app. --full-app is meaningless for test-packages
91
+ // (there is no "app" to run fully; every package test is already
92
+ // isolated by nature), so this only applies in `test` mode.
93
+ if (!usePackages && !opts.unit) {
94
+ meteorArgs.push('--full-app');
95
+ }
96
+ if (opts.once)
97
+ meteorArgs.push('--once');
98
+ // --raw-logs is `test`-only; test-packages has no such flag.
99
+ if (opts.rawLogs && !usePackages)
100
+ meteorArgs.push('--raw-logs');
101
+ if (opts.inspect)
102
+ meteorArgs.push('--inspect');
103
+ if (opts.port)
104
+ meteorArgs.push('--port', opts.port);
105
+ if (opts.testAppPath)
106
+ meteorArgs.push('--test-app-path', opts.testAppPath);
107
+ meteorArgs.push('--driver-package', driver);
95
108
  if (this.fsi.isFile(settingsPath)) {
96
- // Use path.relative to compute the relative path
97
109
  const relativeSettingsPath = path.relative(process.cwd(), settingsPath);
98
110
  Log.notice('Meteor Settings: ' + relativeSettingsPath);
99
- args = args.concat([
100
- '--settings',
101
- settingsPath
102
- ]);
111
+ meteorArgs.push('--settings', settingsPath);
103
112
  }
104
113
  else {
105
114
  const relativeSettingsPath = path.relative(process.cwd(), settingsPath);
106
115
  Log.warn('Cannot find Meteor Settings File: ' + relativeSettingsPath);
107
116
  }
108
- const processArgv = process.argv.slice(2)
109
- .filter(value => value !== '--env')
110
- .filter(value => value !== 'test')
111
- .filter(value => value !== args[0]);
112
- processArgv.forEach((arg, idx) => {
113
- if (arg === '--env' || arg === '--driver') {
114
- processArgv.splice(idx, 2);
115
- }
116
- if (arg === '--packages') {
117
- processArgv.splice(idx, 1);
118
- }
119
- });
120
- const cmd = (opts.packages) ? 'test-packages' : 'test';
121
- await this.mpi.invokeMeteorCommand(cmd, args.concat(processArgv));
117
+ // Positional args (e.g. package names/paths for test-packages) pass
118
+ // through as-is -- they were already separated from flags by the
119
+ // command framework, so there is nothing maka-only or mis-cased to
120
+ // translate here.
121
+ meteorArgs.push(...args);
122
+ const cmd = usePackages ? 'test-packages' : 'test';
123
+ await this.mpi.invokeMeteorCommand(cmd, meteorArgs);
122
124
  }
123
125
  catch (e) {
124
126
  console.error(e);
@@ -1 +1 @@
1
- {"version":3,"file":"mocha.sub.cmd.js","sourceRoot":"","sources":["../../../../../src/commands/testCmd/mocha.sub.cmd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mocha.sub.cmd.js","sourceRoot":"","sources":["../../../../../src/commands/testCmd/mocha.sub.cmd.ts"],"names":[],"mappings":"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"}
@@ -1,33 +1,19 @@
1
1
  import { Command } from '../command.js';
2
2
  import { Log } from '../tools/log/log.class.js';
3
- // `maka update maka` -- update the CLI itself, and nothing else.
4
- //
5
- // THE ARGUMENT IS MANDATORY AND LITERAL on purpose: "update" alone is the
6
- // kind of verb people aim at their PROJECT (dependencies, Meteor release),
7
- // and a bare `maka update` quietly replacing the CLI would be an answer to
8
- // a question nobody asked. validArgs pins the one accepted target; project
9
- // Meteor versions stay where they were (`maka version:use`,
10
- // `maka install meteor --release`).
11
- //
12
- // TWO INSTALL SHAPES, ONE COMMAND. A packaged binary fetches its successor
13
- // from the public dist repo's latest release, verifies GitHub's sha256
14
- // digest, and swaps itself in place -- no Node, no npm, no Meteor involved.
15
- // An npm-installed maka delegates to npm, which owns that install's layout.
16
- //
17
- // The flow itself lives in tools/self-update/update-maka.ts so the repro
18
- // version lock can offer "update now?" and act on a yes -- this file is
19
- // only the command's front door.
20
3
  Command.create({
21
4
  name: 'update',
22
- validOpts: [],
5
+ validOpts: [
6
+ { name: 'binary', boolFlag: true, description: 'From an npm install, switch to the standalone release binary instead of updating via npm (removes the npm install once the binary is verified on PATH)' },
7
+ ],
23
8
  validArgs: ['maka'],
24
9
  minArgLength: 1,
25
10
  usage: 'maka update maka',
26
11
  shortDesc: 'Updates the maka CLI itself to the latest release.',
27
12
  examples: [
28
13
  'maka update maka',
14
+ 'maka update maka --binary',
29
15
  ]
30
- }, async function (args) {
16
+ }, async function (args, opts) {
31
17
  try {
32
18
  if (args[0] !== 'maka') {
33
19
  Log.error('The only thing this command updates is the maka CLI itself: `maka update maka`.');
@@ -35,7 +21,7 @@ Command.create({
35
21
  process.exit(1);
36
22
  }
37
23
  const { updateMakaCli } = await import('../tools/self-update/update-maka.js');
38
- await updateMakaCli();
24
+ await updateMakaCli({ binary: opts.binary });
39
25
  }
40
26
  catch (e) {
41
27
  Log.error(`Update failed: ${e.message}`);
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAEhD,iEAAiE;AACjE,EAAE;AACF,0EAA0E;AAC1E,2EAA2E;AAC3E,2EAA2E;AAC3E,2EAA2E;AAC3E,4DAA4D;AAC5D,oCAAoC;AACpC,EAAE;AACF,2EAA2E;AAC3E,uEAAuE;AACvE,4EAA4E;AAC5E,4EAA4E;AAC5E,EAAE;AACF,yEAAyE;AACzE,wEAAwE;AACxE,iCAAiC;AAEjC,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,EAAE;IACb,SAAS,EAAE,CAAC,MAAM,CAAC;IACnB,YAAY,EAAE,CAAC;IACf,KAAK,EAAE,kBAAkB;IACzB,SAAS,EAAE,oDAAoD;IAC/D,QAAQ,EAAE;QACR,kBAAkB;KACnB;CACF,EAAE,KAAK,WAAW,IAAc;IAC/B,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;YACvB,GAAG,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC;YAC7F,GAAG,CAAC,MAAM,CAAC,qGAAqG,CAAC,CAAC;YAClH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,qCAAqC,CAAC,CAAC;QAC9E,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,KAAK,CAAC,kBAAmB,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AA6BhD,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE;QACT,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,wJAAwJ,EAAE;KAC1M;IACD,SAAS,EAAE,CAAC,MAAM,CAAC;IACnB,YAAY,EAAE,CAAC;IACf,KAAK,EAAE,kBAAkB;IACzB,SAAS,EAAE,oDAAoD;IAC/D,QAAQ,EAAE;QACR,kBAAkB;QAClB,2BAA2B;KAC5B;CACF,EAAE,KAAK,WAAW,IAAc,EAAE,IAAiB;IAClD,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;YACvB,GAAG,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC;YAC7F,GAAG,CAAC,MAAM,CAAC,qGAAqG,CAAC,CAAC;YAClH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,qCAAqC,CAAC,CAAC;QAC9E,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,KAAK,CAAC,kBAAmB,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}