├── .npmrc ├── .eslintrc ├── .jshintignore ├── .travis.yml ├── .gitignore ├── CODEOWNERS ├── .jshintrc ├── test ├── fixtures │ ├── async-app │ │ ├── app.js │ │ └── boot │ │ │ └── boot.js │ └── app.js └── lb-ng.test.js ├── .github ├── PULL_REQUEST_TEMPLATE.md └── ISSUE_TEMPLATE.md ├── intl ├── zh-Hans │ └── messages.json ├── zh-Hant │ └── messages.json ├── ko │ └── messages.json ├── ja │ └── messages.json ├── en │ └── messages.json ├── cs │ └── messages.json ├── ru │ └── messages.json ├── tr │ └── messages.json ├── pt │ └── messages.json ├── it │ └── messages.json ├── es │ └── messages.json ├── pl │ └── messages.json ├── fr │ └── messages.json ├── de │ └── messages.json └── nl │ └── messages.json ├── package.json ├── LICENSE ├── README.md ├── bin └── lb-ng.js ├── CHANGES.md └── CONTRIBUTING.md /.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "loopback" 3 | } 4 | -------------------------------------------------------------------------------- /.jshintignore: -------------------------------------------------------------------------------- 1 | test/sandbox/ 2 | node_modules/ 3 | coverage/ 4 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | language: node_js 3 | node_js: 4 | - "6" 5 | - "8" 6 | - "10" 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .project 3 | .DS_Store 4 | *.sublime* 5 | *.seed 6 | *.log 7 | *.csv 8 | *.dat 9 | *.out 10 | *.pid 11 | *.swp 12 | *.swo 13 | node_modules 14 | /test/sandbox 15 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | # Lines starting with '#' are comments. 2 | # Each line is a file pattern followed by one or more owners, 3 | # the last matching pattern has the most precendence. 4 | 5 | # Core team members from IBM 6 | * @kjdelisle @jannyHou @loay @b-admike @ssh24 @virkt25 @dhmlau 7 | -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "node": true, 3 | "browser": true, 4 | "camelcase" : true, 5 | "eqnull" : true, 6 | "indent": 2, 7 | "undef": true, 8 | "quotmark": "single", 9 | "maxlen": 80, 10 | "trailing": true, 11 | "newcap": true, 12 | "nonew": true, 13 | "sub": true, 14 | "globals": { 15 | "describe": true, 16 | "it": true, 17 | "before": true, 18 | "beforeEach": true, 19 | "after": true, 20 | "afterEach": true 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /test/fixtures/async-app/app.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2015,2016. All Rights Reserved. 2 | // Node module: loopback-sdk-angular-cli 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var loopback = require('loopback'); 9 | var boot = require('loopback-boot'); 10 | 11 | var app = loopback(); 12 | boot(app, __dirname); 13 | 14 | module.exports = app; 15 | -------------------------------------------------------------------------------- /test/fixtures/async-app/boot/boot.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2015,2016. All Rights Reserved. 2 | // Node module: loopback-sdk-angular-cli 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | module.exports = function(app, done) { 9 | process.nextTick(function() { 10 | var MyModel = app.registry.createModel('ASYNCMODEL', {}); 11 | app.model(MyModel, {public: true}); 12 | 13 | done(); 14 | }); 15 | }; 16 | -------------------------------------------------------------------------------- /test/fixtures/app.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2014,2018. All Rights Reserved. 2 | // Node module: loopback-sdk-angular-cli 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var loopback = require('loopback'); 9 | var app = loopback(); 10 | 11 | app.dataSource('db', {connector: 'memory'}); 12 | app.set('restApiRoot', '/rest-api-root'); 13 | 14 | var TestModel = app.registry.createModel( 15 | 'TestModel', 16 | {foobaz: 'string'} 17 | ); 18 | app.model(TestModel, {dataSource: 'db'}); 19 | 20 | module.exports = app; 21 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ### Description 2 | 3 | 4 | #### Related issues 5 | 6 | 12 | 13 | - connect to 14 | 15 | ### Checklist 16 | 17 | 22 | 23 | - [ ] New tests added or existing tests modified to cover all changes 24 | - [ ] Code conforms with the [style 25 | guide](http://loopback.io/doc/en/contrib/style-guide.html) 26 | -------------------------------------------------------------------------------- /intl/zh-Hans/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "03bb755ed8213986b1862be937b296bb": "生成的 {{Angular}} 模块的名称。", 3 | "25eecfaa310e55ace4ef6eba593ba32e": "正在针对 API 端点 {1} 生成 {0}", 4 | "3669f5dd8a727a4f4247d7ad86993e0c": "\n代码生成器不支持基于 \n{{LoopBack}} V1.6.0 之前的版本的应用程序。请将项目升级\n为最新版本的 {{LoopBack}},并再次运行此工具。\n", 5 | "a0dfff5af3ed168969b32427820c6205": "名称空间定界符。", 6 | "aaf2cd75317f7b1b53e34516f92d57ba": "用于为公共模型指定名称空间的布尔值。", 7 | "af39e85bbd74a37c9a8beec4268564bd": "针对 {{LoopBack}} 应用程序生成 {{Angular $resource}} 服务。\n用法:\n $0 {{[options] server/app.js [client/js/lb-services.js]}}", 8 | "dbef1e1c2cc9f52ae9aacca33e9d92c2": "正在将生成的服务源保存到 {0}", 9 | "dff77762368d4e45c34a01e661ad2c06": "正在装入 {{LoopBack}} 应用程序 {0}", 10 | "efc6bce92bcb061e3e354a888c7bd76a": "正在转储到 {{stdout}}", 11 | "fc1c9755ca71e88d7aaa4be225d07bc8": "REST API 端点的 URL" 12 | } 13 | 14 | -------------------------------------------------------------------------------- /intl/zh-Hant/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "03bb755ed8213986b1862be937b296bb": "產生的 {{Angular}} 模組的名稱。", 3 | "25eecfaa310e55ace4ef6eba593ba32e": "正在為 API 端點 {1} 產生 {0}", 4 | "3669f5dd8a727a4f4247d7ad86993e0c": "\n程式碼產生器不支援以 1.6.0 之前\n的 {{LoopBack}} 版本為基礎的應用程式。請將您的專案升級\n到最新版的 {{LoopBack}},再重新執行此工具。\n", 5 | "a0dfff5af3ed168969b32427820c6205": "名稱空間定界字元。", 6 | "aaf2cd75317f7b1b53e34516f92d57ba": "為一般模型設定名稱空間的布林值。", 7 | "af39e85bbd74a37c9a8beec4268564bd": "為您的 {{LoopBack}} 應用程式產生 {{Angular $resource}} 服務。\n用法:\n $0 {{[options] server/app.js [client/js/lb-services.js]}}", 8 | "dbef1e1c2cc9f52ae9aacca33e9d92c2": "正在將產生的服務來源儲存至 {0}", 9 | "dff77762368d4e45c34a01e661ad2c06": "正在載入 {{LoopBack}} 應用程式 {0}", 10 | "efc6bce92bcb061e3e354a888c7bd76a": "正在傾出到 {{stdout}}", 11 | "fc1c9755ca71e88d7aaa4be225d07bc8": "REST API 端點的 URL" 12 | } 13 | 14 | -------------------------------------------------------------------------------- /intl/ko/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "03bb755ed8213986b1862be937b296bb": "생성된 {{Angular}} 모듈의 이름입니다.", 3 | "25eecfaa310e55ace4ef6eba593ba32e": "API 엔드포인트 {1}에 대해 {0} 생성", 4 | "3669f5dd8a727a4f4247d7ad86993e0c": "\n코드 생성기에서는 \n{{LoopBack}} 버전 1.6.0 이전을 기반으로 하는 애플리케이션을 지원하지 않습니다. \n최신 버전의 {{LoopBack}}(으)로 프로젝트를 업그레이드하고 이 도구를 다시 실행하십시오.\n", 5 | "a0dfff5af3ed168969b32427820c6205": "네임스페이스 구분 기호", 6 | "aaf2cd75317f7b1b53e34516f92d57ba": "공통 모델의 네임스페이스에 대한 부울입니다.", 7 | "af39e85bbd74a37c9a8beec4268564bd": "{{LoopBack}} 애플리케이션에 대한 {{Angular $resource}} 서비스를 생성합니다.\n사용법:\n $0 {{[options] server/app.js [client/js/lb-services.js]}}", 8 | "dbef1e1c2cc9f52ae9aacca33e9d92c2": "생성된 서비스 소스를 {0}에 저장 중", 9 | "dff77762368d4e45c34a01e661ad2c06": "{{LoopBack}} 앱 {0} 로드 중", 10 | "efc6bce92bcb061e3e354a888c7bd76a": "{{stdout}}에 덤핑 중", 11 | "fc1c9755ca71e88d7aaa4be225d07bc8": "REST API 엔드포인트의 URL" 12 | } 13 | 14 | -------------------------------------------------------------------------------- /intl/ja/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "03bb755ed8213986b1862be937b296bb": "生成された {{Angular}} モジュールの名前。", 3 | "25eecfaa310e55ace4ef6eba593ba32e": "API エンドポイント {1} の {0} を生成しています", 4 | "3669f5dd8a727a4f4247d7ad86993e0c": "\nコード・ジェネレーターは、1.6.0 より古い {{LoopBack}} バージョンに基づく\nアプリケーションをサポートしていません。 プロジェクトを新しいバージョンの {{LoopBack}} に\nアップグレードしてから、このツールをもう一度実行してください。\n", 5 | "a0dfff5af3ed168969b32427820c6205": "名前空間区切り文字。", 6 | "aaf2cd75317f7b1b53e34516f92d57ba": "共通モデルを名前空間に設定するためのブール値。", 7 | "af39e85bbd74a37c9a8beec4268564bd": "{{LoopBack}} アプリケーションの {{Angular $resource}} サービスを生成します。\n使用法:\n $0 {{[options] server/app.js [client/js/lb-services.js]}}", 8 | "dbef1e1c2cc9f52ae9aacca33e9d92c2": "生成されたサービス・ソースを {0} に保存しています", 9 | "dff77762368d4e45c34a01e661ad2c06": "{{LoopBack}} アプリケーション {0} をロードしています", 10 | "efc6bce92bcb061e3e354a888c7bd76a": "{{stdout}} にダンプしています", 11 | "fc1c9755ca71e88d7aaa4be225d07bc8": "REST API エンドポイントの URL" 12 | } 13 | 14 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 9 | 10 | # Description/Steps to reproduce 11 | 12 | 16 | 17 | # Link to reproduction sandbox 18 | 19 | 24 | 25 | # Expected result 26 | 27 | 30 | 31 | # Additional information 32 | 33 | 38 | -------------------------------------------------------------------------------- /intl/en/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "03bb755ed8213986b1862be937b296bb": "The name for generated {{Angular}} module.", 3 | "25eecfaa310e55ace4ef6eba593ba32e": "Generating {0} for the API endpoint {1}", 4 | "3669f5dd8a727a4f4247d7ad86993e0c": "\nThe code generator does not support applications based on\n{{LoopBack}} versions older than 1.6.0. Please upgrade your project\nto a recent version of {{LoopBack}} and run this tool again.\n", 5 | "a0dfff5af3ed168969b32427820c6205": "namespace delimiter.", 6 | "aaf2cd75317f7b1b53e34516f92d57ba": "boolean to namespace the common models.", 7 | "af39e85bbd74a37c9a8beec4268564bd": "Generate {{Angular $resource}} services for your {{LoopBack}} application.\nUsage:\n $0 {{[options] server/app.js [client/js/lb-services.js]}}", 8 | "dbef1e1c2cc9f52ae9aacca33e9d92c2": "Saving the generated services source to {0}", 9 | "dff77762368d4e45c34a01e661ad2c06": "Loading {{LoopBack}} app {0}", 10 | "efc6bce92bcb061e3e354a888c7bd76a": "Dumping to {{stdout}}", 11 | "fc1c9755ca71e88d7aaa4be225d07bc8": "URL of the REST API end-point" 12 | } 13 | -------------------------------------------------------------------------------- /intl/cs/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "03bb755ed8213986b1862be937b296bb": "Název pro generovaný modul {{Angular}}.", 3 | "25eecfaa310e55ace4ef6eba593ba32e": "Generování {0} pro koncový bod rozhraní API {1}", 4 | "3669f5dd8a727a4f4247d7ad86993e0c": "\nGenerátor kódu nepodporuje aplikace založené na verzích \n{{LoopBack}} starších než 1.6.0. Proveďte upgrade svého projektu\n na novější verzi {{LoopBack}} a spusťte tento nástroj znovu.\n", 5 | "a0dfff5af3ed168969b32427820c6205": "Oddělovač oborů názvů.", 6 | "aaf2cd75317f7b1b53e34516f92d57ba": "Logická hodnota pro obor názvů společných modelů.", 7 | "af39e85bbd74a37c9a8beec4268564bd": "Generujte služby {{Angular $resource}} pro aplikaci {{LoopBack}}.\nPoužití:\n $0 {{[options] server/app.js [client/js/lb-services.js]}}", 8 | "dbef1e1c2cc9f52ae9aacca33e9d92c2": "Uložení generovaného zajištění zdrojů služeb do {0}", 9 | "dff77762368d4e45c34a01e661ad2c06": "Načítání aplikace {{LoopBack}} {0}", 10 | "efc6bce92bcb061e3e354a888c7bd76a": "Výpis paměti do {{stdout}}", 11 | "fc1c9755ca71e88d7aaa4be225d07bc8": "Adresa URL koncového bodu rozhraní REST API " 12 | } 13 | 14 | -------------------------------------------------------------------------------- /intl/ru/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "03bb755ed8213986b1862be937b296bb": "Имя созданного модуля {{Angular}}.", 3 | "25eecfaa310e55ace4ef6eba593ba32e": "Создается {0} для конечной точки API {1}", 4 | "3669f5dd8a727a4f4247d7ad86993e0c": "\nГенератор исходного кода не поддерживает приложения, основанные\n на версиях {{LoopBack}} меньше 1.6.0. Обновите проект\n до новейшей версии {{LoopBack}} и запустите утилиту повторно.\n", 5 | "a0dfff5af3ed168969b32427820c6205": "ограничитель пространств имен.", 6 | "aaf2cd75317f7b1b53e34516f92d57ba": "булевское значение для создания пространства имен для общих моделей.", 7 | "af39e85bbd74a37c9a8beec4268564bd": "Создайте службы {{Angular $resource}} для приложения {{LoopBack}}.\nФормат:\n $0 {{[options] server/app.js [client/js/lb-services.js]}}", 8 | "dbef1e1c2cc9f52ae9aacca33e9d92c2": "Сохранение созданного исходного кода служб в {0}", 9 | "dff77762368d4e45c34a01e661ad2c06": "Загрузка приложения {{LoopBack}} {0}", 10 | "efc6bce92bcb061e3e354a888c7bd76a": "Создание дампа в {{stdout}}", 11 | "fc1c9755ca71e88d7aaa4be225d07bc8": "URL конечной точки API REST" 12 | } 13 | 14 | -------------------------------------------------------------------------------- /intl/tr/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "03bb755ed8213986b1862be937b296bb": "Oluşturulan {{Angular}} modülünün adı.", 3 | "25eecfaa310e55ace4ef6eba593ba32e": "{1} API uç noktası için {0} oluşturuluyor", 4 | "3669f5dd8a727a4f4247d7ad86993e0c": "\nKod oluşturucu, 1.6.0 sürümünden eski \n{{LoopBack}} sürümlerine dayalı uygulamaları desteklemiyor. Lütfen projenizi\ndaha yeni bir {{LoopBack}} sürümüne yükseltin ve bu aracı yeniden çalıştırın.\n", 5 | "a0dfff5af3ed168969b32427820c6205": "ad alanı sınırlayıcısı.", 6 | "aaf2cd75317f7b1b53e34516f92d57ba": "genel modellere yönelik ad alanı için boole.", 7 | "af39e85bbd74a37c9a8beec4268564bd": "{{LoopBack}} uygulamanız için {{Angular $resource}} hizmetleri oluşturur.\nKullanım:\n $0 {{[options] server/app.js [client/js/lb-services.js]}}", 8 | "dbef1e1c2cc9f52ae9aacca33e9d92c2": "Oluşturulan hizmet kaynağı {0} içine kaydediliyor", 9 | "dff77762368d4e45c34a01e661ad2c06": "{{LoopBack}} uygulaması {0} yükleniyor", 10 | "efc6bce92bcb061e3e354a888c7bd76a": "Döküm {{stdout}} içine yazılıyor", 11 | "fc1c9755ca71e88d7aaa4be225d07bc8": "REST API uç noktasının URL'si" 12 | } 13 | 14 | -------------------------------------------------------------------------------- /intl/pt/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "03bb755ed8213986b1862be937b296bb": "O nome para o módulo {{Angular}} gerado.", 3 | "25eecfaa310e55ace4ef6eba593ba32e": "Gerando {0} para o terminal da API {1}", 4 | "3669f5dd8a727a4f4247d7ad86993e0c": "\nO gerador de código não suporta aplicativos baseados em\nversões de {{LoopBack}} mais antigas que 1.6.0. Faça upgrade de seu projeto\npara uma versão recente de {{LoopBack}} e execute esta ferramenta novamente.\n", 5 | "a0dfff5af3ed168969b32427820c6205": "delimitador de espaço de nomes.", 6 | "aaf2cd75317f7b1b53e34516f92d57ba": "booleano para espaço de nomes dos modelos comuns.", 7 | "af39e85bbd74a37c9a8beec4268564bd": "Gere serviços de {{Angular $resource}} para seu aplicativo {{LoopBack}}.\nUso:\n $0 {{[options] server/app.js [client/js/lb-services.js]}}", 8 | "dbef1e1c2cc9f52ae9aacca33e9d92c2": "Salvando a origem de serviços gerados em {0}", 9 | "dff77762368d4e45c34a01e661ad2c06": "Carregando aplicativo {{LoopBack}} {0}", 10 | "efc6bce92bcb061e3e354a888c7bd76a": "Executando dump para {{stdout}}", 11 | "fc1c9755ca71e88d7aaa4be225d07bc8": "URL do terminal da API REST" 12 | } 13 | 14 | -------------------------------------------------------------------------------- /intl/it/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "03bb755ed8213986b1862be937b296bb": "Il nome del modulo {{Angular}} generato.", 3 | "25eecfaa310e55ace4ef6eba593ba32e": "Generazione di {0} per l'endpoint dell'API {1}", 4 | "3669f5dd8a727a4f4247d7ad86993e0c": "\nIl generatore di codice non supporta le applicazioni basate su\nversioni {{LoopBack}} precedenti alla 1.6.0. Aggiornare il progetto\nad una versione recente di {{LoopBack}} ed eseguire nuovamente questo strumento.\n", 5 | "a0dfff5af3ed168969b32427820c6205": "delimitatore dello spazio dei nomi.", 6 | "aaf2cd75317f7b1b53e34516f92d57ba": "booleano per lo spazio dei nomi dei modelli comuni.", 7 | "af39e85bbd74a37c9a8beec4268564bd": "Genera servizi {{Angular $resource}} per l'applicazione {{LoopBack}}.\nUtilizzo:\n $0 {{[options] server/app.js [client/js/lb-services.js]}}", 8 | "dbef1e1c2cc9f52ae9aacca33e9d92c2": "Salvataggio dell'origine dei servizi generati in {0}", 9 | "dff77762368d4e45c34a01e661ad2c06": "Caricamento app {{LoopBack}} {0}", 10 | "efc6bce92bcb061e3e354a888c7bd76a": "Dump in {{stdout}}", 11 | "fc1c9755ca71e88d7aaa4be225d07bc8": "URL dell'endpoint dell'API REST" 12 | } 13 | 14 | -------------------------------------------------------------------------------- /intl/es/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "03bb755ed8213986b1862be937b296bb": "El nombre para el módulo {{Angular}} generado.", 3 | "25eecfaa310e55ace4ef6eba593ba32e": "Generando {0} para el punto final de API {1}", 4 | "3669f5dd8a727a4f4247d7ad86993e0c": "\nEl generador de códigos no da soporte a aplicaciones basadas en versiones de \n{{LoopBack}} anteriores a 1.6.0. Actualice el proyecto\na una versión reciente de {{LoopBack}} y ejecute de nuevo esta herramienta.\n", 5 | "a0dfff5af3ed168969b32427820c6205": "delimitador de espacio de nombres", 6 | "aaf2cd75317f7b1b53e34516f92d57ba": "booleano para dar espacio de nombres a los modelos comunes.", 7 | "af39e85bbd74a37c9a8beec4268564bd": "Generar servicios {{Angular $resource}} para la aplicación {{LoopBack}}.\nUso:\n $0 {{[options] server/app.js [client/js/lb-services.js]}}", 8 | "dbef1e1c2cc9f52ae9aacca33e9d92c2": "Guardando el origen de servicios generado en {0}", 9 | "dff77762368d4e45c34a01e661ad2c06": "Cargando la aplicación {{LoopBack}} {0}", 10 | "efc6bce92bcb061e3e354a888c7bd76a": "Volcando en {{stdout}}", 11 | "fc1c9755ca71e88d7aaa4be225d07bc8": "URL del punto final de la API REST" 12 | } 13 | 14 | -------------------------------------------------------------------------------- /intl/pl/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "03bb755ed8213986b1862be937b296bb": "Nazwa dla wygenerowanego modułu {{Angular}}.", 3 | "25eecfaa310e55ace4ef6eba593ba32e": "Generowanie {0} dla punktu końcowego interfejsu API {1}", 4 | "3669f5dd8a727a4f4247d7ad86993e0c": "\nGenerator kodu nie obsługuje aplikacji opartych na wersjach aplikacji \n{{LoopBack}} starszych niż 1.6.0. Zaktualizuj projekt\ndo nowszej wersji aplikacji {{LoopBack}} i ponownie uruchom to narzędzie.\n", 5 | "a0dfff5af3ed168969b32427820c6205": "ogranicznik przestrzeni nazw.", 6 | "aaf2cd75317f7b1b53e34516f92d57ba": "wartość boolowska do przestrzeni nazw wspólnych modeli.", 7 | "af39e85bbd74a37c9a8beec4268564bd": "Wygeneruj usługi {{Angular $resource}} dla aplikacji {{LoopBack}}. \nSkładnia:\n $0 {{[options] server/app.js [client/js/lb-services.js]}}", 8 | "dbef1e1c2cc9f52ae9aacca33e9d92c2": "Zapisywanie wygenerowanego źródła usług w {0}", 9 | "dff77762368d4e45c34a01e661ad2c06": "Ładowanie aplikacji {{LoopBack}} {0}", 10 | "efc6bce92bcb061e3e354a888c7bd76a": "Wykonywanie zrzutu do {{stdout}}", 11 | "fc1c9755ca71e88d7aaa4be225d07bc8": "Adres URL punktu końcowego interfejsu REST API" 12 | } 13 | 14 | -------------------------------------------------------------------------------- /intl/fr/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "03bb755ed8213986b1862be937b296bb": "Nom du module {{Angular}} généré.", 3 | "25eecfaa310e55ace4ef6eba593ba32e": "Génération de {0} pour le noeud final d'API {1}", 4 | "3669f5dd8a727a4f4247d7ad86993e0c": "\nLe générateur de code ne prend pas en charge les applications basées sur\n les versions {{LoopBack}} antérieures à 1.6.0. Mettez à niveau le projet\nvers une version récente de {{LoopBack}} et exécutez à nouveau cet outil.\n", 5 | "a0dfff5af3ed168969b32427820c6205": "délimiteur d'espace de nom. ", 6 | "aaf2cd75317f7b1b53e34516f92d57ba": "valeur booléenne dans l'espace de nom des modèles communs.", 7 | "af39e85bbd74a37c9a8beec4268564bd": "Générez les services {{Angular $resource}} pour votre application {{LoopBack}}.\nSyntaxe :\n $0 {{[options] server/app.js [client/js/lb-services.js]}}", 8 | "dbef1e1c2cc9f52ae9aacca33e9d92c2": "Sauvegarde de la source des services générés vers {0}", 9 | "dff77762368d4e45c34a01e661ad2c06": "Chargement de l'application {{LoopBack}} {0}", 10 | "efc6bce92bcb061e3e354a888c7bd76a": "Vidage vers {{stdout}}", 11 | "fc1c9755ca71e88d7aaa4be225d07bc8": "URL du noeud final d'API REST" 12 | } 13 | 14 | -------------------------------------------------------------------------------- /intl/de/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "03bb755ed8213986b1862be937b296bb": "Der Name für das generierte {{Angular}}-Modul.", 3 | "25eecfaa310e55ace4ef6eba593ba32e": "{0} wird für den API-Endpunkt {1} generiert", 4 | "3669f5dd8a727a4f4247d7ad86993e0c": "\nDer Codegenerator unterstützt keine Anwendungen, die auf älteren\n{{LoopBack}}-Versionen als 1.6.0 basieren. Führen Sie ein Upgrade Ihres Projekts\nauf eine aktuelle Version von {{LoopBack}} durch und führen Sie dieses Tool erneut aus.\n", 5 | "a0dfff5af3ed168969b32427820c6205": "Namensbereichsbegrenzungszeichen.", 6 | "aaf2cd75317f7b1b53e34516f92d57ba": "boolesch zum Namensbereich der allgemeinen Modelle.", 7 | "af39e85bbd74a37c9a8beec4268564bd": "Generieren Sie {{Angular $resource}}-Services für Ihre {{LoopBack}}-Anwendung.\nSyntax:\n $0 {{[options] server/app.js [client/js/lb-services.js]}}", 8 | "dbef1e1c2cc9f52ae9aacca33e9d92c2": "Generierte Servicequellen werden gespeichert in {0}", 9 | "dff77762368d4e45c34a01e661ad2c06": "{{LoopBack}}-App {0} wird geladen", 10 | "efc6bce92bcb061e3e354a888c7bd76a": "Speicherauszug in {{stdout}}", 11 | "fc1c9755ca71e88d7aaa4be225d07bc8": "URL des REST-API-Endpunkts" 12 | } 13 | 14 | -------------------------------------------------------------------------------- /intl/nl/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "03bb755ed8213986b1862be937b296bb": "De naam voor gegenereerde module {{Angular}}.", 3 | "25eecfaa310e55ace4ef6eba593ba32e": "{0} wordt gegenereerd voor het API-eindpunt {1}", 4 | "3669f5dd8a727a4f4247d7ad86993e0c": "\nDe codegenerator ondersteunt geen toepassingen die gebaseerd zijn op\n{{LoopBack}}-versies die ouder zijn dan 1.6.0. Breng een upgrade aan op uw project\nnaar een recente versie van {{LoopBack}} en voer deze functie opnieuw uit.\n", 5 | "a0dfff5af3ed168969b32427820c6205": "begrenzingsteken voor naamruimte/", 6 | "aaf2cd75317f7b1b53e34516f92d57ba": "booleaanse waarde voor naamruimte van algemene modellen.", 7 | "af39e85bbd74a37c9a8beec4268564bd": "Genereer {{Angular $resource}}-services voor de toepassing {{LoopBack}}.\nSyntaxis:\n $0 {{[options] server/app.js [client/js/lb-services.js]}}", 8 | "dbef1e1c2cc9f52ae9aacca33e9d92c2": "Gegenereerde servicesbron wordt opgeslagen in {0}", 9 | "dff77762368d4e45c34a01e661ad2c06": "{{LoopBack}}-app {0} wordt geladen", 10 | "efc6bce92bcb061e3e354a888c7bd76a": "Dump uitgevoerd naar {{stdout}}", 11 | "fc1c9755ca71e88d7aaa4be225d07bc8": "URL van het REST API-eindpunt" 12 | } 13 | 14 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "loopback-sdk-angular-cli", 3 | "version": "3.3.1", 4 | "description": "CLI tools for auto-generating Angular $resource services for LoopBack", 5 | "bin": { 6 | "lb-ng": "bin/lb-ng.js" 7 | }, 8 | "scripts": { 9 | "test": "mocha --timeout 5000", 10 | "posttest": "eslint ." 11 | }, 12 | "repository": { 13 | "type": "git", 14 | "url": "git://github.com/strongloop/loopback-sdk-angular-cli.git" 15 | }, 16 | "keywords": [ 17 | "loopback", 18 | "angular", 19 | "cli" 20 | ], 21 | "author": "IBM Corp.", 22 | "license": "MIT", 23 | "bugs": { 24 | "url": "https://github.com/strongloop/loopback-sdk-angular-cli/issues" 25 | }, 26 | "engines": { 27 | "node": ">=6" 28 | }, 29 | "dependencies": { 30 | "loopback-sdk-angular": "^3.1.0", 31 | "optimist": "^0.6.1", 32 | "semver": "^5.5.0", 33 | "strong-globalize": "^4.1.0" 34 | }, 35 | "devDependencies": { 36 | "bluebird": "^1.2.4", 37 | "chai": "^4.1.2", 38 | "debug": "^3.1.0", 39 | "dirty-chai": "^2.0.1", 40 | "eslint": "^4.19.1", 41 | "eslint-config-loopback": "^10.0.0", 42 | "fs.extra": "^1.2.1", 43 | "loopback": "^3.0.0", 44 | "loopback-boot": "^2.14.1", 45 | "mocha": "^5.2.0" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) IBM Corp. 2014,2017. All Rights Reserved. 2 | Node module: loopback-sdk-angular-cli 3 | This project is licensed under the MIT License, full text below. 4 | 5 | -------- 6 | 7 | MIT license 8 | 9 | Permission is hereby granted, free of charge, to any person obtaining a copy 10 | of this software and associated documentation files (the "Software"), to deal 11 | in the Software without restriction, including without limitation the rights 12 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 13 | copies of the Software, and to permit persons to whom the Software is 14 | furnished to do so, subject to the following conditions: 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # loopback-sdk-angular-cli 2 | 3 | **⚠️ LoopBack 3 is in Maintenance LTS mode, only critical bugs and critical 4 | security fixes will be provided. (See 5 | [Module Long Term Support Policy](#module-long-term-support-policy) below.)** 6 | 7 | We urge all LoopBack 3 users to migrate their applications to LoopBack 4 as 8 | soon as possible. Refer to our 9 | [Migration Guide](https://loopback.io/doc/en/lb4/migration-overview.html) 10 | for more information on how to upgrade. 11 | 12 | ## Overview 13 | 14 | CLI tools for the [LoopBack AngularJS SDK](https://github.com/strongloop/loopback-sdk-angular). 15 | 16 | See the official [LoopBack AngularJS SDK documentation](https://loopback.io/doc/en/lb2/AngularJS-JavaScript-SDK.html) 17 | for more information. 18 | 19 | ## Mailing List 20 | 21 | Discuss features and ask questions on [LoopBack Forum](https://groups.google.com/forum/#!forum/loopbackjs). 22 | 23 | ## Module Long Term Support Policy 24 | 25 | This module adopts the [Module Long Term Support (LTS)](http://github.com/CloudNativeJS/ModuleLTS) policy, with the following End Of Life (EOL) dates: 26 | 27 | | Version | Status | Published | EOL | 28 | | ------- | --------------- | --------- | -------- | 29 | | 3.x | Maintenance LTS | Feb 2017 | Dec 2020 | 30 | | 2.x | End-of-Life | Dec 2015 | Apr 2019 | 31 | 32 | Learn more about our LTS plan in the [docs](https://loopback.io/doc/en/contrib/Long-term-support.html). 33 | -------------------------------------------------------------------------------- /bin/lb-ng.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // Copyright IBM Corp. 2016,2018. All Rights Reserved. 3 | // Node module: loopback-sdk-angular-cli 4 | // This file is licensed under the MIT License. 5 | // License text available at https://opensource.org/licenses/MIT 6 | 7 | 'use strict'; 8 | 9 | var path = require('path'); 10 | var SG = require('strong-globalize'); 11 | SG.SetRootDir(path.resolve(__dirname, '..')); 12 | var g = SG(); 13 | var fs = require('fs'); 14 | var semver = require('semver'); 15 | var optimist = require('optimist'); 16 | var generator = require('loopback-sdk-angular'); 17 | 18 | var argv = optimist 19 | .usage(g.f( 20 | 'Generate {{Angular $resource}} services ' + 21 | 'for your {{LoopBack}} application.' + 22 | '\nUsage:' + 23 | '\n $0 {{[options] server/app.js [client/js/lb-services.js]}}')) 24 | .describe('m', g.f('The name for generated {{Angular}} module.')) 25 | .default('m', 'lbServices') 26 | .describe('u', g.f('URL of the REST API end-point')) 27 | .describe('c', g.f('boolean to namespace the common models.')) 28 | .boolean('c') 29 | .describe('d', g.f('namespace delimiter.')) 30 | .default('d', '.') 31 | .describe('s', 'Include schema definition in generated models') 32 | .boolean('s') 33 | .alias({u: 'url', m: 'module-name', s: 'include-schema', 34 | c: 'namespace-common-models', d: 'namespace-delimiter'}) 35 | .demand(1) 36 | .argv; 37 | 38 | var appFile = path.resolve(argv._[0]); 39 | var outputFile = argv._[1]; 40 | 41 | g.error('Loading {{LoopBack}} app %j', appFile); 42 | var app = require(appFile); 43 | assertLoopBackVersion(); 44 | 45 | if (app.booting) { 46 | app.on('booted', runGenerator); 47 | } else { 48 | runGenerator(); 49 | } 50 | 51 | function runGenerator() { 52 | var ngModuleName = argv['module-name'] || 'lbServices'; 53 | var apiUrl = argv['url'] || app.get('restApiRoot') || '/api'; 54 | var includeSchema = argv['include-schema'] || false; 55 | var namespaceDelimiter = argv['namespace-delimiter'] || '.'; 56 | var namespaceCommonModels = argv['namespace-common-models'] || false; 57 | g.error('Generating %j for the API endpoint %j', ngModuleName, apiUrl); 58 | var result = generator.services(app, { 59 | ngModuleName: ngModuleName, 60 | apiUrl: apiUrl, 61 | namespaceCommonModels: namespaceCommonModels, 62 | namespaceDelimiter: namespaceDelimiter, 63 | includeSchema: includeSchema, 64 | }); 65 | 66 | if (outputFile) { 67 | outputFile = path.resolve(outputFile); 68 | g.error('Saving the generated services source to %j', outputFile); 69 | fs.writeFileSync(outputFile, result); 70 | } else { 71 | g.error('Dumping to {{stdout}}'); 72 | process.stdout.write(result); 73 | } 74 | 75 | // The exit is deferred to the next tick in order to prevent the Node bug: 76 | // https://github.com/joyent/node/issues/3584 77 | process.nextTick(function() { 78 | process.exit(); 79 | }); 80 | } 81 | 82 | // --- helpers ---// 83 | 84 | function assertLoopBackVersion() { 85 | var Module = require('module'); 86 | 87 | // Load the 'loopback' module in the context of the app.js file, 88 | // usually from node_modules/loopback of the project of app.js 89 | var loopback = Module._load('loopback', Module._cache[appFile]); 90 | 91 | if (semver.lt(loopback.version, '1.6.0')) { 92 | g.error('\n' + 93 | 'The code generator does not support applications based on\n' + 94 | '{{LoopBack}} versions older than 1.6.0. Please upgrade your project\n' + 95 | 'to a recent version of {{LoopBack}} and run this tool again.\n'); 96 | process.exit(1); 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /test/lb-ng.test.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2014,2018. All Rights Reserved. 2 | // Node module: loopback-sdk-angular-cli 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var extend = require('util')._extend; 9 | var fs = require('fs.extra'); 10 | var path = require('path'); 11 | var Promise = require('bluebird'); 12 | var exec = Promise.promisify(require('child_process').exec); 13 | var debug = require('debug')('test'); 14 | var parse = require('loopback-sdk-angular/parse-helper'); 15 | 16 | var chai = require('chai'); 17 | chai.use(require('dirty-chai')); 18 | var expect = chai.expect; 19 | 20 | describe('lb-ng', function() { 21 | var sampleAppJs = require.resolve('./fixtures/app.js'); 22 | var sampleAsyncAppJs = require.resolve('./fixtures/async-app/app.js'); 23 | var SANDBOX = path.resolve(__dirname, 'sandbox'); 24 | 25 | beforeEach(resetSandbox); 26 | 27 | it('prints help on no arguments', function() { 28 | return runLbNg() 29 | .then(function() { 30 | throw new Error('lb-ng was supposed to fail with non-zero exit code'); 31 | }) 32 | .catch(function(err) { 33 | expect(err.code, 'exit code').to.equal(1); 34 | expect(err.message).to.contain('Usage'); 35 | }); 36 | }); 37 | 38 | it('generates "lbServices" module with app.restApiRoot url', 39 | function() { 40 | return runLbNg(sampleAppJs).spread(function(script, stderr) { 41 | // the value "lbServices" is the --module-name default 42 | expect(parse.moduleName(script)).to.equal('lbServices'); 43 | // the value "/rest-api-root" is hard-coded in sampleAppJs 44 | expect(parse.baseUrl(script)).to.equal('/rest-api-root'); 45 | }); 46 | }); 47 | 48 | it('uses the module name from command-line', function() { 49 | return runLbNg('-m', 'a-module-name', sampleAppJs) 50 | .spread(function(script, stderr) { 51 | expect(parse.moduleName(script)).to.equal('a-module-name'); 52 | }); 53 | }); 54 | 55 | it('uses the namespacing common modules from command-line', function() { 56 | return runLbNg('-c', 'true', '-d', '_', sampleAppJs) 57 | .spread(function(script, stderr) { 58 | expect(script).to.match(/lbServices_Resource/); 59 | }); 60 | }); 61 | 62 | it('uses the url from command-line', function() { 63 | return runLbNg('-u', 'http://foo/bar', sampleAppJs) 64 | .spread(function(script, stderr) { 65 | expect(parse.baseUrl(script)).to.equal('http://foo/bar'); 66 | }); 67 | }); 68 | 69 | it('passes the include-schema flag from the command-line', function() { 70 | var outfile = path.resolve(SANDBOX, 'lb-services.js'); 71 | return runLbNg('-s', sampleAppJs, outfile) 72 | .spread(function() { 73 | var script = fs.readFileSync(outfile); 74 | expect(script).to.match(/R\.schema =/); 75 | expect(script).to.match(/schema of the model/); 76 | }); 77 | }); 78 | 79 | it('saves the script to a file', function() { 80 | var outfile = path.resolve(SANDBOX, 'lb-services.js'); 81 | return runLbNg('-m', 'a-module', sampleAppJs, outfile) 82 | .spread(function(stdout, stderr) { 83 | var script = fs.readFileSync(outfile); 84 | expect(parse.moduleName(script)).to.equal('a-module'); 85 | expect(stdout).to.equal(''); 86 | }); 87 | }); 88 | 89 | it('supports async booting apps', function() { 90 | return runLbNg(sampleAsyncAppJs).spread(function(script, stderr) { 91 | expect( 92 | script.match(/[\n\s]*module\.factory\([\s\n]*"ASYNCMODEL"/), 93 | 'presence of late-initialized model' 94 | ).to.be.ok(); 95 | }); 96 | }); 97 | 98 | // -- Helpers -- 99 | 100 | function runLbNg() { 101 | // empty object for env so it does not inherit env-vars from parent process 102 | // this avoids debug messages affecting the stdout 103 | var options = {env: {}}; 104 | var argv = [process.execPath, require.resolve('../bin/lb-ng')] 105 | .concat(Array.prototype.slice.call(arguments)) 106 | .map(JSON.stringify) 107 | .join(' '); 108 | debug('--EXECFILE[%s]--', argv); 109 | return exec(argv, options) 110 | .then(function(args) { 111 | debug('--STDOUT--\n%s\n--STDERR--\n%s\n--END--', args[0], args[1]); 112 | return args; 113 | }) 114 | .catch(Promise.RejectionError, function(err) { 115 | debug('--FAILED--\n%s--END--', err.cause.stack); 116 | throw err.cause; 117 | }); 118 | } 119 | 120 | function resetSandbox() { 121 | fs.rmrfSync(SANDBOX); 122 | fs.mkdirSync(SANDBOX); 123 | } 124 | }); 125 | -------------------------------------------------------------------------------- /CHANGES.md: -------------------------------------------------------------------------------- 1 | 2020-03-06, Version 3.3.1 2 | ========================= 3 | 4 | * Update LTS status in README (Miroslav Bajtoš) 5 | 6 | * chore: update copyrights years (Agnes Lin) 7 | 8 | * add lts annoucement (jannyHou) 9 | 10 | 11 | 2018-07-16, Version 3.3.0 12 | ========================= 13 | 14 | * [WebFM] cs/pl/ru translation (candytangnb) 15 | 16 | 17 | 2018-06-05, Version 3.2.0 18 | ========================= 19 | 20 | * Upgrade eslint to latest (Miroslav Bajtoš) 21 | 22 | * Update most dependencies to latest (Miroslav Bajtoš) 23 | 24 | * Drop Node 4.x, add travis and npmrc (Miroslav Bajtoš) 25 | 26 | * Upgrade semver to 5.x (Miroslav Bajtoš) 27 | 28 | * Update LICENSE (Diana Lau) 29 | 30 | * Create Issue and PR Templates (#74) (Sakib Hasan) 31 | 32 | * Update translated strings Q3 2017 (Allen Boone) 33 | 34 | * Add CODEOWNER file (Diana Lau) 35 | 36 | * update messages.json (Diana Lau) 37 | 38 | 39 | 2017-07-20, Version 3.1.0 40 | ========================= 41 | 42 | * Add flags for namespacing config (Kenny Sabir) 43 | 44 | * Replicate new issue_template from loopback (Siddhi Pai) 45 | 46 | * Replicate issue_template from loopback repo (Siddhi Pai) 47 | 48 | 49 | 2017-02-06, Version 3.0.0 50 | ========================= 51 | 52 | * Update paid support URL (Siddhi Pai) 53 | 54 | * Use loopback@3 for tests (Miroslav Bajtoš) 55 | 56 | * Drop support for Node v0.10 and v0.12 (Miroslav Bajtoš) 57 | 58 | * Start the development of the next major version (Miroslav Bajtoš) 59 | 60 | 61 | 2016-11-22, Version 2.3.0 62 | ========================= 63 | 64 | * Revert "Fix process.stdout exiting before done" (David Cheung) 65 | 66 | * readme: update URL to new doc site (David Cheung) 67 | 68 | * use eslint in replace of jshint (David Cheung) 69 | 70 | 71 | 2016-10-14, Version 2.2.0 72 | ========================= 73 | 74 | * Update pt translation file (Candy) 75 | 76 | * Add "-s" flag to enable "includeSchema" option (Jan Hapke) 77 | 78 | * Update de and ja translation files (Candy) 79 | 80 | * Update translation files - round#2 (Candy) 81 | 82 | * globalization: add translated strings (gunjpan) 83 | 84 | 85 | 2016-09-05, Version 2.1.0 86 | ========================= 87 | 88 | * Increase mocha timeout to 5000ms (David Cheung) 89 | 90 | * Update debug dependency and exec not inherit env (David Cheung) 91 | 92 | * Fix process.stdout exiting before done (David Cheung) 93 | 94 | * Globalize loopback-angular-sdk-cli (David Cheung) 95 | 96 | * Update URLs in CONTRIBUTING.md (#44) (Ryan Graham) 97 | 98 | * update copyright notices and license (Ryan Graham) 99 | 100 | * Update test's regex to reflect SDK change (David Cheung) 101 | 102 | 103 | 2015-12-17, Version 2.0.1 104 | ========================= 105 | 106 | * remove ref to removed lb-ng-doc bin (Ryan Graham) 107 | 108 | 109 | 2015-12-17, Version 2.0.0 110 | ========================= 111 | 112 | * Remove lb-ng-doc and docular dependency (Miroslav Bajtoš) 113 | 114 | 115 | 2015-11-30, Version 1.2.0 116 | ========================= 117 | 118 | * Support async booting apps (Heath Morrison) 119 | 120 | * Refer to licenses with a link (Sam Roberts) 121 | 122 | * Use strongloop conventions for licensing (Sam Roberts) 123 | 124 | * Fix bad CLA URL in CONTRIBUTING.md (Ryan Graham) 125 | 126 | * Update contribution guidelines (Ryan Graham) 127 | 128 | * Update README.md (Rand McKinney) 129 | 130 | * Remove unused dependency to express and bump version (Raymond Feng) 131 | 132 | 133 | 2014-07-02, Version 1.1.4 134 | ========================= 135 | 136 | * Bump version (Raymond Feng) 137 | 138 | * Update name refs (Raymond Feng) 139 | 140 | 141 | 2014-07-02, Version 1.1.3 142 | ========================= 143 | 144 | * Fix usages of loopback-sdk-angular (Miroslav Bajtoš) 145 | 146 | 147 | 2014-07-01, Version 1.1.2 148 | ========================= 149 | 150 | * Bump version (Raymond Feng) 151 | 152 | * Rename repo and update deps (Raymond Feng) 153 | 154 | 155 | 2014-05-26, Version 1.1.1 156 | ========================= 157 | 158 | * package.json: add express 3.x to fix docular deps (Miroslav Bajtoš) 159 | 160 | * Fix unit-tests failing on windows (Miroslav Bajtos) 161 | 162 | 163 | 2014-04-09, Version 1.1.0 164 | ========================= 165 | 166 | * Update dependencies (Miroslav Bajtoš) 167 | 168 | * test: use exec instead of execFile (Ryan Graham) 169 | 170 | * test: make sure ephemeral ports are used (Ryan Graham) 171 | 172 | * Add missing devDependency: jshint (Ryan Graham) 173 | 174 | 175 | 2014-02-19, Version 1.0.0 176 | ========================= 177 | 178 | * Update to MIT/StrongLoop dual license (Raymond Feng) 179 | 180 | * Update README, link to doc.strongloop.com (Miroslav Bajtoš) 181 | 182 | 183 | 2014-02-06, Version 0.1.0 184 | ========================= 185 | 186 | * First release! 187 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ### Contributing ### 2 | 3 | Thank you for your interest in `loopback-sdk-angular-cli`, an open source project 4 | administered by StrongLoop. 5 | 6 | Contributing to `loopback-sdk-angular-cli` is easy. In a few simple steps: 7 | 8 | * Ensure that your effort is aligned with the project's roadmap by 9 | talking to the maintainers, especially if you are going to spend a 10 | lot of time on it. 11 | 12 | * Make something better or fix a bug. 13 | 14 | * Adhere to code style outlined in the [Google C++ Style Guide][] and 15 | [Google Javascript Style Guide][]. 16 | 17 | * Sign the [Contributor License Agreement](https://cla.strongloop.com/agreements/strongloop/loopback-sdk-angular-cli) 18 | 19 | * Submit a pull request through Github. 20 | 21 | 22 | ### Contributor License Agreement ### 23 | 24 | ``` 25 | Individual Contributor License Agreement 26 | 27 | By signing this Individual Contributor License Agreement 28 | ("Agreement"), and making a Contribution (as defined below) to 29 | StrongLoop, Inc. ("StrongLoop"), You (as defined below) accept and 30 | agree to the following terms and conditions for Your present and 31 | future Contributions submitted to StrongLoop. Except for the license 32 | granted in this Agreement to StrongLoop and recipients of software 33 | distributed by StrongLoop, You reserve all right, title, and interest 34 | in and to Your Contributions. 35 | 36 | 1. Definitions 37 | 38 | "You" or "Your" shall mean the copyright owner or the individual 39 | authorized by the copyright owner that is entering into this 40 | Agreement with StrongLoop. 41 | 42 | "Contribution" shall mean any original work of authorship, 43 | including any modifications or additions to an existing work, that 44 | is intentionally submitted by You to StrongLoop for inclusion in, 45 | or documentation of, any of the products owned or managed by 46 | StrongLoop ("Work"). For purposes of this definition, "submitted" 47 | means any form of electronic, verbal, or written communication 48 | sent to StrongLoop or its representatives, including but not 49 | limited to communication or electronic mailing lists, source code 50 | control systems, and issue tracking systems that are managed by, 51 | or on behalf of, StrongLoop for the purpose of discussing and 52 | improving the Work, but excluding communication that is 53 | conspicuously marked or otherwise designated in writing by You as 54 | "Not a Contribution." 55 | 56 | 2. You Grant a Copyright License to StrongLoop 57 | 58 | Subject to the terms and conditions of this Agreement, You hereby 59 | grant to StrongLoop and recipients of software distributed by 60 | StrongLoop, a perpetual, worldwide, non-exclusive, no-charge, 61 | royalty-free, irrevocable copyright license to reproduce, prepare 62 | derivative works of, publicly display, publicly perform, 63 | sublicense, and distribute Your Contributions and such derivative 64 | works under any license and without any restrictions. 65 | 66 | 3. You Grant a Patent License to StrongLoop 67 | 68 | Subject to the terms and conditions of this Agreement, You hereby 69 | grant to StrongLoop and to recipients of software distributed by 70 | StrongLoop a perpetual, worldwide, non-exclusive, no-charge, 71 | royalty-free, irrevocable (except as stated in this Section) 72 | patent license to make, have made, use, offer to sell, sell, 73 | import, and otherwise transfer the Work under any license and 74 | without any restrictions. The patent license You grant to 75 | StrongLoop under this Section applies only to those patent claims 76 | licensable by You that are necessarily infringed by Your 77 | Contributions(s) alone or by combination of Your Contributions(s) 78 | with the Work to which such Contribution(s) was submitted. If any 79 | entity institutes a patent litigation against You or any other 80 | entity (including a cross-claim or counterclaim in a lawsuit) 81 | alleging that Your Contribution, or the Work to which You have 82 | contributed, constitutes direct or contributory patent 83 | infringement, any patent licenses granted to that entity under 84 | this Agreement for that Contribution or Work shall terminate as 85 | of the date such litigation is filed. 86 | 87 | 4. You Have the Right to Grant Licenses to StrongLoop 88 | 89 | You represent that You are legally entitled to grant the licenses 90 | in this Agreement. 91 | 92 | If Your employer(s) has rights to intellectual property that You 93 | create, You represent that You have received permission to make 94 | the Contributions on behalf of that employer, that Your employer 95 | has waived such rights for Your Contributions, or that Your 96 | employer has executed a separate Corporate Contributor License 97 | Agreement with StrongLoop. 98 | 99 | 5. The Contributions Are Your Original Work 100 | 101 | You represent that each of Your Contributions are Your original 102 | works of authorship (see Section 8 (Submissions on Behalf of 103 | Others) for submission on behalf of others). You represent that to 104 | Your knowledge, no other person claims, or has the right to claim, 105 | any right in any intellectual property right related to Your 106 | Contributions. 107 | 108 | You also represent that You are not legally obligated, whether by 109 | entering into an agreement or otherwise, in any way that conflicts 110 | with the terms of this Agreement. 111 | 112 | You represent that Your Contribution submissions include complete 113 | details of any third-party license or other restriction (including, 114 | but not limited to, related patents and trademarks) of which You 115 | are personally aware and which are associated with any part of 116 | Your Contributions. 117 | 118 | 6. You Don't Have an Obligation to Provide Support for Your Contributions 119 | 120 | You are not expected to provide support for Your Contributions, 121 | except to the extent You desire to provide support. You may provide 122 | support for free, for a fee, or not at all. 123 | 124 | 6. No Warranties or Conditions 125 | 126 | StrongLoop acknowledges that unless required by applicable law or 127 | agreed to in writing, You provide Your Contributions on an "AS IS" 128 | BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER 129 | EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES 130 | OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, OR 131 | FITNESS FOR A PARTICULAR PURPOSE. 132 | 133 | 7. Submission on Behalf of Others 134 | 135 | If You wish to submit work that is not Your original creation, You 136 | may submit it to StrongLoop separately from any Contribution, 137 | identifying the complete details of its source and of any license 138 | or other restriction (including, but not limited to, related 139 | patents, trademarks, and license agreements) of which You are 140 | personally aware, and conspicuously marking the work as 141 | "Submitted on Behalf of a Third-Party: [named here]". 142 | 143 | 8. Agree to Notify of Change of Circumstances 144 | 145 | You agree to notify StrongLoop of any facts or circumstances of 146 | which You become aware that would make these representations 147 | inaccurate in any respect. Email us at callback@strongloop.com. 148 | ``` 149 | 150 | [Google C++ Style Guide]: https://google.github.io/styleguide/cppguide.html 151 | [Google Javascript Style Guide]: https://google.github.io/styleguide/javascriptguide.xml 152 | --------------------------------------------------------------------------------