create-nx-workspace 22.4.1 → 22.5.0-canary.20260122-05de3ff
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/bin/create-nx-workspace.d.ts.map +1 -1
- package/bin/create-nx-workspace.js +27 -4
- package/package.json +1 -1
- package/src/create-workspace-options.d.ts +9 -0
- package/src/create-workspace-options.d.ts.map +1 -1
- package/src/create-workspace.d.ts.map +1 -1
- package/src/create-workspace.js +11 -2
- package/src/utils/git/git.d.ts +5 -0
- package/src/utils/git/git.d.ts.map +1 -1
- package/src/utils/git/git.js +14 -0
- package/src/utils/nx/ab-testing.d.ts +1 -0
- package/src/utils/nx/ab-testing.d.ts.map +1 -1
- package/src/utils/nx/ab-testing.js +9 -1
- package/src/utils/nx/messages.js +2 -2
- package/src/utils/nx/nx-cloud.d.ts +1 -1
- package/src/utils/nx/nx-cloud.d.ts.map +1 -1
- package/src/utils/nx/nx-cloud.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-nx-workspace.d.ts","sourceRoot":"","sources":["../../../../packages/create-nx-workspace/bin/create-nx-workspace.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EACL,sBAAsB,EAEvB,MAAM,iCAAiC,CAAC;AAKzC,OAAO,EAAiB,MAAM,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"create-nx-workspace.d.ts","sourceRoot":"","sources":["../../../../packages/create-nx-workspace/bin/create-nx-workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@ const ab_testing_1 = require("../src/utils/nx/ab-testing");
|
|
|
19
19
|
const error_utils_1 = require("../src/utils/error-utils");
|
|
20
20
|
const fs_1 = require("fs");
|
|
21
21
|
const is_ci_1 = require("../src/utils/ci/is-ci");
|
|
22
|
+
const git_1 = require("../src/utils/git/git");
|
|
22
23
|
function extractErrorFile(error) {
|
|
23
24
|
if (!error.stack)
|
|
24
25
|
return undefined;
|
|
@@ -292,10 +293,29 @@ async function normalizeArgsMiddleware(argv) {
|
|
|
292
293
|
// Template flow - respects CLI arg, otherwise uses detected package manager (from invoking command)
|
|
293
294
|
argv.template = template;
|
|
294
295
|
const aiAgents = await (0, prompts_1.determineAiAgents)(argv);
|
|
295
|
-
|
|
296
|
-
const
|
|
297
|
-
|
|
298
|
-
|
|
296
|
+
// Track GH CLI availability for telemetry
|
|
297
|
+
const ghAvailable = (0, git_1.isGhCliAvailable)();
|
|
298
|
+
let nxCloud;
|
|
299
|
+
let completionMessageKey;
|
|
300
|
+
if (argv.skipGit === true) {
|
|
301
|
+
nxCloud = 'skip';
|
|
302
|
+
completionMessageKey = undefined;
|
|
303
|
+
}
|
|
304
|
+
else if ((0, ab_testing_1.getFlowVariant)() === '1') {
|
|
305
|
+
// Variant 1 (NXC-3628): Skip cloud prompt, always show platform link
|
|
306
|
+
// Respect --nxCloud=skip if explicitly provided
|
|
307
|
+
nxCloud = argv.nxCloud === 'skip' ? 'skip' : 'yes';
|
|
308
|
+
completionMessageKey =
|
|
309
|
+
nxCloud === 'skip' ? undefined : 'platform-setup';
|
|
310
|
+
}
|
|
311
|
+
else {
|
|
312
|
+
// Variant 0: Current behavior - show cloud prompt
|
|
313
|
+
nxCloud = await (0, prompts_1.determineNxCloudV2)(argv);
|
|
314
|
+
completionMessageKey =
|
|
315
|
+
nxCloud === 'skip'
|
|
316
|
+
? undefined
|
|
317
|
+
: ab_testing_1.messages.completionMessageOfSelectedPrompt('setupNxCloudV2');
|
|
318
|
+
}
|
|
299
319
|
packageManager = argv.packageManager ?? (0, package_manager_1.detectInvokedPackageManager)();
|
|
300
320
|
Object.assign(argv, {
|
|
301
321
|
nxCloud,
|
|
@@ -304,6 +324,8 @@ async function normalizeArgsMiddleware(argv) {
|
|
|
304
324
|
packageManager,
|
|
305
325
|
defaultBase: 'main',
|
|
306
326
|
aiAgents,
|
|
327
|
+
ghAvailable,
|
|
328
|
+
skipCloudConnect: (0, ab_testing_1.getFlowVariant)() === '1',
|
|
307
329
|
});
|
|
308
330
|
await (0, ab_testing_1.recordStat)({
|
|
309
331
|
nxVersion: nx_version_1.nxVersion,
|
|
@@ -316,6 +338,7 @@ async function normalizeArgsMiddleware(argv) {
|
|
|
316
338
|
preset: '',
|
|
317
339
|
nodeVersion: process.versions.node ?? '',
|
|
318
340
|
packageManager,
|
|
341
|
+
ghAvailable: ghAvailable ? 'true' : 'false',
|
|
319
342
|
},
|
|
320
343
|
});
|
|
321
344
|
}
|
package/package.json
CHANGED
|
@@ -40,6 +40,15 @@ export interface CreateWorkspaceOptions {
|
|
|
40
40
|
};
|
|
41
41
|
cliName?: string;
|
|
42
42
|
aiAgents?: Agent[];
|
|
43
|
+
/**
|
|
44
|
+
* @description Skip cloud connection (variant 1 experiment - NXC-3628)
|
|
45
|
+
* @default false
|
|
46
|
+
*/
|
|
47
|
+
skipCloudConnect?: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* @description Whether GitHub CLI (gh) is available on the system (for telemetry)
|
|
50
|
+
*/
|
|
51
|
+
ghAvailable?: boolean;
|
|
43
52
|
}
|
|
44
53
|
export declare const supportedAgents: readonly ["claude", "codex", "copilot", "cursor", "gemini"];
|
|
45
54
|
export type Agent = (typeof supportedAgents)[number];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-workspace-options.d.ts","sourceRoot":"","sources":["../../../../packages/create-nx-workspace/src/create-workspace-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,cAAc,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"create-workspace-options.d.ts","sourceRoot":"","sources":["../../../../packages/create-nx-workspace/src/create-workspace-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,cAAc,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;IACnB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,eAAe,6DAMlB,CAAC;AACX,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AACrD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAMjD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-workspace.d.ts","sourceRoot":"","sources":["../../../../packages/create-nx-workspace/src/create-workspace.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,OAAO,EAGL,aAAa,EACd,MAAM,iBAAiB,CAAC;AAsBzB,wBAAgB,4BAA4B,IAAI;IAC9C,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,CAEA;AAED,wBAAsB,eAAe,CAAC,CAAC,SAAS,sBAAsB,EACpE,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,EACV,OAAO,CAAC,EAAE,CAAC;;;;;
|
|
1
|
+
{"version":3,"file":"create-workspace.d.ts","sourceRoot":"","sources":["../../../../packages/create-nx-workspace/src/create-workspace.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,OAAO,EAGL,aAAa,EACd,MAAM,iBAAiB,CAAC;AAsBzB,wBAAgB,4BAA4B,IAAI;IAC9C,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,CAEA;AAED,wBAAsB,eAAe,CAAC,CAAC,SAAS,sBAAsB,EACpE,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,EACV,OAAO,CAAC,EAAE,CAAC;;;;;GAyLZ;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI7D"}
|
package/src/create-workspace.js
CHANGED
|
@@ -62,7 +62,8 @@ async function createWorkspace(preset, options, rawArgs) {
|
|
|
62
62
|
throw e;
|
|
63
63
|
}
|
|
64
64
|
// Connect to Nx Cloud for template flow
|
|
65
|
-
|
|
65
|
+
// For variant 1 (NXC-3628): Skip connection, use GitHub flow for URL generation
|
|
66
|
+
if (nxCloud !== 'skip' && !options.skipCloudConnect) {
|
|
66
67
|
await (0, nx_cloud_1.connectToNxCloudForTemplate)(directory, 'create-nx-workspace', useGitHub);
|
|
67
68
|
}
|
|
68
69
|
}
|
|
@@ -127,7 +128,15 @@ async function createWorkspace(preset, options, rawArgs) {
|
|
|
127
128
|
let connectUrl;
|
|
128
129
|
let nxCloudInfo;
|
|
129
130
|
if (nxCloud !== 'skip') {
|
|
130
|
-
|
|
131
|
+
// For variant 1 (skipCloudConnect=true): Skip readNxCloudToken() entirely
|
|
132
|
+
// - We didn't call connectToNxCloudForTemplate(), so no token exists
|
|
133
|
+
// - The spinner message "Checking Nx Cloud setup" would be misleading
|
|
134
|
+
// - createNxCloudOnboardingUrl() uses GitHub flow which sends accessToken: null
|
|
135
|
+
//
|
|
136
|
+
// For variant 0: Read the token as before (cloud was connected)
|
|
137
|
+
const token = options.skipCloudConnect
|
|
138
|
+
? undefined
|
|
139
|
+
: (0, nx_cloud_1.readNxCloudToken)(directory);
|
|
131
140
|
connectUrl = await (0, nx_cloud_1.createNxCloudOnboardingUrl)(nxCloud, token, directory, useGitHub);
|
|
132
141
|
// Store for SIGINT handler
|
|
133
142
|
cloudConnectUrl = connectUrl;
|
package/src/utils/git/git.d.ts
CHANGED
|
@@ -14,6 +14,11 @@ export declare function checkGitVersion(): Promise<string | null | undefined>;
|
|
|
14
14
|
* Returns true if git command can be executed, false otherwise.
|
|
15
15
|
*/
|
|
16
16
|
export declare function isGitAvailable(): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Synchronously checks if GitHub CLI (gh) is available on the system.
|
|
19
|
+
* Returns true if gh command can be executed, false otherwise.
|
|
20
|
+
*/
|
|
21
|
+
export declare function isGhCliAvailable(): boolean;
|
|
17
22
|
export declare function initializeGitRepo(directory: string, options: {
|
|
18
23
|
defaultBase: string;
|
|
19
24
|
commit?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../../../../packages/create-nx-workspace/src/utils/git/git.ts"],"names":[],"mappings":"AAMA,oBAAY,aAAa;IACvB,WAAW,gBAAgB;IAC3B,sBAAsB,2BAA2B;IACjD,iBAAiB,sBAAsB;IACvC,UAAU,eAAe;CAC1B;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,SAAgB,KAAK,yBAAyB;gBAElC,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAQ1E;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAOxC;AA0ED,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IACP,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,iBAsDF;AAED,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IACP,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GACA,OAAO,CAAC,aAAa,CAAC,CAuHxB"}
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../../../../packages/create-nx-workspace/src/utils/git/git.ts"],"names":[],"mappings":"AAMA,oBAAY,aAAa;IACvB,WAAW,gBAAgB;IAC3B,sBAAsB,2BAA2B;IACjD,iBAAiB,sBAAsB;IACvC,UAAU,eAAe;CAC1B;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,SAAgB,KAAK,yBAAyB;gBAElC,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAQ1E;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAOxC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAO1C;AA0ED,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IACP,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,iBAsDF;AAED,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IACP,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GACA,OAAO,CAAC,aAAa,CAAC,CAuHxB"}
|
package/src/utils/git/git.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.GitHubPushSkippedError = exports.VcsPushStatus = void 0;
|
|
4
4
|
exports.checkGitVersion = checkGitVersion;
|
|
5
5
|
exports.isGitAvailable = isGitAvailable;
|
|
6
|
+
exports.isGhCliAvailable = isGhCliAvailable;
|
|
6
7
|
exports.initializeGitRepo = initializeGitRepo;
|
|
7
8
|
exports.pushToGitHub = pushToGitHub;
|
|
8
9
|
const child_process_1 = require("child_process");
|
|
@@ -48,6 +49,19 @@ function isGitAvailable() {
|
|
|
48
49
|
return false;
|
|
49
50
|
}
|
|
50
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Synchronously checks if GitHub CLI (gh) is available on the system.
|
|
54
|
+
* Returns true if gh command can be executed, false otherwise.
|
|
55
|
+
*/
|
|
56
|
+
function isGhCliAvailable() {
|
|
57
|
+
try {
|
|
58
|
+
(0, child_process_1.execSync)('gh --version', { stdio: 'ignore' });
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
51
65
|
async function getGitHubUsername(directory) {
|
|
52
66
|
const result = await (0, child_process_utils_1.execAndWait)('gh api user --jq .login', directory);
|
|
53
67
|
const username = result.stdout.trim();
|
|
@@ -59,6 +59,7 @@ export interface RecordStatMetaPrecreate {
|
|
|
59
59
|
preset: string;
|
|
60
60
|
nodeVersion: string;
|
|
61
61
|
packageManager: string;
|
|
62
|
+
ghAvailable?: string;
|
|
62
63
|
}
|
|
63
64
|
export type RecordStatMeta = RecordStatMetaStart | RecordStatMetaComplete | RecordStatMetaError | RecordStatMetaCancel | RecordStatMetaPrecreate;
|
|
64
65
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ab-testing.d.ts","sourceRoot":"","sources":["../../../../../../packages/create-nx-workspace/src/utils/nx/ab-testing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ab-testing.d.ts","sourceRoot":"","sources":["../../../../../../packages/create-nx-workspace/src/utils/nx/ab-testing.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AA8DvD;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAKvC;AAED,eAAO,MAAM,cAAc,UAQ1B,CAAC;AAEF,QAAA,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAsGjD,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,cAAc,CAAC;AACrD,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,UAAU,CAAA;KAAE,CAAC;IAC9C,iBAAiB,EAAE,oBAAoB,CAAC;CACzC;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,gBAAgB,CAAwC;IAEhE,SAAS,CAAC,GAAG,EAAE,UAAU,GAAG,WAAW;IAavC,2BAA2B,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM;IAQpD,iCAAiC,CAAC,GAAG,EAAE,UAAU,GAAG,oBAAoB;CAQzE;AAED,eAAO,MAAM,QAAQ,gBAAuB,CAAC;AAS7C;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,UAAU,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,cAAc,GACtB,mBAAmB,GACnB,sBAAsB,GACtB,mBAAmB,GACnB,oBAAoB,GACpB,uBAAuB,CAAC;AAE5B;;;GAGG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;CACtB,iBAuBA"}
|
|
@@ -18,8 +18,16 @@ function readCachedFlowVariant() {
|
|
|
18
18
|
if (!(0, node_fs_1.existsSync)(FLOW_VARIANT_CACHE_FILE))
|
|
19
19
|
return null;
|
|
20
20
|
const stats = (0, node_fs_1.statSync)(FLOW_VARIANT_CACHE_FILE);
|
|
21
|
-
if (Date.now() - stats.mtimeMs > FLOW_VARIANT_EXPIRY_MS)
|
|
21
|
+
if (Date.now() - stats.mtimeMs > FLOW_VARIANT_EXPIRY_MS) {
|
|
22
|
+
// Delete expired file so a new variant can be written
|
|
23
|
+
try {
|
|
24
|
+
(0, node_fs_1.unlinkSync)(FLOW_VARIANT_CACHE_FILE);
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// Ignore delete errors
|
|
28
|
+
}
|
|
22
29
|
return null;
|
|
30
|
+
}
|
|
23
31
|
const value = (0, node_fs_1.readFileSync)(FLOW_VARIANT_CACHE_FILE, 'utf-8').trim();
|
|
24
32
|
return value === '0' || value === '1' ? value : null;
|
|
25
33
|
}
|
package/src/utils/nx/messages.js
CHANGED
|
@@ -9,10 +9,10 @@ function getSetupMessage(url, pushedToVcs) {
|
|
|
9
9
|
? `Go to Nx Cloud and finish the setup: ${url}`
|
|
10
10
|
: 'Return to Nx Cloud and finish the setup.';
|
|
11
11
|
}
|
|
12
|
-
//
|
|
12
|
+
// User hasn't pushed - include github.com/new hint
|
|
13
13
|
const action = url ? 'go' : 'return';
|
|
14
14
|
const urlSuffix = url ? `: ${url}` : '.';
|
|
15
|
-
return `Push your repo, then ${action} to Nx Cloud and finish the setup${urlSuffix}`;
|
|
15
|
+
return `Push your repo (https://github.com/new), then ${action} to Nx Cloud and finish the setup${urlSuffix}`;
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
18
|
* Completion messages shown after workspace creation.
|
|
@@ -3,7 +3,7 @@ import { CompletionMessageKey } from './messages';
|
|
|
3
3
|
export type NxCloud = 'yes' | 'github' | 'gitlab' | 'azure' | 'bitbucket-pipelines' | 'circleci' | 'skip';
|
|
4
4
|
export declare function connectToNxCloudForTemplate(directory: string, installationSource: string, useGitHub?: boolean): Promise<string | null>;
|
|
5
5
|
export declare function readNxCloudToken(directory: string): string;
|
|
6
|
-
export declare function createNxCloudOnboardingUrl(nxCloud: NxCloud, token: string, directory: string, useGitHub?: boolean): Promise<string>;
|
|
6
|
+
export declare function createNxCloudOnboardingUrl(nxCloud: NxCloud, token: string | undefined, directory: string, useGitHub?: boolean): Promise<string>;
|
|
7
7
|
export declare function getNxCloudInfo(connectCloudUrl: string, pushedToVcs: VcsPushStatus, completionMessageKey?: CompletionMessageKey): Promise<string>;
|
|
8
8
|
export declare function getSkippedNxCloudInfo(): string;
|
|
9
9
|
//# sourceMappingURL=nx-cloud.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nx-cloud.d.ts","sourceRoot":"","sources":["../../../../../../packages/create-nx-workspace/src/utils/nx/nx-cloud.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAGL,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAIpB,MAAM,MAAM,OAAO,GACf,KAAK,GACL,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,qBAAqB,GACrB,UAAU,GACV,MAAM,CAAC;AAEX,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,EACjB,kBAAkB,EAAE,MAAM,EAC1B,SAAS,CAAC,EAAE,OAAO,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+BxB;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,UAgBjD;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"nx-cloud.d.ts","sourceRoot":"","sources":["../../../../../../packages/create-nx-workspace/src/utils/nx/nx-cloud.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAGL,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAIpB,MAAM,MAAM,OAAO,GACf,KAAK,GACL,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,qBAAqB,GACrB,UAAU,GACV,MAAM,CAAC;AAEX,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,EACjB,kBAAkB,EAAE,MAAM,EAC1B,SAAS,CAAC,EAAE,OAAO,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+BxB;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,UAgBjD;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,OAAO,GAClB,OAAO,CAAC,MAAM,CAAC,CA6BjB;AAED,wBAAsB,cAAc,CAClC,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,aAAa,EAC1B,oBAAoB,CAAC,EAAE,oBAAoB,mBAU5C;AAED,wBAAgB,qBAAqB,WAIpC"}
|
package/src/utils/nx/nx-cloud.js
CHANGED
|
@@ -54,7 +54,7 @@ async function createNxCloudOnboardingUrl(nxCloud, token, directory, useGitHub)
|
|
|
54
54
|
const source = nxCloud === 'yes'
|
|
55
55
|
? 'create-nx-workspace-success-cache-setup'
|
|
56
56
|
: 'create-nx-workspace-success-ci-setup';
|
|
57
|
-
const meta = ab_testing_1.
|
|
57
|
+
const meta = `variant-${(0, ab_testing_1.getFlowVariant)()}`;
|
|
58
58
|
return createNxCloudOnboardingURL(source, token, meta, false, useGitHub ??
|
|
59
59
|
(nxCloud === 'yes' || nxCloud === 'github' || nxCloud === 'circleci'), directory);
|
|
60
60
|
}
|