{"id":19418988,"url":"https://github.com/basis-company/helpers.js","last_synced_at":"2026-07-15T18:30:20.342Z","repository":{"id":209712534,"uuid":"724765395","full_name":"basis-company/helpers.js","owner":"basis-company","description":"shared javascript toolkit","archived":false,"fork":false,"pushed_at":"2024-11-19T13:28:20.000Z","size":23,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-01-07T17:42:55.790Z","etag":null,"topics":["array","date","function","javascript","number","object","string","toolkit","tools"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/basis-company.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":"2023-11-28T18:46:41.000Z","updated_at":"2024-11-06T13:01:02.000Z","dependencies_parsed_at":"2024-03-01T19:27:43.608Z","dependency_job_id":"717ee818-436c-4017-8211-79a1f83a4f77","html_url":"https://github.com/basis-company/helpers.js","commit_stats":null,"previous_names":["basis-company/helpers.js"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basis-company%2Fhelpers.js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basis-company%2Fhelpers.js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basis-company%2Fhelpers.js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basis-company%2Fhelpers.js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/basis-company","download_url":"https://codeload.github.com/basis-company/helpers.js/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240599179,"owners_count":19826959,"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":["array","date","function","javascript","number","object","string","toolkit","tools"],"created_at":"2024-11-10T13:15:48.305Z","updated_at":"2026-07-15T18:30:16.227Z","avatar_url":"https://github.com/basis-company.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# helpers.js\nshared javascript toolkit\n\n### install\n\n```shell\nnpm install basis-company/helpers.js\n```\n\n### gulpfile.js\n```js\nvar esbuild = require('gulp-esbuild');\n\ngulp.task('helpers', () =\u003e\n  gulp.src('src/js/helpers/index.js')\n    .pipe(esbuild({\n      bundle: true,\n      charset: 'utf8',\n      minify: true,\n      outfile: 'helpers.js',\n    }))\n    .pipe(gulp.dest('build'))\n);\n```\n\n### index.html\n```html\n\u003cscript type=\"text/javascript\" src=\"build/helpers.js\"\u003e\u003c/script\u003e\n```\n\n### index.js\n```js\n// add required\nimport { applyOwnIf } from 'helpers/apply';\nimport { capture } from 'helpers/capture';\nimport { fields } from 'helpers/fields';\nimport { debug, log, raise, warn } from 'helpers/log';\n// ...\n\n// inline some stuff\nimport './dispatch.js';\nimport './msg.js';\n\n// restore module state from localStorage\nrestore(log, 'wop-log');\n\n// module startup\ncapture.init({ toast });\n\n// extend another class\napplyOwnIf(Ext.Base.prototype, {\n  raise,\n  warn,\n  log,\n  debug,\n});\n\n// bind to global\napplyOwnIf(myGlobalVar, {\n  applyOwnIf, capture, fields, log,\n});\n\nfunction restore(feature, name) {\n  var e = feature.enable;\n  var d = feature.disable;\n  var ls;\n\n  if ((ls = window.localStorage)) {\n    feature.enable = function(level) {\n      ls.setItem(name, e(level));\n    };\n\n    feature.disable = function() {\n      d(ls.removeItem(name));\n    };\n\n    e(+ls.getItem(name));\n  }\n}\n\nfunction toast(params) {\n  new MyToast({\n    autoCloseDelay: 7 * 1000,\n    autoShow: true,\n    html: [\n      params.type,\n      params.message,\n      '',\n      params.trace,\n    ]\n      .join('\\n')\n      .replace(/https?:.*\\//g, '')\n      .replace(/\\r?\\n/g, '\u003cbr/\u003e'),\n  });\n}\n```\n\n### contents\n\n#### string\n```js\ncapitalize(s)\n```\n\n#### number\n```js\nconstrain(n, min, max)\nround1(n)\nround2(n)\n```\n\n#### array\n```js\nappend(a, add)\nappendShallow(a, ...add)\narray(a = [])\ncountBy(a, k)\nfields(columns, ...add)\ngroupBy(a, k, v)\nindexBy(a, k, v)\npartition(a, fn)\nprepend(a, add)\nprependShallow(a, ...add)\nremove(a, v, all)\ntransform(a, fn, buf = [])\nuniq(a)\n```\n\n#### object\n```js\napplyOwn(o, del, ...overrides)\napplyOwnIf(o, del, ...defaults)\napplyTo(dst, src, ...keys)\ncopyOwn(o, del, ...overrides)\ncopyOwnIf(o, del, ...defaults)\ncreate(proto, ...overrides)\nempty(o)\nget(o, path, defaults)\ninc(o, k, delta = 1)\nisObject(o)\nns(o, k1, k2, ...)\npush(o, k, v)\n```\n\n#### function\n```js\nbuffer(name, item, fn, scope, delay)\nmemoize(fn, hasher)\nportion(name, total, aborted, fn)\n```\n\n#### date\n```js\nshortDayNames = [ 'Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб' ];\n\nclearTime(date)\ndate(ymd, hms)\ndays(begin, end) // elapsed\ndmy(ymd)\nforEachDay(begin, end, fn)\ngenitiveYmd(ymd)\nhm(hms)\nnext(ymd)\nnow()\nprev(ymd)\nseconds(begin, end) // elapsed\nshift(a, tagged)\ntimestamp(ts)\nymd(date)\nymdhms(ymd, hms)\n```\n\n#### cookie\n```js\ncanary(enable, days = 7)\n```\n\n#### logger\n```js\ncapture(mixed)\ndebug()\nlog()\nmeasure(name, fn, scope, args)\nraise()\nwarn()\n```\n\n#### promise\n```js\nsleep(ms)\nstop()\n```\n\n#### renderer\n```js\ncheckbox(v)\ncurrency(v)\nphone(v)\nrating(v)\nremain(seconds)\nRUR(n)\nsnils(v)\n```\n\n#### text\n```js\ncopyExecCommand(text)\nmetrics(prometheus)\nsearch(o, query, excludeKeys)\n```\n\n#### csv\n```js\ncsvBlob(s)\ncsvDecode(s)\ncsvEncode(a)\ndownload(blob, filename)\nupload(file)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbasis-company%2Fhelpers.js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbasis-company%2Fhelpers.js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbasis-company%2Fhelpers.js/lists"}