@colbymchenry/codegraph-darwin-x64 0.9.9 → 1.0.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/lib/dist/bin/codegraph.d.ts +1 -0
- package/lib/dist/bin/codegraph.d.ts.map +1 -1
- package/lib/dist/bin/codegraph.js +246 -3
- package/lib/dist/bin/codegraph.js.map +1 -1
- package/lib/dist/context/index.d.ts.map +1 -1
- package/lib/dist/context/index.js +7 -0
- package/lib/dist/context/index.js.map +1 -1
- package/lib/dist/db/index.d.ts.map +1 -1
- package/lib/dist/db/index.js +2 -1
- package/lib/dist/db/index.js.map +1 -1
- package/lib/dist/db/migrations.d.ts +1 -1
- package/lib/dist/db/migrations.d.ts.map +1 -1
- package/lib/dist/db/migrations.js +10 -1
- package/lib/dist/db/migrations.js.map +1 -1
- package/lib/dist/db/queries.d.ts +43 -0
- package/lib/dist/db/queries.d.ts.map +1 -1
- package/lib/dist/db/queries.js +103 -7
- package/lib/dist/db/queries.js.map +1 -1
- package/lib/dist/db/schema.sql +1 -0
- package/lib/dist/db/sqlite-adapter.d.ts +7 -0
- package/lib/dist/db/sqlite-adapter.d.ts.map +1 -1
- package/lib/dist/db/sqlite-adapter.js +3 -0
- package/lib/dist/db/sqlite-adapter.js.map +1 -1
- package/lib/dist/directory.d.ts +34 -2
- package/lib/dist/directory.d.ts.map +1 -1
- package/lib/dist/directory.js +129 -35
- package/lib/dist/directory.js.map +1 -1
- package/lib/dist/extraction/astro-extractor.d.ts +79 -0
- package/lib/dist/extraction/astro-extractor.d.ts.map +1 -0
- package/lib/dist/extraction/astro-extractor.js +320 -0
- package/lib/dist/extraction/astro-extractor.js.map +1 -0
- package/lib/dist/extraction/extraction-version.d.ts +25 -0
- package/lib/dist/extraction/extraction-version.d.ts.map +1 -0
- package/lib/dist/extraction/extraction-version.js +28 -0
- package/lib/dist/extraction/extraction-version.js.map +1 -0
- package/lib/dist/extraction/function-ref.d.ts +118 -0
- package/lib/dist/extraction/function-ref.d.ts.map +1 -0
- package/lib/dist/extraction/function-ref.js +727 -0
- package/lib/dist/extraction/function-ref.js.map +1 -0
- package/lib/dist/extraction/generated-detection.d.ts.map +1 -1
- package/lib/dist/extraction/generated-detection.js +3 -0
- package/lib/dist/extraction/generated-detection.js.map +1 -1
- package/lib/dist/extraction/grammars.d.ts +7 -1
- package/lib/dist/extraction/grammars.d.ts.map +1 -1
- package/lib/dist/extraction/grammars.js +52 -4
- package/lib/dist/extraction/grammars.js.map +1 -1
- package/lib/dist/extraction/index.d.ts +34 -0
- package/lib/dist/extraction/index.d.ts.map +1 -1
- package/lib/dist/extraction/index.js +346 -62
- package/lib/dist/extraction/index.js.map +1 -1
- package/lib/dist/extraction/languages/c-cpp.d.ts +8 -0
- package/lib/dist/extraction/languages/c-cpp.d.ts.map +1 -1
- package/lib/dist/extraction/languages/c-cpp.js +87 -28
- package/lib/dist/extraction/languages/c-cpp.js.map +1 -1
- package/lib/dist/extraction/languages/csharp.d.ts +22 -0
- package/lib/dist/extraction/languages/csharp.d.ts.map +1 -1
- package/lib/dist/extraction/languages/csharp.js +84 -2
- package/lib/dist/extraction/languages/csharp.js.map +1 -1
- package/lib/dist/extraction/languages/dart.d.ts.map +1 -1
- package/lib/dist/extraction/languages/dart.js +161 -1
- package/lib/dist/extraction/languages/dart.js.map +1 -1
- package/lib/dist/extraction/languages/go.d.ts.map +1 -1
- package/lib/dist/extraction/languages/go.js +43 -2
- package/lib/dist/extraction/languages/go.js.map +1 -1
- package/lib/dist/extraction/languages/index.d.ts.map +1 -1
- package/lib/dist/extraction/languages/index.js +2 -0
- package/lib/dist/extraction/languages/index.js.map +1 -1
- package/lib/dist/extraction/languages/java.d.ts.map +1 -1
- package/lib/dist/extraction/languages/java.js +42 -1
- package/lib/dist/extraction/languages/java.js.map +1 -1
- package/lib/dist/extraction/languages/javascript.d.ts.map +1 -1
- package/lib/dist/extraction/languages/javascript.js +16 -0
- package/lib/dist/extraction/languages/javascript.js.map +1 -1
- package/lib/dist/extraction/languages/kotlin.d.ts.map +1 -1
- package/lib/dist/extraction/languages/kotlin.js +69 -0
- package/lib/dist/extraction/languages/kotlin.js.map +1 -1
- package/lib/dist/extraction/languages/objc.d.ts.map +1 -1
- package/lib/dist/extraction/languages/objc.js +42 -0
- package/lib/dist/extraction/languages/objc.js.map +1 -1
- package/lib/dist/extraction/languages/pascal.d.ts.map +1 -1
- package/lib/dist/extraction/languages/pascal.js +11 -0
- package/lib/dist/extraction/languages/pascal.js.map +1 -1
- package/lib/dist/extraction/languages/php.d.ts.map +1 -1
- package/lib/dist/extraction/languages/php.js +90 -1
- package/lib/dist/extraction/languages/php.js.map +1 -1
- package/lib/dist/extraction/languages/r.d.ts +3 -0
- package/lib/dist/extraction/languages/r.d.ts.map +1 -0
- package/lib/dist/extraction/languages/r.js +314 -0
- package/lib/dist/extraction/languages/r.js.map +1 -0
- package/lib/dist/extraction/languages/ruby.d.ts.map +1 -1
- package/lib/dist/extraction/languages/ruby.js +35 -0
- package/lib/dist/extraction/languages/ruby.js.map +1 -1
- package/lib/dist/extraction/languages/rust.d.ts.map +1 -1
- package/lib/dist/extraction/languages/rust.js +35 -2
- package/lib/dist/extraction/languages/rust.js.map +1 -1
- package/lib/dist/extraction/languages/scala.d.ts.map +1 -1
- package/lib/dist/extraction/languages/scala.js +61 -1
- package/lib/dist/extraction/languages/scala.js.map +1 -1
- package/lib/dist/extraction/languages/swift.d.ts.map +1 -1
- package/lib/dist/extraction/languages/swift.js +61 -0
- package/lib/dist/extraction/languages/swift.js.map +1 -1
- package/lib/dist/extraction/languages/typescript.d.ts +13 -0
- package/lib/dist/extraction/languages/typescript.d.ts.map +1 -1
- package/lib/dist/extraction/languages/typescript.js +38 -0
- package/lib/dist/extraction/languages/typescript.js.map +1 -1
- package/lib/dist/extraction/liquid-extractor.d.ts +7 -0
- package/lib/dist/extraction/liquid-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/liquid-extractor.js +53 -9
- package/lib/dist/extraction/liquid-extractor.js.map +1 -1
- package/lib/dist/extraction/razor-extractor.d.ts +42 -0
- package/lib/dist/extraction/razor-extractor.d.ts.map +1 -0
- package/lib/dist/extraction/razor-extractor.js +285 -0
- package/lib/dist/extraction/razor-extractor.js.map +1 -0
- package/lib/dist/extraction/svelte-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/svelte-extractor.js +6 -3
- package/lib/dist/extraction/svelte-extractor.js.map +1 -1
- package/lib/dist/extraction/tree-sitter-helpers.d.ts.map +1 -1
- package/lib/dist/extraction/tree-sitter-helpers.js +59 -10
- package/lib/dist/extraction/tree-sitter-helpers.js.map +1 -1
- package/lib/dist/extraction/tree-sitter-types.d.ts +33 -0
- package/lib/dist/extraction/tree-sitter-types.d.ts.map +1 -1
- package/lib/dist/extraction/tree-sitter.d.ts +211 -0
- package/lib/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/lib/dist/extraction/tree-sitter.js +1681 -49
- package/lib/dist/extraction/tree-sitter.js.map +1 -1
- package/lib/dist/extraction/vue-extractor.d.ts +15 -0
- package/lib/dist/extraction/vue-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/vue-extractor.js +94 -3
- package/lib/dist/extraction/vue-extractor.js.map +1 -1
- package/lib/dist/extraction/wasm/tree-sitter-c_sharp.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-r.wasm +0 -0
- package/lib/dist/graph/queries.d.ts.map +1 -1
- package/lib/dist/graph/queries.js +13 -40
- package/lib/dist/graph/queries.js.map +1 -1
- package/lib/dist/graph/traversal.d.ts.map +1 -1
- package/lib/dist/graph/traversal.js +16 -4
- package/lib/dist/graph/traversal.js.map +1 -1
- package/lib/dist/index.d.ts +34 -2
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +90 -8
- package/lib/dist/index.js.map +1 -1
- package/lib/dist/installer/index.d.ts.map +1 -1
- package/lib/dist/installer/index.js +52 -2
- package/lib/dist/installer/index.js.map +1 -1
- package/lib/dist/installer/instructions-template.d.ts +34 -11
- package/lib/dist/installer/instructions-template.d.ts.map +1 -1
- package/lib/dist/installer/instructions-template.js +44 -12
- package/lib/dist/installer/instructions-template.js.map +1 -1
- package/lib/dist/installer/targets/claude.d.ts.map +1 -1
- package/lib/dist/installer/targets/claude.js +6 -10
- package/lib/dist/installer/targets/claude.js.map +1 -1
- package/lib/dist/installer/targets/codex.js +4 -6
- package/lib/dist/installer/targets/codex.js.map +1 -1
- package/lib/dist/installer/targets/gemini.js +4 -6
- package/lib/dist/installer/targets/gemini.js.map +1 -1
- package/lib/dist/installer/targets/opencode.d.ts +9 -1
- package/lib/dist/installer/targets/opencode.d.ts.map +1 -1
- package/lib/dist/installer/targets/opencode.js +91 -40
- package/lib/dist/installer/targets/opencode.js.map +1 -1
- package/lib/dist/installer/targets/shared.d.ts +14 -0
- package/lib/dist/installer/targets/shared.d.ts.map +1 -1
- package/lib/dist/installer/targets/shared.js +16 -0
- package/lib/dist/installer/targets/shared.js.map +1 -1
- package/lib/dist/mcp/daemon.d.ts +60 -1
- package/lib/dist/mcp/daemon.d.ts.map +1 -1
- package/lib/dist/mcp/daemon.js +221 -8
- package/lib/dist/mcp/daemon.js.map +1 -1
- package/lib/dist/mcp/dynamic-boundaries.d.ts +41 -0
- package/lib/dist/mcp/dynamic-boundaries.d.ts.map +1 -0
- package/lib/dist/mcp/dynamic-boundaries.js +359 -0
- package/lib/dist/mcp/dynamic-boundaries.js.map +1 -0
- package/lib/dist/mcp/index.d.ts.map +1 -1
- package/lib/dist/mcp/index.js +18 -9
- package/lib/dist/mcp/index.js.map +1 -1
- package/lib/dist/mcp/ppid-watchdog.d.ts +44 -0
- package/lib/dist/mcp/ppid-watchdog.d.ts.map +1 -0
- package/lib/dist/mcp/ppid-watchdog.js +27 -0
- package/lib/dist/mcp/ppid-watchdog.js.map +1 -0
- package/lib/dist/mcp/proxy.d.ts +6 -0
- package/lib/dist/mcp/proxy.d.ts.map +1 -1
- package/lib/dist/mcp/proxy.js +153 -24
- package/lib/dist/mcp/proxy.js.map +1 -1
- package/lib/dist/mcp/server-instructions.d.ts +12 -1
- package/lib/dist/mcp/server-instructions.d.ts.map +1 -1
- package/lib/dist/mcp/server-instructions.js +43 -16
- package/lib/dist/mcp/server-instructions.js.map +1 -1
- package/lib/dist/mcp/session.d.ts +2 -0
- package/lib/dist/mcp/session.d.ts.map +1 -1
- package/lib/dist/mcp/session.js +49 -2
- package/lib/dist/mcp/session.js.map +1 -1
- package/lib/dist/mcp/stdin-teardown.d.ts +27 -0
- package/lib/dist/mcp/stdin-teardown.d.ts.map +1 -0
- package/lib/dist/mcp/stdin-teardown.js +49 -0
- package/lib/dist/mcp/stdin-teardown.js.map +1 -0
- package/lib/dist/mcp/tools.d.ts +71 -0
- package/lib/dist/mcp/tools.d.ts.map +1 -1
- package/lib/dist/mcp/tools.js +703 -85
- package/lib/dist/mcp/tools.js.map +1 -1
- package/lib/dist/mcp/transport.d.ts.map +1 -1
- package/lib/dist/mcp/transport.js +18 -2
- package/lib/dist/mcp/transport.js.map +1 -1
- package/lib/dist/resolution/callback-synthesizer.d.ts +3 -3
- package/lib/dist/resolution/callback-synthesizer.d.ts.map +1 -1
- package/lib/dist/resolution/callback-synthesizer.js +549 -21
- package/lib/dist/resolution/callback-synthesizer.js.map +1 -1
- package/lib/dist/resolution/frameworks/astro.d.ts +9 -0
- package/lib/dist/resolution/frameworks/astro.d.ts.map +1 -0
- package/lib/dist/resolution/frameworks/astro.js +169 -0
- package/lib/dist/resolution/frameworks/astro.js.map +1 -0
- package/lib/dist/resolution/frameworks/expo-modules.d.ts.map +1 -1
- package/lib/dist/resolution/frameworks/expo-modules.js +6 -1
- package/lib/dist/resolution/frameworks/expo-modules.js.map +1 -1
- package/lib/dist/resolution/frameworks/index.d.ts +1 -0
- package/lib/dist/resolution/frameworks/index.d.ts.map +1 -1
- package/lib/dist/resolution/frameworks/index.js +5 -1
- package/lib/dist/resolution/frameworks/index.js.map +1 -1
- package/lib/dist/resolution/frameworks/java.js +6 -1
- package/lib/dist/resolution/frameworks/java.js.map +1 -1
- package/lib/dist/resolution/frameworks/python.d.ts.map +1 -1
- package/lib/dist/resolution/frameworks/python.js +7 -3
- package/lib/dist/resolution/frameworks/python.js.map +1 -1
- package/lib/dist/resolution/frameworks/react-native.d.ts.map +1 -1
- package/lib/dist/resolution/frameworks/react-native.js +53 -3
- package/lib/dist/resolution/frameworks/react-native.js.map +1 -1
- package/lib/dist/resolution/frameworks/react.d.ts.map +1 -1
- package/lib/dist/resolution/frameworks/react.js +15 -3
- package/lib/dist/resolution/frameworks/react.js.map +1 -1
- package/lib/dist/resolution/frameworks/svelte.js +5 -1
- package/lib/dist/resolution/frameworks/svelte.js.map +1 -1
- package/lib/dist/resolution/frameworks/vue.js +24 -27
- package/lib/dist/resolution/frameworks/vue.js.map +1 -1
- package/lib/dist/resolution/import-resolver.d.ts +10 -0
- package/lib/dist/resolution/import-resolver.d.ts.map +1 -1
- package/lib/dist/resolution/import-resolver.js +564 -2
- package/lib/dist/resolution/import-resolver.js.map +1 -1
- package/lib/dist/resolution/index.d.ts +80 -0
- package/lib/dist/resolution/index.d.ts.map +1 -1
- package/lib/dist/resolution/index.js +457 -7
- package/lib/dist/resolution/index.js.map +1 -1
- package/lib/dist/resolution/name-matcher.d.ts +61 -0
- package/lib/dist/resolution/name-matcher.d.ts.map +1 -1
- package/lib/dist/resolution/name-matcher.js +590 -14
- package/lib/dist/resolution/name-matcher.js.map +1 -1
- package/lib/dist/resolution/types.d.ts +27 -3
- package/lib/dist/resolution/types.d.ts.map +1 -1
- package/lib/dist/resolution/workspace-packages.d.ts +48 -0
- package/lib/dist/resolution/workspace-packages.d.ts.map +1 -0
- package/lib/dist/resolution/workspace-packages.js +208 -0
- package/lib/dist/resolution/workspace-packages.js.map +1 -0
- package/lib/dist/search/query-utils.d.ts +17 -1
- package/lib/dist/search/query-utils.d.ts.map +1 -1
- package/lib/dist/search/query-utils.js +79 -10
- package/lib/dist/search/query-utils.js.map +1 -1
- package/lib/dist/sync/watcher.d.ts +124 -32
- package/lib/dist/sync/watcher.d.ts.map +1 -1
- package/lib/dist/sync/watcher.js +326 -111
- package/lib/dist/sync/watcher.js.map +1 -1
- package/lib/dist/telemetry/index.d.ts +146 -0
- package/lib/dist/telemetry/index.d.ts.map +1 -0
- package/lib/dist/telemetry/index.js +544 -0
- package/lib/dist/telemetry/index.js.map +1 -0
- package/lib/dist/types.d.ts +17 -2
- package/lib/dist/types.d.ts.map +1 -1
- package/lib/dist/types.js +3 -0
- package/lib/dist/types.js.map +1 -1
- package/lib/dist/upgrade/index.d.ts +132 -0
- package/lib/dist/upgrade/index.d.ts.map +1 -0
- package/lib/dist/upgrade/index.js +462 -0
- package/lib/dist/upgrade/index.js.map +1 -0
- package/lib/dist/utils.d.ts +30 -24
- package/lib/dist/utils.d.ts.map +1 -1
- package/lib/dist/utils.js +64 -48
- package/lib/dist/utils.js.map +1 -1
- package/lib/node_modules/.package-lock.json +1 -29
- package/lib/package.json +1 -2
- package/package.json +1 -1
- package/lib/node_modules/chokidar/LICENSE +0 -21
- package/lib/node_modules/chokidar/README.md +0 -305
- package/lib/node_modules/chokidar/esm/handler.d.ts +0 -90
- package/lib/node_modules/chokidar/esm/handler.js +0 -629
- package/lib/node_modules/chokidar/esm/index.d.ts +0 -215
- package/lib/node_modules/chokidar/esm/index.js +0 -798
- package/lib/node_modules/chokidar/esm/package.json +0 -1
- package/lib/node_modules/chokidar/handler.d.ts +0 -90
- package/lib/node_modules/chokidar/handler.js +0 -635
- package/lib/node_modules/chokidar/index.d.ts +0 -215
- package/lib/node_modules/chokidar/index.js +0 -804
- package/lib/node_modules/chokidar/package.json +0 -69
- package/lib/node_modules/readdirp/LICENSE +0 -21
- package/lib/node_modules/readdirp/README.md +0 -120
- package/lib/node_modules/readdirp/esm/index.d.ts +0 -108
- package/lib/node_modules/readdirp/esm/index.js +0 -257
- package/lib/node_modules/readdirp/esm/package.json +0 -1
- package/lib/node_modules/readdirp/index.d.ts +0 -108
- package/lib/node_modules/readdirp/index.js +0 -263
- package/lib/node_modules/readdirp/package.json +0 -70
package/lib/dist/types.js
CHANGED
|
@@ -56,6 +56,7 @@ exports.LANGUAGES = [
|
|
|
56
56
|
'c',
|
|
57
57
|
'cpp',
|
|
58
58
|
'csharp',
|
|
59
|
+
'razor',
|
|
59
60
|
'php',
|
|
60
61
|
'ruby',
|
|
61
62
|
'swift',
|
|
@@ -63,12 +64,14 @@ exports.LANGUAGES = [
|
|
|
63
64
|
'dart',
|
|
64
65
|
'svelte',
|
|
65
66
|
'vue',
|
|
67
|
+
'astro',
|
|
66
68
|
'liquid',
|
|
67
69
|
'pascal',
|
|
68
70
|
'scala',
|
|
69
71
|
'lua',
|
|
70
72
|
'luau',
|
|
71
73
|
'objc',
|
|
74
|
+
'r',
|
|
72
75
|
'yaml',
|
|
73
76
|
'twig',
|
|
74
77
|
'xml',
|
package/lib/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF;;;;;;GAMG;AACU,QAAA,UAAU,GAAG;IACxB,MAAM;IACN,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,WAAW;IACX,OAAO;IACP,UAAU;IACV,UAAU;IACV,QAAQ;IACR,UAAU;IACV,OAAO;IACP,UAAU;IACV,UAAU;IACV,MAAM;IACN,aAAa;IACb,YAAY;IACZ,WAAW;IACX,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,WAAW;CACH,CAAC;AAqBX;;;GAGG;AACU,QAAA,SAAS,GAAG;IACvB,YAAY;IACZ,YAAY;IACZ,KAAK;IACL,KAAK;IACL,QAAQ;IACR,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH,KAAK;IACL,QAAQ;IACR,KAAK;IACL,MAAM;IACN,OAAO;IACP,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,YAAY;IACZ,SAAS;CACD,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF;;;;;;GAMG;AACU,QAAA,UAAU,GAAG;IACxB,MAAM;IACN,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,WAAW;IACX,OAAO;IACP,UAAU;IACV,UAAU;IACV,QAAQ;IACR,UAAU;IACV,OAAO;IACP,UAAU;IACV,UAAU;IACV,MAAM;IACN,aAAa;IACb,YAAY;IACZ,WAAW;IACX,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,WAAW;CACH,CAAC;AAqBX;;;GAGG;AACU,QAAA,SAAS,GAAG;IACvB,YAAY;IACZ,YAAY;IACZ,KAAK;IACL,KAAK;IACL,QAAQ;IACR,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH,KAAK;IACL,QAAQ;IACR,OAAO;IACP,KAAK;IACL,MAAM;IACN,OAAO;IACP,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,KAAK;IACL,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,KAAK;IACL,MAAM;IACN,MAAM;IACN,GAAG;IACH,MAAM;IACN,MAAM;IACN,KAAK;IACL,YAAY;IACZ,SAAS;CACD,CAAC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `codegraph upgrade`
|
|
3
|
+
*
|
|
4
|
+
* Self-update for the CLI, whatever way it was installed:
|
|
5
|
+
*
|
|
6
|
+
* - **bundle** — the self-contained runtime+app installed by `install.sh`
|
|
7
|
+
* (Linux/macOS) or `install.ps1` (Windows). Upgrading re-runs the SAME
|
|
8
|
+
* canonical installer script (single source of truth) so the download /
|
|
9
|
+
* version-resolution / PATH logic never drifts between first-install and
|
|
10
|
+
* upgrade.
|
|
11
|
+
* - **npm** — installed via `npm i -g @colbymchenry/codegraph`. Upgrading
|
|
12
|
+
* shells out to npm.
|
|
13
|
+
* - **npx** — ephemeral; nothing to upgrade (next `npx` fetches latest).
|
|
14
|
+
* - **source** — a git checkout running its own `dist/`; `git pull` + rebuild.
|
|
15
|
+
*
|
|
16
|
+
* Detection is structural (see `detectInstallMethod`): a bundle carries a
|
|
17
|
+
* vendored `node` binary and a `bin/codegraph` launcher next to its `lib/`, so
|
|
18
|
+
* we can recognize it from the running file's path without a marker file.
|
|
19
|
+
*
|
|
20
|
+
* Windows wrinkle: a running `node.exe` is locked and can't be deleted, so the
|
|
21
|
+
* bundle's `current\` dir can't be overwritten in place by the process doing
|
|
22
|
+
* the upgrade. We therefore spawn a DETACHED helper that waits for this
|
|
23
|
+
* process to exit (releasing the lock), then runs `install.ps1`. This is the
|
|
24
|
+
* conventional Windows self-update dance (rustup/nvm-windows do the same).
|
|
25
|
+
*/
|
|
26
|
+
export declare const REPO = "colbymchenry/codegraph";
|
|
27
|
+
export declare const NPM_PACKAGE = "@colbymchenry/codegraph";
|
|
28
|
+
export declare const INSTALL_SH_URL = "https://raw.githubusercontent.com/colbymchenry/codegraph/main/install.sh";
|
|
29
|
+
export type InstallMethod = {
|
|
30
|
+
kind: 'bundle';
|
|
31
|
+
os: 'unix' | 'windows';
|
|
32
|
+
bundleRoot: string;
|
|
33
|
+
installDir: string | null;
|
|
34
|
+
} | {
|
|
35
|
+
kind: 'npm';
|
|
36
|
+
scope: 'global' | 'local';
|
|
37
|
+
} | {
|
|
38
|
+
kind: 'npx';
|
|
39
|
+
} | {
|
|
40
|
+
kind: 'source';
|
|
41
|
+
root: string;
|
|
42
|
+
} | {
|
|
43
|
+
kind: 'unknown';
|
|
44
|
+
reason: string;
|
|
45
|
+
};
|
|
46
|
+
export interface DetectInput {
|
|
47
|
+
/** `__filename` of the running CLI module — `<…>/dist/bin/codegraph.js`. */
|
|
48
|
+
filename: string;
|
|
49
|
+
platform: NodeJS.Platform;
|
|
50
|
+
cwd: string;
|
|
51
|
+
/** Injectable existence probe (defaults to fs.existsSync) — for tests. */
|
|
52
|
+
exists?: (p: string) => boolean;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Where the bundle installer keeps its install root, derived from the bundle
|
|
56
|
+
* dir so an upgrade reuses a custom `CODEGRAPH_INSTALL_DIR`. Returns null when
|
|
57
|
+
* the layout isn't the one the installer creates (then the installer falls
|
|
58
|
+
* back to its own default).
|
|
59
|
+
*
|
|
60
|
+
* unix: <installDir>/versions/<vX.Y.Z> (bundleRoot) → <installDir>
|
|
61
|
+
* windows: <installDir>\current (bundleRoot) → <installDir>
|
|
62
|
+
*/
|
|
63
|
+
export declare function deriveInstallDir(bundleRoot: string, os: 'unix' | 'windows', exists: (p: string) => boolean): string | null;
|
|
64
|
+
export declare function detectInstallMethod(input: DetectInput): InstallMethod;
|
|
65
|
+
export interface Semver {
|
|
66
|
+
major: number;
|
|
67
|
+
minor: number;
|
|
68
|
+
patch: number;
|
|
69
|
+
pre: string | null;
|
|
70
|
+
}
|
|
71
|
+
export declare function parseSemver(version: string): Semver | null;
|
|
72
|
+
/** Returns >0 if a>b, <0 if a<b, 0 if equal. Throws on unparseable input. */
|
|
73
|
+
export declare function compareVersions(a: string, b: string): number;
|
|
74
|
+
export declare function isUpdateAvailable(current: string, latest: string): boolean;
|
|
75
|
+
/** `0.9.9` / `v0.9.9` → `v0.9.9` (release tags are v-prefixed). */
|
|
76
|
+
export declare function normalizeVersion(v: string): string;
|
|
77
|
+
/** Strip a leading `v`: `v0.9.9` → `0.9.9`. */
|
|
78
|
+
export declare function stripV(v: string): string;
|
|
79
|
+
/**
|
|
80
|
+
* Parse the release tag out of the `Location` header GitHub returns for
|
|
81
|
+
* `/releases/latest` → `…/releases/tag/v0.9.9`. Pure so it's unit-tested.
|
|
82
|
+
*/
|
|
83
|
+
export declare function parseLatestTagFromLocation(location: string | undefined): string | null;
|
|
84
|
+
/**
|
|
85
|
+
* Resolve the latest release tag (e.g. `v0.9.9`).
|
|
86
|
+
*
|
|
87
|
+
* Primary: read the redirect `Location` from `github.com/<repo>/releases/latest`
|
|
88
|
+
* — same trick install.sh uses, because the unauthenticated GitHub API is
|
|
89
|
+
* rate-limited to 60 req/h/IP and 403s on shared/cloud hosts (issue #325). The
|
|
90
|
+
* redirect has no such limit. Fall back to the API only if the redirect can't
|
|
91
|
+
* be read.
|
|
92
|
+
*/
|
|
93
|
+
export declare function resolveLatestVersion(repo?: string, timeoutMs?: number): Promise<string>;
|
|
94
|
+
export interface UpgradeOptions {
|
|
95
|
+
/** Pin a specific version (positional arg or CODEGRAPH_VERSION). */
|
|
96
|
+
version?: string;
|
|
97
|
+
/** Report current vs latest, don't change anything. */
|
|
98
|
+
check?: boolean;
|
|
99
|
+
/** Reinstall even if already on the resolved version. */
|
|
100
|
+
force?: boolean;
|
|
101
|
+
}
|
|
102
|
+
/** Injectable side-effects so the orchestrator stays unit-testable. */
|
|
103
|
+
export interface UpgradeDeps {
|
|
104
|
+
currentVersion: string;
|
|
105
|
+
method: InstallMethod;
|
|
106
|
+
resolveLatest: (pin?: string) => Promise<string>;
|
|
107
|
+
/** Run a command inheriting stdio; returns its exit code (-1 = spawn failed). */
|
|
108
|
+
run: (cmd: string, args: string[], env?: NodeJS.ProcessEnv) => number;
|
|
109
|
+
hasCommand: (cmd: string) => boolean;
|
|
110
|
+
log: (msg: string) => void;
|
|
111
|
+
warn: (msg: string) => void;
|
|
112
|
+
error: (msg: string) => void;
|
|
113
|
+
platform: NodeJS.Platform;
|
|
114
|
+
}
|
|
115
|
+
/** The honest, additive re-index reminder shown after a successful upgrade. */
|
|
116
|
+
export declare function reindexAdvisory(): string;
|
|
117
|
+
/**
|
|
118
|
+
* Returns the process exit code (0 = success / nothing to do, 1 = failure).
|
|
119
|
+
*/
|
|
120
|
+
export declare function runUpgrade(opts: UpgradeOptions, deps: UpgradeDeps): Promise<number>;
|
|
121
|
+
/** Build the in-place Windows upgrade script (exported for unit-testing). */
|
|
122
|
+
export declare function buildWindowsUpgradeScript(bundleRoot: string, version: string, arch: string): string;
|
|
123
|
+
/**
|
|
124
|
+
* True if `cmd` resolves to an executable on PATH. A pure-Node PATH scan — NOT
|
|
125
|
+
* a spawned `command -v`/`which`: `command` is a shell builtin (no standalone
|
|
126
|
+
* binary on Debian, though macOS ships one), and `which` isn't guaranteed
|
|
127
|
+
* present on minimal images, so spawning either is unreliable. Scanning PATH
|
|
128
|
+
* ourselves behaves identically on every platform.
|
|
129
|
+
*/
|
|
130
|
+
export declare function hasCommand(cmd: string): boolean;
|
|
131
|
+
export declare function defaultRun(cmd: string, args: string[], env?: NodeJS.ProcessEnv): number;
|
|
132
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/upgrade/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,462 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `codegraph upgrade`
|
|
4
|
+
*
|
|
5
|
+
* Self-update for the CLI, whatever way it was installed:
|
|
6
|
+
*
|
|
7
|
+
* - **bundle** — the self-contained runtime+app installed by `install.sh`
|
|
8
|
+
* (Linux/macOS) or `install.ps1` (Windows). Upgrading re-runs the SAME
|
|
9
|
+
* canonical installer script (single source of truth) so the download /
|
|
10
|
+
* version-resolution / PATH logic never drifts between first-install and
|
|
11
|
+
* upgrade.
|
|
12
|
+
* - **npm** — installed via `npm i -g @colbymchenry/codegraph`. Upgrading
|
|
13
|
+
* shells out to npm.
|
|
14
|
+
* - **npx** — ephemeral; nothing to upgrade (next `npx` fetches latest).
|
|
15
|
+
* - **source** — a git checkout running its own `dist/`; `git pull` + rebuild.
|
|
16
|
+
*
|
|
17
|
+
* Detection is structural (see `detectInstallMethod`): a bundle carries a
|
|
18
|
+
* vendored `node` binary and a `bin/codegraph` launcher next to its `lib/`, so
|
|
19
|
+
* we can recognize it from the running file's path without a marker file.
|
|
20
|
+
*
|
|
21
|
+
* Windows wrinkle: a running `node.exe` is locked and can't be deleted, so the
|
|
22
|
+
* bundle's `current\` dir can't be overwritten in place by the process doing
|
|
23
|
+
* the upgrade. We therefore spawn a DETACHED helper that waits for this
|
|
24
|
+
* process to exit (releasing the lock), then runs `install.ps1`. This is the
|
|
25
|
+
* conventional Windows self-update dance (rustup/nvm-windows do the same).
|
|
26
|
+
*/
|
|
27
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
28
|
+
if (k2 === undefined) k2 = k;
|
|
29
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
30
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
31
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
32
|
+
}
|
|
33
|
+
Object.defineProperty(o, k2, desc);
|
|
34
|
+
}) : (function(o, m, k, k2) {
|
|
35
|
+
if (k2 === undefined) k2 = k;
|
|
36
|
+
o[k2] = m[k];
|
|
37
|
+
}));
|
|
38
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
39
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
40
|
+
}) : function(o, v) {
|
|
41
|
+
o["default"] = v;
|
|
42
|
+
});
|
|
43
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
44
|
+
var ownKeys = function(o) {
|
|
45
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
46
|
+
var ar = [];
|
|
47
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
48
|
+
return ar;
|
|
49
|
+
};
|
|
50
|
+
return ownKeys(o);
|
|
51
|
+
};
|
|
52
|
+
return function (mod) {
|
|
53
|
+
if (mod && mod.__esModule) return mod;
|
|
54
|
+
var result = {};
|
|
55
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
56
|
+
__setModuleDefault(result, mod);
|
|
57
|
+
return result;
|
|
58
|
+
};
|
|
59
|
+
})();
|
|
60
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
61
|
+
exports.INSTALL_SH_URL = exports.NPM_PACKAGE = exports.REPO = void 0;
|
|
62
|
+
exports.deriveInstallDir = deriveInstallDir;
|
|
63
|
+
exports.detectInstallMethod = detectInstallMethod;
|
|
64
|
+
exports.parseSemver = parseSemver;
|
|
65
|
+
exports.compareVersions = compareVersions;
|
|
66
|
+
exports.isUpdateAvailable = isUpdateAvailable;
|
|
67
|
+
exports.normalizeVersion = normalizeVersion;
|
|
68
|
+
exports.stripV = stripV;
|
|
69
|
+
exports.parseLatestTagFromLocation = parseLatestTagFromLocation;
|
|
70
|
+
exports.resolveLatestVersion = resolveLatestVersion;
|
|
71
|
+
exports.reindexAdvisory = reindexAdvisory;
|
|
72
|
+
exports.runUpgrade = runUpgrade;
|
|
73
|
+
exports.buildWindowsUpgradeScript = buildWindowsUpgradeScript;
|
|
74
|
+
exports.hasCommand = hasCommand;
|
|
75
|
+
exports.defaultRun = defaultRun;
|
|
76
|
+
const fs = __importStar(require("fs"));
|
|
77
|
+
const path = __importStar(require("path"));
|
|
78
|
+
const https = __importStar(require("https"));
|
|
79
|
+
const child_process_1 = require("child_process");
|
|
80
|
+
exports.REPO = 'colbymchenry/codegraph';
|
|
81
|
+
exports.NPM_PACKAGE = '@colbymchenry/codegraph';
|
|
82
|
+
const RAW_BASE = `https://raw.githubusercontent.com/${exports.REPO}/main`;
|
|
83
|
+
exports.INSTALL_SH_URL = `${RAW_BASE}/install.sh`;
|
|
84
|
+
function toPosix(p) {
|
|
85
|
+
return p.replace(/\\/g, '/');
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Where the bundle installer keeps its install root, derived from the bundle
|
|
89
|
+
* dir so an upgrade reuses a custom `CODEGRAPH_INSTALL_DIR`. Returns null when
|
|
90
|
+
* the layout isn't the one the installer creates (then the installer falls
|
|
91
|
+
* back to its own default).
|
|
92
|
+
*
|
|
93
|
+
* unix: <installDir>/versions/<vX.Y.Z> (bundleRoot) → <installDir>
|
|
94
|
+
* windows: <installDir>\current (bundleRoot) → <installDir>
|
|
95
|
+
*/
|
|
96
|
+
function deriveInstallDir(bundleRoot, os, exists) {
|
|
97
|
+
// Use the TARGET platform's path semantics (not the host's), so this is
|
|
98
|
+
// deterministic when reasoning about a Windows layout from a POSIX host (CI)
|
|
99
|
+
// and vice-versa. In production `os` always matches the running platform.
|
|
100
|
+
const P = os === 'windows' ? path.win32 : path.posix;
|
|
101
|
+
if (os === 'windows') {
|
|
102
|
+
if (P.basename(bundleRoot).toLowerCase() === 'current') {
|
|
103
|
+
return P.dirname(bundleRoot);
|
|
104
|
+
}
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
// unix: bundleRoot is <installDir>/versions/<version>
|
|
108
|
+
const parent = P.dirname(bundleRoot);
|
|
109
|
+
if (P.basename(parent) === 'versions') {
|
|
110
|
+
const installDir = P.dirname(parent);
|
|
111
|
+
return exists(installDir) ? installDir : P.dirname(parent);
|
|
112
|
+
}
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
function detectInstallMethod(input) {
|
|
116
|
+
const exists = input.exists ?? fs.existsSync;
|
|
117
|
+
const isWin = input.platform === 'win32';
|
|
118
|
+
// Path math keyed on the TARGET platform so detection is host-independent
|
|
119
|
+
// (a Windows layout resolves correctly even when unit-tested on macOS/Linux).
|
|
120
|
+
const P = isWin ? path.win32 : path.posix;
|
|
121
|
+
const binDir = P.dirname(input.filename); // <…>/bin
|
|
122
|
+
// Bundle: <root>/lib/dist/bin/codegraph.js → <root> is up 3 from bin/.
|
|
123
|
+
// A bundle has a vendored node + a launcher script as siblings of lib/.
|
|
124
|
+
const bundleRoot = P.resolve(binDir, '..', '..', '..');
|
|
125
|
+
const vendoredNode = P.join(bundleRoot, isWin ? 'node.exe' : 'node');
|
|
126
|
+
const launcher = P.join(bundleRoot, 'bin', isWin ? 'codegraph.cmd' : 'codegraph');
|
|
127
|
+
if (exists(vendoredNode) && exists(launcher)) {
|
|
128
|
+
const os = isWin ? 'windows' : 'unix';
|
|
129
|
+
return { kind: 'bundle', os, bundleRoot, installDir: deriveInstallDir(bundleRoot, os, exists) };
|
|
130
|
+
}
|
|
131
|
+
const norm = toPosix(input.filename);
|
|
132
|
+
// npx cache: <…>/_npx/<hash>/node_modules/@colbymchenry/codegraph/…
|
|
133
|
+
if (norm.includes('/_npx/')) {
|
|
134
|
+
return { kind: 'npx' };
|
|
135
|
+
}
|
|
136
|
+
// npm install (global or local): lives under a node_modules tree.
|
|
137
|
+
if (norm.includes('/node_modules/')) {
|
|
138
|
+
const underCwd = norm.startsWith(toPosix(P.resolve(input.cwd)) + '/');
|
|
139
|
+
return { kind: 'npm', scope: underCwd ? 'local' : 'global' };
|
|
140
|
+
}
|
|
141
|
+
// Source checkout: running <repo>/dist/bin/codegraph.js with a sibling .git.
|
|
142
|
+
const repoRoot = P.resolve(binDir, '..', '..');
|
|
143
|
+
if (exists(P.join(repoRoot, 'package.json')) && exists(P.join(repoRoot, '.git'))) {
|
|
144
|
+
return { kind: 'source', root: repoRoot };
|
|
145
|
+
}
|
|
146
|
+
return { kind: 'unknown', reason: `unrecognized install layout at ${input.filename}` };
|
|
147
|
+
}
|
|
148
|
+
function parseSemver(version) {
|
|
149
|
+
const m = /^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?/.exec(version.trim());
|
|
150
|
+
if (!m)
|
|
151
|
+
return null;
|
|
152
|
+
return {
|
|
153
|
+
major: parseInt(m[1], 10),
|
|
154
|
+
minor: parseInt(m[2], 10),
|
|
155
|
+
patch: parseInt(m[3], 10),
|
|
156
|
+
pre: m[4] ?? null,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
/** Returns >0 if a>b, <0 if a<b, 0 if equal. Throws on unparseable input. */
|
|
160
|
+
function compareVersions(a, b) {
|
|
161
|
+
const sa = parseSemver(a);
|
|
162
|
+
const sb = parseSemver(b);
|
|
163
|
+
if (!sa || !sb)
|
|
164
|
+
throw new Error(`cannot compare versions: "${a}" vs "${b}"`);
|
|
165
|
+
if (sa.major !== sb.major)
|
|
166
|
+
return sa.major - sb.major;
|
|
167
|
+
if (sa.minor !== sb.minor)
|
|
168
|
+
return sa.minor - sb.minor;
|
|
169
|
+
if (sa.patch !== sb.patch)
|
|
170
|
+
return sa.patch - sb.patch;
|
|
171
|
+
// A prerelease is "less than" its release (1.0.0-rc < 1.0.0).
|
|
172
|
+
if (sa.pre && !sb.pre)
|
|
173
|
+
return -1;
|
|
174
|
+
if (!sa.pre && sb.pre)
|
|
175
|
+
return 1;
|
|
176
|
+
if (sa.pre && sb.pre)
|
|
177
|
+
return sa.pre < sb.pre ? -1 : sa.pre > sb.pre ? 1 : 0;
|
|
178
|
+
return 0;
|
|
179
|
+
}
|
|
180
|
+
function isUpdateAvailable(current, latest) {
|
|
181
|
+
try {
|
|
182
|
+
return compareVersions(latest, current) > 0;
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
// If either is unparseable (e.g. a dev "0.0.0-unknown"), treat differing
|
|
186
|
+
// strings as "update available" so the user isn't stuck.
|
|
187
|
+
return normalizeVersion(current) !== normalizeVersion(latest);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/** `0.9.9` / `v0.9.9` → `v0.9.9` (release tags are v-prefixed). */
|
|
191
|
+
function normalizeVersion(v) {
|
|
192
|
+
const t = v.trim();
|
|
193
|
+
return t.startsWith('v') ? t : `v${t}`;
|
|
194
|
+
}
|
|
195
|
+
/** Strip a leading `v`: `v0.9.9` → `0.9.9`. */
|
|
196
|
+
function stripV(v) {
|
|
197
|
+
const t = v.trim();
|
|
198
|
+
return t.startsWith('v') ? t.slice(1) : t;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Parse the release tag out of the `Location` header GitHub returns for
|
|
202
|
+
* `/releases/latest` → `…/releases/tag/v0.9.9`. Pure so it's unit-tested.
|
|
203
|
+
*/
|
|
204
|
+
function parseLatestTagFromLocation(location) {
|
|
205
|
+
if (!location)
|
|
206
|
+
return null;
|
|
207
|
+
const m = /\/releases\/tag\/([^/?#]+)/.exec(location);
|
|
208
|
+
return m ? decodeURIComponent(m[1]) : null;
|
|
209
|
+
}
|
|
210
|
+
// ---------------------------------------------------------------------------
|
|
211
|
+
// Latest-version resolution (network)
|
|
212
|
+
// ---------------------------------------------------------------------------
|
|
213
|
+
function httpsGet(url, headers, timeoutMs) {
|
|
214
|
+
return new Promise((resolve, reject) => {
|
|
215
|
+
const req = https.get(url, { headers }, (res) => {
|
|
216
|
+
let body = '';
|
|
217
|
+
res.on('data', (c) => (body += c));
|
|
218
|
+
res.on('end', () => resolve({ status: res.statusCode ?? 0, headers: res.headers, body }));
|
|
219
|
+
});
|
|
220
|
+
req.on('error', reject);
|
|
221
|
+
req.setTimeout(timeoutMs, () => req.destroy(new Error(`request timed out after ${timeoutMs}ms`)));
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Resolve the latest release tag (e.g. `v0.9.9`).
|
|
226
|
+
*
|
|
227
|
+
* Primary: read the redirect `Location` from `github.com/<repo>/releases/latest`
|
|
228
|
+
* — same trick install.sh uses, because the unauthenticated GitHub API is
|
|
229
|
+
* rate-limited to 60 req/h/IP and 403s on shared/cloud hosts (issue #325). The
|
|
230
|
+
* redirect has no such limit. Fall back to the API only if the redirect can't
|
|
231
|
+
* be read.
|
|
232
|
+
*/
|
|
233
|
+
async function resolveLatestVersion(repo = exports.REPO, timeoutMs = 12000) {
|
|
234
|
+
try {
|
|
235
|
+
const res = await httpsGet(`https://github.com/${repo}/releases/latest`, { 'User-Agent': 'codegraph-upgrade' }, timeoutMs);
|
|
236
|
+
const loc = res.headers.location;
|
|
237
|
+
const tag = parseLatestTagFromLocation(Array.isArray(loc) ? loc[0] : loc);
|
|
238
|
+
if (tag)
|
|
239
|
+
return normalizeVersion(tag);
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
/* fall through to API */
|
|
243
|
+
}
|
|
244
|
+
try {
|
|
245
|
+
const res = await httpsGet(`https://api.github.com/repos/${repo}/releases/latest`, { 'User-Agent': 'codegraph-upgrade', Accept: 'application/vnd.github+json' }, timeoutMs);
|
|
246
|
+
const tag = JSON.parse(res.body)?.tag_name;
|
|
247
|
+
if (typeof tag === 'string' && tag)
|
|
248
|
+
return normalizeVersion(tag);
|
|
249
|
+
}
|
|
250
|
+
catch {
|
|
251
|
+
/* fall through to error */
|
|
252
|
+
}
|
|
253
|
+
throw new Error('could not resolve the latest version from GitHub. Check your network, or pin a version: `codegraph upgrade <version>`.');
|
|
254
|
+
}
|
|
255
|
+
const c = {
|
|
256
|
+
bold: (s) => `\x1b[1m${s}\x1b[0m`,
|
|
257
|
+
dim: (s) => `\x1b[2m${s}\x1b[0m`,
|
|
258
|
+
green: (s) => `\x1b[32m${s}\x1b[0m`,
|
|
259
|
+
yellow: (s) => `\x1b[33m${s}\x1b[0m`,
|
|
260
|
+
cyan: (s) => `\x1b[36m${s}\x1b[0m`,
|
|
261
|
+
};
|
|
262
|
+
/** The honest, additive re-index reminder shown after a successful upgrade. */
|
|
263
|
+
function reindexAdvisory() {
|
|
264
|
+
return [
|
|
265
|
+
c.dim('Your existing project indexes keep working, but were built by the previous version.'),
|
|
266
|
+
c.dim('To pick up this version’s extraction improvements, refresh each project:'),
|
|
267
|
+
` ${c.cyan('codegraph sync')} ${c.dim('# incremental, fast')}`,
|
|
268
|
+
` ${c.cyan('codegraph index -f')} ${c.dim('# full rebuild')}`,
|
|
269
|
+
c.dim('(`codegraph status` flags any index that predates the engine you’re running.)'),
|
|
270
|
+
].join('\n');
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Returns the process exit code (0 = success / nothing to do, 1 = failure).
|
|
274
|
+
*/
|
|
275
|
+
async function runUpgrade(opts, deps) {
|
|
276
|
+
const { currentVersion, method } = deps;
|
|
277
|
+
// Resolve the target version (pinned or latest).
|
|
278
|
+
let latest;
|
|
279
|
+
try {
|
|
280
|
+
latest = normalizeVersion(opts.version || (await deps.resolveLatest()));
|
|
281
|
+
}
|
|
282
|
+
catch (err) {
|
|
283
|
+
deps.error(err instanceof Error ? err.message : String(err));
|
|
284
|
+
return 1;
|
|
285
|
+
}
|
|
286
|
+
const currentDisplay = normalizeVersion(currentVersion);
|
|
287
|
+
deps.log(`${c.bold('CodeGraph')} current ${c.cyan(currentDisplay)} ${opts.version ? 'target' : 'latest'} ${c.cyan(latest)}`);
|
|
288
|
+
const updateAvailable = isUpdateAvailable(currentVersion, latest);
|
|
289
|
+
if (opts.check) {
|
|
290
|
+
if (updateAvailable) {
|
|
291
|
+
deps.log(c.yellow(`An update is available: ${currentDisplay} → ${latest}`));
|
|
292
|
+
deps.log(c.dim('Run `codegraph upgrade` to install it.'));
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
deps.log(c.green(`You’re on the latest version (${currentDisplay}).`));
|
|
296
|
+
}
|
|
297
|
+
return 0;
|
|
298
|
+
}
|
|
299
|
+
if (!updateAvailable && !opts.force && !opts.version) {
|
|
300
|
+
deps.log(c.green(`Already up to date (${currentDisplay}).`));
|
|
301
|
+
deps.log(c.dim('Use `--force` to reinstall, or `codegraph upgrade <version>` to change versions.'));
|
|
302
|
+
return 0;
|
|
303
|
+
}
|
|
304
|
+
// Dispatch by install method.
|
|
305
|
+
switch (method.kind) {
|
|
306
|
+
case 'bundle':
|
|
307
|
+
return method.os === 'windows'
|
|
308
|
+
? upgradeWindowsBundle(method, latest, deps)
|
|
309
|
+
: upgradeUnixBundle(method, opts.version ? latest : undefined, deps);
|
|
310
|
+
case 'npm':
|
|
311
|
+
// npm version specs have no leading "v" (`@0.9.8`, not `@v0.9.8` — the
|
|
312
|
+
// latter resolves as a nonexistent dist-tag).
|
|
313
|
+
return upgradeNpm(method, opts.version ? stripV(latest) : 'latest', deps);
|
|
314
|
+
case 'npx':
|
|
315
|
+
deps.log(c.green('npx always runs the latest version on demand — nothing to upgrade.'));
|
|
316
|
+
deps.log(c.dim(`Force a fresh fetch with: npx ${exports.NPM_PACKAGE}@latest`));
|
|
317
|
+
return 0;
|
|
318
|
+
case 'source':
|
|
319
|
+
deps.warn(`Running from a source checkout at ${method.root}.`);
|
|
320
|
+
deps.log(c.dim('Upgrade it with: git pull && npm run build'));
|
|
321
|
+
return 0;
|
|
322
|
+
default:
|
|
323
|
+
deps.error(`Couldn’t determine how CodeGraph was installed (${method.reason}).`);
|
|
324
|
+
deps.log(c.dim(`Reinstall manually — see https://github.com/${exports.REPO}#install`));
|
|
325
|
+
return 1;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
function upgradeUnixBundle(method, pinned, deps) {
|
|
329
|
+
const downloader = deps.hasCommand('curl')
|
|
330
|
+
? `curl -fsSL ${exports.INSTALL_SH_URL}`
|
|
331
|
+
: deps.hasCommand('wget')
|
|
332
|
+
? `wget -qO- ${exports.INSTALL_SH_URL}`
|
|
333
|
+
: null;
|
|
334
|
+
if (!downloader) {
|
|
335
|
+
deps.error('Neither curl nor wget is available to download the installer.');
|
|
336
|
+
deps.log(c.dim(`Install curl, or run manually: ${exports.INSTALL_SH_URL} | sh`));
|
|
337
|
+
return 1;
|
|
338
|
+
}
|
|
339
|
+
const env = { ...process.env };
|
|
340
|
+
if (method.installDir)
|
|
341
|
+
env.CODEGRAPH_INSTALL_DIR = method.installDir;
|
|
342
|
+
if (pinned)
|
|
343
|
+
env.CODEGRAPH_VERSION = pinned;
|
|
344
|
+
deps.log(c.dim(`Running the installer (${downloader} | sh)…`));
|
|
345
|
+
const code = deps.run('sh', ['-c', `${downloader} | sh`], env);
|
|
346
|
+
if (code !== 0) {
|
|
347
|
+
deps.error(`Installer exited with code ${code}.`);
|
|
348
|
+
return 1;
|
|
349
|
+
}
|
|
350
|
+
deps.log('');
|
|
351
|
+
deps.log(c.green('✓ Upgrade complete.') + c.dim(' Open a new terminal if the version looks unchanged (PATH cache).'));
|
|
352
|
+
deps.log(reindexAdvisory());
|
|
353
|
+
return 0;
|
|
354
|
+
}
|
|
355
|
+
/** Build the in-place Windows upgrade script (exported for unit-testing). */
|
|
356
|
+
function buildWindowsUpgradeScript(bundleRoot, version, arch) {
|
|
357
|
+
const target = `win32-${arch}`;
|
|
358
|
+
const url = `https://github.com/${exports.REPO}/releases/download/${version}/codegraph-${target}.zip`;
|
|
359
|
+
// Windows can't DELETE a running exe but CAN rename it, so we upgrade IN
|
|
360
|
+
// PLACE: download → rename the locked node.exe aside → extract the new bundle
|
|
361
|
+
// over current\. Synchronous, no detached helper (which dies under SSH/job
|
|
362
|
+
// objects and has worse UX). The running process keeps its renamed node.exe
|
|
363
|
+
// mapped; the NEXT `codegraph` invocation uses the new one. We can't reuse
|
|
364
|
+
// install.ps1 here — it `Remove-Item`s current\, which fails on the locked exe.
|
|
365
|
+
return [
|
|
366
|
+
`$ErrorActionPreference='Stop'`,
|
|
367
|
+
`$dest='${bundleRoot}'`,
|
|
368
|
+
`$url='${url}'`,
|
|
369
|
+
`Write-Host "Downloading $url"`,
|
|
370
|
+
`$tmp=Join-Path $env:TEMP ('cg-up-'+[guid]::NewGuid().ToString('N'))`,
|
|
371
|
+
`New-Item -ItemType Directory -Force -Path $tmp | Out-Null`,
|
|
372
|
+
`$zip=Join-Path $tmp 'cg.zip'`,
|
|
373
|
+
`Invoke-WebRequest -Uri $url -OutFile $zip`,
|
|
374
|
+
`$stage=Join-Path $tmp 'stage'`,
|
|
375
|
+
`Expand-Archive -Path $zip -DestinationPath $stage -Force`,
|
|
376
|
+
`$inner=Join-Path $stage 'codegraph-${target}'`,
|
|
377
|
+
`$src=if(Test-Path $inner){$inner}else{$stage}`,
|
|
378
|
+
`$node=Join-Path $dest 'node.exe'`,
|
|
379
|
+
`if(Test-Path $node){Rename-Item -Path $node -NewName ('node.exe.old-'+[guid]::NewGuid().ToString('N')) -Force}`,
|
|
380
|
+
`Copy-Item -Path (Join-Path $src '*') -Destination $dest -Recurse -Force`,
|
|
381
|
+
`Get-ChildItem -Path $dest -Filter 'node.exe.old-*' -ErrorAction SilentlyContinue | ForEach-Object { try { Remove-Item $_.FullName -Force -ErrorAction Stop } catch {} }`,
|
|
382
|
+
`Remove-Item -Recurse -Force $tmp -ErrorAction SilentlyContinue`,
|
|
383
|
+
`Write-Host "Installed CodeGraph ${version} to $dest"`,
|
|
384
|
+
].join(';');
|
|
385
|
+
}
|
|
386
|
+
function upgradeWindowsBundle(method, latest, deps) {
|
|
387
|
+
const arch = process.arch === 'arm64' ? 'arm64' : 'x64';
|
|
388
|
+
const script = buildWindowsUpgradeScript(method.bundleRoot, latest, arch);
|
|
389
|
+
// -EncodedCommand (base64 UTF-16LE), NOT -Command: Node's Windows argv→command
|
|
390
|
+
// -line quoting mangles a long multi-statement script, so PowerShell never
|
|
391
|
+
// parses it. Encoding sidesteps all shell quoting — the canonical approach.
|
|
392
|
+
const encoded = Buffer.from(script, 'utf16le').toString('base64');
|
|
393
|
+
deps.log(c.dim(`Downloading and installing ${latest}…`));
|
|
394
|
+
const code = deps.run('powershell.exe', ['-NoProfile', '-ExecutionPolicy', 'Bypass', '-EncodedCommand', encoded]);
|
|
395
|
+
if (code !== 0) {
|
|
396
|
+
deps.error(`Installer exited with code ${code}.`);
|
|
397
|
+
return 1;
|
|
398
|
+
}
|
|
399
|
+
deps.log('');
|
|
400
|
+
deps.log(c.green('✓ Upgrade complete.') + c.dim(' Open a new terminal to be safe (PATH/version cache).'));
|
|
401
|
+
deps.log(reindexAdvisory());
|
|
402
|
+
return 0;
|
|
403
|
+
}
|
|
404
|
+
function upgradeNpm(method, versionSpec, deps) {
|
|
405
|
+
const npm = deps.platform === 'win32' ? 'npm.cmd' : 'npm';
|
|
406
|
+
const args = method.scope === 'global'
|
|
407
|
+
? ['install', '-g', `${exports.NPM_PACKAGE}@${versionSpec}`]
|
|
408
|
+
: ['install', `${exports.NPM_PACKAGE}@${versionSpec}`];
|
|
409
|
+
deps.log(c.dim(`Running: ${npm} ${args.join(' ')}`));
|
|
410
|
+
const code = deps.run(npm, args, process.env);
|
|
411
|
+
if (code !== 0) {
|
|
412
|
+
deps.error(`npm exited with code ${code}.`);
|
|
413
|
+
if (method.scope === 'global') {
|
|
414
|
+
deps.log(c.dim('If this is a permissions error (EACCES), your global prefix needs sudo, or use a'));
|
|
415
|
+
deps.log(c.dim('Node version manager (nvm/fnm) so global installs don’t require root.'));
|
|
416
|
+
}
|
|
417
|
+
return 1;
|
|
418
|
+
}
|
|
419
|
+
deps.log('');
|
|
420
|
+
deps.log(c.green('✓ Upgrade complete.'));
|
|
421
|
+
deps.log(reindexAdvisory());
|
|
422
|
+
return 0;
|
|
423
|
+
}
|
|
424
|
+
// ---------------------------------------------------------------------------
|
|
425
|
+
// Production deps wiring (used by the CLI)
|
|
426
|
+
// ---------------------------------------------------------------------------
|
|
427
|
+
/**
|
|
428
|
+
* True if `cmd` resolves to an executable on PATH. A pure-Node PATH scan — NOT
|
|
429
|
+
* a spawned `command -v`/`which`: `command` is a shell builtin (no standalone
|
|
430
|
+
* binary on Debian, though macOS ships one), and `which` isn't guaranteed
|
|
431
|
+
* present on minimal images, so spawning either is unreliable. Scanning PATH
|
|
432
|
+
* ourselves behaves identically on every platform.
|
|
433
|
+
*/
|
|
434
|
+
function hasCommand(cmd) {
|
|
435
|
+
const isWin = process.platform === 'win32';
|
|
436
|
+
const dirs = (process.env.PATH || process.env.Path || '').split(path.delimiter).filter(Boolean);
|
|
437
|
+
const exts = isWin ? (process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM').split(';') : [''];
|
|
438
|
+
for (const dir of dirs) {
|
|
439
|
+
for (const ext of exts) {
|
|
440
|
+
const candidate = path.join(dir, cmd + ext);
|
|
441
|
+
try {
|
|
442
|
+
if (!fs.statSync(candidate).isFile())
|
|
443
|
+
continue;
|
|
444
|
+
if (isWin)
|
|
445
|
+
return true;
|
|
446
|
+
fs.accessSync(candidate, fs.constants.X_OK);
|
|
447
|
+
return true;
|
|
448
|
+
}
|
|
449
|
+
catch {
|
|
450
|
+
/* not here / not executable — keep scanning */
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
return false;
|
|
455
|
+
}
|
|
456
|
+
function defaultRun(cmd, args, env) {
|
|
457
|
+
const r = (0, child_process_1.spawnSync)(cmd, args, { stdio: 'inherit', env: env ?? process.env });
|
|
458
|
+
if (r.error)
|
|
459
|
+
return -1;
|
|
460
|
+
return r.status ?? -1;
|
|
461
|
+
}
|
|
462
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/upgrade/index.ts"],"names":[],"mappings":"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"}
|