| … | … | @@ -187,3 +187,903 @@ |
| 187 | 187 | [submodule "repos/tier3/udx-native"] |
| 188 | 188 | path = repos/tier3/udx-native |
| 189 | 189 | url = https://github.com/holepunchto/udx-native.git |
| 190 | [submodule "repos/tier4/repos/tier4/autobase-discovery"] | |
| 191 | path = repos/tier4/repos/tier4/autobase-discovery | |
| 192 | url = https://github.com/holepunchto/autobase-discovery.git | |
| 193 | [submodule "repos/tier4/repos/tier4/autobase-example"] | |
| 194 | path = repos/tier4/repos/tier4/autobase-example | |
| 195 | url = https://github.com/holepunchto/autobase-example.git | |
| 196 | [submodule "repos/tier4/repos/tier4/autobase-test-helpers"] | |
| 197 | path = repos/tier4/repos/tier4/autobase-test-helpers | |
| 198 | url = https://github.com/holepunchto/autobase-test-helpers.git | |
| 199 | [submodule "repos/tier4/repos/tier4/autopass-mobile-example"] | |
| 200 | path = repos/tier4/repos/tier4/autopass-mobile-example | |
| 201 | url = https://github.com/holepunchto/autopass-mobile-example.git | |
| 202 | [submodule "repos/tier4/repos/tier4/bare-abort"] | |
| 203 | path = repos/tier4/repos/tier4/bare-abort | |
| 204 | url = https://github.com/holepunchto/bare-abort.git | |
| 205 | [submodule "repos/tier4/repos/tier4/bare-addon"] | |
| 206 | path = repos/tier4/repos/tier4/bare-addon | |
| 207 | url = https://github.com/holepunchto/bare-addon.git | |
| 208 | [submodule "repos/tier4/repos/tier4/bare-ansi-escapes"] | |
| 209 | path = repos/tier4/repos/tier4/bare-ansi-escapes | |
| 210 | url = https://github.com/holepunchto/bare-ansi-escapes.git | |
| 211 | [submodule "repos/tier4/repos/tier4/bare-assert"] | |
| 212 | path = repos/tier4/repos/tier4/bare-assert | |
| 213 | url = https://github.com/holepunchto/bare-assert.git | |
| 214 | [submodule "repos/tier4/repos/tier4/bare-async-hooks"] | |
| 215 | path = repos/tier4/repos/tier4/bare-async-hooks | |
| 216 | url = https://github.com/holepunchto/bare-async-hooks.git | |
| 217 | [submodule "repos/tier4/repos/tier4/bare-atomics"] | |
| 218 | path = repos/tier4/repos/tier4/bare-atomics | |
| 219 | url = https://github.com/holepunchto/bare-atomics.git | |
| 220 | [submodule "repos/tier4/repos/tier4/bare-boot"] | |
| 221 | path = repos/tier4/repos/tier4/bare-boot | |
| 222 | url = https://github.com/holepunchto/bare-boot.git | |
| 223 | [submodule "repos/tier4/repos/tier4/bare-buffer"] | |
| 224 | path = repos/tier4/repos/tier4/bare-buffer | |
| 225 | url = https://github.com/holepunchto/bare-buffer.git | |
| 226 | [submodule "repos/tier4/repos/tier4/bare-build"] | |
| 227 | path = repos/tier4/repos/tier4/bare-build | |
| 228 | url = https://github.com/holepunchto/bare-build.git | |
| 229 | [submodule "repos/tier4/repos/tier4/bare-bundle"] | |
| 230 | path = repos/tier4/repos/tier4/bare-bundle | |
| 231 | url = https://github.com/holepunchto/bare-bundle.git | |
| 232 | [submodule "repos/tier4/repos/tier4/bare-bundle-compile"] | |
| 233 | path = repos/tier4/repos/tier4/bare-bundle-compile | |
| 234 | url = https://github.com/holepunchto/bare-bundle-compile.git | |
| 235 | [submodule "repos/tier4/repos/tier4/bare-channel"] | |
| 236 | path = repos/tier4/repos/tier4/bare-channel | |
| 237 | url = https://github.com/holepunchto/bare-channel.git | |
| 238 | [submodule "repos/tier4/repos/tier4/bare-console"] | |
| 239 | path = repos/tier4/repos/tier4/bare-console | |
| 240 | url = https://github.com/holepunchto/bare-console.git | |
| 241 | [submodule "repos/tier4/repos/tier4/bare-crypto"] | |
| 242 | path = repos/tier4/repos/tier4/bare-crypto | |
| 243 | url = https://github.com/holepunchto/bare-crypto.git | |
| 244 | [submodule "repos/tier4/repos/tier4/bare-dev"] | |
| 245 | path = repos/tier4/repos/tier4/bare-dev | |
| 246 | url = https://github.com/holepunchto/bare-dev.git | |
| 247 | [submodule "repos/tier4/repos/tier4/bare-dgram"] | |
| 248 | path = repos/tier4/repos/tier4/bare-dgram | |
| 249 | url = https://github.com/holepunchto/bare-dgram.git | |
| 250 | [submodule "repos/tier4/repos/tier4/bare-diagnostics-channel"] | |
| 251 | path = repos/tier4/repos/tier4/bare-diagnostics-channel | |
| 252 | url = https://github.com/holepunchto/bare-diagnostics-channel.git | |
| 253 | [submodule "repos/tier4/repos/tier4/bare-dns"] | |
| 254 | path = repos/tier4/repos/tier4/bare-dns | |
| 255 | url = https://github.com/holepunchto/bare-dns.git | |
| 256 | [submodule "repos/tier4/repos/tier4/bare-encoding"] | |
| 257 | path = repos/tier4/repos/tier4/bare-encoding | |
| 258 | url = https://github.com/holepunchto/bare-encoding.git | |
| 259 | [submodule "repos/tier4/repos/tier4/bare-env"] | |
| 260 | path = repos/tier4/repos/tier4/bare-env | |
| 261 | url = https://github.com/holepunchto/bare-env.git | |
| 262 | [submodule "repos/tier4/repos/tier4/bare-events"] | |
| 263 | path = repos/tier4/repos/tier4/bare-events | |
| 264 | url = https://github.com/holepunchto/bare-events.git | |
| 265 | [submodule "repos/tier4/repos/tier4/bare-fetch"] | |
| 266 | path = repos/tier4/repos/tier4/bare-fetch | |
| 267 | url = https://github.com/holepunchto/bare-fetch.git | |
| 268 | [submodule "repos/tier4/repos/tier4/bare-ffmpeg"] | |
| 269 | path = repos/tier4/repos/tier4/bare-ffmpeg | |
| 270 | url = https://github.com/holepunchto/bare-ffmpeg.git | |
| 271 | [submodule "repos/tier4/repos/tier4/bare-gif"] | |
| 272 | path = repos/tier4/repos/tier4/bare-gif | |
| 273 | url = https://github.com/holepunchto/bare-gif.git | |
| 274 | [submodule "repos/tier4/repos/tier4/bare-heif"] | |
| 275 | path = repos/tier4/repos/tier4/bare-heif | |
| 276 | url = https://github.com/holepunchto/bare-heif.git | |
| 277 | [submodule "repos/tier4/repos/tier4/bare-hrtime"] | |
| 278 | path = repos/tier4/repos/tier4/bare-hrtime | |
| 279 | url = https://github.com/holepunchto/bare-hrtime.git | |
| 280 | [submodule "repos/tier4/repos/tier4/bare-http1"] | |
| 281 | path = repos/tier4/repos/tier4/bare-http1 | |
| 282 | url = https://github.com/holepunchto/bare-http1.git | |
| 283 | [submodule "repos/tier4/repos/tier4/bare-https"] | |
| 284 | path = repos/tier4/repos/tier4/bare-https | |
| 285 | url = https://github.com/holepunchto/bare-https.git | |
| 286 | [submodule "repos/tier4/repos/tier4/bare-image-resample"] | |
| 287 | path = repos/tier4/repos/tier4/bare-image-resample | |
| 288 | url = https://github.com/holepunchto/bare-image-resample.git | |
| 289 | [submodule "repos/tier4/repos/tier4/bare-inspect"] | |
| 290 | path = repos/tier4/repos/tier4/bare-inspect | |
| 291 | url = https://github.com/holepunchto/bare-inspect.git | |
| 292 | [submodule "repos/tier4/repos/tier4/bare-inspector"] | |
| 293 | path = repos/tier4/repos/tier4/bare-inspector | |
| 294 | url = https://github.com/holepunchto/bare-inspector.git | |
| 295 | [submodule "repos/tier4/repos/tier4/bare-link"] | |
| 296 | path = repos/tier4/repos/tier4/bare-link | |
| 297 | url = https://github.com/holepunchto/bare-link.git | |
| 298 | [submodule "repos/tier4/repos/tier4/bare-logger"] | |
| 299 | path = repos/tier4/repos/tier4/bare-logger | |
| 300 | url = https://github.com/holepunchto/bare-logger.git | |
| 301 | [submodule "repos/tier4/repos/tier4/bare-make"] | |
| 302 | path = repos/tier4/repos/tier4/bare-make | |
| 303 | url = https://github.com/holepunchto/bare-make.git | |
| 304 | [submodule "repos/tier4/repos/tier4/bare-media"] | |
| 305 | path = repos/tier4/repos/tier4/bare-media | |
| 306 | url = https://github.com/holepunchto/bare-media.git | |
| 307 | [submodule "repos/tier4/repos/tier4/bare-module"] | |
| 308 | path = repos/tier4/repos/tier4/bare-module | |
| 309 | url = https://github.com/holepunchto/bare-module.git | |
| 310 | [submodule "repos/tier4/repos/tier4/bare-module-lexer"] | |
| 311 | path = repos/tier4/repos/tier4/bare-module-lexer | |
| 312 | url = https://github.com/holepunchto/bare-module-lexer.git | |
| 313 | [submodule "repos/tier4/repos/tier4/bare-module-traverse"] | |
| 314 | path = repos/tier4/repos/tier4/bare-module-traverse | |
| 315 | url = https://github.com/holepunchto/bare-module-traverse.git | |
| 316 | [submodule "repos/tier4/repos/tier4/bare-native"] | |
| 317 | path = repos/tier4/repos/tier4/bare-native | |
| 318 | url = https://github.com/holepunchto/bare-native.git | |
| 319 | [submodule "repos/tier4/repos/tier4/bare-net"] | |
| 320 | path = repos/tier4/repos/tier4/bare-net | |
| 321 | url = https://github.com/holepunchto/bare-net.git | |
| 322 | [submodule "repos/tier4/repos/tier4/bare-node"] | |
| 323 | path = repos/tier4/repos/tier4/bare-node | |
| 324 | url = https://github.com/holepunchto/bare-node.git | |
| 325 | [submodule "repos/tier4/repos/tier4/bare-os"] | |
| 326 | path = repos/tier4/repos/tier4/bare-os | |
| 327 | url = https://github.com/holepunchto/bare-os.git | |
| 328 | [submodule "repos/tier4/repos/tier4/bare-pack"] | |
| 329 | path = repos/tier4/repos/tier4/bare-pack | |
| 330 | url = https://github.com/holepunchto/bare-pack.git | |
| 331 | [submodule "repos/tier4/repos/tier4/bare-pack-drive"] | |
| 332 | path = repos/tier4/repos/tier4/bare-pack-drive | |
| 333 | url = https://github.com/holepunchto/bare-pack-drive.git | |
| 334 | [submodule "repos/tier4/repos/tier4/bare-path"] | |
| 335 | path = repos/tier4/repos/tier4/bare-path | |
| 336 | url = https://github.com/holepunchto/bare-path.git | |
| 337 | [submodule "repos/tier4/repos/tier4/bare-pipe"] | |
| 338 | path = repos/tier4/repos/tier4/bare-pipe | |
| 339 | url = https://github.com/holepunchto/bare-pipe.git | |
| 340 | [submodule "repos/tier4/repos/tier4/bare-png"] | |
| 341 | path = repos/tier4/repos/tier4/bare-png | |
| 342 | url = https://github.com/holepunchto/bare-png.git | |
| 343 | [submodule "repos/tier4/repos/tier4/bare-process"] | |
| 344 | path = repos/tier4/repos/tier4/bare-process | |
| 345 | url = https://github.com/holepunchto/bare-process.git | |
| 346 | [submodule "repos/tier4/repos/tier4/bare-readline"] | |
| 347 | path = repos/tier4/repos/tier4/bare-readline | |
| 348 | url = https://github.com/holepunchto/bare-readline.git | |
| 349 | [submodule "repos/tier4/repos/tier4/bare-realm"] | |
| 350 | path = repos/tier4/repos/tier4/bare-realm | |
| 351 | url = https://github.com/holepunchto/bare-realm.git | |
| 352 | [submodule "repos/tier4/repos/tier4/bare-repl"] | |
| 353 | path = repos/tier4/repos/tier4/bare-repl | |
| 354 | url = https://github.com/holepunchto/bare-repl.git | |
| 355 | [submodule "repos/tier4/repos/tier4/bare-rpc"] | |
| 356 | path = repos/tier4/repos/tier4/bare-rpc | |
| 357 | url = https://github.com/holepunchto/bare-rpc.git | |
| 358 | [submodule "repos/tier4/repos/tier4/bare-run"] | |
| 359 | path = repos/tier4/repos/tier4/bare-run | |
| 360 | url = https://github.com/holepunchto/bare-run.git | |
| 361 | [submodule "repos/tier4/repos/tier4/bare-runtime"] | |
| 362 | path = repos/tier4/repos/tier4/bare-runtime | |
| 363 | url = https://github.com/holepunchto/bare-runtime.git | |
| 364 | [submodule "repos/tier4/repos/tier4/bare-rust"] | |
| 365 | path = repos/tier4/repos/tier4/bare-rust | |
| 366 | url = https://github.com/holepunchto/bare-rust.git | |
| 367 | [submodule "repos/tier4/repos/tier4/bare-sdl"] | |
| 368 | path = repos/tier4/repos/tier4/bare-sdl | |
| 369 | url = https://github.com/holepunchto/bare-sdl.git | |
| 370 | [submodule "repos/tier4/repos/tier4/bare-signals"] | |
| 371 | path = repos/tier4/repos/tier4/bare-signals | |
| 372 | url = https://github.com/holepunchto/bare-signals.git | |
| 373 | [submodule "repos/tier4/repos/tier4/bare-snippets"] | |
| 374 | path = repos/tier4/repos/tier4/bare-snippets | |
| 375 | url = https://github.com/holepunchto/bare-snippets.git | |
| 376 | [submodule "repos/tier4/repos/tier4/bare-stream"] | |
| 377 | path = repos/tier4/repos/tier4/bare-stream | |
| 378 | url = https://github.com/holepunchto/bare-stream.git | |
| 379 | [submodule "repos/tier4/repos/tier4/bare-subprocess"] | |
| 380 | path = repos/tier4/repos/tier4/bare-subprocess | |
| 381 | url = https://github.com/holepunchto/bare-subprocess.git | |
| 382 | [submodule "repos/tier4/repos/tier4/bare-tcp"] | |
| 383 | path = repos/tier4/repos/tier4/bare-tcp | |
| 384 | url = https://github.com/holepunchto/bare-tcp.git | |
| 385 | [submodule "repos/tier4/repos/tier4/bare-thread"] | |
| 386 | path = repos/tier4/repos/tier4/bare-thread | |
| 387 | url = https://github.com/holepunchto/bare-thread.git | |
| 388 | [submodule "repos/tier4/repos/tier4/bare-tiff"] | |
| 389 | path = repos/tier4/repos/tier4/bare-tiff | |
| 390 | url = https://github.com/holepunchto/bare-tiff.git | |
| 391 | [submodule "repos/tier4/repos/tier4/bare-timers"] | |
| 392 | path = repos/tier4/repos/tier4/bare-timers | |
| 393 | url = https://github.com/holepunchto/bare-timers.git | |
| 394 | [submodule "repos/tier4/repos/tier4/bare-tty"] | |
| 395 | path = repos/tier4/repos/tier4/bare-tty | |
| 396 | url = https://github.com/holepunchto/bare-tty.git | |
| 397 | [submodule "repos/tier4/repos/tier4/bare-type"] | |
| 398 | path = repos/tier4/repos/tier4/bare-type | |
| 399 | url = https://github.com/holepunchto/bare-type.git | |
| 400 | [submodule "repos/tier4/repos/tier4/bare-url"] | |
| 401 | path = repos/tier4/repos/tier4/bare-url | |
| 402 | url = https://github.com/holepunchto/bare-url.git | |
| 403 | [submodule "repos/tier4/repos/tier4/bare-vm"] | |
| 404 | path = repos/tier4/repos/tier4/bare-vm | |
| 405 | url = https://github.com/holepunchto/bare-vm.git | |
| 406 | [submodule "repos/tier4/repos/tier4/bare-webp"] | |
| 407 | path = repos/tier4/repos/tier4/bare-webp | |
| 408 | url = https://github.com/holepunchto/bare-webp.git | |
| 409 | [submodule "repos/tier4/repos/tier4/bare-worker"] | |
| 410 | path = repos/tier4/repos/tier4/bare-worker | |
| 411 | url = https://github.com/holepunchto/bare-worker.git | |
| 412 | [submodule "repos/tier4/repos/tier4/bare-ws"] | |
| 413 | path = repos/tier4/repos/tier4/bare-ws | |
| 414 | url = https://github.com/holepunchto/bare-ws.git | |
| 415 | [submodule "repos/tier4/repos/tier4/blind-pairing"] | |
| 416 | path = repos/tier4/repos/tier4/blind-pairing | |
| 417 | url = https://github.com/holepunchto/blind-pairing.git | |
| 418 | [submodule "repos/tier4/repos/tier4/blind-pairing-core"] | |
| 419 | path = repos/tier4/repos/tier4/blind-pairing-core | |
| 420 | url = https://github.com/holepunchto/blind-pairing-core.git | |
| 421 | [submodule "repos/tier4/repos/tier4/blind-peer"] | |
| 422 | path = repos/tier4/repos/tier4/blind-peer | |
| 423 | url = https://github.com/holepunchto/blind-peer.git | |
| 424 | [submodule "repos/tier4/repos/tier4/blind-peering"] | |
| 425 | path = repos/tier4/repos/tier4/blind-peering | |
| 426 | url = https://github.com/holepunchto/blind-peering.git | |
| 427 | [submodule "repos/tier4/repos/tier4/blind-relay"] | |
| 428 | path = repos/tier4/repos/tier4/blind-relay | |
| 429 | url = https://github.com/holepunchto/blind-relay.git | |
| 430 | [submodule "repos/tier4/repos/tier4/chromium-prebuilds"] | |
| 431 | path = repos/tier4/repos/tier4/chromium-prebuilds | |
| 432 | url = https://github.com/holepunchto/chromium-prebuilds.git | |
| 433 | [submodule "repos/tier4/repos/tier4/cmake-bare-bundle"] | |
| 434 | path = repos/tier4/repos/tier4/cmake-bare-bundle | |
| 435 | url = https://github.com/holepunchto/cmake-bare-bundle.git | |
| 436 | [submodule "repos/tier4/repos/tier4/cmake-gn"] | |
| 437 | path = repos/tier4/repos/tier4/cmake-gn | |
| 438 | url = https://github.com/holepunchto/cmake-gn.git | |
| 439 | [submodule "repos/tier4/repos/tier4/cmake-macos"] | |
| 440 | path = repos/tier4/repos/tier4/cmake-macos | |
| 441 | url = https://github.com/holepunchto/cmake-macos.git | |
| 442 | [submodule "repos/tier4/repos/tier4/cmake-meson"] | |
| 443 | path = repos/tier4/repos/tier4/cmake-meson | |
| 444 | url = https://github.com/holepunchto/cmake-meson.git | |
| 445 | [submodule "repos/tier4/repos/tier4/cmake-msix"] | |
| 446 | path = repos/tier4/repos/tier4/cmake-msix | |
| 447 | url = https://github.com/holepunchto/cmake-msix.git | |
| 448 | [submodule "repos/tier4/repos/tier4/cmake-runtime"] | |
| 449 | path = repos/tier4/repos/tier4/cmake-runtime | |
| 450 | url = https://github.com/holepunchto/cmake-runtime.git | |
| 451 | [submodule "repos/tier4/repos/tier4/db-lock"] | |
| 452 | path = repos/tier4/repos/tier4/db-lock | |
| 453 | url = https://github.com/holepunchto/db-lock.git | |
| 454 | [submodule "repos/tier4/repos/tier4/fifofile"] | |
| 455 | path = repos/tier4/repos/tier4/fifofile | |
| 456 | url = https://github.com/holepunchto/fifofile.git | |
| 457 | [submodule "repos/tier4/repos/tier4/git-remote-punch-transport"] | |
| 458 | path = repos/tier4/repos/tier4/git-remote-punch-transport | |
| 459 | url = https://github.com/holepunchto/git-remote-punch-transport.git | |
| 460 | [submodule "repos/tier4/repos/tier4/hrpc"] | |
| 461 | path = repos/tier4/repos/tier4/hrpc | |
| 462 | url = https://github.com/holepunchto/hrpc.git | |
| 463 | [submodule "repos/tier4/repos/tier4/hyperbee2"] | |
| 464 | path = repos/tier4/repos/tier4/hyperbee2 | |
| 465 | url = https://github.com/holepunchto/hyperbee2.git | |
| 466 | [submodule "repos/tier4/repos/tier4/hyperbee-diff-stream"] | |
| 467 | path = repos/tier4/repos/tier4/hyperbee-diff-stream | |
| 468 | url = https://github.com/holepunchto/hyperbee-diff-stream.git | |
| 469 | [submodule "repos/tier4/repos/tier4/hypercore-blob-server"] | |
| 470 | path = repos/tier4/repos/tier4/hypercore-blob-server | |
| 471 | url = https://github.com/holepunchto/hypercore-blob-server.git | |
| 472 | [submodule "repos/tier4/repos/tier4/hypercore-id-encoding"] | |
| 473 | path = repos/tier4/repos/tier4/hypercore-id-encoding | |
| 474 | url = https://github.com/holepunchto/hypercore-id-encoding.git | |
| 475 | [submodule "repos/tier4/repos/tier4/hypercore-logger"] | |
| 476 | path = repos/tier4/repos/tier4/hypercore-logger | |
| 477 | url = https://github.com/holepunchto/hypercore-logger.git | |
| 478 | [submodule "repos/tier4/repos/tier4/hypercore-storage"] | |
| 479 | path = repos/tier4/repos/tier4/hypercore-storage | |
| 480 | url = https://github.com/holepunchto/hypercore-storage.git | |
| 481 | [submodule "repos/tier4/repos/tier4/hyperdispatch"] | |
| 482 | path = repos/tier4/repos/tier4/hyperdispatch | |
| 483 | url = https://github.com/holepunchto/hyperdispatch.git | |
| 484 | [submodule "repos/tier4/repos/tier4/hyper-instrument"] | |
| 485 | path = repos/tier4/repos/tier4/hyper-instrument | |
| 486 | url = https://github.com/holepunchto/hyper-instrument.git | |
| 487 | [submodule "repos/tier4/repos/tier4/hyperswarm-doctor"] | |
| 488 | path = repos/tier4/repos/tier4/hyperswarm-doctor | |
| 489 | url = https://github.com/holepunchto/hyperswarm-doctor.git | |
| 490 | [submodule "repos/tier4/repos/tier4/hyperswarm-testnet"] | |
| 491 | path = repos/tier4/repos/tier4/hyperswarm-testnet | |
| 492 | url = https://github.com/holepunchto/hyperswarm-testnet.git | |
| 493 | [submodule "repos/tier4/repos/tier4/hypertrace"] | |
| 494 | path = repos/tier4/repos/tier4/hypertrace | |
| 495 | url = https://github.com/holepunchto/hypertrace.git | |
| 496 | [submodule "repos/tier4/repos/tier4/index-encoder"] | |
| 497 | path = repos/tier4/repos/tier4/index-encoder | |
| 498 | url = https://github.com/holepunchto/index-encoder.git | |
| 499 | [submodule "repos/tier4/repos/tier4/libappling"] | |
| 500 | path = repos/tier4/repos/tier4/libappling | |
| 501 | url = https://github.com/holepunchto/libappling.git | |
| 502 | [submodule "repos/tier4/repos/tier4/libcrc"] | |
| 503 | path = repos/tier4/repos/tier4/libcrc | |
| 504 | url = https://github.com/holepunchto/libcrc.git | |
| 505 | [submodule "repos/tier4/repos/tier4/libfs"] | |
| 506 | path = repos/tier4/repos/tier4/libfs | |
| 507 | url = https://github.com/holepunchto/libfs.git | |
| 508 | [submodule "repos/tier4/repos/tier4/libfx"] | |
| 509 | path = repos/tier4/repos/tier4/libfx | |
| 510 | url = https://github.com/holepunchto/libfx.git | |
| 511 | [submodule "repos/tier4/repos/tier4/libjerry"] | |
| 512 | path = repos/tier4/repos/tier4/libjerry | |
| 513 | url = https://github.com/holepunchto/libjerry.git | |
| 514 | [submodule "repos/tier4/repos/tier4/libjsc"] | |
| 515 | path = repos/tier4/repos/tier4/libjsc | |
| 516 | url = https://github.com/holepunchto/libjsc.git | |
| 517 | [submodule "repos/tier4/repos/tier4/libjstl"] | |
| 518 | path = repos/tier4/repos/tier4/libjstl | |
| 519 | url = https://github.com/holepunchto/libjstl.git | |
| 520 | [submodule "repos/tier4/repos/tier4/liblog"] | |
| 521 | path = repos/tier4/repos/tier4/liblog | |
| 522 | url = https://github.com/holepunchto/liblog.git | |
| 523 | [submodule "repos/tier4/repos/tier4/libmem"] | |
| 524 | path = repos/tier4/repos/tier4/libmem | |
| 525 | url = https://github.com/holepunchto/libmem.git | |
| 526 | [submodule "repos/tier4/repos/tier4/libparseline"] | |
| 527 | path = repos/tier4/repos/tier4/libparseline | |
| 528 | url = https://github.com/holepunchto/libparseline.git | |
| 529 | [submodule "repos/tier4/repos/tier4/libpearsync"] | |
| 530 | path = repos/tier4/repos/tier4/libpearsync | |
| 531 | url = https://github.com/holepunchto/libpearsync.git | |
| 532 | [submodule "repos/tier4/repos/tier4/librocksdb"] | |
| 533 | path = repos/tier4/repos/tier4/librocksdb | |
| 534 | url = https://github.com/holepunchto/librocksdb.git | |
| 535 | [submodule "repos/tier4/repos/tier4/librpc"] | |
| 536 | path = repos/tier4/repos/tier4/librpc | |
| 537 | url = https://github.com/holepunchto/librpc.git | |
| 538 | [submodule "repos/tier4/repos/tier4/libsimdle"] | |
| 539 | path = repos/tier4/repos/tier4/libsimdle | |
| 540 | url = https://github.com/holepunchto/libsimdle.git | |
| 541 | [submodule "repos/tier4/repos/tier4/libtt"] | |
| 542 | path = repos/tier4/repos/tier4/libtt | |
| 543 | url = https://github.com/holepunchto/libtt.git | |
| 544 | [submodule "repos/tier4/repos/tier4/liburl"] | |
| 545 | path = repos/tier4/repos/tier4/liburl | |
| 546 | url = https://github.com/holepunchto/liburl.git | |
| 547 | [submodule "repos/tier4/repos/tier4/libutf"] | |
| 548 | path = repos/tier4/repos/tier4/libutf | |
| 549 | url = https://github.com/holepunchto/libutf.git | |
| 550 | [submodule "repos/tier4/repos/tier4/localwatch"] | |
| 551 | path = repos/tier4/repos/tier4/localwatch | |
| 552 | url = https://github.com/holepunchto/localwatch.git | |
| 553 | [submodule "repos/tier4/repos/tier4/nanodebug"] | |
| 554 | path = repos/tier4/repos/tier4/nanodebug | |
| 555 | url = https://github.com/holepunchto/nanodebug.git | |
| 556 | [submodule "repos/tier4/repos/tier4/netpaste"] | |
| 557 | path = repos/tier4/repos/tier4/netpaste | |
| 558 | url = https://github.com/holepunchto/netpaste.git | |
| 559 | [submodule "repos/tier4/repos/tier4/network-block-device"] | |
| 560 | path = repos/tier4/repos/tier4/network-block-device | |
| 561 | url = https://github.com/holepunchto/network-block-device.git | |
| 562 | [submodule "repos/tier4/repos/tier4/paparam"] | |
| 563 | path = repos/tier4/repos/tier4/paparam | |
| 564 | url = https://github.com/holepunchto/paparam.git | |
| 565 | [submodule "repos/tier4/repos/tier4/pear-api"] | |
| 566 | path = repos/tier4/repos/tier4/pear-api | |
| 567 | url = https://github.com/holepunchto/pear-api.git | |
| 568 | [submodule "repos/tier4/repos/tier4/pear-appling"] | |
| 569 | path = repos/tier4/repos/tier4/pear-appling | |
| 570 | url = https://github.com/holepunchto/pear-appling.git | |
| 571 | [submodule "repos/tier4/repos/tier4/pear-desktop"] | |
| 572 | path = repos/tier4/repos/tier4/pear-desktop | |
| 573 | url = https://github.com/holepunchto/pear-desktop.git | |
| 574 | [submodule "repos/tier4/repos/tier4/pear-electron"] | |
| 575 | path = repos/tier4/repos/tier4/pear-electron | |
| 576 | url = https://github.com/holepunchto/pear-electron.git | |
| 577 | [submodule "repos/tier4/repos/tier4/pear-runtime-bare"] | |
| 578 | path = repos/tier4/repos/tier4/pear-runtime-bare | |
| 579 | url = https://github.com/holepunchto/pear-runtime-bare.git | |
| 580 | [submodule "repos/tier4/repos/tier4/pear-workshop"] | |
| 581 | path = repos/tier4/repos/tier4/pear-workshop | |
| 582 | url = https://github.com/holepunchto/pear-workshop.git | |
| 583 | [submodule "repos/tier4/repos/tier4/protomux-rpc"] | |
| 584 | path = repos/tier4/repos/tier4/protomux-rpc | |
| 585 | url = https://github.com/holepunchto/protomux-rpc.git | |
| 586 | [submodule "repos/tier4/repos/tier4/quickbit-universal"] | |
| 587 | path = repos/tier4/repos/tier4/quickbit-universal | |
| 588 | url = https://github.com/holepunchto/quickbit-universal.git | |
| 589 | [submodule "repos/tier4/repos/tier4/require-addon"] | |
| 590 | path = repos/tier4/repos/tier4/require-addon | |
| 591 | url = https://github.com/holepunchto/require-addon.git | |
| 592 | [submodule "repos/tier4/repos/tier4/same-object"] | |
| 593 | path = repos/tier4/repos/tier4/same-object | |
| 594 | url = https://github.com/holepunchto/same-object.git | |
| 595 | [submodule "repos/tier4/repos/tier4/scope-lock"] | |
| 596 | path = repos/tier4/repos/tier4/scope-lock | |
| 597 | url = https://github.com/holepunchto/scope-lock.git | |
| 598 | [submodule "repos/tier4/repos/tier4/secure-prompt"] | |
| 599 | path = repos/tier4/repos/tier4/secure-prompt | |
| 600 | url = https://github.com/holepunchto/secure-prompt.git | |
| 601 | [submodule "repos/tier4/repos/tier4/semifies"] | |
| 602 | path = repos/tier4/repos/tier4/semifies | |
| 603 | url = https://github.com/holepunchto/semifies.git | |
| 604 | [submodule "repos/tier4/repos/tier4/sentry-bare"] | |
| 605 | path = repos/tier4/repos/tier4/sentry-bare | |
| 606 | url = https://github.com/holepunchto/sentry-bare.git | |
| 607 | [submodule "repos/tier4/repos/tier4/serve-drive"] | |
| 608 | path = repos/tier4/repos/tier4/serve-drive | |
| 609 | url = https://github.com/holepunchto/serve-drive.git | |
| 610 | [submodule "repos/tier4/repos/tier4/slab-hunter"] | |
| 611 | path = repos/tier4/repos/tier4/slab-hunter | |
| 612 | url = https://github.com/holepunchto/slab-hunter.git | |
| 613 | [submodule "repos/tier4/repos/tier4/sloppy-module-parser"] | |
| 614 | path = repos/tier4/repos/tier4/sloppy-module-parser | |
| 615 | url = https://github.com/holepunchto/sloppy-module-parser.git | |
| 616 | [submodule "repos/tier4/repos/tier4/sqlite3-native"] | |
| 617 | path = repos/tier4/repos/tier4/sqlite3-native | |
| 618 | url = https://github.com/holepunchto/sqlite3-native.git | |
| 619 | [submodule "repos/tier4/repos/tier4/task-backoff"] | |
| 620 | path = repos/tier4/repos/tier4/task-backoff | |
| 621 | url = https://github.com/holepunchto/task-backoff.git | |
| 622 | [submodule "repos/tier4/repos/tier4/tiny-timers-native"] | |
| 623 | path = repos/tier4/repos/tier4/tiny-timers-native | |
| 624 | url = https://github.com/holepunchto/tiny-timers-native.git | |
| 625 | [submodule "repos/tier4/repos/tier4/tt-native"] | |
| 626 | path = repos/tier4/repos/tier4/tt-native | |
| 627 | url = https://github.com/holepunchto/tt-native.git | |
| 628 | [submodule "repos/tier4/repos/tier4/utun"] | |
| 629 | path = repos/tier4/repos/tier4/utun | |
| 630 | url = https://github.com/holepunchto/utun.git | |
| 631 | [submodule "repos/tier4/repos/tier4/wasm-tools"] | |
| 632 | path = repos/tier4/repos/tier4/wasm-tools | |
| 633 | url = https://github.com/holepunchto/wasm-tools.git | |
| 634 | [submodule "repos/tier4/repos/tier4/watch-drive"] | |
| 635 | path = repos/tier4/repos/tier4/watch-drive | |
| 636 | url = https://github.com/holepunchto/watch-drive.git | |
| 637 | [submodule "repos/tier4/repos/tier4/which-runtime"] | |
| 638 | path = repos/tier4/repos/tier4/which-runtime | |
| 639 | url = https://github.com/holepunchto/which-runtime.git | |
| 640 | [submodule "repos/tier4/bare-ffmpeg"] | |
| 641 | path = repos/tier4/bare-ffmpeg | |
| 642 | url = https://github.com/holepunchto/bare-ffmpeg.git | |
| 643 | [submodule "repos/tier4/bare-media"] | |
| 644 | path = repos/tier4/bare-media | |
| 645 | url = https://github.com/holepunchto/bare-media.git | |
| 646 | [submodule "repos/tier4/bare-module"] | |
| 647 | path = repos/tier4/bare-module | |
| 648 | url = https://github.com/holepunchto/bare-module.git | |
| 649 | [submodule "repos/tier4/bare-node"] | |
| 650 | path = repos/tier4/bare-node | |
| 651 | url = https://github.com/holepunchto/bare-node.git | |
| 652 | [submodule "repos/tier4/bare-snippets"] | |
| 653 | path = repos/tier4/bare-snippets | |
| 654 | url = https://github.com/holepunchto/bare-snippets.git | |
| 655 | [submodule "repos/tier4/pear-appling"] | |
| 656 | path = repos/tier4/pear-appling | |
| 657 | url = https://github.com/holepunchto/pear-appling.git | |
| 658 | [submodule "repos/tier4/hypercore-storage"] | |
| 659 | path = repos/tier4/hypercore-storage | |
| 660 | url = https://github.com/holepunchto/hypercore-storage.git | |
| 661 | [submodule "repos/tier4/localwatch"] | |
| 662 | path = repos/tier4/localwatch | |
| 663 | url = https://github.com/holepunchto/localwatch.git | |
| 664 | [submodule "repos/tier4/bare-repl"] | |
| 665 | path = repos/tier4/bare-repl | |
| 666 | url = https://github.com/holepunchto/bare-repl.git | |
| 667 | [submodule "repos/tier4/bare-runtime"] | |
| 668 | path = repos/tier4/bare-runtime | |
| 669 | url = https://github.com/holepunchto/bare-runtime.git | |
| 670 | [submodule "repos/tier4/bare-worker"] | |
| 671 | path = repos/tier4/bare-worker | |
| 672 | url = https://github.com/holepunchto/bare-worker.git | |
| 673 | [submodule "repos/tier4/libjsc"] | |
| 674 | path = repos/tier4/libjsc | |
| 675 | url = https://github.com/holepunchto/libjsc.git | |
| 676 | [submodule "repos/tier4/bare-events"] | |
| 677 | path = repos/tier4/bare-events | |
| 678 | url = https://github.com/holepunchto/bare-events.git | |
| 679 | [submodule "repos/tier4/bare-module-lexer"] | |
| 680 | path = repos/tier4/bare-module-lexer | |
| 681 | url = https://github.com/holepunchto/bare-module-lexer.git | |
| 682 | [submodule "repos/tier4/bare-tcp"] | |
| 683 | path = repos/tier4/bare-tcp | |
| 684 | url = https://github.com/holepunchto/bare-tcp.git | |
| 685 | [submodule "repos/tier4/bare-ws"] | |
| 686 | path = repos/tier4/bare-ws | |
| 687 | url = https://github.com/holepunchto/bare-ws.git | |
| 688 | [submodule "repos/tier4/cmake-runtime"] | |
| 689 | path = repos/tier4/cmake-runtime | |
| 690 | url = https://github.com/holepunchto/cmake-runtime.git | |
| 691 | [submodule "repos/tier4/hyperswarm-doctor"] | |
| 692 | path = repos/tier4/hyperswarm-doctor | |
| 693 | url = https://github.com/holepunchto/hyperswarm-doctor.git | |
| 694 | [submodule "repos/tier4/libjerry"] | |
| 695 | path = repos/tier4/libjerry | |
| 696 | url = https://github.com/holepunchto/libjerry.git | |
| 697 | [submodule "repos/tier4/libpearsync"] | |
| 698 | path = repos/tier4/libpearsync | |
| 699 | url = https://github.com/holepunchto/libpearsync.git | |
| 700 | [submodule "repos/tier4/scope-lock"] | |
| 701 | path = repos/tier4/scope-lock | |
| 702 | url = https://github.com/holepunchto/scope-lock.git | |
| 703 | [submodule "repos/tier4/serve-drive"] | |
| 704 | path = repos/tier4/serve-drive | |
| 705 | url = https://github.com/holepunchto/serve-drive.git | |
| 706 | [submodule "repos/tier4/slab-hunter"] | |
| 707 | path = repos/tier4/slab-hunter | |
| 708 | url = https://github.com/holepunchto/slab-hunter.git | |
| 709 | [submodule "repos/tier4/tiny-timers-native"] | |
| 710 | path = repos/tier4/tiny-timers-native | |
| 711 | url = https://github.com/holepunchto/tiny-timers-native.git | |
| 712 | [submodule "repos/tier4/watch-drive"] | |
| 713 | path = repos/tier4/watch-drive | |
| 714 | url = https://github.com/holepunchto/watch-drive.git | |
| 715 | [submodule "repos/tier4/bare-fetch"] | |
| 716 | path = repos/tier4/bare-fetch | |
| 717 | url = https://github.com/holepunchto/bare-fetch.git | |
| 718 | [submodule "repos/tier4/bare-make"] | |
| 719 | path = repos/tier4/bare-make | |
| 720 | url = https://github.com/holepunchto/bare-make.git | |
| 721 | [submodule "repos/tier4/bare-rpc"] | |
| 722 | path = repos/tier4/bare-rpc | |
| 723 | url = https://github.com/holepunchto/bare-rpc.git | |
| 724 | [submodule "repos/tier4/blind-pairing"] | |
| 725 | path = repos/tier4/blind-pairing | |
| 726 | url = https://github.com/holepunchto/blind-pairing.git | |
| 727 | [submodule "repos/tier4/blind-relay"] | |
| 728 | path = repos/tier4/blind-relay | |
| 729 | url = https://github.com/holepunchto/blind-relay.git | |
| 730 | [submodule "repos/tier4/hrpc"] | |
| 731 | path = repos/tier4/hrpc | |
| 732 | url = https://github.com/holepunchto/hrpc.git | |
| 733 | [submodule "repos/tier4/netpaste"] | |
| 734 | path = repos/tier4/netpaste | |
| 735 | url = https://github.com/holepunchto/netpaste.git | |
| 736 | [submodule "repos/tier4/pear-desktop"] | |
| 737 | path = repos/tier4/pear-desktop | |
| 738 | url = https://github.com/holepunchto/pear-desktop.git | |
| 739 | [submodule "repos/tier4/utun"] | |
| 740 | path = repos/tier4/utun | |
| 741 | url = https://github.com/holepunchto/utun.git | |
| 742 | [submodule "repos/tier4/bare-bundle"] | |
| 743 | path = repos/tier4/bare-bundle | |
| 744 | url = https://github.com/holepunchto/bare-bundle.git | |
| 745 | [submodule "repos/tier4/bare-channel"] | |
| 746 | path = repos/tier4/bare-channel | |
| 747 | url = https://github.com/holepunchto/bare-channel.git | |
| 748 | [submodule "repos/tier4/bare-crypto"] | |
| 749 | path = repos/tier4/bare-crypto | |
| 750 | url = https://github.com/holepunchto/bare-crypto.git | |
| 751 | [submodule "repos/tier4/bare-os"] | |
| 752 | path = repos/tier4/bare-os | |
| 753 | url = https://github.com/holepunchto/bare-os.git | |
| 754 | [submodule "repos/tier4/bare-realm"] | |
| 755 | path = repos/tier4/bare-realm | |
| 756 | url = https://github.com/holepunchto/bare-realm.git | |
| 757 | [submodule "repos/tier4/blind-pairing-core"] | |
| 758 | path = repos/tier4/blind-pairing-core | |
| 759 | url = https://github.com/holepunchto/blind-pairing-core.git | |
| 760 | [submodule "repos/tier4/blind-peer"] | |
| 761 | path = repos/tier4/blind-peer | |
| 762 | url = https://github.com/holepunchto/blind-peer.git | |
| 763 | [submodule "repos/tier4/blind-peering"] | |
| 764 | path = repos/tier4/blind-peering | |
| 765 | url = https://github.com/holepunchto/blind-peering.git | |
| 766 | [submodule "repos/tier4/git-remote-punch-transport"] | |
| 767 | path = repos/tier4/git-remote-punch-transport | |
| 768 | url = https://github.com/holepunchto/git-remote-punch-transport.git | |
| 769 | [submodule "repos/tier4/hyperbee2"] | |
| 770 | path = repos/tier4/hyperbee2 | |
| 771 | url = https://github.com/holepunchto/hyperbee2.git | |
| 772 | [submodule "repos/tier4/hypertrace"] | |
| 773 | path = repos/tier4/hypertrace | |
| 774 | url = https://github.com/holepunchto/hypertrace.git | |
| 775 | [submodule "repos/tier4/index-encoder"] | |
| 776 | path = repos/tier4/index-encoder | |
| 777 | url = https://github.com/holepunchto/index-encoder.git | |
| 778 | [submodule "repos/tier4/libfx"] | |
| 779 | path = repos/tier4/libfx | |
| 780 | url = https://github.com/holepunchto/libfx.git | |
| 781 | [submodule "repos/tier4/semifies"] | |
| 782 | path = repos/tier4/semifies | |
| 783 | url = https://github.com/holepunchto/semifies.git | |
| 784 | [submodule "repos/tier4/wasm-tools"] | |
| 785 | path = repos/tier4/wasm-tools | |
| 786 | url = https://github.com/holepunchto/wasm-tools.git | |
| 787 | [submodule "repos/tier4/which-runtime"] | |
| 788 | path = repos/tier4/which-runtime | |
| 789 | url = https://github.com/holepunchto/which-runtime.git | |
| 790 | [submodule "repos/tier4/autopass-mobile-example"] | |
| 791 | path = repos/tier4/autopass-mobile-example | |
| 792 | url = https://github.com/holepunchto/autopass-mobile-example.git | |
| 793 | [submodule "repos/tier4/bare-abort"] | |
| 794 | path = repos/tier4/bare-abort | |
| 795 | url = https://github.com/holepunchto/bare-abort.git | |
| 796 | [submodule "repos/tier4/bare-atomics"] | |
| 797 | path = repos/tier4/bare-atomics | |
| 798 | url = https://github.com/holepunchto/bare-atomics.git | |
| 799 | [submodule "repos/tier4/bare-buffer"] | |
| 800 | path = repos/tier4/bare-buffer | |
| 801 | url = https://github.com/holepunchto/bare-buffer.git | |
| 802 | [submodule "repos/tier4/bare-dev"] | |
| 803 | path = repos/tier4/bare-dev | |
| 804 | url = https://github.com/holepunchto/bare-dev.git | |
| 805 | [submodule "repos/tier4/bare-http1"] | |
| 806 | path = repos/tier4/bare-http1 | |
| 807 | url = https://github.com/holepunchto/bare-http1.git | |
| 808 | [submodule "repos/tier4/bare-pack"] | |
| 809 | path = repos/tier4/bare-pack | |
| 810 | url = https://github.com/holepunchto/bare-pack.git | |
| 811 | [submodule "repos/tier4/bare-pipe"] | |
| 812 | path = repos/tier4/bare-pipe | |
| 813 | url = https://github.com/holepunchto/bare-pipe.git | |
| 814 | [submodule "repos/tier4/bare-process"] | |
| 815 | path = repos/tier4/bare-process | |
| 816 | url = https://github.com/holepunchto/bare-process.git | |
| 817 | [submodule "repos/tier4/bare-signals"] | |
| 818 | path = repos/tier4/bare-signals | |
| 819 | url = https://github.com/holepunchto/bare-signals.git | |
| 820 | [submodule "repos/tier4/bare-stream"] | |
| 821 | path = repos/tier4/bare-stream | |
| 822 | url = https://github.com/holepunchto/bare-stream.git | |
| 823 | [submodule "repos/tier4/bare-subprocess"] | |
| 824 | path = repos/tier4/bare-subprocess | |
| 825 | url = https://github.com/holepunchto/bare-subprocess.git | |
| 826 | [submodule "repos/tier4/cmake-macos"] | |
| 827 | path = repos/tier4/cmake-macos | |
| 828 | url = https://github.com/holepunchto/cmake-macos.git | |
| 829 | [submodule "repos/tier4/db-lock"] | |
| 830 | path = repos/tier4/db-lock | |
| 831 | url = https://github.com/holepunchto/db-lock.git | |
| 832 | [submodule "repos/tier4/hypercore-blob-server"] | |
| 833 | path = repos/tier4/hypercore-blob-server | |
| 834 | url = https://github.com/holepunchto/hypercore-blob-server.git | |
| 835 | [submodule "repos/tier4/hyperdispatch"] | |
| 836 | path = repos/tier4/hyperdispatch | |
| 837 | url = https://github.com/holepunchto/hyperdispatch.git | |
| 838 | [submodule "repos/tier4/hyperswarm-testnet"] | |
| 839 | path = repos/tier4/hyperswarm-testnet | |
| 840 | url = https://github.com/holepunchto/hyperswarm-testnet.git | |
| 841 | [submodule "repos/tier4/libcrc"] | |
| 842 | path = repos/tier4/libcrc | |
| 843 | url = https://github.com/holepunchto/libcrc.git | |
| 844 | [submodule "repos/tier4/librocksdb"] | |
| 845 | path = repos/tier4/librocksdb | |
| 846 | url = https://github.com/holepunchto/librocksdb.git | |
| 847 | [submodule "repos/tier4/libtt"] | |
| 848 | path = repos/tier4/libtt | |
| 849 | url = https://github.com/holepunchto/libtt.git | |
| 850 | [submodule "repos/tier4/libutf"] | |
| 851 | path = repos/tier4/libutf | |
| 852 | url = https://github.com/holepunchto/libutf.git | |
| 853 | [submodule "repos/tier4/paparam"] | |
| 854 | path = repos/tier4/paparam | |
| 855 | url = https://github.com/holepunchto/paparam.git | |
| 856 | [submodule "repos/tier4/pear-electron"] | |
| 857 | path = repos/tier4/pear-electron | |
| 858 | url = https://github.com/holepunchto/pear-electron.git | |
| 859 | [submodule "repos/tier4/pear-workshop"] | |
| 860 | path = repos/tier4/pear-workshop | |
| 861 | url = https://github.com/holepunchto/pear-workshop.git | |
| 862 | [submodule "repos/tier4/protomux-rpc"] | |
| 863 | path = repos/tier4/protomux-rpc | |
| 864 | url = https://github.com/holepunchto/protomux-rpc.git | |
| 865 | [submodule "repos/tier4/quickbit-universal"] | |
| 866 | path = repos/tier4/quickbit-universal | |
| 867 | url = https://github.com/holepunchto/quickbit-universal.git | |
| 868 | [submodule "repos/tier4/require-addon"] | |
| 869 | path = repos/tier4/require-addon | |
| 870 | url = https://github.com/holepunchto/require-addon.git | |
| 871 | [submodule "repos/tier4/sentry-bare"] | |
| 872 | path = repos/tier4/sentry-bare | |
| 873 | url = https://github.com/holepunchto/sentry-bare.git | |
| 874 | [submodule "repos/tier4/sloppy-module-parser"] | |
| 875 | path = repos/tier4/sloppy-module-parser | |
| 876 | url = https://github.com/holepunchto/sloppy-module-parser.git | |
| 877 | [submodule "repos/tier4/task-backoff"] | |
| 878 | path = repos/tier4/task-backoff | |
| 879 | url = https://github.com/holepunchto/task-backoff.git | |
| 880 | [submodule "repos/tier4/tt-native"] | |
| 881 | path = repos/tier4/tt-native | |
| 882 | url = https://github.com/holepunchto/tt-native.git | |
| 883 | [submodule "repos/tier4/autobase-example"] | |
| 884 | path = repos/tier4/autobase-example | |
| 885 | url = https://github.com/holepunchto/autobase-example.git | |
| 886 | [submodule "repos/tier4/bare-addon"] | |
| 887 | path = repos/tier4/bare-addon | |
| 888 | url = https://github.com/holepunchto/bare-addon.git | |
| 889 | [submodule "repos/tier4/bare-ansi-escapes"] | |
| 890 | path = repos/tier4/bare-ansi-escapes | |
| 891 | url = https://github.com/holepunchto/bare-ansi-escapes.git | |
| 892 | [submodule "repos/tier4/bare-assert"] | |
| 893 | path = repos/tier4/bare-assert | |
| 894 | url = https://github.com/holepunchto/bare-assert.git | |
| 895 | [submodule "repos/tier4/bare-build"] | |
| 896 | path = repos/tier4/bare-build | |
| 897 | url = https://github.com/holepunchto/bare-build.git | |
| 898 | [submodule "repos/tier4/bare-bundle-compile"] | |
| 899 | path = repos/tier4/bare-bundle-compile | |
| 900 | url = https://github.com/holepunchto/bare-bundle-compile.git | |
| 901 | [submodule "repos/tier4/bare-diagnostics-channel"] | |
| 902 | path = repos/tier4/bare-diagnostics-channel | |
| 903 | url = https://github.com/holepunchto/bare-diagnostics-channel.git | |
| 904 | [submodule "repos/tier4/bare-dns"] | |
| 905 | path = repos/tier4/bare-dns | |
| 906 | url = https://github.com/holepunchto/bare-dns.git | |
| 907 | [submodule "repos/tier4/bare-encoding"] | |
| 908 | path = repos/tier4/bare-encoding | |
| 909 | url = https://github.com/holepunchto/bare-encoding.git | |
| 910 | [submodule "repos/tier4/bare-https"] | |
| 911 | path = repos/tier4/bare-https | |
| 912 | url = https://github.com/holepunchto/bare-https.git | |
| 913 | [submodule "repos/tier4/bare-link"] | |
| 914 | path = repos/tier4/bare-link | |
| 915 | url = https://github.com/holepunchto/bare-link.git | |
| 916 | [submodule "repos/tier4/bare-net"] | |
| 917 | path = repos/tier4/bare-net | |
| 918 | url = https://github.com/holepunchto/bare-net.git | |
| 919 | [submodule "repos/tier4/bare-pack-drive"] | |
| 920 | path = repos/tier4/bare-pack-drive | |
| 921 | url = https://github.com/holepunchto/bare-pack-drive.git | |
| 922 | [submodule "repos/tier4/bare-path"] | |
| 923 | path = repos/tier4/bare-path | |
| 924 | url = https://github.com/holepunchto/bare-path.git | |
| 925 | [submodule "repos/tier4/bare-png"] | |
| 926 | path = repos/tier4/bare-png | |
| 927 | url = https://github.com/holepunchto/bare-png.git | |
| 928 | [submodule "repos/tier4/bare-readline"] | |
| 929 | path = repos/tier4/bare-readline | |
| 930 | url = https://github.com/holepunchto/bare-readline.git | |
| 931 | [submodule "repos/tier4/bare-thread"] | |
| 932 | path = repos/tier4/bare-thread | |
| 933 | url = https://github.com/holepunchto/bare-thread.git | |
| 934 | [submodule "repos/tier4/bare-tty"] | |
| 935 | path = repos/tier4/bare-tty | |
| 936 | url = https://github.com/holepunchto/bare-tty.git | |
| 937 | [submodule "repos/tier4/chromium-prebuilds"] | |
| 938 | path = repos/tier4/chromium-prebuilds | |
| 939 | url = https://github.com/holepunchto/chromium-prebuilds.git | |
| 940 | [submodule "repos/tier4/cmake-gn"] | |
| 941 | path = repos/tier4/cmake-gn | |
| 942 | url = https://github.com/holepunchto/cmake-gn.git | |
| 943 | [submodule "repos/tier4/cmake-msix"] | |
| 944 | path = repos/tier4/cmake-msix | |
| 945 | url = https://github.com/holepunchto/cmake-msix.git | |
| 946 | [submodule "repos/tier4/fifofile"] | |
| 947 | path = repos/tier4/fifofile | |
| 948 | url = https://github.com/holepunchto/fifofile.git | |
| 949 | [submodule "repos/tier4/hyper-instrument"] | |
| 950 | path = repos/tier4/hyper-instrument | |
| 951 | url = https://github.com/holepunchto/hyper-instrument.git | |
| 952 | [submodule "repos/tier4/libappling"] | |
| 953 | path = repos/tier4/libappling | |
| 954 | url = https://github.com/holepunchto/libappling.git | |
| 955 | [submodule "repos/tier4/libjstl"] | |
| 956 | path = repos/tier4/libjstl | |
| 957 | url = https://github.com/holepunchto/libjstl.git | |
| 958 | [submodule "repos/tier4/liblog"] | |
| 959 | path = repos/tier4/liblog | |
| 960 | url = https://github.com/holepunchto/liblog.git | |
| 961 | [submodule "repos/tier4/libmem"] | |
| 962 | path = repos/tier4/libmem | |
| 963 | url = https://github.com/holepunchto/libmem.git | |
| 964 | [submodule "repos/tier4/libsimdle"] | |
| 965 | path = repos/tier4/libsimdle | |
| 966 | url = https://github.com/holepunchto/libsimdle.git | |
| 967 | [submodule "repos/tier4/liburl"] | |
| 968 | path = repos/tier4/liburl | |
| 969 | url = https://github.com/holepunchto/liburl.git | |
| 970 | [submodule "repos/tier4/network-block-device"] | |
| 971 | path = repos/tier4/network-block-device | |
| 972 | url = https://github.com/holepunchto/network-block-device.git | |
| 973 | [submodule "repos/tier4/pear-runtime-bare"] | |
| 974 | path = repos/tier4/pear-runtime-bare | |
| 975 | url = https://github.com/holepunchto/pear-runtime-bare.git | |
| 976 | [submodule "repos/tier4/same-object"] | |
| 977 | path = repos/tier4/same-object | |
| 978 | url = https://github.com/holepunchto/same-object.git | |
| 979 | [submodule "repos/tier4/secure-prompt"] | |
| 980 | path = repos/tier4/secure-prompt | |
| 981 | url = https://github.com/holepunchto/secure-prompt.git | |
| 982 | [submodule "repos/tier4/sqlite3-native"] | |
| 983 | path = repos/tier4/sqlite3-native | |
| 984 | url = https://github.com/holepunchto/sqlite3-native.git | |
| 985 | [submodule "repos/tier4/autobase-discovery"] | |
| 986 | path = repos/tier4/autobase-discovery | |
| 987 | url = https://github.com/holepunchto/autobase-discovery.git | |
| 988 | [submodule "repos/tier4/autobase-test-helpers"] | |
| 989 | path = repos/tier4/autobase-test-helpers | |
| 990 | url = https://github.com/holepunchto/autobase-test-helpers.git | |
| 991 | [submodule "repos/tier4/bare-async-hooks"] | |
| 992 | path = repos/tier4/bare-async-hooks | |
| 993 | url = https://github.com/holepunchto/bare-async-hooks.git | |
| 994 | [submodule "repos/tier4/bare-boot"] | |
| 995 | path = repos/tier4/bare-boot | |
| 996 | url = https://github.com/holepunchto/bare-boot.git | |
| 997 | [submodule "repos/tier4/bare-console"] | |
| 998 | path = repos/tier4/bare-console | |
| 999 | url = https://github.com/holepunchto/bare-console.git | |
| 1000 | [submodule "repos/tier4/bare-dgram"] | |
| 1001 | path = repos/tier4/bare-dgram | |
| 1002 | url = https://github.com/holepunchto/bare-dgram.git | |
| 1003 | [submodule "repos/tier4/bare-env"] | |
| 1004 | path = repos/tier4/bare-env | |
| 1005 | url = https://github.com/holepunchto/bare-env.git | |
| 1006 | [submodule "repos/tier4/bare-gif"] | |
| 1007 | path = repos/tier4/bare-gif | |
| 1008 | url = https://github.com/holepunchto/bare-gif.git | |
| 1009 | [submodule "repos/tier4/bare-heif"] | |
| 1010 | path = repos/tier4/bare-heif | |
| 1011 | url = https://github.com/holepunchto/bare-heif.git | |
| 1012 | [submodule "repos/tier4/bare-hrtime"] | |
| 1013 | path = repos/tier4/bare-hrtime | |
| 1014 | url = https://github.com/holepunchto/bare-hrtime.git | |
| 1015 | [submodule "repos/tier4/bare-image-resample"] | |
| 1016 | path = repos/tier4/bare-image-resample | |
| 1017 | url = https://github.com/holepunchto/bare-image-resample.git | |
| 1018 | [submodule "repos/tier4/bare-inspect"] | |
| 1019 | path = repos/tier4/bare-inspect | |
| 1020 | url = https://github.com/holepunchto/bare-inspect.git | |
| 1021 | [submodule "repos/tier4/bare-inspector"] | |
| 1022 | path = repos/tier4/bare-inspector | |
| 1023 | url = https://github.com/holepunchto/bare-inspector.git | |
| 1024 | [submodule "repos/tier4/bare-logger"] | |
| 1025 | path = repos/tier4/bare-logger | |
| 1026 | url = https://github.com/holepunchto/bare-logger.git | |
| 1027 | [submodule "repos/tier4/bare-module-traverse"] | |
| 1028 | path = repos/tier4/bare-module-traverse | |
| 1029 | url = https://github.com/holepunchto/bare-module-traverse.git | |
| 1030 | [submodule "repos/tier4/bare-native"] | |
| 1031 | path = repos/tier4/bare-native | |
| 1032 | url = https://github.com/holepunchto/bare-native.git | |
| 1033 | [submodule "repos/tier4/bare-run"] | |
| 1034 | path = repos/tier4/bare-run | |
| 1035 | url = https://github.com/holepunchto/bare-run.git | |
| 1036 | [submodule "repos/tier4/bare-rust"] | |
| 1037 | path = repos/tier4/bare-rust | |
| 1038 | url = https://github.com/holepunchto/bare-rust.git | |
| 1039 | [submodule "repos/tier4/bare-sdl"] | |
| 1040 | path = repos/tier4/bare-sdl | |
| 1041 | url = https://github.com/holepunchto/bare-sdl.git | |
| 1042 | [submodule "repos/tier4/bare-tiff"] | |
| 1043 | path = repos/tier4/bare-tiff | |
| 1044 | url = https://github.com/holepunchto/bare-tiff.git | |
| 1045 | [submodule "repos/tier4/bare-timers"] | |
| 1046 | path = repos/tier4/bare-timers | |
| 1047 | url = https://github.com/holepunchto/bare-timers.git | |
| 1048 | [submodule "repos/tier4/bare-type"] | |
| 1049 | path = repos/tier4/bare-type | |
| 1050 | url = https://github.com/holepunchto/bare-type.git | |
| 1051 | [submodule "repos/tier4/bare-url"] | |
| 1052 | path = repos/tier4/bare-url | |
| 1053 | url = https://github.com/holepunchto/bare-url.git | |
| 1054 | [submodule "repos/tier4/bare-vm"] | |
| 1055 | path = repos/tier4/bare-vm | |
| 1056 | url = https://github.com/holepunchto/bare-vm.git | |
| 1057 | [submodule "repos/tier4/bare-webp"] | |
| 1058 | path = repos/tier4/bare-webp | |
| 1059 | url = https://github.com/holepunchto/bare-webp.git | |
| 1060 | [submodule "repos/tier4/cmake-bare-bundle"] | |
| 1061 | path = repos/tier4/cmake-bare-bundle | |
| 1062 | url = https://github.com/holepunchto/cmake-bare-bundle.git | |
| 1063 | [submodule "repos/tier4/cmake-meson"] | |
| 1064 | path = repos/tier4/cmake-meson | |
| 1065 | url = https://github.com/holepunchto/cmake-meson.git | |
| 1066 | [submodule "repos/tier4/hyperbee-diff-stream"] | |
| 1067 | path = repos/tier4/hyperbee-diff-stream | |
| 1068 | url = https://github.com/holepunchto/hyperbee-diff-stream.git | |
| 1069 | [submodule "repos/tier4/hypercore-id-encoding"] | |
| 1070 | path = repos/tier4/hypercore-id-encoding | |
| 1071 | url = https://github.com/holepunchto/hypercore-id-encoding.git | |
| 1072 | [submodule "repos/tier4/hypercore-logger"] | |
| 1073 | path = repos/tier4/hypercore-logger | |
| 1074 | url = https://github.com/holepunchto/hypercore-logger.git | |
| 1075 | [submodule "repos/tier4/libfs"] | |
| 1076 | path = repos/tier4/libfs | |
| 1077 | url = https://github.com/holepunchto/libfs.git | |
| 1078 | [submodule "repos/tier4/libparseline"] | |
| 1079 | path = repos/tier4/libparseline | |
| 1080 | url = https://github.com/holepunchto/libparseline.git | |
| 1081 | [submodule "repos/tier4/librpc"] | |
| 1082 | path = repos/tier4/librpc | |
| 1083 | url = https://github.com/holepunchto/librpc.git | |
| 1084 | [submodule "repos/tier4/nanodebug"] | |
| 1085 | path = repos/tier4/nanodebug | |
| 1086 | url = https://github.com/holepunchto/nanodebug.git | |
| 1087 | [submodule "repos/tier4/pear-api"] | |
| 1088 | path = repos/tier4/pear-api | |
| 1089 | url = https://github.com/holepunchto/pear-api.git |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 2f947ea265e922d6e6f04a312604544b717fe158 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit e758ac5f83bc9ff45e13ecfe65bd61f15e17704f |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 5a4f3ed7ee03274ba0636bb5ab004017e5a18471 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 6c030e395accb7677f9a33ee4f0c497539c25cac |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 6bbd4af47a42b3d3c11a59c7f3c18276c9af17b7 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit f07d25b7fea1f15ee41972d5a9cf239827d8fcfc |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit cd0be5a4254a1b5a2a12b0ab95d79834f2d44a06 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 216b9ea70756d1b2ca70fa2ebceb074c8d7522c9 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit a7dcffa51044eebb18ebd65b1675c60206e8cd7a |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 8339ec6c3c1872820bf3fd8cb998283d528fe865 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit b3434ffaab5ef6ee3e573c6cd5a046ed23555526 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit ba4452a390ece4fd3896378aca06e20628ce3981 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit ea25b9c1b30df4b17b8d35f553252197b4a62957 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 63a05ae39ddd7c3948b6c4669a94108f71d68249 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 4afb0d0048d52b33ed0640836a65ed499a62952d |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 49e2970722edc9c02c888b22d97a1d4ed4c85c1d |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 127486940ba855f7bad96c3c477adc0ced7e8e4b |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit f3a4bbbc54ff0fdac2585cefd58adf469895672d |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit d853017ef950182c4e49fd82bf07b4f0be2fe38c |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 5156a7a1b329bf19d09d6dab3c28800adbd01ead |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit e6aeb8fea58d5f0dab4074b167317c0ec63d780a |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit c95e4e7564dffb8ca9d3ccc8fb3cb7a5e5349f85 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit b00bc0f9e4efbf2a0a6b9915e9f1a6c2543d5d74 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 54401eec2b31eb912d50f5bb8c2963363b7055ba |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 0f9e0e8dcc52b3970a9e72ab54032cb559927e51 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 450f8916d085265c843461f4d3760a6e7aadc536 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit ccc45179e442f14297de210358d190999b0d57ac |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 9ae0b1496d8ff11ac4533abb51ee420363dff951 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit f49a75ff11e7f085a67e46c17a504a6551b02ae4 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit fa79efb81b456565a5f1e6136ab709f424e789b5 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 238021b7d3bf4749d2dbfdcca06558637a797431 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 0e3d932a6058b8c2a3521630f101750e456f28ee |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 4cec2ecd1d1de1ccb0ac37d75d6a6f0a081bb566 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 1bd68a53fcb9dcbeed59bd4037f9588416cece32 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit f95462b17396f15b5e4328ce85e8c0d72d98c44b |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit a9a95f98aa1463bbf8833d9042ebd6bba7547c58 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 43496fba7175bd2349e42ea3f25c59da8ad203f1 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit eda4f65060ccb7307a2565933860604d9397df88 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 13850e97d5ce93ea4772bff76b655a35950349b4 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 543f72b42f4a68164cfc9fbe20f3297e2f9fad59 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 6ab0e3dd4d19aaa9458a0205110d628a68c9320e |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit c733522447cdbda9cd312fd16e7c4c695ac8377d |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit b14529f06e2ffab00662a9cffd6e624557e4993b |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 005cbe9507fbba21cbc389001e430a4f28a371dc |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit c7950446a03c3de372faefca1d6e7d6bb34b582f |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit ef2bdabf4e69cacef589bcc6650a2015e499bdb1 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 4c312b33276ca9b9c2a0dc1e04ba7d1e78335f25 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit c253a8e22363c10b113b3f55ffffe14b95c8a43f |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 06a351a0f7e739341bfa4aafb9d008243cae3ddf |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 5dad406ecd0952ae5e317f6737d81797dfadd433 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 52ff5969205938e66d4fefa7affbe1f451a5b2cd |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 2fc3fbb332e85aa12e7f5bb1031eb6855973962b |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit c8b95191dba23e9a0352ac62ab8ff4a2e57f88ae |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 8af844bc57ed9d1a82a1ff935a5dc68019b81538 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 1129dd614775afb3e77a37218187c0d2970089f8 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 9b0b45a9c9373d442fecd55e444928abbbaeb0e5 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit f4f1dd6c63224ee9880186fdc7e52780739d3cea |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 4a044cc1c7fb048eca362387442753d526c36a25 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit ef4ebba1cb52b57306caf63ef827210e152c9a96 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 549d834cbefc79db3ebaa390c46ff8fa5325fa30 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit c1e800a5020c6879b0003355ae79f179466ab46c |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit a32d5dacff34a17576f8d7156118c09c99a427ec |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit a156047560d74a717f959350b6b560444fb44fb9 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 3273726245a39eb669fa97bd49f2293b1b0dcef4 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 210b90b397507a6d0ed1d158a3aef88962e12c30 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 28234aa4eeb4b058a93d6c715903b945e457b288 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit eaf893950b09553d71009de92f263ff608758b1d |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 5ac6aaf6965a5e15538ac6994e87cea5785a7da4 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit cbf720f56368a1ef2d588710f82fa84f10177ada |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit bf53ddb94330138483a1aa991bdc4fdb628d1d6f |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 6270387132af16d098d7e854d1fac9a0f65577b1 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 2c679a85629ef26e303c7872ad862892f0468f4e |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 59c602c1c29891ae315c73deb4c5b21936cb6f88 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 14068e35678a77b6020582b90cec460e256c5dbc |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit a29ab163b7c460963f913442181680812844e9fc |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit c421d80cc59aad8ad2b6fe717d11344d70d305f3 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 90337ef2014c069a6be1da02e64af230215e361c |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 746a478b6946932585fe4df91f399fb73f2ba973 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 4d5bb05eb9e52e3dccae95a999deb8ebb537e94a |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 8e9a86e143b3b4ec5516215f6659951ac3e67de4 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 03e8148914464276c08afdc5786247666b755546 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit b0b516df6ec86894684df3f712ecbeb7f3cad9fa |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit ce5da2c77e6666f0af2fcf47d069c73bf4259313 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 0807abd88e499cc467a94244ac95ac82fedc5eec |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit fc1b33307cb363422bd39a71252120f287189d06 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit cc36bac9dbb8316dff48f6667ca732f9bef68763 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit e4504b1e0d5e19793b84ce4da918dca8b0aa61d2 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 74dcdb3aab410f2874f43747f39e09200cb806e6 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 322355ef563c90ae9f7789d336b1a93ca65248bb |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 767b86d49bee679d68a710b59cddd002fc6a0b89 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 82085745e4b321332b05841cf922753e8cacbfe5 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 7870918d8e479ba74f314d3dcc8a2ebfef5e528b |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit a093048b99b04e8fae27ed267f35d3a8fdd3cff7 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 12605d6945481f5915d02a19ef4e848a7970ad13 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 4edefe55b5a5993817dae4f4dca1e2f85e72db86 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 9a3821fa307d01ccc86c2bd9bf7ba99dceec43d6 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 516b700dbacb48164a3b71bceb48a18bb9711bcd |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 4e8262299837a588a58c160ca943350a4c41bf97 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 4140e84fb80c93139bfc359c4d90a64e846c7b3b |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 40cc0dccd46cc832de9c40250ad0a463bed707b5 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit c301fb808735caeebf711c0bc6de79b7c1036bfa |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 09271e19417acdddf85bbc7a22d3965d354a3f7b |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit e1b7def4d3101b0f83019a3801d2cbcdd63552a5 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 7fab08b1d2a760a481570be814499f6a76b37396 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 9a0c969126725517de39da4b92bbc53c87bbb7ad |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 0933d52a56796853c3c0b5dda171807fa31931be |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 463da548f21040841ee6f85b5ea855b0cff573e4 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit eb04362bc779eab1c7c42a39a7e07bc5ec25a7fc |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 10b6784ed1eb1e4b4ec93eb6097d88420726e207 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 1da29456a9d8ec54a8ac41ffc20311704e501060 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit edcfd8f4294819953c323838e903ad19d51a2ac5 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit a53806c928bb6e10cf5dc3189e89dd5d8ac81a93 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit c56b1ca67df2b1b44dcb6c7dd9b724a0dd65f196 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 7b1808cd60a605dd327af0a9f440e05d7f7449d3 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 5edf625eefe0105e6a9b2510ab7c3ade9b28059f |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit f6510376a28663363afd5bdc8f5e33cd26d6a132 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit ce57d0ff7af020a33de6c498aff097354309fee9 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit bfcf3b3617af3c230be28c79dc4d3c8e952eda53 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 03f148832a957e7ac3a5a3520ccb6cd88e86eee3 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 6b1a36f32697756e36d7acca82c2cb3bf8713168 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 885136ea96cff4f92133850e59a8e29a2ec45bf1 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 8abdf9d92ef8f7521ccfde9d3d760ac55b22d3b9 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 27deedc243c00ff4f140bdaacec70dd622c882ef |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit dcea170cdd56f41497fb546af27c8f58f35889de |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 7b62bba7bbe5d4e5ae7aa3bc1db52f7ab77b66e7 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit ef91105ef57e2adf09ebd71db7495c22ac19a770 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 1477e6646609b66f2798875d6e312c36e1fcf04d |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit f0a5978ef599eb7704932255e1c6e8e8ff753ae4 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 19267e5e8a77112baf1327632b5228f4c15dcb0f |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit aa59a1933d1ed54075a7fe3f80f3ded3c21313cf |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 091070d51faa807ce3a4e59bd8976d4db661a843 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 3d604db6ef235340749b8017802cf2526b91d04b |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 01412e3da04aba14a02e8cfb466babd0794c483d |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 6ee3cf613cad0e52682def12fe6e5c1a947efb79 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 531e966068bf4fe78330a5f304205261a9755054 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 27682e2c21985ae4c2654e9f722b8dd9b565d898 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit b2139652c8cc6a6f8267e4f556f244f2fb9036f9 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 4ac62196edf695ba95fdf2a49c27edd27dc9398c |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit d51e860de37f920c98a1f35ac23eb29d19f9f023 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 546132418c0af1bdc6690441625b1e89f23bc67b |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 080e1700e825a5e96247c50d05e32fbc520d5248 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit f4d550c2e1e566745a8f0907d7af6c910d40a4df |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 99e09c81758af5de9163ddf83bd19b410d3cd215 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 308c00ac8fe344496a8b47fcd5e2b1896bc247bf |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit fc159e8719d83a5e430f9bff6e3e7248eae039b0 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit caad68b00b029419e88ffb3a55967a825a123cff |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 7fa7f0d2b1a8ca85fd43a0463971962dc458b16f |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 819741ca24a355798f79bd8b3e69f2dd774a9631 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit 0cbd44844bfd7c8a22e37bf2f25e5be861eb7106 |
| … | … | @@ -0,0 +1 @@ |
| 1 | Subproject commit db5e85cc880012a97c50012dc382e727c391b867 |
| … | … | @@ -0,0 +1,45 @@ |
| 1 | { | |
| 2 | "repo": "autobase-discovery", | |
| 3 | "timestamp": "2026-01-16T23:56:28.717Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "Autodiscovery" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [ | |
| 19 | { | |
| 20 | "name": "Autodiscovery" | |
| 21 | } | |
| 22 | ], | |
| 23 | "functions": [] | |
| 24 | }, | |
| 25 | "readme": { | |
| 26 | "content": "# Autobase Discovery\n\nAutomatic service discovery with self-registering services, using [autobase](https://github.com/holepunchto/autobase). Works well with [protomux-rpc](https://github.com/holepunchto/protomux-rpc) services.\n\nClients discover the RPC services by querying the autodiscovery's [hyperdb](https://github.com/holepunchto/hyperdb), which is an autobase view.\n\nSee [autobase-discovery-cli](https://github.com/holepunchto/autobase-discovery-cli) for running as a CLI.\n\n## Install\n\n```\nnpm i autobase-discovery\n```\n\n## Usage\n\n### Security\n\nAutodiscovery uses a simple security model, taking advantage of the authentication mechanism of HyperDHT.\n\nAll clients who wish to register to the autodiscovery service know a shared secret seed (64 bytes). This seed is passed to the autodiscovery clients, which deterministically generate a DHT keyPair. This keyPair is then used to open a connection to the autodiscovery RPC server.\n\nThe autodiscovery service is passed the public key corresponding", | |
| 27 | "sections": [ | |
| 28 | "intro", | |
| 29 | "install", | |
| 30 | "usage" | |
| 31 | ], | |
| 32 | "hasApi": true, | |
| 33 | "hasExamples": true, | |
| 34 | "exampleCount": 2, | |
| 35 | "examples": [ | |
| 36 | "npm i autobase-discovery", | |
| 37 | "HyperDHT.keyPair(Buffer.from(seed, 'hex')).publicKey.toString('hex')" | |
| 38 | ] | |
| 39 | }, | |
| 40 | "patterns": [ | |
| 41 | "dht-discovery", | |
| 42 | "stream-multiplexing", | |
| 43 | "binary-encoding" | |
| 44 | ] | |
| 45 | } |
| … | … | @@ -60,11 +60,43 @@ Autodiscovery uses a simple security model, taking advantage of the authenticati |
| 60 | 60 | |
| 61 | 61 | ## API Documentation |
| 62 | 62 | |
| 63 | _To be enriched in Phase 1B with deep code analysis_ | |
| 63 | _Extracted from README and code analysis_ | |
| 64 | ||
| 65 | ### Classes | |
| 66 | ||
| 67 | - `Autodiscovery` | |
| 68 | ||
| 69 | ### Exports | |
| 70 | ||
| 71 | - default: `Autodiscovery` | |
| 72 | ||
| 73 | ||
| 74 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 75 | ||
| 64 | 76 | |
| 65 | 77 | ## Usage Examples |
| 66 | 78 | |
| 67 | _To be added in Phase 1B_ | |
| 79 | _Extracted from README_ | |
| 80 | ||
| 81 | ### Example 1 | |
| 82 | ||
| 83 | ```javascript | |
| 84 | npm i autobase-discovery | |
| 85 | ``` | |
| 86 | ||
| 87 | ### Example 2 | |
| 88 | ||
| 89 | ```javascript | |
| 90 | HyperDHT.keyPair(Buffer.from(seed, 'hex')).publicKey.toString('hex') | |
| 91 | ``` | |
| 92 | ||
| 93 | ||
| 94 | ||
| 95 | ## P2P Patterns | |
| 96 | ||
| 97 | - dht-discovery | |
| 98 | - stream-multiplexing | |
| 99 | - binary-encoding | |
| 68 | 100 | |
| 69 | 101 | ## Semantic Type |
| 70 | 102 |
| … | … | @@ -0,0 +1,46 @@ |
| 1 | { | |
| 2 | "repo": "autobase-example", | |
| 3 | "timestamp": "2026-01-16T23:56:15.900Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [], | |
| 13 | "classes": [ | |
| 14 | { | |
| 15 | "name": "View" | |
| 16 | } | |
| 17 | ], | |
| 18 | "functions": [ | |
| 19 | { | |
| 20 | "name": "onwritable" | |
| 21 | }, | |
| 22 | { | |
| 23 | "name": "append" | |
| 24 | } | |
| 25 | ] | |
| 26 | }, | |
| 27 | "readme": { | |
| 28 | "content": "# autobase-example\n\nJust a full E2E simple autobase example\n\n```\nnpm install autobase-example\n```\n\nSee other examples of using `autobase` in [`autobase/examples`](https://github.com/holepunchto/autobase/tree/main/examples).\n\n## Usage\n\n```\nnpm install -g autobase-example\nautobase-example -h # prints help\n```\n\n### Walkthrough\n\n1. Run the bootstrap peer with swarming enabled:\n\n ```console\n autobase-example --swarm\n ```\n\n You will see the following:\n ```\n Base key <base key>\n Local key <base key>\n ```\n Note that the local key will be the same for the bootstrap.\n2. In another shell, run another peer, named `b`, that will write messages to\n the autobase via the `--spam` flag. Replace the `<base key>` with the Base\n key from the bootstrap:\n\n ```\n autobase-example --name b --key <base key> --spam 1 --swarm\n ```\n\n Similarly this will output a Base key and Local key with the Local key being\n different this time since it is not the bootstrap node. Following the key", | |
| 29 | "sections": [ | |
| 30 | "intro", | |
| 31 | "usage", | |
| 32 | "license" | |
| 33 | ], | |
| 34 | "hasApi": true, | |
| 35 | "hasExamples": true, | |
| 36 | "exampleCount": 6, | |
| 37 | "examples": [ | |
| 38 | "npm install autobase-example", | |
| 39 | "npm install -g autobase-example\nautobase-example -h # prints help", | |
| 40 | "You will see the following:" | |
| 41 | ] | |
| 42 | }, | |
| 43 | "patterns": [ | |
| 44 | "peer-discovery" | |
| 45 | ] | |
| 46 | } |
| … | … | @@ -54,11 +54,49 @@ autobase-example -h # prints help |
| 54 | 54 | |
| 55 | 55 | ## API Documentation |
| 56 | 56 | |
| 57 | _To be enriched in Phase 1B with deep code analysis_ | |
| 57 | _Extracted from README and code analysis_ | |
| 58 | ||
| 59 | ### Classes | |
| 60 | ||
| 61 | - `View` | |
| 62 | ||
| 63 | ### Functions | |
| 64 | ||
| 65 | - `onwritable()` | |
| 66 | - `append()` | |
| 67 | ||
| 68 | ||
| 69 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 70 | ||
| 58 | 71 | |
| 59 | 72 | ## Usage Examples |
| 60 | 73 | |
| 61 | _To be added in Phase 1B_ | |
| 74 | _Extracted from README_ | |
| 75 | ||
| 76 | ### Example 1 | |
| 77 | ||
| 78 | ```javascript | |
| 79 | npm install autobase-example | |
| 80 | ``` | |
| 81 | ||
| 82 | ### Example 2 | |
| 83 | ||
| 84 | ```javascript | |
| 85 | npm install -g autobase-example | |
| 86 | autobase-example -h # prints help | |
| 87 | ``` | |
| 88 | ||
| 89 | ### Example 3 | |
| 90 | ||
| 91 | ```javascript | |
| 92 | You will see the following: | |
| 93 | ``` | |
| 94 | ||
| 95 | ||
| 96 | ||
| 97 | ## P2P Patterns | |
| 98 | ||
| 99 | - peer-discovery | |
| 62 | 100 | |
| 63 | 101 | ## Semantic Type |
| 64 | 102 |
| … | … | @@ -0,0 +1,70 @@ |
| 1 | { | |
| 2 | "repo": "autobase-test-helpers", | |
| 3 | "timestamp": "2026-01-16T23:56:29.085Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [], | |
| 13 | "classes": [], | |
| 14 | "functions": [ | |
| 15 | { | |
| 16 | "name": "eventFlush" | |
| 17 | }, | |
| 18 | { | |
| 19 | "name": "replicateAndSync" | |
| 20 | }, | |
| 21 | { | |
| 22 | "name": "sync" | |
| 23 | }, | |
| 24 | { | |
| 25 | "name": "check" | |
| 26 | }, | |
| 27 | { | |
| 28 | "name": "mbShutdown" | |
| 29 | }, | |
| 30 | { | |
| 31 | "name": "same" | |
| 32 | }, | |
| 33 | { | |
| 34 | "name": "shutdown" | |
| 35 | }, | |
| 36 | { | |
| 37 | "name": "sameHash" | |
| 38 | }, | |
| 39 | { | |
| 40 | "name": "synced" | |
| 41 | }, | |
| 42 | { | |
| 43 | "name": "same" | |
| 44 | }, | |
| 45 | { | |
| 46 | "name": "replicate" | |
| 47 | }, | |
| 48 | { | |
| 49 | "name": "close" | |
| 50 | } | |
| 51 | ] | |
| 52 | }, | |
| 53 | "readme": { | |
| 54 | "content": "# autobase-test-helpers\n\nHelpers when writing tests for an Autobased application\n\n```\nnpm install autobase-test-helpers\n```\n\n## Usage\n\n``` js\nconst { sync } = require('autobase-test-helpers')\n\nawait sync(bases) // expects replication to have been set up\n```\n\n## License\n\nMIT\n", | |
| 55 | "sections": [ | |
| 56 | "intro", | |
| 57 | "usage", | |
| 58 | "license" | |
| 59 | ], | |
| 60 | "hasApi": true, | |
| 61 | "hasExamples": true, | |
| 62 | "exampleCount": 1, | |
| 63 | "examples": [ | |
| 64 | "npm install autobase-test-helpers" | |
| 65 | ] | |
| 66 | }, | |
| 67 | "patterns": [ | |
| 68 | "replication" | |
| 69 | ] | |
| 70 | } |
| … | … | @@ -51,11 +51,42 @@ MIT |
| 51 | 51 | |
| 52 | 52 | ## API Documentation |
| 53 | 53 | |
| 54 | _To be enriched in Phase 1B with deep code analysis_ | |
| 54 | _Extracted from README and code analysis_ | |
| 55 | ||
| 56 | ### Functions | |
| 57 | ||
| 58 | - `eventFlush()` | |
| 59 | - `replicateAndSync()` | |
| 60 | - `sync()` | |
| 61 | - `check()` | |
| 62 | - `mbShutdown()` | |
| 63 | - `same()` | |
| 64 | - `shutdown()` | |
| 65 | - `sameHash()` | |
| 66 | - `synced()` | |
| 67 | - `same()` | |
| 68 | - `replicate()` | |
| 69 | - `close()` | |
| 70 | ||
| 71 | ||
| 72 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 73 | ||
| 55 | 74 | |
| 56 | 75 | ## Usage Examples |
| 57 | 76 | |
| 58 | _To be added in Phase 1B_ | |
| 77 | _Extracted from README_ | |
| 78 | ||
| 79 | ### Example 1 | |
| 80 | ||
| 81 | ```javascript | |
| 82 | npm install autobase-test-helpers | |
| 83 | ``` | |
| 84 | ||
| 85 | ||
| 86 | ||
| 87 | ## P2P Patterns | |
| 88 | ||
| 89 | - replication | |
| 59 | 90 | |
| 60 | 91 | ## Semantic Type |
| 61 | 92 |
| … | … | @@ -0,0 +1,28 @@ |
| 1 | { | |
| 2 | "repo": "autopass-mobile-example", | |
| 3 | "timestamp": "2026-01-16T23:56:04.339Z", | |
| 4 | "entryPoint": "expo-router/entry", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "expo-router/entry" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": {}, | |
| 11 | "readme": { | |
| 12 | "content": "# Autopass-example\n\nExample of using [Autopass](https://github.com/holepunchto/autopass) in an Expo application using <https://github.com/holepunchto/react-native-bare-kit>.\n\nWorks with [Pearpass-example](https://github.com/holepunchto/pearpass-example/)\n\n## Usage\n\nStart by installing the dependencies:\n\n```sh\nnpm install\n```\n\nGenerate a bundle\n\n```sh\n npx bare-pack --target ios --target android --linked --out app/app.bundle.mjs backend/backend.mjs\n```\n\nWhen finished, you can run the app on either iOS or Android.\n\n### iOS\n\n```sh\nnpm run ios\n```\n\n### Android\n\n> [!IMPORTANT] \n> You may experience problems running the app on an emulated Android device under QEMU due to https://github.com/holepunchto/libjs/issues/4. If you encounter crashes, try running the app on a real Android device instead.\n\n```sh\nnpm run android\n```\n\n## License\n\nApache-2.0\n", | |
| 13 | "sections": [ | |
| 14 | "intro", | |
| 15 | "usage", | |
| 16 | "license" | |
| 17 | ], | |
| 18 | "hasApi": true, | |
| 19 | "hasExamples": true, | |
| 20 | "exampleCount": 3, | |
| 21 | "examples": [ | |
| 22 | "Generate a bundle", | |
| 23 | "When finished, you can run the app on either iOS or Android.\n\n### iOS", | |
| 24 | "### Android\n\n> [!IMPORTANT] \n> You may experience problems running the app on an emulated Android device under QEMU due to https://github.com/holepunchto/libjs/issues/4. If you encounter crashes, try running the app on a real Android device instead." | |
| 25 | ] | |
| 26 | }, | |
| 27 | "patterns": [] | |
| 28 | } |
| … | … | @@ -69,11 +69,40 @@ Generate a bundle |
| 69 | 69 | |
| 70 | 70 | ## API Documentation |
| 71 | 71 | |
| 72 | _To be enriched in Phase 1B with deep code analysis_ | |
| 72 | _Extracted from README and code analysis_ | |
| 73 | ||
| 74 | ||
| 75 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 76 | ||
| 73 | 77 | |
| 74 | 78 | ## Usage Examples |
| 75 | 79 | |
| 76 | _To be added in Phase 1B_ | |
| 80 | _Extracted from README_ | |
| 81 | ||
| 82 | ### Example 1 | |
| 83 | ||
| 84 | ```javascript | |
| 85 | Generate a bundle | |
| 86 | ``` | |
| 87 | ||
| 88 | ### Example 2 | |
| 89 | ||
| 90 | ```javascript | |
| 91 | When finished, you can run the app on either iOS or Android. | |
| 92 | ||
| 93 | ### iOS | |
| 94 | ``` | |
| 95 | ||
| 96 | ### Example 3 | |
| 97 | ||
| 98 | ```javascript | |
| 99 | ### Android | |
| 100 | ||
| 101 | > [!IMPORTANT] | |
| 102 | > You may experience problems running the app on an emulated Android device under QEMU due to https://github.com/holepunchto/libjs/issues/4. If you encounter crashes, try running the app on a real Android device instead. | |
| 103 | ``` | |
| 104 | ||
| 105 | ||
| 77 | 106 | |
| 78 | 107 | ## Semantic Type |
| 79 | 108 |
| … | … | @@ -0,0 +1,46 @@ |
| 1 | { | |
| 2 | "repo": "bare-dev", | |
| 3 | "timestamp": "2026-01-16T23:56:05.885Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js", | |
| 8 | "exports": { | |
| 9 | ".": "./index.js", | |
| 10 | "./android": "./lib/android.js", | |
| 11 | "./build": "./lib/build.js", | |
| 12 | "./bundle": "./lib/bundle.js", | |
| 13 | "./clean": "./lib/clean.js", | |
| 14 | "./configure": "./lib/configure.js", | |
| 15 | "./dependencies": "./lib/dependencies.js", | |
| 16 | "./drive": "./lib/drive.js", | |
| 17 | "./init": "./lib/init.js", | |
| 18 | "./install": "./lib/install.js", | |
| 19 | "./ios": "./lib/ios.js", | |
| 20 | "./paths": "./lib/paths.js", | |
| 21 | "./test": "./lib/test.js", | |
| 22 | "./vendor": "./lib/vendor.js" | |
| 23 | } | |
| 24 | } | |
| 25 | }, | |
| 26 | "api": { | |
| 27 | "file": "index.js", | |
| 28 | "exports": [], | |
| 29 | "classes": [], | |
| 30 | "functions": [] | |
| 31 | }, | |
| 32 | "readme": { | |
| 33 | "content": "# bare-dev\n\nDevelopment tooling for Bare.\n\n## License\n\nApache-2.0\n", | |
| 34 | "sections": [ | |
| 35 | "intro", | |
| 36 | "license" | |
| 37 | ], | |
| 38 | "hasApi": false, | |
| 39 | "hasExamples": false, | |
| 40 | "exampleCount": 0, | |
| 41 | "examples": [] | |
| 42 | }, | |
| 43 | "patterns": [ | |
| 44 | "peer-discovery" | |
| 45 | ] | |
| 46 | } |
| … | … | @@ -73,12 +73,20 @@ Apache-2.0 |
| 73 | 73 | |
| 74 | 74 | ## API Documentation |
| 75 | 75 | |
| 76 | _To be enriched in Phase 1B with deep code analysis_ | |
| 76 | _Extracted from code analysis_ | |
| 77 | ||
| 78 | ||
| 79 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 80 | ||
| 77 | 81 | |
| 78 | 82 | ## Usage Examples |
| 79 | 83 | |
| 80 | 84 | _To be added in Phase 1B_ |
| 81 | 85 | |
| 86 | ## P2P Patterns | |
| 87 | ||
| 88 | - peer-discovery | |
| 89 | ||
| 82 | 90 | ## Semantic Type |
| 83 | 91 | |
| 84 | 92 | _To be classified in Phase 2_ |
| … | … | @@ -0,0 +1,36 @@ |
| 1 | { | |
| 2 | "repo": "bare-media", | |
| 3 | "timestamp": "2026-01-16T23:55:43.255Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js", | |
| 8 | "type": "module" | |
| 9 | } | |
| 10 | }, | |
| 11 | "api": { | |
| 12 | "file": "index.js", | |
| 13 | "exports": [], | |
| 14 | "classes": [], | |
| 15 | "functions": [] | |
| 16 | }, | |
| 17 | "readme": { | |
| 18 | "content": "# bare-media\n\nA set of media apis for Bare\n\n## Install\n\n```\nnpm i bare-media\n```\n\n## Usage\n\n```js\nimport { WorkerClient } from 'bare-media'\nimport { spawn } from 'cross-worker-pear' // or 'cross-worker-bare-kit'\n\nconst worker = new WorkerClient({ spawn })\nconst data = await worker.createImagePreview({ path, maxWidth, maxHeight })\n```\n\n> NOTE: A worker spawns when an operation is requested and it stays running until the parent process is killed.\n\nTerminate the worker:\n\n```js\nworker.close()\n\nworker.onClose = () => {\n // worker terminated\n}\n```\n\nCall the methods directly without a worker:\n\n```js\nimport { createImagePreview } from 'bare-media/worker/media.js'\n\nconst data = await createImagePreview({ path, maxWidth, maxHeight })\n```\n\n## API\n\n> See [schema.js](shared/spec/schema.js) for the complete reference of parameters\n\n### createImagePreview()\n\nCreate a preview from a media file\n\n| Property | Type | Description |\n| ----", | |
| 19 | "sections": [ | |
| 20 | "intro", | |
| 21 | "install", | |
| 22 | "usage", | |
| 23 | "api", | |
| 24 | "license" | |
| 25 | ], | |
| 26 | "hasApi": true, | |
| 27 | "hasExamples": true, | |
| 28 | "exampleCount": 4, | |
| 29 | "examples": [ | |
| 30 | "npm i bare-media", | |
| 31 | "import { WorkerClient } from 'bare-media'\nimport { spawn } from 'cross-worker-pear' // or 'cross-worker-bare-kit'\n\nconst worker = new WorkerClient({ spawn })\nconst data = await worker.createImagePreview({ path, maxWidth, maxHeight })", | |
| 32 | "worker.close()\n\nworker.onClose = () => {\n // worker terminated\n}" | |
| 33 | ] | |
| 34 | }, | |
| 35 | "patterns": [] | |
| 36 | } |
| … | … | @@ -69,11 +69,43 @@ const data = await worker.createImagePreview({ path, maxWidth, maxHeight }) |
| 69 | 69 | |
| 70 | 70 | ## API Documentation |
| 71 | 71 | |
| 72 | _To be enriched in Phase 1B with deep code analysis_ | |
| 72 | _Extracted from README and code analysis_ | |
| 73 | ||
| 74 | ||
| 75 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 76 | ||
| 73 | 77 | |
| 74 | 78 | ## Usage Examples |
| 75 | 79 | |
| 76 | _To be added in Phase 1B_ | |
| 80 | _Extracted from README_ | |
| 81 | ||
| 82 | ### Example 1 | |
| 83 | ||
| 84 | ```javascript | |
| 85 | npm i bare-media | |
| 86 | ``` | |
| 87 | ||
| 88 | ### Example 2 | |
| 89 | ||
| 90 | ```javascript | |
| 91 | import { WorkerClient } from 'bare-media' | |
| 92 | import { spawn } from 'cross-worker-pear' // or 'cross-worker-bare-kit' | |
| 93 | ||
| 94 | const worker = new WorkerClient({ spawn }) | |
| 95 | const data = await worker.createImagePreview({ path, maxWidth, maxHeight }) | |
| 96 | ``` | |
| 97 | ||
| 98 | ### Example 3 | |
| 99 | ||
| 100 | ```javascript | |
| 101 | worker.close() | |
| 102 | ||
| 103 | worker.onClose = () => { | |
| 104 | // worker terminated | |
| 105 | } | |
| 106 | ``` | |
| 107 | ||
| 108 | ||
| 77 | 109 | |
| 78 | 110 | ## Semantic Type |
| 79 | 111 |
| … | … | @@ -0,0 +1,26 @@ |
| 1 | { | |
| 2 | "repo": "bare-node", | |
| 3 | "timestamp": "2026-01-16T23:55:44.082Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": {} | |
| 7 | }, | |
| 8 | "api": {}, | |
| 9 | "readme": { | |
| 10 | "content": "# bare-node\n\nCompatibility modules for Bare that try to behave like their Node.js counterparts. Not meant to cover 100% of all APIs but the 95% that everyone uses.\n\n## Usage\n\nTo use any of the supported Node.js builtins, such as `fs`, in a Bare application run the following:\n\n```\nnpm i bare-fs fs@npm:bare-node-fs\n```\n\nThis will add something like the following to your `package.json`:\n\n```json\n{\n \"dependencies\": {\n \"bare-fs\": \"^2.1.5\",\n \"fs\": \"npm:bare-node-fs\"\n }\n}\n```\n\nThe only thing the wrapper does is `module.exports = require('bare-fs')` and at version `*`, meaning the version you specify is the one that wins. Using the wrapper saves you space as it means npm will only include `bare-fs` once even if multiple modules depend on it.\n\n### Import maps\n\nWhen writing a module that uses a Node.js builtin, such as `fs`, you can also choose to specify directly in that module what builtin should map to instead of relying on the compatibility layer. You would do that using an import ma", | |
| 11 | "sections": [ | |
| 12 | "intro", | |
| 13 | "usage", | |
| 14 | "modules", | |
| 15 | "license" | |
| 16 | ], | |
| 17 | "hasApi": true, | |
| 18 | "hasExamples": true, | |
| 19 | "exampleCount": 2, | |
| 20 | "examples": [ | |
| 21 | "npm i bare-fs fs@npm:bare-node-fs", | |
| 22 | "The only thing the wrapper does is `module.exports = require('bare-fs')` and at version `*`, meaning the version you specify is the one that wins. Using the wrapper saves you space as it means npm will only include `bare-fs` once even if multiple modules depend on it.\n\n### Import maps\n\nWhen writing a module that uses a Node.js builtin, such as `fs`, you can also choose to specify directly in that module what builtin should map to instead of relying on the compatibility layer. You would do that using an import map by adding the following to your `package.json`:" | |
| 23 | ] | |
| 24 | }, | |
| 25 | "patterns": [] | |
| 26 | } |
| … | … | @@ -43,11 +43,33 @@ This will add something like the following to your `package.json`: |
| 43 | 43 | |
| 44 | 44 | ## API Documentation |
| 45 | 45 | |
| 46 | _To be enriched in Phase 1B with deep code analysis_ | |
| 46 | _Extracted from README and code analysis_ | |
| 47 | ||
| 48 | ||
| 49 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 50 | ||
| 47 | 51 | |
| 48 | 52 | ## Usage Examples |
| 49 | 53 | |
| 50 | _To be added in Phase 1B_ | |
| 54 | _Extracted from README_ | |
| 55 | ||
| 56 | ### Example 1 | |
| 57 | ||
| 58 | ```javascript | |
| 59 | npm i bare-fs fs@npm:bare-node-fs | |
| 60 | ``` | |
| 61 | ||
| 62 | ### Example 2 | |
| 63 | ||
| 64 | ```javascript | |
| 65 | The only thing the wrapper does is `module.exports = require('bare-fs')` and at version `*`, meaning the version you specify is the one that wins. Using the wrapper saves you space as it means npm will only include `bare-fs` once even if multiple modules depend on it. | |
| 66 | ||
| 67 | ### Import maps | |
| 68 | ||
| 69 | When writing a module that uses a Node.js builtin, such as `fs`, you can also choose to specify directly in that module what builtin should map to instead of relying on the compatibility layer. You would do that using an import map by adding the following to your `package.json`: | |
| 70 | ``` | |
| 71 | ||
| 72 | ||
| 51 | 73 | |
| 52 | 74 | ## Semantic Type |
| 53 | 75 |
| … | … | @@ -0,0 +1,22 @@ |
| 1 | { | |
| 2 | "repo": "bare-rust", | |
| 3 | "timestamp": "2026-01-16T23:56:35.126Z", | |
| 4 | "entryPoint": null, | |
| 5 | "exports": {}, | |
| 6 | "api": {}, | |
| 7 | "readme": { | |
| 8 | "content": "# bare-rust\n\nRust and Bare, sitting in a tree.\n\n```\ncargo add bare-rust\n```\n\n## Usage\n\nSee <https://github.com/holepunchto/bare-addon-rust> for an example of using the Rust bindings to create a Bare addon.\n\n## License\n\nApache-2.0\n", | |
| 9 | "sections": [ | |
| 10 | "intro", | |
| 11 | "usage", | |
| 12 | "license" | |
| 13 | ], | |
| 14 | "hasApi": true, | |
| 15 | "hasExamples": true, | |
| 16 | "exampleCount": 1, | |
| 17 | "examples": [ | |
| 18 | "cargo add bare-rust" | |
| 19 | ] | |
| 20 | }, | |
| 21 | "patterns": [] | |
| 22 | } |
| … | … | @@ -32,11 +32,23 @@ Apache-2.0 |
| 32 | 32 | |
| 33 | 33 | ## API Documentation |
| 34 | 34 | |
| 35 | _To be enriched in Phase 1B with deep code analysis_ | |
| 35 | _Extracted from README and code analysis_ | |
| 36 | ||
| 37 | ||
| 38 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 39 | ||
| 36 | 40 | |
| 37 | 41 | ## Usage Examples |
| 38 | 42 | |
| 39 | _To be added in Phase 1B_ | |
| 43 | _Extracted from README_ | |
| 44 | ||
| 45 | ### Example 1 | |
| 46 | ||
| 47 | ```javascript | |
| 48 | cargo add bare-rust | |
| 49 | ``` | |
| 50 | ||
| 51 | ||
| 40 | 52 | |
| 41 | 53 | ## Semantic Type |
| 42 | 54 |
| … | … | @@ -0,0 +1,21 @@ |
| 1 | { | |
| 2 | "repo": "bare-snippets", | |
| 3 | "timestamp": "2026-01-16T23:55:44.459Z", | |
| 4 | "entryPoint": null, | |
| 5 | "exports": {}, | |
| 6 | "api": {}, | |
| 7 | "readme": { | |
| 8 | "content": "# Bare Snippets\n\nReady to run examples of how Bare makes running Javascript everywhere easy.\n\n- [ESM & CommonJS Interop Support](./esm-cjs-interop)\n- [Forget Upgrade Anxiety](./upgrade-anxiety)\n- [Simple Native Addon Support](./addon-support)\n- [Built for Mobile](./mobile)\n\n## Setup\n\nTo run any of the snippets, you will need to install `bare` first:\n\n```\nnpm i -g bare\n```\n\nThen follow the instructions in the README.md for the given snippet.\n", | |
| 9 | "sections": [ | |
| 10 | "intro", | |
| 11 | "setup" | |
| 12 | ], | |
| 13 | "hasApi": false, | |
| 14 | "hasExamples": true, | |
| 15 | "exampleCount": 1, | |
| 16 | "examples": [ | |
| 17 | "npm i -g bare" | |
| 18 | ] | |
| 19 | }, | |
| 20 | "patterns": [] | |
| 21 | } |
| … | … | @@ -35,11 +35,23 @@ Then follow the instructions in the README.md for the given snippet. |
| 35 | 35 | |
| 36 | 36 | ## API Documentation |
| 37 | 37 | |
| 38 | _To be enriched in Phase 1B with deep code analysis_ | |
| 38 | _Extracted from code analysis_ | |
| 39 | ||
| 40 | ||
| 41 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 42 | ||
| 39 | 43 | |
| 40 | 44 | ## Usage Examples |
| 41 | 45 | |
| 42 | _To be added in Phase 1B_ | |
| 46 | _Extracted from README_ | |
| 47 | ||
| 48 | ### Example 1 | |
| 49 | ||
| 50 | ```javascript | |
| 51 | npm i -g bare | |
| 52 | ``` | |
| 53 | ||
| 54 | ||
| 43 | 55 | |
| 44 | 56 | ## Semantic Type |
| 45 | 57 |
| … | … | @@ -0,0 +1,98 @@ |
| 1 | { | |
| 2 | "repo": "blind-pairing-core", | |
| 3 | "timestamp": "2026-01-16T23:56:00.047Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [], | |
| 13 | "classes": [ | |
| 14 | { | |
| 15 | "name": "CandidateRequest" | |
| 16 | }, | |
| 17 | { | |
| 18 | "name": "MemberRequest" | |
| 19 | } | |
| 20 | ], | |
| 21 | "functions": [ | |
| 22 | { | |
| 23 | "name": "createReceipt" | |
| 24 | }, | |
| 25 | { | |
| 26 | "name": "verifyReceipt" | |
| 27 | }, | |
| 28 | { | |
| 29 | "name": "deriveInviteId" | |
| 30 | }, | |
| 31 | { | |
| 32 | "name": "deriveKey" | |
| 33 | }, | |
| 34 | { | |
| 35 | "name": "deriveNonce" | |
| 36 | }, | |
| 37 | { | |
| 38 | "name": "deriveToken" | |
| 39 | }, | |
| 40 | { | |
| 41 | "name": "createSessionToken" | |
| 42 | }, | |
| 43 | { | |
| 44 | "name": "deriveRequestId" | |
| 45 | }, | |
| 46 | { | |
| 47 | "name": "createInvite" | |
| 48 | }, | |
| 49 | { | |
| 50 | "name": "decodeInvite" | |
| 51 | }, | |
| 52 | { | |
| 53 | "name": "encrypt" | |
| 54 | }, | |
| 55 | { | |
| 56 | "name": "decrypt" | |
| 57 | }, | |
| 58 | { | |
| 59 | "name": "createAuth" | |
| 60 | }, | |
| 61 | { | |
| 62 | "name": "openAuth" | |
| 63 | }, | |
| 64 | { | |
| 65 | "name": "createReply" | |
| 66 | }, | |
| 67 | { | |
| 68 | "name": "openReply" | |
| 69 | }, | |
| 70 | { | |
| 71 | "name": "createSignature" | |
| 72 | }, | |
| 73 | { | |
| 74 | "name": "verifySignature" | |
| 75 | } | |
| 76 | ] | |
| 77 | }, | |
| 78 | "readme": { | |
| 79 | "content": "# blind-pairing-core\n\n### Pairing Flow\n\nThe pairing flow proceeds as follows:\n\n1. The member (inviter) creates an invitation (a new signing keypair) and shares `{ discoveryKey, seed }` with a candidate (invitee). `publicKey` is set aside for later use.\n2. The candidate produces a request with arbitrary `userData` signed by the invitation keyPair, this is encrypted to a key derived from the invite `publicKey`.\n3. Upon receiving the request, the member decrypts the payload and verifies the signature against the invitation `publicKey`, proving that the invitee has `secretKey`.\n4. The member can evaluate `userData` and either confirm or deny the request. A response is returned to the candidate which may contain the `{ key, encryptionKey }` needed to join the room.\n5. The candidate verifies that `key` corresponds to `discoveryKey`, confirming that the remote peer has read-access to `key` (is a valid member).\n\n## Usage\n\n```js\nimport {\n CandidateRequest,\n MemberRequest,\n createInvite\n} fro", | |
| 80 | "sections": [ | |
| 81 | "intro", | |
| 82 | "usage", | |
| 83 | "api", | |
| 84 | "license" | |
| 85 | ], | |
| 86 | "hasApi": true, | |
| 87 | "hasExamples": true, | |
| 88 | "exampleCount": 2, | |
| 89 | "examples": [ | |
| 90 | "import {\n CandidateRequest,\n MemberRequest,\n createInvite\n} from 'blind-pairing-core'\n\nconst { invite, publicKey } = createInvite(key) // key is a Hypercore or Autobase key\n\n// candidate\n\nconst candidate = new CandidateRequest(invite, { userData: 'hello world' })\ncandidate.on('accepted', () => console.log('accepted!'))\n\nconst transport = candidate.encode()\n\n// member\n\nconst request = MemberRequest.from(transport)\n\nconst userData = request.open(publicKey)\nconsole.log(userData) // hello world\n\nrequest.confirm({ key })\n\n// candidate\n\ncandidate.handleResponse(request.response)\n// candidate accepted event will fire\n\nconsole.log(candidate.auth) // { key }", | |
| 91 | "{\n CandidateRequest,\n MemberRequest,\n createInvite,\n decodeInvite,\n verifyReceipt\n}" | |
| 92 | ] | |
| 93 | }, | |
| 94 | "patterns": [ | |
| 95 | "binary-encoding", | |
| 96 | "cryptography" | |
| 97 | ] | |
| 98 | } |
| … | … | @@ -57,11 +57,95 @@ import { |
| 57 | 57 | |
| 58 | 58 | ## API Documentation |
| 59 | 59 | |
| 60 | _To be enriched in Phase 1B with deep code analysis_ | |
| 60 | _Extracted from README and code analysis_ | |
| 61 | ||
| 62 | ### Classes | |
| 63 | ||
| 64 | - `CandidateRequest` | |
| 65 | - `MemberRequest` | |
| 66 | ||
| 67 | ### Functions | |
| 68 | ||
| 69 | - `createReceipt()` | |
| 70 | - `verifyReceipt()` | |
| 71 | - `deriveInviteId()` | |
| 72 | - `deriveKey()` | |
| 73 | - `deriveNonce()` | |
| 74 | - `deriveToken()` | |
| 75 | - `createSessionToken()` | |
| 76 | - `deriveRequestId()` | |
| 77 | - `createInvite()` | |
| 78 | - `decodeInvite()` | |
| 79 | - `encrypt()` | |
| 80 | - `decrypt()` | |
| 81 | - `createAuth()` | |
| 82 | - `openAuth()` | |
| 83 | - `createReply()` | |
| 84 | - `openReply()` | |
| 85 | - `createSignature()` | |
| 86 | - `verifySignature()` | |
| 87 | ||
| 88 | ||
| 89 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 90 | ||
| 61 | 91 | |
| 62 | 92 | ## Usage Examples |
| 63 | 93 | |
| 64 | _To be added in Phase 1B_ | |
| 94 | _Extracted from README_ | |
| 95 | ||
| 96 | ### Example 1 | |
| 97 | ||
| 98 | ```javascript | |
| 99 | import { | |
| 100 | CandidateRequest, | |
| 101 | MemberRequest, | |
| 102 | createInvite | |
| 103 | } from 'blind-pairing-core' | |
| 104 | ||
| 105 | const { invite, publicKey } = createInvite(key) // key is a Hypercore or Autobase key | |
| 106 | ||
| 107 | // candidate | |
| 108 | ||
| 109 | const candidate = new CandidateRequest(invite, { userData: 'hello world' }) | |
| 110 | candidate.on('accepted', () => console.log('accepted!')) | |
| 111 | ||
| 112 | const transport = candidate.encode() | |
| 113 | ||
| 114 | // member | |
| 115 | ||
| 116 | const request = MemberRequest.from(transport) | |
| 117 | ||
| 118 | const userData = request.open(publicKey) | |
| 119 | console.log(userData) // hello world | |
| 120 | ||
| 121 | request.confirm({ key }) | |
| 122 | ||
| 123 | // candidate | |
| 124 | ||
| 125 | candidate.handleResponse(request.response) | |
| 126 | // candidate accepted event will fire | |
| 127 | ||
| 128 | console.log(candidate.auth) // { key } | |
| 129 | ``` | |
| 130 | ||
| 131 | ### Example 2 | |
| 132 | ||
| 133 | ```javascript | |
| 134 | { | |
| 135 | CandidateRequest, | |
| 136 | MemberRequest, | |
| 137 | createInvite, | |
| 138 | decodeInvite, | |
| 139 | verifyReceipt | |
| 140 | } | |
| 141 | ``` | |
| 142 | ||
| 143 | ||
| 144 | ||
| 145 | ## P2P Patterns | |
| 146 | ||
| 147 | - binary-encoding | |
| 148 | - cryptography | |
| 65 | 149 | |
| 66 | 150 | ## Semantic Type |
| 67 | 151 |
| … | … | @@ -0,0 +1,72 @@ |
| 1 | { | |
| 2 | "repo": "blind-pairing", | |
| 3 | "timestamp": "2026-01-16T23:55:54.545Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "BlindPairing" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [ | |
| 19 | { | |
| 20 | "name": "TimeoutPromise" | |
| 21 | }, | |
| 22 | { | |
| 23 | "name": "BlindPairing" | |
| 24 | }, | |
| 25 | { | |
| 26 | "name": "Member" | |
| 27 | }, | |
| 28 | { | |
| 29 | "name": "Candidate" | |
| 30 | } | |
| 31 | ], | |
| 32 | "functions": [ | |
| 33 | { | |
| 34 | "name": "noop" | |
| 35 | }, | |
| 36 | { | |
| 37 | "name": "deriveReplyKeyPair" | |
| 38 | }, | |
| 39 | { | |
| 40 | "name": "deriveEphemeralKeyPair" | |
| 41 | }, | |
| 42 | { | |
| 43 | "name": "deriveDiscoveryKey" | |
| 44 | }, | |
| 45 | { | |
| 46 | "name": "getMuxer" | |
| 47 | }, | |
| 48 | { | |
| 49 | "name": "randomInterval" | |
| 50 | } | |
| 51 | ] | |
| 52 | }, | |
| 53 | "readme": { | |
| 54 | "content": "# blind-pairing\n\nBlind pairing over HyperDHT\n\n```\nnpm install blind-pairing\n```\n\n## Usage\n\n``` js\nimport createTestnet from 'hyperdht/testnet.js'\nimport Hyperswarm from 'hyperswarm'\nimport BlindPairing from './index.js'\n\nconst t = await createTestnet()\nconst autobaseKey = Buffer.alloc(32).fill('the-autobase-key')\n\n// Create an invite to share\nconst { invite, publicKey, discoveryKey } = BlindPairing.createInvite(autobaseKey)\n\nconst a = new BlindPairing(new Hyperswarm({ bootstrap: t.bootstrap }), { poll: 5000 })\n\n// Prepare to receive candidates with invites\nconst m = a.addMember({\n discoveryKey,\n async onadd (candidate) {\n console.log('candiate id is', candidate.inviteId)\n candidate.open(publicKey)\n console.log('add candidate:', candidate.userData)\n\n // Confirm the candidate is good\n candidate.confirm({ key: autobaseKey })\n }\n})\n\nawait m.flushed()\n\n// Candidate (aka using the invite)\nconst userData = Buffer.alloc(32).fill('i am a candidate')\n\nconst b = new BlindPairing", | |
| 55 | "sections": [ | |
| 56 | "intro", | |
| 57 | "usage", | |
| 58 | "license" | |
| 59 | ], | |
| 60 | "hasApi": true, | |
| 61 | "hasExamples": true, | |
| 62 | "exampleCount": 2, | |
| 63 | "examples": [ | |
| 64 | "npm install blind-pairing", | |
| 65 | "### Usage with Additional Nodes provided\n\nInvites may contain additional nodes for you to use. These are known Peers allowing you to connect without DHT connectivity being required." | |
| 66 | ] | |
| 67 | }, | |
| 68 | "patterns": [ | |
| 69 | "peer-discovery", | |
| 70 | "dht-discovery" | |
| 71 | ] | |
| 72 | } |
| … | … | @@ -58,11 +58,56 @@ const { invite, publicKey, discoveryKey } = BlindPairing.createInvite(autobaseKe |
| 58 | 58 | |
| 59 | 59 | ## API Documentation |
| 60 | 60 | |
| 61 | _To be enriched in Phase 1B with deep code analysis_ | |
| 61 | _Extracted from README and code analysis_ | |
| 62 | ||
| 63 | ### Classes | |
| 64 | ||
| 65 | - `TimeoutPromise` | |
| 66 | - `BlindPairing` | |
| 67 | - `Member` | |
| 68 | - `Candidate` | |
| 69 | ||
| 70 | ### Functions | |
| 71 | ||
| 72 | - `noop()` | |
| 73 | - `deriveReplyKeyPair()` | |
| 74 | - `deriveEphemeralKeyPair()` | |
| 75 | - `deriveDiscoveryKey()` | |
| 76 | - `getMuxer()` | |
| 77 | - `randomInterval()` | |
| 78 | ||
| 79 | ### Exports | |
| 80 | ||
| 81 | - default: `BlindPairing` | |
| 82 | ||
| 83 | ||
| 84 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 85 | ||
| 62 | 86 | |
| 63 | 87 | ## Usage Examples |
| 64 | 88 | |
| 65 | _To be added in Phase 1B_ | |
| 89 | _Extracted from README_ | |
| 90 | ||
| 91 | ### Example 1 | |
| 92 | ||
| 93 | ```javascript | |
| 94 | npm install blind-pairing | |
| 95 | ``` | |
| 96 | ||
| 97 | ### Example 2 | |
| 98 | ||
| 99 | ```javascript | |
| 100 | ### Usage with Additional Nodes provided | |
| 101 | ||
| 102 | Invites may contain additional nodes for you to use. These are known Peers allowing you to connect without DHT connectivity being required. | |
| 103 | ``` | |
| 104 | ||
| 105 | ||
| 106 | ||
| 107 | ## P2P Patterns | |
| 108 | ||
| 109 | - peer-discovery | |
| 110 | - dht-discovery | |
| 66 | 111 | |
| 67 | 112 | ## Semantic Type |
| 68 | 113 |
| … | … | @@ -0,0 +1,55 @@ |
| 1 | { | |
| 2 | "repo": "blind-peer", | |
| 3 | "timestamp": "2026-01-16T23:56:00.456Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "BlindPeer" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [ | |
| 19 | { | |
| 20 | "name": "CoreTracker" | |
| 21 | }, | |
| 22 | { | |
| 23 | "name": "WakeupHandler" | |
| 24 | }, | |
| 25 | { | |
| 26 | "name": "BlindPeer" | |
| 27 | } | |
| 28 | ], | |
| 29 | "functions": [] | |
| 30 | }, | |
| 31 | "readme": { | |
| 32 | "content": "# blind-peer\n\nBlind peers help keep hypercores available.\n\nFor the client side responsible for requesting cores be kept by Blind Peers, see [blind-peering](https://github.com/holepunchto/blind-peering).\n\nTo run the server as a CLI, see [blind-peer-cli](https://github.com/holepunchto/blind-peer-cli).\n\n## Installation\n\n```\nnpm install blind-peer\n```\n\n## Usage\n\nto run a blind-peer server, use [blind-peer-cli](https://github.com/holepunchto/blind-peer-cli).\n\n### Using a Blind Peer\n\nTo talk to a blind peer, use [blind-peering](https://github.com/holepunchto/blind-peering)\n\nHere is an example:\n\n```js\nimport BlindPeering from 'blind-peering'\nimport Hyperswarm from 'hyperswarm'\nimport Corestore from 'corestore'\nimport Wakeup from 'protomux-wakeup'\n\nconst store = new Corestore(Pear.config.storage)\nconst swarm = new Hyperswarm()\nconst wakeup = new Wakeup()\n\nconst DEFAULT_BLIND_PEER_KEYS = ['es4n7ty45odd1udfqyi9xz58mrbheuhdnxgdufsn9gz6e5uhsqco'] // replace with your own key\nconst blind = new Blin", | |
| 33 | "sections": [ | |
| 34 | "intro", | |
| 35 | "installation", | |
| 36 | "usage", | |
| 37 | "programmatic usage", | |
| 38 | "license" | |
| 39 | ], | |
| 40 | "hasApi": true, | |
| 41 | "hasExamples": true, | |
| 42 | "exampleCount": 3, | |
| 43 | "examples": [ | |
| 44 | "npm install blind-peer", | |
| 45 | "import BlindPeering from 'blind-peering'\nimport Hyperswarm from 'hyperswarm'\nimport Corestore from 'corestore'\nimport Wakeup from 'protomux-wakeup'\n\nconst store = new Corestore(Pear.config.storage)\nconst swarm = new Hyperswarm()\nconst wakeup = new Wakeup()\n\nconst DEFAULT_BLIND_PEER_KEYS = ['es4n7ty45odd1udfqyi9xz58mrbheuhdnxgdufsn9gz6e5uhsqco'] // replace with your own key\nconst blind = new BlindPeering(swarm, store, { wakeup, mirrors: DEFAULT_BLIND_PEER_KEYS })\n\n// Add your autobase\nblind.addAutobaseBackground(autobase1)\n\n// Add another core\nblind.addCore(core1, autobase1.wakeupCapability.key)", | |
| 46 | "const BlindPeer = require('blind-peer')" | |
| 47 | ] | |
| 48 | }, | |
| 49 | "patterns": [ | |
| 50 | "append-only-log", | |
| 51 | "peer-discovery", | |
| 52 | "stream-multiplexing", | |
| 53 | "binary-encoding" | |
| 54 | ] | |
| 55 | } |
| … | … | @@ -68,11 +68,68 @@ to run a blind-peer server, use [blind-peer-cli](https://github.com/holepunchto/ |
| 68 | 68 | |
| 69 | 69 | ## API Documentation |
| 70 | 70 | |
| 71 | _To be enriched in Phase 1B with deep code analysis_ | |
| 71 | _Extracted from README and code analysis_ | |
| 72 | ||
| 73 | ### Classes | |
| 74 | ||
| 75 | - `CoreTracker` | |
| 76 | - `WakeupHandler` | |
| 77 | - `BlindPeer` | |
| 78 | ||
| 79 | ### Exports | |
| 80 | ||
| 81 | - default: `BlindPeer` | |
| 82 | ||
| 83 | ||
| 84 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 85 | ||
| 72 | 86 | |
| 73 | 87 | ## Usage Examples |
| 74 | 88 | |
| 75 | _To be added in Phase 1B_ | |
| 89 | _Extracted from README_ | |
| 90 | ||
| 91 | ### Example 1 | |
| 92 | ||
| 93 | ```javascript | |
| 94 | npm install blind-peer | |
| 95 | ``` | |
| 96 | ||
| 97 | ### Example 2 | |
| 98 | ||
| 99 | ```javascript | |
| 100 | import BlindPeering from 'blind-peering' | |
| 101 | import Hyperswarm from 'hyperswarm' | |
| 102 | import Corestore from 'corestore' | |
| 103 | import Wakeup from 'protomux-wakeup' | |
| 104 | ||
| 105 | const store = new Corestore(Pear.config.storage) | |
| 106 | const swarm = new Hyperswarm() | |
| 107 | const wakeup = new Wakeup() | |
| 108 | ||
| 109 | const DEFAULT_BLIND_PEER_KEYS = ['es4n7ty45odd1udfqyi9xz58mrbheuhdnxgdufsn9gz6e5uhsqco'] // replace with your own key | |
| 110 | const blind = new BlindPeering(swarm, store, { wakeup, mirrors: DEFAULT_BLIND_PEER_KEYS }) | |
| 111 | ||
| 112 | // Add your autobase | |
| 113 | blind.addAutobaseBackground(autobase1) | |
| 114 | ||
| 115 | // Add another core | |
| 116 | blind.addCore(core1, autobase1.wakeupCapability.key) | |
| 117 | ``` | |
| 118 | ||
| 119 | ### Example 3 | |
| 120 | ||
| 121 | ```javascript | |
| 122 | const BlindPeer = require('blind-peer') | |
| 123 | ``` | |
| 124 | ||
| 125 | ||
| 126 | ||
| 127 | ## P2P Patterns | |
| 128 | ||
| 129 | - append-only-log | |
| 130 | - peer-discovery | |
| 131 | - stream-multiplexing | |
| 132 | - binary-encoding | |
| 76 | 133 | |
| 77 | 134 | ## Semantic Type |
| 78 | 135 |
| … | … | @@ -0,0 +1,60 @@ |
| 1 | { | |
| 2 | "repo": "blind-peering", | |
| 3 | "timestamp": "2026-01-16T23:56:00.809Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "class" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [ | |
| 19 | { | |
| 20 | "name": "BlindPeering" | |
| 21 | } | |
| 22 | ], | |
| 23 | "functions": [ | |
| 24 | { | |
| 25 | "name": "getBlocksUploadedTo" | |
| 26 | }, | |
| 27 | { | |
| 28 | "name": "getClosestMirrorList" | |
| 29 | }, | |
| 30 | { | |
| 31 | "name": "getClosestMirror" | |
| 32 | }, | |
| 33 | { | |
| 34 | "name": "isStaticCore" | |
| 35 | }, | |
| 36 | { | |
| 37 | "name": "noop" | |
| 38 | } | |
| 39 | ] | |
| 40 | }, | |
| 41 | "readme": { | |
| 42 | "content": "# Blind Peering\n\nClient for interacting with [blind peers](https://github.com/holepunchto/blind-peer), sending RPC requests to keep hypercores and autobases available.\n\n## Installl\n\n```\nnpm install blind-peering\n```\n\n## API\n\n#### `const blindPeering = new BlindPeering(swarm, store, opts)`\n\nCreate a new Blind Peering instance. `swarm` is a hyperswarm instance and `store` is a Corestore instance.\n\n`opts` include:\n\n- `mirrors`: a list of blind peer keys (mirrors) to use. You should always set this, otherwise there are no mirrors to contact.\n- `suspended`: whether to start in suspended state (default `false`)\n- `wakeup`: a Wakeup object\n\n#### `await blindPeering.addCore(core, target = core.key, opts)`\n\nAdd a Hypercore to a blind peer.\n\n`target` is an optional key. It looks for blind peers 'close' (using XOR distance) to that key. It defaults to the key of the hypercore, thereby load balancing among the available blind peers. To use a specific blind peer, set `target` to its key.\n\n`opts` in", | |
| 43 | "sections": [ | |
| 44 | "intro", | |
| 45 | "installl", | |
| 46 | "api" | |
| 47 | ], | |
| 48 | "hasApi": true, | |
| 49 | "hasExamples": true, | |
| 50 | "exampleCount": 1, | |
| 51 | "examples": [ | |
| 52 | "npm install blind-peering" | |
| 53 | ] | |
| 54 | }, | |
| 55 | "patterns": [ | |
| 56 | "append-only-log", | |
| 57 | "peer-discovery", | |
| 58 | "binary-encoding" | |
| 59 | ] | |
| 60 | } |
| … | … | @@ -59,11 +59,45 @@ Create a new Blind Peering instance. `swarm` is a hyperswarm instance and `store |
| 59 | 59 | |
| 60 | 60 | ## API Documentation |
| 61 | 61 | |
| 62 | _To be enriched in Phase 1B with deep code analysis_ | |
| 62 | _Extracted from README and code analysis_ | |
| 63 | ||
| 64 | ### Classes | |
| 65 | ||
| 66 | - `BlindPeering` | |
| 67 | ||
| 68 | ### Functions | |
| 69 | ||
| 70 | - `getBlocksUploadedTo()` | |
| 71 | - `getClosestMirrorList()` | |
| 72 | - `getClosestMirror()` | |
| 73 | - `isStaticCore()` | |
| 74 | - `noop()` | |
| 75 | ||
| 76 | ### Exports | |
| 77 | ||
| 78 | - default: `class` | |
| 79 | ||
| 80 | ||
| 81 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 82 | ||
| 63 | 83 | |
| 64 | 84 | ## Usage Examples |
| 65 | 85 | |
| 66 | _To be added in Phase 1B_ | |
| 86 | _Extracted from README_ | |
| 87 | ||
| 88 | ### Example 1 | |
| 89 | ||
| 90 | ```javascript | |
| 91 | npm install blind-peering | |
| 92 | ``` | |
| 93 | ||
| 94 | ||
| 95 | ||
| 96 | ## P2P Patterns | |
| 97 | ||
| 98 | - append-only-log | |
| 99 | - peer-discovery | |
| 100 | - binary-encoding | |
| 67 | 101 | |
| 68 | 102 | ## Semantic Type |
| 69 | 103 |
| … | … | @@ -0,0 +1,62 @@ |
| 1 | { | |
| 2 | "repo": "blind-relay", | |
| 3 | "timestamp": "2026-01-16T23:55:54.934Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [], | |
| 13 | "classes": [ | |
| 14 | { | |
| 15 | "name": "BlindRelayServer" | |
| 16 | }, | |
| 17 | { | |
| 18 | "name": "BlindRelaySession" | |
| 19 | }, | |
| 20 | { | |
| 21 | "name": "BlindRelayPair" | |
| 22 | }, | |
| 23 | { | |
| 24 | "name": "BlindRelayLink" | |
| 25 | }, | |
| 26 | { | |
| 27 | "name": "BlindRelayClient" | |
| 28 | }, | |
| 29 | { | |
| 30 | "name": "BlindRelayRequest" | |
| 31 | } | |
| 32 | ], | |
| 33 | "functions": [ | |
| 34 | { | |
| 35 | "name": "token" | |
| 36 | }, | |
| 37 | { | |
| 38 | "name": "noop" | |
| 39 | } | |
| 40 | ] | |
| 41 | }, | |
| 42 | "readme": { | |
| 43 | "content": "# blind-relay\n\nBlind relay for [UDX](https://github.com/holepunchto/udx-native) over [Protomux](https://github.com/mafintosh/protomux) channels. By acting as a blind relay, a host may accept pairing requests from other hosts and relay UDX stream messages between them, similar to Traversal Using Relays around NAT (TURN).\n\n```sh\nnpm i blind-relay\n```\n\n## Protocol\n\n```mermaid\nsequenceDiagram\n actor a as peer a\n actor r as relay\n actor b as peer b\n\n par\n a ->> r: pair { isInitiator: true, token, id, seq }\n and\n b ->> r: pair { isInitiator: false, token, id, seq }\n end\n\n note over r: The relay pairs peers a and b based on the token, allocates a new stream for both peers, and sends back the stream info\n\n par\n r -->> a: pair { isInitiator: true, token, id, seq }\n and\n r -->> b: pair { isInitiator: false, token, id, seq }\n end\n\n par\n a ->> r: unpair { token }\n\n note left of r: The relay deallocates the stream previously", | |
| 44 | "sections": [ | |
| 45 | "intro", | |
| 46 | "protocol", | |
| 47 | "license" | |
| 48 | ], | |
| 49 | "hasApi": false, | |
| 50 | "hasExamples": true, | |
| 51 | "exampleCount": 1, | |
| 52 | "examples": [ | |
| 53 | "## Protocol" | |
| 54 | ] | |
| 55 | }, | |
| 56 | "patterns": [ | |
| 57 | "stream-multiplexing", | |
| 58 | "binary-encoding", | |
| 59 | "cryptography", | |
| 60 | "streaming" | |
| 61 | ] | |
| 62 | } |
| … | … | @@ -58,11 +58,44 @@ sequenceDiagram |
| 58 | 58 | |
| 59 | 59 | ## API Documentation |
| 60 | 60 | |
| 61 | _To be enriched in Phase 1B with deep code analysis_ | |
| 61 | _Extracted from code analysis_ | |
| 62 | ||
| 63 | ### Classes | |
| 64 | ||
| 65 | - `BlindRelayServer` | |
| 66 | - `BlindRelaySession` | |
| 67 | - `BlindRelayPair` | |
| 68 | - `BlindRelayLink` | |
| 69 | - `BlindRelayClient` | |
| 70 | - `BlindRelayRequest` | |
| 71 | ||
| 72 | ### Functions | |
| 73 | ||
| 74 | - `token()` | |
| 75 | - `noop()` | |
| 76 | ||
| 77 | ||
| 78 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 79 | ||
| 62 | 80 | |
| 63 | 81 | ## Usage Examples |
| 64 | 82 | |
| 65 | _To be added in Phase 1B_ | |
| 83 | _Extracted from README_ | |
| 84 | ||
| 85 | ### Example 1 | |
| 86 | ||
| 87 | ```javascript | |
| 88 | ## Protocol | |
| 89 | ``` | |
| 90 | ||
| 91 | ||
| 92 | ||
| 93 | ## P2P Patterns | |
| 94 | ||
| 95 | - stream-multiplexing | |
| 96 | - binary-encoding | |
| 97 | - cryptography | |
| 98 | - streaming | |
| 66 | 99 | |
| 67 | 100 | ## Semantic Type |
| 68 | 101 |
| … | … | @@ -0,0 +1,26 @@ |
| 1 | { | |
| 2 | "repo": "chromium-prebuilds", | |
| 3 | "timestamp": "2026-01-16T23:56:22.679Z", | |
| 4 | "entryPoint": null, | |
| 5 | "exports": {}, | |
| 6 | "api": {}, | |
| 7 | "readme": { | |
| 8 | "content": "# chromium-prebuilds\n\nBuild definitions for making prebuilds of Chromium modules.\n\n## Setup\n\nLike Chromium itself, this repository is not intended for checkout using `git clone`. Instead, start by installing [`depot_tools`](https://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_setting_up) which is a toolset used for fetching and managing the Chromium source repositories. Next, create a new directory that will contain the Chromium sources and change into it:\n\n```sh\nmkdir chromium && cd chromium\n```\n\nThen, create a `.gclient` configuration file that will fetch this repository and its dependencies:\n\n```sh\ngclient config --name src/prebuilds [--cache-dir <path>] --unmanaged git@github.com:holepunchto/chromium-prebuilds.git\n```\n\nThe `--cache-dir` argument, if provided, should point to a path, such as `~/.git_cache/`, that will be used for caching all cloned git repositories. When finished, fetch the repository and its dependencies:\n", | |
| 9 | "sections": [ | |
| 10 | "intro", | |
| 11 | "setup", | |
| 12 | "patching", | |
| 13 | "building", | |
| 14 | "license" | |
| 15 | ], | |
| 16 | "hasApi": false, | |
| 17 | "hasExamples": true, | |
| 18 | "exampleCount": 12, | |
| 19 | "examples": [ | |
| 20 | "Then, create a `.gclient` configuration file that will fetch this repository and its dependencies:", | |
| 21 | "The `--cache-dir` argument, if provided, should point to a path, such as `~/.git_cache/`, that will be used for caching all cloned git repositories. When finished, fetch the repository and its dependencies:", | |
| 22 | "This will take a while depending on the speed of your connection. When completed, create a link to the fetched build tools to mark the root of the build tree:" | |
| 23 | ] | |
| 24 | }, | |
| 25 | "patterns": [] | |
| 26 | } |
| … | … | @@ -36,11 +36,35 @@ The `--cache-dir` argument, if provided, should point to a path, such as `~/.git |
| 36 | 36 | |
| 37 | 37 | ## API Documentation |
| 38 | 38 | |
| 39 | _To be enriched in Phase 1B with deep code analysis_ | |
| 39 | _Extracted from code analysis_ | |
| 40 | ||
| 41 | ||
| 42 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 43 | ||
| 40 | 44 | |
| 41 | 45 | ## Usage Examples |
| 42 | 46 | |
| 43 | _To be added in Phase 1B_ | |
| 47 | _Extracted from README_ | |
| 48 | ||
| 49 | ### Example 1 | |
| 50 | ||
| 51 | ```javascript | |
| 52 | Then, create a `.gclient` configuration file that will fetch this repository and its dependencies: | |
| 53 | ``` | |
| 54 | ||
| 55 | ### Example 2 | |
| 56 | ||
| 57 | ```javascript | |
| 58 | The `--cache-dir` argument, if provided, should point to a path, such as `~/.git_cache/`, that will be used for caching all cloned git repositories. When finished, fetch the repository and its dependencies: | |
| 59 | ``` | |
| 60 | ||
| 61 | ### Example 3 | |
| 62 | ||
| 63 | ```javascript | |
| 64 | This will take a while depending on the speed of your connection. When completed, create a link to the fetched build tools to mark the root of the build tree: | |
| 65 | ``` | |
| 66 | ||
| 67 | ||
| 44 | 68 | |
| 45 | 69 | ## Semantic Type |
| 46 | 70 |
| … | … | @@ -0,0 +1,24 @@ |
| 1 | { | |
| 2 | "repo": "cmake-bare-bundle", | |
| 3 | "timestamp": "2026-01-16T23:56:38.317Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": {} | |
| 7 | }, | |
| 8 | "api": {}, | |
| 9 | "readme": { | |
| 10 | "content": "# cmake-bare-bundle\n\n```\nnpm i cmake-bare-bundle\n```\n\n```cmake\nfind_package(cmake-bare-bundle REQUIRED PATHS node_modules/cmake-bare-bundle)\n```\n\n## API\n\n#### `add_bare_bundle(<target> ENTRY <path> OUT <path> [BUILTINS <path>] [LINKED] [HOST <string>] [WORKING_DIRECTORY <path>] [DEPENDS <path...>])`\n\n## License\n\nApache-2.0\n", | |
| 11 | "sections": [ | |
| 12 | "intro", | |
| 13 | "api", | |
| 14 | "license" | |
| 15 | ], | |
| 16 | "hasApi": true, | |
| 17 | "hasExamples": true, | |
| 18 | "exampleCount": 1, | |
| 19 | "examples": [ | |
| 20 | "npm i cmake-bare-bundle" | |
| 21 | ] | |
| 22 | }, | |
| 23 | "patterns": [] | |
| 24 | } |
| … | … | @@ -50,11 +50,23 @@ Apache-2.0 |
| 50 | 50 | |
| 51 | 51 | ## API Documentation |
| 52 | 52 | |
| 53 | _To be enriched in Phase 1B with deep code analysis_ | |
| 53 | _Extracted from README and code analysis_ | |
| 54 | ||
| 55 | ||
| 56 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 57 | ||
| 54 | 58 | |
| 55 | 59 | ## Usage Examples |
| 56 | 60 | |
| 57 | _To be added in Phase 1B_ | |
| 61 | _Extracted from README_ | |
| 62 | ||
| 63 | ### Example 1 | |
| 64 | ||
| 65 | ```javascript | |
| 66 | npm i cmake-bare-bundle | |
| 67 | ``` | |
| 68 | ||
| 69 | ||
| 58 | 70 | |
| 59 | 71 | ## Semantic Type |
| 60 | 72 |
| … | … | @@ -0,0 +1,23 @@ |
| 1 | { | |
| 2 | "repo": "cmake-gn", | |
| 3 | "timestamp": "2026-01-16T23:56:23.054Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": {} | |
| 7 | }, | |
| 8 | "api": {}, | |
| 9 | "readme": { | |
| 10 | "content": "# cmake-gn\n\nBridging CMake and GN, the meta-build system from Google.\n\n```\nnpm i cmake-gn\n```\n\n```cmake\nfind_package(cmake-gn REQUIRED PATHS node_modules/cmake-gn)\n```\n\n## License\n\nApache-2.0\n", | |
| 11 | "sections": [ | |
| 12 | "intro", | |
| 13 | "license" | |
| 14 | ], | |
| 15 | "hasApi": false, | |
| 16 | "hasExamples": true, | |
| 17 | "exampleCount": 1, | |
| 18 | "examples": [ | |
| 19 | "npm i cmake-gn" | |
| 20 | ] | |
| 21 | }, | |
| 22 | "patterns": [] | |
| 23 | } |
| … | … | @@ -39,11 +39,23 @@ Apache-2.0 |
| 39 | 39 | |
| 40 | 40 | ## API Documentation |
| 41 | 41 | |
| 42 | _To be enriched in Phase 1B with deep code analysis_ | |
| 42 | _Extracted from code analysis_ | |
| 43 | ||
| 44 | ||
| 45 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 46 | ||
| 43 | 47 | |
| 44 | 48 | ## Usage Examples |
| 45 | 49 | |
| 46 | _To be added in Phase 1B_ | |
| 50 | _Extracted from README_ | |
| 51 | ||
| 52 | ### Example 1 | |
| 53 | ||
| 54 | ```javascript | |
| 55 | npm i cmake-gn | |
| 56 | ``` | |
| 57 | ||
| 58 | ||
| 47 | 59 | |
| 48 | 60 | ## Semantic Type |
| 49 | 61 |
| … | … | @@ -0,0 +1,26 @@ |
| 1 | { | |
| 2 | "repo": "cmake-macos", | |
| 3 | "timestamp": "2026-01-16T23:56:08.807Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": {} | |
| 7 | }, | |
| 8 | "api": {}, | |
| 9 | "readme": { | |
| 10 | "content": "# cmake-macos\n\nFunctions for streamlining the creation of macOS application bundles (`.app` files), including icon management, code signing, and more.\n\n## API\n\n#### `find_codesign`\n\nLocates the `codesign` command-line utility required for code signing macOS applications.\n\n```cmake\nfind_codesign(<result>)\n```\n\n##### `<result>`\nAn output variable where the path to the codesign tool will be stored.\n\n#### `find_iconutil`\n\nLocates the `iconutil` command-line utility used for manipulating macOS icon sets (`.icns` \nfiles).\n\n```cmake\nfind_iconutil(<result>)\n```\n\n##### `<result>`\nAn output variable where the path to the iconutil tool will be stored.\n\n#### `add_macos_entitlements`\n\nGenerates a macOS `Entitlements.plist` file for specifying special permissions required by the application.\n\n```cmake\nadd_macos_entitlements(\n <target>\n [DESTINATION <path>]\n ENTITLEMENTS <entitlement...>\n)\n```\n\n##### `<target>` \nThe name of the CMake target to create.\n\n##### `DESTINATION <path>`\nThe location to sa", | |
| 11 | "sections": [ | |
| 12 | "intro", | |
| 13 | "api", | |
| 14 | "license" | |
| 15 | ], | |
| 16 | "hasApi": true, | |
| 17 | "hasExamples": true, | |
| 18 | "exampleCount": 6, | |
| 19 | "examples": [ | |
| 20 | "##### `<result>`\nAn output variable where the path to the codesign tool will be stored.\n\n#### `find_iconutil`\n\nLocates the `iconutil` command-line utility used for manipulating macOS icon sets (`.icns` \nfiles).", | |
| 21 | "##### `<result>`\nAn output variable where the path to the iconutil tool will be stored.\n\n#### `add_macos_entitlements`\n\nGenerates a macOS `Entitlements.plist` file for specifying special permissions required by the application.", | |
| 22 | "##### `<target>` \nThe name of the CMake target to create.\n\n##### `DESTINATION <path>`\nThe location to save the generated `Entitlements.plist`. Defaults to `\"Entitlements.plist\"` in the build directory.\n\n##### `ENTITLEMENTS <entitlement...>`\nA list of entitlement keys to be included.\n\n#### `add_macos_iconset`\n\nCreates a macOS icon set (`.icns` file) from a collection of image files." | |
| 23 | ] | |
| 24 | }, | |
| 25 | "patterns": [] | |
| 26 | } |
| … | … | @@ -43,11 +43,57 @@ Locates the `iconutil` command-line utility used for manipulating macOS icon set |
| 43 | 43 | |
| 44 | 44 | ## API Documentation |
| 45 | 45 | |
| 46 | _To be enriched in Phase 1B with deep code analysis_ | |
| 46 | _Extracted from README and code analysis_ | |
| 47 | ||
| 48 | ||
| 49 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 50 | ||
| 47 | 51 | |
| 48 | 52 | ## Usage Examples |
| 49 | 53 | |
| 50 | _To be added in Phase 1B_ | |
| 54 | _Extracted from README_ | |
| 55 | ||
| 56 | ### Example 1 | |
| 57 | ||
| 58 | ```javascript | |
| 59 | ##### `<result>` | |
| 60 | An output variable where the path to the codesign tool will be stored. | |
| 61 | ||
| 62 | #### `find_iconutil` | |
| 63 | ||
| 64 | Locates the `iconutil` command-line utility used for manipulating macOS icon sets (`.icns` | |
| 65 | files). | |
| 66 | ``` | |
| 67 | ||
| 68 | ### Example 2 | |
| 69 | ||
| 70 | ```javascript | |
| 71 | ##### `<result>` | |
| 72 | An output variable where the path to the iconutil tool will be stored. | |
| 73 | ||
| 74 | #### `add_macos_entitlements` | |
| 75 | ||
| 76 | Generates a macOS `Entitlements.plist` file for specifying special permissions required by the application. | |
| 77 | ``` | |
| 78 | ||
| 79 | ### Example 3 | |
| 80 | ||
| 81 | ```javascript | |
| 82 | ##### `<target>` | |
| 83 | The name of the CMake target to create. | |
| 84 | ||
| 85 | ##### `DESTINATION <path>` | |
| 86 | The location to save the generated `Entitlements.plist`. Defaults to `"Entitlements.plist"` in the build directory. | |
| 87 | ||
| 88 | ##### `ENTITLEMENTS <entitlement...>` | |
| 89 | A list of entitlement keys to be included. | |
| 90 | ||
| 91 | #### `add_macos_iconset` | |
| 92 | ||
| 93 | Creates a macOS icon set (`.icns` file) from a collection of image files. | |
| 94 | ``` | |
| 95 | ||
| 96 | ||
| 51 | 97 | |
| 52 | 98 | ## Semantic Type |
| 53 | 99 |
| … | … | @@ -0,0 +1,23 @@ |
| 1 | { | |
| 2 | "repo": "cmake-meson", | |
| 3 | "timestamp": "2026-01-16T23:56:38.679Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": {} | |
| 7 | }, | |
| 8 | "api": {}, | |
| 9 | "readme": { | |
| 10 | "content": "# cmake-meson\n\nMeson bridge for CMake.\n\n```\nnpm i cmake-meson\n```\n\n```cmake\nfind_package(cmake-meson REQUIRED PATHS node_modules/cmake-meson)\n```\n\n## License\n\nApache-2.0\n", | |
| 11 | "sections": [ | |
| 12 | "intro", | |
| 13 | "license" | |
| 14 | ], | |
| 15 | "hasApi": false, | |
| 16 | "hasExamples": true, | |
| 17 | "exampleCount": 1, | |
| 18 | "examples": [ | |
| 19 | "npm i cmake-meson" | |
| 20 | ] | |
| 21 | }, | |
| 22 | "patterns": [] | |
| 23 | } |
| … | … | @@ -39,11 +39,23 @@ Apache-2.0 |
| 39 | 39 | |
| 40 | 40 | ## API Documentation |
| 41 | 41 | |
| 42 | _To be enriched in Phase 1B with deep code analysis_ | |
| 42 | _Extracted from code analysis_ | |
| 43 | ||
| 44 | ||
| 45 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 46 | ||
| 43 | 47 | |
| 44 | 48 | ## Usage Examples |
| 45 | 49 | |
| 46 | _To be added in Phase 1B_ | |
| 50 | _Extracted from README_ | |
| 51 | ||
| 52 | ### Example 1 | |
| 53 | ||
| 54 | ```javascript | |
| 55 | npm i cmake-meson | |
| 56 | ``` | |
| 57 | ||
| 58 | ||
| 47 | 59 | |
| 48 | 60 | ## Semantic Type |
| 49 | 61 |
| … | … | @@ -0,0 +1,26 @@ |
| 1 | { | |
| 2 | "repo": "cmake-msix", | |
| 3 | "timestamp": "2026-01-16T23:56:23.411Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": {} | |
| 7 | }, | |
| 8 | "api": {}, | |
| 9 | "readme": { | |
| 10 | "content": "# cmake-msix\n\nFunctions to simplify the creation of MSIX packages for distributing Windows applications.\n\n## API\n\n#### `find_make_appx`\n\nLocates the `MakeAppx.exe` tool from the Windows SDK, required for building MSIX packages.\n\n```cmake\nfind_make_appx(<result>)\n```\n\n##### `<result>`\nAn output variable where the path to the `MakeAppx.exe` executable will be stored.\n\n#### `add_app_manifest`\n\nGenerates the core `AppxManifest.xml` file, which defines essential metadata for the MSIX package.\n\n```cmake\nadd_appx_manifest(\n <target>\n [DESTINATION <path>]\n NAME <string>\n VERSION <string>\n PUBLISHER <string>\n [DISPLAY_NAME <string>]\n PUBLISHER_DISPLAY_NAME <string>\n DESCRIPTION <string>\n [UNVIRTUALIZED_PATHS <path...>]\n)\n```\n\n##### `<target>`\nThe name of the CMake target to create.\n\n##### `DESTINATION <path>`\nThe output file path for the `AppxManifest.xml`. Defaults to `\"AppxManifest.xml\"` in the build directory.\n\n##### `NAME <string>`\nThe name of the application.\n\n##### `VERSION <stri", | |
| 11 | "sections": [ | |
| 12 | "intro", | |
| 13 | "api", | |
| 14 | "license" | |
| 15 | ], | |
| 16 | "hasApi": true, | |
| 17 | "hasExamples": true, | |
| 18 | "exampleCount": 3, | |
| 19 | "examples": [ | |
| 20 | "##### `<result>`\nAn output variable where the path to the `MakeAppx.exe` executable will be stored.\n\n#### `add_app_manifest`\n\nGenerates the core `AppxManifest.xml` file, which defines essential metadata for the MSIX package.", | |
| 21 | "##### `<target>`\nThe name of the CMake target to create.\n\n##### `DESTINATION <path>`\nThe output file path for the `AppxManifest.xml`. Defaults to `\"AppxManifest.xml\"` in the build directory.\n\n##### `NAME <string>`\nThe name of the application.\n\n##### `VERSION <string>`\nThe semantic version of the application.\n\n##### `PUBLISHER <string>`\nThe publisher of the application.\n\n##### `DISPLAY_NAME <string>`\nThe name displayed to users. Defaults to `\"${NAME}\"`.\n\n##### `PUBLISHER_DISPLAY_NAME <string>`\nThe publisher's display name.\n\n##### `DESCRIPTION <string>`\nA description of the application.\n\n##### `UNVIRTUALIZED_PATHS <path...>`\nA list of paths that should remain unvirtualized within the MSIX package.\n\n#### `add_appx_mapping`\n\nCreates a `Mapping.txt` file that specifies the file structure within the MSIX package.", | |
| 22 | "##### `<target>`\nThe name of the CMake target to create.\n\n##### `DESTINATION <path>`\nThe output file path for the `Mapping.txt`. Defaults to `\"Mapping.txt\"` in the build directory.\n\n##### `ICON <path>`\nPath to the application icon.\n\n##### `TARGET <target>`\nAn existing CMake target representing the core executable of your application.\n\n##### `EXECUTABLE <path>`\nDirect path to the application executable. Use if not providing `TARGET`.\n\n##### `RESOURCES [FILE|DIR <from> <to>]...`\nA list of additional files or directories to include.\n\n###### `FILE <from> <to>`\nCopies a file from `<from>` to `<to>` within the MSIX package.\n\n###### `DIR <from> <to>`\nCopies an entire directory from `<from>` to `<to>` within the MSIX package.\n\n#### `add_msix_package`\n\nThe central function to generate the final MSIX package." | |
| 23 | ] | |
| 24 | }, | |
| 25 | "patterns": [] | |
| 26 | } |
| … | … | @@ -47,11 +47,95 @@ Generates the core `AppxManifest.xml` file, which defines essential metadata for |
| 47 | 47 | |
| 48 | 48 | ## API Documentation |
| 49 | 49 | |
| 50 | _To be enriched in Phase 1B with deep code analysis_ | |
| 50 | _Extracted from README and code analysis_ | |
| 51 | ||
| 52 | ||
| 53 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 54 | ||
| 51 | 55 | |
| 52 | 56 | ## Usage Examples |
| 53 | 57 | |
| 54 | _To be added in Phase 1B_ | |
| 58 | _Extracted from README_ | |
| 59 | ||
| 60 | ### Example 1 | |
| 61 | ||
| 62 | ```javascript | |
| 63 | ##### `<result>` | |
| 64 | An output variable where the path to the `MakeAppx.exe` executable will be stored. | |
| 65 | ||
| 66 | #### `add_app_manifest` | |
| 67 | ||
| 68 | Generates the core `AppxManifest.xml` file, which defines essential metadata for the MSIX package. | |
| 69 | ``` | |
| 70 | ||
| 71 | ### Example 2 | |
| 72 | ||
| 73 | ```javascript | |
| 74 | ##### `<target>` | |
| 75 | The name of the CMake target to create. | |
| 76 | ||
| 77 | ##### `DESTINATION <path>` | |
| 78 | The output file path for the `AppxManifest.xml`. Defaults to `"AppxManifest.xml"` in the build directory. | |
| 79 | ||
| 80 | ##### `NAME <string>` | |
| 81 | The name of the application. | |
| 82 | ||
| 83 | ##### `VERSION <string>` | |
| 84 | The semantic version of the application. | |
| 85 | ||
| 86 | ##### `PUBLISHER <string>` | |
| 87 | The publisher of the application. | |
| 88 | ||
| 89 | ##### `DISPLAY_NAME <string>` | |
| 90 | The name displayed to users. Defaults to `"${NAME}"`. | |
| 91 | ||
| 92 | ##### `PUBLISHER_DISPLAY_NAME <string>` | |
| 93 | The publisher's display name. | |
| 94 | ||
| 95 | ##### `DESCRIPTION <string>` | |
| 96 | A description of the application. | |
| 97 | ||
| 98 | ##### `UNVIRTUALIZED_PATHS <path...>` | |
| 99 | A list of paths that should remain unvirtualized within the MSIX package. | |
| 100 | ||
| 101 | #### `add_appx_mapping` | |
| 102 | ||
| 103 | Creates a `Mapping.txt` file that specifies the file structure within the MSIX package. | |
| 104 | ``` | |
| 105 | ||
| 106 | ### Example 3 | |
| 107 | ||
| 108 | ```javascript | |
| 109 | ##### `<target>` | |
| 110 | The name of the CMake target to create. | |
| 111 | ||
| 112 | ##### `DESTINATION <path>` | |
| 113 | The output file path for the `Mapping.txt`. Defaults to `"Mapping.txt"` in the build directory. | |
| 114 | ||
| 115 | ##### `ICON <path>` | |
| 116 | Path to the application icon. | |
| 117 | ||
| 118 | ##### `TARGET <target>` | |
| 119 | An existing CMake target representing the core executable of your application. | |
| 120 | ||
| 121 | ##### `EXECUTABLE <path>` | |
| 122 | Direct path to the application executable. Use if not providing `TARGET`. | |
| 123 | ||
| 124 | ##### `RESOURCES [FILE|DIR <from> <to>]...` | |
| 125 | A list of additional files or directories to include. | |
| 126 | ||
| 127 | ###### `FILE <from> <to>` | |
| 128 | Copies a file from `<from>` to `<to>` within the MSIX package. | |
| 129 | ||
| 130 | ###### `DIR <from> <to>` | |
| 131 | Copies an entire directory from `<from>` to `<to>` within the MSIX package. | |
| 132 | ||
| 133 | #### `add_msix_package` | |
| 134 | ||
| 135 | The central function to generate the final MSIX package. | |
| 136 | ``` | |
| 137 | ||
| 138 | ||
| 55 | 139 | |
| 56 | 140 | ## Semantic Type |
| 57 | 141 |
| … | … | @@ -0,0 +1,41 @@ |
| 1 | { | |
| 2 | "repo": "db-lock", | |
| 3 | "timestamp": "2026-01-16T23:56:09.164Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "class" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [ | |
| 19 | { | |
| 20 | "name": "DBLock" | |
| 21 | } | |
| 22 | ], | |
| 23 | "functions": [] | |
| 24 | }, | |
| 25 | "readme": { | |
| 26 | "content": "# db-lock\n\nSimple concurrent lock for DB patterns\n\n```\nnpm install db-lock\n```\n\n## Usage\n\n```js\nconst DBLock = require('db-lock')\n\nconst l = new DBLock({\n async enter() {\n return db.transaction()\n },\n async exit(tx) {\n await tx.flush()\n }\n})\n\nconst tx = await l.enter() // opens the tx on first enter\n// ... do stuff\nawait l.exit() // flushes the tx on last exit\n```\n\n## License\n\nApache-2.0\n", | |
| 27 | "sections": [ | |
| 28 | "intro", | |
| 29 | "usage", | |
| 30 | "license" | |
| 31 | ], | |
| 32 | "hasApi": true, | |
| 33 | "hasExamples": true, | |
| 34 | "exampleCount": 2, | |
| 35 | "examples": [ | |
| 36 | "npm install db-lock", | |
| 37 | "const DBLock = require('db-lock')\n\nconst l = new DBLock({\n async enter() {\n return db.transaction()\n },\n async exit(tx) {\n await tx.flush()\n }\n})\n\nconst tx = await l.enter() // opens the tx on first enter\n// ... do stuff\nawait l.exit() // flushes the tx on last exit" | |
| 38 | ] | |
| 39 | }, | |
| 40 | "patterns": [] | |
| 41 | } |
| … | … | @@ -47,11 +47,50 @@ const l = new DBLock({ |
| 47 | 47 | |
| 48 | 48 | ## API Documentation |
| 49 | 49 | |
| 50 | _To be enriched in Phase 1B with deep code analysis_ | |
| 50 | _Extracted from README and code analysis_ | |
| 51 | ||
| 52 | ### Classes | |
| 53 | ||
| 54 | - `DBLock` | |
| 55 | ||
| 56 | ### Exports | |
| 57 | ||
| 58 | - default: `class` | |
| 59 | ||
| 60 | ||
| 61 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 62 | ||
| 51 | 63 | |
| 52 | 64 | ## Usage Examples |
| 53 | 65 | |
| 54 | _To be added in Phase 1B_ | |
| 66 | _Extracted from README_ | |
| 67 | ||
| 68 | ### Example 1 | |
| 69 | ||
| 70 | ```javascript | |
| 71 | npm install db-lock | |
| 72 | ``` | |
| 73 | ||
| 74 | ### Example 2 | |
| 75 | ||
| 76 | ```javascript | |
| 77 | const DBLock = require('db-lock') | |
| 78 | ||
| 79 | const l = new DBLock({ | |
| 80 | async enter() { | |
| 81 | return db.transaction() | |
| 82 | }, | |
| 83 | async exit(tx) { | |
| 84 | await tx.flush() | |
| 85 | } | |
| 86 | }) | |
| 87 | ||
| 88 | const tx = await l.enter() // opens the tx on first enter | |
| 89 | // ... do stuff | |
| 90 | await l.exit() // flushes the tx on last exit | |
| 91 | ``` | |
| 92 | ||
| 93 | ||
| 55 | 94 | |
| 56 | 95 | ## Semantic Type |
| 57 | 96 |
| … | … | @@ -0,0 +1,78 @@ |
| 1 | { | |
| 2 | "repo": "fifofile", | |
| 3 | "timestamp": "2026-01-16T23:56:23.780Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "class" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [ | |
| 19 | { | |
| 20 | "name": "FIFOFile" | |
| 21 | } | |
| 22 | ], | |
| 23 | "functions": [ | |
| 24 | { | |
| 25 | "name": "waitForLock" | |
| 26 | }, | |
| 27 | { | |
| 28 | "name": "writeMessages" | |
| 29 | }, | |
| 30 | { | |
| 31 | "name": "loop" | |
| 32 | }, | |
| 33 | { | |
| 34 | "name": "readMessages" | |
| 35 | }, | |
| 36 | { | |
| 37 | "name": "ontruncate" | |
| 38 | }, | |
| 39 | { | |
| 40 | "name": "loop" | |
| 41 | }, | |
| 42 | { | |
| 43 | "name": "defaultMapWritable" | |
| 44 | }, | |
| 45 | { | |
| 46 | "name": "createMapWritable" | |
| 47 | }, | |
| 48 | { | |
| 49 | "name": "createMapReadable" | |
| 50 | }, | |
| 51 | { | |
| 52 | "name": "dummyFree" | |
| 53 | }, | |
| 54 | { | |
| 55 | "name": "closeSync" | |
| 56 | } | |
| 57 | ] | |
| 58 | }, | |
| 59 | "readme": { | |
| 60 | "content": "# fifofile\n\nUserland FIFO file.\n\n```\nnpm install fifofile\n```\n\n## Usage\n\nTo consume, in any process\n\n```js\nconst FIFOFile = require('fifofile')\n\nfor await (const msg of new FIFOFile('/tmp/my-fifo')) {\n console.log('incoming:', msg)\n}\n```\n\nTo produce, in any process\n\n```js\nconst FIFOFile = require('fifofile')\n\nconst fifo = new FIFOFile('/tmp/my-fifo')\n\nfifo.write(Buffer.from('a msg'))\n```\n\n## License\n\nApache-2.0\n", | |
| 61 | "sections": [ | |
| 62 | "intro", | |
| 63 | "usage", | |
| 64 | "license" | |
| 65 | ], | |
| 66 | "hasApi": true, | |
| 67 | "hasExamples": true, | |
| 68 | "exampleCount": 3, | |
| 69 | "examples": [ | |
| 70 | "npm install fifofile", | |
| 71 | "const FIFOFile = require('fifofile')\n\nfor await (const msg of new FIFOFile('/tmp/my-fifo')) {\n console.log('incoming:', msg)\n}", | |
| 72 | "const FIFOFile = require('fifofile')\n\nconst fifo = new FIFOFile('/tmp/my-fifo')\n\nfifo.write(Buffer.from('a msg'))" | |
| 73 | ] | |
| 74 | }, | |
| 75 | "patterns": [ | |
| 76 | "streaming" | |
| 77 | ] | |
| 78 | } |
| … | … | @@ -55,11 +55,69 @@ for await (const msg of new FIFOFile('/tmp/my-fifo')) { |
| 55 | 55 | |
| 56 | 56 | ## API Documentation |
| 57 | 57 | |
| 58 | _To be enriched in Phase 1B with deep code analysis_ | |
| 58 | _Extracted from README and code analysis_ | |
| 59 | ||
| 60 | ### Classes | |
| 61 | ||
| 62 | - `FIFOFile` | |
| 63 | ||
| 64 | ### Functions | |
| 65 | ||
| 66 | - `waitForLock()` | |
| 67 | - `writeMessages()` | |
| 68 | - `loop()` | |
| 69 | - `readMessages()` | |
| 70 | - `ontruncate()` | |
| 71 | - `loop()` | |
| 72 | - `defaultMapWritable()` | |
| 73 | - `createMapWritable()` | |
| 74 | - `createMapReadable()` | |
| 75 | - `dummyFree()` | |
| 76 | - `closeSync()` | |
| 77 | ||
| 78 | ### Exports | |
| 79 | ||
| 80 | - default: `class` | |
| 81 | ||
| 82 | ||
| 83 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 84 | ||
| 59 | 85 | |
| 60 | 86 | ## Usage Examples |
| 61 | 87 | |
| 62 | _To be added in Phase 1B_ | |
| 88 | _Extracted from README_ | |
| 89 | ||
| 90 | ### Example 1 | |
| 91 | ||
| 92 | ```javascript | |
| 93 | npm install fifofile | |
| 94 | ``` | |
| 95 | ||
| 96 | ### Example 2 | |
| 97 | ||
| 98 | ```javascript | |
| 99 | const FIFOFile = require('fifofile') | |
| 100 | ||
| 101 | for await (const msg of new FIFOFile('/tmp/my-fifo')) { | |
| 102 | console.log('incoming:', msg) | |
| 103 | } | |
| 104 | ``` | |
| 105 | ||
| 106 | ### Example 3 | |
| 107 | ||
| 108 | ```javascript | |
| 109 | const FIFOFile = require('fifofile') | |
| 110 | ||
| 111 | const fifo = new FIFOFile('/tmp/my-fifo') | |
| 112 | ||
| 113 | fifo.write(Buffer.from('a msg')) | |
| 114 | ``` | |
| 115 | ||
| 116 | ||
| 117 | ||
| 118 | ## P2P Patterns | |
| 119 | ||
| 120 | - streaming | |
| 63 | 121 | |
| 64 | 122 | ## Semantic Type |
| 65 | 123 |
| … | … | @@ -0,0 +1,51 @@ |
| 1 | { | |
| 2 | "repo": "git-remote-punch-transport", | |
| 3 | "timestamp": "2026-01-16T23:56:01.171Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [], | |
| 13 | "classes": [], | |
| 14 | "functions": [ | |
| 15 | { | |
| 16 | "name": "list" | |
| 17 | }, | |
| 18 | { | |
| 19 | "name": "listForPush" | |
| 20 | }, | |
| 21 | { | |
| 22 | "name": "push" | |
| 23 | }, | |
| 24 | { | |
| 25 | "name": "fetch" | |
| 26 | } | |
| 27 | ] | |
| 28 | }, | |
| 29 | "readme": { | |
| 30 | "content": "# Git-Remote-Punch transport\n\nGit remote helper for hyperswarm git transport.\n\n``` bash\nnpm install -g https://github.com/holepunchto/git-remote-punch-transport\ngit clone punch://public-key:repository\n```\n\n## Server\n\nThe client of this remote helper depends on the repository server running git-punch-server. This server is responsible for packet negotiation and Git daemon forwarding.\n\nTo start the server, run:\n\n``` bash\n git-punch-server start [--seed=<key-pair-seed>] [--bootstrap=<bootstrap-url>] [--basedir=<directory>]\n # Listening on key: 3f9b09e0831b13e755d4b0af079a5b56f38efed122d561af5069e1e35cf2a1c2\n\n```\n\n## Example\n\n``` bash\n npm install -g https://github.com/holepunchto/git-remote-punch-transport\n cd /tmp\n mkdir test-repository\n cd test-repository\n git init --bare\n touch git-daemon-export-ok\n git-punch-server start --basedir=/tmp\n # Listening on key: <public-key>\n git clone punch://<public-key>/test-repository\n```\n\n", | |
| 31 | "sections": [ | |
| 32 | "intro", | |
| 33 | "server", | |
| 34 | "example" | |
| 35 | ], | |
| 36 | "hasApi": false, | |
| 37 | "hasExamples": true, | |
| 38 | "exampleCount": 2, | |
| 39 | "examples": [ | |
| 40 | "## Server\n\nThe client of this remote helper depends on the repository server running git-punch-server. This server is responsible for packet negotiation and Git daemon forwarding.\n\nTo start the server, run:", | |
| 41 | "## Example" | |
| 42 | ] | |
| 43 | }, | |
| 44 | "patterns": [ | |
| 45 | "peer-discovery", | |
| 46 | "dht-discovery", | |
| 47 | "binary-encoding", | |
| 48 | "cryptography", | |
| 49 | "streaming" | |
| 50 | ] | |
| 51 | } |
| … | … | @@ -61,11 +61,48 @@ To start the server, run: |
| 61 | 61 | |
| 62 | 62 | ## API Documentation |
| 63 | 63 | |
| 64 | _To be enriched in Phase 1B with deep code analysis_ | |
| 64 | _Extracted from code analysis_ | |
| 65 | ||
| 66 | ### Functions | |
| 67 | ||
| 68 | - `list()` | |
| 69 | - `listForPush()` | |
| 70 | - `push()` | |
| 71 | - `fetch()` | |
| 72 | ||
| 73 | ||
| 74 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 75 | ||
| 65 | 76 | |
| 66 | 77 | ## Usage Examples |
| 67 | 78 | |
| 68 | _To be added in Phase 1B_ | |
| 79 | _Extracted from README_ | |
| 80 | ||
| 81 | ### Example 1 | |
| 82 | ||
| 83 | ```javascript | |
| 84 | ## Server | |
| 85 | ||
| 86 | The client of this remote helper depends on the repository server running git-punch-server. This server is responsible for packet negotiation and Git daemon forwarding. | |
| 87 | ||
| 88 | To start the server, run: | |
| 89 | ``` | |
| 90 | ||
| 91 | ### Example 2 | |
| 92 | ||
| 93 | ```javascript | |
| 94 | ## Example | |
| 95 | ``` | |
| 96 | ||
| 97 | ||
| 98 | ||
| 99 | ## P2P Patterns | |
| 100 | ||
| 101 | - peer-discovery | |
| 102 | - dht-discovery | |
| 103 | - binary-encoding | |
| 104 | - cryptography | |
| 105 | - streaming | |
| 69 | 106 | |
| 70 | 107 | ## Semantic Type |
| 71 | 108 |
| … | … | @@ -0,0 +1,57 @@ |
| 1 | { | |
| 2 | "repo": "hyper-instrument", | |
| 3 | "timestamp": "2026-01-16T23:56:24.154Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "HyperInstrumentation" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [ | |
| 19 | { | |
| 20 | "name": "HyperInstrumentation" | |
| 21 | } | |
| 22 | ], | |
| 23 | "functions": [ | |
| 24 | { | |
| 25 | "name": "registerPackageVersion" | |
| 26 | }, | |
| 27 | { | |
| 28 | "name": "registerModuleVersions" | |
| 29 | }, | |
| 30 | { | |
| 31 | "name": "registerProcessId" | |
| 32 | } | |
| 33 | ] | |
| 34 | }, | |
| 35 | "readme": { | |
| 36 | "content": "# Hyper Instrument\n\nInstrument services in the Hypercore ecosystem.\n\nSupports both the Node.js and [bare](https://github.com/holepunchto/bare) runtimes.\n\nSupports the metrics of\n\n- [hypercore-stats](https://github.com/holepunchto/hypercore-stats)\n- [hyperswarm-stats](https://github.com/holepunchto/hyperswarm-stats)\n- [hyperdht-stats](https://github.com/holepunchto/hyperdht-stats)\n\nThe service registers itself with a [DHT Prometheus](https://gitlab.com/dcent-tech/dht-prometheus) instance, which scrapes the metrics at regular intervals.\n\nA [Grafana dashboard](https://grafana.com/grafana/dashboards/22313-hypercore-hyperswarm/) visualising all metrics is available ([source](https://github.com/holepunchto/Grafana-hypercore-stats)).\n\n## Install\n\n```\nnpm i hyper-instrument\n```\n\n## Versions\n\n- V1 works for Hypercore V10 and Corestore V6. It has a different API, so make sure to look at the V1 README.\n- V2 works for Hypercore v11 and Corestore v7\n\n## Usage\n\n```\nconst HyperInstrument = require('h", | |
| 37 | "sections": [ | |
| 38 | "intro", | |
| 39 | "install", | |
| 40 | "versions", | |
| 41 | "usage", | |
| 42 | "api" | |
| 43 | ], | |
| 44 | "hasApi": true, | |
| 45 | "hasExamples": true, | |
| 46 | "exampleCount": 2, | |
| 47 | "examples": [ | |
| 48 | "npm i hyper-instrument", | |
| 49 | "const HyperInstrument = require('hyper-instrument')\nconst Hyperdht = require('hyperdht')\nconst { version } = require('./package.json') // version of your own module\n\nconst scraperPublicKey = // Public key of the metrics scraper\nconst scraperSecret = // Secret of the metrics scraper\nconst prometheusAlias = // unique alias identifying this instance\nconst prometheusServiceName = // the name of the service\n\nconst dht = new Hyperdht()\n\nconst instrumentation = new HyperInstrument({\n dht,\n scraperPublicKey,\n scraperSecret,\n prometheusAlias,\n prometheusServiceName,\n version\n})\n\n// You can add additional metrics\nnew instrumentation.promClient.Gauge({\n name: 'my_custom_metric',\n help: 'my custom metric help',\n collect () {\n return 1 // dummy metric\n }\n})\n\n// If you want to see instrumentation-related logs:\ninstrumentation.registerLogger()\n\n// start the scraping\nawait instrumentation.ready()" | |
| 50 | ] | |
| 51 | }, | |
| 52 | "patterns": [ | |
| 53 | "append-only-log", | |
| 54 | "peer-discovery", | |
| 55 | "dht-discovery" | |
| 56 | ] | |
| 57 | } |
| … | … | @@ -69,11 +69,82 @@ npm i hyper-instrument |
| 69 | 69 | |
| 70 | 70 | ## API Documentation |
| 71 | 71 | |
| 72 | _To be enriched in Phase 1B with deep code analysis_ | |
| 72 | _Extracted from README and code analysis_ | |
| 73 | ||
| 74 | ### Classes | |
| 75 | ||
| 76 | - `HyperInstrumentation` | |
| 77 | ||
| 78 | ### Functions | |
| 79 | ||
| 80 | - `registerPackageVersion()` | |
| 81 | - `registerModuleVersions()` | |
| 82 | - `registerProcessId()` | |
| 83 | ||
| 84 | ### Exports | |
| 85 | ||
| 86 | - default: `HyperInstrumentation` | |
| 87 | ||
| 88 | ||
| 89 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 90 | ||
| 73 | 91 | |
| 74 | 92 | ## Usage Examples |
| 75 | 93 | |
| 76 | _To be added in Phase 1B_ | |
| 94 | _Extracted from README_ | |
| 95 | ||
| 96 | ### Example 1 | |
| 97 | ||
| 98 | ```javascript | |
| 99 | npm i hyper-instrument | |
| 100 | ``` | |
| 101 | ||
| 102 | ### Example 2 | |
| 103 | ||
| 104 | ```javascript | |
| 105 | const HyperInstrument = require('hyper-instrument') | |
| 106 | const Hyperdht = require('hyperdht') | |
| 107 | const { version } = require('./package.json') // version of your own module | |
| 108 | ||
| 109 | const scraperPublicKey = // Public key of the metrics scraper | |
| 110 | const scraperSecret = // Secret of the metrics scraper | |
| 111 | const prometheusAlias = // unique alias identifying this instance | |
| 112 | const prometheusServiceName = // the name of the service | |
| 113 | ||
| 114 | const dht = new Hyperdht() | |
| 115 | ||
| 116 | const instrumentation = new HyperInstrument({ | |
| 117 | dht, | |
| 118 | scraperPublicKey, | |
| 119 | scraperSecret, | |
| 120 | prometheusAlias, | |
| 121 | prometheusServiceName, | |
| 122 | version | |
| 123 | }) | |
| 124 | ||
| 125 | // You can add additional metrics | |
| 126 | new instrumentation.promClient.Gauge({ | |
| 127 | name: 'my_custom_metric', | |
| 128 | help: 'my custom metric help', | |
| 129 | collect () { | |
| 130 | return 1 // dummy metric | |
| 131 | } | |
| 132 | }) | |
| 133 | ||
| 134 | // If you want to see instrumentation-related logs: | |
| 135 | instrumentation.registerLogger() | |
| 136 | ||
| 137 | // start the scraping | |
| 138 | await instrumentation.ready() | |
| 139 | ``` | |
| 140 | ||
| 141 | ||
| 142 | ||
| 143 | ## P2P Patterns | |
| 144 | ||
| 145 | - append-only-log | |
| 146 | - peer-discovery | |
| 147 | - dht-discovery | |
| 77 | 148 | |
| 78 | 149 | ## Semantic Type |
| 79 | 150 |
| … | … | @@ -0,0 +1,65 @@ |
| 1 | { | |
| 2 | "repo": "hyperbee-diff-stream", | |
| 3 | "timestamp": "2026-01-16T23:56:39.030Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "BeeDiffStream" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [ | |
| 19 | { | |
| 20 | "name": "BeeDiffStream" | |
| 21 | } | |
| 22 | ], | |
| 23 | "functions": [ | |
| 24 | { | |
| 25 | "name": "getKey" | |
| 26 | }, | |
| 27 | { | |
| 28 | "name": "areEqual" | |
| 29 | }, | |
| 30 | { | |
| 31 | "name": "unionCompare" | |
| 32 | }, | |
| 33 | { | |
| 34 | "name": "decodeEntry" | |
| 35 | }, | |
| 36 | { | |
| 37 | "name": "createUnionMap" | |
| 38 | }, | |
| 39 | { | |
| 40 | "name": "unionMap" | |
| 41 | }, | |
| 42 | { | |
| 43 | "name": "encodeKey" | |
| 44 | } | |
| 45 | ] | |
| 46 | }, | |
| 47 | "readme": { | |
| 48 | "content": "# Hyperbee Diff Stream\n\nGet the diff stream between two snapshots of a hyperbee. Ideal for autobase views.\n\nFor example, when reconnecting after having worked locally for a while,\nit can get the diff stream between a snapshot from just before and from just after the autobase linearisation.\nEven if several peers (including you in your local fork) made a lot of changes to a particular key, the diff stream will still yield only a single change for it.\n\n## Install\n`npm i hyperbee-diff-stream`\n\n## Versioning and Compatibility\nV1 uses features introduced in Hyperbee ^2.5.0, Hypercore ^10.8.1 and autobase^6.0.0\n\nV2 works with Hypercore V11, Autobase V7 and Corestore V7.\n\n## Usage\nSee [example.js](./example.js)\n\n## API\n\n#### `const diffStream = new BeeDiffStream(leftSnapshot, rightSnapshot, [options])`\n\nMake a new `BeeDiffStream` instance, which is the stream of changes to get from the state of `leftSnapshot` to that of `rightSnapshot`.\n\nThe stream is ordered by key.\n\n`leftSnapshot` and `right", | |
| 49 | "sections": [ | |
| 50 | "intro", | |
| 51 | "install", | |
| 52 | "versioning and compatibility", | |
| 53 | "usage", | |
| 54 | "api" | |
| 55 | ], | |
| 56 | "hasApi": true, | |
| 57 | "hasExamples": true, | |
| 58 | "exampleCount": 2, | |
| 59 | "examples": [ | |
| 60 | "{\n gt: 'only consider keys > than this',\n gte: 'only consider keys >= than this',\n lt: 'only consider keys < than this',\n lte: 'only consider keys <= than this',\n keyEncoding: 'utf-8', // a key encoding\n valueEncoding: 'json' // a value encoding,\n closeSnapshots: true // set to false if you wish to use the passed-in snapshots after the diffStream is fully yielded.\n}", | |
| 61 | "{\n left: { seq, key, value },\n right: { seq, key, value }\n}" | |
| 62 | ] | |
| 63 | }, | |
| 64 | "patterns": [] | |
| 65 | } |
| … | … | @@ -53,11 +53,58 @@ See [example.js](./example.js) |
| 53 | 53 | |
| 54 | 54 | ## API Documentation |
| 55 | 55 | |
| 56 | _To be enriched in Phase 1B with deep code analysis_ | |
| 56 | _Extracted from README and code analysis_ | |
| 57 | ||
| 58 | ### Classes | |
| 59 | ||
| 60 | - `BeeDiffStream` | |
| 61 | ||
| 62 | ### Functions | |
| 63 | ||
| 64 | - `getKey()` | |
| 65 | - `areEqual()` | |
| 66 | - `unionCompare()` | |
| 67 | - `decodeEntry()` | |
| 68 | - `createUnionMap()` | |
| 69 | - `unionMap()` | |
| 70 | - `encodeKey()` | |
| 71 | ||
| 72 | ### Exports | |
| 73 | ||
| 74 | - default: `BeeDiffStream` | |
| 75 | ||
| 76 | ||
| 77 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 78 | ||
| 57 | 79 | |
| 58 | 80 | ## Usage Examples |
| 59 | 81 | |
| 60 | _To be added in Phase 1B_ | |
| 82 | _Extracted from README_ | |
| 83 | ||
| 84 | ### Example 1 | |
| 85 | ||
| 86 | ```javascript | |
| 87 | { | |
| 88 | gt: 'only consider keys > than this', | |
| 89 | gte: 'only consider keys >= than this', | |
| 90 | lt: 'only consider keys < than this', | |
| 91 | lte: 'only consider keys <= than this', | |
| 92 | keyEncoding: 'utf-8', // a key encoding | |
| 93 | valueEncoding: 'json' // a value encoding, | |
| 94 | closeSnapshots: true // set to false if you wish to use the passed-in snapshots after the diffStream is fully yielded. | |
| 95 | } | |
| 96 | ``` | |
| 97 | ||
| 98 | ### Example 2 | |
| 99 | ||
| 100 | ```javascript | |
| 101 | { | |
| 102 | left: { seq, key, value }, | |
| 103 | right: { seq, key, value } | |
| 104 | } | |
| 105 | ``` | |
| 106 | ||
| 107 | ||
| 61 | 108 | |
| 62 | 109 | ## Semantic Type |
| 63 | 110 |
| … | … | @@ -0,0 +1,67 @@ |
| 1 | { | |
| 2 | "repo": "hyperbee2", | |
| 3 | "timestamp": "2026-01-16T23:56:01.556Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "Hyperbee" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [ | |
| 19 | { | |
| 20 | "name": "Hyperbee" | |
| 21 | } | |
| 22 | ], | |
| 23 | "functions": [ | |
| 24 | { | |
| 25 | "name": "noop" | |
| 26 | }, | |
| 27 | { | |
| 28 | "name": "inflateKey" | |
| 29 | }, | |
| 30 | { | |
| 31 | "name": "inflateKeyDelta" | |
| 32 | }, | |
| 33 | { | |
| 34 | "name": "inflateKeyCohort" | |
| 35 | }, | |
| 36 | { | |
| 37 | "name": "inflateChild" | |
| 38 | }, | |
| 39 | { | |
| 40 | "name": "inflateChildDelta" | |
| 41 | }, | |
| 42 | { | |
| 43 | "name": "inflateChildCohort" | |
| 44 | } | |
| 45 | ] | |
| 46 | }, | |
| 47 | "readme": { | |
| 48 | "content": "# hyperbee2\n\n```\nnpm install hyperbee2\n```\n\nNext major version for [hyperbee](https://github.com/holepunchto/hyperbee).\nWill be merged in there and released a new major when fully done.\n\n## Usage\n\n```js\nconst Hyperbee2 = require('hyperbee2')\n\nconst db = new Hyperbee2(store)\n\n// see tests for more\n```\n\n## License\n\nApache-2.0\n", | |
| 49 | "sections": [ | |
| 50 | "intro", | |
| 51 | "usage", | |
| 52 | "license" | |
| 53 | ], | |
| 54 | "hasApi": true, | |
| 55 | "hasExamples": true, | |
| 56 | "exampleCount": 2, | |
| 57 | "examples": [ | |
| 58 | "npm install hyperbee2", | |
| 59 | "const Hyperbee2 = require('hyperbee2')\n\nconst db = new Hyperbee2(store)\n\n// see tests for more" | |
| 60 | ] | |
| 61 | }, | |
| 62 | "patterns": [ | |
| 63 | "append-only-log", | |
| 64 | "binary-encoding", | |
| 65 | "streaming" | |
| 66 | ] | |
| 67 | } |
| … | … | @@ -57,11 +57,57 @@ const db = new Hyperbee2(store) |
| 57 | 57 | |
| 58 | 58 | ## API Documentation |
| 59 | 59 | |
| 60 | _To be enriched in Phase 1B with deep code analysis_ | |
| 60 | _Extracted from README and code analysis_ | |
| 61 | ||
| 62 | ### Classes | |
| 63 | ||
| 64 | - `Hyperbee` | |
| 65 | ||
| 66 | ### Functions | |
| 67 | ||
| 68 | - `noop()` | |
| 69 | - `inflateKey()` | |
| 70 | - `inflateKeyDelta()` | |
| 71 | - `inflateKeyCohort()` | |
| 72 | - `inflateChild()` | |
| 73 | - `inflateChildDelta()` | |
| 74 | - `inflateChildCohort()` | |
| 75 | ||
| 76 | ### Exports | |
| 77 | ||
| 78 | - default: `Hyperbee` | |
| 79 | ||
| 80 | ||
| 81 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 82 | ||
| 61 | 83 | |
| 62 | 84 | ## Usage Examples |
| 63 | 85 | |
| 64 | _To be added in Phase 1B_ | |
| 86 | _Extracted from README_ | |
| 87 | ||
| 88 | ### Example 1 | |
| 89 | ||
| 90 | ```javascript | |
| 91 | npm install hyperbee2 | |
| 92 | ``` | |
| 93 | ||
| 94 | ### Example 2 | |
| 95 | ||
| 96 | ```javascript | |
| 97 | const Hyperbee2 = require('hyperbee2') | |
| 98 | ||
| 99 | const db = new Hyperbee2(store) | |
| 100 | ||
| 101 | // see tests for more | |
| 102 | ``` | |
| 103 | ||
| 104 | ||
| 105 | ||
| 106 | ## P2P Patterns | |
| 107 | ||
| 108 | - append-only-log | |
| 109 | - binary-encoding | |
| 110 | - streaming | |
| 65 | 111 | |
| 66 | 112 | ## Semantic Type |
| 67 | 113 |
| … | … | @@ -0,0 +1,84 @@ |
| 1 | { | |
| 2 | "repo": "hypercore-blob-server", | |
| 3 | "timestamp": "2026-01-16T23:56:09.531Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "class" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [ | |
| 19 | { | |
| 20 | "name": "BlobCache" | |
| 21 | }, | |
| 22 | { | |
| 23 | "name": "BlobRef" | |
| 24 | }, | |
| 25 | { | |
| 26 | "name": "BlobDownloader" | |
| 27 | }, | |
| 28 | { | |
| 29 | "name": "BlobMonitor" | |
| 30 | }, | |
| 31 | { | |
| 32 | "name": "HypercoreBlobServer" | |
| 33 | } | |
| 34 | ], | |
| 35 | "functions": [ | |
| 36 | { | |
| 37 | "name": "teardown" | |
| 38 | }, | |
| 39 | { | |
| 40 | "name": "onclose" | |
| 41 | }, | |
| 42 | { | |
| 43 | "name": "toInfo" | |
| 44 | }, | |
| 45 | { | |
| 46 | "name": "decodeRequest" | |
| 47 | }, | |
| 48 | { | |
| 49 | "name": "defaultResolve" | |
| 50 | }, | |
| 51 | { | |
| 52 | "name": "parseRange" | |
| 53 | }, | |
| 54 | { | |
| 55 | "name": "isWithinRange" | |
| 56 | }, | |
| 57 | { | |
| 58 | "name": "noop" | |
| 59 | } | |
| 60 | ] | |
| 61 | }, | |
| 62 | "readme": { | |
| 63 | "content": "# hypercore-blob-server\n\nHTTP server for streaming hypercore blobs\n\n```\nnpm install hypercore-blob-server\n```\n\nMore flexible successor to [serve-drive](https://github.com/holepunchto/serve-drive)\n\n## Usage\n\n``` js\nconst BlobServer = require('hypercore-blob-server')\n\n// store should be a corestore\nconst server = new BlobServer(store, options)\n\nawait server.listen()\n\n// To get a link to a blob to\nconst link = server.getLink(key, {\n blob: blobId,\n type: 'image/jpeg'\n})\n\n// supports drive lookups also\nconst link = server.getLink(key, {\n filename: '/foo.js'\n})\n```\n\n## API\n\n#### `const server = new BlobServer(store, options)`\n\n`store` - Corestore instance\n\n`options`:\n```js\n{\n port // defaults to 49833,\n host // defaults to '127.0.0.1',\n token // server token\n protocol // 'http' | 'https'\n}\n```\n\n#### `await server.listen()`\nListen to requests\n\n#### `const link = server.getLink(key, options)`\n\nGenerates the url used to fetch data\n\n`key` - hypercore or hyperdrive key\n\n`options`:\n```js\n{\n", | |
| 64 | "sections": [ | |
| 65 | "intro", | |
| 66 | "usage", | |
| 67 | "api", | |
| 68 | "license" | |
| 69 | ], | |
| 70 | "hasApi": true, | |
| 71 | "hasExamples": true, | |
| 72 | "exampleCount": 4, | |
| 73 | "examples": [ | |
| 74 | "npm install hypercore-blob-server", | |
| 75 | "## API\n\n#### `const server = new BlobServer(store, options)`\n\n`store` - Corestore instance\n\n`options`:", | |
| 76 | "#### `await server.listen()`\nListen to requests\n\n#### `const link = server.getLink(key, options)`\n\nGenerates the url used to fetch data\n\n`key` - hypercore or hyperdrive key\n\n`options`:" | |
| 77 | ] | |
| 78 | }, | |
| 79 | "patterns": [ | |
| 80 | "append-only-log", | |
| 81 | "binary-encoding", | |
| 82 | "streaming" | |
| 83 | ] | |
| 84 | } |
| … | … | @@ -66,11 +66,79 @@ await server.listen() |
| 66 | 66 | |
| 67 | 67 | ## API Documentation |
| 68 | 68 | |
| 69 | _To be enriched in Phase 1B with deep code analysis_ | |
| 69 | _Extracted from README and code analysis_ | |
| 70 | ||
| 71 | ### Classes | |
| 72 | ||
| 73 | - `BlobCache` | |
| 74 | - `BlobRef` | |
| 75 | - `BlobDownloader` | |
| 76 | - `BlobMonitor` | |
| 77 | - `HypercoreBlobServer` | |
| 78 | ||
| 79 | ### Functions | |
| 80 | ||
| 81 | - `teardown()` | |
| 82 | - `onclose()` | |
| 83 | - `toInfo()` | |
| 84 | - `decodeRequest()` | |
| 85 | - `defaultResolve()` | |
| 86 | - `parseRange()` | |
| 87 | - `isWithinRange()` | |
| 88 | - `noop()` | |
| 89 | ||
| 90 | ### Exports | |
| 91 | ||
| 92 | - default: `class` | |
| 93 | ||
| 94 | ||
| 95 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 96 | ||
| 70 | 97 | |
| 71 | 98 | ## Usage Examples |
| 72 | 99 | |
| 73 | _To be added in Phase 1B_ | |
| 100 | _Extracted from README_ | |
| 101 | ||
| 102 | ### Example 1 | |
| 103 | ||
| 104 | ```javascript | |
| 105 | npm install hypercore-blob-server | |
| 106 | ``` | |
| 107 | ||
| 108 | ### Example 2 | |
| 109 | ||
| 110 | ```javascript | |
| 111 | ## API | |
| 112 | ||
| 113 | #### `const server = new BlobServer(store, options)` | |
| 114 | ||
| 115 | `store` - Corestore instance | |
| 116 | ||
| 117 | `options`: | |
| 118 | ``` | |
| 119 | ||
| 120 | ### Example 3 | |
| 121 | ||
| 122 | ```javascript | |
| 123 | #### `await server.listen()` | |
| 124 | Listen to requests | |
| 125 | ||
| 126 | #### `const link = server.getLink(key, options)` | |
| 127 | ||
| 128 | Generates the url used to fetch data | |
| 129 | ||
| 130 | `key` - hypercore or hyperdrive key | |
| 131 | ||
| 132 | `options`: | |
| 133 | ``` | |
| 134 | ||
| 135 | ||
| 136 | ||
| 137 | ## P2P Patterns | |
| 138 | ||
| 139 | - append-only-log | |
| 140 | - binary-encoding | |
| 141 | - streaming | |
| 74 | 142 | |
| 75 | 143 | ## Semantic Type |
| 76 | 144 |
| … | … | @@ -0,0 +1,48 @@ |
| 1 | { | |
| 2 | "repo": "hypercore-id-encoding", | |
| 3 | "timestamp": "2026-01-16T23:56:39.407Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [], | |
| 13 | "classes": [], | |
| 14 | "functions": [ | |
| 15 | { | |
| 16 | "name": "encode" | |
| 17 | }, | |
| 18 | { | |
| 19 | "name": "decode" | |
| 20 | }, | |
| 21 | { | |
| 22 | "name": "normalize" | |
| 23 | }, | |
| 24 | { | |
| 25 | "name": "isValid" | |
| 26 | } | |
| 27 | ] | |
| 28 | }, | |
| 29 | "readme": { | |
| 30 | "content": "# hypercore-id-encoding\n\nEncodes Hypercore keys into z-base32 ids, and decodes both hex/z-base32 strings.\n\n```\nnpm install hypercore-id-encoding\n```\n\n## Usage\n\n```js\nconst { encode, decode, normalize } = require('hypercore-id-encoding')\n\nconst id = encode(core.key) // (z-base32 String)\nconst hexEncoded = core.key.toString('hex')\n\nconst core = new Hypercore(ram, decode(id))\nconst core2 = new Hypercore(ram, decode(hexEncoded)) // Will also work with hex\n\nconst id2 = normalize(id)\nconst id3 = normalize(hexEncoded)\n```\n\n## API\n\n#### `const id = encode(hypercoreKey)`\n\nEncodes a 32-byte Hypercore key into a z-base32 id.\n\n`hypercoreKey` must be a Buffer or an ArrayBuffer.\n\n#### `const buf = decode(hypercoreId)`\n\nDecodes an id or pear link into a Hypercore key.\n\nIf `hypercoreId` is a 52-character String, it will be decoded as z-base32.\n\nIf `hypercoreId` is a 64-character String, it will be decoded as hex.\n\nIf `hypercoreId` is already a Buffer and is a valid id, it will be returned as-is.\n\n####", | |
| 31 | "sections": [ | |
| 32 | "intro", | |
| 33 | "usage", | |
| 34 | "api", | |
| 35 | "license" | |
| 36 | ], | |
| 37 | "hasApi": true, | |
| 38 | "hasExamples": true, | |
| 39 | "exampleCount": 2, | |
| 40 | "examples": [ | |
| 41 | "npm install hypercore-id-encoding", | |
| 42 | "const { encode, decode, normalize } = require('hypercore-id-encoding')\n\nconst id = encode(core.key) // (z-base32 String)\nconst hexEncoded = core.key.toString('hex')\n\nconst core = new Hypercore(ram, decode(id))\nconst core2 = new Hypercore(ram, decode(hexEncoded)) // Will also work with hex\n\nconst id2 = normalize(id)\nconst id3 = normalize(hexEncoded)" | |
| 43 | ] | |
| 44 | }, | |
| 45 | "patterns": [ | |
| 46 | "append-only-log" | |
| 47 | ] | |
| 48 | } |
| … | … | @@ -52,11 +52,49 @@ const id2 = normalize(id) |
| 52 | 52 | |
| 53 | 53 | ## API Documentation |
| 54 | 54 | |
| 55 | _To be enriched in Phase 1B with deep code analysis_ | |
| 55 | _Extracted from README and code analysis_ | |
| 56 | ||
| 57 | ### Functions | |
| 58 | ||
| 59 | - `encode()` | |
| 60 | - `decode()` | |
| 61 | - `normalize()` | |
| 62 | - `isValid()` | |
| 63 | ||
| 64 | ||
| 65 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 66 | ||
| 56 | 67 | |
| 57 | 68 | ## Usage Examples |
| 58 | 69 | |
| 59 | _To be added in Phase 1B_ | |
| 70 | _Extracted from README_ | |
| 71 | ||
| 72 | ### Example 1 | |
| 73 | ||
| 74 | ```javascript | |
| 75 | npm install hypercore-id-encoding | |
| 76 | ``` | |
| 77 | ||
| 78 | ### Example 2 | |
| 79 | ||
| 80 | ```javascript | |
| 81 | const { encode, decode, normalize } = require('hypercore-id-encoding') | |
| 82 | ||
| 83 | const id = encode(core.key) // (z-base32 String) | |
| 84 | const hexEncoded = core.key.toString('hex') | |
| 85 | ||
| 86 | const core = new Hypercore(ram, decode(id)) | |
| 87 | const core2 = new Hypercore(ram, decode(hexEncoded)) // Will also work with hex | |
| 88 | ||
| 89 | const id2 = normalize(id) | |
| 90 | const id3 = normalize(hexEncoded) | |
| 91 | ``` | |
| 92 | ||
| 93 | ||
| 94 | ||
| 95 | ## P2P Patterns | |
| 96 | ||
| 97 | - append-only-log | |
| 60 | 98 | |
| 61 | 99 | ## Semantic Type |
| 62 | 100 |
| … | … | @@ -0,0 +1,47 @@ |
| 1 | { | |
| 2 | "repo": "hypercore-logger", | |
| 3 | "timestamp": "2026-01-16T23:56:41.124Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "class" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [ | |
| 19 | { | |
| 20 | "name": "HypercoreLogger" | |
| 21 | } | |
| 22 | ], | |
| 23 | "functions": [] | |
| 24 | }, | |
| 25 | "readme": { | |
| 26 | "content": "# hypercore-logger\n\nDistributed logger\n\n```\nnpm install hypercore-logger\n```\n\n## Usage\n\n``` js\nconst Logger = require('hypercore-logger')\n\n// pass backing hypercore\nconst log = new Logger(core)\n\n// add a log message\nawait log.log({ hello: 'world' })\n```\n\nSetup swarming with Hyperswarm on the core and somewhere else\n\n```js\nconst log = new Logger(core)\n\nfor await (const { timestamp, stats, message } of log.tail()) {\n console.log(timestamp, stats, message)\n}\n```\n\n## API\n\n### `Logger`\n\n#### `const log = new Logger(core)`\n\nCreate a new logger backed by a [Hypercore](https://github.com/holepunchto/hypercore) (`core`).\n\n#### `log.discoveryKey`\n\nThe [`discoverKey`](https://github.com/holepunchto/hypercore#corediscoverykey) of the Hypercore backing the log.\n\n#### `log.key`\n\nThe [`key`](https://github.com/holepunchto/hypercore#corekey) of the Hypercore backing the log.\n\n#### `await log.ready()`\n\nWait for the log to fully open.\n\n#### `await log.log(...msg)`\n\nLog the `msg` arguments as a string r", | |
| 27 | "sections": [ | |
| 28 | "intro", | |
| 29 | "usage", | |
| 30 | "api", | |
| 31 | "cli", | |
| 32 | "license" | |
| 33 | ], | |
| 34 | "hasApi": true, | |
| 35 | "hasExamples": true, | |
| 36 | "exampleCount": 7, | |
| 37 | "examples": [ | |
| 38 | "npm install hypercore-logger", | |
| 39 | "Setup swarming with Hyperswarm on the core and somewhere else", | |
| 40 | "## API\n\n### `Logger`\n\n#### `const log = new Logger(core)`\n\nCreate a new logger backed by a [Hypercore](https://github.com/holepunchto/hypercore) (`core`).\n\n#### `log.discoveryKey`\n\nThe [`discoverKey`](https://github.com/holepunchto/hypercore#corediscoverykey) of the Hypercore backing the log.\n\n#### `log.key`\n\nThe [`key`](https://github.com/holepunchto/hypercore#corekey) of the Hypercore backing the log.\n\n#### `await log.ready()`\n\nWait for the log to fully open.\n\n#### `await log.log(...msg)`\n\nLog the `msg` arguments as a string representation intended for debugging, like `console.log()`'s output.\n\nIn addition to the string representation, metadata is automatically added to each log. Each appended to the backing Hypercore will look like:" | |
| 41 | ] | |
| 42 | }, | |
| 43 | "patterns": [ | |
| 44 | "append-only-log", | |
| 45 | "peer-discovery" | |
| 46 | ] | |
| 47 | } |
| … | … | @@ -61,11 +61,72 @@ await log.log({ hello: 'world' }) |
| 61 | 61 | |
| 62 | 62 | ## API Documentation |
| 63 | 63 | |
| 64 | _To be enriched in Phase 1B with deep code analysis_ | |
| 64 | _Extracted from README and code analysis_ | |
| 65 | ||
| 66 | ### Classes | |
| 67 | ||
| 68 | - `HypercoreLogger` | |
| 69 | ||
| 70 | ### Exports | |
| 71 | ||
| 72 | - default: `class` | |
| 73 | ||
| 74 | ||
| 75 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 76 | ||
| 65 | 77 | |
| 66 | 78 | ## Usage Examples |
| 67 | 79 | |
| 68 | _To be added in Phase 1B_ | |
| 80 | _Extracted from README_ | |
| 81 | ||
| 82 | ### Example 1 | |
| 83 | ||
| 84 | ```javascript | |
| 85 | npm install hypercore-logger | |
| 86 | ``` | |
| 87 | ||
| 88 | ### Example 2 | |
| 89 | ||
| 90 | ```javascript | |
| 91 | Setup swarming with Hyperswarm on the core and somewhere else | |
| 92 | ``` | |
| 93 | ||
| 94 | ### Example 3 | |
| 95 | ||
| 96 | ```javascript | |
| 97 | ## API | |
| 98 | ||
| 99 | ### `Logger` | |
| 100 | ||
| 101 | #### `const log = new Logger(core)` | |
| 102 | ||
| 103 | Create a new logger backed by a [Hypercore](https://github.com/holepunchto/hypercore) (`core`). | |
| 104 | ||
| 105 | #### `log.discoveryKey` | |
| 106 | ||
| 107 | The [`discoverKey`](https://github.com/holepunchto/hypercore#corediscoverykey) of the Hypercore backing the log. | |
| 108 | ||
| 109 | #### `log.key` | |
| 110 | ||
| 111 | The [`key`](https://github.com/holepunchto/hypercore#corekey) of the Hypercore backing the log. | |
| 112 | ||
| 113 | #### `await log.ready()` | |
| 114 | ||
| 115 | Wait for the log to fully open. | |
| 116 | ||
| 117 | #### `await log.log(...msg)` | |
| 118 | ||
| 119 | Log the `msg` arguments as a string representation intended for debugging, like `console.log()`'s output. | |
| 120 | ||
| 121 | In addition to the string representation, metadata is automatically added to each log. Each appended to the backing Hypercore will look like: | |
| 122 | ``` | |
| 123 | ||
| 124 | ||
| 125 | ||
| 126 | ## P2P Patterns | |
| 127 | ||
| 128 | - append-only-log | |
| 129 | - peer-discovery | |
| 69 | 130 | |
| 70 | 131 | ## Semantic Type |
| 71 | 132 |
| … | … | @@ -0,0 +1,80 @@ |
| 1 | { | |
| 2 | "repo": "hypercore-storage", | |
| 3 | "timestamp": "2026-01-16T23:55:45.520Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "CorestoreStorage" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [ | |
| 19 | { | |
| 20 | "name": "Atom" | |
| 21 | }, | |
| 22 | { | |
| 23 | "name": "HypercoreStorage" | |
| 24 | }, | |
| 25 | { | |
| 26 | "name": "CorestoreStorage" | |
| 27 | } | |
| 28 | ], | |
| 29 | "functions": [ | |
| 30 | { | |
| 31 | "name": "initStoreHead" | |
| 32 | }, | |
| 33 | { | |
| 34 | "name": "getBatch" | |
| 35 | }, | |
| 36 | { | |
| 37 | "name": "isCorestoreStorage" | |
| 38 | }, | |
| 39 | { | |
| 40 | "name": "createColumnFamily" | |
| 41 | }, | |
| 42 | { | |
| 43 | "name": "tmpFixStorage" | |
| 44 | }, | |
| 45 | { | |
| 46 | "name": "exportData" | |
| 47 | }, | |
| 48 | { | |
| 49 | "name": "toArray" | |
| 50 | }, | |
| 51 | { | |
| 52 | "name": "noop" | |
| 53 | }, | |
| 54 | { | |
| 55 | "name": "getInfoFromBatch" | |
| 56 | } | |
| 57 | ] | |
| 58 | }, | |
| 59 | "readme": { | |
| 60 | "content": "# hypercore-storage\n\nThe storage engine for Hypercore. Built on RocksDB.\n\n```\nnpm install hypercore-storage\n```\n\n## API\n\nThe following API is what Hypercore 11 binds to to do I/O.\n\n```js\nconst Storage = require('hypercore-storage')\n```\n\n#### `store = new Storage(dbOrPath)`\n\nMake a new storage engine.\n\n#### `core = await store.createCore({ key, discoveyKey, manifest?, keyPair?, encryptionKey?, userData? })`\n\nCreate a new core, returns a storage instance for that core.\n\n#### `core = await store.resumeCore(discoveryKey)`\n\nResume a previously make core. If it doesn't exist it returns `null`.\n\n#### `atom = store.createAtom()`\n\nPrimitive for making atomic batches across ops. See below for `core.atomize` on how to use it.\nWhen you wanna flush your changes to the underlying storage, use `await atom.flush()`.\n\nInternally to \"listen\" for when that happens you can add an sync hook with `atom.onflush(fn)`\n\n#### `bool = await store.hasCore(discoveryKey)`\n\nCheck if a core exists.\n\n#### `stream = sto", | |
| 61 | "sections": [ | |
| 62 | "intro", | |
| 63 | "api", | |
| 64 | "license" | |
| 65 | ], | |
| 66 | "hasApi": true, | |
| 67 | "hasExamples": true, | |
| 68 | "exampleCount": 3, | |
| 69 | "examples": [ | |
| 70 | "npm install hypercore-storage", | |
| 71 | "const Storage = require('hypercore-storage')", | |
| 72 | "{\n gt: 'only return keys > than this', // Not currently supported\n gte: 'only return keys >= than this',\n lt: 'only return keys < than this',\n lte: 'only return keys <= than this', // Not currently supported\n reverse: false // reverse results. Not currently supported\n}" | |
| 73 | ] | |
| 74 | }, | |
| 75 | "patterns": [ | |
| 76 | "append-only-log", | |
| 77 | "binary-encoding", | |
| 78 | "streaming" | |
| 79 | ] | |
| 80 | } |
| … | … | @@ -63,11 +63,69 @@ Make a new storage engine. |
| 63 | 63 | |
| 64 | 64 | ## API Documentation |
| 65 | 65 | |
| 66 | _To be enriched in Phase 1B with deep code analysis_ | |
| 66 | _Extracted from README and code analysis_ | |
| 67 | ||
| 68 | ### Classes | |
| 69 | ||
| 70 | - `Atom` | |
| 71 | - `HypercoreStorage` | |
| 72 | - `CorestoreStorage` | |
| 73 | ||
| 74 | ### Functions | |
| 75 | ||
| 76 | - `initStoreHead()` | |
| 77 | - `getBatch()` | |
| 78 | - `isCorestoreStorage()` | |
| 79 | - `createColumnFamily()` | |
| 80 | - `tmpFixStorage()` | |
| 81 | - `exportData()` | |
| 82 | - `toArray()` | |
| 83 | - `noop()` | |
| 84 | - `getInfoFromBatch()` | |
| 85 | ||
| 86 | ### Exports | |
| 87 | ||
| 88 | - default: `CorestoreStorage` | |
| 89 | ||
| 90 | ||
| 91 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 92 | ||
| 67 | 93 | |
| 68 | 94 | ## Usage Examples |
| 69 | 95 | |
| 70 | _To be added in Phase 1B_ | |
| 96 | _Extracted from README_ | |
| 97 | ||
| 98 | ### Example 1 | |
| 99 | ||
| 100 | ```javascript | |
| 101 | npm install hypercore-storage | |
| 102 | ``` | |
| 103 | ||
| 104 | ### Example 2 | |
| 105 | ||
| 106 | ```javascript | |
| 107 | const Storage = require('hypercore-storage') | |
| 108 | ``` | |
| 109 | ||
| 110 | ### Example 3 | |
| 111 | ||
| 112 | ```javascript | |
| 113 | { | |
| 114 | gt: 'only return keys > than this', // Not currently supported | |
| 115 | gte: 'only return keys >= than this', | |
| 116 | lt: 'only return keys < than this', | |
| 117 | lte: 'only return keys <= than this', // Not currently supported | |
| 118 | reverse: false // reverse results. Not currently supported | |
| 119 | } | |
| 120 | ``` | |
| 121 | ||
| 122 | ||
| 123 | ||
| 124 | ## P2P Patterns | |
| 125 | ||
| 126 | - append-only-log | |
| 127 | - binary-encoding | |
| 128 | - streaming | |
| 71 | 129 | |
| 72 | 130 | ## Semantic Type |
| 73 | 131 |
| … | … | @@ -0,0 +1,35 @@ |
| 1 | { | |
| 2 | "repo": "hyperdispatch", | |
| 3 | "timestamp": "2026-01-16T23:56:09.889Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js", | |
| 8 | "exports": { | |
| 9 | "./package": "./package.json", | |
| 10 | ".": { | |
| 11 | "import": "./builder.mjs", | |
| 12 | "require": "./builder.cjs" | |
| 13 | }, | |
| 14 | "./runtime": { | |
| 15 | "import": "./runtime.mjs", | |
| 16 | "require": "./runtime.cjs" | |
| 17 | } | |
| 18 | } | |
| 19 | } | |
| 20 | }, | |
| 21 | "api": {}, | |
| 22 | "readme": { | |
| 23 | "content": "# hyperdispatch\n\nGenerate operations/endpoints using Hyperschema\n", | |
| 24 | "sections": [ | |
| 25 | "intro" | |
| 26 | ], | |
| 27 | "hasApi": false, | |
| 28 | "hasExamples": false, | |
| 29 | "exampleCount": 0, | |
| 30 | "examples": [] | |
| 31 | }, | |
| 32 | "patterns": [ | |
| 33 | "binary-encoding" | |
| 34 | ] | |
| 35 | } |
| … | … | @@ -52,12 +52,20 @@ Generate operations/endpoints using Hyperschema |
| 52 | 52 | |
| 53 | 53 | ## API Documentation |
| 54 | 54 | |
| 55 | _To be enriched in Phase 1B with deep code analysis_ | |
| 55 | _Extracted from code analysis_ | |
| 56 | ||
| 57 | ||
| 58 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 59 | ||
| 56 | 60 | |
| 57 | 61 | ## Usage Examples |
| 58 | 62 | |
| 59 | 63 | _To be added in Phase 1B_ |
| 60 | 64 | |
| 65 | ## P2P Patterns | |
| 66 | ||
| 67 | - binary-encoding | |
| 68 | ||
| 61 | 69 | ## Semantic Type |
| 62 | 70 | |
| 63 | 71 | _To be classified in Phase 2_ |
| … | … | @@ -0,0 +1,44 @@ |
| 1 | { | |
| 2 | "repo": "hyperswarm-doctor", | |
| 3 | "timestamp": "2026-01-16T23:55:50.477Z", | |
| 4 | "entryPoint": "index.mjs", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.mjs" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.mjs", | |
| 12 | "exports": [], | |
| 13 | "classes": [], | |
| 14 | "functions": [ | |
| 15 | { | |
| 16 | "name": "testClient" | |
| 17 | }, | |
| 18 | { | |
| 19 | "name": "write" | |
| 20 | }, | |
| 21 | { | |
| 22 | "name": "testServer" | |
| 23 | } | |
| 24 | ] | |
| 25 | }, | |
| 26 | "readme": { | |
| 27 | "content": "# @hyperswarm/doctor\n\nDebugging tool for the swarm\n\n```\nnpm install -g @hyperswarm/doctor\n```\n\n## Usage\n\n``` sh\nhyperswarm-doctor # prints initial info\nhyperswarm-doctor --server # spin up a test server\nhyperswarm-doctor --client=pubkey # connect to a test server and test transfer\n```\n\n## License\n\nApache-2.0\n", | |
| 28 | "sections": [ | |
| 29 | "intro", | |
| 30 | "usage", | |
| 31 | "license" | |
| 32 | ], | |
| 33 | "hasApi": true, | |
| 34 | "hasExamples": true, | |
| 35 | "exampleCount": 1, | |
| 36 | "examples": [ | |
| 37 | "npm install -g @hyperswarm/doctor" | |
| 38 | ] | |
| 39 | }, | |
| 40 | "patterns": [ | |
| 41 | "peer-discovery", | |
| 42 | "dht-discovery" | |
| 43 | ] | |
| 44 | } |
| … | … | @@ -52,11 +52,34 @@ Apache-2.0 |
| 52 | 52 | |
| 53 | 53 | ## API Documentation |
| 54 | 54 | |
| 55 | _To be enriched in Phase 1B with deep code analysis_ | |
| 55 | _Extracted from README and code analysis_ | |
| 56 | ||
| 57 | ### Functions | |
| 58 | ||
| 59 | - `testClient()` | |
| 60 | - `write()` | |
| 61 | - `testServer()` | |
| 62 | ||
| 63 | ||
| 64 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 65 | ||
| 56 | 66 | |
| 57 | 67 | ## Usage Examples |
| 58 | 68 | |
| 59 | _To be added in Phase 1B_ | |
| 69 | _Extracted from README_ | |
| 70 | ||
| 71 | ### Example 1 | |
| 72 | ||
| 73 | ```javascript | |
| 74 | npm install -g @hyperswarm/doctor | |
| 75 | ``` | |
| 76 | ||
| 77 | ||
| 78 | ||
| 79 | ## P2P Patterns | |
| 80 | ||
| 81 | - peer-discovery | |
| 82 | - dht-discovery | |
| 60 | 83 | |
| 61 | 84 | ## Semantic Type |
| 62 | 85 |
| … | … | @@ -0,0 +1,42 @@ |
| 1 | { | |
| 2 | "repo": "hyperswarm-testnet", | |
| 3 | "timestamp": "2026-01-16T23:56:10.266Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "require" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [], | |
| 19 | "functions": [] | |
| 20 | }, | |
| 21 | "readme": { | |
| 22 | "content": "# @hyperswarm/testnet\n\nSmall module to help you spin up a local Hyperswarm testnet.\n\n```\nnpm install @hyperswarm/testnet\n```\n\nUse this if you want to use the swarm in tests, etc.\n\n## Usage\n\n```js\nconst createTestnet = require('@hyperswarm/testnet')\n\nconst testnet = await createTestnet(10) // create a local testnet with 10 dht nodes\n```\n\n## API\n\n#### `const testnet = await createTestnet(size = 10, [options])`\n\nCreate a new testnet. `size` is how many DHT nodes you want in it. Options include:\n\n```js\n{\n port: preferredLocalPort, // defaults to ANY (0)\n host: preferredLocalHost, // defaults to 127.0.0.1\n teardown // optional async teardown helper ie, t.teardown in brittle/tap etc\n}\n```\n\n#### `testnet.nodes`\n\nAn array of nodes in the testnet.\n\n#### `testnet.bootstrap`\n\nAn array of bootstrap addresses of the testnet.\n\n#### `const node = testnet.createNode([options])`\n\nCreate an additional ephemeral node and add it to the testnet. Options are the same as [`new DHT()`](https://github.com/h", | |
| 23 | "sections": [ | |
| 24 | "intro", | |
| 25 | "usage", | |
| 26 | "api", | |
| 27 | "license" | |
| 28 | ], | |
| 29 | "hasApi": true, | |
| 30 | "hasExamples": true, | |
| 31 | "exampleCount": 3, | |
| 32 | "examples": [ | |
| 33 | "npm install @hyperswarm/testnet", | |
| 34 | "const createTestnet = require('@hyperswarm/testnet')\n\nconst testnet = await createTestnet(10) // create a local testnet with 10 dht nodes", | |
| 35 | "{\n port: preferredLocalPort, // defaults to ANY (0)\n host: preferredLocalHost, // defaults to 127.0.0.1\n teardown // optional async teardown helper ie, t.teardown in brittle/tap etc\n}" | |
| 36 | ] | |
| 37 | }, | |
| 38 | "patterns": [ | |
| 39 | "peer-discovery", | |
| 40 | "dht-discovery" | |
| 41 | ] | |
| 42 | } |
| … | … | @@ -51,11 +51,50 @@ const testnet = await createTestnet(10) // create a local testnet with 10 dht no |
| 51 | 51 | |
| 52 | 52 | ## API Documentation |
| 53 | 53 | |
| 54 | _To be enriched in Phase 1B with deep code analysis_ | |
| 54 | _Extracted from README and code analysis_ | |
| 55 | ||
| 56 | ### Exports | |
| 57 | ||
| 58 | - default: `require` | |
| 59 | ||
| 60 | ||
| 61 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 62 | ||
| 55 | 63 | |
| 56 | 64 | ## Usage Examples |
| 57 | 65 | |
| 58 | _To be added in Phase 1B_ | |
| 66 | _Extracted from README_ | |
| 67 | ||
| 68 | ### Example 1 | |
| 69 | ||
| 70 | ```javascript | |
| 71 | npm install @hyperswarm/testnet | |
| 72 | ``` | |
| 73 | ||
| 74 | ### Example 2 | |
| 75 | ||
| 76 | ```javascript | |
| 77 | const createTestnet = require('@hyperswarm/testnet') | |
| 78 | ||
| 79 | const testnet = await createTestnet(10) // create a local testnet with 10 dht nodes | |
| 80 | ``` | |
| 81 | ||
| 82 | ### Example 3 | |
| 83 | ||
| 84 | ```javascript | |
| 85 | { | |
| 86 | port: preferredLocalPort, // defaults to ANY (0) | |
| 87 | host: preferredLocalHost, // defaults to 127.0.0.1 | |
| 88 | teardown // optional async teardown helper ie, t.teardown in brittle/tap etc | |
| 89 | } | |
| 90 | ``` | |
| 91 | ||
| 92 | ||
| 93 | ||
| 94 | ## P2P Patterns | |
| 95 | ||
| 96 | - peer-discovery | |
| 97 | - dht-discovery | |
| 59 | 98 | |
| 60 | 99 | ## Semantic Type |
| 61 | 100 |
| … | … | @@ -0,0 +1,48 @@ |
| 1 | { | |
| 2 | "repo": "hypertrace", | |
| 3 | "timestamp": "2026-01-16T23:56:01.934Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [], | |
| 13 | "classes": [ | |
| 14 | { | |
| 15 | "name": "Hypertrace" | |
| 16 | }, | |
| 17 | { | |
| 18 | "name": "NoTracingClass" | |
| 19 | }, | |
| 20 | { | |
| 21 | "name": "cannot" | |
| 22 | } | |
| 23 | ], | |
| 24 | "functions": [ | |
| 25 | { | |
| 26 | "name": "is" | |
| 27 | } | |
| 28 | ] | |
| 29 | }, | |
| 30 | "readme": { | |
| 31 | "content": "# hypertrace\n\nAdd tracing and insights to classes. One of the goals of the module is that there is close to zero overhead when tracing is not enabled. This is achieved by not enabling tracing on objects created before tracing was enabled.\n\nSimilarly if caching is enabled then there is almost zero overhead while tracing.\n\nThere is support for Prometheus/Grafana through [hypertrace-prometheus](https://github.com/holepunchto/hypertrace-prometheus) to get better visual insights into an application's behavior.\n\n## Installation\n\n```\n$ npm i hypertrace\n```\n\n## Usage / instrumentation\n\nFirst create tracers in the classes where insights are needed\n\n`some-module.js`\n``` js\nimport { createTracer } from 'hypertrace'\n\nexport default class SomeModule {\n constructor () {\n this.tracer = createTracer(this, {\n props: {\n some: 'property'\n }\n })\n }\n\n createChild () {\n const child = new Child(this.tracer)\n return child\n }\n}\n\nclass Child {\n constructor (parentTracer) {\n ", | |
| 32 | "sections": [ | |
| 33 | "intro", | |
| 34 | "installation", | |
| 35 | "usage / instrumentation", | |
| 36 | "methods" | |
| 37 | ], | |
| 38 | "hasApi": false, | |
| 39 | "hasExamples": true, | |
| 40 | "exampleCount": 4, | |
| 41 | "examples": [ | |
| 42 | "$ npm i hypertrace", | |
| 43 | "Then add `.setTraceFunction()` when traces are needed. It's important that this happens **before** classes that use Hypertrace are instantiated. Otherwise the tracer will not be enabled for those objects.\n\n`app.js`", | |
| 44 | "## Methods\n\n### createTracer(context, { parent, props })\n\nCreate a new Hypertrace instance inside a class. Often used in the `constructor`.\n\n_If_ this is called before `setTraceFunction` then it will return a cummy class. This means that there will be close to zero overhead when tracing is not needed.\n\n- **props**: (optional) Some properties that are passed along to the trace function\n- **parent**: (optional) A parent hypertrace instance to allow deeper understanding of structure. This is pased to the trace function." | |
| 45 | ] | |
| 46 | }, | |
| 47 | "patterns": [] | |
| 48 | } |
| … | … | @@ -47,11 +47,56 @@ First create tracers in the classes where insights are needed |
| 47 | 47 | |
| 48 | 48 | ## API Documentation |
| 49 | 49 | |
| 50 | _To be enriched in Phase 1B with deep code analysis_ | |
| 50 | _Extracted from code analysis_ | |
| 51 | ||
| 52 | ### Classes | |
| 53 | ||
| 54 | - `Hypertrace` | |
| 55 | - `NoTracingClass` | |
| 56 | - `cannot` | |
| 57 | ||
| 58 | ### Functions | |
| 59 | ||
| 60 | - `is()` | |
| 61 | ||
| 62 | ||
| 63 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 64 | ||
| 51 | 65 | |
| 52 | 66 | ## Usage Examples |
| 53 | 67 | |
| 54 | _To be added in Phase 1B_ | |
| 68 | _Extracted from README_ | |
| 69 | ||
| 70 | ### Example 1 | |
| 71 | ||
| 72 | ```javascript | |
| 73 | $ npm i hypertrace | |
| 74 | ``` | |
| 75 | ||
| 76 | ### Example 2 | |
| 77 | ||
| 78 | ```javascript | |
| 79 | Then add `.setTraceFunction()` when traces are needed. It's important that this happens **before** classes that use Hypertrace are instantiated. Otherwise the tracer will not be enabled for those objects. | |
| 80 | ||
| 81 | `app.js` | |
| 82 | ``` | |
| 83 | ||
| 84 | ### Example 3 | |
| 85 | ||
| 86 | ```javascript | |
| 87 | ## Methods | |
| 88 | ||
| 89 | ### createTracer(context, { parent, props }) | |
| 90 | ||
| 91 | Create a new Hypertrace instance inside a class. Often used in the `constructor`. | |
| 92 | ||
| 93 | _If_ this is called before `setTraceFunction` then it will return a cummy class. This means that there will be close to zero overhead when tracing is not needed. | |
| 94 | ||
| 95 | - **props**: (optional) Some properties that are passed along to the trace function | |
| 96 | - **parent**: (optional) A parent hypertrace instance to allow deeper understanding of structure. This is pased to the trace function. | |
| 97 | ``` | |
| 98 | ||
| 99 | ||
| 55 | 100 | |
| 56 | 101 | ## Semantic Type |
| 57 | 102 |
| … | … | @@ -0,0 +1,54 @@ |
| 1 | { | |
| 2 | "repo": "index-encoder", | |
| 3 | "timestamp": "2026-01-16T23:56:02.311Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "class" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [ | |
| 19 | { | |
| 20 | "name": "IndexEncoder" | |
| 21 | } | |
| 22 | ], | |
| 23 | "functions": [ | |
| 24 | { | |
| 25 | "name": "encodeUint" | |
| 26 | }, | |
| 27 | { | |
| 28 | "name": "encodeUint32" | |
| 29 | }, | |
| 30 | { | |
| 31 | "name": "decodeUint32" | |
| 32 | } | |
| 33 | ] | |
| 34 | }, | |
| 35 | "readme": { | |
| 36 | "content": "# index-encoder\n\nEncode multiple values into sorted keys\n\n```\nnpm install index-encoder\n```\n\n## Usage\n\n```js\nconst IndexEncoder = require('index-encoder')\n\nconst idx = new IndexEncoder([IndexEncoder.STRING, IndexEncoder.UINT])\n\nconst buf = idx.encode(['foo', 42])\nconsole.log(idx.decode(buf)) // ['foo', 42]\n\n// pass any compact encoding name to map it to the relevant encoding\nconst uintType = IndexEncoder.lookup('uint')\nconst bufferType = IndexEncoder.lookup('buffer')\nconst alsoBufferType = IndexEncoder.lookup('fixed32')\n```\n\n## API\n\n#### `const idx = new IndexEncoder(encodings, { prefix = -1 })`\n\nCreate an index encoder using the array of `encodings`. The index encoder will produce a buffer encoding in the same order as `encodings`. A `prefix` can be defined to differentiate encoded buffers with the same `encodings`.\n\n#### `const buf = idx.encode(keys)`\n\nEncode the provided `keys` as a buffer. `keys` must be in the same order as the `encodings` when constructing the index encoder. `key", | |
| 37 | "sections": [ | |
| 38 | "intro", | |
| 39 | "usage", | |
| 40 | "api", | |
| 41 | "encoding types", | |
| 42 | "license" | |
| 43 | ], | |
| 44 | "hasApi": true, | |
| 45 | "hasExamples": true, | |
| 46 | "exampleCount": 4, | |
| 47 | "examples": [ | |
| 48 | "npm install index-encoder", | |
| 49 | "const IndexEncoder = require('index-encoder')\n\nconst idx = new IndexEncoder([IndexEncoder.STRING, IndexEncoder.UINT])\n\nconst buf = idx.encode(['foo', 42])\nconsole.log(idx.decode(buf)) // ['foo', 42]\n\n// pass any compact encoding name to map it to the relevant encoding\nconst uintType = IndexEncoder.lookup('uint')\nconst bufferType = IndexEncoder.lookup('buffer')\nconst alsoBufferType = IndexEncoder.lookup('fixed32')", | |
| 50 | "{\n gt, // Return values only > than this\n gte, // Return values >= than this\n lt, // Return values < than this\n lte: // Return values <= than this\n}" | |
| 51 | ] | |
| 52 | }, | |
| 53 | "patterns": [] | |
| 54 | } |
| … | … | @@ -51,11 +51,64 @@ const uintType = IndexEncoder.lookup('uint') |
| 51 | 51 | |
| 52 | 52 | ## API Documentation |
| 53 | 53 | |
| 54 | _To be enriched in Phase 1B with deep code analysis_ | |
| 54 | _Extracted from README and code analysis_ | |
| 55 | ||
| 56 | ### Classes | |
| 57 | ||
| 58 | - `IndexEncoder` | |
| 59 | ||
| 60 | ### Functions | |
| 61 | ||
| 62 | - `encodeUint()` | |
| 63 | - `encodeUint32()` | |
| 64 | - `decodeUint32()` | |
| 65 | ||
| 66 | ### Exports | |
| 67 | ||
| 68 | - default: `class` | |
| 69 | ||
| 70 | ||
| 71 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 72 | ||
| 55 | 73 | |
| 56 | 74 | ## Usage Examples |
| 57 | 75 | |
| 58 | _To be added in Phase 1B_ | |
| 76 | _Extracted from README_ | |
| 77 | ||
| 78 | ### Example 1 | |
| 79 | ||
| 80 | ```javascript | |
| 81 | npm install index-encoder | |
| 82 | ``` | |
| 83 | ||
| 84 | ### Example 2 | |
| 85 | ||
| 86 | ```javascript | |
| 87 | const IndexEncoder = require('index-encoder') | |
| 88 | ||
| 89 | const idx = new IndexEncoder([IndexEncoder.STRING, IndexEncoder.UINT]) | |
| 90 | ||
| 91 | const buf = idx.encode(['foo', 42]) | |
| 92 | console.log(idx.decode(buf)) // ['foo', 42] | |
| 93 | ||
| 94 | // pass any compact encoding name to map it to the relevant encoding | |
| 95 | const uintType = IndexEncoder.lookup('uint') | |
| 96 | const bufferType = IndexEncoder.lookup('buffer') | |
| 97 | const alsoBufferType = IndexEncoder.lookup('fixed32') | |
| 98 | ``` | |
| 99 | ||
| 100 | ### Example 3 | |
| 101 | ||
| 102 | ```javascript | |
| 103 | { | |
| 104 | gt, // Return values only > than this | |
| 105 | gte, // Return values >= than this | |
| 106 | lt, // Return values < than this | |
| 107 | lte: // Return values <= than this | |
| 108 | } | |
| 109 | ``` | |
| 110 | ||
| 111 | ||
| 59 | 112 | |
| 60 | 113 | ## Semantic Type |
| 61 | 114 |
| … | … | @@ -0,0 +1,23 @@ |
| 1 | { | |
| 2 | "repo": "libappling", | |
| 3 | "timestamp": "2026-01-16T23:56:24.561Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": {} | |
| 7 | }, | |
| 8 | "api": {}, | |
| 9 | "readme": { | |
| 10 | "content": "# libappling\n\nLow-level plumbing for Pear application shells. Application shells, referred to as _applings_, are small, native applications that bundle the public key of their associated Pear application in addition to the discovery key of the Pear platform. At a glance, an appling goes through the following steps to launch its associated application:\n\n1. **Resolve:** Determine the path to the current platform installation, if available.\n2. **Bootstrap:** If no platform is available, download and install the most recent platform.\n3. **Launch:** With the platform either already available or just installed, launch the platform with the application.\n\nOnce created and distributed, an appling never needs to be recreated and redistributed as the Pear platform and application are themselves fully self updating.\n\n## API\n\nSee [`include/appling.h`](include/appling.h) for the public API.\n\n## Building\n\n```console\nnpm i -g bare-make\nnpm i\nbare-make generate\nbare-make build\n```\n\n## License\n\nApache-2", | |
| 11 | "sections": [ | |
| 12 | "intro", | |
| 13 | "api", | |
| 14 | "building", | |
| 15 | "license" | |
| 16 | ], | |
| 17 | "hasApi": true, | |
| 18 | "hasExamples": false, | |
| 19 | "exampleCount": 0, | |
| 20 | "examples": [] | |
| 21 | }, | |
| 22 | "patterns": [] | |
| 23 | } |
| … | … | @@ -43,7 +43,11 @@ bare-make generate |
| 43 | 43 | |
| 44 | 44 | ## API Documentation |
| 45 | 45 | |
| 46 | _To be enriched in Phase 1B with deep code analysis_ | |
| 46 | _Extracted from README and code analysis_ | |
| 47 | ||
| 48 | ||
| 49 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 50 | ||
| 47 | 51 | |
| 48 | 52 | ## Usage Examples |
| 49 | 53 |
| … | … | @@ -0,0 +1,22 @@ |
| 1 | { | |
| 2 | "repo": "libcrc", | |
| 3 | "timestamp": "2026-01-16T23:56:10.639Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": {} | |
| 7 | }, | |
| 8 | "api": {}, | |
| 9 | "readme": { | |
| 10 | "content": "# libcrc\n\nCross-platform implementation of CRC32 with hardware acceleration for ARM processors. Uses a portable, generic implementation when hardware acceleration is not possible.\n\n## API\n\nSee [`include/crc.h`](include/crc.h) for the public API.\n\n## License\n\nApache 2.0\n", | |
| 11 | "sections": [ | |
| 12 | "intro", | |
| 13 | "api", | |
| 14 | "license" | |
| 15 | ], | |
| 16 | "hasApi": true, | |
| 17 | "hasExamples": false, | |
| 18 | "exampleCount": 0, | |
| 19 | "examples": [] | |
| 20 | }, | |
| 21 | "patterns": [] | |
| 22 | } |
| … | … | @@ -35,7 +35,11 @@ Apache 2.0 |
| 35 | 35 | |
| 36 | 36 | ## API Documentation |
| 37 | 37 | |
| 38 | _To be enriched in Phase 1B with deep code analysis_ | |
| 38 | _Extracted from README and code analysis_ | |
| 39 | ||
| 40 | ||
| 41 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 42 | ||
| 39 | 43 | |
| 40 | 44 | ## Usage Examples |
| 41 | 45 |
| … | … | @@ -0,0 +1,22 @@ |
| 1 | { | |
| 2 | "repo": "libfs", | |
| 3 | "timestamp": "2026-01-16T23:56:41.512Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": {} | |
| 7 | }, | |
| 8 | "api": {}, | |
| 9 | "readme": { | |
| 10 | "content": "# libfs\n\nA simple but extensive file system library built on libuv.\n\n## API\n\nSee [`include/fs.h`](include/fs.h) for the public API.\n\n## License\n\nApache-2.0\n", | |
| 11 | "sections": [ | |
| 12 | "intro", | |
| 13 | "api", | |
| 14 | "license" | |
| 15 | ], | |
| 16 | "hasApi": true, | |
| 17 | "hasExamples": false, | |
| 18 | "exampleCount": 0, | |
| 19 | "examples": [] | |
| 20 | }, | |
| 21 | "patterns": [] | |
| 22 | } |
| … | … | @@ -35,7 +35,11 @@ Apache-2.0 |
| 35 | 35 | |
| 36 | 36 | ## API Documentation |
| 37 | 37 | |
| 38 | _To be enriched in Phase 1B with deep code analysis_ | |
| 38 | _Extracted from README and code analysis_ | |
| 39 | ||
| 40 | ||
| 41 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 42 | ||
| 39 | 43 | |
| 40 | 44 | ## Usage Examples |
| 41 | 45 |
| … | … | @@ -0,0 +1,22 @@ |
| 1 | { | |
| 2 | "repo": "libfx", | |
| 3 | "timestamp": "2026-01-16T23:56:02.889Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": {} | |
| 7 | }, | |
| 8 | "api": {}, | |
| 9 | "readme": { | |
| 10 | "content": "# libfx\n\nLow-level, cross-platform GUI library for native desktop and mobile.\n\n## API\n\nSee [`include/fx.h`](include/fx.h) for the public API.\n\n## License\n\nApache-2.0\n", | |
| 11 | "sections": [ | |
| 12 | "intro", | |
| 13 | "api", | |
| 14 | "license" | |
| 15 | ], | |
| 16 | "hasApi": true, | |
| 17 | "hasExamples": false, | |
| 18 | "exampleCount": 0, | |
| 19 | "examples": [] | |
| 20 | }, | |
| 21 | "patterns": [] | |
| 22 | } |
| … | … | @@ -35,7 +35,11 @@ Apache-2.0 |
| 35 | 35 | |
| 36 | 36 | ## API Documentation |
| 37 | 37 | |
| 38 | _To be enriched in Phase 1B with deep code analysis_ | |
| 38 | _Extracted from README and code analysis_ | |
| 39 | ||
| 40 | ||
| 41 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 42 | ||
| 39 | 43 | |
| 40 | 44 | ## Usage Examples |
| 41 | 45 |
| … | … | @@ -0,0 +1,21 @@ |
| 1 | { | |
| 2 | "repo": "libjerry", | |
| 3 | "timestamp": "2026-01-16T23:55:50.891Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": {} | |
| 7 | }, | |
| 8 | "api": {}, | |
| 9 | "readme": { | |
| 10 | "content": "# libjerry\n\nABI compatible replacement for <https://github.com/holepunchto/libjs> built on JerryScript. Useful for IoT, embedded, or otherwise constrained systems where the requirements of V8 can become problematic.\n\n## License\n\nApache-2.0\n", | |
| 11 | "sections": [ | |
| 12 | "intro", | |
| 13 | "license" | |
| 14 | ], | |
| 15 | "hasApi": false, | |
| 16 | "hasExamples": false, | |
| 17 | "exampleCount": 0, | |
| 18 | "examples": [] | |
| 19 | }, | |
| 20 | "patterns": [] | |
| 21 | } |
| … | … | @@ -31,7 +31,11 @@ Apache-2.0 |
| 31 | 31 | |
| 32 | 32 | ## API Documentation |
| 33 | 33 | |
| 34 | _To be enriched in Phase 1B with deep code analysis_ | |
| 34 | _Extracted from code analysis_ | |
| 35 | ||
| 36 | ||
| 37 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 38 | ||
| 35 | 39 | |
| 36 | 40 | ## Usage Examples |
| 37 | 41 |
| … | … | @@ -0,0 +1,21 @@ |
| 1 | { | |
| 2 | "repo": "libjsc", | |
| 3 | "timestamp": "2026-01-16T23:55:48.151Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": {} | |
| 7 | }, | |
| 8 | "api": {}, | |
| 9 | "readme": { | |
| 10 | "content": "# libjsc\n\nABI compatible replacement for <https://github.com/holepunchto/libjs> built on JavaScriptCore.\n\n## License\n\nApache-2.0\n", | |
| 11 | "sections": [ | |
| 12 | "intro", | |
| 13 | "license" | |
| 14 | ], | |
| 15 | "hasApi": false, | |
| 16 | "hasExamples": false, | |
| 17 | "exampleCount": 0, | |
| 18 | "examples": [] | |
| 19 | }, | |
| 20 | "patterns": [] | |
| 21 | } |
| … | … | @@ -31,7 +31,11 @@ Apache-2.0 |
| 31 | 31 | |
| 32 | 32 | ## API Documentation |
| 33 | 33 | |
| 34 | _To be enriched in Phase 1B with deep code analysis_ | |
| 34 | _Extracted from code analysis_ | |
| 35 | ||
| 36 | ||
| 37 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 38 | ||
| 35 | 39 | |
| 36 | 40 | ## Usage Examples |
| 37 | 41 |
| … | … | @@ -0,0 +1,26 @@ |
| 1 | { | |
| 2 | "repo": "libjstl", | |
| 3 | "timestamp": "2026-01-16T23:56:24.954Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": {} | |
| 7 | }, | |
| 8 | "api": {}, | |
| 9 | "readme": { | |
| 10 | "content": "# libjstl\n\nC++ template library for <https://github.com/holepunchto/libjs>. It aims to make interacting with the low-level API safer and more efficient without making callers feel too much like they're writing C++.\n\n## API\n\n### Handle types\n\nTo improve type safety and ergonomics `libjstl` wraps the `js_value_t *` ABI handle type in a type hierarchy that mirrors the JavaScript type hierarchy. All handle types support conversion to plain `js_value_t *` ABI handles by means of explicit casts:\n\n```cpp\njs_boolean_t boolean;\n\njs_value_t *handle = static_cast<js_value_t *>(boolean);\n```\n\nFor cases where an ABI handle output variable is expected, cast to `js_value_t **` instead:\n\n```cpp\njs_boolean_t boolean;\n\njs_value_t **handle = static_cast<js_value_t **>(boolean);\n```\n\n#### `js_handle_t`\n\n#### `js_primitive_t`\n\n#### `js_boolean_t`\n\n#### `js_numeric_t`\n\n#### `js_number_t`\n\n#### `js_integer_t`\n\n#### `js_bigint_t`\n\n#### `js_name_t`\n\n#### `js_string_t`\n\n#### `js_symbol_t`\n\n#### `js_object_t`\n\n#", | |
| 11 | "sections": [ | |
| 12 | "intro", | |
| 13 | "api", | |
| 14 | "license" | |
| 15 | ], | |
| 16 | "hasApi": true, | |
| 17 | "hasExamples": true, | |
| 18 | "exampleCount": 6, | |
| 19 | "examples": [ | |
| 20 | "For cases where an ABI handle output variable is expected, cast to `js_value_t **` instead:", | |
| 21 | "#### `js_handle_t`\n\n#### `js_primitive_t`\n\n#### `js_boolean_t`\n\n#### `js_numeric_t`\n\n#### `js_number_t`\n\n#### `js_integer_t`\n\n#### `js_bigint_t`\n\n#### `js_name_t`\n\n#### `js_string_t`\n\n#### `js_symbol_t`\n\n#### `js_object_t`\n\n#### `js_array_t`\n\n#### `js_arraybuffer_t`\n\n#### `js_typedarray_t<T>`\n\n#### `js_typedarray_t<>`\n\n#### `js_function_t<R, A...>`\n\n#### `js_external_t<T>`\n\n### Type marshalling\n\nAt the core of `libjstl` is a type marshalling system responsible for converting between ABI types, such as `js_value_t *` handles, and native C/C++ types. Type marshalling is accessed through `js_type_info_t<T>` which describes the type `T` and implements the marshalling and unmarshalling methods responsible for converting `T` to and from its associated ABI type.\n\n#### `js_type_info_t<T>`", | |
| 22 | "##### `js_type_info_t<T>::type`\n\nThe ABI type used to represent `T`. Must be `js_value_t *` unless otherwise stated." | |
| 23 | ] | |
| 24 | }, | |
| 25 | "patterns": [] | |
| 26 | } |
| … | … | @@ -43,11 +43,75 @@ js_boolean_t boolean; |
| 43 | 43 | |
| 44 | 44 | ## API Documentation |
| 45 | 45 | |
| 46 | _To be enriched in Phase 1B with deep code analysis_ | |
| 46 | _Extracted from README and code analysis_ | |
| 47 | ||
| 48 | ||
| 49 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 50 | ||
| 47 | 51 | |
| 48 | 52 | ## Usage Examples |
| 49 | 53 | |
| 50 | _To be added in Phase 1B_ | |
| 54 | _Extracted from README_ | |
| 55 | ||
| 56 | ### Example 1 | |
| 57 | ||
| 58 | ```javascript | |
| 59 | For cases where an ABI handle output variable is expected, cast to `js_value_t **` instead: | |
| 60 | ``` | |
| 61 | ||
| 62 | ### Example 2 | |
| 63 | ||
| 64 | ```javascript | |
| 65 | #### `js_handle_t` | |
| 66 | ||
| 67 | #### `js_primitive_t` | |
| 68 | ||
| 69 | #### `js_boolean_t` | |
| 70 | ||
| 71 | #### `js_numeric_t` | |
| 72 | ||
| 73 | #### `js_number_t` | |
| 74 | ||
| 75 | #### `js_integer_t` | |
| 76 | ||
| 77 | #### `js_bigint_t` | |
| 78 | ||
| 79 | #### `js_name_t` | |
| 80 | ||
| 81 | #### `js_string_t` | |
| 82 | ||
| 83 | #### `js_symbol_t` | |
| 84 | ||
| 85 | #### `js_object_t` | |
| 86 | ||
| 87 | #### `js_array_t` | |
| 88 | ||
| 89 | #### `js_arraybuffer_t` | |
| 90 | ||
| 91 | #### `js_typedarray_t<T>` | |
| 92 | ||
| 93 | #### `js_typedarray_t<>` | |
| 94 | ||
| 95 | #### `js_function_t<R, A...>` | |
| 96 | ||
| 97 | #### `js_external_t<T>` | |
| 98 | ||
| 99 | ### Type marshalling | |
| 100 | ||
| 101 | At the core of `libjstl` is a type marshalling system responsible for converting between ABI types, such as `js_value_t *` handles, and native C/C++ types. Type marshalling is accessed through `js_type_info_t<T>` which describes the type `T` and implements the marshalling and unmarshalling methods responsible for converting `T` to and from its associated ABI type. | |
| 102 | ||
| 103 | #### `js_type_info_t<T>` | |
| 104 | ``` | |
| 105 | ||
| 106 | ### Example 3 | |
| 107 | ||
| 108 | ```javascript | |
| 109 | ##### `js_type_info_t<T>::type` | |
| 110 | ||
| 111 | The ABI type used to represent `T`. Must be `js_value_t *` unless otherwise stated. | |
| 112 | ``` | |
| 113 | ||
| 114 | ||
| 51 | 115 | |
| 52 | 116 | ## Semantic Type |
| 53 | 117 |
| … | … | @@ -0,0 +1,27 @@ |
| 1 | { | |
| 2 | "repo": "liblog", | |
| 3 | "timestamp": "2026-01-16T23:56:25.351Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": {} | |
| 7 | }, | |
| 8 | "api": {}, | |
| 9 | "readme": { | |
| 10 | "content": "## liblog\n\nSimple logging library with a unified interface to [os_log](https://developer.apple.com/documentation/os/logging?language=objc), [syslog](https://www.man7.org/linux/man-pages/man3/syslog.3.html), [Logcat](https://developer.android.com/tools/logcat), and [TraceLogging](https://learn.microsoft.com/en-us/windows/win32/tracelogging/).\n\n## Usage\n\n```c\n#include <log.h>\n\nlog_debug(\"Current pid: %u\", getpid());\n```\n\n### Consuming logs\n\n#### macOS\n\nOn macOS, [Console.app](https://support.apple.com/en-gb/guide/console/welcome/mac) and the `log` tool can be used to consume logs. To show only messages for a given binary, such as `my-app`, pass the `--predicate` flag:\n\n```sh\nlog stream --predicate \"process == 'my-app'\"\n```\n\n#### Linux\n\nOn Linux, [`journalctl`](https://www.man7.org/linux/man-pages/man1/journalctl.1.html) can be used to consume logs. To show only messages for a given binary, such as `my-app`, pass the `--identifier` flag:\n\n```sh\njournalctl --identifier my-app\n```\n\n#### And", | |
| 11 | "sections": [ | |
| 12 | "liblog", | |
| 13 | "usage", | |
| 14 | "api", | |
| 15 | "license" | |
| 16 | ], | |
| 17 | "hasApi": true, | |
| 18 | "hasExamples": true, | |
| 19 | "exampleCount": 6, | |
| 20 | "examples": [ | |
| 21 | "### Consuming logs\n\n#### macOS\n\nOn macOS, [Console.app](https://support.apple.com/en-gb/guide/console/welcome/mac) and the `log` tool can be used to consume logs. To show only messages for a given binary, such as `my-app`, pass the `--predicate` flag:", | |
| 22 | "#### Linux\n\nOn Linux, [`journalctl`](https://www.man7.org/linux/man-pages/man1/journalctl.1.html) can be used to consume logs. To show only messages for a given binary, such as `my-app`, pass the `--identifier` flag:", | |
| 23 | "#### Android\n\nOn Android, [`logcat`](https://developer.android.com/tools/logcat) can be used to consume logs. To show only messages for a given binary, such as `my-app`, pass a filterspec:" | |
| 24 | ] | |
| 25 | }, | |
| 26 | "patterns": [] | |
| 27 | } |
| … | … | @@ -43,11 +43,43 @@ log stream --predicate "process == 'my-app'" |
| 43 | 43 | |
| 44 | 44 | ## API Documentation |
| 45 | 45 | |
| 46 | _To be enriched in Phase 1B with deep code analysis_ | |
| 46 | _Extracted from README and code analysis_ | |
| 47 | ||
| 48 | ||
| 49 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 50 | ||
| 47 | 51 | |
| 48 | 52 | ## Usage Examples |
| 49 | 53 | |
| 50 | _To be added in Phase 1B_ | |
| 54 | _Extracted from README_ | |
| 55 | ||
| 56 | ### Example 1 | |
| 57 | ||
| 58 | ```javascript | |
| 59 | ### Consuming logs | |
| 60 | ||
| 61 | #### macOS | |
| 62 | ||
| 63 | On macOS, [Console.app](https://support.apple.com/en-gb/guide/console/welcome/mac) and the `log` tool can be used to consume logs. To show only messages for a given binary, such as `my-app`, pass the `--predicate` flag: | |
| 64 | ``` | |
| 65 | ||
| 66 | ### Example 2 | |
| 67 | ||
| 68 | ```javascript | |
| 69 | #### Linux | |
| 70 | ||
| 71 | On Linux, [`journalctl`](https://www.man7.org/linux/man-pages/man1/journalctl.1.html) can be used to consume logs. To show only messages for a given binary, such as `my-app`, pass the `--identifier` flag: | |
| 72 | ``` | |
| 73 | ||
| 74 | ### Example 3 | |
| 75 | ||
| 76 | ```javascript | |
| 77 | #### Android | |
| 78 | ||
| 79 | On Android, [`logcat`](https://developer.android.com/tools/logcat) can be used to consume logs. To show only messages for a given binary, such as `my-app`, pass a filterspec: | |
| 80 | ``` | |
| 81 | ||
| 82 | ||
| 51 | 83 | |
| 52 | 84 | ## Semantic Type |
| 53 | 85 |
| … | … | @@ -0,0 +1,22 @@ |
| 1 | { | |
| 2 | "repo": "libmem", | |
| 3 | "timestamp": "2026-01-16T23:56:25.702Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": {} | |
| 7 | }, | |
| 8 | "api": {}, | |
| 9 | "readme": { | |
| 10 | "content": "# libmem\n\nGeneral purpose memory allocator for C built on <https://github.com/microsoft/mimalloc>. It's built around explicit heaps and provides no global allocation.\n\n## API\n\nSee [`include/mem.h`](include/mem.h) for the public API.\n\n## License\n\nApache-2.0\n", | |
| 11 | "sections": [ | |
| 12 | "intro", | |
| 13 | "api", | |
| 14 | "license" | |
| 15 | ], | |
| 16 | "hasApi": true, | |
| 17 | "hasExamples": false, | |
| 18 | "exampleCount": 0, | |
| 19 | "examples": [] | |
| 20 | }, | |
| 21 | "patterns": [] | |
| 22 | } |
| … | … | @@ -35,7 +35,11 @@ Apache-2.0 |
| 35 | 35 | |
| 36 | 36 | ## API Documentation |
| 37 | 37 | |
| 38 | _To be enriched in Phase 1B with deep code analysis_ | |
| 38 | _Extracted from README and code analysis_ | |
| 39 | ||
| 40 | ||
| 41 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 42 | ||
| 39 | 43 | |
| 40 | 44 | ## Usage Examples |
| 41 | 45 |
| … | … | @@ -0,0 +1,20 @@ |
| 1 | { | |
| 2 | "repo": "libparseline", | |
| 3 | "timestamp": "2026-01-16T23:56:41.863Z", | |
| 4 | "entryPoint": null, | |
| 5 | "exports": {}, | |
| 6 | "api": {}, | |
| 7 | "readme": { | |
| 8 | "content": "# libparseline\n\nParse streaming lines in C.\n\n## API\n\nSee [`include/parseline.h`](include/parseline.h) for the public API.\n\n## License\n\nApache-2.0\n", | |
| 9 | "sections": [ | |
| 10 | "intro", | |
| 11 | "api", | |
| 12 | "license" | |
| 13 | ], | |
| 14 | "hasApi": true, | |
| 15 | "hasExamples": false, | |
| 16 | "exampleCount": 0, | |
| 17 | "examples": [] | |
| 18 | }, | |
| 19 | "patterns": [] | |
| 20 | } |
| … | … | @@ -28,7 +28,11 @@ Apache-2.0 |
| 28 | 28 | |
| 29 | 29 | ## API Documentation |
| 30 | 30 | |
| 31 | _To be enriched in Phase 1B with deep code analysis_ | |
| 31 | _Extracted from README and code analysis_ | |
| 32 | ||
| 33 | ||
| 34 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 35 | ||
| 32 | 36 | |
| 33 | 37 | ## Usage Examples |
| 34 | 38 |
| … | … | @@ -0,0 +1,20 @@ |
| 1 | { | |
| 2 | "repo": "libpearsync", | |
| 3 | "timestamp": "2026-01-16T23:55:51.256Z", | |
| 4 | "entryPoint": null, | |
| 5 | "exports": {}, | |
| 6 | "api": {}, | |
| 7 | "readme": { | |
| 8 | "content": "# libpearsync\n\nSimple message passing between a libuv thread and something else.\n\n* No locks.\n* No allocs (*)\n* No fuzz\n\n*... unless you send > 1024 messages in one tick, at which stage an extra buffer is allocated*\n\n## Usage\n\nSee `example.c` for a fully runnable example\n\n``` c\n// somewhere (but only in one place), init it\npearsync_t sync;\npearsync_init(&sync);\n\n// then pass it to the libuv thread somehow and call\npearsync_port_t *uv_port = pearsync_open_uv(&sync, uv_loop, on_recv_uv);\n\n// then in the other thread call\npearsync_port_t *port = pearsync_open_thread(&sync, signal_thread, on_recv_thread);\n\n// pearsync doesnt know how to signal your other thread, so you need to pass a function\n// signal_thread that does this for it, the signature of it is\n\nvoid signal_thread (pearsync_port_t *port) {\n // ... somehow signal the other thread, and when so do\n pearsync_wakeup(port);\n}\n\n// note that these two open calls are threadsafe!\n// the wakeup function is called when there is something t", | |
| 9 | "sections": [ | |
| 10 | "intro", | |
| 11 | "usage", | |
| 12 | "license" | |
| 13 | ], | |
| 14 | "hasApi": true, | |
| 15 | "hasExamples": false, | |
| 16 | "exampleCount": 0, | |
| 17 | "examples": [] | |
| 18 | }, | |
| 19 | "patterns": [] | |
| 20 | } |
| … | … | @@ -36,7 +36,11 @@ pearsync_init(&sync); |
| 36 | 36 | |
| 37 | 37 | ## API Documentation |
| 38 | 38 | |
| 39 | _To be enriched in Phase 1B with deep code analysis_ | |
| 39 | _Extracted from README and code analysis_ | |
| 40 | ||
| 41 | ||
| 42 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 43 | ||
| 40 | 44 | |
| 41 | 45 | ## Usage Examples |
| 42 | 46 |
| … | … | @@ -0,0 +1,22 @@ |
| 1 | { | |
| 2 | "repo": "librocksdb", | |
| 3 | "timestamp": "2026-01-16T23:56:11.036Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": {} | |
| 7 | }, | |
| 8 | "api": {}, | |
| 9 | "readme": { | |
| 10 | "content": "# librocksdb\n\nAsynchronous C bindings to RocksDB with support for batch operations.\n\n## API\n\nSee [`include/rocksdb.h`](include/rocksdb.h) for the public API.\n\n## License\n\nApache-2.0\n", | |
| 11 | "sections": [ | |
| 12 | "intro", | |
| 13 | "api", | |
| 14 | "license" | |
| 15 | ], | |
| 16 | "hasApi": true, | |
| 17 | "hasExamples": false, | |
| 18 | "exampleCount": 0, | |
| 19 | "examples": [] | |
| 20 | }, | |
| 21 | "patterns": [] | |
| 22 | } |
| … | … | @@ -35,7 +35,11 @@ Apache-2.0 |
| 35 | 35 | |
| 36 | 36 | ## API Documentation |
| 37 | 37 | |
| 38 | _To be enriched in Phase 1B with deep code analysis_ | |
| 38 | _Extracted from README and code analysis_ | |
| 39 | ||
| 40 | ||
| 41 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 42 | ||
| 39 | 43 | |
| 40 | 44 | ## Usage Examples |
| 41 | 45 |
| … | … | @@ -0,0 +1,22 @@ |
| 1 | { | |
| 2 | "repo": "librpc", | |
| 3 | "timestamp": "2026-01-16T23:56:42.233Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": {} | |
| 7 | }, | |
| 8 | "api": {}, | |
| 9 | "readme": { | |
| 10 | "content": "# librpc\n\nLow-level RPC codec implemented in C for wide language support.\n\n## API\n\nSee [`include/rpc.h`](include/rpc.h) for the public API.\n\n## License\n\nApache-2.0\n", | |
| 11 | "sections": [ | |
| 12 | "intro", | |
| 13 | "api", | |
| 14 | "license" | |
| 15 | ], | |
| 16 | "hasApi": true, | |
| 17 | "hasExamples": false, | |
| 18 | "exampleCount": 0, | |
| 19 | "examples": [] | |
| 20 | }, | |
| 21 | "patterns": [] | |
| 22 | } |
| … | … | @@ -35,7 +35,11 @@ Apache-2.0 |
| 35 | 35 | |
| 36 | 36 | ## API Documentation |
| 37 | 37 | |
| 38 | _To be enriched in Phase 1B with deep code analysis_ | |
| 38 | _Extracted from README and code analysis_ | |
| 39 | ||
| 40 | ||
| 41 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 42 | ||
| 39 | 43 | |
| 40 | 44 | ## Usage Examples |
| 41 | 45 |
| … | … | @@ -0,0 +1,22 @@ |
| 1 | { | |
| 2 | "repo": "libsimdle", | |
| 3 | "timestamp": "2026-01-16T23:56:26.069Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": {} | |
| 7 | }, | |
| 8 | "api": {}, | |
| 9 | "readme": { | |
| 10 | "content": "# libsimdle\n\nSimple and portable SIMD instructions for 128 bit vectors, inspired by the WASM SIMD specification. Designed for seamless interoperability with JavaScript typed arrays.\n\n## API\n\nSee [`include/simdle.h`](include/simdle.h) for the public API.\n\n## License\n\nApache 2.0\n", | |
| 11 | "sections": [ | |
| 12 | "intro", | |
| 13 | "api", | |
| 14 | "license" | |
| 15 | ], | |
| 16 | "hasApi": true, | |
| 17 | "hasExamples": false, | |
| 18 | "exampleCount": 0, | |
| 19 | "examples": [] | |
| 20 | }, | |
| 21 | "patterns": [] | |
| 22 | } |
| … | … | @@ -35,7 +35,11 @@ Apache 2.0 |
| 35 | 35 | |
| 36 | 36 | ## API Documentation |
| 37 | 37 | |
| 38 | _To be enriched in Phase 1B with deep code analysis_ | |
| 38 | _Extracted from README and code analysis_ | |
| 39 | ||
| 40 | ||
| 41 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 42 | ||
| 39 | 43 | |
| 40 | 44 | ## Usage Examples |
| 41 | 45 |
| … | … | @@ -0,0 +1,22 @@ |
| 1 | { | |
| 2 | "repo": "libtt", | |
| 3 | "timestamp": "2026-01-16T23:56:11.419Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": {} | |
| 7 | }, | |
| 8 | "api": {}, | |
| 9 | "readme": { | |
| 10 | "content": "# libtt\n\nVirtual console extensions built on libuv.\n\n## API\n\nSee [`include/tt.h`](include/tt.h) for the public API.\n\n## License\n\nApache 2.0\n", | |
| 11 | "sections": [ | |
| 12 | "intro", | |
| 13 | "api", | |
| 14 | "license" | |
| 15 | ], | |
| 16 | "hasApi": true, | |
| 17 | "hasExamples": false, | |
| 18 | "exampleCount": 0, | |
| 19 | "examples": [] | |
| 20 | }, | |
| 21 | "patterns": [] | |
| 22 | } |
| … | … | @@ -35,7 +35,11 @@ Apache 2.0 |
| 35 | 35 | |
| 36 | 36 | ## API Documentation |
| 37 | 37 | |
| 38 | _To be enriched in Phase 1B with deep code analysis_ | |
| 38 | _Extracted from README and code analysis_ | |
| 39 | ||
| 40 | ||
| 41 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 42 | ||
| 39 | 43 | |
| 40 | 44 | ## Usage Examples |
| 41 | 45 |
| … | … | @@ -0,0 +1,23 @@ |
| 1 | { | |
| 2 | "repo": "liburl", | |
| 3 | "timestamp": "2026-01-16T23:56:26.456Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": {} | |
| 7 | }, | |
| 8 | "api": {}, | |
| 9 | "readme": { | |
| 10 | "content": "# liburl\n\nWHATWG URL parser in C. Provides a memory efficient URL representation with immutable views over the various URL components, inspired by [WebKit](https://github.com/WebKit/WebKit) and [Ada](https://github.com/ada-url/ada).\n\n## Usage\n\n```c\n#include <url.h>\n#include <utf.h>\n\nurl_t url\nurl_init(&url);\n\nurl_parse(&url, \"https://example.com/foo/bar?baz\", -1, NULL);\n\nutf8_string_view_t href = url_get_href(&url);\n\nurl_destroy(&url);\n```\n\n## API\n\nSee [`include/url.h`](include/url.h) for the public API.\n\n## License\n\nApache-2.0\n", | |
| 11 | "sections": [ | |
| 12 | "intro", | |
| 13 | "usage", | |
| 14 | "api", | |
| 15 | "license" | |
| 16 | ], | |
| 17 | "hasApi": true, | |
| 18 | "hasExamples": false, | |
| 19 | "exampleCount": 0, | |
| 20 | "examples": [] | |
| 21 | }, | |
| 22 | "patterns": [] | |
| 23 | } |
| … | … | @@ -43,7 +43,11 @@ url_destroy(&url); |
| 43 | 43 | |
| 44 | 44 | ## API Documentation |
| 45 | 45 | |
| 46 | _To be enriched in Phase 1B with deep code analysis_ | |
| 46 | _Extracted from README and code analysis_ | |
| 47 | ||
| 48 | ||
| 49 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 50 | ||
| 47 | 51 | |
| 48 | 52 | ## Usage Examples |
| 49 | 53 |
| … | … | @@ -0,0 +1,22 @@ |
| 1 | { | |
| 2 | "repo": "libutf", | |
| 3 | "timestamp": "2026-01-16T23:56:11.766Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": {} | |
| 7 | }, | |
| 8 | "api": {}, | |
| 9 | "readme": { | |
| 10 | "content": "# libutf\n\nSmall library for working with Unicode in C. Based on <https://github.com/simdutf/simdutf>, but without the `libc++` requirement.\n\n## API\n\nSee [`include/utf.h`](include/utf.h) for the public API.\n\n## License\n\nApache-2.0\n", | |
| 11 | "sections": [ | |
| 12 | "intro", | |
| 13 | "api", | |
| 14 | "license" | |
| 15 | ], | |
| 16 | "hasApi": true, | |
| 17 | "hasExamples": false, | |
| 18 | "exampleCount": 0, | |
| 19 | "examples": [] | |
| 20 | }, | |
| 21 | "patterns": [] | |
| 22 | } |
| … | … | @@ -35,7 +35,11 @@ Apache-2.0 |
| 35 | 35 | |
| 36 | 36 | ## API Documentation |
| 37 | 37 | |
| 38 | _To be enriched in Phase 1B with deep code analysis_ | |
| 38 | _Extracted from README and code analysis_ | |
| 39 | ||
| 40 | ||
| 41 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 42 | ||
| 39 | 43 | |
| 40 | 44 | ## Usage Examples |
| 41 | 45 |
| … | … | @@ -0,0 +1,61 @@ |
| 1 | { | |
| 2 | "repo": "localwatch", | |
| 3 | "timestamp": "2026-01-16T23:55:45.870Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "class" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [ | |
| 19 | { | |
| 20 | "name": "TreeEntry" | |
| 21 | }, | |
| 22 | { | |
| 23 | "name": "Localwatch" | |
| 24 | } | |
| 25 | ], | |
| 26 | "functions": [ | |
| 27 | { | |
| 28 | "name": "readdir" | |
| 29 | }, | |
| 30 | { | |
| 31 | "name": "lstat" | |
| 32 | }, | |
| 33 | { | |
| 34 | "name": "isRooted" | |
| 35 | }, | |
| 36 | { | |
| 37 | "name": "defaultFilter" | |
| 38 | } | |
| 39 | ] | |
| 40 | }, | |
| 41 | "readme": { | |
| 42 | "content": "# localwatch\n\nWatch a directory and get a diff of changes\n\n```\nnpm install localwatch\n```\n\n## Usage\n\n```js\nconst Localwatch = require('localwatch')\n\n// watch a dir\nconst watch = new Localwatch('./my/dir')\n\n// watch is a readable stream\n\nfor await (const diff of watch) {\n // diff is the next batch of changes\n // [{ type: update|delete, filename }, ...]\n}\n```\n\n## API\n\n#### `stream = new Localwatch(dir, [options])`\n\nMake a watch stream.\n\nOptions include\n\n```js\n{\n // function that returns true if it should watch it\n // defaults to ignoring .git and corestores\n filter (filename, stream) { ... },\n // optionally map the diff entries\n map (entry) { return ... },\n // use relative paths in the diff\n relative: false,\n // include hidden files (.something)\n hidden: false,\n // wait for the watched folder to be idle for 100ms\n // before triggering the batch after a change has happened.\n // disable this if you the watcher to be fully interactive\n settle: true\n}\n```\n\nThe stream yields di", | |
| 43 | "sections": [ | |
| 44 | "intro", | |
| 45 | "usage", | |
| 46 | "api", | |
| 47 | "license" | |
| 48 | ], | |
| 49 | "hasApi": true, | |
| 50 | "hasExamples": true, | |
| 51 | "exampleCount": 4, | |
| 52 | "examples": [ | |
| 53 | "npm install localwatch", | |
| 54 | "const Localwatch = require('localwatch')\n\n// watch a dir\nconst watch = new Localwatch('./my/dir')\n\n// watch is a readable stream\n\nfor await (const diff of watch) {\n // diff is the next batch of changes\n // [{ type: update|delete, filename }, ...]\n}", | |
| 55 | "{\n // function that returns true if it should watch it\n // defaults to ignoring .git and corestores\n filter (filename, stream) { ... },\n // optionally map the diff entries\n map (entry) { return ... },\n // use relative paths in the diff\n relative: false,\n // include hidden files (.something)\n hidden: false,\n // wait for the watched folder to be idle for 100ms\n // before triggering the batch after a change has happened.\n // disable this if you the watcher to be fully interactive\n settle: true\n}" | |
| 56 | ] | |
| 57 | }, | |
| 58 | "patterns": [ | |
| 59 | "streaming" | |
| 60 | ] | |
| 61 | } |
| … | … | @@ -54,11 +54,79 @@ for await (const diff of watch) { |
| 54 | 54 | |
| 55 | 55 | ## API Documentation |
| 56 | 56 | |
| 57 | _To be enriched in Phase 1B with deep code analysis_ | |
| 57 | _Extracted from README and code analysis_ | |
| 58 | ||
| 59 | ### Classes | |
| 60 | ||
| 61 | - `TreeEntry` | |
| 62 | - `Localwatch` | |
| 63 | ||
| 64 | ### Functions | |
| 65 | ||
| 66 | - `readdir()` | |
| 67 | - `lstat()` | |
| 68 | - `isRooted()` | |
| 69 | - `defaultFilter()` | |
| 70 | ||
| 71 | ### Exports | |
| 72 | ||
| 73 | - default: `class` | |
| 74 | ||
| 75 | ||
| 76 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 77 | ||
| 58 | 78 | |
| 59 | 79 | ## Usage Examples |
| 60 | 80 | |
| 61 | _To be added in Phase 1B_ | |
| 81 | _Extracted from README_ | |
| 82 | ||
| 83 | ### Example 1 | |
| 84 | ||
| 85 | ```javascript | |
| 86 | npm install localwatch | |
| 87 | ``` | |
| 88 | ||
| 89 | ### Example 2 | |
| 90 | ||
| 91 | ```javascript | |
| 92 | const Localwatch = require('localwatch') | |
| 93 | ||
| 94 | // watch a dir | |
| 95 | const watch = new Localwatch('./my/dir') | |
| 96 | ||
| 97 | // watch is a readable stream | |
| 98 | ||
| 99 | for await (const diff of watch) { | |
| 100 | // diff is the next batch of changes | |
| 101 | // [{ type: update|delete, filename }, ...] | |
| 102 | } | |
| 103 | ``` | |
| 104 | ||
| 105 | ### Example 3 | |
| 106 | ||
| 107 | ```javascript | |
| 108 | { | |
| 109 | // function that returns true if it should watch it | |
| 110 | // defaults to ignoring .git and corestores | |
| 111 | filter (filename, stream) { ... }, | |
| 112 | // optionally map the diff entries | |
| 113 | map (entry) { return ... }, | |
| 114 | // use relative paths in the diff | |
| 115 | relative: false, | |
| 116 | // include hidden files (.something) | |
| 117 | hidden: false, | |
| 118 | // wait for the watched folder to be idle for 100ms | |
| 119 | // before triggering the batch after a change has happened. | |
| 120 | // disable this if you the watcher to be fully interactive | |
| 121 | settle: true | |
| 122 | } | |
| 123 | ``` | |
| 124 | ||
| 125 | ||
| 126 | ||
| 127 | ## P2P Patterns | |
| 128 | ||
| 129 | - streaming | |
| 62 | 130 | |
| 63 | 131 | ## Semantic Type |
| 64 | 132 |
| … | … | @@ -0,0 +1,34 @@ |
| 1 | { | |
| 2 | "repo": "nanodebug", | |
| 3 | "timestamp": "2026-01-16T23:56:42.590Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [], | |
| 13 | "classes": [], | |
| 14 | "functions": [] | |
| 15 | }, | |
| 16 | "readme": { | |
| 17 | "content": "# nanodebug\n\nA tiny, zero overhead debugging utility.\n\n## Installation\n\n```sh\nnpm install nanodebug\n```\n\n## Usage\n\nBy default, nanodebug is completely noop:\n\n```js\nconst debug = require('nanodebug')()\n\n// Does nothing!\ndebug('You encountered a %s!', '🐛')\n\n// Also does nothing!\ndebug(() => { debug('It accepts functions as well') })\n\n// This... does nothing!\nawait debug(async () => { debug('They can even be async!') })\n```\n\nGo ahead and put some `debug`s in your code and enable nanodebug when :bug: hits the fan:\n\n```js\nconst debug = require('nanodebug')({ enabled: true })\n```\n\nBy default, `debug` will log to stderr using `console.error`, which is also why we were able to specify a formatting string in the examples above. To change this, pass a `log` function in the options:\n\n```js\nconst debug = require('nanodebug')({ log: console.log.bind(console) })\n```\n\nNow, `debug` will instead log to stdout using `console.log`.\n\n## License\n\nApache 2.0\n", | |
| 18 | "sections": [ | |
| 19 | "intro", | |
| 20 | "installation", | |
| 21 | "usage", | |
| 22 | "license" | |
| 23 | ], | |
| 24 | "hasApi": true, | |
| 25 | "hasExamples": true, | |
| 26 | "exampleCount": 3, | |
| 27 | "examples": [ | |
| 28 | "## Usage\n\nBy default, nanodebug is completely noop:", | |
| 29 | "Go ahead and put some `debug`s in your code and enable nanodebug when :bug: hits the fan:", | |
| 30 | "By default, `debug` will log to stderr using `console.error`, which is also why we were able to specify a formatting string in the examples above. To change this, pass a `log` function in the options:" | |
| 31 | ] | |
| 32 | }, | |
| 33 | "patterns": [] | |
| 34 | } |
| … | … | @@ -47,11 +47,37 @@ debug('You encountered a %s!', '🐛') |
| 47 | 47 | |
| 48 | 48 | ## API Documentation |
| 49 | 49 | |
| 50 | _To be enriched in Phase 1B with deep code analysis_ | |
| 50 | _Extracted from README and code analysis_ | |
| 51 | ||
| 52 | ||
| 53 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 54 | ||
| 51 | 55 | |
| 52 | 56 | ## Usage Examples |
| 53 | 57 | |
| 54 | _To be added in Phase 1B_ | |
| 58 | _Extracted from README_ | |
| 59 | ||
| 60 | ### Example 1 | |
| 61 | ||
| 62 | ```javascript | |
| 63 | ## Usage | |
| 64 | ||
| 65 | By default, nanodebug is completely noop: | |
| 66 | ``` | |
| 67 | ||
| 68 | ### Example 2 | |
| 69 | ||
| 70 | ```javascript | |
| 71 | Go ahead and put some `debug`s in your code and enable nanodebug when :bug: hits the fan: | |
| 72 | ``` | |
| 73 | ||
| 74 | ### Example 3 | |
| 75 | ||
| 76 | ```javascript | |
| 77 | By default, `debug` will log to stderr using `console.error`, which is also why we were able to specify a formatting string in the examples above. To change this, pass a `log` function in the options: | |
| 78 | ``` | |
| 79 | ||
| 80 | ||
| 55 | 81 | |
| 56 | 82 | ## Semantic Type |
| 57 | 83 |
| … | … | @@ -0,0 +1,50 @@ |
| 1 | { | |
| 2 | "repo": "netpaste", | |
| 3 | "timestamp": "2026-01-16T23:55:55.637Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js", | |
| 8 | "type": "module" | |
| 9 | } | |
| 10 | }, | |
| 11 | "api": { | |
| 12 | "file": "lib/index.mjs", | |
| 13 | "exports": [], | |
| 14 | "classes": [], | |
| 15 | "functions": [ | |
| 16 | { | |
| 17 | "name": "seed" | |
| 18 | }, | |
| 19 | { | |
| 20 | "name": "copy" | |
| 21 | }, | |
| 22 | { | |
| 23 | "name": "clear" | |
| 24 | }, | |
| 25 | { | |
| 26 | "name": "paste" | |
| 27 | }, | |
| 28 | { | |
| 29 | "name": "generateKeys" | |
| 30 | } | |
| 31 | ] | |
| 32 | }, | |
| 33 | "readme": { | |
| 34 | "content": "# netpaste\n\nCopy and paste over the DHT.\n\n## Usage\n\n```\n# generate a seed\nnetpaate seed\n\n# export default key\nnetpaste export\n> default: abc..123\n\n# import a key under test profile\nnetpaste import test 123..abc\n\n# copy to default profile\nnetpaste copy 'hello, world!'\n\n# paste from another profile\nnetpaste paste --profile test\n> 'some other text...'\n```\n\n## API\n\n#### `netpaste copy <data>`\n\nCopy data to the DHT.\n\n#### `netpaste paste`\n\nPaste data from the DHT.\n\n#### `netpaste seed`\n\nGenerate a seed.\n\n#### `netpaste import <profile> <key>`\n\nImport a key to a given profile.\n\n#### `netpaste export [profile]`\n\nExport a key.\n\n#### Options:\n\n`--profile | -p` -- specify a profile to use. defaults to `default`\n\nProfile keys are stored to `~/.netpaste/<profile>`.\n", | |
| 35 | "sections": [ | |
| 36 | "intro", | |
| 37 | "usage", | |
| 38 | "api" | |
| 39 | ], | |
| 40 | "hasApi": true, | |
| 41 | "hasExamples": true, | |
| 42 | "exampleCount": 1, | |
| 43 | "examples": [ | |
| 44 | "# generate a seed\nnetpaate seed\n\n# export default key\nnetpaste export\n> default: abc..123\n\n# import a key under test profile\nnetpaste import test 123..abc\n\n# copy to default profile\nnetpaste copy 'hello, world!'\n\n# paste from another profile\nnetpaste paste --profile test\n> 'some other text...'" | |
| 45 | ] | |
| 46 | }, | |
| 47 | "patterns": [ | |
| 48 | "cryptography" | |
| 49 | ] | |
| 50 | } |
| … | … | @@ -54,11 +54,50 @@ netpaste copy 'hello, world!' |
| 54 | 54 | |
| 55 | 55 | ## API Documentation |
| 56 | 56 | |
| 57 | _To be enriched in Phase 1B with deep code analysis_ | |
| 57 | _Extracted from README and code analysis_ | |
| 58 | ||
| 59 | ### Functions | |
| 60 | ||
| 61 | - `seed()` | |
| 62 | - `copy()` | |
| 63 | - `clear()` | |
| 64 | - `paste()` | |
| 65 | - `generateKeys()` | |
| 66 | ||
| 67 | ||
| 68 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 69 | ||
| 58 | 70 | |
| 59 | 71 | ## Usage Examples |
| 60 | 72 | |
| 61 | _To be added in Phase 1B_ | |
| 73 | _Extracted from README_ | |
| 74 | ||
| 75 | ### Example 1 | |
| 76 | ||
| 77 | ```javascript | |
| 78 | # generate a seed | |
| 79 | netpaate seed | |
| 80 | ||
| 81 | # export default key | |
| 82 | netpaste export | |
| 83 | > default: abc..123 | |
| 84 | ||
| 85 | # import a key under test profile | |
| 86 | netpaste import test 123..abc | |
| 87 | ||
| 88 | # copy to default profile | |
| 89 | netpaste copy 'hello, world!' | |
| 90 | ||
| 91 | # paste from another profile | |
| 92 | netpaste paste --profile test | |
| 93 | > 'some other text...' | |
| 94 | ``` | |
| 95 | ||
| 96 | ||
| 97 | ||
| 98 | ## P2P Patterns | |
| 99 | ||
| 100 | - cryptography | |
| 62 | 101 | |
| 63 | 102 | ## Semantic Type |
| 64 | 103 |
| … | … | @@ -0,0 +1,58 @@ |
| 1 | { | |
| 2 | "repo": "network-block-device", | |
| 3 | "timestamp": "2026-01-16T23:56:26.840Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "class" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [ | |
| 19 | { | |
| 20 | "name": "NBDServer" | |
| 21 | }, | |
| 22 | { | |
| 23 | "name": "NBDProtocol" | |
| 24 | } | |
| 25 | ], | |
| 26 | "functions": [ | |
| 27 | { | |
| 28 | "name": "writeUint64BE" | |
| 29 | }, | |
| 30 | { | |
| 31 | "name": "readUint64BE" | |
| 32 | }, | |
| 33 | { | |
| 34 | "name": "noop" | |
| 35 | }, | |
| 36 | { | |
| 37 | "name": "noopPromise" | |
| 38 | } | |
| 39 | ] | |
| 40 | }, | |
| 41 | "readme": { | |
| 42 | "content": "# network-block-device\n\nNBD server implemention in JS focused around providing an API for implementing virtual block devices\n\n```\nnpm install -g network-block-device\n```\n\n## Usage\n\n```js\nconst NBDServer = require('network-block-device')\n\nconst blocks = new Map()\n\nconst server = new NBDServer({\n blockSize: 1024, // 1KB\n size: 16 * 1024 * 1024 * 1024, // 16GB block size\n async read (blockIndex) {\n // called when someone wants to read a block, you should return it\n // if no block exists for this index, return null/undefined\n return blocks.get(blockIndex)\n },\n async write (blockIndex, block) {\n // called when someone wants to write a block, you should store it\n blocks.set(blockIndex, block)\n },\n async del (blockIndex) {\n // called when someone wants to delete a block\n blocks.delete(blockIndex)\n }\n})\n\nserver.listen('/tmp/nbd')\n```\n\n# Example\n\n**1. Installation**\n\nFirst of all, you need to install the nbd package, I compiled the version from sourceforge: https://", | |
| 43 | "sections": [ | |
| 44 | "intro", | |
| 45 | "usage", | |
| 46 | "dependencies" | |
| 47 | ], | |
| 48 | "hasApi": true, | |
| 49 | "hasExamples": true, | |
| 50 | "exampleCount": 8, | |
| 51 | "examples": [ | |
| 52 | "npm install -g network-block-device", | |
| 53 | "const NBDServer = require('network-block-device')\n\nconst blocks = new Map()\n\nconst server = new NBDServer({\n blockSize: 1024, // 1KB\n size: 16 * 1024 * 1024 * 1024, // 16GB block size\n async read (blockIndex) {\n // called when someone wants to read a block, you should return it\n // if no block exists for this index, return null/undefined\n return blocks.get(blockIndex)\n },\n async write (blockIndex, block) {\n // called when someone wants to write a block, you should store it\n blocks.set(blockIndex, block)\n },\n async del (blockIndex) {\n // called when someone wants to delete a block\n blocks.delete(blockIndex)\n }\n})\n\nserver.listen('/tmp/nbd')", | |
| 54 | "npm install -g network-block-device" | |
| 55 | ] | |
| 56 | }, | |
| 57 | "patterns": [] | |
| 58 | } |
| … | … | @@ -47,11 +47,73 @@ const server = new NBDServer({ |
| 47 | 47 | |
| 48 | 48 | ## API Documentation |
| 49 | 49 | |
| 50 | _To be enriched in Phase 1B with deep code analysis_ | |
| 50 | _Extracted from README and code analysis_ | |
| 51 | ||
| 52 | ### Classes | |
| 53 | ||
| 54 | - `NBDServer` | |
| 55 | - `NBDProtocol` | |
| 56 | ||
| 57 | ### Functions | |
| 58 | ||
| 59 | - `writeUint64BE()` | |
| 60 | - `readUint64BE()` | |
| 61 | - `noop()` | |
| 62 | - `noopPromise()` | |
| 63 | ||
| 64 | ### Exports | |
| 65 | ||
| 66 | - default: `class` | |
| 67 | ||
| 68 | ||
| 69 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 70 | ||
| 51 | 71 | |
| 52 | 72 | ## Usage Examples |
| 53 | 73 | |
| 54 | _To be added in Phase 1B_ | |
| 74 | _Extracted from README_ | |
| 75 | ||
| 76 | ### Example 1 | |
| 77 | ||
| 78 | ```javascript | |
| 79 | npm install -g network-block-device | |
| 80 | ``` | |
| 81 | ||
| 82 | ### Example 2 | |
| 83 | ||
| 84 | ```javascript | |
| 85 | const NBDServer = require('network-block-device') | |
| 86 | ||
| 87 | const blocks = new Map() | |
| 88 | ||
| 89 | const server = new NBDServer({ | |
| 90 | blockSize: 1024, // 1KB | |
| 91 | size: 16 * 1024 * 1024 * 1024, // 16GB block size | |
| 92 | async read (blockIndex) { | |
| 93 | // called when someone wants to read a block, you should return it | |
| 94 | // if no block exists for this index, return null/undefined | |
| 95 | return blocks.get(blockIndex) | |
| 96 | }, | |
| 97 | async write (blockIndex, block) { | |
| 98 | // called when someone wants to write a block, you should store it | |
| 99 | blocks.set(blockIndex, block) | |
| 100 | }, | |
| 101 | async del (blockIndex) { | |
| 102 | // called when someone wants to delete a block | |
| 103 | blocks.delete(blockIndex) | |
| 104 | } | |
| 105 | }) | |
| 106 | ||
| 107 | server.listen('/tmp/nbd') | |
| 108 | ``` | |
| 109 | ||
| 110 | ### Example 3 | |
| 111 | ||
| 112 | ```javascript | |
| 113 | npm install -g network-block-device | |
| 114 | ``` | |
| 115 | ||
| 116 | ||
| 55 | 117 | |
| 56 | 118 | ## Semantic Type |
| 57 | 119 |
| … | … | @@ -0,0 +1,135 @@ |
| 1 | { | |
| 2 | "repo": "paparam", | |
| 3 | "timestamp": "2026-01-16T23:56:12.129Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [], | |
| 13 | "classes": [ | |
| 14 | { | |
| 15 | "name": "Parser" | |
| 16 | }, | |
| 17 | { | |
| 18 | "name": "Command" | |
| 19 | }, | |
| 20 | { | |
| 21 | "name": "Flag" | |
| 22 | }, | |
| 23 | { | |
| 24 | "name": "Arg" | |
| 25 | }, | |
| 26 | { | |
| 27 | "name": "Rest" | |
| 28 | }, | |
| 29 | { | |
| 30 | "name": "Data" | |
| 31 | }, | |
| 32 | { | |
| 33 | "name": "Validation" | |
| 34 | }, | |
| 35 | { | |
| 36 | "name": "Bail" | |
| 37 | } | |
| 38 | ], | |
| 39 | "functions": [ | |
| 40 | { | |
| 41 | "name": "argv" | |
| 42 | }, | |
| 43 | { | |
| 44 | "name": "command" | |
| 45 | }, | |
| 46 | { | |
| 47 | "name": "hiddenCommand" | |
| 48 | }, | |
| 49 | { | |
| 50 | "name": "bail" | |
| 51 | }, | |
| 52 | { | |
| 53 | "name": "sloppy" | |
| 54 | }, | |
| 55 | { | |
| 56 | "name": "summary" | |
| 57 | }, | |
| 58 | { | |
| 59 | "name": "description" | |
| 60 | }, | |
| 61 | { | |
| 62 | "name": "header" | |
| 63 | }, | |
| 64 | { | |
| 65 | "name": "footer" | |
| 66 | }, | |
| 67 | { | |
| 68 | "name": "hiddenFlag" | |
| 69 | }, | |
| 70 | { | |
| 71 | "name": "flag" | |
| 72 | }, | |
| 73 | { | |
| 74 | "name": "rest" | |
| 75 | }, | |
| 76 | { | |
| 77 | "name": "arg" | |
| 78 | }, | |
| 79 | { | |
| 80 | "name": "validate" | |
| 81 | }, | |
| 82 | { | |
| 83 | "name": "unindent" | |
| 84 | }, | |
| 85 | { | |
| 86 | "name": "trimLine" | |
| 87 | }, | |
| 88 | { | |
| 89 | "name": "snakeToCamel" | |
| 90 | }, | |
| 91 | { | |
| 92 | "name": "parseFlag" | |
| 93 | }, | |
| 94 | { | |
| 95 | "name": "trimFlag" | |
| 96 | }, | |
| 97 | { | |
| 98 | "name": "createBail" | |
| 99 | }, | |
| 100 | { | |
| 101 | "name": "defaultFlag" | |
| 102 | }, | |
| 103 | { | |
| 104 | "name": "dedent" | |
| 105 | }, | |
| 106 | { | |
| 107 | "name": "runValidation" | |
| 108 | }, | |
| 109 | { | |
| 110 | "name": "runSync" | |
| 111 | }, | |
| 112 | { | |
| 113 | "name": "runAsync" | |
| 114 | } | |
| 115 | ] | |
| 116 | }, | |
| 117 | "readme": { | |
| 118 | "content": "# paparam\n\nStrict and fair parameter papa\n\n```\nnpm install paparam\n```\n\n## Usage\n\n### Simple Command\n\nUse `paparam` to build a simple cli parser. Here is an example app invocation from the command line:\n\n```bash\n> app -i uuid-284h43j -b peer1 -b peer2 --storage /tmp/file/place link-32832uifsdjsfda\n```\n\nTo handle this invocation, here is the `paparam` code\n\n```js\nimport { header, summary, command, flag, arg } from 'paparam'\nconst cmd = command(\n 'run',\n header('A simple example app'),\n summary('Example app that uses a roomLink to join a room and do work.'),\n arg('<roomLink>', 'the room link key'),\n flag('--uuid|-i [uuid]', 'The specific schema uuid to use'),\n flag('--user|-u [user]', 'The user name associated with the entry'),\n flag('--storage|-s [storage]', 'Path to storage directory'),\n flag('--blind|-b [blind]', 'Blind peer keys (can be specified multiple times)').multiple()\n)\nconst program = cmd.parse() // default args: process.argv.slice(2)\nif (program === null) throw new E", | |
| 119 | "sections": [ | |
| 120 | "intro", | |
| 121 | "usage", | |
| 122 | "api", | |
| 123 | "license" | |
| 124 | ], | |
| 125 | "hasApi": true, | |
| 126 | "hasExamples": true, | |
| 127 | "exampleCount": 6, | |
| 128 | "examples": [ | |
| 129 | "npm install paparam", | |
| 130 | "To handle this invocation, here is the `paparam` code", | |
| 131 | "### Composed Commands\n\nUse `paparam` exports to compose commands together:" | |
| 132 | ] | |
| 133 | }, | |
| 134 | "patterns": [] | |
| 135 | } |
| … | … | @@ -47,11 +47,76 @@ To handle this invocation, here is the `paparam` code |
| 47 | 47 | |
| 48 | 48 | ## API Documentation |
| 49 | 49 | |
| 50 | _To be enriched in Phase 1B with deep code analysis_ | |
| 50 | _Extracted from README and code analysis_ | |
| 51 | ||
| 52 | ### Classes | |
| 53 | ||
| 54 | - `Parser` | |
| 55 | - `Command` | |
| 56 | - `Flag` | |
| 57 | - `Arg` | |
| 58 | - `Rest` | |
| 59 | - `Data` | |
| 60 | - `Validation` | |
| 61 | - `Bail` | |
| 62 | ||
| 63 | ### Functions | |
| 64 | ||
| 65 | - `argv()` | |
| 66 | - `command()` | |
| 67 | - `hiddenCommand()` | |
| 68 | - `bail()` | |
| 69 | - `sloppy()` | |
| 70 | - `summary()` | |
| 71 | - `description()` | |
| 72 | - `header()` | |
| 73 | - `footer()` | |
| 74 | - `hiddenFlag()` | |
| 75 | - `flag()` | |
| 76 | - `rest()` | |
| 77 | - `arg()` | |
| 78 | - `validate()` | |
| 79 | - `unindent()` | |
| 80 | - `trimLine()` | |
| 81 | - `snakeToCamel()` | |
| 82 | - `parseFlag()` | |
| 83 | - `trimFlag()` | |
| 84 | - `createBail()` | |
| 85 | - `defaultFlag()` | |
| 86 | - `dedent()` | |
| 87 | - `runValidation()` | |
| 88 | - `runSync()` | |
| 89 | - `runAsync()` | |
| 90 | ||
| 91 | ||
| 92 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 93 | ||
| 51 | 94 | |
| 52 | 95 | ## Usage Examples |
| 53 | 96 | |
| 54 | _To be added in Phase 1B_ | |
| 97 | _Extracted from README_ | |
| 98 | ||
| 99 | ### Example 1 | |
| 100 | ||
| 101 | ```javascript | |
| 102 | npm install paparam | |
| 103 | ``` | |
| 104 | ||
| 105 | ### Example 2 | |
| 106 | ||
| 107 | ```javascript | |
| 108 | To handle this invocation, here is the `paparam` code | |
| 109 | ``` | |
| 110 | ||
| 111 | ### Example 3 | |
| 112 | ||
| 113 | ```javascript | |
| 114 | ### Composed Commands | |
| 115 | ||
| 116 | Use `paparam` exports to compose commands together: | |
| 117 | ``` | |
| 118 | ||
| 119 | ||
| 55 | 120 | |
| 56 | 121 | ## Semantic Type |
| 57 | 122 |
| … | … | @@ -0,0 +1,44 @@ |
| 1 | { | |
| 2 | "repo": "pear-api", | |
| 3 | "timestamp": "2026-01-16T23:56:42.974Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "API" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [ | |
| 19 | { | |
| 20 | "name": "API" | |
| 21 | }, | |
| 22 | { | |
| 23 | "name": "DeprecatedWorker" | |
| 24 | } | |
| 25 | ], | |
| 26 | "functions": [ | |
| 27 | { | |
| 28 | "name": "noop" | |
| 29 | } | |
| 30 | ] | |
| 31 | }, | |
| 32 | "readme": { | |
| 33 | "content": "# pear-api\n\n> Pear API Base Class\n\n## `pear-api`\n\nSupplies the API base for the Pear API (https://docs.pears.com/reference/api).\n\nFor extending from for User Interface integrations.\n\n# LICENSE\n\nApache 2.0\n", | |
| 34 | "sections": [ | |
| 35 | "intro", | |
| 36 | "`pear-api`" | |
| 37 | ], | |
| 38 | "hasApi": false, | |
| 39 | "hasExamples": false, | |
| 40 | "exampleCount": 0, | |
| 41 | "examples": [] | |
| 42 | }, | |
| 43 | "patterns": [] | |
| 44 | } |
| … | … | @@ -55,7 +55,24 @@ Apache 2.0 |
| 55 | 55 | |
| 56 | 56 | ## API Documentation |
| 57 | 57 | |
| 58 | _To be enriched in Phase 1B with deep code analysis_ | |
| 58 | _Extracted from code analysis_ | |
| 59 | ||
| 60 | ### Classes | |
| 61 | ||
| 62 | - `API` | |
| 63 | - `DeprecatedWorker` | |
| 64 | ||
| 65 | ### Functions | |
| 66 | ||
| 67 | - `noop()` | |
| 68 | ||
| 69 | ### Exports | |
| 70 | ||
| 71 | - default: `API` | |
| 72 | ||
| 73 | ||
| 74 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 75 | ||
| 59 | 76 | |
| 60 | 77 | ## Usage Examples |
| 61 | 78 |
| … | … | @@ -0,0 +1,22 @@ |
| 1 | { | |
| 2 | "repo": "pear-appling", | |
| 3 | "timestamp": "2026-01-16T23:55:44.990Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": {} | |
| 7 | }, | |
| 8 | "api": {}, | |
| 9 | "readme": { | |
| 10 | "content": "# pear-appling\n\nTemplate repository for creating Pear applings.\n\n## Building\n\nReplace the placeholders in [`CMakeLists.txt`](CMakeLists.txt) with appropriate values and then build the appling:\n\n```console\nnpm i -g bare-make\nnpm i\nbare-make generate\nbare-make build\n```\n\n## License\n\nApache-2.0\n", | |
| 11 | "sections": [ | |
| 12 | "intro", | |
| 13 | "building", | |
| 14 | "license" | |
| 15 | ], | |
| 16 | "hasApi": false, | |
| 17 | "hasExamples": false, | |
| 18 | "exampleCount": 0, | |
| 19 | "examples": [] | |
| 20 | }, | |
| 21 | "patterns": [] | |
| 22 | } |
| … | … | @@ -42,7 +42,11 @@ Apache-2.0 |
| 42 | 42 | |
| 43 | 43 | ## API Documentation |
| 44 | 44 | |
| 45 | _To be enriched in Phase 1B with deep code analysis_ | |
| 45 | _Extracted from code analysis_ | |
| 46 | ||
| 47 | ||
| 48 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 49 | ||
| 46 | 50 | |
| 47 | 51 | ## Usage Examples |
| 48 | 52 |
| … | … | @@ -0,0 +1,33 @@ |
| 1 | { | |
| 2 | "repo": "pear-desktop", | |
| 3 | "timestamp": "2026-01-16T23:55:57.339Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "type": "module" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [], | |
| 13 | "classes": [], | |
| 14 | "functions": [] | |
| 15 | }, | |
| 16 | "readme": { | |
| 17 | "content": "# Pear Desktop\n\n> The Pear Runtime Pear Desktop Application\n\nPear Desktop is the [pear://runtime](pear://runtime) Application.\n\n## Usage\n\n```\npear run pear://runtime\n```\n\n## Development\n\n```\ngit clone https://github.com/holepunchto/pear-desktop\ncd pear-desktop\npear run --dev .\n```\n\n## License\n\nApache-2.0\n", | |
| 18 | "sections": [ | |
| 19 | "intro", | |
| 20 | "usage", | |
| 21 | "development", | |
| 22 | "license" | |
| 23 | ], | |
| 24 | "hasApi": true, | |
| 25 | "hasExamples": true, | |
| 26 | "exampleCount": 2, | |
| 27 | "examples": [ | |
| 28 | "pear run pear://runtime", | |
| 29 | "git clone https://github.com/holepunchto/pear-desktop\ncd pear-desktop\npear run --dev ." | |
| 30 | ] | |
| 31 | }, | |
| 32 | "patterns": [] | |
| 33 | } |
| … | … | @@ -58,11 +58,31 @@ pear run --dev . |
| 58 | 58 | |
| 59 | 59 | ## API Documentation |
| 60 | 60 | |
| 61 | _To be enriched in Phase 1B with deep code analysis_ | |
| 61 | _Extracted from README and code analysis_ | |
| 62 | ||
| 63 | ||
| 64 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 65 | ||
| 62 | 66 | |
| 63 | 67 | ## Usage Examples |
| 64 | 68 | |
| 65 | _To be added in Phase 1B_ | |
| 69 | _Extracted from README_ | |
| 70 | ||
| 71 | ### Example 1 | |
| 72 | ||
| 73 | ```javascript | |
| 74 | pear run pear://runtime | |
| 75 | ``` | |
| 76 | ||
| 77 | ### Example 2 | |
| 78 | ||
| 79 | ```javascript | |
| 80 | git clone https://github.com/holepunchto/pear-desktop | |
| 81 | cd pear-desktop | |
| 82 | pear run --dev . | |
| 83 | ``` | |
| 84 | ||
| 85 | ||
| 66 | 86 | |
| 67 | 87 | ## Semantic Type |
| 68 | 88 |
| … | … | @@ -0,0 +1,47 @@ |
| 1 | { | |
| 2 | "repo": "pear-electron", | |
| 3 | "timestamp": "2026-01-16T23:56:12.528Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "Pear" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [], | |
| 19 | "functions": [] | |
| 20 | }, | |
| 21 | "readme": { | |
| 22 | "content": "# pear-electron\n\n> Pear User-Interface Library for Electron\n\n## Installation <a name=\"installation\"></a>\n\n```sh\nnpm install pear-electron\n```\n\n## Usage\n\nEnsure the `package.json` `pear` configuration object contains a `pre` field pointing to `pear-electron/pre`.\n\n```js\n{\n \"pear\": {\n \"pre\": \"pear-electron/pre\"\n }\n}\n```\n\nInstantiate a `pear-electron` runtime instance from a Pear Application's entrypoint JavaScript file:\n\n```js\nimport Runtime from 'pear-electron'\nimport Bridge from 'pear-bridge'\n\nconst runtime = new Runtime()\n\nconst bridge = new Bridge()\nawait bridge.ready()\n\nconst pipe = runtime.start({ bridge })\nPear.teardown(() => pipe.end())\n```\n\nCall `runtime.start` to open the UI.\n\n> NOTE: naming the import `Runtime` instead of `PearElectron` is intentional, for two reasons. The `pear-electron` import resolves to a runtime start library or a User Interface library depending on environment and using `Runtime` and `ui` as assigned names means switching out `pear-electron` with an", | |
| 23 | "sections": [ | |
| 24 | "intro", | |
| 25 | "installation <a name=\"installation\"></a>", | |
| 26 | "usage", | |
| 27 | "application configuration <a name=\"application-configuration\"></a>", | |
| 28 | "initialization api <a name=\"initialization-api\"></a>", | |
| 29 | "user-interface api <a name=\"user-interface-api\"></a>", | |
| 30 | "graphical user interface options <a name=\"pear-gui\"></a>", | |
| 31 | "web apis <a name=\"web-apis\"></a>", | |
| 32 | "development <a name=\"development\"></a>" | |
| 33 | ], | |
| 34 | "hasApi": true, | |
| 35 | "hasExamples": true, | |
| 36 | "exampleCount": 16, | |
| 37 | "examples": [ | |
| 38 | "## Usage\n\nEnsure the `package.json` `pear` configuration object contains a `pre` field pointing to `pear-electron/pre`.", | |
| 39 | "Instantiate a `pear-electron` runtime instance from a Pear Application's entrypoint JavaScript file:", | |
| 40 | "Call `runtime.start` to open the UI.\n\n> NOTE: naming the import `Runtime` instead of `PearElectron` is intentional, for two reasons. The `pear-electron` import resolves to a runtime start library or a User Interface library depending on environment and using `Runtime` and `ui` as assigned names means switching out `pear-electron` with an equivalent alternative only involves changing the two `pear-electron` import specifiers.\n\nGiven an `index.html` containing `<script src=\"./app.js\"></script>` in `app.js` import `pear-electron` User Interface API:" | |
| 41 | ] | |
| 42 | }, | |
| 43 | "patterns": [ | |
| 44 | "binary-encoding", | |
| 45 | "streaming" | |
| 46 | ] | |
| 47 | } |
| … | … | @@ -78,11 +78,50 @@ Ensure the `package.json` `pear` configuration object contains a `pre` field poi |
| 78 | 78 | |
| 79 | 79 | ## API Documentation |
| 80 | 80 | |
| 81 | _To be enriched in Phase 1B with deep code analysis_ | |
| 81 | _Extracted from README and code analysis_ | |
| 82 | ||
| 83 | ### Exports | |
| 84 | ||
| 85 | - default: `Pear` | |
| 86 | ||
| 87 | ||
| 88 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 89 | ||
| 82 | 90 | |
| 83 | 91 | ## Usage Examples |
| 84 | 92 | |
| 85 | _To be added in Phase 1B_ | |
| 93 | _Extracted from README_ | |
| 94 | ||
| 95 | ### Example 1 | |
| 96 | ||
| 97 | ```javascript | |
| 98 | ## Usage | |
| 99 | ||
| 100 | Ensure the `package.json` `pear` configuration object contains a `pre` field pointing to `pear-electron/pre`. | |
| 101 | ``` | |
| 102 | ||
| 103 | ### Example 2 | |
| 104 | ||
| 105 | ```javascript | |
| 106 | Instantiate a `pear-electron` runtime instance from a Pear Application's entrypoint JavaScript file: | |
| 107 | ``` | |
| 108 | ||
| 109 | ### Example 3 | |
| 110 | ||
| 111 | ```javascript | |
| 112 | Call `runtime.start` to open the UI. | |
| 113 | ||
| 114 | > NOTE: naming the import `Runtime` instead of `PearElectron` is intentional, for two reasons. The `pear-electron` import resolves to a runtime start library or a User Interface library depending on environment and using `Runtime` and `ui` as assigned names means switching out `pear-electron` with an equivalent alternative only involves changing the two `pear-electron` import specifiers. | |
| 115 | ||
| 116 | Given an `index.html` containing `<script src="./app.js"></script>` in `app.js` import `pear-electron` User Interface API: | |
| 117 | ``` | |
| 118 | ||
| 119 | ||
| 120 | ||
| 121 | ## P2P Patterns | |
| 122 | ||
| 123 | - binary-encoding | |
| 124 | - streaming | |
| 86 | 125 | |
| 87 | 126 | ## Semantic Type |
| 88 | 127 |
| … | … | @@ -0,0 +1,52 @@ |
| 1 | { | |
| 2 | "repo": "protomux-rpc", | |
| 3 | "timestamp": "2026-01-16T23:56:13.429Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js", | |
| 8 | "exports": { | |
| 9 | "./package": "./package.json", | |
| 10 | ".": "./index.js", | |
| 11 | "./errors": "./lib/errors.js" | |
| 12 | } | |
| 13 | } | |
| 14 | }, | |
| 15 | "api": { | |
| 16 | "file": "index.js", | |
| 17 | "exports": [ | |
| 18 | { | |
| 19 | "type": "default", | |
| 20 | "name": "class" | |
| 21 | } | |
| 22 | ], | |
| 23 | "classes": [ | |
| 24 | { | |
| 25 | "name": "ProtomuxRPC" | |
| 26 | } | |
| 27 | ], | |
| 28 | "functions": [] | |
| 29 | }, | |
| 30 | "readme": { | |
| 31 | "content": "# Protomux RPC\n\nSimple RPC over [Protomux](https://github.com/mafintosh/protomux) channels.\n\n```sh\nnpm install protomux-rpc\n```\n\n## Usage\n\nOn the server side:\n\n```js\nconst ProtomuxRPC = require('protomux-rpc')\n\nconst rpc = new ProtomuxRPC(stream)\n\nrpc.respond('echo', (req) => req)\n```\n\nOn the client side:\n\n```js\nconst ProtomuxRPC = require('protomux-rpc')\n\nconst rpc = new ProtomuxRPC(stream)\n\nawait rpc.request('echo', Buffer.from('hello world')))\n// <Buffer 'hello world'>\n```\n\n## API\n\n#### `const rpc = new ProtomuxRPC(stream[, options])`\n\nConstruct a new RPC channel from a framed stream.\n\nOptions include:\n\n```js\n{\n // Optional binary ID to identify this RPC channel\n id: buffer,\n // Optional protocol name\n protocol: 'protomux-rpc',\n // Optional default value encoding\n valueEncoding: encoding,\n // Optional handshake\n handshake: buffer,\n // Optional encoding for the handshake\n handshakeEncoding: encoding\n}\n```\n\n#### `const rpc = new ProtomuxRPC(mux[, options])`\n\nConstruct a new ", | |
| 32 | "sections": [ | |
| 33 | "intro", | |
| 34 | "usage", | |
| 35 | "api", | |
| 36 | "protocol", | |
| 37 | "license" | |
| 38 | ], | |
| 39 | "hasApi": true, | |
| 40 | "hasExamples": true, | |
| 41 | "exampleCount": 5, | |
| 42 | "examples": [ | |
| 43 | "## Usage\n\nOn the server side:", | |
| 44 | "On the client side:", | |
| 45 | "## API\n\n#### `const rpc = new ProtomuxRPC(stream[, options])`\n\nConstruct a new RPC channel from a framed stream.\n\nOptions include:" | |
| 46 | ] | |
| 47 | }, | |
| 48 | "patterns": [ | |
| 49 | "stream-multiplexing", | |
| 50 | "binary-encoding" | |
| 51 | ] | |
| 52 | } |
| … | … | @@ -60,11 +60,56 @@ rpc.respond('echo', (req) => req) |
| 60 | 60 | |
| 61 | 61 | ## API Documentation |
| 62 | 62 | |
| 63 | _To be enriched in Phase 1B with deep code analysis_ | |
| 63 | _Extracted from README and code analysis_ | |
| 64 | ||
| 65 | ### Classes | |
| 66 | ||
| 67 | - `ProtomuxRPC` | |
| 68 | ||
| 69 | ### Exports | |
| 70 | ||
| 71 | - default: `class` | |
| 72 | ||
| 73 | ||
| 74 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 75 | ||
| 64 | 76 | |
| 65 | 77 | ## Usage Examples |
| 66 | 78 | |
| 67 | _To be added in Phase 1B_ | |
| 79 | _Extracted from README_ | |
| 80 | ||
| 81 | ### Example 1 | |
| 82 | ||
| 83 | ```javascript | |
| 84 | ## Usage | |
| 85 | ||
| 86 | On the server side: | |
| 87 | ``` | |
| 88 | ||
| 89 | ### Example 2 | |
| 90 | ||
| 91 | ```javascript | |
| 92 | On the client side: | |
| 93 | ``` | |
| 94 | ||
| 95 | ### Example 3 | |
| 96 | ||
| 97 | ```javascript | |
| 98 | ## API | |
| 99 | ||
| 100 | #### `const rpc = new ProtomuxRPC(stream[, options])` | |
| 101 | ||
| 102 | Construct a new RPC channel from a framed stream. | |
| 103 | ||
| 104 | Options include: | |
| 105 | ``` | |
| 106 | ||
| 107 | ||
| 108 | ||
| 109 | ## P2P Patterns | |
| 110 | ||
| 111 | - stream-multiplexing | |
| 112 | - binary-encoding | |
| 68 | 113 | |
| 69 | 114 | ## Semantic Type |
| 70 | 115 |
| … | … | @@ -0,0 +1,37 @@ |
| 1 | { | |
| 2 | "repo": "quickbit-universal", | |
| 3 | "timestamp": "2026-01-16T23:56:13.803Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "fallback" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [], | |
| 19 | "functions": [] | |
| 20 | }, | |
| 21 | "readme": { | |
| 22 | "content": "# quickbit-universal\n\nUniversal wrapper for https://github.com/holepunchto/libquickbit with a JavaScript fallback.\n\n```sh\nnpm install quickbit-universal\n```\n\n## Usage\n\n```js\nconst { get, set, findFirst } = require('quickbit-native')\n\nconst field = Buffer.alloc(256) // 2048 bits\n\nconst changed = set(field, 1000)\n// true\n\nget(field, 1000)\n// true\n\nfindFirst(field, true)\n// 1000\n```\n\n## API\n\n#### `const b = get(field, bit)`\n\nGet the given bit, which will either be `true` (set) or `false` (unset).\n\n#### `const changed = set(field, bit[, value])`\n\nSet the given bit to `value`, which defaults to `true`. Returns `true` if the bit changed, otherwise `false`.\n\n#### `field = fill(field, value[, start[, end]])`\n\nFill the given bit range with `value`. `start` defaults to `0` and `end` defaults to the bit length of the field. Returns the modified field.\n\n#### `clear(field, chunk)`\n\nClear the bits from `field` that are set in the `{ field, offset }` chunk.\n\n#### `const i = findFirst(field, value[, p", | |
| 23 | "sections": [ | |
| 24 | "intro", | |
| 25 | "usage", | |
| 26 | "api", | |
| 27 | "license" | |
| 28 | ], | |
| 29 | "hasApi": true, | |
| 30 | "hasExamples": true, | |
| 31 | "exampleCount": 1, | |
| 32 | "examples": [ | |
| 33 | "## Usage" | |
| 34 | ] | |
| 35 | }, | |
| 36 | "patterns": [] | |
| 37 | } |
| … | … | @@ -52,11 +52,27 @@ get(field, 1000) |
| 52 | 52 | |
| 53 | 53 | ## API Documentation |
| 54 | 54 | |
| 55 | _To be enriched in Phase 1B with deep code analysis_ | |
| 55 | _Extracted from README and code analysis_ | |
| 56 | ||
| 57 | ### Exports | |
| 58 | ||
| 59 | - default: `fallback` | |
| 60 | ||
| 61 | ||
| 62 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 63 | ||
| 56 | 64 | |
| 57 | 65 | ## Usage Examples |
| 58 | 66 | |
| 59 | _To be added in Phase 1B_ | |
| 67 | _Extracted from README_ | |
| 68 | ||
| 69 | ### Example 1 | |
| 70 | ||
| 71 | ```javascript | |
| 72 | ## Usage | |
| 73 | ``` | |
| 74 | ||
| 75 | ||
| 60 | 76 | |
| 61 | 77 | ## Semantic Type |
| 62 | 78 |
| … | … | @@ -0,0 +1,50 @@ |
| 1 | { | |
| 2 | "repo": "same-object", | |
| 3 | "timestamp": "2026-01-16T23:56:27.629Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "same" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [], | |
| 19 | "functions": [ | |
| 20 | { | |
| 21 | "name": "same" | |
| 22 | }, | |
| 23 | { | |
| 24 | "name": "sameObject" | |
| 25 | }, | |
| 26 | { | |
| 27 | "name": "getType" | |
| 28 | } | |
| 29 | ] | |
| 30 | }, | |
| 31 | "readme": { | |
| 32 | "content": "# same-object\n\nDetermine if two objects are deeply equal\n\n```\nnpm install same-object\n```\n\nSupports circular references, Maps, Symbols, etc.\n\nAims for ~99% compatibility with `deep-equal` or `assert.deepEqual` without requiring native dependencies.\\\nUseful for JavaScript runtimes without native Node modules like `util`, etc.\n\n## Usage\n\n```js\nconst sameObject = require('same-object')\n\nconsole.log(sameObject(1, '1')) // true\nconsole.log(sameObject(1, '1', { strict: true })) // false\n\nconsole.log(sameObject({ a: 1 }, { a: 1 })) // true\nconsole.log(sameObject({ a: 1 }, { a: 1, b: 2 })) // false\n\nconsole.log(sameObject(new Set(['a', 1, 'b', 2]), new Set(['b', 2, 'a', 1]))) // true\n```\n\n## API\n\n#### `const bool = sameObject(a, b, [options])`\n\nCompares `a` and `b`, returning whether they are equal or not.\n\nAvailable `options`:\n\n```js\n{\n strict: false\n}\n```\n\nLoosely comparison (`==`) by default.\\\nUse `{ strict: true }` for a stronger equality check (`===`).\n\n## References\n\nThe source code is ", | |
| 33 | "sections": [ | |
| 34 | "intro", | |
| 35 | "usage", | |
| 36 | "api", | |
| 37 | "references", | |
| 38 | "license" | |
| 39 | ], | |
| 40 | "hasApi": true, | |
| 41 | "hasExamples": true, | |
| 42 | "exampleCount": 3, | |
| 43 | "examples": [ | |
| 44 | "npm install same-object", | |
| 45 | "const sameObject = require('same-object')\n\nconsole.log(sameObject(1, '1')) // true\nconsole.log(sameObject(1, '1', { strict: true })) // false\n\nconsole.log(sameObject({ a: 1 }, { a: 1 })) // true\nconsole.log(sameObject({ a: 1 }, { a: 1, b: 2 })) // false\n\nconsole.log(sameObject(new Set(['a', 1, 'b', 2]), new Set(['b', 2, 'a', 1]))) // true", | |
| 46 | "{\n strict: false\n}" | |
| 47 | ] | |
| 48 | }, | |
| 49 | "patterns": [] | |
| 50 | } |
| … | … | @@ -47,11 +47,55 @@ console.log(sameObject(1, '1', { strict: true })) // false |
| 47 | 47 | |
| 48 | 48 | ## API Documentation |
| 49 | 49 | |
| 50 | _To be enriched in Phase 1B with deep code analysis_ | |
| 50 | _Extracted from README and code analysis_ | |
| 51 | ||
| 52 | ### Functions | |
| 53 | ||
| 54 | - `same()` | |
| 55 | - `sameObject()` | |
| 56 | - `getType()` | |
| 57 | ||
| 58 | ### Exports | |
| 59 | ||
| 60 | - default: `same` | |
| 61 | ||
| 62 | ||
| 63 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 64 | ||
| 51 | 65 | |
| 52 | 66 | ## Usage Examples |
| 53 | 67 | |
| 54 | _To be added in Phase 1B_ | |
| 68 | _Extracted from README_ | |
| 69 | ||
| 70 | ### Example 1 | |
| 71 | ||
| 72 | ```javascript | |
| 73 | npm install same-object | |
| 74 | ``` | |
| 75 | ||
| 76 | ### Example 2 | |
| 77 | ||
| 78 | ```javascript | |
| 79 | const sameObject = require('same-object') | |
| 80 | ||
| 81 | console.log(sameObject(1, '1')) // true | |
| 82 | console.log(sameObject(1, '1', { strict: true })) // false | |
| 83 | ||
| 84 | console.log(sameObject({ a: 1 }, { a: 1 })) // true | |
| 85 | console.log(sameObject({ a: 1 }, { a: 1, b: 2 })) // false | |
| 86 | ||
| 87 | console.log(sameObject(new Set(['a', 1, 'b', 2]), new Set(['b', 2, 'a', 1]))) // true | |
| 88 | ``` | |
| 89 | ||
| 90 | ### Example 3 | |
| 91 | ||
| 92 | ```javascript | |
| 93 | { | |
| 94 | strict: false | |
| 95 | } | |
| 96 | ``` | |
| 97 | ||
| 98 | ||
| 55 | 99 | |
| 56 | 100 | ## Semantic Type |
| 57 | 101 |
| … | … | @@ -0,0 +1,45 @@ |
| 1 | { | |
| 2 | "repo": "scope-lock", | |
| 3 | "timestamp": "2026-01-16T23:55:51.638Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "class" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [ | |
| 19 | { | |
| 20 | "name": "ScopeLock" | |
| 21 | } | |
| 22 | ], | |
| 23 | "functions": [ | |
| 24 | { | |
| 25 | "name": "setTmpResolve" | |
| 26 | } | |
| 27 | ] | |
| 28 | }, | |
| 29 | "readme": { | |
| 30 | "content": "# scope-lock\n\nSome concurrency semantics around entering scopes\n\n```\nnpm install scope-lock\n```\n\n## Usage\n\n```js\nconst ScopeLock = require('scope-lock')\n\n// normal lock runs all entries in the lock list\nconst l = new ScopeLock()\n\nawait l.lock()\n// ... do your thing\nl.unlock()\n\n// debounced lock runs first and last entry in the lock list\nconst d = new ScopeLock({ debounce: true }) // debounced lock\n\nif (await d.lock()) {\n // if we get lock do our thing\n}\n\n// wait for all current work to drain\nawait d.flush()\n```\n\n## License\n\nApache-2.0\n", | |
| 31 | "sections": [ | |
| 32 | "intro", | |
| 33 | "usage", | |
| 34 | "license" | |
| 35 | ], | |
| 36 | "hasApi": true, | |
| 37 | "hasExamples": true, | |
| 38 | "exampleCount": 2, | |
| 39 | "examples": [ | |
| 40 | "npm install scope-lock", | |
| 41 | "const ScopeLock = require('scope-lock')\n\n// normal lock runs all entries in the lock list\nconst l = new ScopeLock()\n\nawait l.lock()\n// ... do your thing\nl.unlock()\n\n// debounced lock runs first and last entry in the lock list\nconst d = new ScopeLock({ debounce: true }) // debounced lock\n\nif (await d.lock()) {\n // if we get lock do our thing\n}\n\n// wait for all current work to drain\nawait d.flush()" | |
| 42 | ] | |
| 43 | }, | |
| 44 | "patterns": [] | |
| 45 | } |
| … | … | @@ -47,11 +47,58 @@ l.unlock() |
| 47 | 47 | |
| 48 | 48 | ## API Documentation |
| 49 | 49 | |
| 50 | _To be enriched in Phase 1B with deep code analysis_ | |
| 50 | _Extracted from README and code analysis_ | |
| 51 | ||
| 52 | ### Classes | |
| 53 | ||
| 54 | - `ScopeLock` | |
| 55 | ||
| 56 | ### Functions | |
| 57 | ||
| 58 | - `setTmpResolve()` | |
| 59 | ||
| 60 | ### Exports | |
| 61 | ||
| 62 | - default: `class` | |
| 63 | ||
| 64 | ||
| 65 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 66 | ||
| 51 | 67 | |
| 52 | 68 | ## Usage Examples |
| 53 | 69 | |
| 54 | _To be added in Phase 1B_ | |
| 70 | _Extracted from README_ | |
| 71 | ||
| 72 | ### Example 1 | |
| 73 | ||
| 74 | ```javascript | |
| 75 | npm install scope-lock | |
| 76 | ``` | |
| 77 | ||
| 78 | ### Example 2 | |
| 79 | ||
| 80 | ```javascript | |
| 81 | const ScopeLock = require('scope-lock') | |
| 82 | ||
| 83 | // normal lock runs all entries in the lock list | |
| 84 | const l = new ScopeLock() | |
| 85 | ||
| 86 | await l.lock() | |
| 87 | // ... do your thing | |
| 88 | l.unlock() | |
| 89 | ||
| 90 | // debounced lock runs first and last entry in the lock list | |
| 91 | const d = new ScopeLock({ debounce: true }) // debounced lock | |
| 92 | ||
| 93 | if (await d.lock()) { | |
| 94 | // if we get lock do our thing | |
| 95 | } | |
| 96 | ||
| 97 | // wait for all current work to drain | |
| 98 | await d.flush() | |
| 99 | ``` | |
| 100 | ||
| 101 | ||
| 55 | 102 | |
| 56 | 103 | ## Semantic Type |
| 57 | 104 |
| … | … | @@ -0,0 +1,51 @@ |
| 1 | { | |
| 2 | "repo": "secure-prompt", | |
| 3 | "timestamp": "2026-01-16T23:56:27.978Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "function" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [], | |
| 19 | "functions": [ | |
| 20 | { | |
| 21 | "name": "prompt" | |
| 22 | }, | |
| 23 | { | |
| 24 | "name": "init" | |
| 25 | }, | |
| 26 | { | |
| 27 | "name": "doPrompt" | |
| 28 | }, | |
| 29 | { | |
| 30 | "name": "done" | |
| 31 | } | |
| 32 | ] | |
| 33 | }, | |
| 34 | "readme": { | |
| 35 | "content": "# secure-prompt\n\nSecurely prompt stdio using secure buffers\n\n```\nnpm install secure-prompt\n```\n\n## Usage\n\n``` js\nconst prompt = require('secure-prompt')\nconst buffer = await prompt() // user input in buffer\n\nconsole.log(buffer) // will crash\nsodium.sodium_mprotect_readonly(buffer)\nconsole.log(buffer) // prints the buffer\n```\n\n## License\n\nApache-2.0\n", | |
| 36 | "sections": [ | |
| 37 | "intro", | |
| 38 | "usage", | |
| 39 | "license" | |
| 40 | ], | |
| 41 | "hasApi": true, | |
| 42 | "hasExamples": true, | |
| 43 | "exampleCount": 1, | |
| 44 | "examples": [ | |
| 45 | "npm install secure-prompt" | |
| 46 | ] | |
| 47 | }, | |
| 48 | "patterns": [ | |
| 49 | "cryptography" | |
| 50 | ] | |
| 51 | } |
| … | … | @@ -51,11 +51,38 @@ console.log(buffer) // prints the buffer |
| 51 | 51 | |
| 52 | 52 | ## API Documentation |
| 53 | 53 | |
| 54 | _To be enriched in Phase 1B with deep code analysis_ | |
| 54 | _Extracted from README and code analysis_ | |
| 55 | ||
| 56 | ### Functions | |
| 57 | ||
| 58 | - `prompt()` | |
| 59 | - `init()` | |
| 60 | - `doPrompt()` | |
| 61 | - `done()` | |
| 62 | ||
| 63 | ### Exports | |
| 64 | ||
| 65 | - default: `function` | |
| 66 | ||
| 67 | ||
| 68 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 69 | ||
| 55 | 70 | |
| 56 | 71 | ## Usage Examples |
| 57 | 72 | |
| 58 | _To be added in Phase 1B_ | |
| 73 | _Extracted from README_ | |
| 74 | ||
| 75 | ### Example 1 | |
| 76 | ||
| 77 | ```javascript | |
| 78 | npm install secure-prompt | |
| 79 | ``` | |
| 80 | ||
| 81 | ||
| 82 | ||
| 83 | ## P2P Patterns | |
| 84 | ||
| 85 | - cryptography | |
| 59 | 86 | |
| 60 | 87 | ## Semantic Type |
| 61 | 88 |
| … | … | @@ -0,0 +1,67 @@ |
| 1 | { | |
| 2 | "repo": "semifies", | |
| 3 | "timestamp": "2026-01-16T23:56:03.220Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "satisfies" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [], | |
| 19 | "functions": [ | |
| 20 | { | |
| 21 | "name": "satisfies" | |
| 22 | }, | |
| 23 | { | |
| 24 | "name": "checkAll" | |
| 25 | }, | |
| 26 | { | |
| 27 | "name": "match" | |
| 28 | }, | |
| 29 | { | |
| 30 | "name": "compile" | |
| 31 | }, | |
| 32 | { | |
| 33 | "name": "inc" | |
| 34 | }, | |
| 35 | { | |
| 36 | "name": "num" | |
| 37 | }, | |
| 38 | { | |
| 39 | "name": "numOrString" | |
| 40 | }, | |
| 41 | { | |
| 42 | "name": "ok" | |
| 43 | }, | |
| 44 | { | |
| 45 | "name": "parse" | |
| 46 | }, | |
| 47 | { | |
| 48 | "name": "test" | |
| 49 | } | |
| 50 | ] | |
| 51 | }, | |
| 52 | "readme": { | |
| 53 | "content": "# semifies\n\nSlimmed down satisfies from semver\n\n```\nnpm install semifies\n```\n\n## Usage\n\n``` js\nconst semifies = require('semifies')\n\n// same-ish as semver.satisfies\n\nconsole.log(semifies('1.5.0', '^1.3.0')) // true\nconsole.log(semifies('2.0.0', '^1.3.0')) // false\nconsole.log(semifies('2.0.0', '^1.3.0 || ~2.0.0')) // true\n```\n\nPasses the test fixtures from semver\n\n## License\n\nApache-2.0\n", | |
| 54 | "sections": [ | |
| 55 | "intro", | |
| 56 | "usage", | |
| 57 | "license" | |
| 58 | ], | |
| 59 | "hasApi": true, | |
| 60 | "hasExamples": true, | |
| 61 | "exampleCount": 1, | |
| 62 | "examples": [ | |
| 63 | "npm install semifies" | |
| 64 | ] | |
| 65 | }, | |
| 66 | "patterns": [] | |
| 67 | } |
| … | … | @@ -47,11 +47,40 @@ console.log(semifies('2.0.0', '^1.3.0 || ~2.0.0')) // true |
| 47 | 47 | |
| 48 | 48 | ## API Documentation |
| 49 | 49 | |
| 50 | _To be enriched in Phase 1B with deep code analysis_ | |
| 50 | _Extracted from README and code analysis_ | |
| 51 | ||
| 52 | ### Functions | |
| 53 | ||
| 54 | - `satisfies()` | |
| 55 | - `checkAll()` | |
| 56 | - `match()` | |
| 57 | - `compile()` | |
| 58 | - `inc()` | |
| 59 | - `num()` | |
| 60 | - `numOrString()` | |
| 61 | - `ok()` | |
| 62 | - `parse()` | |
| 63 | - `test()` | |
| 64 | ||
| 65 | ### Exports | |
| 66 | ||
| 67 | - default: `satisfies` | |
| 68 | ||
| 69 | ||
| 70 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 71 | ||
| 51 | 72 | |
| 52 | 73 | ## Usage Examples |
| 53 | 74 | |
| 54 | _To be added in Phase 1B_ | |
| 75 | _Extracted from README_ | |
| 76 | ||
| 77 | ### Example 1 | |
| 78 | ||
| 79 | ```javascript | |
| 80 | npm install semifies | |
| 81 | ``` | |
| 82 | ||
| 83 | ||
| 55 | 84 | |
| 56 | 85 | ## Semantic Type |
| 57 | 86 |
| … | … | @@ -0,0 +1,73 @@ |
| 1 | { | |
| 2 | "repo": "serve-drive", | |
| 3 | "timestamp": "2026-01-16T23:55:51.984Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "class" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [ | |
| 19 | { | |
| 20 | "name": "ServeDrive" | |
| 21 | } | |
| 22 | ], | |
| 23 | "functions": [ | |
| 24 | { | |
| 25 | "name": "onclose" | |
| 26 | }, | |
| 27 | { | |
| 28 | "name": "listen" | |
| 29 | }, | |
| 30 | { | |
| 31 | "name": "done" | |
| 32 | }, | |
| 33 | { | |
| 34 | "name": "nool" | |
| 35 | }, | |
| 36 | { | |
| 37 | "name": "noop" | |
| 38 | }, | |
| 39 | { | |
| 40 | "name": "getHost" | |
| 41 | }, | |
| 42 | { | |
| 43 | "name": "parseURL" | |
| 44 | }, | |
| 45 | { | |
| 46 | "name": "encodePathName" | |
| 47 | }, | |
| 48 | { | |
| 49 | "name": "decodePathName" | |
| 50 | } | |
| 51 | ] | |
| 52 | }, | |
| 53 | "readme": { | |
| 54 | "content": "# serve-drive\n\nHTTP drive server for entries delivery. Auto detects types like video, images, etc\n\n```\nnpm i serve-drive\n```\n\n## Usage\n\nSingle drive:\n```js\nconst ServeDrive = require('serve-drive')\nconst Localdrive = require('localdrive')\n\nconst drive = new Localdrive('./my-folder')\nawait drive.put('/index.html', Buffer.from('hi'))\n\nconst serve = new ServeDrive({ get: ({ key, filename, version }) => drive })\nawait serve.ready()\nconsole.log('Listening on http://localhost:' + serve.address().port)\n\n// Try visiting http://localhost:49833/index.html\n```\n\nMultiple drives:\n```js\nconst Localdrive = require('localdrive')\nconst Hyperdrive = require('hyperdrive')\nconst Corestore = require('corestore')\n\nconst drive1 = new Localdrive('./my-folder-a')\nconst drive2 = new Hyperdrive(new Corestore('./store1'))\n\nawait drive1.put('/index.html', Buffer.from('a'))\nawait drive2.put('/index.html', Buffer.from('b'))\n\nconst serve = new ServeDrive({\n get ({ key, filename, version }) {\n if (key === null) re", | |
| 55 | "sections": [ | |
| 56 | "intro", | |
| 57 | "usage", | |
| 58 | "api", | |
| 59 | "license" | |
| 60 | ], | |
| 61 | "hasApi": true, | |
| 62 | "hasExamples": true, | |
| 63 | "exampleCount": 5, | |
| 64 | "examples": [ | |
| 65 | "npm i serve-drive", | |
| 66 | "const ServeDrive = require('serve-drive')\nconst Localdrive = require('localdrive')\n\nconst drive = new Localdrive('./my-folder')\nawait drive.put('/index.html', Buffer.from('hi'))\n\nconst serve = new ServeDrive({ get: ({ key, filename, version }) => drive })\nawait serve.ready()\nconsole.log('Listening on http://localhost:' + serve.address().port)\n\n// Try visiting http://localhost:49833/index.html", | |
| 67 | "const Localdrive = require('localdrive')\nconst Hyperdrive = require('hyperdrive')\nconst Corestore = require('corestore')\n\nconst drive1 = new Localdrive('./my-folder-a')\nconst drive2 = new Hyperdrive(new Corestore('./store1'))\n\nawait drive1.put('/index.html', Buffer.from('a'))\nawait drive2.put('/index.html', Buffer.from('b'))\n\nconst serve = new ServeDrive({\n get ({ key, filename, version }) {\n if (key === null) return drive1 // Default\n if (key.equals(drive2.key)) return drive2\n return null\n }\n})\n\nawait serve.ready()\nconsole.log('Listening on http://localhost:' + serve.address().port)\n\n// Try visiting http://localhost:49833/index.html?key=<id-or-key>" | |
| 68 | ] | |
| 69 | }, | |
| 70 | "patterns": [ | |
| 71 | "streaming" | |
| 72 | ] | |
| 73 | } |
| … | … | @@ -60,11 +60,90 @@ await serve.ready() |
| 60 | 60 | |
| 61 | 61 | ## API Documentation |
| 62 | 62 | |
| 63 | _To be enriched in Phase 1B with deep code analysis_ | |
| 63 | _Extracted from README and code analysis_ | |
| 64 | ||
| 65 | ### Classes | |
| 66 | ||
| 67 | - `ServeDrive` | |
| 68 | ||
| 69 | ### Functions | |
| 70 | ||
| 71 | - `onclose()` | |
| 72 | - `listen()` | |
| 73 | - `done()` | |
| 74 | - `nool()` | |
| 75 | - `noop()` | |
| 76 | - `getHost()` | |
| 77 | - `parseURL()` | |
| 78 | - `encodePathName()` | |
| 79 | - `decodePathName()` | |
| 80 | ||
| 81 | ### Exports | |
| 82 | ||
| 83 | - default: `class` | |
| 84 | ||
| 85 | ||
| 86 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 87 | ||
| 64 | 88 | |
| 65 | 89 | ## Usage Examples |
| 66 | 90 | |
| 67 | _To be added in Phase 1B_ | |
| 91 | _Extracted from README_ | |
| 92 | ||
| 93 | ### Example 1 | |
| 94 | ||
| 95 | ```javascript | |
| 96 | npm i serve-drive | |
| 97 | ``` | |
| 98 | ||
| 99 | ### Example 2 | |
| 100 | ||
| 101 | ```javascript | |
| 102 | const ServeDrive = require('serve-drive') | |
| 103 | const Localdrive = require('localdrive') | |
| 104 | ||
| 105 | const drive = new Localdrive('./my-folder') | |
| 106 | await drive.put('/index.html', Buffer.from('hi')) | |
| 107 | ||
| 108 | const serve = new ServeDrive({ get: ({ key, filename, version }) => drive }) | |
| 109 | await serve.ready() | |
| 110 | console.log('Listening on http://localhost:' + serve.address().port) | |
| 111 | ||
| 112 | // Try visiting http://localhost:49833/index.html | |
| 113 | ``` | |
| 114 | ||
| 115 | ### Example 3 | |
| 116 | ||
| 117 | ```javascript | |
| 118 | const Localdrive = require('localdrive') | |
| 119 | const Hyperdrive = require('hyperdrive') | |
| 120 | const Corestore = require('corestore') | |
| 121 | ||
| 122 | const drive1 = new Localdrive('./my-folder-a') | |
| 123 | const drive2 = new Hyperdrive(new Corestore('./store1')) | |
| 124 | ||
| 125 | await drive1.put('/index.html', Buffer.from('a')) | |
| 126 | await drive2.put('/index.html', Buffer.from('b')) | |
| 127 | ||
| 128 | const serve = new ServeDrive({ | |
| 129 | get ({ key, filename, version }) { | |
| 130 | if (key === null) return drive1 // Default | |
| 131 | if (key.equals(drive2.key)) return drive2 | |
| 132 | return null | |
| 133 | } | |
| 134 | }) | |
| 135 | ||
| 136 | await serve.ready() | |
| 137 | console.log('Listening on http://localhost:' + serve.address().port) | |
| 138 | ||
| 139 | // Try visiting http://localhost:49833/index.html?key=<id-or-key> | |
| 140 | ``` | |
| 141 | ||
| 142 | ||
| 143 | ||
| 144 | ## P2P Patterns | |
| 145 | ||
| 146 | - streaming | |
| 68 | 147 | |
| 69 | 148 | ## Semantic Type |
| 70 | 149 |
| … | … | @@ -0,0 +1,55 @@ |
| 1 | { | |
| 2 | "repo": "slab-hunter", | |
| 3 | "timestamp": "2026-01-16T23:55:52.323Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "setupSlabHunter" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [ | |
| 19 | { | |
| 20 | "name": "LeakOverview" | |
| 21 | } | |
| 22 | ], | |
| 23 | "functions": [ | |
| 24 | { | |
| 25 | "name": "monkeyPatchBuffer" | |
| 26 | }, | |
| 27 | { | |
| 28 | "name": "allocUnsafeMonkeyPatch" | |
| 29 | }, | |
| 30 | { | |
| 31 | "name": "getLeakOverview" | |
| 32 | }, | |
| 33 | { | |
| 34 | "name": "setupSlabHunter" | |
| 35 | } | |
| 36 | ] | |
| 37 | }, | |
| 38 | "readme": { | |
| 39 | "content": "# Slab Hunter\n\nHunt down Buffer slabs which are retaining more memory than they should.\n\nWarning: this is a debugging tool, do not use it in production code.\n\nIt detects two behaviours indicative of potential memory leaks:\n- Slab retainers: long-lived buffers which are part of a slab.\n - A typical leak here is caused by using `Buffer.allocUnsafe()` or `Buffer.from()` for long-lived buffers.\n - The solution is to [unslab](https://github.com/holepunchto/unslab) the buffers, or to use `b4a.allocUnsafeSlow()` instead.\n- Big buffers which are long-lived\n - A typical leak here is data being loaded from a networked stream or file-system stream, where the data of a single data-event is all loaded on a shared slab, and some long-lived data is defined using `Buffer.subarray()` or similar, which does not copy out the data.\n - The solution for such a leak is to take a heap snapshot, based on which you can figure out which buffers are retaining the overall slab, and to explicitly [unsla", | |
| 40 | "sections": [ | |
| 41 | "intro", | |
| 42 | "usage", | |
| 43 | "api" | |
| 44 | ], | |
| 45 | "hasApi": true, | |
| 46 | "hasExamples": true, | |
| 47 | "exampleCount": 6, | |
| 48 | "examples": [ | |
| 49 | "npm i -g slab-hunter\nslab-hunter <entrypoint>", | |
| 50 | "slab-hunter index.js", | |
| 51 | "const setupSlabHunter = require('slab-hunter')\n\nconst getLeakStats = setupSlabHunter()\nsetInterval(() => {\n console.log(getLeakStats())\n}, 1000 * 60 * 2)" | |
| 52 | ] | |
| 53 | }, | |
| 54 | "patterns": [] | |
| 55 | } |
| … | … | @@ -51,11 +51,56 @@ Note: this tool works by monkey-patching `Buffer.allocUnsafe` to keep track of t |
| 51 | 51 | |
| 52 | 52 | ## API Documentation |
| 53 | 53 | |
| 54 | _To be enriched in Phase 1B with deep code analysis_ | |
| 54 | _Extracted from README and code analysis_ | |
| 55 | ||
| 56 | ### Classes | |
| 57 | ||
| 58 | - `LeakOverview` | |
| 59 | ||
| 60 | ### Functions | |
| 61 | ||
| 62 | - `monkeyPatchBuffer()` | |
| 63 | - `allocUnsafeMonkeyPatch()` | |
| 64 | - `getLeakOverview()` | |
| 65 | - `setupSlabHunter()` | |
| 66 | ||
| 67 | ### Exports | |
| 68 | ||
| 69 | - default: `setupSlabHunter` | |
| 70 | ||
| 71 | ||
| 72 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 73 | ||
| 55 | 74 | |
| 56 | 75 | ## Usage Examples |
| 57 | 76 | |
| 58 | _To be added in Phase 1B_ | |
| 77 | _Extracted from README_ | |
| 78 | ||
| 79 | ### Example 1 | |
| 80 | ||
| 81 | ```javascript | |
| 82 | npm i -g slab-hunter | |
| 83 | slab-hunter <entrypoint> | |
| 84 | ``` | |
| 85 | ||
| 86 | ### Example 2 | |
| 87 | ||
| 88 | ```javascript | |
| 89 | slab-hunter index.js | |
| 90 | ``` | |
| 91 | ||
| 92 | ### Example 3 | |
| 93 | ||
| 94 | ```javascript | |
| 95 | const setupSlabHunter = require('slab-hunter') | |
| 96 | ||
| 97 | const getLeakStats = setupSlabHunter() | |
| 98 | setInterval(() => { | |
| 99 | console.log(getLeakStats()) | |
| 100 | }, 1000 * 60 * 2) | |
| 101 | ``` | |
| 102 | ||
| 103 | ||
| 59 | 104 | |
| 60 | 105 | ## Semantic Type |
| 61 | 106 |
| … | … | @@ -0,0 +1,50 @@ |
| 1 | { | |
| 2 | "repo": "sloppy-module-parser", | |
| 3 | "timestamp": "2026-01-16T23:56:14.856Z", | |
| 4 | "entryPoint": "parse.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "parse.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "parse.js", | |
| 12 | "exports": [], | |
| 13 | "classes": [], | |
| 14 | "functions": [ | |
| 15 | { | |
| 16 | "name": "init" | |
| 17 | }, | |
| 18 | { | |
| 19 | "name": "parse" | |
| 20 | }, | |
| 21 | { | |
| 22 | "name": "exports" | |
| 23 | }, | |
| 24 | { | |
| 25 | "name": "mjsParse" | |
| 26 | }, | |
| 27 | { | |
| 28 | "name": "parseNames" | |
| 29 | } | |
| 30 | ] | |
| 31 | }, | |
| 32 | "readme": { | |
| 33 | "content": "# sloppy-module-parser\n\nParse imports/exports/requires with a focus on speed over 100% correctness\n\n```\nnpm install sloppy-module-parser\n```\n\nSometimes it might report requires that are indeed not requires but tries to not miss any.\nThis limitation gives it a massive speed boost compared to other parsers.\n\n## Usage\n\n```js\nconst { init, parse } = require('sloppy-module-parser')\n\nawait init() // needed to init the async esm parser used\n\nconsole.log(parse(src))\n```\n\n## API\n\n#### `async parser.init()`\n\nInit the async esm parser. Call this before using the module.\n\n#### `const res = parser.parse(src, type = 'module', strictMode = true)`\n\nParses imports/requires from the source. `type` helps it understand what it should parse for.\n\nType should be one of the following: `module` / `script` / `json`.\n\nIf strict mode is false, and type is not `module`, it autodetects if any `import` / `export` statements\nare used and if so auto corrects the type. This is useful for module interop.\n\nThe returned ", | |
| 34 | "sections": [ | |
| 35 | "intro", | |
| 36 | "usage", | |
| 37 | "api", | |
| 38 | "license" | |
| 39 | ], | |
| 40 | "hasApi": true, | |
| 41 | "hasExamples": true, | |
| 42 | "exampleCount": 3, | |
| 43 | "examples": [ | |
| 44 | "npm install sloppy-module-parser", | |
| 45 | "const { init, parse } = require('sloppy-module-parser')\n\nawait init() // needed to init the async esm parser used\n\nconsole.log(parse(src))", | |
| 46 | "{\n type: 'module',\n resolutions: [\n {\n isImport: boolean, // is it an import or a require\n isAddon: boolean, // is this import / require pointing to a native addon\n position: [statementStart, inputStart, inputEnd], // where is the statement, might be null\n input: string, // the input to import / require, `null` is if it is unknown at parse time\n output: null // what it should resolve to, just set for conveinience\n },\n ...\n ],\n namedImports: [\n {\n isWildcard: boolean, // is it a wildcard import\n isExport: boolean, // reexports the import\n names: [string, ...], // the named imports,\n from: referenceToRelevantResolution\n }\n ],\n exports: [string, ...] // only default populated for esm\n}" | |
| 47 | ] | |
| 48 | }, | |
| 49 | "patterns": [] | |
| 50 | } |
| … | … | @@ -52,11 +52,68 @@ console.log(parse(src)) |
| 52 | 52 | |
| 53 | 53 | ## API Documentation |
| 54 | 54 | |
| 55 | _To be enriched in Phase 1B with deep code analysis_ | |
| 55 | _Extracted from README and code analysis_ | |
| 56 | ||
| 57 | ### Functions | |
| 58 | ||
| 59 | - `init()` | |
| 60 | - `parse()` | |
| 61 | - `exports()` | |
| 62 | - `mjsParse()` | |
| 63 | - `parseNames()` | |
| 64 | ||
| 65 | ||
| 66 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 67 | ||
| 56 | 68 | |
| 57 | 69 | ## Usage Examples |
| 58 | 70 | |
| 59 | _To be added in Phase 1B_ | |
| 71 | _Extracted from README_ | |
| 72 | ||
| 73 | ### Example 1 | |
| 74 | ||
| 75 | ```javascript | |
| 76 | npm install sloppy-module-parser | |
| 77 | ``` | |
| 78 | ||
| 79 | ### Example 2 | |
| 80 | ||
| 81 | ```javascript | |
| 82 | const { init, parse } = require('sloppy-module-parser') | |
| 83 | ||
| 84 | await init() // needed to init the async esm parser used | |
| 85 | ||
| 86 | console.log(parse(src)) | |
| 87 | ``` | |
| 88 | ||
| 89 | ### Example 3 | |
| 90 | ||
| 91 | ```javascript | |
| 92 | { | |
| 93 | type: 'module', | |
| 94 | resolutions: [ | |
| 95 | { | |
| 96 | isImport: boolean, // is it an import or a require | |
| 97 | isAddon: boolean, // is this import / require pointing to a native addon | |
| 98 | position: [statementStart, inputStart, inputEnd], // where is the statement, might be null | |
| 99 | input: string, // the input to import / require, `null` is if it is unknown at parse time | |
| 100 | output: null // what it should resolve to, just set for conveinience | |
| 101 | }, | |
| 102 | ... | |
| 103 | ], | |
| 104 | namedImports: [ | |
| 105 | { | |
| 106 | isWildcard: boolean, // is it a wildcard import | |
| 107 | isExport: boolean, // reexports the import | |
| 108 | names: [string, ...], // the named imports, | |
| 109 | from: referenceToRelevantResolution | |
| 110 | } | |
| 111 | ], | |
| 112 | exports: [string, ...] // only default populated for esm | |
| 113 | } | |
| 114 | ``` | |
| 115 | ||
| 116 | ||
| 60 | 117 | |
| 61 | 118 | ## Semantic Type |
| 62 | 119 |
| … | … | @@ -0,0 +1,40 @@ |
| 1 | { | |
| 2 | "repo": "task-backoff", | |
| 3 | "timestamp": "2026-01-16T23:56:15.188Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "class" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [ | |
| 19 | { | |
| 20 | "name": "TaskBackoff" | |
| 21 | } | |
| 22 | ], | |
| 23 | "functions": [] | |
| 24 | }, | |
| 25 | "readme": { | |
| 26 | "content": "# task-backoff\n\nSmall module to do smart delays in tight loops to maintain a certain event loop delay\n\n```\nnpm install task-backoff\n```\n\n## Usage\n\n``` js\nconst TaskBackoff = require('task-backoff')\n\nconst t = new TaskBackoff({ maxDelay: 100 })\n\nlet i = 0\nwhile (true) {\n if (t.backoff()) await t.wait()\n console.log('gogo', i++, t.delay())\n}\n```\n\n## License\n\nApache-2.0\n", | |
| 27 | "sections": [ | |
| 28 | "intro", | |
| 29 | "usage", | |
| 30 | "license" | |
| 31 | ], | |
| 32 | "hasApi": true, | |
| 33 | "hasExamples": true, | |
| 34 | "exampleCount": 1, | |
| 35 | "examples": [ | |
| 36 | "npm install task-backoff" | |
| 37 | ] | |
| 38 | }, | |
| 39 | "patterns": [] | |
| 40 | } |
| … | … | @@ -52,11 +52,31 @@ while (true) { |
| 52 | 52 | |
| 53 | 53 | ## API Documentation |
| 54 | 54 | |
| 55 | _To be enriched in Phase 1B with deep code analysis_ | |
| 55 | _Extracted from README and code analysis_ | |
| 56 | ||
| 57 | ### Classes | |
| 58 | ||
| 59 | - `TaskBackoff` | |
| 60 | ||
| 61 | ### Exports | |
| 62 | ||
| 63 | - default: `class` | |
| 64 | ||
| 65 | ||
| 66 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 67 | ||
| 56 | 68 | |
| 57 | 69 | ## Usage Examples |
| 58 | 70 | |
| 59 | _To be added in Phase 1B_ | |
| 71 | _Extracted from README_ | |
| 72 | ||
| 73 | ### Example 1 | |
| 74 | ||
| 75 | ```javascript | |
| 76 | npm install task-backoff | |
| 77 | ``` | |
| 78 | ||
| 79 | ||
| 60 | 80 | |
| 61 | 81 | ## Semantic Type |
| 62 | 82 |
| … | … | @@ -0,0 +1,105 @@ |
| 1 | { | |
| 2 | "repo": "tiny-timers-native", | |
| 3 | "timestamp": "2026-01-16T23:55:52.683Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [], | |
| 13 | "classes": [ | |
| 14 | { | |
| 15 | "name": "Timer" | |
| 16 | }, | |
| 17 | { | |
| 18 | "name": "TimerList" | |
| 19 | } | |
| 20 | ], | |
| 21 | "functions": [ | |
| 22 | { | |
| 23 | "name": "pause" | |
| 24 | }, | |
| 25 | { | |
| 26 | "name": "resume" | |
| 27 | }, | |
| 28 | { | |
| 29 | "name": "incRef" | |
| 30 | }, | |
| 31 | { | |
| 32 | "name": "decRef" | |
| 33 | }, | |
| 34 | { | |
| 35 | "name": "trace" | |
| 36 | }, | |
| 37 | { | |
| 38 | "name": "tick" | |
| 39 | }, | |
| 40 | { | |
| 41 | "name": "cancelTimer" | |
| 42 | }, | |
| 43 | { | |
| 44 | "name": "updateTimer" | |
| 45 | }, | |
| 46 | { | |
| 47 | "name": "ontimer" | |
| 48 | }, | |
| 49 | { | |
| 50 | "name": "maybeUpdateTimer" | |
| 51 | }, | |
| 52 | { | |
| 53 | "name": "deleteTimerList" | |
| 54 | }, | |
| 55 | { | |
| 56 | "name": "queueTimer" | |
| 57 | }, | |
| 58 | { | |
| 59 | "name": "clearTimer" | |
| 60 | }, | |
| 61 | { | |
| 62 | "name": "setTimeout" | |
| 63 | }, | |
| 64 | { | |
| 65 | "name": "clearTimeout" | |
| 66 | }, | |
| 67 | { | |
| 68 | "name": "setInterval" | |
| 69 | }, | |
| 70 | { | |
| 71 | "name": "clearInterval" | |
| 72 | }, | |
| 73 | { | |
| 74 | "name": "setImmediate" | |
| 75 | }, | |
| 76 | { | |
| 77 | "name": "clearImmediate" | |
| 78 | }, | |
| 79 | { | |
| 80 | "name": "cmp" | |
| 81 | }, | |
| 82 | { | |
| 83 | "name": "alive" | |
| 84 | }, | |
| 85 | { | |
| 86 | "name": "typeError" | |
| 87 | } | |
| 88 | ] | |
| 89 | }, | |
| 90 | "readme": { | |
| 91 | "content": "# tiny-timers-native\n\nNative timers for Javascript\n\n```\nnpm install tiny-timers-native\n```\n\n## Usage\n\n``` js\nconst { setTimeout, clearTimeout } = require('tiny-timers-native')\n```\n\n## License\n\nApache-2.0\n", | |
| 92 | "sections": [ | |
| 93 | "intro", | |
| 94 | "usage", | |
| 95 | "license" | |
| 96 | ], | |
| 97 | "hasApi": true, | |
| 98 | "hasExamples": true, | |
| 99 | "exampleCount": 1, | |
| 100 | "examples": [ | |
| 101 | "npm install tiny-timers-native" | |
| 102 | ] | |
| 103 | }, | |
| 104 | "patterns": [] | |
| 105 | } |
| … | … | @@ -52,11 +52,53 @@ Apache-2.0 |
| 52 | 52 | |
| 53 | 53 | ## API Documentation |
| 54 | 54 | |
| 55 | _To be enriched in Phase 1B with deep code analysis_ | |
| 55 | _Extracted from README and code analysis_ | |
| 56 | ||
| 57 | ### Classes | |
| 58 | ||
| 59 | - `Timer` | |
| 60 | - `TimerList` | |
| 61 | ||
| 62 | ### Functions | |
| 63 | ||
| 64 | - `pause()` | |
| 65 | - `resume()` | |
| 66 | - `incRef()` | |
| 67 | - `decRef()` | |
| 68 | - `trace()` | |
| 69 | - `tick()` | |
| 70 | - `cancelTimer()` | |
| 71 | - `updateTimer()` | |
| 72 | - `ontimer()` | |
| 73 | - `maybeUpdateTimer()` | |
| 74 | - `deleteTimerList()` | |
| 75 | - `queueTimer()` | |
| 76 | - `clearTimer()` | |
| 77 | - `setTimeout()` | |
| 78 | - `clearTimeout()` | |
| 79 | - `setInterval()` | |
| 80 | - `clearInterval()` | |
| 81 | - `setImmediate()` | |
| 82 | - `clearImmediate()` | |
| 83 | - `cmp()` | |
| 84 | - `alive()` | |
| 85 | - `typeError()` | |
| 86 | ||
| 87 | ||
| 88 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 89 | ||
| 56 | 90 | |
| 57 | 91 | ## Usage Examples |
| 58 | 92 | |
| 59 | _To be added in Phase 1B_ | |
| 93 | _Extracted from README_ | |
| 94 | ||
| 95 | ### Example 1 | |
| 96 | ||
| 97 | ```javascript | |
| 98 | npm install tiny-timers-native | |
| 99 | ``` | |
| 100 | ||
| 101 | ||
| 60 | 102 | |
| 61 | 103 | ## Semantic Type |
| 62 | 104 |
| … | … | @@ -0,0 +1,46 @@ |
| 1 | { | |
| 2 | "repo": "tt-native", | |
| 3 | "timestamp": "2026-01-16T23:56:15.560Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [], | |
| 13 | "classes": [ | |
| 14 | { | |
| 15 | "name": "PTY" | |
| 16 | } | |
| 17 | ], | |
| 18 | "functions": [ | |
| 19 | { | |
| 20 | "name": "spawn" | |
| 21 | }, | |
| 22 | { | |
| 23 | "name": "toBuffer" | |
| 24 | } | |
| 25 | ] | |
| 26 | }, | |
| 27 | "readme": { | |
| 28 | "content": "# tt-native\n\nhttps://github.com/holepunchto/libtt JavaScript bindings for Node.js.\n\n```sh\nnpm install tt-native\n```\n\n## Usage\n\n```js\nconst { spawn } = require('tt-native')\n\nconst pty = spawn('node', ['script.js'])\n```\n\n## API\n\n#### `const pty = spawn(file[, args][, options])`\n\nSpawn a process attached to a pseudo TTY. The returned PTY is a [duplex stream](https://github.com/streamxorg/streamx#duplex-stream).\n\nOptions include:\n\n```js\n{\n width: 80,\n height: 60,\n env: process.env,\n cwd: process.cwd()\n}\n```\n\n#### `pty.width`\n\nThe current width of the PTY.\n\n#### `pty.height`\n\nThe current height of the PTY.\n\n#### `pty.pid`\n\nThe process ID of the spawned process.\n\n#### `pty.on('exit', code[, signal])`\n\nEmitted when the process exit.\n\n#### `pty.resize(width, height)`\n\nResize the PTY.\n\n#### `pty.kill([signal])`\n\nKill the process with the specified signal, which defaults to `SIGINT`. The following signals may be used:\n\n- `SIGINT`\n- `SIGKILL`\n- `SIGTERM`\n\n## License\n\nApache 2.0\n", | |
| 29 | "sections": [ | |
| 30 | "intro", | |
| 31 | "usage", | |
| 32 | "api", | |
| 33 | "license" | |
| 34 | ], | |
| 35 | "hasApi": true, | |
| 36 | "hasExamples": true, | |
| 37 | "exampleCount": 2, | |
| 38 | "examples": [ | |
| 39 | "## Usage", | |
| 40 | "## API\n\n#### `const pty = spawn(file[, args][, options])`\n\nSpawn a process attached to a pseudo TTY. The returned PTY is a [duplex stream](https://github.com/streamxorg/streamx#duplex-stream).\n\nOptions include:" | |
| 41 | ] | |
| 42 | }, | |
| 43 | "patterns": [ | |
| 44 | "streaming" | |
| 45 | ] | |
| 46 | } |
| … | … | @@ -53,11 +53,48 @@ const pty = spawn('node', ['script.js']) |
| 53 | 53 | |
| 54 | 54 | ## API Documentation |
| 55 | 55 | |
| 56 | _To be enriched in Phase 1B with deep code analysis_ | |
| 56 | _Extracted from README and code analysis_ | |
| 57 | ||
| 58 | ### Classes | |
| 59 | ||
| 60 | - `PTY` | |
| 61 | ||
| 62 | ### Functions | |
| 63 | ||
| 64 | - `spawn()` | |
| 65 | - `toBuffer()` | |
| 66 | ||
| 67 | ||
| 68 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 69 | ||
| 57 | 70 | |
| 58 | 71 | ## Usage Examples |
| 59 | 72 | |
| 60 | _To be added in Phase 1B_ | |
| 73 | _Extracted from README_ | |
| 74 | ||
| 75 | ### Example 1 | |
| 76 | ||
| 77 | ```javascript | |
| 78 | ## Usage | |
| 79 | ``` | |
| 80 | ||
| 81 | ### Example 2 | |
| 82 | ||
| 83 | ```javascript | |
| 84 | ## API | |
| 85 | ||
| 86 | #### `const pty = spawn(file[, args][, options])` | |
| 87 | ||
| 88 | Spawn a process attached to a pseudo TTY. The returned PTY is a [duplex stream](https://github.com/streamxorg/streamx#duplex-stream). | |
| 89 | ||
| 90 | Options include: | |
| 91 | ``` | |
| 92 | ||
| 93 | ||
| 94 | ||
| 95 | ## P2P Patterns | |
| 96 | ||
| 97 | - streaming | |
| 61 | 98 | |
| 62 | 99 | ## Semantic Type |
| 63 | 100 |
| … | … | @@ -0,0 +1,28 @@ |
| 1 | { | |
| 2 | "repo": "wasm-tools", | |
| 3 | "timestamp": "2026-01-16T23:56:03.590Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": {}, | |
| 11 | "readme": { | |
| 12 | "content": "# WASM Tools\n\nWASM Tools is a collection of useful tools for working with WASM and its accompanying text format, WAT, in JavaScript. The tools are based on [esbuild](https://esbuild.github.io) and [wabt](https://github.com/WebAssembly/wabt).\n\n## Installation\n\n```sh\nnpm install wasm-tools\n```\n\n## Tools\n\n### `wasm-to-js` (alias `wat-to-js`)\n\nConvert a WASM or WAT module to a JavaScript module.\n\n#### Usage\n\n```sh\nUsage: wasm-to-js [options] <input>\n\nArguments:\n input the WASM or WAT module to convert to a JavaScript\n module\n\nOptions:\n -V, --version output the version number\n -f, --format <format> the module format to use (choices: \"esm\", \"cjs\",\n \"iife\", default: \"esm\")\n -p, --platform <platform> the platform to bundle for (choices: \"browser\",\n \"node\", \"neutral\", default: \"browser\")\n -s, --sync synchronously load the WASM in the resulting\n ", | |
| 13 | "sections": [ | |
| 14 | "intro", | |
| 15 | "installation", | |
| 16 | "tools" | |
| 17 | ], | |
| 18 | "hasApi": false, | |
| 19 | "hasExamples": true, | |
| 20 | "exampleCount": 3, | |
| 21 | "examples": [ | |
| 22 | "## Tools\n\n### `wasm-to-js` (alias `wat-to-js`)\n\nConvert a WASM or WAT module to a JavaScript module.\n\n#### Usage", | |
| 23 | "### `wasm-to-wat`\n\nConvert a WASM module to a WAT module.\n\n#### Usage", | |
| 24 | "### `wat-to-wasm`\n\nConvert a WAT module to a WASM module.\n\n#### Usage" | |
| 25 | ] | |
| 26 | }, | |
| 27 | "patterns": [] | |
| 28 | } |
| … | … | @@ -53,11 +53,49 @@ Usage: wasm-to-js [options] <input> |
| 53 | 53 | |
| 54 | 54 | ## API Documentation |
| 55 | 55 | |
| 56 | _To be enriched in Phase 1B with deep code analysis_ | |
| 56 | _Extracted from code analysis_ | |
| 57 | ||
| 58 | ||
| 59 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 60 | ||
| 57 | 61 | |
| 58 | 62 | ## Usage Examples |
| 59 | 63 | |
| 60 | _To be added in Phase 1B_ | |
| 64 | _Extracted from README_ | |
| 65 | ||
| 66 | ### Example 1 | |
| 67 | ||
| 68 | ```javascript | |
| 69 | ## Tools | |
| 70 | ||
| 71 | ### `wasm-to-js` (alias `wat-to-js`) | |
| 72 | ||
| 73 | Convert a WASM or WAT module to a JavaScript module. | |
| 74 | ||
| 75 | #### Usage | |
| 76 | ``` | |
| 77 | ||
| 78 | ### Example 2 | |
| 79 | ||
| 80 | ```javascript | |
| 81 | ### `wasm-to-wat` | |
| 82 | ||
| 83 | Convert a WASM module to a WAT module. | |
| 84 | ||
| 85 | #### Usage | |
| 86 | ``` | |
| 87 | ||
| 88 | ### Example 3 | |
| 89 | ||
| 90 | ```javascript | |
| 91 | ### `wat-to-wasm` | |
| 92 | ||
| 93 | Convert a WAT module to a WASM module. | |
| 94 | ||
| 95 | #### Usage | |
| 96 | ``` | |
| 97 | ||
| 98 | ||
| 61 | 99 | |
| 62 | 100 | ## Semantic Type |
| 63 | 101 |
| … | … | @@ -0,0 +1,56 @@ |
| 1 | { | |
| 2 | "repo": "watch-drive", | |
| 3 | "timestamp": "2026-01-16T23:55:53.025Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [ | |
| 13 | { | |
| 14 | "type": "default", | |
| 15 | "name": "watch" | |
| 16 | } | |
| 17 | ], | |
| 18 | "classes": [ | |
| 19 | { | |
| 20 | "name": "HyperdriveWatcher" | |
| 21 | } | |
| 22 | ], | |
| 23 | "functions": [ | |
| 24 | { | |
| 25 | "name": "watch" | |
| 26 | }, | |
| 27 | { | |
| 28 | "name": "createLocalWatch" | |
| 29 | }, | |
| 30 | { | |
| 31 | "name": "mapReadable" | |
| 32 | }, | |
| 33 | { | |
| 34 | "name": "toKey" | |
| 35 | } | |
| 36 | ] | |
| 37 | }, | |
| 38 | "readme": { | |
| 39 | "content": "# watch-drive\n\nWatch a Hyperdrive or a Localdrive and get the diff\n\n```\nnpm install watch-drive\n```\n\n## Usage\n\n```js\nconst watch = require('watch-drive')\n\n// returns a readable stream\nconst w = watch(drive, prefix)\n\nfor await (const { diff } of w) {\n for (const { type, key } of diff) {\n // type is either 'update' or 'delete'\n // key is the key that changed\n console.log(type, key)\n }\n}\n```\n\n## License\n\nApache-2.0\n", | |
| 40 | "sections": [ | |
| 41 | "intro", | |
| 42 | "usage", | |
| 43 | "license" | |
| 44 | ], | |
| 45 | "hasApi": true, | |
| 46 | "hasExamples": true, | |
| 47 | "exampleCount": 2, | |
| 48 | "examples": [ | |
| 49 | "npm install watch-drive", | |
| 50 | "const watch = require('watch-drive')\n\n// returns a readable stream\nconst w = watch(drive, prefix)\n\nfor await (const { diff } of w) {\n for (const { type, key } of diff) {\n // type is either 'update' or 'delete'\n // key is the key that changed\n console.log(type, key)\n }\n}" | |
| 51 | ] | |
| 52 | }, | |
| 53 | "patterns": [ | |
| 54 | "streaming" | |
| 55 | ] | |
| 56 | } |
| … | … | @@ -53,11 +53,59 @@ for await (const { diff } of w) { |
| 53 | 53 | |
| 54 | 54 | ## API Documentation |
| 55 | 55 | |
| 56 | _To be enriched in Phase 1B with deep code analysis_ | |
| 56 | _Extracted from README and code analysis_ | |
| 57 | ||
| 58 | ### Classes | |
| 59 | ||
| 60 | - `HyperdriveWatcher` | |
| 61 | ||
| 62 | ### Functions | |
| 63 | ||
| 64 | - `watch()` | |
| 65 | - `createLocalWatch()` | |
| 66 | - `mapReadable()` | |
| 67 | - `toKey()` | |
| 68 | ||
| 69 | ### Exports | |
| 70 | ||
| 71 | - default: `watch` | |
| 72 | ||
| 73 | ||
| 74 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 75 | ||
| 57 | 76 | |
| 58 | 77 | ## Usage Examples |
| 59 | 78 | |
| 60 | _To be added in Phase 1B_ | |
| 79 | _Extracted from README_ | |
| 80 | ||
| 81 | ### Example 1 | |
| 82 | ||
| 83 | ```javascript | |
| 84 | npm install watch-drive | |
| 85 | ``` | |
| 86 | ||
| 87 | ### Example 2 | |
| 88 | ||
| 89 | ```javascript | |
| 90 | const watch = require('watch-drive') | |
| 91 | ||
| 92 | // returns a readable stream | |
| 93 | const w = watch(drive, prefix) | |
| 94 | ||
| 95 | for await (const { diff } of w) { | |
| 96 | for (const { type, key } of diff) { | |
| 97 | // type is either 'update' or 'delete' | |
| 98 | // key is the key that changed | |
| 99 | console.log(type, key) | |
| 100 | } | |
| 101 | } | |
| 102 | ``` | |
| 103 | ||
| 104 | ||
| 105 | ||
| 106 | ## P2P Patterns | |
| 107 | ||
| 108 | - streaming | |
| 61 | 109 | |
| 62 | 110 | ## Semantic Type |
| 63 | 111 |
| … | … | @@ -0,0 +1,32 @@ |
| 1 | { | |
| 2 | "repo": "which-runtime", | |
| 3 | "timestamp": "2026-01-16T23:56:03.935Z", | |
| 4 | "entryPoint": "index.js", | |
| 5 | "exports": { | |
| 6 | "packageJson": { | |
| 7 | "main": "index.js" | |
| 8 | } | |
| 9 | }, | |
| 10 | "api": { | |
| 11 | "file": "index.js", | |
| 12 | "exports": [], | |
| 13 | "classes": [], | |
| 14 | "functions": [] | |
| 15 | }, | |
| 16 | "readme": { | |
| 17 | "content": "# which-runtime\n\nDetect if you are in Bare or Node and which os etc\n\n```\nnpm install which-runtime\n```\n\n## Usage\n\n```js\nimport {\n runtime, // bare, node, or browser\n platform, // the platform string, ie darwin, win32, etc\n arch, // which arch, arm64, ia32, x64 etc\n isBrowser,\n isBare,\n isNode,\n isLinux,\n isWindows,\n isMac,\n isIOS,\n isAndroid\n} from 'which-runtime'\n```\n\n## License\n\nApache-2.0\n", | |
| 18 | "sections": [ | |
| 19 | "intro", | |
| 20 | "usage", | |
| 21 | "license" | |
| 22 | ], | |
| 23 | "hasApi": true, | |
| 24 | "hasExamples": true, | |
| 25 | "exampleCount": 2, | |
| 26 | "examples": [ | |
| 27 | "npm install which-runtime", | |
| 28 | "import {\n runtime, // bare, node, or browser\n platform, // the platform string, ie darwin, win32, etc\n arch, // which arch, arm64, ia32, x64 etc\n isBrowser,\n isBare,\n isNode,\n isLinux,\n isWindows,\n isMac,\n isIOS,\n isAndroid\n} from 'which-runtime'" | |
| 29 | ] | |
| 30 | }, | |
| 31 | "patterns": [] | |
| 32 | } |
| … | … | @@ -47,11 +47,41 @@ import { |
| 47 | 47 | |
| 48 | 48 | ## API Documentation |
| 49 | 49 | |
| 50 | _To be enriched in Phase 1B with deep code analysis_ | |
| 50 | _Extracted from README and code analysis_ | |
| 51 | ||
| 52 | ||
| 53 | _See [api-extract.json](./api-extract.json) for detailed API information._ | |
| 54 | ||
| 51 | 55 | |
| 52 | 56 | ## Usage Examples |
| 53 | 57 | |
| 54 | _To be added in Phase 1B_ | |
| 58 | _Extracted from README_ | |
| 59 | ||
| 60 | ### Example 1 | |
| 61 | ||
| 62 | ```javascript | |
| 63 | npm install which-runtime | |
| 64 | ``` | |
| 65 | ||
| 66 | ### Example 2 | |
| 67 | ||
| 68 | ```javascript | |
| 69 | import { | |
| 70 | runtime, // bare, node, or browser | |
| 71 | platform, // the platform string, ie darwin, win32, etc | |
| 72 | arch, // which arch, arm64, ia32, x64 etc | |
| 73 | isBrowser, | |
| 74 | isBare, | |
| 75 | isNode, | |
| 76 | isLinux, | |
| 77 | isWindows, | |
| 78 | isMac, | |
| 79 | isIOS, | |
| 80 | isAndroid | |
| 81 | } from 'which-runtime' | |
| 82 | ``` | |
| 83 | ||
| 84 | ||
| 55 | 85 | |
| 56 | 86 | ## Semantic Type |
| 57 | 87 |