{"id":13535497,"url":"https://github.com/gabyvs/ng2-ue-utils","last_synced_at":"2026-04-02T11:49:43.295Z","repository":{"id":75851925,"uuid":"62678622","full_name":"gabyvs/ng2-ue-utils","owner":"gabyvs","description":"Set of angular2 components, directives, pipes and services that will be shared among unified experience SPAs. Visit demo page here:","archived":false,"fork":false,"pushed_at":"2017-05-03T03:22:28.000Z","size":8022,"stargazers_count":4,"open_issues_count":1,"forks_count":1,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-10-08T13:47:01.232Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://gabyvs.github.io/ng2-ue-utils","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gabyvs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2016-07-06T00:30:03.000Z","updated_at":"2017-12-21T07:31:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"91b444eb-c5db-456c-a739-b8d9db7fb245","html_url":"https://github.com/gabyvs/ng2-ue-utils","commit_stats":{"total_commits":101,"total_committers":10,"mean_commits":10.1,"dds":"0.39603960396039606","last_synced_commit":"0a860db63d85ba854e7f0355ee4542193be35e14"},"previous_names":[],"tags_count":40,"template":false,"template_full_name":null,"purl":"pkg:github/gabyvs/ng2-ue-utils","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabyvs%2Fng2-ue-utils","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabyvs%2Fng2-ue-utils/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabyvs%2Fng2-ue-utils/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabyvs%2Fng2-ue-utils/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gabyvs","download_url":"https://codeload.github.com/gabyvs/ng2-ue-utils/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabyvs%2Fng2-ue-utils/sbom","scorecard":{"id":416802,"data":{"date":"2025-08-11","repo":{"name":"github.com/gabyvs/ng2-ue-utils","commit":"0a860db63d85ba854e7f0355ee4542193be35e14"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":0,"reason":"Found 1/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'","Warn: branch protection not enabled for branch 'develop'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 2 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-19T00:08:16.001Z","repository_id":75851925,"created_at":"2025-08-19T00:08:16.002Z","updated_at":"2025-08-19T00:08:16.002Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31305809,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T09:48:21.550Z","status":"ssl_error","status_checked_at":"2026-04-02T09:48:19.196Z","response_time":89,"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-08-01T08:00:57.354Z","updated_at":"2026-04-02T11:49:43.269Z","avatar_url":"https://github.com/gabyvs.png","language":"TypeScript","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"[![Build Status](https://travis-ci.org/gabyvs/ng2-ue-utils.svg?branch=master)](https://travis-ci.org/gabyvs/ng2-ue-utils)\n[![npm version](https://badge.fury.io/js/ng2-ue-utils.svg)](https://badge.fury.io/js/ng2-ue-utils)\n\n# ng2-ue-utils\nSet of angular2 components, directives, pipes and services that will be shared among unified experience SPAs.\n\n## To use it as a dependency\n\n### Install from npm\n\n```bash\nnpm install ng2-ue-utils --save\n```\n\n### Prerequisites\n\nThis package is intended to be used only in Angular2/Webpack projects. The following tools are set as peer dependencies:\n\n* @angular/common: 2.1.2\n* @angular/compiler: 2.1.2\n* @angular/core: 2.1.2\n* @angular/forms: 2.1.2\n* @angular/http: 2.1.2\n* @angular/platform-browser: 2.1.2\n* @angular/platform-browser-dynamic: 2.1.2\n* @angular/router: 3.1.2\n* bootstrap: ^3.3.7\n* es6-shim: ^0.35.1\n* lodash: 4.16.4\n* moment: ^2.15.2\n* reflect-metadata: ^0.1.8\n* rbac-abacus: \"^0.1.0\",\n* rxjs: ^5.0.0-beta.12\n* zone.js: ^0.6.26\n\n### Usage\n\nIn your app.module or feature.module import Ng2UEUtilsModule and make all relevant services available for injection\n\n```\nimport { \n    APP_CONFIG,\n    ContextService,\n    Client,\n    ClientObserver,\n    ContextService,\n    IAppConfig,\n    NotificationService,\n    ProgressService,\n    TooltipService,\n    WindowRef,\n    Ng2UEUtilsModule } from 'ng2-ue-utils';\n    \n    .\n    . more imports\n    .\n    \nconst appConfig: IAppConfig = {\n    apiBasePath: 'myApiBasePath',\n    appBasePath: 'myAppBasePath',\n    appVersion: 'myAppVersion',\n    gtmAppName: 'myGTMAppName'\n};\n\n@NgModule({\n    bootstrap:    [ AppComponent ],\n    declarations: [\n        AppComponent,\n        MyComponent\n    ],\n    imports:      [\n        BrowserModule,\n        HttpModule,\n        Ng2UEUtilsModule,\n        RouterModule.forRoot(appLocalRoutes)\n    ],\n    providers: [\n       Client,\n       ClientObserver,\n       ContextService,\n       NotificationService,\n       MyProductClient,\n       MyProductRepository,\n       MyProductStorage,\n       MyProductsApiRoutes,\n       ProgressService,\n       TooltipService,\n       Location,\n       WindowRef,\n       { provide: APP_CONFIG, useValue: appConfig }\n    ]\n})\nexport class AppModule {}\n```\n\nUse the library components, directives and pipes as you regularly do\n\n``` ts\n@Component({\n  selector: 'my-component',\n  template: `\u003cspan\u003e{{ timestamp | dateMoment }}\u003c/span\u003e\u003cloading-dots\u003e\u003c/loading-dots\u003e`\n})\nexport class MyComponent {\n}\n```\n\nUpdate your component definition file to have service or interface types available\n\n```ts\nimport { ContextService, IAppConfig } from 'ng2-ue-utils';\n```\n\nAnd you are ready to go! :)\n\n### What's included\n\n#### Components\n\n* Filtering\n* Hint scroll\n* Loading dots\n* Modal\n* ModalBase\n* Notification\n* Pagination\n* Progress bar\n* Value handler\n* Date Picker\n\n####Directives\n\n* Toggle on hover\n* Focus on init\n* Tooltip\n* Dropdown\n\n#### Pipes\n\n* Date moment\n* From now\n\n#### Services\n\n* ApiRoutes\n* Client\n* ClientObserver\n* Context\n* GTMService\n* ObservableClient\n* ObservableClientBase\n* Repository\n* Storage\n* ValueStorage\n\nUnfortunately, not all services are documented yet.\nClient and Context are intended to help an SPA making client calls and getting the org and user context in which the SPA is being used.\nRouter helps as a single point for routes being built according to the context. It includes some shared routes/route templates that all the ALM UE SPAs are using.\nRepository and Storage are intended to help a listing page to handle storage and manipulation of the objects. \n\n**Note** You may not need or want to use all of these services.\nFor instance, if your application is logically scoped by the user context, you may not want the Apigee/Google Edge `organization`-scoped methods built into the `ObservableClient` -\nin such case you might do better by using either `ObservableClientBase` or the `Client` itself, depending on the feature set you require of them.\n\nThe best way to see how to integrate these resources is to have a look at the [getting started guide](https://revision.aeip.apigee.net/alm/getting-started) one of the SPAs that are using them. \nFor example, [alm-apps](https://revision.aeip.apigee.net/alm/alm-apps), [alm-developers](https://revision.aeip.apigee.net/oponce/alm-developers), [alm-products](https://revision.aeip.apigee.net/alm/alm-products), [proxies](https://revision.aeip.apigee.net/alm/proxies) or [alm-orgHistory](https://revision.aeip.apigee.net/alm/alm-orgHistory).  \n\n## To run in development mode\n\nThis is a TypeScript/Angular2 project and its NPM root will be the directory were you cloned the repo and\nwhere this README file is located. All `npm` commands are expected to be used at this _root_ directory.\n\n### Setting up your environment\n\n* If you don't have it, install or update NodeJS 6.x\n* Install Typings (npm -g install typings)\n* Clone this repository and run\n\n```bash\nnpm install\ntypings install\n```\n\nStart the demo app by running (will use ports 8080 and 3000 by default)\n```bash\nnpm start\n```\nThis will start webpack devserver and a node server too. Go to localhost:3000 to see the demo app running in your machine.\n\n### Running tests\n\nRun tests locally by running\n```bash\nnpm test\n```\n\nor for debugging tests\n```bash\nnpm run test:debug\n```\n\n### Contributing\nCreate a feature branch. In `/src`, find the appropriate directory for your new component(or directive/pipe/service)\nand create a new directory there.\n\nInclude your source code and any applicable tests. Document usage instructions for your\ncomponent in the source code. Ensure tests pass. Exclude your tests files on the file `/tsconfig.json` inside the root folder\n of this project so your tests are not transpiled in later stages.\n\nIf you are adding a component, directive or pipe, declare and export it in ng2-ue-utils.module.ts\n\nFor any new class, type or interface that you create, extend `index.ts` in root with your new types.\n\nAt this point you might want to test your changes locally in an existing project. Follow instructions in the next section for that.\n\nAdd your changes in the `CHANGELOG.md` file in the root of this project categorized as Features, bug fixes, breaking changes, dependency changes.\n\nIf you created a visual component, extend demo.html with implementation of your component and\nrun `npm run build:ghp` to update Github demo page when your commit reaches master branch.\n\nGenerate a merge request from your branch to develop branch.\nAfter the merge request is accepted, the team will publish a new version of the library to npm.\n\n### Testing the components into another project locally\n\nBuild this repo into a tarball file that you can install in another project locally so you can test your changes in action.\n\nFor creating the distribution files\n```bash\nnpm run build\n```\nThis will create a build folder in the root folder and store the transpiled javascript files and source maps there.\n\nTest your changes on another project by creating a tarball\n```bash\nnpm pack\n```\nThis will generate a .tgz file in the root folder. \n\nOn the project that you want to try this library, delete ng2-ue-utils source files inside `node_modules` folder if a previous version is already present. From your other project root folder:\n```bash\nrm -rf ./node-modules/ng2-ue-utils\n```\n\nAgain in your other project root folder, use the following command to install the tarball:\n```bash\nnpm install /path/to/ng2-ue-utils-someversion.tgz\n```\nAnd you will be ready to use it locally!\n\n## For pushing to NPM (to be done by contributors to NPM project only) \n\nOnce a new version is ready in master branch with a version number bumped from previous version and changes included in the changelog file:\n- Create a new release with the same version number included in the package.json file. You can add the same content added to the changelog in the description of the release\n- Run `npm run build`. This will generate distribution files inside `build` folder\n- Run `npm publish`. This will push the distribution file to npm project\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabyvs%2Fng2-ue-utils","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgabyvs%2Fng2-ue-utils","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabyvs%2Fng2-ue-utils/lists"}