jsr-io / jsr

The open-source package registry for modern JavaScript and TypeScript
https://jsr.io
MIT License
2.15k stars 97 forks source link
javascript registry typescript

jsr.io

the jsr logo

This is the source code for https://jsr.io, the new JavaScript registry.

[!IMPORTANT] The rest of this README is only relevant to those interested in contributing to the jsr.io registry. If you are looking for information on how to use the registry, please see https://jsr.io/docs.

Project Information

Goals

Implementation details

Getting started (frontend only)

If you are just interested in making changes to the frontend, you can run the frontend in a development mode that connects to the production API.

Prerequisites

Running jsr

  1. deno task prod:frontend

You can view the registry at http://jsr.test. This frontend is connected to the production API - use it with the same care that you would use the live registry.

Getting started (entire stack)

In this mode, you will run the frontend and the API locally. This is useful for making changes to the API.

Prerequisites

macOS

Linux

Running jsr

  1. deno task services:macos or deno task services:linux in one terminal
  2. deno task dev:api in another terminal
  3. deno task dev:frontend in another terminal

You can view the registry at http://jsr.test. The API can be found at http://api.jsr.test.

Publishing a package to the local dev environment

  1. Create a new directory with a deno.json
  2. cd into that directory
  3. Run JSR_URL=http://jsr.test deno publish

Populating local dev environment with additional data

It may be helpful to have a large variety of packages published to your local dev environment to simulate a live environment. The quickest way to fill the registry with data is to publish deno_std to the registry. This can be done via the following steps:

  1. Clone https://github.com/denoland/deno_std in the same parent folder as the jsr project
  2. In the deno_std folder, run deno run -A _tools/convert_to_workspace.ts.
  3. Run JSR_URL=http://jsr.test deno publish to publish all of the @std packages to your local dev environment.

Making yourself a staff user/admin

  1. Run psql registry
  2. Run SELECT name,github_id from users;
  3. You should see a table with your name and GitHub ID. Copy your GitHub ID.
  4. Run UPDATE users SET is_staff = true WHERE github_id = xxxxxxx;, replacing xxxxxxx with your copied GitHub ID from the previous step.
  5. You should see a success message confirming one row has been updated.

Migrating the database

When the database schema has been changed, you can migrate the local database by running this command:

cd api; sqlx migrate run

Loading bad words

To load bad words into the database:

  1. Download https://cloud.google.com/sql/docs/postgres/sql-proxy
  2. Run in a terminal cloud-sql-proxy -g [database connection string] -p 5433
  3. Create a bad_words.sql file, with the contents as:
INSERT INTO bad_words (word) VALUES
    ('word_1'),
    -- more words
    ('word_2');
  1. In a separate terminal window run psql postgres://127.0.0.1:5433/registry --user [your username] -f bad_words.sql, and provide the password for the provided username.

Other

During local dev, traces are sent to Jaeger. You can view them at http://localhost:16686. You can find traces in API HTTP requests by inspecting the x-deno-ray header.