@atlasauth/cli 0.17.0 → 0.18.1
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/CHANGELOG.md +21 -1
- package/README.md +48 -0
- package/dist/args.d.ts +6 -0
- package/dist/args.js +3 -1
- package/dist/args.js.map +1 -1
- package/dist/commands/config.d.ts +24 -0
- package/dist/commands/config.js +172 -7
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/project-commands.js +9 -4
- package/dist/commands/project-commands.js.map +1 -1
- package/dist/commands/referrals.d.ts +10 -0
- package/dist/commands/referrals.js +272 -80
- package/dist/commands/referrals.js.map +1 -1
- package/dist/help.d.ts +1 -1
- package/dist/help.js +58 -10
- package/dist/help.js.map +1 -1
- package/dist/run.js +2 -0
- package/dist/run.js.map +1 -1
- package/dist/serialize.d.ts +3 -4
- package/dist/serialize.js +12 -129
- package/dist/serialize.js.map +1 -1
- package/package.json +5 -5
|
@@ -86,8 +86,10 @@ async function preflight(ctx, args) {
|
|
|
86
86
|
const cred = instanceCredential(ctx, args);
|
|
87
87
|
const report = await (0, project_1.httpFor)(ctx, cred).get('/v1/instance/preflight');
|
|
88
88
|
const findings = report.findings ?? [];
|
|
89
|
-
const
|
|
90
|
-
const
|
|
89
|
+
const counted = findings.filter((f) => !f.acknowledged);
|
|
90
|
+
const errors = counted.filter((f) => f.severity === 'error').length;
|
|
91
|
+
const warnings = counted.filter((f) => f.severity === 'warning').length;
|
|
92
|
+
const acknowledged = findings.length - counted.length;
|
|
91
93
|
const failed = errors > 0 || (failOn === 'warning' && warnings > 0);
|
|
92
94
|
if ((0, shared_1.wantsJson)(args.values)) {
|
|
93
95
|
(0, output_1.printJson)(ctx.io, report);
|
|
@@ -98,11 +100,14 @@ async function preflight(ctx, args) {
|
|
|
98
100
|
else {
|
|
99
101
|
ctx.io.out((0, output_1.renderTable)(FINDING_COLUMNS, findings));
|
|
100
102
|
ctx.io.out('');
|
|
101
|
-
for (const f of
|
|
103
|
+
for (const f of counted.filter((x) => x.severity !== 'info')) {
|
|
102
104
|
ctx.io.out(`${f.code}: ${f.fix}`);
|
|
103
105
|
}
|
|
106
|
+
for (const f of findings.filter((x) => x.acknowledged)) {
|
|
107
|
+
ctx.io.out(`${f.code}: acknowledged (${f.acknowledged.reason})`);
|
|
108
|
+
}
|
|
104
109
|
ctx.io.out('');
|
|
105
|
-
ctx.io.out(`${errors} error(s), ${warnings} warning(s), ${
|
|
110
|
+
ctx.io.out(`${errors} error(s), ${warnings} warning(s), ${counted.length - errors - warnings} info${acknowledged ? `, ${acknowledged} acknowledged` : ''}.`);
|
|
106
111
|
}
|
|
107
112
|
if (failed) {
|
|
108
113
|
ctx.io.err(`atlas: preflight failed (${errors} error(s)${failOn === 'warning' ? `, ${warnings} warning(s)` : ''}).`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-commands.js","sourceRoot":"","sources":["../../src/commands/project-commands.ts"],"names":[],"mappings":";;AA6BA,gDAgCC;AA0CD,8BAgCC;AAqBD,wBA4BC;AAQD,gCAwEC;AAgBD,kCAgCC;AAKD,wBAyDC;AAtXD,gDAAmD;AACnD,kCAA+C;AAE/C,sCAAqC;AACrC,sCAAgE;AAChE,wCAQoB;AACpB,wCAAwE;AACxE,qCAAyE;AAEzE;;;;GAIG;AAEH;;;;;GAKG;AACH,SAAgB,kBAAkB,CAChC,GAAe,EACf,IAAgB;IAEhB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IACtB,MAAM,UAAU,GAAG,IAAA,UAAG,EAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,IAAA,UAAG,EAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAClC,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,IAAA,sBAAY,EAAC,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,iBAAQ,CAChB,sCAAsC,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,cAAc,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,qDAAqD,CACjJ,CAAC;QACJ,CAAC;QACD,OAAO;YACL,SAAS,EAAE,IAAA,gCAAsB,EAAC,KAAK,CAAC,QAAQ,CAAC;YACjD,MAAM,EAAE,IAAA,kBAAS,EAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO;YACpD,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACnE,OAAO;YACL,SAAS,EAAE,IAAA,gCAAsB,EAAC,QAAQ,CAAC;YAC3C,MAAM,EAAE,IAAA,kBAAS,EAAC,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,OAAO;YAC9C,QAAQ;YACR,QAAQ;SACT,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,IAAA,oBAAW,EAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACjC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAC5D,CAAC;AAED,yGAAyG;AACzG,SAAS,eAAe,CACtB,GAAe,EACf,IAAgB,EAChB,OAAe;IAEf,MAAM,QAAQ,GAAG,IAAA,sBAAY,EAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,iBAAQ,CAAC,eAAe,OAAO,QAAQ,IAAA,oBAAU,EAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,+BAA+B,OAAO,UAAU,CAAC,CAAC;IACjI,CAAC;IACD,MAAM,SAAS,GAAG,IAAA,UAAG,EAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAA8C,CAAC;IAC1F,MAAM,GAAG,GAAG,SAAS;QACnB,CAAC,CAAC,IAAA,0BAAgB,EAAC,SAAS,EAAE,YAAY,CAAC;QAC3C,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU;YAC7B,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;gBACjB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE;gBACV,CAAC,CAAC,YAAY,CAAC;IACrB,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,iBAAQ,CAAC,YAAY,OAAO,YAAY,GAAG,wCAAwC,OAAO,mBAAmB,GAAG,IAAI,CAAC,CAAC;IAC/I,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC;AAWD,MAAM,eAAe,GAA+B;IAClD,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC9C,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;IACtC,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;CAC7C,CAAC;AAEF,kHAAkH;AAC3G,KAAK,UAAU,SAAS,CAAC,GAAe,EAAE,IAAgB;IAC/D,MAAM,MAAM,GAAG,IAAA,UAAG,EAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,OAAO,CAAC;IACtD,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/C,MAAM,IAAI,iBAAQ,CAAC,4CAA4C,MAAM,IAAI,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,MAAM,IAAA,iBAAO,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAgD,wBAAwB,CAAC,CAAC;IACrH,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IACrE,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IACzE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;IAEpE,IAAI,IAAA,kBAAS,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,IAAA,kBAAS,EAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC;SAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAA,oBAAW,EAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC;QACnD,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACf,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,cAAc,QAAQ,gBAAgB,QAAQ,CAAC,MAAM,GAAG,MAAM,GAAG,QAAQ,QAAQ,CAAC,CAAC;IACzG,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,GAAG,CAAC,EAAE,CAAC,GAAG,CACR,4BAA4B,MAAM,YAAY,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,CACzG,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAaD,MAAM,cAAc,GAA6B;IAC/C,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;IACvF,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;IACrC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE;IAC1C,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;CAC3C,CAAC;AAEF,iFAAiF;AAC1E,KAAK,UAAU,MAAM,CAAC,GAAe,EAAE,IAAgB;IAC5D,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3C,MAAM,CAAC,GAAG,IAAI,eAAe,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,IAAA,UAAG,EAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,IAAI;QAAE,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI;QAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9D,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxB,MAAM,MAAM,GAAG,MAAM,IAAA,iBAAO,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CACzC,yBAAyB,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9C,CAAC;IACF,IAAI,IAAA,kBAAS,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,IAAA,kBAAS,EAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5I,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAA,oBAAW,EAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5D,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,MAAM,CAAC,IAAI,OAAO;gBAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACf,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,aAAa,MAAM,CAAC,OAAO,CAAC,OAAO,aAAa,MAAM,CAAC,OAAO,CAAC,OAAO,+BAA+B,CAAC,CAAC;IAC7I,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,OAAO,CAAC,OAAO,gCAAgC,CAAC,CAAC;QAC7E,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,kFAAkF;AAElF,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAU,CAAC;AAGhE,oFAAoF;AAC7E,KAAK,UAAU,UAAU,CAAC,GAAe,EAAE,IAAgB;IAChE,MAAM,MAAM,GAAG,CAAC,IAAA,UAAG,EAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,QAAQ,CAAc,CAAC;IACrE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,iBAAQ,CAAC,4BAA4B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,MAAM,KAAK,CAAC,CAAC;IACvH,MAAM,OAAO,GAAG,IAAA,UAAG,EAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC5C,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,MAAM,OAAO,GAAyC,EAAE,CAAC;IACzD,IAAI,WAAmB,CAAC;IACxB,IAAI,KAAa,CAAC;IAElB,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACnE,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QACnC,KAAK,GAAG,OAAO,CAAC;QAChB,GAAG,CAAC,qBAAqB,GAAG,QAAQ,CAAC,eAAe,CAAC;QACrD,GAAG,CAAC,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC;QACtC,GAAG,CAAC,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC;QACrC,IAAI,QAAQ,CAAC,iBAAiB;YAAE,GAAG,CAAC,kBAAkB,GAAG,WAAW,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QACjG,IAAI,QAAQ,CAAC,MAAM;YAAE,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC;QACxD,IAAI,QAAQ,CAAC,aAAa;YAAE,GAAG,CAAC,mBAAmB,GAAG,QAAQ,CAAC,aAAa,CAAC;QAC7E,IAAI,QAAQ,CAAC,QAAQ;YAAE,GAAG,CAAC,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAC9D,IAAI,QAAQ,CAAC,YAAY;YAAE,GAAG,CAAC,eAAe,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QACtE,IAAI,QAAQ,CAAC,YAAY,EAAE,WAAW;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,qBAAqB,EAAE,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;QAC9H,IAAI,QAAQ,CAAC,OAAO,EAAE,WAAW;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,sBAAsB,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACvH,CAAC;SAAM,CAAC;QACN,oGAAoG;QACpG,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,IAAA,iBAAO,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAQtC,cAAc,CAAC,CAAC;QACnB,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC/B,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC;QAChB,GAAG,CAAC,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC;QACjD,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;QACjC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;QAChC,IAAI,IAAI,CAAC,iBAAiB;YAAE,GAAG,CAAC,kBAAkB,GAAG,WAAW,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzF,IAAI,IAAI,CAAC,MAAM;YAAE,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;QAChD,IAAI,IAAI,CAAC,aAAa;YAAE,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC;QACrE,IAAI,IAAI,CAAC,QAAQ;YAAE,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;IACxD,CAAC;IAED,IAAI,IAAA,kBAAS,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,IAAA,kBAAS,EAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACjJ,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,GAAG,CAAC,KAAK,KAAK,KAAK,WAAW,kBAAkB,CAAC,CAAC;QAClD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,GAAG,CAAC,oFAAoF,CAAC,CAAC;QAC1F,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;SAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,GAAG,CAAC,KAAK,KAAK,KAAK,WAAW,iEAAiE,CAAC,CAAC;QACjG,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,GAAG,CAAC,4EAA4E,CAAC,CAAC;QAClF,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;SAAM,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QAC5B,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,KAAK,KAAK,KAAK,WAAW,2EAA2E,CAAC,CAAC;QAC3G,MAAM,MAAM,GAAG,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,sBAAsB,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;QAC3H,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,GAAG,CAAC,cAAc,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,oCAAoC,CAAC,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC;IACzH,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,wDAAwD;AACxD,SAAS,OAAO,CAAC,GAAW;IAC1B,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC;AACxG,CAAC;AAED,+DAA+D;AAC/D,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAEjD;;;;;GAKG;AACH,SAAgB,WAAW,CACzB,OAAe,EACf,WAAmB,EACnB,GAA2B,EAC3B,OAA6C;IAE7C,MAAM,IAAI,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;IACzC,MAAM,KAAK,GAAa;QACtB,KAAK,OAAO,KAAK,WAAW,4FAA4F;QACxH,gBAAgB;QAChB,iBAAiB;QACjB,WAAW;QACX,WAAW,IAAI,EAAE;QACjB,OAAO;QACP,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,KAAK;QACL,qFAAqF;KACtF,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,qCAAqC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/H,CAAC;IACD,KAAK,CAAC,IAAI,CACR,KAAK,EACL,4BAA4B,EAC5B,cAAc,EACd,iCAAiC,IAAI,IAAI,EACzC,UAAU,CACX,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,EAAE,EAAE,8CAA8C,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IAClI,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,sFAAsF;AAEtF,2GAA2G;AACpG,KAAK,UAAU,MAAM,CAAC,GAAe,EAAE,IAAgB;IAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,iBAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,8BAA8B,GAAG,iBAAiB,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC;IACtH,CAAC;IACD,MAAM,GAAG,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;IACzD,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IACtB,MAAM,UAAU,GAAG,IAAA,UAAG,EAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACrC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS;QAAE,MAAM,IAAI,iBAAQ,CAAC,oCAAoC,CAAC,CAAC;IACzG,IAAI,cAAkC,CAAC;IACvC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI;QAAE,cAAc,GAAG,CAAC,CAAC;SAClC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,iBAAQ,CAAC,qDAAqD,UAAU,IAAI,CAAC,CAAC;QAC3H,cAAc,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAA,iBAAO,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAE/B,kDAAkD;IAClD,IAAI,EAAE,GAAG,GAAG,CAAC;IACb,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,CAAsD,mBAAmB,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAClH,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,iBAAQ,CAAC,kCAAkC,GAAG,oBAAoB,CAAC,CAAC;QAC1F,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IAChB,CAAC;IAED,IAAI,GAAyG,CAAC;IAC9G,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,CAAC;IACzI,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,uBAAa,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,MAAM,IAAI,iBAAQ,CAAC,mBAAmB,GAAG,oBAAoB,CAAC,CAAC;QACvH,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,UAAG,EAAC,CAAC,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;IACvC,MAAM,QAAQ,GAAG,OAAO,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,EAAE,MAAM,CAAC;IACzI,MAAM,OAAO,GAAG,EAAE,eAAe,EAAE,GAAG,CAAC,SAAS,EAAE,mBAAmB,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC;IAC3F,IAAI,CAAC,CAAC,cAAc,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/B,IAAA,uBAAa,EAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,uBAAuB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IACrJ,CAAC;SAAM,CAAC;QACN,mFAAmF;QACnF,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,yBAAe,EAAC,IAAA,oBAAU,EAAC,GAAG,CAAC,GAAG,EAAE,OAAO,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE;YAC/F,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,gBAAgB,GAAG,CAAC,EAAE,qBAAqB;SACrD,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,yBAAyB,GAAG,CAAC,SAAS,eAAe,IAAI,eAAe,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,0BAA0B,CAAC;IAC/C,IAAI,cAAc,KAAK,CAAC,IAAI,OAAO,KAAK,IAAI;QAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;SACxG,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,2CAA2C,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;;QAC3H,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,4GAA4G,CAAC,CAAC;IAC9H,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
1
|
+
{"version":3,"file":"project-commands.js","sourceRoot":"","sources":["../../src/commands/project-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,6 +49,16 @@ export declare function referalliKeyMode(ctx: RunContext, input: {
|
|
|
49
49
|
}): Promise<{
|
|
50
50
|
live: boolean;
|
|
51
51
|
known: boolean;
|
|
52
|
+
org: Record<string, unknown> | null;
|
|
52
53
|
}>;
|
|
54
|
+
/** A Referalli list answer: a plain array (API version 2026-10-21) or a `{ data: [...] }` page. */
|
|
55
|
+
export declare function referalliList(body: unknown): Record<string, unknown>[];
|
|
56
|
+
/** Referalli's public tracked link for a code: `{host}/go/{trackingToken}/{code}`, on the org's link domain once it is active. */
|
|
57
|
+
export declare function referalliLinkTemplate(baseUrl: string, trackingToken: string, branding: Record<string, unknown> | null): string;
|
|
58
|
+
/** The `programIds` a Referalli webhook endpoint is limited to: null or [] means every program in the organization. */
|
|
59
|
+
export declare function webhookScope(endpoint: Record<string, unknown> | null): {
|
|
60
|
+
scope: 'program' | 'all_programs' | 'unknown';
|
|
61
|
+
program_ids: string[] | null;
|
|
62
|
+
};
|
|
53
63
|
export declare function referrals(ctx: RunContext, args: ParsedArgs): Promise<number>;
|
|
54
64
|
export {};
|
|
@@ -5,6 +5,9 @@ exports.pingSkewMs = pingSkewMs;
|
|
|
5
5
|
exports.describeTestLines = describeTestLines;
|
|
6
6
|
exports.parseCodeCsv = parseCodeCsv;
|
|
7
7
|
exports.referalliKeyMode = referalliKeyMode;
|
|
8
|
+
exports.referalliList = referalliList;
|
|
9
|
+
exports.referalliLinkTemplate = referalliLinkTemplate;
|
|
10
|
+
exports.webhookScope = webhookScope;
|
|
8
11
|
exports.referrals = referrals;
|
|
9
12
|
const node_crypto_1 = require("node:crypto");
|
|
10
13
|
const referral_conformance_1 = require("@atlasauth/referral-conformance");
|
|
@@ -186,19 +189,111 @@ exports.REFERALLI_SYNC_TOPICS = [
|
|
|
186
189
|
* `known` is false when Referalli reports no mode (no test mode there).
|
|
187
190
|
*/
|
|
188
191
|
async function referalliKeyMode(ctx, input) {
|
|
192
|
+
const org = await referalliTry(ctx, { ...input, path: '/v1/org', what: 'read the organization' });
|
|
193
|
+
if (typeof org?.livemode === 'boolean')
|
|
194
|
+
return { live: org.livemode, known: true, org };
|
|
195
|
+
if (input.key.startsWith('rk_test_'))
|
|
196
|
+
return { live: false, known: true, org };
|
|
197
|
+
if (input.key.startsWith('rk_live_'))
|
|
198
|
+
return { live: true, known: true, org };
|
|
199
|
+
return { live: true, known: false, org };
|
|
200
|
+
}
|
|
201
|
+
/** A best-effort Referalli read: null when it fails (an older Referalli, a key without access). */
|
|
202
|
+
async function referalliTry(ctx, input) {
|
|
189
203
|
try {
|
|
190
|
-
|
|
191
|
-
if (typeof org.livemode === 'boolean')
|
|
192
|
-
return { live: org.livemode, known: true };
|
|
204
|
+
return await referalliRequest(ctx, { ...input, method: 'GET' });
|
|
193
205
|
}
|
|
194
|
-
catch {
|
|
195
|
-
|
|
206
|
+
catch (err) {
|
|
207
|
+
if (err instanceof errors_1.CliError)
|
|
208
|
+
return null;
|
|
209
|
+
throw err;
|
|
196
210
|
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
return
|
|
211
|
+
}
|
|
212
|
+
/** A Referalli list answer: a plain array (API version 2026-10-21) or a `{ data: [...] }` page. */
|
|
213
|
+
function referalliList(body) {
|
|
214
|
+
const rows = Array.isArray(body) ? body : body && typeof body === 'object' && Array.isArray(body.data) ? body.data : [];
|
|
215
|
+
return rows.filter((r) => !!r && typeof r === 'object' && !Array.isArray(r));
|
|
216
|
+
}
|
|
217
|
+
/** Referalli's public tracked link for a code: `{host}/go/{trackingToken}/{code}`, on the org's link domain once it is active. */
|
|
218
|
+
function referalliLinkTemplate(baseUrl, trackingToken, branding) {
|
|
219
|
+
const domain = branding?.linkDomainStatus === 'active' && typeof branding.linkDomain === 'string' && branding.linkDomain ? branding.linkDomain : null;
|
|
220
|
+
return `${domain ? `https://${domain}` : baseUrl}/go/${encodeURIComponent(trackingToken)}/{code}`;
|
|
221
|
+
}
|
|
222
|
+
/** The merchant key from --referalli-key / --referalli-key-file / REFERALLI_API_KEY (or their old names); never printed. */
|
|
223
|
+
function referalliKeyFrom(ctx, v) {
|
|
224
|
+
const oldKeyFile = (0, args_1.str)(v, LEGACY.keyFileFlag);
|
|
225
|
+
const oldKey = (0, args_1.str)(v, LEGACY.keyFlag);
|
|
226
|
+
if (oldKeyFile)
|
|
227
|
+
legacyNotice(ctx, `--${LEGACY.keyFileFlag}`, '--referalli-key-file');
|
|
228
|
+
if (oldKey)
|
|
229
|
+
legacyNotice(ctx, `--${LEGACY.keyFlag}`, '--referalli-key');
|
|
230
|
+
const legacyKey = ctx.env[LEGACY.apiKeyEnv]?.trim();
|
|
231
|
+
if (!ctx.env.REFERALLI_API_KEY?.trim() && legacyKey)
|
|
232
|
+
legacyNotice(ctx, LEGACY.apiKeyEnv, 'REFERALLI_API_KEY');
|
|
233
|
+
const keyFile = (0, args_1.str)(v, 'referalli-key-file') ?? oldKeyFile;
|
|
234
|
+
return ((0, args_1.str)(v, 'referalli-key') ??
|
|
235
|
+
oldKey ??
|
|
236
|
+
(keyFile ? readKeyFile(ctx, keyFile, 'the Referalli key') : (ctx.env.REFERALLI_API_KEY?.trim() || legacyKey || undefined)));
|
|
237
|
+
}
|
|
238
|
+
/** The `programIds` a Referalli webhook endpoint is limited to: null or [] means every program in the organization. */
|
|
239
|
+
function webhookScope(endpoint) {
|
|
240
|
+
if (!endpoint)
|
|
241
|
+
return { scope: 'unknown', program_ids: null };
|
|
242
|
+
const ids = Array.isArray(endpoint.programIds) ? endpoint.programIds.filter((x) => typeof x === 'string') : [];
|
|
243
|
+
return ids.length ? { scope: 'program', program_ids: ids } : { scope: 'all_programs', program_ids: null };
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* The two-way sync webhook on Referalli, limited to the connected program
|
|
247
|
+
* (`programIds: [program]`) so another product's referrals in a shared
|
|
248
|
+
* organization never reach this instance. Idempotent: an endpoint already
|
|
249
|
+
* pointing at this instance's inbound URL is reused and re-scoped in place
|
|
250
|
+
* (an unscoped one from an earlier run is repaired); its secret is rotated
|
|
251
|
+
* only when Atlas does not hold it (`held`: the endpoint whose secret Atlas
|
|
252
|
+
* stores). `secret` is null when nothing new needs saving.
|
|
253
|
+
*/
|
|
254
|
+
async function referalliSyncEndpoint(ctx, input) {
|
|
255
|
+
const { baseUrl, key } = input;
|
|
256
|
+
const scope = { topics: [...exports.REFERALLI_SYNC_TOPICS], legacySignature: false, programIds: [input.program] };
|
|
257
|
+
const listed = await referalliTry(ctx, { baseUrl, key, path: '/v1/webhook-endpoints', what: 'list the webhook endpoints' });
|
|
258
|
+
const mine = referalliList(listed).filter((e) => e.url === input.url && typeof e.id === 'string');
|
|
259
|
+
const found = mine.find((e) => e.id === input.held) ?? mine[0];
|
|
260
|
+
if (!found) {
|
|
261
|
+
const endpoint = await referalliRequest(ctx, {
|
|
262
|
+
baseUrl,
|
|
263
|
+
key,
|
|
264
|
+
method: 'POST',
|
|
265
|
+
path: '/v1/webhook-endpoints',
|
|
266
|
+
body: { url: input.url, ...scope },
|
|
267
|
+
what: 'register the referral event webhook',
|
|
268
|
+
});
|
|
269
|
+
if (typeof endpoint.id !== 'string' || typeof endpoint.secret !== 'string') {
|
|
270
|
+
throw new errors_1.CliError('Referalli answered without a webhook endpoint id and secret.');
|
|
271
|
+
}
|
|
272
|
+
return { id: endpoint.id, secret: endpoint.secret, duplicates: [] };
|
|
273
|
+
}
|
|
274
|
+
const id = found.id;
|
|
275
|
+
const duplicates = mine.filter((e) => e !== found).map((e) => e.id);
|
|
276
|
+
await referalliRequest(ctx, {
|
|
277
|
+
baseUrl,
|
|
278
|
+
key,
|
|
279
|
+
method: 'PATCH',
|
|
280
|
+
path: `/v1/webhook-endpoints/${encodeURIComponent(id)}`,
|
|
281
|
+
body: scope,
|
|
282
|
+
what: 'limit the referral event webhook to the program',
|
|
283
|
+
});
|
|
284
|
+
if (id === input.held)
|
|
285
|
+
return { id, secret: null, duplicates };
|
|
286
|
+
const rotated = await referalliRequest(ctx, {
|
|
287
|
+
baseUrl,
|
|
288
|
+
key,
|
|
289
|
+
method: 'POST',
|
|
290
|
+
path: `/v1/webhook-endpoints/${encodeURIComponent(id)}/rotate-secret`,
|
|
291
|
+
body: {},
|
|
292
|
+
what: 'rotate the referral event webhook secret',
|
|
293
|
+
});
|
|
294
|
+
if (typeof rotated.secret !== 'string')
|
|
295
|
+
throw new errors_1.CliError('Referalli answered without a webhook secret.');
|
|
296
|
+
return { id, secret: rotated.secret, duplicates };
|
|
202
297
|
}
|
|
203
298
|
/**
|
|
204
299
|
* `connect --provider referalli --oauth`: Atlas starts an OAuth install at
|
|
@@ -301,19 +396,7 @@ async function connect(ctx, args) {
|
|
|
301
396
|
if (!baseRaw)
|
|
302
397
|
throw new errors_1.CliError('Pass --base-url <your Referalli base URL> (or set REFERALLI_BASE_URL).');
|
|
303
398
|
const baseUrl = httpsUrl(baseRaw, '--base-url');
|
|
304
|
-
const
|
|
305
|
-
const oldKey = (0, args_1.str)(v, LEGACY.keyFlag);
|
|
306
|
-
if (oldKeyFile)
|
|
307
|
-
legacyNotice(ctx, `--${LEGACY.keyFileFlag}`, '--referalli-key-file');
|
|
308
|
-
if (oldKey)
|
|
309
|
-
legacyNotice(ctx, `--${LEGACY.keyFlag}`, '--referalli-key');
|
|
310
|
-
const legacyKey = ctx.env[LEGACY.apiKeyEnv]?.trim();
|
|
311
|
-
if (!ctx.env.REFERALLI_API_KEY?.trim() && legacyKey)
|
|
312
|
-
legacyNotice(ctx, LEGACY.apiKeyEnv, 'REFERALLI_API_KEY');
|
|
313
|
-
const keyFile = (0, args_1.str)(v, 'referalli-key-file') ?? oldKeyFile;
|
|
314
|
-
const key = (0, args_1.str)(v, 'referalli-key') ??
|
|
315
|
-
oldKey ??
|
|
316
|
-
(keyFile ? readKeyFile(ctx, keyFile, 'the Referalli key') : (ctx.env.REFERALLI_API_KEY?.trim() ?? legacyKey));
|
|
399
|
+
const key = referalliKeyFrom(ctx, v);
|
|
317
400
|
if (!key) {
|
|
318
401
|
throw new errors_1.CliError('Pass your Referalli merchant key with --referalli-key-file <path|-> (or --referalli-key, or REFERALLI_API_KEY). It is used once and never stored.');
|
|
319
402
|
}
|
|
@@ -336,17 +419,49 @@ async function connect(ctx, args) {
|
|
|
336
419
|
else if (!mode.known && !instanceLive) {
|
|
337
420
|
ctx.io.err(`atlas: warning: Referalli did not say whether this key reaches test data; instance ${instance.id} is ${instance.environment ?? 'not production'}.`);
|
|
338
421
|
}
|
|
339
|
-
const
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
},
|
|
349
|
-
|
|
422
|
+
const enrollment = {
|
|
423
|
+
...(v['auto-enroll'] === true ? { autoEnrollUsers: true } : {}),
|
|
424
|
+
...(destination ? { destinationUrl: destination } : {}),
|
|
425
|
+
};
|
|
426
|
+
const current = await http.get('/v1/instance/referrals');
|
|
427
|
+
// Re-runs reuse the instance's connection, updated in place: Referalli keeps one per instance per organization.
|
|
428
|
+
const listed = await referalliTry(ctx, { baseUrl, key, path: '/v1/auth/connections', what: 'list the connections' });
|
|
429
|
+
const existing = referalliList(listed).find((c) => c.provider === 'atlas' && c.instanceId === instance.id && typeof c.id === 'string');
|
|
430
|
+
if (existing && typeof existing.programId === 'string' && existing.programId !== program) {
|
|
431
|
+
throw new errors_1.CliError(`Referalli already has connection ${String(existing.id)} for instance ${instance.id}, in program ${existing.programId}. ` +
|
|
432
|
+
`It allows one per instance: run again with --program ${existing.programId}, or delete that connection on Referalli first.`);
|
|
433
|
+
}
|
|
434
|
+
let connectionId;
|
|
435
|
+
// Null when Atlas already holds the reused connection's secret.
|
|
436
|
+
let secret = null;
|
|
437
|
+
let createdToken = null;
|
|
438
|
+
if (existing) {
|
|
439
|
+
connectionId = existing.id;
|
|
440
|
+
if (current.connection_id !== connectionId || !current.signing_secret_set) {
|
|
441
|
+
// Atlas does not hold this connection's secret: rotate it (the old one keeps verifying for 24 hours).
|
|
442
|
+
const rotated = await referalliRequest(ctx, {
|
|
443
|
+
baseUrl,
|
|
444
|
+
key,
|
|
445
|
+
method: 'POST',
|
|
446
|
+
path: `/v1/auth/connections/${encodeURIComponent(connectionId)}/rotate-secret`,
|
|
447
|
+
body: {},
|
|
448
|
+
what: 'rotate the connection secret',
|
|
449
|
+
});
|
|
450
|
+
if (typeof rotated.secret !== 'string')
|
|
451
|
+
throw new errors_1.CliError('Referalli answered without a connection secret.');
|
|
452
|
+
secret = rotated.secret;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
else {
|
|
456
|
+
const created = await referalliCreateConnection(ctx, {
|
|
457
|
+
baseUrl,
|
|
458
|
+
key,
|
|
459
|
+
body: { provider: 'atlas', instanceId: instance.id, programId: program, ...enrollment },
|
|
460
|
+
});
|
|
461
|
+
connectionId = created.id;
|
|
462
|
+
secret = created.secret;
|
|
463
|
+
createdToken = typeof created.trackingToken === 'string' ? created.trackingToken : null;
|
|
464
|
+
}
|
|
350
465
|
// Atlas always signs with v2: require it from the first call, so v1 is never accepted on this connection.
|
|
351
466
|
let signatureV2 = true;
|
|
352
467
|
try {
|
|
@@ -354,24 +469,32 @@ async function connect(ctx, args) {
|
|
|
354
469
|
baseUrl,
|
|
355
470
|
key,
|
|
356
471
|
method: 'PATCH',
|
|
357
|
-
path: `/v1/auth/connections/${encodeURIComponent(
|
|
358
|
-
body: { signatureVersion: 'v2' },
|
|
359
|
-
what: 'require v2 signatures on the connection',
|
|
472
|
+
path: `/v1/auth/connections/${encodeURIComponent(connectionId)}`,
|
|
473
|
+
body: { signatureVersion: 'v2', ...(existing ? enrollment : {}) },
|
|
474
|
+
what: existing ? 'update the connection' : 'require v2 signatures on the connection',
|
|
360
475
|
});
|
|
361
476
|
}
|
|
362
477
|
catch (err) {
|
|
363
478
|
signatureV2 = false;
|
|
364
479
|
ctx.io.err(`atlas: warning: ${err instanceof Error ? err.message : String(err)} It switches to v2 on Atlas's first call anyway.`);
|
|
365
480
|
}
|
|
366
|
-
|
|
481
|
+
// The org's public tracking token (GET /v1/org) builds Referalli's tracked links; a link template set before is kept.
|
|
482
|
+
const orgToken = typeof mode.org?.trackingToken === 'string' ? mode.org.trackingToken : null;
|
|
483
|
+
const trackingToken = (0, args_1.str)(v, 'tracking-token') ?? orgToken ?? createdToken;
|
|
484
|
+
let linkTemplate = (0, args_1.str)(v, 'link-template') ?? null;
|
|
485
|
+
if (!linkTemplate && !current.link_template && trackingToken) {
|
|
486
|
+
const branding = await referalliTry(ctx, { baseUrl, key, path: '/v1/branding', what: 'read the link domain' });
|
|
487
|
+
linkTemplate = referalliLinkTemplate(baseUrl, trackingToken, branding);
|
|
488
|
+
}
|
|
367
489
|
patch = {
|
|
368
490
|
provider: 'referalli',
|
|
369
491
|
endpoint_url: baseUrl,
|
|
370
|
-
connection_id:
|
|
371
|
-
signing_secret:
|
|
492
|
+
connection_id: connectionId,
|
|
493
|
+
...(secret ? { signing_secret: secret } : {}),
|
|
372
494
|
program_id: program,
|
|
373
495
|
...(v['auto-enroll'] === true ? { auto_enroll_users: true } : {}),
|
|
374
496
|
...(trackingToken ? { tracking_token: trackingToken } : {}),
|
|
497
|
+
...(linkTemplate ? { link_template: linkTemplate } : {}),
|
|
375
498
|
};
|
|
376
499
|
let saved;
|
|
377
500
|
try {
|
|
@@ -379,51 +502,60 @@ async function connect(ctx, args) {
|
|
|
379
502
|
}
|
|
380
503
|
catch (err) {
|
|
381
504
|
// The secret is shown once by Referalli: keep it so the merchant can finish by hand.
|
|
382
|
-
const
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
505
|
+
const kept = secret
|
|
506
|
+
? (0, secrets_1.deliverSecret)({
|
|
507
|
+
io: out,
|
|
508
|
+
env: ctx.env,
|
|
509
|
+
product,
|
|
510
|
+
fileName: `referalli-connection-${connectionId}.env`,
|
|
511
|
+
entries: { REFERALLI_CONNECTION_ID: connectionId, REFERALLI_CONNECTION_SECRET: secret },
|
|
512
|
+
label: 'The Referalli connection secret (not saved on Atlas)',
|
|
513
|
+
force: v.force === true,
|
|
514
|
+
comment: `Referalli connection ${connectionId}: saving it on the Atlas instance failed. Paste it in Users → Referrals.`,
|
|
515
|
+
})
|
|
516
|
+
: { path: undefined };
|
|
517
|
+
ctx.io.err(`atlas: the connection ${connectionId} ${existing ? 'exists' : 'was created'} on Referalli, but saving it on the instance failed.${kept.path ? ` Its secret is in ${kept.path}.` : ''}`);
|
|
393
518
|
throw err;
|
|
394
519
|
}
|
|
395
|
-
// Two-way sync: Referalli's referral events go to the instance's inbound URL.
|
|
520
|
+
// Two-way sync: Referalli's referral events for this program go to the instance's inbound URL.
|
|
396
521
|
let syncEndpoint = null;
|
|
522
|
+
let syncScope = null;
|
|
397
523
|
const inboundUrl = saved?.inbound?.url ?? null;
|
|
398
524
|
if (v['no-sync'] !== true && inboundUrl) {
|
|
399
525
|
try {
|
|
400
|
-
const
|
|
526
|
+
const sync = await referalliSyncEndpoint(ctx, {
|
|
401
527
|
baseUrl,
|
|
402
528
|
key,
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
what: 'register the referral event webhook',
|
|
529
|
+
url: inboundUrl,
|
|
530
|
+
program,
|
|
531
|
+
held: current.inbound?.secret_set ? (current.inbound.endpoint_id ?? null) : null,
|
|
407
532
|
});
|
|
408
|
-
if (
|
|
409
|
-
|
|
533
|
+
if (!sync.secret) {
|
|
534
|
+
syncEndpoint = sync.id;
|
|
535
|
+
syncScope = [program];
|
|
410
536
|
}
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
537
|
+
else {
|
|
538
|
+
try {
|
|
539
|
+
await http.patch('/v1/instance/referrals', { inbound_secret: sync.secret, inbound_endpoint_id: sync.id });
|
|
540
|
+
syncEndpoint = sync.id;
|
|
541
|
+
syncScope = [program];
|
|
542
|
+
}
|
|
543
|
+
catch (err) {
|
|
544
|
+
const kept = (0, secrets_1.deliverSecret)({
|
|
545
|
+
io: out,
|
|
546
|
+
env: ctx.env,
|
|
547
|
+
product,
|
|
548
|
+
fileName: `referalli-webhook-${sync.id}.env`,
|
|
549
|
+
entries: { REFERALLI_WEBHOOK_ENDPOINT_ID: sync.id, REFERALLI_WEBHOOK_SECRET: sync.secret },
|
|
550
|
+
label: 'The Referalli webhook secret (not saved on Atlas)',
|
|
551
|
+
force: v.force === true,
|
|
552
|
+
comment: `Referalli webhook ${sync.id}: saving it on the Atlas instance failed. Paste it as the inbound secret in Users → Referrals.`,
|
|
553
|
+
});
|
|
554
|
+
ctx.io.err(`atlas: warning: the webhook ${sync.id} was registered on Referalli, but saving its secret failed (${err instanceof Error ? err.message : String(err)}).${kept.path ? ` It is in ${kept.path}.` : ''}`);
|
|
555
|
+
}
|
|
414
556
|
}
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
io: out,
|
|
418
|
-
env: ctx.env,
|
|
419
|
-
product,
|
|
420
|
-
fileName: `referalli-webhook-${endpoint.id}.env`,
|
|
421
|
-
entries: { REFERALLI_WEBHOOK_ENDPOINT_ID: endpoint.id, REFERALLI_WEBHOOK_SECRET: endpoint.secret },
|
|
422
|
-
label: 'The Referalli webhook secret (not saved on Atlas)',
|
|
423
|
-
force: v.force === true,
|
|
424
|
-
comment: `Referalli webhook ${endpoint.id}: saving it on the Atlas instance failed. Paste it as the inbound secret in Users → Referrals.`,
|
|
425
|
-
});
|
|
426
|
-
ctx.io.err(`atlas: warning: the webhook ${endpoint.id} was registered on Referalli, but saving its secret failed (${err instanceof Error ? err.message : String(err)}).${kept.path ? ` It is in ${kept.path}.` : ''}`);
|
|
557
|
+
if (sync.duplicates.length) {
|
|
558
|
+
ctx.io.err(`atlas: warning: Referalli has more webhook endpoints for this instance (${sync.duplicates.join(', ')}). Atlas cannot verify their deliveries; delete them on Referalli.`);
|
|
427
559
|
}
|
|
428
560
|
}
|
|
429
561
|
catch (err) {
|
|
@@ -432,21 +564,38 @@ async function connect(ctx, args) {
|
|
|
432
564
|
ctx.io.err(`atlas: warning: ${err.message} Referral changes on Referalli won't reach Atlas until it is registered (see the docs).`);
|
|
433
565
|
}
|
|
434
566
|
}
|
|
567
|
+
// What connect could not set: the exact settings call that finishes it.
|
|
568
|
+
const leftToDo = {};
|
|
569
|
+
if (!(trackingToken ?? current.tracking_token))
|
|
570
|
+
leftToDo.tracking_token = '<your Referalli tracking token (tk_…), from GET /v1/org on Referalli>';
|
|
571
|
+
if (!(linkTemplate ?? current.link_template))
|
|
572
|
+
leftToDo.link_template = 'https://<your Referalli link host>/go/<tracking token>/{code}';
|
|
435
573
|
summary = {
|
|
436
574
|
provider: 'referalli',
|
|
437
575
|
instance_id: instance.id,
|
|
438
576
|
endpoint_url: baseUrl,
|
|
439
|
-
connection_id:
|
|
577
|
+
connection_id: connectionId,
|
|
578
|
+
reused: Boolean(existing),
|
|
440
579
|
program_id: program,
|
|
441
|
-
tracking_token: trackingToken,
|
|
580
|
+
tracking_token: trackingToken ?? current.tracking_token ?? null,
|
|
581
|
+
link_template: linkTemplate ?? current.link_template ?? null,
|
|
442
582
|
livemode: mode.known ? mode.live : null,
|
|
443
583
|
signature_v2_required: signatureV2,
|
|
444
584
|
sync_endpoint_id: syncEndpoint,
|
|
585
|
+
sync_program_ids: syncScope,
|
|
586
|
+
left_to_do: Object.keys(leftToDo).length ? { method: 'PATCH', path: '/v1/instance/referrals', body: leftToDo } : null,
|
|
445
587
|
};
|
|
446
588
|
if (!json) {
|
|
447
|
-
out.out(
|
|
589
|
+
out.out(existing
|
|
590
|
+
? `Reused Referalli connection ${connectionId} for instance ${instance.id} and updated it${secret ? ' (new secret saved, not printed)' : ''}.`
|
|
591
|
+
: `Created Referalli connection ${connectionId} for instance ${instance.id} and saved it (the secret was not printed).`);
|
|
448
592
|
if (syncEndpoint)
|
|
449
|
-
out.out(`Referral changes on Referalli sync back to Atlas (webhook ${syncEndpoint}).`);
|
|
593
|
+
out.out(`Referral changes on Referalli sync back to Atlas (webhook ${syncEndpoint}, program ${program} only).`);
|
|
594
|
+
if (Object.keys(leftToDo).length) {
|
|
595
|
+
out.out(`Left to do: ${Object.keys(leftToDo).join(' and ')} could not be read from Referalli. Set them with PATCH /v1/instance/referrals:`);
|
|
596
|
+
out.out(` ${JSON.stringify(leftToDo)}`);
|
|
597
|
+
out.out(' (or run this again with --tracking-token <tk_…> and --link-template <url with {code}>)');
|
|
598
|
+
}
|
|
450
599
|
}
|
|
451
600
|
}
|
|
452
601
|
else {
|
|
@@ -634,8 +783,47 @@ async function status(ctx, args) {
|
|
|
634
783
|
if (!(err instanceof backend_1.AtlasApiError))
|
|
635
784
|
throw err;
|
|
636
785
|
}
|
|
786
|
+
// The sync webhook's program scope lives on Referalli: read it when a merchant key is given (never required).
|
|
787
|
+
const inbound = settings.inbound;
|
|
788
|
+
let webhook = null;
|
|
789
|
+
const key = settings.provider === 'referalli' && settings.endpoint_url && inbound?.endpoint_id ? referalliKeyFrom(ctx, args.values) : undefined;
|
|
790
|
+
if (key && settings.endpoint_url && inbound?.endpoint_id) {
|
|
791
|
+
webhook = await referalliTry(ctx, {
|
|
792
|
+
baseUrl: settings.endpoint_url,
|
|
793
|
+
key,
|
|
794
|
+
path: `/v1/webhook-endpoints/${encodeURIComponent(inbound.endpoint_id)}`,
|
|
795
|
+
what: 'read the referral event webhook',
|
|
796
|
+
});
|
|
797
|
+
}
|
|
798
|
+
const scope = webhookScope(webhook);
|
|
637
799
|
if ((0, shared_1.wantsJson)(args.values)) {
|
|
638
|
-
|
|
800
|
+
const c = settings.connection ?? null;
|
|
801
|
+
(0, output_1.printJson)(ctx.io, {
|
|
802
|
+
// Flat, stable fields for scripts; `settings` is the raw GET /v1/instance/referrals answer.
|
|
803
|
+
status: {
|
|
804
|
+
enabled: settings.enabled,
|
|
805
|
+
provider: settings.provider,
|
|
806
|
+
connection_id: settings.connection_id,
|
|
807
|
+
program_id: settings.program_id,
|
|
808
|
+
signing_secret_set: settings.signing_secret_set,
|
|
809
|
+
webhook: {
|
|
810
|
+
endpoint_id: inbound?.endpoint_id ?? null,
|
|
811
|
+
url: inbound?.url ?? null,
|
|
812
|
+
secret_set: inbound?.secret_set ?? false,
|
|
813
|
+
// program: limited to program_ids; all_programs: every program in the organization; unknown: no merchant key given.
|
|
814
|
+
scope: inbound?.endpoint_id ? scope.scope : null,
|
|
815
|
+
program_ids: scope.program_ids,
|
|
816
|
+
},
|
|
817
|
+
link_template_set: Boolean(settings.link_template),
|
|
818
|
+
tracking_token_set: Boolean(settings.tracking_token),
|
|
819
|
+
last_sync: inbound?.last_event ?? null,
|
|
820
|
+
last_test: c?.last_test ?? null,
|
|
821
|
+
last_success_at: c?.last_success_at ?? null,
|
|
822
|
+
missing: settings.missing ?? [],
|
|
823
|
+
},
|
|
824
|
+
settings,
|
|
825
|
+
findings,
|
|
826
|
+
});
|
|
639
827
|
return findings.some((f) => f.severity === 'error') ? 1 : 0;
|
|
640
828
|
}
|
|
641
829
|
const c = settings.connection ?? null;
|
|
@@ -646,6 +834,8 @@ async function status(ctx, args) {
|
|
|
646
834
|
`Connection ID: ${settings.connection_id ?? '(not set)'}`,
|
|
647
835
|
`Program ID: ${settings.program_id ?? '(not set)'}`,
|
|
648
836
|
`Signing secret: ${settings.signing_secret_set ? 'set' : 'not set'}`,
|
|
837
|
+
`Link template: ${settings.link_template ?? '(not set)'}`,
|
|
838
|
+
`Tracking token: ${settings.tracking_token ?? '(not set)'}`,
|
|
649
839
|
];
|
|
650
840
|
if (settings.forward_lifecycle !== undefined)
|
|
651
841
|
lines.push(`Forward lifecycle: ${settings.forward_lifecycle ? 'on' : 'off'}`);
|
|
@@ -656,11 +846,13 @@ async function status(ctx, args) {
|
|
|
656
846
|
}
|
|
657
847
|
if (c)
|
|
658
848
|
lines.push(`Failed (7 days): ${c.failed_calls_7d ?? 0} Retrying: ${c.retrying_calls ?? 0}`);
|
|
659
|
-
const inbound = settings.inbound;
|
|
660
849
|
if (inbound?.url) {
|
|
661
850
|
// Referalli needs its own webhook secret; the Atlas protocol falls back to the signing secret.
|
|
662
851
|
const syncing = inbound.secret_set || (settings.provider === 'webhook' && settings.signing_secret_set);
|
|
663
852
|
lines.push(`Two-way sync: ${syncing ? 'on' : 'off (no inbound secret)'}${inbound.endpoint_id ? ` (webhook ${inbound.endpoint_id})` : ''}`);
|
|
853
|
+
if (scope.scope !== 'unknown') {
|
|
854
|
+
lines.push(`Webhook scope: ${scope.program_ids ? `program ${scope.program_ids.join(', ')}` : 'every program (re-run connect to limit it)'}`);
|
|
855
|
+
}
|
|
664
856
|
lines.push(`Inbound URL: ${inbound.url}`);
|
|
665
857
|
if (inbound.last_event) {
|
|
666
858
|
lines.push(`Last event: ${inbound.last_event.type} → ${inbound.last_event.outcome} at ${new Date(inbound.last_event.at).toISOString()}`);
|