All Projects → NextFaze → devmod

NextFaze / devmod

Licence: Apache-2.0 license
Developer Module for debugging web applications

Programming Languages

typescript
32286 projects
CSS
56736 projects
javascript
184084 projects - #8 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to devmod

bugsnag-vue
[DEPRECATED] This package now lives within the monorepo for our Universal JS notifier "@bugsnag/js" • https://github.com/bugsnag/bugsnag-js
Stars: ✭ 26 (+62.5%)
Mutual labels:  debugging, debugging-tools, debugging-tool
Gdb Frontend
☕ GDBFrontend is an easy, flexible and extensionable gui debugger.
Stars: ✭ 2,104 (+13050%)
Mutual labels:  debugging, debugging-tools, debugging-tool
dwarf import
This loads DWARF info from an open binary and propagates function names, arguments, and type info
Stars: ✭ 18 (+12.5%)
Mutual labels:  debugging, debugging-tools, debugging-tool
docker-pudb
Debug Python code within a Docker container remotely from your terminal using pudb
Stars: ✭ 18 (+12.5%)
Mutual labels:  debugging, debugging-tools, debugging-tool
debuggingbook
Project page for "The Debugging Book"
Stars: ✭ 132 (+725%)
Mutual labels:  debugging, debugging-tools
Icecream Cpp
🍦 Never use cout/printf to debug again
Stars: ✭ 225 (+1306.25%)
Mutual labels:  debugging, debugging-tool
bugsnag-java
Bugsnag error reporting for Java.
Stars: ✭ 51 (+218.75%)
Mutual labels:  debugging, debugging-tool
ducky
Chrome extension to overlay a (super adorable) rubber duck, as a virtual companion during rubber duck debugging.
Stars: ✭ 80 (+400%)
Mutual labels:  debugging, debugging-tool
emacs-inspector
Inspection tool for Emacs Lisp objects.
Stars: ✭ 71 (+343.75%)
Mutual labels:  debugging, debugging-tool
Specter
Super simple debugging for PocketMine.
Stars: ✭ 73 (+356.25%)
Mutual labels:  debugging, debugging-tool
TrackJS-Node
TrackJS Error Monitoring agent for NodeJS
Stars: ✭ 26 (+62.5%)
Mutual labels:  debugging, debugging-tool
Bugsnag Ruby
Bugsnag error monitoring & reporting software for rails, sinatra, rack and ruby
Stars: ✭ 211 (+1218.75%)
Mutual labels:  debugging, debugging-tool
Icecream
🍦 Never use print() to debug again.
Stars: ✭ 5,601 (+34906.25%)
Mutual labels:  debugging, debugging-tool
Frodo2
Android Library for Logging RxJava2 Components
Stars: ✭ 142 (+787.5%)
Mutual labels:  debugging, debugging-tool
nopdb
NoPdb: Non-interactive Python Debugger
Stars: ✭ 67 (+318.75%)
Mutual labels:  debugging-tools, debugging-tool
vscode-cc65-debugger
VSCode extension for CC65 debugging with VICE or Mesen
Stars: ✭ 26 (+62.5%)
Mutual labels:  debugging, debugging-tool
Remix Ide
Documentation for Remix IDE
Stars: ✭ 1,768 (+10950%)
Mutual labels:  debugging, debugging-tool
Androidsnooper
Android library to record the network calls through the interceptor mechanism of the http clients.
Stars: ✭ 132 (+725%)
Mutual labels:  debugging, debugging-tool
heaptrace
helps visualize heap operations for pwn and debugging
Stars: ✭ 252 (+1475%)
Mutual labels:  debugging, debugging-tools
awesome print.cr
It dreams about becoming ruby's awesome_print for crystal-lang, under light development.
Stars: ✭ 13 (-18.75%)
Mutual labels:  debugging, debugging-tool

DevMod Developer {Mod}ule

Developer decorators for deugging your apps.

Currently supports Angular

Build Status Coverage Status

Invocation UI for manual entry

