{"id":13623340,"url":"https://github.com/Jigsaw-Code/outline-shadowsocksconfig","last_synced_at":"2025-04-15T14:32:42.974Z","repository":{"id":47998233,"uuid":"124152453","full_name":"Jigsaw-Code/outline-shadowsocksconfig","owner":"Jigsaw-Code","description":"Serialize Shadowsocks configuration data to and from SIP002 and legacy URI formats.","archived":false,"fork":false,"pushed_at":"2024-11-20T09:54:43.000Z","size":202,"stargazers_count":148,"open_issues_count":7,"forks_count":53,"subscribers_count":22,"default_branch":"master","last_synced_at":"2025-04-04T11:12:05.099Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Jigsaw-Code.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-03-06T23:43:13.000Z","updated_at":"2025-04-04T03:10:00.000Z","dependencies_parsed_at":"2024-12-16T05:04:58.737Z","dependency_job_id":"7e580ef8-7f8d-4779-8be9-05ca9b4f21c5","html_url":"https://github.com/Jigsaw-Code/outline-shadowsocksconfig","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jigsaw-Code%2Foutline-shadowsocksconfig","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jigsaw-Code%2Foutline-shadowsocksconfig/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jigsaw-Code%2Foutline-shadowsocksconfig/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jigsaw-Code%2Foutline-shadowsocksconfig/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Jigsaw-Code","download_url":"https://codeload.github.com/Jigsaw-Code/outline-shadowsocksconfig/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249089023,"owners_count":21210903,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T21:01:30.615Z","updated_at":"2025-04-15T14:32:42.735Z","avatar_url":"https://github.com/Jigsaw-Code.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# ShadowsocksConfig\n\n[![Build Status](https://travis-ci.org/Jigsaw-Code/outline-shadowsocksconfig.svg?branch=master)](https://travis-ci.org/Jigsaw-Code/outline-shadowsocksconfig)\n\nTypeScript library to store Shadowsocks configuration data\nas well as (de)serialize it to/from SIP002 and legacy base64 URIs.\nNode.js- and browser-friendly.\n\n## References\n\n- https://shadowsocks.org/en/config/quick-guide.html\n- https://shadowsocks.org/en/spec/SIP002-URI-Scheme.html\n\n## Fields, validation, and sanitization\n\nSome fields are validated, normalized, and/or sanitized, but not all:\n\n- `host`\n  - May be an IPv4, IPv6, or hostname.\n  - Unicode hostnames are converted to punycode.\n  - Hostnames must begin with a character in the set `[A-z0-9]`.\n- `port`\n  - Must be an integer from 0 to 65535.\n- `method`\n  - One of the values specified in `shadowsocks_config.ts#METHODS`.\n- `tag` \u003csup\u003e\\*\u003c/sup\u003e\n  - Only URI encoded/decoded.\n- `password` \u003csup\u003e\\*\u003c/sup\u003e\n- `extra` \u003csup\u003e\\*\u003c/sup\u003e\n  - Any additional configuration (e.g. `timeout`, SIP003 `plugin`, etc.) may be stored here.\n\n\\* **No sanitization is performed for these fields.**\n**Client code is responsible for sanitizing these values when received from untrusted input.**\n\n## Usage\n\nPlease see [test/unit/shadowsocks_config.spec.ts](test/unit/shadowsocks_config.spec.ts)\nfor example usage.\n\n## Development\n\nFirst [install yarn](https://yarnpkg.com/en/docs/install-ci).\n\nThen, install dependencies using yarn:\n\n```\nyarn\n```\n\nThen, build with the included script:\n\n```\nyarn run build\n```\n\n### Unit Tests\n\n```\nyarn run test\n```\n\n### Linting (tslint and commit formatting)\n\n```\nyarn run precommit\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJigsaw-Code%2Foutline-shadowsocksconfig","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FJigsaw-Code%2Foutline-shadowsocksconfig","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJigsaw-Code%2Foutline-shadowsocksconfig/lists"}