@anysphere/file-service 0.0.0-e6124fba → 0.0.0-e68f3241

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/index.d.ts CHANGED
@@ -3,18 +3,188 @@
3
3
 
4
4
  /* auto-generated by NAPI-RS */
5
5
 
6
- export class MerkleClient {
6
+ export const enum DiffType {
7
+ Insert = 'Insert',
8
+ Delete = 'Delete',
9
+ Equal = 'Equal'
10
+ }
11
+ export interface DiffChunk {
12
+ diffType: DiffType
13
+ text: string
14
+ }
15
+ export interface CommitData {
16
+ sha: string
17
+ date: number
18
+ message: string
19
+ author: string
20
+ parents: Array<string>
21
+ files: Array<CommitFile>
22
+ }
23
+ export interface CommitFile {
24
+ from: string
25
+ to: string
26
+ additions: number
27
+ deletions: number
28
+ status: CommitFileStatus
29
+ }
30
+ export const enum CommitFileStatus {
31
+ Added = 0,
32
+ Deleted = 1,
33
+ Modified = 2,
34
+ Renamed = 3
35
+ }
36
+ export const enum CommitChainGetFiles {
37
+ DoGetFiles = 0,
38
+ DontGetFiles = 1
39
+ }
40
+ export interface VerifyData {
41
+ commitTime: number
42
+ fileContent: string
43
+ filePath: string
44
+ }
45
+ export interface IndexedFile {
46
+ path: string
47
+ diff: Array<string>
48
+ }
49
+ export interface IndexedPullRequest {
50
+ prNumber: number
51
+ generation: number
52
+ sha: string
53
+ commitSecret: string
54
+ body: string
55
+ changedFiles: Array<IndexedFile>
56
+ unixTimestamp: number
57
+ trimmedTooLarge: boolean
58
+ title?: string
59
+ author?: string
60
+ date?: Date
61
+ }
62
+ export interface JsPullRequestExtractionOptions {
63
+ lastIndexedCommit?: string
64
+ lastIndexedCommitGeneration?: number
65
+ syncBitmap?: Buffer
66
+ limitCommits?: number
67
+ limitPerPr?: number
68
+ context?: number
69
+ workerThreads?: number
70
+ jsConcurrency?: number
71
+ jsChunkSize?: number
72
+ }
73
+ export interface JsPullRequestHydrationOptions {
74
+ limitPerPr?: number
75
+ context?: number
76
+ workerThreads?: number
77
+ interestingPaths?: Array<string>
78
+ }
79
+ export interface JsHandshakeData {
80
+ lastSeenCommit: string
81
+ lastSeenCommitSecret: string
82
+ origin: string
83
+ }
84
+ export interface JsRepositoryTip {
85
+ commitSha: string
86
+ commitShaSecret: string
87
+ generation: number
88
+ }
89
+ export interface ExtractResults {
90
+ repositoryTip?: JsRepositoryTip
91
+ progress: IndexedPullRequestProgress
92
+ interrupted: boolean
93
+ }
94
+ export interface IndexedPullRequestProgress {
95
+ /** Total number of commits in the repository */
96
+ total: number
97
+ /** Number of commits that have been synced to the server */
98
+ synced: number
99
+ /** Number of commits that have been synced to the server in this run */
100
+ newSynced: number
101
+ /** Number of commits that have been marked as ignored in this run */
102
+ newIgnored: number
103
+ /** Number of commits that have failed to be indexed in this run */
104
+ newFailed: number
105
+ /** Time (in seconds) since the start of the indexing process */
106
+ elapsed: number
107
+ }
108
+ export const MULTI_ROOT_ABSOLUTE_PATH: string
109
+ export interface WalkDirConfig {
110
+ maxNumFiles: number
111
+ logFilePath?: string
112
+ blocklistPath?: string
113
+ unifiedJsonBlocklistPath?: string
114
+ }
115
+ export interface LocalCodebaseFileInfo {
116
+ unencryptedRelativePath: string
117
+ hash: string
118
+ children?: Array<LocalCodebaseFileInfo>
119
+ }
120
+ export declare class DiffClient {
121
+ constructor()
122
+ diff(text1: string, text2: string): Array<DiffChunk>
123
+ /**
124
+ * use https://docs.rs/diffmatchpatch/latest/diffmatchpatch/struct.DiffMatchPatch.html#method.diff_lines_to_chars
125
+ * then diff the chars.
126
+ * then convert back to lines.
127
+ *
128
+ * takes in two strings. splits based on newlines.
129
+ * returns diffs based on lines.
130
+ */
131
+ diffLines(text1: string, text2: string): Array<DiffChunk>
132
+ }
133
+ export declare class GitClient {
7
134
  constructor(absoluteRootDirectory: string)
8
- init(gitIgnoredFiles: Array<string>, isGitRepo: boolean): Promise<void>
9
- computeMerkleTree(gitIgnoredFiles: Array<string>, isGitRepo: boolean): Promise<void>
10
- updateFile(filePath: string): Promise<void>
11
- deleteFile(filePath: string): Promise<void>
135
+ getTotalCommitCount(): Promise<number>
136
+ getCommitVerifyData(commit: string): Promise<VerifyData>
137
+ throwIfCommitDoesntExist(rootSha: string): Promise<void>
138
+ getVerifyCommit(): Promise<string>
139
+ getRepoHeadSha(): Promise<string | null>
140
+ getCommitChain(hash: string, depth: number, getFiles: CommitChainGetFiles): Promise<Array<CommitData>>
141
+ }
142
+ export declare class GitGraph {
143
+ constructor(repo: string, globalCursorIgnoreLegacy?: string | undefined | null, globalCursorJsonUnifiedBlocklist?: string | undefined | null)
144
+ /**
145
+ * Get a list of all paths in this repository, up to a maximum depth of `max_depth`. The
146
+ * paths are returned breadth-first, meaning that all paths at depth 0 are returned before any
147
+ * paths at depth 1, and so on.
148
+ * The iteration takes into account `gitignore` and `cursorignore` rules.
149
+ *
150
+ * @param maxDepth - maximum depth to search for paths. A depth of 0 means only the root path
151
+ * is returned.
152
+ * @param limit - maximum number of paths to return. If `None`, all paths are returned.
153
+ */
154
+ getBfsPaths(maxDepth: number, limit?: number | undefined | null): Promise<Array<string>>
155
+ /**
156
+ * Get a sorted list of relevant paths in this repository, from most relevant to least
157
+ * relevant. The list is biased towards the current user, using a heuristic that takes into account
158
+ * the most recently opened/edited files in the editor, which must be passed in as
159
+ * `lastEditedFiles`. If no recent files are provided, the returned paths will be sorted
160
+ * based on the global popularity of the files in the repository (i.e. the number of times each
161
+ * file has been modified throughout the Git history).
162
+ *
163
+ * @param lastEditedFiles - list of files that were recently opened/edited in the editor.
164
+ * @param maxCommits - maximum number of commits to consider when calculating the relevant paths.
165
+ * @param maxPaths - number of relevant paths to return
166
+ */
167
+ getRelevantPaths(lastEditedFiles: Array<string>, maxCommits: number, maxPaths: number): Promise<Array<string>>
168
+ }
169
+ export declare class RepositoryIndexer {
170
+ constructor(repo: string, blockListLegacy?: string | undefined | null, blockListJson?: string | undefined | null)
171
+ extractPullRequests(options: JsPullRequestExtractionOptions, callback: (err: Error | null, indexed: IndexedPullRequest[], ignored: number[], progress: IndexedPullRequestProgress) => Promise<boolean>): Promise<ExtractResults>
172
+ hydratePullRequests(pullRequests: Array<string>, options: JsPullRequestHydrationOptions, callback: (err: Error | null, arg: IndexedPullRequest) => any): Promise<void>
173
+ getHandshakeData(): Promise<JsHandshakeData | null>
174
+ verifyCommitOwnership(secret: string, candidates: Array<string>): Promise<JsHandshakeData | null>
175
+ }
176
+ export declare class MerkleClient {
177
+ constructor(rootPathsMap: Record<string, string>)
178
+ build(allowIncremental: boolean, config: WalkDirConfig): Promise<void>
12
179
  getSubtreeHash(relativePath: string): Promise<string>
13
180
  getNumEmbeddableFiles(): Promise<number>
181
+ getSimhash(): Promise<Float32Array>
182
+ getImportantPaths(k: number): Promise<Array<string>>
14
183
  getAllFiles(): Promise<Array<string>>
15
184
  getAllDirFilesToEmbed(absoluteFilePath: string): Promise<Array<string>>
16
- getNextFileToEmbed(): Promise<Array<string>>
17
- getSpline(absoluteFilePath: string): Promise<Array<string>>
18
- getHashesForFiles(files: Array<string>): Promise<Array<string>>
19
- updateRootDirectory(rootDirectory: string): void
185
+ onDidCreate(absoluteFilePath: string): void
186
+ onDidChange(absoluteFilePath: string): void
187
+ onDidDelete(absoluteFilePath: string): void
188
+ getTreeStructure(): Promise<LocalCodebaseFileInfo | null>
189
+ dispose(): void
20
190
  }
package/index.js CHANGED
@@ -224,14 +224,72 @@ switch (platform) {
224
224
  }
225
225
  break
226
226
  case 'arm':
227
+ if (isMusl()) {
228
+ localFileExisted = existsSync(
229
+ join(__dirname, 'file_service.linux-arm-musleabihf.node')
230
+ )
231
+ try {
232
+ if (localFileExisted) {
233
+ nativeBinding = require('./file_service.linux-arm-musleabihf.node')
234
+ } else {
235
+ nativeBinding = require('@anysphere/file-service-linux-arm-musleabihf')
236
+ }
237
+ } catch (e) {
238
+ loadError = e
239
+ }
240
+ } else {
241
+ localFileExisted = existsSync(
242
+ join(__dirname, 'file_service.linux-arm-gnueabihf.node')
243
+ )
244
+ try {
245
+ if (localFileExisted) {
246
+ nativeBinding = require('./file_service.linux-arm-gnueabihf.node')
247
+ } else {
248
+ nativeBinding = require('@anysphere/file-service-linux-arm-gnueabihf')
249
+ }
250
+ } catch (e) {
251
+ loadError = e
252
+ }
253
+ }
254
+ break
255
+ case 'riscv64':
256
+ if (isMusl()) {
257
+ localFileExisted = existsSync(
258
+ join(__dirname, 'file_service.linux-riscv64-musl.node')
259
+ )
260
+ try {
261
+ if (localFileExisted) {
262
+ nativeBinding = require('./file_service.linux-riscv64-musl.node')
263
+ } else {
264
+ nativeBinding = require('@anysphere/file-service-linux-riscv64-musl')
265
+ }
266
+ } catch (e) {
267
+ loadError = e
268
+ }
269
+ } else {
270
+ localFileExisted = existsSync(
271
+ join(__dirname, 'file_service.linux-riscv64-gnu.node')
272
+ )
273
+ try {
274
+ if (localFileExisted) {
275
+ nativeBinding = require('./file_service.linux-riscv64-gnu.node')
276
+ } else {
277
+ nativeBinding = require('@anysphere/file-service-linux-riscv64-gnu')
278
+ }
279
+ } catch (e) {
280
+ loadError = e
281
+ }
282
+ }
283
+ break
284
+ case 's390x':
227
285
  localFileExisted = existsSync(
228
- join(__dirname, 'file_service.linux-arm-gnueabihf.node')
286
+ join(__dirname, 'file_service.linux-s390x-gnu.node')
229
287
  )
230
288
  try {
231
289
  if (localFileExisted) {
232
- nativeBinding = require('./file_service.linux-arm-gnueabihf.node')
290
+ nativeBinding = require('./file_service.linux-s390x-gnu.node')
233
291
  } else {
234
- nativeBinding = require('@anysphere/file-service-linux-arm-gnueabihf')
292
+ nativeBinding = require('@anysphere/file-service-linux-s390x-gnu')
235
293
  }
236
294
  } catch (e) {
237
295
  loadError = e
@@ -252,6 +310,14 @@ if (!nativeBinding) {
252
310
  throw new Error(`Failed to load native binding`)
253
311
  }
254
312
 
255
- const { MerkleClient } = nativeBinding
313
+ const { DiffType, DiffClient, GitClient, CommitFileStatus, CommitChainGetFiles, GitGraph, RepositoryIndexer, MULTI_ROOT_ABSOLUTE_PATH, MerkleClient } = nativeBinding
256
314
 
315
+ module.exports.DiffType = DiffType
316
+ module.exports.DiffClient = DiffClient
317
+ module.exports.GitClient = GitClient
318
+ module.exports.CommitFileStatus = CommitFileStatus
319
+ module.exports.CommitChainGetFiles = CommitChainGetFiles
320
+ module.exports.GitGraph = GitGraph
321
+ module.exports.RepositoryIndexer = RepositoryIndexer
322
+ module.exports.MULTI_ROOT_ABSOLUTE_PATH = MULTI_ROOT_ABSOLUTE_PATH
257
323
  module.exports.MerkleClient = MerkleClient
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anysphere/file-service",
3
- "version": "0.0.0-e6124fba",
3
+ "version": "0.0.0-e68f3241",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "napi": {
@@ -9,15 +9,21 @@
9
9
  "additional": [
10
10
  "aarch64-apple-darwin",
11
11
  "aarch64-pc-windows-msvc",
12
+ "aarch64-unknown-linux-musl",
13
+ "x86_64-unknown-linux-musl",
12
14
  "universal-apple-darwin",
13
15
  "aarch64-unknown-linux-gnu"
14
16
  ]
15
17
  }
16
18
  },
17
- "license": "MIT",
19
+ "files": [
20
+ "index.js",
21
+ "index.d.ts"
22
+ ],
23
+ "license": "UNLICENSED",
18
24
  "devDependencies": {
19
- "@napi-rs/cli": "^2.16.2",
20
- "ava": "^5.1.1"
25
+ "@napi-rs/cli": "^2.18.4",
26
+ "ava": "^6.3.0"
21
27
  },
22
28
  "ava": {
23
29
  "timeout": "3m"
@@ -36,12 +42,14 @@
36
42
  "version": "napi version"
37
43
  },
38
44
  "optionalDependencies": {
39
- "@anysphere/file-service-win32-x64-msvc": "0.0.0-e6124fba",
40
- "@anysphere/file-service-darwin-x64": "0.0.0-e6124fba",
41
- "@anysphere/file-service-linux-x64-gnu": "0.0.0-e6124fba",
42
- "@anysphere/file-service-darwin-arm64": "0.0.0-e6124fba",
43
- "@anysphere/file-service-win32-arm64-msvc": "0.0.0-e6124fba",
44
- "@anysphere/file-service-darwin-universal": "0.0.0-e6124fba",
45
- "@anysphere/file-service-linux-arm64-gnu": "0.0.0-e6124fba"
45
+ "@anysphere/file-service-win32-x64-msvc": "0.0.0-e68f3241",
46
+ "@anysphere/file-service-darwin-x64": "0.0.0-e68f3241",
47
+ "@anysphere/file-service-linux-x64-gnu": "0.0.0-e68f3241",
48
+ "@anysphere/file-service-darwin-arm64": "0.0.0-e68f3241",
49
+ "@anysphere/file-service-win32-arm64-msvc": "0.0.0-e68f3241",
50
+ "@anysphere/file-service-linux-arm64-musl": "0.0.0-e68f3241",
51
+ "@anysphere/file-service-linux-x64-musl": "0.0.0-e68f3241",
52
+ "@anysphere/file-service-darwin-universal": "0.0.0-e68f3241",
53
+ "@anysphere/file-service-linux-arm64-gnu": "0.0.0-e68f3241"
46
54
  }
47
55
  }
