{"id":15722075,"url":"https://github.com/haijin-development/node-sirens","last_synced_at":"2025-03-30T23:12:44.918Z","repository":{"id":57361913,"uuid":"198060514","full_name":"haijin-development/node-sirens","owner":"haijin-development","description":"Interactive utilities to ease development, testing and debugging in Node.js, implemented in Node.js and GTK3.","archived":false,"fork":false,"pushed_at":"2020-12-26T21:36:40.000Z","size":55810,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-04-29T20:21:22.282Z","etag":null,"topics":["debugging-tools","development-tools","gtk3","nodejs"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/haijin-development.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-07-21T13:36:00.000Z","updated_at":"2020-12-26T21:36:42.000Z","dependencies_parsed_at":"2022-09-26T16:40:42.134Z","dependency_job_id":null,"html_url":"https://github.com/haijin-development/node-sirens","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haijin-development%2Fnode-sirens","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haijin-development%2Fnode-sirens/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haijin-development%2Fnode-sirens/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haijin-development%2Fnode-sirens/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/haijin-development","download_url":"https://codeload.github.com/haijin-development/node-sirens/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246390873,"owners_count":20769478,"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":["debugging-tools","development-tools","gtk3","nodejs"],"created_at":"2024-10-03T22:03:44.340Z","updated_at":"2025-03-30T23:12:44.896Z","avatar_url":"https://github.com/haijin-development.png","language":"JavaScript","readme":"# Note\n\nThis project is discontinued for technical reasons, and I will not update it nor maintain it any more. I won't delete the repository in case somebody can take something useful from it\n\nThe intention was to have a set of development utilities to make the experience of writing programs pleasant and fun, but the technology of my choice was not the right one for that matter\n\nGtk+ proved to be too low level, too complex, too error prone and too bound to its Python implementation to be a good choice for me\n\nI don't want to just write programs. I also want to write them in a clean object oriented way and to have a pleasant experience while I do and with Gtk+ that simply was not the case\n\nI will continue to look for alternatives better suited for me to continue with these developments\n\n**2020-12 update**\n\nA yet not fully stable new project related to what Sirens was can be found in this [project](https://bitbucket.org/haijin-development/pm/src/development/)\nThe name's temporary. It runs in plain JS, no other binaries than node and a browser are required\n\n# Sirens\n\n[![Build Status](https://travis-ci.org/haijin-development/node-sirens.svg?branch=master)](https://travis-ci.org/haijin-development/node-sirens)\n\nSirens gives Node.js developers some simple and interactive utilities to ease development, testing, debugging and learning Node.\n\nThese utilities are written in Node and use GTK3 through [node-gtk](https://www.npmjs.com/package/node-gtk) as its GUI support.\n\n**Note: this project is usable but it is still at an early stage of development.**\n\n**Note: The current version opens with node v12 but it is not stable. See the [pre-requisites](./README.md#pre-requisites) section.**\n\n**Update: checkout FingerTips design documentation in [this article](./docs/FingerTips.pdf) (updated in v0.15.0).**\n\n![App browser](./docs/browsing-class-documentation.png)\n\nNext release:\n\n[![Next Release Build Status](https://travis-ci.org/haijin-development/node-sirens.svg?branch=development)](https://travis-ci.org/haijin-development/node-sirens)\n\n### Installation\n\n**Note: please keep in mind that this project is not meant for production but only as an utility to be used during development.**\n\nAdd `Sirens` to your project with\n\n```\nnpm install sirens --save-dev\n```\n\nor install it globally with\n\n```\nnpm install sirens -g\n```\n\n### Usage\n\nRequire the `sirens` module and open a browser on any object with\n\n```javascript\nrequire('sirens').browseObject(object)\n```\n\nor\n\n```javascript\n\nconst Sirens = require('sirens')\n\nSirens.browseObject(object)\n```\n\nOpen a browser on any object properties and methods along its prototypes chain with\n\n```javascript\nrequire('sirens').browsePrototypes(object)\n```\n\nor\n\n```javascript\nconst Sirens = require('sirens')\n\nSirens.browsePrototypes(object)\n```\n\nA Playground is a text editor where you can select, evaluate and inspect snippets of javascript code using the Sirens ObjectBrowser with the same access to the npm modules that your application has.\n\nThink of it as a javascript console in 3 dimensions.\n\nOpen a Playground with\n\n```javascript\nconst Sirens = require('sirens')\n\nSirens.openPlayground()\n```\n\nAn AppBrowser lets you browse the files in a selected folder.\n\nIn all cases it shows the contents of the file and for some type of files it also opens a specific browser.\n\nFor instance, with .js classes and methods it will open a browser on its documentation.\nWith .json and .yml files it opens a browser on its structure.\n\nOpen an AppBrowser with\n\n```javascript\nconst Sirens = require('sirens')\n\nSirens.openAppBrowser()\n```\n\n### Sirens command line\n\nIf you install `Sirens` globally\n\n```\nnpm install sirens -g\n```\n\nyou can open a javascript Playground from the command line with:\n\n```\nplayground [javascript-filename.js]\n```\n\nand a javascript AppBrowser from the command line with:\n\n```\nappBrowser [folder]\n```\n\nIf you install `Sirens` in the scope of a project with\n\n```\nnpm install sirens --save-dev\n```\n\nyou can open a javascript Playground from the project folder with\n\n```\n./node_modules/.bin/playground [javascript-filename.js]\n```\n\nand a javascript AppBrowser from the project folder with\n\n```\n./node_modules/.bin/appBrowser [folder]\n```\n\n### Screenshots\n\n**Browsing an object**\n\n![Object browser](./docs/browsing-object.png)\n\n**Browsing prototypes**\n\n![Prototype browser](./docs/browsing-prototypes.png)\n\n**Browsing text files**\n\n![Text files](./docs/browsing-text-files.png)\n\n**Browsing json files**\n\n![Json browser](./docs/browsing-json-files.png)\n\n**Browsing class methods**\n\n![Class browser](./docs/browsing-methods.png)\n\n**Browsing class documentation**\n\n![Class documentation browser](./docs/browsing-class-documentation.png)\n\n**Browsing method documentation**\n\n![Method documentation browser](./docs/browsing-method-documentation.png)\n\n**Browsing tests**\n\n![Tests browser](./docs/browsing-tests.png)\n\n### Pre-requisites\n\nThe current version works only with node \u003c= v11.\n\n```\nnvm install v10\n```\n\nPlease refer to the installation section of [node-gtk](https://www.npmjs.com/package/node-gtk#installing-and-building).\n\n## Semantic versioning\n\nSirens release model follows the [Semantic Versioning 2.0.0](https://semver.org/) convention.\n\nHowever please note that:\n\n- Currently Sirens [public API](https://semver.org/#spec-item-1) is the one declared in this document [Usage](./README.md/#usage) section.\n\n- Sirens is still in [version 0.y.z](https://semver.org/#spec-item-4), meaning that all of its interfaces and protocols, including the public ones, are likely to keep changing quite often.\n\nThe [O language](https://github.com/haijin-development/o-language/blob/development/README.md) and the [Skins](./src/skins) GUI builder used by Sirens browsers will be released as standalone libraries once they reach a stable public interface. This will happen once there are several new releases of Sirens with no modifications neither in the o-language nor in Skins public interfaces.\n\n## Development\n\n### Running the tests\n\nRun the tests with \n\n```\nnpm test\n```\n\n### Running the examples\n\nRun the browser and GTK widgets examples from the directory `examples/`.\n\nFor example\n\n```\nnode examples/widgets/checkBox.js\n```\n\n```\nnode examples/browsers/objectBrowser.js\n```\n\n## References\n\nThese utilities are based in the Smalltalk language browsers, in particular in the [Object Arts](https://www.object-arts.com/)\nimplementation named [Dolphin Smalltalk](https://github.com/dolphinsmalltalk/Dolphin) which I fancy for its\noutstanding beauty, and it's an independent port of [Sirens for the Ruby language](https://github.com/haijin-development/ruby-sirens).\n\nThe graphics code is encapsulated in the Skins `views` layer and it should be possible to switch to any other graphics library, be it GTK+ or QT, implementing that layer alone.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhaijin-development%2Fnode-sirens","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhaijin-development%2Fnode-sirens","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhaijin-development%2Fnode-sirens/lists"}