lim 0.27.0 → 0.27.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 (59) hide show
  1. package/README.md +11 -0
  2. package/dist/base-command.d.ts +2 -0
  3. package/dist/base-command.d.ts.map +1 -1
  4. package/dist/base-command.js +12 -0
  5. package/dist/base-command.js.map +1 -1
  6. package/dist/commands/asset/push.d.ts +1 -0
  7. package/dist/commands/asset/push.d.ts.map +1 -1
  8. package/dist/commands/asset/push.js +14 -0
  9. package/dist/commands/asset/push.js.map +1 -1
  10. package/dist/commands/gradle/build.d.ts.map +1 -1
  11. package/dist/commands/gradle/build.js +5 -1
  12. package/dist/commands/gradle/build.js.map +1 -1
  13. package/dist/commands/run.d.ts +2 -0
  14. package/dist/commands/run.d.ts.map +1 -1
  15. package/dist/commands/run.js +66 -20
  16. package/dist/commands/run.js.map +1 -1
  17. package/dist/commands/skills/install.d.ts.map +1 -1
  18. package/dist/commands/skills/install.js +26 -0
  19. package/dist/commands/skills/install.js.map +1 -1
  20. package/dist/commands/xcode/build.d.ts +1 -0
  21. package/dist/commands/xcode/build.d.ts.map +1 -1
  22. package/dist/commands/xcode/build.js +19 -2
  23. package/dist/commands/xcode/build.js.map +1 -1
  24. package/dist/commands/xcode/run.d.ts.map +1 -1
  25. package/dist/commands/xcode/run.js +5 -1
  26. package/dist/commands/xcode/run.js.map +1 -1
  27. package/dist/lib/auth.d.ts +3 -0
  28. package/dist/lib/auth.d.ts.map +1 -1
  29. package/dist/lib/auth.js +53 -29
  30. package/dist/lib/auth.js.map +1 -1
  31. package/dist/lib/auth.test.d.ts +2 -0
  32. package/dist/lib/auth.test.d.ts.map +1 -0
  33. package/dist/lib/auth.test.js +78 -0
  34. package/dist/lib/auth.test.js.map +1 -0
  35. package/dist/lib/onboarding-telemetry.test.d.ts +2 -0
  36. package/dist/lib/onboarding-telemetry.test.d.ts.map +1 -0
  37. package/dist/lib/onboarding-telemetry.test.js +87 -0
  38. package/dist/lib/onboarding-telemetry.test.js.map +1 -0
  39. package/dist/lib/onboarding.d.ts +3 -1
  40. package/dist/lib/onboarding.d.ts.map +1 -1
  41. package/dist/lib/onboarding.js +37 -4
  42. package/dist/lib/onboarding.js.map +1 -1
  43. package/dist/lib/telemetry-config.d.ts +3 -0
  44. package/dist/lib/telemetry-config.d.ts.map +1 -0
  45. package/dist/lib/telemetry-config.js +8 -0
  46. package/dist/lib/telemetry-config.js.map +1 -0
  47. package/dist/lib/telemetry.d.ts +28 -0
  48. package/dist/lib/telemetry.d.ts.map +1 -0
  49. package/dist/lib/telemetry.js +223 -0
  50. package/dist/lib/telemetry.js.map +1 -0
  51. package/dist/lib/telemetry.test.d.ts +2 -0
  52. package/dist/lib/telemetry.test.d.ts.map +1 -0
  53. package/dist/lib/telemetry.test.js +161 -0
  54. package/dist/lib/telemetry.test.js.map +1 -0
  55. package/dist/lib/upload-options.d.ts +8 -0
  56. package/dist/lib/upload-options.d.ts.map +1 -0
  57. package/dist/lib/upload-options.js +34 -0
  58. package/dist/lib/upload-options.js.map +1 -0
  59. package/package.json +3 -3
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_fs_1 = __importDefault(require("node:fs"));
7
+ const node_os_1 = __importDefault(require("node:os"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const telemetry_1 = require("./telemetry");
10
+ const UUID = '7cbf5b3d-a2bb-4b5f-92d7-48ec09e025f8';
11
+ describe('CLI telemetry', () => {
12
+ let tempDir;
13
+ let previousDisableTelemetry;
14
+ beforeEach(() => {
15
+ tempDir = node_fs_1.default.mkdtempSync(node_path_1.default.join(node_os_1.default.tmpdir(), 'lim-telemetry-test-'));
16
+ previousDisableTelemetry = process.env['LIM_DISABLE_TELEMETRY'];
17
+ delete process.env['LIM_DISABLE_TELEMETRY'];
18
+ });
19
+ afterEach(() => {
20
+ node_fs_1.default.rmSync(tempDir, { recursive: true, force: true });
21
+ if (previousDisableTelemetry === undefined) {
22
+ delete process.env['LIM_DISABLE_TELEMETRY'];
23
+ }
24
+ else {
25
+ process.env['LIM_DISABLE_TELEMETRY'] = previousDisableTelemetry;
26
+ }
27
+ });
28
+ it('persists one stable random installation ID', () => {
29
+ const filePath = node_path_1.default.join(tempDir, 'telemetry.json');
30
+ const uuid = jest.fn(() => UUID);
31
+ expect((0, telemetry_1.getOrCreateInstallationId)({ filePath, uuid })).toBe(UUID);
32
+ expect((0, telemetry_1.getOrCreateInstallationId)({ filePath, uuid })).toBe(UUID);
33
+ expect(uuid).toHaveBeenCalledTimes(1);
34
+ expect(JSON.parse(node_fs_1.default.readFileSync(filePath, 'utf8'))).toEqual({
35
+ version: 1,
36
+ installationId: UUID,
37
+ });
38
+ });
39
+ it('is a no-op when configuration is unavailable or telemetry is disabled', async () => {
40
+ const fetcher = jest.fn();
41
+ const filePath = node_path_1.default.join(tempDir, 'telemetry.json');
42
+ await expect((0, telemetry_1.captureTelemetry)('cli_auth_started', {}, { fetcher, filePath })).resolves.toBe(false);
43
+ process.env['LIM_DISABLE_TELEMETRY'] = '1';
44
+ await expect((0, telemetry_1.captureTelemetry)('cli_auth_started', {}, {
45
+ endpoint: 'https://us.i.posthog.com',
46
+ projectKey: 'phc_public',
47
+ fetcher,
48
+ filePath,
49
+ })).resolves.toBe(false);
50
+ expect(fetcher).not.toHaveBeenCalled();
51
+ expect(node_fs_1.default.existsSync(filePath)).toBe(false);
52
+ });
53
+ it('fails open on network errors', async () => {
54
+ const fetcher = jest
55
+ .fn()
56
+ .mockRejectedValue(new Error('offline'));
57
+ await expect((0, telemetry_1.captureTelemetry)('skills_install_started', { entrypoint: 'skills_command' }, {
58
+ endpoint: 'https://us.i.posthog.com',
59
+ projectKey: 'phc_public',
60
+ fetcher,
61
+ installationId: UUID,
62
+ })).resolves.toBe(false);
63
+ });
64
+ it('bounds delivery even when the network call never settles', async () => {
65
+ const fetcher = jest.fn(() => new Promise(() => { }));
66
+ await expect((0, telemetry_1.captureTelemetry)('build_requested', { build_system: 'xcode' }, {
67
+ endpoint: 'https://us.i.posthog.com',
68
+ projectKey: 'phc_public',
69
+ fetcher,
70
+ installationId: UUID,
71
+ timeoutMs: 5,
72
+ })).resolves.toBe(false);
73
+ });
74
+ it('redacts sensitive names and values while preserving coarse properties', async () => {
75
+ const fetcher = jest
76
+ .fn()
77
+ .mockResolvedValue(new Response(null, { status: 200 }));
78
+ const properties = (0, telemetry_1.sanitizeTelemetryProperties)({
79
+ entrypoint: 'onboarding',
80
+ skill_count: 2,
81
+ api_key: 'lim_secret',
82
+ repository: 'limrun/private',
83
+ project_path: '/Users/alice/private-project',
84
+ contact: 'alice@example.com',
85
+ documentation: 'https://private.example.test',
86
+ });
87
+ expect(properties).toEqual({ entrypoint: 'onboarding', skill_count: 2 });
88
+ await (0, telemetry_1.captureTelemetry)('instance_create_requested', {
89
+ ...properties,
90
+ organization_tid: 'org_123',
91
+ }, {
92
+ endpoint: 'https://us.i.posthog.com',
93
+ projectKey: 'phc_public',
94
+ fetcher,
95
+ installationId: UUID,
96
+ });
97
+ const [, init] = fetcher.mock.calls[0];
98
+ const body = JSON.parse(String(init?.body));
99
+ expect(body.api_key).toBe('phc_public');
100
+ expect(body.event).toBe('instance_create_requested');
101
+ expect(body.properties).toMatchObject({
102
+ distinct_id: UUID,
103
+ schema_version: 1,
104
+ source: 'cli',
105
+ entrypoint: 'onboarding',
106
+ skill_count: 2,
107
+ organization_tid: 'org_123',
108
+ $groups: { organization: 'org_123' },
109
+ });
110
+ expect(JSON.stringify(body.properties)).not.toContain('lim_secret');
111
+ expect(JSON.stringify(body.properties)).not.toContain('/Users/alice');
112
+ });
113
+ it('keeps only coarse lim run lifecycle properties', () => {
114
+ expect((0, telemetry_1.sanitizeTelemetryProperties)({
115
+ project_kind: 'expo',
116
+ flow: 'existing_project',
117
+ quiet: false,
118
+ duration_ms: 1234,
119
+ failure_stage: 'build',
120
+ error_category: 'validation',
121
+ project_path: '/Users/alice/private-project',
122
+ error_message: '/Users/alice/private-project failed with a secret',
123
+ })).toEqual({
124
+ project_kind: 'expo',
125
+ flow: 'existing_project',
126
+ quiet: false,
127
+ duration_ms: 1234,
128
+ failure_stage: 'build',
129
+ error_category: 'validation',
130
+ });
131
+ });
132
+ it('reduces create and build command hooks to high-level intent', () => {
133
+ expect((0, telemetry_1.telemetryIntentForCommand)('ios:create', {
134
+ region: 'private-region-value',
135
+ xcode: true,
136
+ 'reuse-if-exists': true,
137
+ install: ['/Users/alice/private.ipa'],
138
+ })).toEqual({
139
+ event: 'instance_create_requested',
140
+ properties: {
141
+ platform: 'ios',
142
+ create_kind: 'ios_with_xcode',
143
+ region_selected: true,
144
+ reuse_requested: true,
145
+ },
146
+ });
147
+ expect((0, telemetry_1.telemetryIntentForCommand)('xcode:build', {
148
+ id: 'sandbox_secret',
149
+ path: '/Users/alice/private-project',
150
+ detach: true,
151
+ })).toEqual({
152
+ event: 'build_requested',
153
+ properties: {
154
+ build_system: 'xcode',
155
+ detached: true,
156
+ explicit_target: true,
157
+ },
158
+ });
159
+ });
160
+ });
161
+ //# sourceMappingURL=telemetry.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.test.js","sourceRoot":"","sources":["../../src/lib/telemetry.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { AssetUploadOptions } from '@limrun/api';
2
+ /**
3
+ * Parses repeated --upload-option key=value flags into the app metadata
4
+ * recorded on the uploaded asset. All fields are optional; consumers like
5
+ * the registry's OTA install flow use whichever are present.
6
+ */
7
+ export declare function parseUploadOptions(values?: string[]): AssetUploadOptions | undefined;
8
+ //# sourceMappingURL=upload-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-options.d.ts","sourceRoot":"","sources":["../../src/lib/upload-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAUtD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,kBAAkB,GAAG,SAAS,CAmBpF"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseUploadOptions = parseUploadOptions;
4
+ const uploadOptionKeys = [
5
+ 'displayName',
6
+ 'bundleIdentifier',
7
+ 'shortVersion',
8
+ 'buildVersion',
9
+ 'deeplink',
10
+ ];
11
+ /**
12
+ * Parses repeated --upload-option key=value flags into the app metadata
13
+ * recorded on the uploaded asset. All fields are optional; consumers like
14
+ * the registry's OTA install flow use whichever are present.
15
+ */
16
+ function parseUploadOptions(values) {
17
+ if (!values || values.length === 0) {
18
+ return undefined;
19
+ }
20
+ const options = {};
21
+ for (const value of values) {
22
+ const separator = value.indexOf('=');
23
+ if (separator <= 0) {
24
+ throw new Error(`--upload-option must be key=value, got ${JSON.stringify(value)}`);
25
+ }
26
+ const key = value.slice(0, separator);
27
+ if (!uploadOptionKeys.includes(key)) {
28
+ throw new Error(`--upload-option key must be one of ${uploadOptionKeys.join(', ')}, got ${JSON.stringify(key)}`);
29
+ }
30
+ options[key] = value.slice(separator + 1);
31
+ }
32
+ return options;
33
+ }
34
+ //# sourceMappingURL=upload-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-options.js","sourceRoot":"","sources":["../../src/lib/upload-options.ts"],"names":[],"mappings":";;AAeA,gDAmBC;AAhCD,MAAM,gBAAgB,GAAG;IACvB,aAAa;IACb,kBAAkB;IAClB,cAAc;IACd,cAAc;IACd,UAAU;CACF,CAAC;AAEX;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,MAAiB;IAClD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,OAAO,GAAuB,EAAE,CAAC;IACvC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAsC,CAAC;QAC3E,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CACb,sCAAsC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAChG,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lim",
3
- "version": "0.27.0",
3
+ "version": "0.27.2",
4
4
  "description": "Use remote XCode, Gradle, iOS Simulator, Android Emulator and more to build and test apps from Linux, Windows or macOS.",
5
5
  "bin": {
6
6
  "lim": "./bin/run.js"
@@ -17,7 +17,7 @@
17
17
  },
18
18
  "license": "Apache-2.0",
19
19
  "scripts": {
20
- "prebuild": "yarn --cwd ../.. build",
20
+ "prebuild": "node scripts/generate-telemetry-config.mjs && yarn --cwd ../.. build",
21
21
  "build": "rm -rf dist && tsc",
22
22
  "dev": "node bin/dev.js",
23
23
  "prepublishOnly": "tsc --noEmit -p tsconfig.publish.json && npm run build",
@@ -25,7 +25,7 @@
25
25
  "test": "jest"
26
26
  },
27
27
  "dependencies": {
28
- "@limrun/api": "0.46.8",
28
+ "@limrun/api": "^0.46.10",
29
29
  "@oclif/core": "^4",
30
30
  "cli-progress": "^3.12.0",
31
31
  "cli-table3": "^0.6.5",