{"id":17100032,"url":"https://github.com/bergmark/cactus","last_synced_at":"2026-05-02T15:36:13.473Z","repository":{"id":1121519,"uuid":"993928","full_name":"bergmark/Cactus","owner":"bergmark","description":"Misc utilities and data structures for node js and client side web development","archived":false,"fork":false,"pushed_at":"2011-09-01T17:08:46.000Z","size":836,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-23T18:35:39.971Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://github.com/Raevel/Cactus","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bergmark.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}},"created_at":"2010-10-17T04:06:43.000Z","updated_at":"2014-06-06T10:36:32.000Z","dependencies_parsed_at":"2022-08-16T12:05:21.970Z","dependency_job_id":null,"html_url":"https://github.com/bergmark/Cactus","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bergmark/Cactus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bergmark%2FCactus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bergmark%2FCactus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bergmark%2FCactus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bergmark%2FCactus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bergmark","download_url":"https://codeload.github.com/bergmark/Cactus/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bergmark%2FCactus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32540116,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T12:25:33.646Z","status":"ssl_error","status_checked_at":"2026-05-02T12:24:51.733Z","response_time":132,"last_error":"SSL_read: 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":"2024-10-14T15:12:14.978Z","updated_at":"2026-05-02T15:36:13.433Z","avatar_url":"https://github.com/bergmark.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"Cactus started out as a library that was supposed to fix cross browser\nissues. It expanded into a collection of utilies useful... pretty much\nalways.\n\nIt has now been refactored to use with the Joose (http://www.joose.it)\nmeta object system and it runs on both node and in the browser.\n\nQuick run-through of current functionality:\n\n * The Addon module contains addons to the built in data types.\n\n * Data contains data structures (Map, Set, Tree) and more high-level\n   structures (ArrayController, KeyValueCoding).\n\n * Util contains stuff that doesn't belong anywhere else.\n\n * Web contains helpers for cross browser functionality, selectors, and\n   wrappers that simplifies working with the DOM a lot.\n\n\nCode Conventions (work in progress)\n\n * _ may be used for argument names in callbacks that are not used.\n\n * Camelcase abbreviations, `Id` and `Url`.\n\n * Set default values for parameters at the top of a functions body,\n   or use TypeChecker to set them (also use at top.)\n\n * Events should be named in the correct grammatical form, most often\n   in preterite to avoid confusion. `onAdd` is ambiguous,\n   `onBeforeAdd` or `onAdded` (prefer over `onAfterAdd` for\n   conciseness) is not.\n\n * Comments should not stretch over 80 columns wide.\n\n * Don't marginal adjust comments.\n\n * Lines should not be wider than ~120 characters.\n\n * Functions that may return null, or variables that may contain null\n   as well as the intended type should be suffixed with maybe.\n   `var userMaybe = getUserMaybe();`.\n\n * Boolean names should have a predicate prefix. `hasUser` and\n   `isAdmin`.\n\n * Use hungarian notation instead of constraining a value's type\n   implicitly. Use `plainPassword` and `hashedPassword` over\n   `password`.\n\nDon't use these constructs:\n\n * `with`. Confusing. Instead do `var o = longName; o.x = 1;`.\n\n * `new Boolean`/`new String`/`new Number`, messes up `typeof` and comparisons.\n\n * `typeof x === \"object\"`, since `typeof null =\u003e \"object\"`, use `instanceof` instead.\n\n * `[new] Array()`. `new Array(1)` vs `new Array(1,2)` is\n   confusing. `[1]`, `[1,2]` is not. And `[]` is more concise.\n\n * `[new] Object()`. `{}` is more concise.\n\nTypes in documentation\n\n * primitive types (number, boolean, string) =\u003e as is\n * an instance of class C =\u003e C\n * an implementer of a role R =\u003e R\n * collection =\u003e numbered by indices 0..length-1, has length property\n * hash =\u003e Object with properties that may contain different values\n * map =\u003e Object where each property has the same type\n * entity =\u003e any value that can be compared with ===\n * Object =\u003e any non-primitive value\n * null/undefined is never allowed for any type unless explicitly stated in documentation.\n * Number/Boolean/String =\u003e don't use.\n\n* Exceptions\n * Declare exceptions with @throws in documentation.\n * Errors should not have a @throws declaration.\n * Prefer to not use exceptions.\n\nIteration:\n * Core should use for loops for iteration as much as possible.\n * Other modules may decide.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbergmark%2Fcactus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbergmark%2Fcactus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbergmark%2Fcactus/lists"}