@gamecp/manifest
v0.3.0
Published
Manifest validation and utilities for GameCP extensions
Downloads
29
Readme
@gamecp/manifest
Manifest validation and utilities for GameCP extensions.
Installation
npm install @gamecp/manifestUsage
Validate a Manifest
import { validateManifest } from '@gamecp/manifest';
const manifest = {
id: 'my-extension',
name: 'My Extension',
version: '1.0.0',
description: 'Does something cool',
author: { name: 'Your Name' },
main: 'dist/index.js',
permissions: ['server:read']
};
const result = validateManifest(manifest);
if (result.valid) {
console.log('Manifest is valid!');
} else {
console.error('Validation errors:', result.errors);
}
if (result.warnings) {
console.warn('Warnings:', result.warnings);
}Type Guard
import { isValidManifest } from '@gamecp/manifest';
import type { ExtensionManifest } from '@gamecp/types';
const data = JSON.parse(manifestJson);
if (isValidManifest(data)) {
// TypeScript now knows data is ExtensionManifest
console.log(data.name);
}Validation Rules
Required Fields
id- Lowercase alphanumeric with hyphensname- Display nameversion- Semantic version (e.g., 1.0.0)description- Brief descriptionauthor.name- Author namemain- Entry point file path
Optional Fields
permissions- Array of valid permission stringscron- Array of cron schedules with valid expressionsui- Array of UI injection pointssettings- Array of setting definitionsicon- Icon URL or pathhomepage- Homepage URLrepository- Repository URLlicense- License identifier
Valid Permissions
server:read- Read server informationserver:write- Write server dataserver:control- Control server (start/stop/restart)server:files- Access server filesserver:console- Access server consoletenant:read- Read tenant informationtenant:write- Write tenant datauser:read- Read user informationnetwork:request- Make network requests
License
MIT
