
Research
/Security News
10 npm Typosquatted Packages Deploy Multi-Stage Credential Harvester
Socket researchers found 10 typosquatted npm packages that auto-run on install, show fake CAPTCHAs, fingerprint by IP, and deploy a credential stealer.
@kalxjs/plugins
Advanced tools
Plugin system for KalxJs framework.
npm install @kalxjs/plugins
import { createApp } from '@kalxjs/core';
import { createPlugin, PluginManager, createLoggerPlugin, createPersistencePlugin } from '@kalxjs/plugins';
// Create a custom plugin
const myPlugin = createPlugin({
  name: 'my-plugin',
  install: (app, options) => {
    // Add functionality to the app
    app.myFeature = () => {
      console.log('My feature is running!');
    };
  },
  // Lifecycle hooks
  mounted: () => {
    console.log('App has been mounted');
  },
  // Expose methods/properties for other plugins
  exposed: {
    someUtility: () => {
      // Utility function
    }
  }
});
// Create an app
const app = createApp({
  // App configuration
});
// Create plugin manager
const pluginManager = new PluginManager(app);
// Use plugins
pluginManager.use(myPlugin, { /* options */ });
pluginManager.use(createLoggerPlugin({ level: 'info' }));
pluginManager.use(createPersistencePlugin({ 
  key: 'my-app-state',
  paths: ['user', 'preferences']
}));
// Mount the app
app.mount('#app');
Plugins are objects with an install method and optional lifecycle hooks:
import { createPlugin } from '@kalxjs/plugins';
const myPlugin = createPlugin({
  name: 'my-plugin',
  
  // Required: install function
  install: (app, options, pluginManager) => {
    // Add properties to the app
    app.myFeature = () => {
      // Feature implementation
    };
    
    // Register global components
    app.component('MyComponent', { /* component definition */ });
    
    // Access other plugins
    const logger = pluginManager.getPlugin('logger');
    if (logger) {
      logger.exposed.logger.info('My plugin installed');
    }
  },
  
  // Optional: lifecycle hooks
  beforeCreate: () => { /* ... */ },
  created: () => { /* ... */ },
  beforeMount: () => { /* ... */ },
  mounted: () => { /* ... */ },
  beforeUpdate: () => { /* ... */ },
  updated: () => { /* ... */ },
  beforeUnmount: () => { /* ... */ },
  unmounted: () => { /* ... */ },
  errorCaptured: (err) => { /* ... */ },
  
  // Optional: exposed methods/properties for other plugins
  exposed: {
    someUtility: () => { /* ... */ },
    someValue: 'value'
  }
});
import { createLoggerPlugin } from '@kalxjs/plugins';
const loggerPlugin = createLoggerPlugin({
  level: 'info',           // 'debug', 'info', 'warn', 'error'
  prefix: '[MyApp]',       // Log prefix
  enabled: true,           // Enable/disable logging
  logTime: true,           // Include timestamp
  logToConsole: true,      // Log to console
  customLogger: null       // Custom logger implementation
});
// Usage after installation
app.logger.info('Application started');
app.logger.warn('Something might be wrong');
app.logger.error('Something went wrong', errorObject);
import { createPersistencePlugin } from '@kalxjs/plugins';
const persistencePlugin = createPersistencePlugin({
  key: 'my-app-state',     // Storage key
  storage: localStorage,   // Storage mechanism
  paths: ['user', 'settings.theme'], // Specific paths to persist
  saveOnChange: true,      // Save state on change
  restoreOnStart: true,    // Restore state on start
  serialize: JSON.stringify,    // Serialization function
  deserialize: JSON.parse       // Deserialization function
});
// Usage after installation
app.saveState();      // Manually save state
app.restoreState();   // Manually restore state
The PluginManager class provides methods for managing plugins:
use(plugin, options): Register a plugincallHook(hookName, ...args): Call a specific lifecycle hookgetPlugin(name): Get a plugin by namehasPlugin(name): Check if a plugin is registeredgetPlugins(): Get all registered pluginsgetExposed(): Get all exposed methods and propertiesMIT
FAQs
Plugin system for KalxJs framework
We found that @kalxjs/plugins demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
Socket researchers found 10 typosquatted npm packages that auto-run on install, show fake CAPTCHAs, fingerprint by IP, and deploy a credential stealer.

Product
Socket Firewall Enterprise is now available with flexible deployment, configurable policies, and expanded language support.

Security News
Open source dashboard CNAPulse tracks CVE Numbering Authorities’ publishing activity, highlighting trends and transparency across the CVE ecosystem.