package/.yarnrc.yml DELETED
@@ -1 +0,0 @@
1
- nodeLinker: node-modules
package/Cargo.toml DELETED
@@ -1,40 +0,0 @@
1
- [package]
2
- edition = "2021"
3
- name = "file_service"
4
- version = "0.0.0"
5
-
6
- [lib]
7
- crate-type = ["cdylib"]
8
-
9
- [features]
10
- default = ["windows-subsystem"]
11
- windows-subsystem = []
12
- debugfile = []
13
-
14
- [dependencies]
15
- # Default enable napi4 feature, see https://nodejs.org/api/n-api.html#node-api-version-matrix
16
- napi = { version = "2.12.2", default-features = false, features = ["napi4", "async", "tokio_rt"] }
17
- napi-derive = "2.12.2"
18
- tokio = { version = "1.32.0", features = ["process", "full"] }
19
- sha2 = "0.10.7"
20
- rand = "0.8.5"
21
- tempfile = "3.8.0"
22
- anyhow = "1.0.75"
23
- tonic = "0.9.2"
24
- prost = "0.11.9"
25
- tracing = "0.1.37"
26
- tracing-subscriber = "0.3.17"
27
- tracing-appender = "0.2.2"
28
- binaryornot = "1.0.0"
29
- dunce = "1.0.1"
30
- encoding_rs = "0.8.33"
31
-
32
- [build-dependencies]
33
- napi-build = "2.0.1"
34
- tonic-build = "0.9.2"
35
- anyhow = "1.0.75"
36
- glob = "0.3.0"
37
-
38
-
39
- [profile.release]
40
- lto = true
package/build.rs DELETED
@@ -1,46 +0,0 @@
1
- use std::path::Path;
2
-
3
- extern crate napi_build;
4
-
5
- fn main() -> Result<(), anyhow::Error> {
6
- #[cfg(target_os = "windows")]
7
- println!("cargo:rustc-cdylib-link-arg=/SUBSYSTEM:WINDOWS");
8
- napi_build::setup();
9
-
10
- // print the relative path.
11
- // let workspace_root = "../../../../../";
12
- // let path = std::path::Path::new(workspace_root).canonicalize()?;
13
- // let include_path = Path::join(&path, "schema");
14
-
15
- // // let relevant_protos = &[
16
- // // "aiserver/v1/repository.proto",
17
- // // "aiserver/v1/symbolic_context.proto",
18
- // // "aiserver/v1/utils.proto"
19
- // // ];
20
- // // let proto_paths = relevant_protos
21
- // // .iter()
22
- // // .map(|proto| Path::join(&include_path, proto))
23
- // // .collect::<Vec<_>>();
24
- // let proto_glob = Path::join(&include_path, "aiserver/v1/*.proto");
25
- // let relevant_protos: Vec<_> = glob::glob(proto_glob.to_str().expect("Failed to convert path to str"))?
26
- // .filter_map(Result::ok)
27
- // .collect();
28
-
29
- // let proto_paths = relevant_protos
30
- // .iter()
31
- // .map(|proto_path| proto_path.to_str().expect("Failed to convert path to str"))
32
- // .collect::<Vec<_>>();
33
- // let includes = &[include_path.to_str().unwrap()];
34
-
35
- // // print the path
36
- // println!("cargo:rustc-env=INCLUDE_PATH={}", include_path.display());
37
-
38
- // tonic_build::configure()
39
- // .build_server(false)
40
- // .build_transport(true)
41
- // .out_dir("src/proto")
42
- // .compile(&proto_paths, includes)?;
43
-
44
-
45
- Ok(())
46
- }