{"id":24615790,"url":"https://github.com/runreal/rini","last_synced_at":"2026-04-21T16:32:32.309Z","repository":{"id":227935727,"uuid":"772757431","full_name":"runreal/rini","owner":"runreal","description":null,"archived":false,"fork":false,"pushed_at":"2024-03-15T20:50:16.000Z","size":18,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-29T21:37:19.793Z","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":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/runreal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2024-03-15T20:46:29.000Z","updated_at":"2024-03-15T20:50:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"762f930d-d1d4-4bfd-8b7f-73d201a36245","html_url":"https://github.com/runreal/rini","commit_stats":null,"previous_names":["runreal/rini"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/runreal/rini","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/runreal%2Frini","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/runreal%2Frini/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/runreal%2Frini/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/runreal%2Frini/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/runreal","download_url":"https://codeload.github.com/runreal/rini/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/runreal%2Frini/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32100053,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-21T11:25:29.218Z","status":"ssl_error","status_checked_at":"2026-04-21T11:25:28.499Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":"2025-01-24T22:14:30.773Z","updated_at":"2026-04-21T16:32:32.299Z","avatar_url":"https://github.com/runreal.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rini\nAn ini format parser and serializer for Deno.  \nWith fixes for Unreal Engine ini files.\n\nForked from [npm/ini](https://github.com/npm/ini).\n\nSections are treated as nested objects.  Items before the first\nheading are saved on the object directly.\n\n## Usage\n\nConsider an ini-file `config.ini` that looks like this:\n```ini\n    ; this comment is being ignored\n    scope = global\n\n    [database]\n    user = dbuser\n    password = dbpassword\n    database = use_this_database\n\n    [paths.default]\n    datadir = /var/lib/data\n    array[] = first value\n    array[] = second value\n    array[] = third value\n```\n\nYou can read, manipulate and write the ini-file like so:\n\n```js\n    var fs = require('fs')\n      , ini = require('ini')\n\n    var config = ini.parse(fs.readFileSync('./config.ini', 'utf-8'))\n\n    config.scope = 'local'\n    config.database.database = 'use_another_database'\n    config.paths.default.tmpdir = '/tmp'\n    delete config.paths.default.datadir\n    config.paths.default.array.push('fourth value')\n\n    fs.writeFileSync('./config_modified.ini', ini.stringify(config, { section: 'section' }))\n```\n\nThis will result in a file called `config_modified.ini` being written\nto the filesystem with the following content:\n\n```ini\n    [section]\n    scope=local\n    [section.database]\n    user=dbuser\n    password=dbpassword\n    database=use_another_database\n    [section.paths.default]\n    tmpdir=/tmp\n    array[]=first value\n    array[]=second value\n    array[]=third value\n    array[]=fourth value\n```\n\n## API\n\n### decode(inistring)\n\nDecode the ini-style formatted `inistring` into a nested object.\n\n### parse(inistring)\n\nAlias for `decode(inistring)`\n\n### encode(object, [options])\n\nEncode the object `object` into an ini-style formatted string. If the\noptional parameter `section` is given, then all top-level properties\nof the object are put into this section and the `section`-string is\nprepended to all sub-sections, see the usage example above.\n\nThe `options` object may contain the following:\n\n* `align` Boolean to specify whether to align the `=` characters for\n  each section. This option will automatically enable `whitespace`.\n  Defaults to `false`.\n* `section` String which will be the first `section` in the encoded\n  ini data.  Defaults to none.\n* `sort` Boolean to specify if all keys in each section, as well as\n  all sections, will be alphabetically sorted.  Defaults to `false`.\n* `whitespace` Boolean to specify whether to put whitespace around the\n  `=` character.  By default, whitespace is omitted, to be friendly to\n  some persnickety old parsers that don't tolerate it well.  But some\n  find that it's more human-readable and pretty with the whitespace.\n  Defaults to `false`.\n* `newline` Boolean to specify whether to put an additional newline\n  after a section header. Some INI file parsers (for example the TOSHIBA\n  FlashAir one) need this to parse the file successfully.  By default,\n  the additional newline is omitted.\n* `platform` String to define which platform this INI file is expected\n  to be used with: when `platform` is `win32`, line terminations are\n  CR+LF, for other platforms line termination is LF.  By default, the\n  current platform name is used.\n* `bracketedArray` Boolean to specify whether array values are appended\n  with `[]`.  By default this is true but there are some ini parsers\n  that instead treat duplicate names as arrays.\n\nFor backwards compatibility reasons, if a `string` options is passed\nin, then it is assumed to be the `section` value.\n\n### stringify(object, [options])\n\nAlias for `encode(object, [options])`\n\n### safe(val)\n\nEscapes the string `val` such that it is safe to be used as a key or\nvalue in an ini-file. Basically escapes quotes. For example\n\n```js\n    ini.safe('\"unsafe string\"')\n```\n\nwould result in\n\n    \"\\\"unsafe string\\\"\"\n\n### unsafe(val)\n\nUnescapes the string `val`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frunreal%2Frini","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frunreal%2Frini","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frunreal%2Frini/lists"}