sublyzer-snapshot 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +114 -193
- package/dist/cli.js +83 -38
- package/dist/cli.js.map +1 -1
- package/dist/commands/ci.d.ts.map +1 -1
- package/dist/commands/ci.js +15 -14
- package/dist/commands/ci.js.map +1 -1
- package/dist/commands/compare.d.ts +1 -0
- package/dist/commands/compare.d.ts.map +1 -1
- package/dist/commands/compare.js +14 -8
- package/dist/commands/compare.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +47 -45
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +70 -28
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/open.d.ts.map +1 -1
- package/dist/commands/open.js +6 -1
- package/dist/commands/open.js.map +1 -1
- package/dist/commands/pull.d.ts.map +1 -1
- package/dist/commands/pull.js +4 -1
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/report.d.ts +1 -0
- package/dist/commands/report.d.ts.map +1 -1
- package/dist/commands/report.js +19 -19
- package/dist/commands/report.js.map +1 -1
- package/dist/commands/run.d.ts +5 -12
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +12 -90
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/scan.d.ts +13 -0
- package/dist/commands/scan.d.ts.map +1 -0
- package/dist/commands/scan.js +17 -0
- package/dist/commands/scan.js.map +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +31 -22
- package/dist/commands/status.js.map +1 -1
- package/dist/config.d.ts +17 -5
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +27 -4
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +4 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +3 -1
- package/dist/constants.js.map +1 -1
- package/dist/detect/scan-target.d.ts +13 -0
- package/dist/detect/scan-target.d.ts.map +1 -0
- package/dist/detect/scan-target.js +95 -0
- package/dist/detect/scan-target.js.map +1 -0
- package/dist/report/markdown.d.ts +1 -1
- package/dist/report/markdown.d.ts.map +1 -1
- package/dist/report/markdown.js +5 -0
- package/dist/report/markdown.js.map +1 -1
- package/dist/scan/bundle-size.d.ts +12 -0
- package/dist/scan/bundle-size.d.ts.map +1 -0
- package/dist/scan/bundle-size.js +50 -0
- package/dist/scan/bundle-size.js.map +1 -0
- package/dist/scan/execute.d.ts +28 -0
- package/dist/scan/execute.d.ts.map +1 -0
- package/dist/scan/execute.js +135 -0
- package/dist/scan/execute.js.map +1 -0
- package/dist/scan/history.d.ts +5 -5
- package/dist/scan/history.d.ts.map +1 -1
- package/dist/scan/history.js +15 -15
- package/dist/scan/history.js.map +1 -1
- package/dist/scan/snapshot.d.ts +8 -0
- package/dist/scan/snapshot.d.ts.map +1 -1
- package/dist/scan/snapshot.js +37 -9
- package/dist/scan/snapshot.js.map +1 -1
- package/package.json +10 -8
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAoB,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAoB,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,SAAS,WAAW,CAAC,CAAU;IAC7B,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,KAAK,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,cAAc,GAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AAE9E,SAAS,iBAAiB,CAAC,GAAY;IACrC,OAAO,GAAG;SACP,MAAM,CAAC,cAAc,EAAE,2CAA2C,CAAC;SACnE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC;SACxC,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;SACpD,MAAM,CAAC,eAAe,EAAE,6BAA6B,CAAC;SACtD,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;SAC/B,MAAM,CAAC,mBAAmB,EAAE,6CAA6C,CAAC,CAAC;AAChF,CAAC;AAED,OAAO;KACJ,IAAI,CAAC,mBAAmB,CAAC;KACzB,WAAW,CAAC,6DAA6D,CAAC;KAC1E,OAAO,CAAC,WAAW,CAAC,CAAC;AAExB,iBAAiB,CACf,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qDAAqD,CAAC;KAClE,MAAM,CAAC,QAAQ,EAAE,yCAAyC,CAAC,CAC/D;KACE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9E,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YAClC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM;SACP,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5D,IAAI,MAAM,CAAC,YAAY;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,WAAW,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,2DAA2D,CAAC;KACxE,MAAM,CAAC,SAAS,EAAE,uCAAuC,CAAC;KAC1D,MAAM,CAAC,eAAe,EAAE,oCAAoC,CAAC;KAC7D,MAAM,CAAC,kBAAkB,EAAE,4BAA4B,CAAC;KACxD,MAAM,CAAC,cAAc,EAAE,uCAAuC,CAAC;KAC/D,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;KAC7C,MAAM,CAAC,uBAAuB,EAAE,eAAe,CAAC;KAChD,MAAM,CAAC,WAAW,EAAE,iBAAiB,CAAC;KACtC,MAAM,CAAC,kBAAkB,EAAE,0BAA0B,CAAC;KACtD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,OAAO,CAAC;YACZ,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,WAAW,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,iBAAiB,CACf,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;KAC/C,MAAM,CAAC,QAAQ,EAAE,8BAA8B,CAAC;KAChD,MAAM,CAAC,SAAS,EAAE,4BAA4B,CAAC,CACnD;KACE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9E,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;YACjC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM;SACP,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5D,IAAI,MAAM,CAAC,YAAY;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,WAAW,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;KAC/B,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,WAAW,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;KAC/B,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,WAAW,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;KAC/B,MAAM,CAAC,UAAU,EAAE,2BAA2B,CAAC;KAC/C,MAAM,CAAC,cAAc,EAAE,yBAAyB,CAAC;KACjD,MAAM,CAAC,cAAc,EAAE,0BAA0B,CAAC;KAClD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC;YAC5B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,WAAW,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,cAAc,EAAE,eAAe,CAAC;KACvC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC;KAChC,MAAM,CAAC,cAAc,EAAE,yBAAyB,CAAC;KACjD,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC;KACpC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC;KAChC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC;YAC1B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,WAAW,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,IAAI,CAAC;KACb,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,cAAc,EAAE,qBAAqB,CAAC;KAC7C,MAAM,CAAC,SAAS,EAAE,iBAAiB,CAAC;KACpC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,WAAW,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,sDAAsD,CAAC;KACnE,MAAM,CAAC,kBAAkB,EAAE,YAAY,CAAC;KACxC,MAAM,CAAC,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;KAC3D,MAAM,CAAC,mBAAmB,EAAE,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;KACpE,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;KAC7C,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;KAC/B,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,WAAW,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,WAAW,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;IAC3C,OAAO,CAAC,KAAK,CAAC,IAAI,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC;IAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../src/commands/ci.ts"],"names":[],"mappings":"AAgDA,MAAM,MAAM,SAAS,GAAG;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,wBAAsB,KAAK,CAAC,IAAI,GAAE,SAAc,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../src/commands/ci.ts"],"names":[],"mappings":"AAgDA,MAAM,MAAM,SAAS,GAAG;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,wBAAsB,KAAK,CAAC,IAAI,GAAE,SAAc,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAoB5F"}
|
package/dist/commands/ci.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as fs from 'node:fs';
|
|
2
2
|
import * as path from 'node:path';
|
|
3
3
|
import { ok, title, info } from '../utils/log.js';
|
|
4
|
-
const WORKFLOW = `# Generated by sublyzer-snapshot ci
|
|
4
|
+
const WORKFLOW = `# Generated by sublyzer-snapshot ci
|
|
5
5
|
name: Sublyzer Snapshot
|
|
6
6
|
|
|
7
7
|
on:
|
|
@@ -9,7 +9,7 @@ on:
|
|
|
9
9
|
branches: [main, master]
|
|
10
10
|
pull_request:
|
|
11
11
|
schedule:
|
|
12
|
-
- cron: '0 9 * * 1'
|
|
12
|
+
- cron: '0 9 * * 1'
|
|
13
13
|
|
|
14
14
|
jobs:
|
|
15
15
|
snapshot:
|
|
@@ -22,19 +22,19 @@ jobs:
|
|
|
22
22
|
node-version: '20'
|
|
23
23
|
cache: npm
|
|
24
24
|
|
|
25
|
-
- name:
|
|
26
|
-
run:
|
|
25
|
+
- name: Local health scan
|
|
26
|
+
run: npx sublyzer-snapshot@latest scan --json > snapshot-result.json
|
|
27
27
|
|
|
28
|
-
- name:
|
|
28
|
+
- name: Report
|
|
29
|
+
run: npx sublyzer-snapshot@latest report --out sublyzer-report.md
|
|
30
|
+
|
|
31
|
+
- name: Optional cloud push
|
|
32
|
+
if: \${{ secrets.SUBLYZER_INTEGRATION_CODE != '' }}
|
|
29
33
|
env:
|
|
30
34
|
SUBLYZER_INTEGRATION_CODE: \${{ secrets.SUBLYZER_INTEGRATION_CODE }}
|
|
31
|
-
run:
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
run: sublyzer-snapshot run --fail-on high --json > snapshot-result.json
|
|
35
|
-
|
|
36
|
-
- name: Upload report
|
|
37
|
-
run: sublyzer-snapshot report --out sublyzer-report.md
|
|
35
|
+
run: |
|
|
36
|
+
npx sublyzer-snapshot@latest init --code "$SUBLYZER_INTEGRATION_CODE" -y
|
|
37
|
+
npx sublyzer-snapshot@latest run --push --fail-on high
|
|
38
38
|
|
|
39
39
|
- uses: actions/upload-artifact@v4
|
|
40
40
|
if: always()
|
|
@@ -50,7 +50,8 @@ export async function runCi(opts = {}) {
|
|
|
50
50
|
if (opts.print !== false && !opts.out) {
|
|
51
51
|
title('Sublyzer Snapshot — CI template');
|
|
52
52
|
console.log(content);
|
|
53
|
-
info('Save to .github/workflows/sublyzer-snapshot.yml
|
|
53
|
+
info('Save to .github/workflows/sublyzer-snapshot.yml');
|
|
54
|
+
info('Optional secret: SUBLYZER_INTEGRATION_CODE (for cloud push)');
|
|
54
55
|
return { path: outPath, content };
|
|
55
56
|
}
|
|
56
57
|
fs.mkdirSync(path.dirname(outPath), { recursive: true });
|
|
@@ -59,7 +60,7 @@ export async function runCi(opts = {}) {
|
|
|
59
60
|
}
|
|
60
61
|
fs.writeFileSync(outPath, content, 'utf8');
|
|
61
62
|
ok(`Wrote ${outPath}`);
|
|
62
|
-
info('
|
|
63
|
+
info('Optional secret: SUBLYZER_INTEGRATION_CODE');
|
|
63
64
|
return { path: outPath, content };
|
|
64
65
|
}
|
|
65
66
|
//# sourceMappingURL=ci.js.map
|
package/dist/commands/ci.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../src/commands/ci.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0ChB,CAAC;AAOF,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,OAAkB,EAAE;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,yCAAyC,CAAC,CAAC;IACnG,MAAM,OAAO,GAAG,QAAQ,CAAC;IAEzB,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACtC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../src/commands/ci.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0ChB,CAAC;AAOF,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,OAAkB,EAAE;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,yCAAyC,CAAC,CAAC;IACnG,MAAM,OAAO,GAAG,QAAQ,CAAC;IAEzB,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACtC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,iDAAiD,CAAC,CAAC;QACxD,IAAI,CAAC,6DAA6D,CAAC,CAAC;QACpE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACpC,CAAC;IAED,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,mCAAmC,CAAC,CAAC;IACtF,CAAC;IACD,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3C,EAAE,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC;IACvB,IAAI,CAAC,4CAA4C,CAAC,CAAC;IACnD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACpC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../src/commands/compare.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../src/commands/compare.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAsB,UAAU,CAAC,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAmE5F"}
|
package/dist/commands/compare.js
CHANGED
|
@@ -1,19 +1,23 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { tryLoadConfig } from '../config.js';
|
|
2
2
|
import { diffSnapshots, loadLastSnapshot, loadPreviousSnapshot, } from '../scan/history.js';
|
|
3
|
+
import { resolveScanTarget } from '../detect/scan-target.js';
|
|
3
4
|
import { buildProjectSnapshot } from '../scan/snapshot.js';
|
|
4
5
|
import { info, title } from '../utils/log.js';
|
|
5
6
|
export async function runCompare(opts = {}) {
|
|
6
|
-
const config =
|
|
7
|
-
const
|
|
8
|
-
const previous = loadPreviousSnapshot(
|
|
7
|
+
const config = tryLoadConfig();
|
|
8
|
+
const anchor = config?.configRoot || process.cwd();
|
|
9
|
+
const previous = loadPreviousSnapshot(anchor) || loadLastSnapshot(anchor);
|
|
9
10
|
const current = opts.rescan
|
|
10
|
-
? buildProjectSnapshot(
|
|
11
|
-
|
|
11
|
+
? buildProjectSnapshot(anchor, {
|
|
12
|
+
skipAudit: opts.skipAudit,
|
|
13
|
+
target: resolveScanTarget(anchor, opts.path || config?.scanRoot),
|
|
14
|
+
})
|
|
15
|
+
: loadLastSnapshot(anchor);
|
|
12
16
|
if (!current) {
|
|
13
|
-
throw new Error('No scan data. Run: sublyzer-snapshot
|
|
17
|
+
throw new Error('No scan data. Run: npx sublyzer-snapshot scan');
|
|
14
18
|
}
|
|
15
19
|
if (!previous || previous.scannedAt === current.scannedAt) {
|
|
16
|
-
throw new Error('Need at least two scans
|
|
20
|
+
throw new Error('Need at least two scans. Run `scan` or `run` again.');
|
|
17
21
|
}
|
|
18
22
|
const healthDelta = (current.health?.score ?? current.summary.healthScore) -
|
|
19
23
|
(previous.health?.score ?? previous.summary?.healthScore ?? 0);
|
|
@@ -21,12 +25,14 @@ export async function runCompare(opts = {}) {
|
|
|
21
25
|
const payload = {
|
|
22
26
|
previous: {
|
|
23
27
|
scannedAt: previous.scannedAt,
|
|
28
|
+
scanRoot: previous.scanRoot,
|
|
24
29
|
healthScore: previous.health?.score ?? previous.summary?.healthScore,
|
|
25
30
|
routes: previous.summary.routeCount,
|
|
26
31
|
vulnerabilities: previous.summary.vulnerablePackages,
|
|
27
32
|
},
|
|
28
33
|
current: {
|
|
29
34
|
scannedAt: current.scannedAt,
|
|
35
|
+
scanRoot: current.scanRoot,
|
|
30
36
|
healthScore: current.health?.score ?? current.summary.healthScore,
|
|
31
37
|
routes: current.summary.routeCount,
|
|
32
38
|
vulnerabilities: current.summary.vulnerablePackages,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/commands/compare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/commands/compare.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE/C,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAsB,SAAS,CAAC,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE/C,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAsB,SAAS,CAAC,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC,CAiGzG"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -1,88 +1,90 @@
|
|
|
1
1
|
import { spawnSync } from 'node:child_process';
|
|
2
|
-
import { configExists, loadConfig, resolveReadKey } from '../config.js';
|
|
2
|
+
import { configExists, isCloudConfig, loadConfig, resolveReadKey } from '../config.js';
|
|
3
3
|
import { fetchPublicSnapshot, validateIntegrationCode } from '../api/sublyzer.js';
|
|
4
|
-
import {
|
|
4
|
+
import { resolveScanTarget } from '../detect/scan-target.js';
|
|
5
5
|
import { info, ok, title, warn } from '../utils/log.js';
|
|
6
6
|
export async function runDoctor(opts = {}) {
|
|
7
7
|
const checks = [];
|
|
8
|
-
// Config
|
|
9
8
|
if (!configExists()) {
|
|
10
|
-
checks.push({
|
|
9
|
+
checks.push({
|
|
10
|
+
name: 'config',
|
|
11
|
+
ok: true,
|
|
12
|
+
message: 'No config — `scan` works standalone; run `init --local` to save prefs',
|
|
13
|
+
});
|
|
11
14
|
}
|
|
12
15
|
else {
|
|
13
16
|
checks.push({ name: 'config', ok: true, message: 'Config file found' });
|
|
14
17
|
}
|
|
15
18
|
let config;
|
|
16
19
|
try {
|
|
17
|
-
config = loadConfig();
|
|
20
|
+
config = configExists() ? loadConfig() : null;
|
|
18
21
|
}
|
|
19
22
|
catch (e) {
|
|
20
23
|
checks.push({ name: 'config-parse', ok: false, message: e?.message || 'Invalid config' });
|
|
21
24
|
}
|
|
22
|
-
// Node version
|
|
23
25
|
const nodeMajor = parseInt(process.versions.node.split('.')[0] || '0', 10);
|
|
24
26
|
checks.push({
|
|
25
27
|
name: 'node',
|
|
26
28
|
ok: nodeMajor >= 18,
|
|
27
29
|
message: nodeMajor >= 18 ? `Node ${process.versions.node}` : `Node ${process.versions.node} — require 18+`,
|
|
28
30
|
});
|
|
29
|
-
// npm
|
|
30
31
|
const npm = spawnSync(process.platform === 'win32' ? 'npm.cmd' : 'npm', ['--version'], { encoding: 'utf8' });
|
|
31
32
|
checks.push({
|
|
32
33
|
name: 'npm',
|
|
33
34
|
ok: true,
|
|
34
|
-
message: npm.status === 0 ? `npm ${(npm.stdout || '').trim()}` : 'npm not found — audit
|
|
35
|
+
message: npm.status === 0 ? `npm ${(npm.stdout || '').trim()}` : 'npm not found — audit skipped unless in package dir',
|
|
35
36
|
});
|
|
36
|
-
|
|
37
|
-
const stack = detectStack(config?.projectRoot || process.cwd());
|
|
37
|
+
const target = resolveScanTarget(config?.configRoot || process.cwd(), config?.scanRoot);
|
|
38
38
|
checks.push({
|
|
39
|
-
name: '
|
|
40
|
-
ok: stack.id !== 'unknown',
|
|
41
|
-
message: stack.
|
|
39
|
+
name: 'scan-target',
|
|
40
|
+
ok: target.stack.id !== 'unknown',
|
|
41
|
+
message: `${target.stack.label} @ ${target.root} (${target.reason})`,
|
|
42
42
|
});
|
|
43
43
|
if (config) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
? `${validation.integration?.name} (${validation.integration?.status})`
|
|
51
|
-
: validation.message || 'Invalid integration code',
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
catch (e) {
|
|
55
|
-
checks.push({ name: 'integration', ok: false, message: e?.message || 'API unreachable' });
|
|
56
|
-
}
|
|
57
|
-
const readKey = resolveReadKey(config);
|
|
58
|
-
if (readKey) {
|
|
44
|
+
checks.push({
|
|
45
|
+
name: 'mode',
|
|
46
|
+
ok: true,
|
|
47
|
+
message: config.mode === 'cloud' ? 'cloud (push enabled)' : 'local (no cloud required)',
|
|
48
|
+
});
|
|
49
|
+
if (isCloudConfig(config)) {
|
|
59
50
|
try {
|
|
60
|
-
const
|
|
61
|
-
limit: 1,
|
|
62
|
-
include: ['stats'],
|
|
63
|
-
});
|
|
51
|
+
const validation = await validateIntegrationCode(config.apiUrl, config.integrationCode);
|
|
64
52
|
checks.push({
|
|
65
|
-
name: '
|
|
66
|
-
ok:
|
|
67
|
-
message:
|
|
53
|
+
name: 'integration',
|
|
54
|
+
ok: Boolean(validation.valid),
|
|
55
|
+
message: validation.valid
|
|
56
|
+
? `${validation.integration?.name} (${validation.integration?.status})`
|
|
57
|
+
: validation.message || 'Invalid integration code',
|
|
68
58
|
});
|
|
69
59
|
}
|
|
70
60
|
catch (e) {
|
|
71
|
-
checks.push({ name: '
|
|
61
|
+
checks.push({ name: 'integration', ok: false, message: e?.message || 'API unreachable' });
|
|
62
|
+
}
|
|
63
|
+
const readKey = resolveReadKey(config);
|
|
64
|
+
if (readKey) {
|
|
65
|
+
try {
|
|
66
|
+
const pull = await fetchPublicSnapshot(config.apiUrl, config.integrationCode, readKey, {
|
|
67
|
+
limit: 1,
|
|
68
|
+
include: ['stats'],
|
|
69
|
+
});
|
|
70
|
+
checks.push({
|
|
71
|
+
name: 'read-key',
|
|
72
|
+
ok: pull.ok,
|
|
73
|
+
message: pull.ok ? 'Read key valid' : pull.error || `HTTP ${pull.status}`,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
checks.push({ name: 'read-key', ok: false, message: e?.message || 'Read key check failed' });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
checks.push({ name: 'read-key', ok: true, message: 'Not set (optional)' });
|
|
72
82
|
}
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
checks.push({
|
|
76
|
-
name: 'read-key',
|
|
77
|
-
ok: true,
|
|
78
|
-
message: 'Not configured (optional — enables pull)',
|
|
79
|
-
});
|
|
80
83
|
}
|
|
81
84
|
}
|
|
82
85
|
const allOk = checks.every((c) => c.ok);
|
|
83
|
-
if (opts.json)
|
|
86
|
+
if (opts.json)
|
|
84
87
|
return { ok: allOk, checks };
|
|
85
|
-
}
|
|
86
88
|
title('Sublyzer Snapshot — doctor');
|
|
87
89
|
for (const c of checks) {
|
|
88
90
|
if (c.ok)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAeA,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAsB,OAAO,CAAC,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyGnE"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,22 +1,55 @@
|
|
|
1
1
|
import * as path from 'node:path';
|
|
2
|
-
import { DEFAULT_API_URL, DEFAULT_DASHBOARD_URL, INTEGRATION_CODE_RE, } from '../constants.js';
|
|
2
|
+
import { DEFAULT_API_URL, DEFAULT_DASHBOARD_URL, DOCS_URL, INTEGRATION_CODE_RE, } from '../constants.js';
|
|
3
3
|
import { saveConfig } from '../config.js';
|
|
4
|
-
import {
|
|
4
|
+
import { readProjectName } from '../detect/stack.js';
|
|
5
|
+
import { resolveScanTarget, findMonorepoScanHints } from '../detect/scan-target.js';
|
|
5
6
|
import { validateIntegrationCode } from '../api/sublyzer.js';
|
|
6
7
|
import { promptOptional, promptRequired } from '../utils/prompt.js';
|
|
7
|
-
import { ensureGitignore
|
|
8
|
+
import { ensureGitignore } from '../utils/gitignore.js';
|
|
8
9
|
import { info, ok, title } from '../utils/log.js';
|
|
9
10
|
export async function runInit(opts = {}) {
|
|
10
11
|
title('Sublyzer Snapshot — init');
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
12
|
+
const configRoot = process.cwd();
|
|
13
|
+
const target = resolveScanTarget(configRoot, opts.path);
|
|
14
|
+
const stack = target.stack;
|
|
15
|
+
const projectName = readProjectName(target.root);
|
|
14
16
|
info(`Project: ${projectName}`);
|
|
17
|
+
info(`Scan root: ${target.root} (${target.reason})`);
|
|
15
18
|
info(`Detected stack: ${stack.label} (${stack.confidence})`);
|
|
16
19
|
if (stack.hints.length) {
|
|
17
20
|
for (const h of stack.hints)
|
|
18
21
|
info(` hint: ${h}`);
|
|
19
22
|
}
|
|
23
|
+
const hints = findMonorepoScanHints(configRoot);
|
|
24
|
+
if (hints.length > 1 && !opts.path) {
|
|
25
|
+
info('Other scannable packages in this repo:');
|
|
26
|
+
for (const h of hints.slice(0, 5)) {
|
|
27
|
+
const rel = path.relative(configRoot, h.root) || '.';
|
|
28
|
+
if (path.resolve(h.root) === path.resolve(target.root))
|
|
29
|
+
continue;
|
|
30
|
+
info(` • ${rel} (${h.stack.label})`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const now = new Date().toISOString();
|
|
34
|
+
const localMode = Boolean(opts.local);
|
|
35
|
+
if (localMode) {
|
|
36
|
+
const config = {
|
|
37
|
+
version: 1,
|
|
38
|
+
mode: 'local',
|
|
39
|
+
projectName,
|
|
40
|
+
configRoot,
|
|
41
|
+
scanRoot: target.root,
|
|
42
|
+
stack: stack.id,
|
|
43
|
+
createdAt: now,
|
|
44
|
+
updatedAt: now,
|
|
45
|
+
};
|
|
46
|
+
saveConfig(config, configRoot);
|
|
47
|
+
ok(`Wrote ${path.join('.sublyzer', 'snapshot.json')} (local mode)`);
|
|
48
|
+
if (!opts.skipGitignore)
|
|
49
|
+
ensureGitignore(configRoot);
|
|
50
|
+
printNextSteps(false);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
20
53
|
const apiUrl = (opts.apiUrl || process.env.SUBLYZER_API_URL || DEFAULT_API_URL).replace(/\/$/, '');
|
|
21
54
|
const dashboardUrl = (opts.dashboardUrl || process.env.SUBLYZER_DASHBOARD_URL || DEFAULT_DASHBOARD_URL).replace(/\/$/, '');
|
|
22
55
|
let code = (opts.code || process.env.SUBLYZER_INTEGRATION_CODE || process.env.SUBLYZER_CODE || '')
|
|
@@ -24,8 +57,8 @@ export async function runInit(opts = {}) {
|
|
|
24
57
|
.toUpperCase();
|
|
25
58
|
if (!code) {
|
|
26
59
|
console.log('');
|
|
27
|
-
console.log('
|
|
28
|
-
console.log('
|
|
60
|
+
console.log(' Cloud sync (optional): link to Sublyzer dashboard');
|
|
61
|
+
console.log(' Or use local-only: sublyzer-snapshot init --local');
|
|
29
62
|
console.log('');
|
|
30
63
|
code = (await promptRequired('Integration code (24 chars)', (v) => {
|
|
31
64
|
const c = v.trim().toUpperCase();
|
|
@@ -39,11 +72,7 @@ export async function runInit(opts = {}) {
|
|
|
39
72
|
}
|
|
40
73
|
let readKey = (opts.readKey || process.env.SUBLYZER_READ_KEY || '').trim();
|
|
41
74
|
if (!readKey && !opts.yes) {
|
|
42
|
-
|
|
43
|
-
console.log(' Optional: apiReadKey enables `sublyzer-snapshot pull` (read data back).');
|
|
44
|
-
console.log(' Get it from: GET /integrations/{id}/read-access (dashboard JWT) or skip for now.');
|
|
45
|
-
console.log('');
|
|
46
|
-
readKey = (await promptOptional('Read key (optional, press Enter to skip)')) || '';
|
|
75
|
+
readKey = (await promptOptional('Read key (optional, Enter to skip)')) || '';
|
|
47
76
|
}
|
|
48
77
|
info(`Validating code against ${apiUrl}…`);
|
|
49
78
|
const validation = await validateIntegrationCode(apiUrl, code);
|
|
@@ -51,38 +80,51 @@ export async function runInit(opts = {}) {
|
|
|
51
80
|
throw new Error(validation.message || 'Integration code not found or invalid');
|
|
52
81
|
}
|
|
53
82
|
ok(`Integration "${validation.integration.name}" (${validation.integration.status})`);
|
|
54
|
-
const now = new Date().toISOString();
|
|
55
83
|
const config = {
|
|
56
84
|
version: 1,
|
|
85
|
+
mode: 'cloud',
|
|
57
86
|
integrationCode: code,
|
|
58
87
|
apiUrl,
|
|
59
88
|
dashboardUrl,
|
|
60
89
|
integrationId: validation.integration.id,
|
|
61
90
|
integrationName: validation.integration.name,
|
|
62
91
|
projectName,
|
|
63
|
-
|
|
92
|
+
configRoot,
|
|
93
|
+
scanRoot: target.root,
|
|
64
94
|
stack: stack.id,
|
|
65
95
|
createdAt: now,
|
|
66
96
|
updatedAt: now,
|
|
67
97
|
};
|
|
68
98
|
if (readKey.length >= 32) {
|
|
69
99
|
config.readKey = readKey;
|
|
70
|
-
ok('Read key saved — `pull`
|
|
71
|
-
}
|
|
72
|
-
saveConfig(config, root);
|
|
73
|
-
ok(`Wrote ${path.join('.sublyzer', 'snapshot.json')}`);
|
|
74
|
-
if (!opts.skipGitignore) {
|
|
75
|
-
ensureGitignore(root);
|
|
100
|
+
ok('Read key saved — `pull` enabled');
|
|
76
101
|
}
|
|
102
|
+
saveConfig(config, configRoot);
|
|
103
|
+
ok(`Wrote ${path.join('.sublyzer', 'snapshot.json')} (cloud mode)`);
|
|
104
|
+
if (!opts.skipGitignore)
|
|
105
|
+
ensureGitignore(configRoot);
|
|
106
|
+
printNextSteps(true, stack.id, code, apiUrl);
|
|
107
|
+
}
|
|
108
|
+
function printNextSteps(cloud, stackId, code, apiUrl) {
|
|
77
109
|
console.log('');
|
|
78
110
|
console.log(' Next steps:');
|
|
79
|
-
console.log(' sublyzer-snapshot
|
|
80
|
-
console.log(' sublyzer-snapshot
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
111
|
+
console.log(' npx sublyzer-snapshot scan Local scan (no account needed)');
|
|
112
|
+
console.log(' npx sublyzer-snapshot run Scan + save history');
|
|
113
|
+
if (cloud) {
|
|
114
|
+
console.log(' npx sublyzer-snapshot run --push Push to Sublyzer dashboard');
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
console.log(' npx sublyzer-snapshot init --code … Optional cloud link');
|
|
118
|
+
}
|
|
119
|
+
console.log(' npx sublyzer-snapshot report Markdown report');
|
|
85
120
|
console.log('');
|
|
86
|
-
|
|
121
|
+
if (cloud && stackId && code && apiUrl) {
|
|
122
|
+
info('Optional live SDK (Sublyzer cloud):');
|
|
123
|
+
console.log('');
|
|
124
|
+
console.log(` <script src="/sdks/sublyzer.js" defer data-integration-code="${code}" data-api-url="${apiUrl}"></script>`);
|
|
125
|
+
console.log('');
|
|
126
|
+
console.log(` Docs: ${DOCS_URL}`);
|
|
127
|
+
console.log('');
|
|
128
|
+
}
|
|
87
129
|
}
|
|
88
130
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAuB,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAIA,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAIA,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAkB7C"}
|
package/dist/commands/open.js
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
|
-
import { dashboardIntegrationUrl, loadConfig } from '../config.js';
|
|
2
|
+
import { dashboardIntegrationUrl, isCloudConfig, loadConfig } from '../config.js';
|
|
3
3
|
import { info, ok } from '../utils/log.js';
|
|
4
4
|
export async function runOpen() {
|
|
5
5
|
const config = loadConfig();
|
|
6
|
+
if (!isCloudConfig(config)) {
|
|
7
|
+
throw new Error('Cloud not linked. Run: npx sublyzer-snapshot init --code YOUR_CODE');
|
|
8
|
+
}
|
|
6
9
|
const url = dashboardIntegrationUrl(config);
|
|
10
|
+
if (!url)
|
|
11
|
+
throw new Error('Dashboard URL unavailable');
|
|
7
12
|
info(`Opening ${url}`);
|
|
8
13
|
const cmd = process.platform === 'win32'
|
|
9
14
|
? spawn('cmd', ['/c', 'start', '', url], { detached: true, stdio: 'ignore' })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,OAAO;IAC3B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IACxF,CAAC;IACD,MAAM,GAAG,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACvD,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;IAEvB,MAAM,GAAG,GACP,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC1B,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAC7E,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ;YAC7B,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YAC3D,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEtE,GAAG,CAAC,KAAK,EAAE,CAAC;IACZ,EAAE,CAAC,0CAA0C,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,wBAAsB,OAAO,CAAC,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,wBAAsB,OAAO,CAAC,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CA0CtE"}
|
package/dist/commands/pull.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import { loadConfig, resolveReadKey } from '../config.js';
|
|
1
|
+
import { isCloudConfig, loadConfig, resolveReadKey } from '../config.js';
|
|
2
2
|
import { fetchPublicSnapshot } from '../api/sublyzer.js';
|
|
3
3
|
import { info, ok, title } from '../utils/log.js';
|
|
4
4
|
export async function runPull(opts = {}) {
|
|
5
5
|
const config = loadConfig();
|
|
6
|
+
if (!isCloudConfig(config)) {
|
|
7
|
+
throw new Error('Cloud not linked. `pull` requires init --code and apiReadKey.');
|
|
8
|
+
}
|
|
6
9
|
const readKey = resolveReadKey(config, opts.readKey);
|
|
7
10
|
if (!readKey || readKey.length < 32) {
|
|
8
11
|
throw new Error('Read key required. Set SUBLYZER_READ_KEY, save in config via init, or pass --read-key. ' +
|