Features

  • Call arbitrary methods on components from a special developer interface
    • Quickly fill forms with random data using tools like faker
    • One-click login to development accounts
  • Call methods on your services and providers
  • Hide developer tools in production builds
  • Debug the output of observables
  • Summon the developer tools with a global Floating Action Button or backtick (`) hotkey
  • Change arguments for developer functions on the fly by holding Alt/Option

Coming Soon

  • Register custom components to render in the list to provide your own extensions
  • Better support for debugging observables

You can read more detail about the various features in depth:

About

This project was an attempt to reproduce similar core functionality to the Android developer library DevFun. The idea being to provide tools to aid in debugging Angular applications in a similar way without overlapping functionality with any of the amazing existing developer tools like Chrome devtools and Augury.

If you're interested in how the module works you can check out this Medium article.

Installation

Using the Angular CLI schematic (beta):

  1. npm i @devmod/schematic;
  2. ng generate @devmod/schematic:devmod-angular
  3. npm install to install devmod dependencies

This will create the required devmod.config.ts file, add devmod packages to your package.json and update the required module and component files as needed.

Manual installation

Install the dependencies

npm i --save @devmod/{core,interface}

The interface also relies on Angular CDK for the modal so that also needs to be installed if you do not have it (or angular material) already

npm i --save @angular/cdk

Setting up your environment

In order for tree shaking to work properly - you will want your production argument to be exported as a static boolean rather than part of an object - so update your environment.prod.ts file as follows (and others as required)

export const production = true;
export const environment = {
  production
};

Enabling debug mode

Create a new devmod.config.ts file with the following config

import { production } from './environments/environment';
import { enableDebugMode } from '@devmod/core';

if (!production) {
  enableDebugMode(); // Ensures all the decorators do what they should
}

and update your main.ts file as follows:

import './devmod.config'; // Must be first!
// ... remaining imports

Import in the interface module

We provide a non-functional standin Module when running in production mode. In your app.module.ts import both, and select the module to use based on the production variable.

import { DevmodInterfaceModule, DevmodNoopModule } from '@devmod/interface';
import { production } from '.../environments/environment';

let devmod = DevmodNoopModule; // Use 'noop' module in production so we don't see devmod toggle
if (!production) {
  devmod = DevmodInterfaceModule; // Use real devmod module in development
}

Once you have the devmod module ready to go, import it as part of your app bootstrap:

@NgModule({
  declarations: [
    // app declarations
  ],
  imports: [
    // import Devmod
    devmod
    // the rest of your imports
  ]
  // the rest of your bootstrap code
})
export class AppModule {}

Add in the toggle

The toggle gives you a Floating Action Button on top of your app.

Update your app.component.html

<!-- Your current app.component.html code -->
<devmod-toggle></devmod-toggle>

Setting up your Developer Functions

In your app.component.ts (or any component you like, really)

import { DeveloperFunction } from '@devmod/core';

@Component({
  templateUrl: './app.component.html',
  selector: 'app-root'
})
export class AppComponent {
  @DeveloperFunction()
  doSomethingCool() {
    // Let's do something cool!
  }
}

NOTE: components will only show in the DevMod list if they are in the DOM

Demo and Developing

This project was scaffolded with the Angular cli. The internal libraries are generated using the cli.

You can build the two modules by running ng build core --prod && ng build interface --prod

You can then start up the demo app by running ng serve

Contributing

DevMod is intended for developers (though it can be handy for testers). So, if there is anything you want or think should be added then create an issue or PR and more than likely it will be accepted.

Any bugs please report (desirably with reproduction steps) and/or PR/fix them.

Feel free also to submit your own handy util functions or whatever for submission.

Other (Non Angular) Libraries

Although DevMod is mainly geared towards Angular applications - it was built in a way which is (hopefully) able to be extended to any other library by adding the necessary parts. If you are familliar with some other library and want to use the features of DevMod then feel free to make a PR and we'll be more than happy to add it to the main codebase and help you get it up and running.

ApplicationHandler would need to be extended to provide an observable of items with Developer Functions on them and a separate interface that could be imported to work with the given framework.

License

Copyright 2018 NextFaze

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].