@bsb/registry 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +133 -0
- package/bsb-plugin.json +47 -0
- package/lib/.bsb/clients/service-bsb-registry.d.ts +1118 -0
- package/lib/.bsb/clients/service-bsb-registry.d.ts.map +1 -0
- package/lib/.bsb/clients/service-bsb-registry.js +393 -0
- package/lib/.bsb/clients/service-bsb-registry.js.map +1 -0
- package/lib/plugins/service-bsb-registry/auth.d.ts +87 -0
- package/lib/plugins/service-bsb-registry/auth.d.ts.map +1 -0
- package/lib/plugins/service-bsb-registry/auth.js +197 -0
- package/lib/plugins/service-bsb-registry/auth.js.map +1 -0
- package/lib/plugins/service-bsb-registry/db/file.d.ts +73 -0
- package/lib/plugins/service-bsb-registry/db/file.d.ts.map +1 -0
- package/lib/plugins/service-bsb-registry/db/file.js +588 -0
- package/lib/plugins/service-bsb-registry/db/file.js.map +1 -0
- package/lib/plugins/service-bsb-registry/db/index.d.ts +75 -0
- package/lib/plugins/service-bsb-registry/db/index.d.ts.map +1 -0
- package/lib/plugins/service-bsb-registry/db/index.js +24 -0
- package/lib/plugins/service-bsb-registry/db/index.js.map +1 -0
- package/lib/plugins/service-bsb-registry/index.d.ts +1228 -0
- package/lib/plugins/service-bsb-registry/index.d.ts.map +1 -0
- package/lib/plugins/service-bsb-registry/index.js +661 -0
- package/lib/plugins/service-bsb-registry/index.js.map +1 -0
- package/lib/plugins/service-bsb-registry/types.d.ts +559 -0
- package/lib/plugins/service-bsb-registry/types.d.ts.map +1 -0
- package/lib/plugins/service-bsb-registry/types.js +235 -0
- package/lib/plugins/service-bsb-registry/types.js.map +1 -0
- package/lib/plugins/service-bsb-registry-ui/http-server.d.ts +138 -0
- package/lib/plugins/service-bsb-registry-ui/http-server.d.ts.map +1 -0
- package/lib/plugins/service-bsb-registry-ui/http-server.js +1660 -0
- package/lib/plugins/service-bsb-registry-ui/http-server.js.map +1 -0
- package/lib/plugins/service-bsb-registry-ui/index.d.ts +62 -0
- package/lib/plugins/service-bsb-registry-ui/index.d.ts.map +1 -0
- package/lib/plugins/service-bsb-registry-ui/index.js +101 -0
- package/lib/plugins/service-bsb-registry-ui/index.js.map +1 -0
- package/lib/plugins/service-bsb-registry-ui/static/assets/images/apple-touch-icon.png +0 -0
- package/lib/plugins/service-bsb-registry-ui/static/assets/images/favicon-16x16.png +0 -0
- package/lib/plugins/service-bsb-registry-ui/static/assets/images/favicon-32x32.png +0 -0
- package/lib/plugins/service-bsb-registry-ui/static/assets/images/favicon.ico +0 -0
- package/lib/plugins/service-bsb-registry-ui/static/css/style.css +1849 -0
- package/lib/plugins/service-bsb-registry-ui/static/js/app.js +336 -0
- package/lib/plugins/service-bsb-registry-ui/templates/layouts/main.hbs +39 -0
- package/lib/plugins/service-bsb-registry-ui/templates/pages/error.hbs +13 -0
- package/lib/plugins/service-bsb-registry-ui/templates/pages/home.hbs +62 -0
- package/lib/plugins/service-bsb-registry-ui/templates/pages/not-found.hbs +13 -0
- package/lib/plugins/service-bsb-registry-ui/templates/pages/plugin-detail.hbs +537 -0
- package/lib/plugins/service-bsb-registry-ui/templates/pages/plugins.hbs +40 -0
- package/lib/plugins/service-bsb-registry-ui/templates/partials/pagination.hbs +41 -0
- package/lib/plugins/service-bsb-registry-ui/templates/partials/plugin-card.hbs +40 -0
- package/lib/plugins/service-bsb-registry-ui/templates/partials/search-form.hbs +31 -0
- package/lib/schemas/service-bsb-registry-ui.json +57 -0
- package/lib/schemas/service-bsb-registry-ui.plugin.json +73 -0
- package/lib/schemas/service-bsb-registry.json +1883 -0
- package/lib/schemas/service-bsb-registry.plugin.json +68 -0
- package/package.json +60 -0
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HealthResponseSchema = exports.ErrorResponseSchema = exports.OrganizationSchema = exports.RegistryStatsSchema = exports.VersionMatchSchema = exports.VersionListSchema = exports.VersionInfo = exports.PublishResponseSchema = exports.ListResultsSchema = exports.SearchResultsSchema = exports.PublishRequestSchema = exports.SearchQuerySchema = exports.ListQuerySchema = exports.RegistryEntrySchema = exports.PackagePermissionSchema = exports.OrgMemberSchema = exports.AuthTokenSchema = exports.UserSchema = void 0;
|
|
4
|
+
const base_1 = require("@bsb/base");
|
|
5
|
+
// ========================================
|
|
6
|
+
// Registry Entry Schema (Main Data Model)
|
|
7
|
+
// ========================================
|
|
8
|
+
const PackageInfo = base_1.bsb.object({
|
|
9
|
+
nodejs: (0, base_1.optional)(base_1.bsb.string({ description: 'NPM package name' })),
|
|
10
|
+
csharp: (0, base_1.optional)(base_1.bsb.string({ description: 'NuGet package name' })),
|
|
11
|
+
go: (0, base_1.optional)(base_1.bsb.string({ description: 'Go module path' })),
|
|
12
|
+
java: (0, base_1.optional)(base_1.bsb.string({ description: 'Maven coordinates' })),
|
|
13
|
+
python: (0, base_1.optional)(base_1.bsb.string({ description: 'PyPI package name' })),
|
|
14
|
+
}, 'Language-specific package information');
|
|
15
|
+
const AuthorObject = base_1.bsb.object({
|
|
16
|
+
name: base_1.bsb.string({ max: 200, description: 'Author name' }),
|
|
17
|
+
email: (0, base_1.optional)(base_1.bsb.string({ max: 200, description: 'Author email' })),
|
|
18
|
+
url: (0, base_1.optional)(base_1.bsb.uri('Author homepage')),
|
|
19
|
+
}, 'Author as an object (npm-style)');
|
|
20
|
+
const Author = base_1.bsb.union([
|
|
21
|
+
base_1.bsb.string({ max: 200, description: 'Author name as a string' }),
|
|
22
|
+
AuthorObject,
|
|
23
|
+
], 'Author - either a string or { name, email?, url? }');
|
|
24
|
+
const RuntimeRequirements = base_1.bsb.object({
|
|
25
|
+
nodejs: (0, base_1.optional)(base_1.bsb.string({ description: 'Node.js version requirement' })),
|
|
26
|
+
dotnet: (0, base_1.optional)(base_1.bsb.string({ description: '.NET version requirement' })),
|
|
27
|
+
go: (0, base_1.optional)(base_1.bsb.string({ description: 'Go version requirement' })),
|
|
28
|
+
java: (0, base_1.optional)(base_1.bsb.string({ description: 'Java version requirement' })),
|
|
29
|
+
python: (0, base_1.optional)(base_1.bsb.string({ description: 'Python version requirement' })),
|
|
30
|
+
}, 'Runtime version requirements');
|
|
31
|
+
const TypeDefinitions = base_1.bsb.object({
|
|
32
|
+
nodejs: (0, base_1.optional)(base_1.bsb.string({ description: 'TypeScript .d.ts definitions' })),
|
|
33
|
+
csharp: (0, base_1.optional)(base_1.bsb.string({ description: 'C# interface definitions' })),
|
|
34
|
+
go: (0, base_1.optional)(base_1.bsb.string({ description: 'Go type definitions' })),
|
|
35
|
+
java: (0, base_1.optional)(base_1.bsb.string({ description: 'Java interface definitions' })),
|
|
36
|
+
}, 'Language-specific type definitions');
|
|
37
|
+
const Documentation = base_1.bsb.array(base_1.bsb.string({ description: 'Markdown file content (title extracted from first # heading)' }), { min: 1, description: 'Array of markdown documentation files (at least 1 required)' });
|
|
38
|
+
const Dependency = base_1.bsb.object({
|
|
39
|
+
id: base_1.bsb.string({ min: 1, max: 200, description: 'Plugin ID (org/name or just name for _ org)' }),
|
|
40
|
+
version: base_1.bsb.string({ min: 1, max: 50, description: 'Semver range constraint (e.g. ^1.0.0, ~2.1, >=3.0.0)' }),
|
|
41
|
+
}, 'Plugin dependency declaration');
|
|
42
|
+
// ========================================
|
|
43
|
+
// Permission Levels
|
|
44
|
+
// ========================================
|
|
45
|
+
// User-level permissions (global capabilities)
|
|
46
|
+
const UserPermission = base_1.bsb.enum(['read', 'write', 'create-org'], 'User-level permission');
|
|
47
|
+
// Resource-level permissions (org members, package access)
|
|
48
|
+
const ResourcePermission = base_1.bsb.enum(['read', 'write'], 'Resource-level permission');
|
|
49
|
+
// ========================================
|
|
50
|
+
// User Schema
|
|
51
|
+
// ========================================
|
|
52
|
+
exports.UserSchema = base_1.bsb.object({
|
|
53
|
+
id: base_1.bsb.uuid('User ID'),
|
|
54
|
+
name: base_1.bsb.string({ min: 1, max: 200, description: 'Display name' }),
|
|
55
|
+
email: base_1.bsb.email('User email address'),
|
|
56
|
+
active: base_1.bsb.boolean('Whether the user account is active'),
|
|
57
|
+
permissions: base_1.bsb.array(UserPermission, { description: 'User-level permissions' }),
|
|
58
|
+
createdAt: base_1.bsb.datetime('Account creation timestamp'),
|
|
59
|
+
updatedAt: base_1.bsb.datetime('Last update timestamp'),
|
|
60
|
+
}, 'Registry user');
|
|
61
|
+
// ========================================
|
|
62
|
+
// Auth Token Schema (tied to a user)
|
|
63
|
+
// ========================================
|
|
64
|
+
exports.AuthTokenSchema = base_1.bsb.object({
|
|
65
|
+
token: base_1.bsb.string({ min: 1, max: 500, description: 'Bearer token string' }),
|
|
66
|
+
userId: base_1.bsb.uuid('Owner user ID'),
|
|
67
|
+
name: base_1.bsb.string({ min: 1, max: 200, description: 'Token label (e.g. "CI deploy", "laptop")' }),
|
|
68
|
+
permissions: (0, base_1.optional)(base_1.bsb.array(UserPermission, { description: 'Token-scoped permissions (subset of user permissions, inherits from user if omitted)' })),
|
|
69
|
+
createdAt: base_1.bsb.datetime('Token creation timestamp'),
|
|
70
|
+
expiresAt: (0, base_1.optional)(base_1.bsb.datetime('Optional expiration timestamp')),
|
|
71
|
+
}, 'API authentication token tied to a user');
|
|
72
|
+
// ========================================
|
|
73
|
+
// Organization Member Schema
|
|
74
|
+
// ========================================
|
|
75
|
+
exports.OrgMemberSchema = base_1.bsb.object({
|
|
76
|
+
userId: base_1.bsb.uuid('User ID'),
|
|
77
|
+
permission: ResourcePermission,
|
|
78
|
+
}, 'Organization membership entry');
|
|
79
|
+
// ========================================
|
|
80
|
+
// Package Permission Schema
|
|
81
|
+
// ========================================
|
|
82
|
+
exports.PackagePermissionSchema = base_1.bsb.object({
|
|
83
|
+
userId: base_1.bsb.uuid('User ID'),
|
|
84
|
+
permission: ResourcePermission,
|
|
85
|
+
}, 'Per-package permission entry (overrides org-level)');
|
|
86
|
+
exports.RegistryEntrySchema = base_1.bsb.object({
|
|
87
|
+
// Identity (Docker-style: org/plugin-name)
|
|
88
|
+
id: base_1.bsb.string({ min: 1, max: 200, description: 'Full ID: org/plugin-name' }),
|
|
89
|
+
org: base_1.bsb.string({ min: 1, max: 100, description: 'Organization or user name' }),
|
|
90
|
+
name: base_1.bsb.string({ min: 1, max: 100, description: 'Plugin name' }),
|
|
91
|
+
displayName: base_1.bsb.string({ min: 1, max: 200, description: 'Human-readable name' }),
|
|
92
|
+
description: base_1.bsb.string({ min: 1, max: 1000, description: 'Short description' }),
|
|
93
|
+
// Version & Language
|
|
94
|
+
version: base_1.bsb.string({ min: 1, max: 50, description: 'Semantic version (1.0.0)' }),
|
|
95
|
+
majorMinor: base_1.bsb.string({ min: 1, max: 20, description: 'Major.minor only (1.0)' }),
|
|
96
|
+
language: base_1.bsb.enum(['nodejs', 'csharp', 'go', 'java', 'python'], 'Programming language'),
|
|
97
|
+
// Language-specific package info
|
|
98
|
+
package: (0, base_1.optional)(PackageInfo),
|
|
99
|
+
// Classification
|
|
100
|
+
category: base_1.bsb.enum(['service', 'observable', 'events', 'config'], 'Plugin category'),
|
|
101
|
+
tags: base_1.bsb.array(base_1.bsb.string({ max: 50 }), { description: 'Searchable keywords' }),
|
|
102
|
+
// Optional metadata
|
|
103
|
+
author: (0, base_1.optional)(Author),
|
|
104
|
+
license: (0, base_1.optional)(base_1.bsb.string({ max: 50, description: 'License identifier' })),
|
|
105
|
+
homepage: (0, base_1.optional)(base_1.bsb.uri('Documentation URL')),
|
|
106
|
+
repository: (0, base_1.optional)(base_1.bsb.uri('Source repository URL')),
|
|
107
|
+
// Access control
|
|
108
|
+
visibility: base_1.bsb.enum(['public', 'private'], 'Visibility level'),
|
|
109
|
+
// Event definitions (stored as events map -- name and version live at root level)
|
|
110
|
+
eventSchema: base_1.bsb.unknown('Events map (Record<eventName, EventExportEntry>)'),
|
|
111
|
+
// Optional plugin capability map (for observable/events/config support display)
|
|
112
|
+
capabilities: (0, base_1.optional)(base_1.bsb.unknown('Plugin capabilities object')),
|
|
113
|
+
// Configuration schema (stored as parsed JSON Schema object)
|
|
114
|
+
configSchema: (0, base_1.optional)(base_1.bsb.unknown('Configuration JSON Schema object')),
|
|
115
|
+
typeDefinitions: (0, base_1.optional)(TypeDefinitions),
|
|
116
|
+
// Documentation
|
|
117
|
+
documentation: (0, base_1.optional)(Documentation),
|
|
118
|
+
// Dependencies on other plugins
|
|
119
|
+
dependencies: (0, base_1.optional)(base_1.bsb.array(Dependency, { description: 'Plugins this plugin depends on' })),
|
|
120
|
+
// Per-package permissions (override org-level; inherited from org if empty)
|
|
121
|
+
permissions: (0, base_1.optional)(base_1.bsb.array(exports.PackagePermissionSchema, { description: 'Per-package user permissions' })),
|
|
122
|
+
// Event statistics
|
|
123
|
+
eventCount: base_1.bsb.int32({ min: 0, description: 'Total event count' }),
|
|
124
|
+
emitEventCount: base_1.bsb.int32({ min: 0, description: 'Fire-and-forget emit events' }),
|
|
125
|
+
onEventCount: base_1.bsb.int32({ min: 0, description: 'Fire-and-forget on events' }),
|
|
126
|
+
returnableEventCount: base_1.bsb.int32({ min: 0, description: 'Returnable events' }),
|
|
127
|
+
broadcastEventCount: base_1.bsb.int32({ min: 0, description: 'Broadcast events' }),
|
|
128
|
+
// Publishing metadata
|
|
129
|
+
publishedBy: base_1.bsb.string({ max: 200, description: 'User ID who published' }),
|
|
130
|
+
publishedAt: base_1.bsb.datetime('First publish timestamp'),
|
|
131
|
+
updatedAt: base_1.bsb.datetime('Last update timestamp'),
|
|
132
|
+
downloads: (0, base_1.optional)(base_1.bsb.int32({ min: 0, description: 'Download count' })),
|
|
133
|
+
// Runtime requirements
|
|
134
|
+
runtime: (0, base_1.optional)(RuntimeRequirements),
|
|
135
|
+
}, 'Registry entry for a plugin');
|
|
136
|
+
// ========================================
|
|
137
|
+
// API Request/Response Schemas
|
|
138
|
+
// ========================================
|
|
139
|
+
exports.ListQuerySchema = base_1.bsb.object({
|
|
140
|
+
org: (0, base_1.optional)(base_1.bsb.string({ max: 100, description: 'Filter by organization' })),
|
|
141
|
+
language: (0, base_1.optional)(base_1.bsb.enum(['nodejs', 'csharp', 'go', 'java', 'python'], 'Filter by language')),
|
|
142
|
+
category: (0, base_1.optional)(base_1.bsb.enum(['service', 'observable', 'events', 'config'], 'Filter by category')),
|
|
143
|
+
limit: (0, base_1.optional)(base_1.bsb.int32({ min: 1, max: 100, description: 'Results per page (default: 50)' })),
|
|
144
|
+
offset: (0, base_1.optional)(base_1.bsb.int32({ min: 0, description: 'Pagination offset (default: 0)' })),
|
|
145
|
+
}, 'Query parameters for listing plugins');
|
|
146
|
+
exports.SearchQuerySchema = base_1.bsb.object({
|
|
147
|
+
query: base_1.bsb.string({ min: 1, max: 200, description: 'Search query string' }),
|
|
148
|
+
language: (0, base_1.optional)(base_1.bsb.enum(['nodejs', 'csharp', 'go', 'java', 'python'], 'Filter by language')),
|
|
149
|
+
category: (0, base_1.optional)(base_1.bsb.enum(['service', 'observable', 'events', 'config'], 'Filter by category')),
|
|
150
|
+
limit: (0, base_1.optional)(base_1.bsb.int32({ min: 1, max: 100, description: 'Results per page (default: 20)' })),
|
|
151
|
+
offset: (0, base_1.optional)(base_1.bsb.int32({ min: 0, description: 'Pagination offset (default: 0)' })),
|
|
152
|
+
}, 'Query parameters for searching plugins');
|
|
153
|
+
exports.PublishRequestSchema = base_1.bsb.object({
|
|
154
|
+
org: base_1.bsb.string({ min: 1, max: 100, description: 'Organization name' }),
|
|
155
|
+
name: base_1.bsb.string({ min: 1, max: 100, description: 'Plugin name' }),
|
|
156
|
+
version: base_1.bsb.string({ min: 1, max: 50, description: 'Semantic version' }),
|
|
157
|
+
language: base_1.bsb.enum(['nodejs', 'csharp', 'go', 'java', 'python'], 'Programming language'),
|
|
158
|
+
metadata: base_1.bsb.object({
|
|
159
|
+
displayName: base_1.bsb.string({ min: 1, max: 200, description: 'Human-readable name' }),
|
|
160
|
+
description: base_1.bsb.string({ min: 1, max: 1000, description: 'Short description' }),
|
|
161
|
+
category: base_1.bsb.enum(['service', 'observable', 'events', 'config'], 'Plugin category'),
|
|
162
|
+
tags: base_1.bsb.array(base_1.bsb.string({ max: 50 }), { description: 'Searchable keywords' }),
|
|
163
|
+
author: (0, base_1.optional)(Author),
|
|
164
|
+
license: (0, base_1.optional)(base_1.bsb.string({ max: 50 })),
|
|
165
|
+
homepage: (0, base_1.optional)(base_1.bsb.uri()),
|
|
166
|
+
repository: (0, base_1.optional)(base_1.bsb.uri()),
|
|
167
|
+
}, 'Plugin metadata'),
|
|
168
|
+
eventSchema: base_1.bsb.unknown('EventSchemaExport object (parsed at HTTP boundary, transported as object)'),
|
|
169
|
+
capabilities: (0, base_1.optional)(base_1.bsb.unknown('Plugin capabilities object (parsed at HTTP boundary, optional top-level override)')),
|
|
170
|
+
configSchema: (0, base_1.optional)(base_1.bsb.unknown('Configuration JSON Schema object (parsed at HTTP boundary)')),
|
|
171
|
+
typeDefinitions: (0, base_1.optional)(TypeDefinitions),
|
|
172
|
+
documentation: Documentation,
|
|
173
|
+
dependencies: (0, base_1.optional)(base_1.bsb.array(Dependency, { description: 'Plugin dependencies' })),
|
|
174
|
+
package: (0, base_1.optional)(PackageInfo),
|
|
175
|
+
runtime: (0, base_1.optional)(RuntimeRequirements),
|
|
176
|
+
visibility: (0, base_1.optional)(base_1.bsb.enum(['public', 'private'], 'Visibility level (default: public)')),
|
|
177
|
+
publishedBy: (0, base_1.optional)(base_1.bsb.string({ max: 200, description: 'User ID of the publisher (set by HTTP layer)' })),
|
|
178
|
+
}, 'Request body for publishing a plugin');
|
|
179
|
+
exports.SearchResultsSchema = base_1.bsb.object({
|
|
180
|
+
results: base_1.bsb.array(exports.RegistryEntrySchema, { description: 'Matching plugins' }),
|
|
181
|
+
total: base_1.bsb.int32({ min: 0, description: 'Total result count' }),
|
|
182
|
+
query: base_1.bsb.string({ description: 'Search query used' }),
|
|
183
|
+
}, 'Search results response');
|
|
184
|
+
exports.ListResultsSchema = base_1.bsb.object({
|
|
185
|
+
results: base_1.bsb.array(exports.RegistryEntrySchema, { description: 'Plugin list' }),
|
|
186
|
+
total: base_1.bsb.int32({ min: 0, description: 'Total count' }),
|
|
187
|
+
page: base_1.bsb.int32({ min: 1, description: 'Current page number' }),
|
|
188
|
+
}, 'List results response');
|
|
189
|
+
exports.PublishResponseSchema = base_1.bsb.object({
|
|
190
|
+
success: base_1.bsb.boolean('Operation success status'),
|
|
191
|
+
pluginId: base_1.bsb.string({ description: 'Full plugin ID (org/name)' }),
|
|
192
|
+
version: base_1.bsb.string({ description: 'Published version' }),
|
|
193
|
+
message: (0, base_1.optional)(base_1.bsb.string({ description: 'Success or error message' })),
|
|
194
|
+
}, 'Response for publish operation');
|
|
195
|
+
exports.VersionInfo = base_1.bsb.object({
|
|
196
|
+
version: base_1.bsb.string({ description: 'Full semantic version' }),
|
|
197
|
+
majorMinor: base_1.bsb.string({ description: 'Major.minor version' }),
|
|
198
|
+
publishedAt: base_1.bsb.datetime('Publication timestamp'),
|
|
199
|
+
}, 'Version information');
|
|
200
|
+
exports.VersionListSchema = base_1.bsb.object({
|
|
201
|
+
versions: base_1.bsb.array(exports.VersionInfo, { description: 'All available versions' }),
|
|
202
|
+
latest: base_1.bsb.string({ description: 'Latest version' }),
|
|
203
|
+
latestForMajorMinor: base_1.bsb.string({ description: 'JSON map of major.minor to latest patch' }),
|
|
204
|
+
}, 'Version list response');
|
|
205
|
+
exports.VersionMatchSchema = base_1.bsb.object({
|
|
206
|
+
requested: base_1.bsb.string({ description: 'Requested version (major.minor)' }),
|
|
207
|
+
matched: base_1.bsb.string({ description: 'Matched full version' }),
|
|
208
|
+
latest: base_1.bsb.string({ description: 'Latest available version' }),
|
|
209
|
+
alert: (0, base_1.optional)(base_1.bsb.string({ description: 'Alert message if newer version available' })),
|
|
210
|
+
}, 'Version match response');
|
|
211
|
+
exports.RegistryStatsSchema = base_1.bsb.object({
|
|
212
|
+
totalPlugins: base_1.bsb.int32({ min: 0, description: 'Total plugin count' }),
|
|
213
|
+
byLanguage: base_1.bsb.string({ description: 'JSON map of language to count' }),
|
|
214
|
+
byCategory: base_1.bsb.string({ description: 'JSON map of category to count' }),
|
|
215
|
+
totalDownloads: base_1.bsb.int32({ min: 0, description: 'Total downloads across all plugins' }),
|
|
216
|
+
}, 'Registry statistics');
|
|
217
|
+
exports.OrganizationSchema = base_1.bsb.object({
|
|
218
|
+
id: base_1.bsb.string({ min: 1, max: 100, description: 'Organization ID' }),
|
|
219
|
+
name: base_1.bsb.string({ min: 1, max: 100, description: 'Organization name' }),
|
|
220
|
+
displayName: base_1.bsb.string({ min: 1, max: 200, description: 'Display name' }),
|
|
221
|
+
pluginCount: base_1.bsb.int32({ min: 0, description: 'Number of plugins' }),
|
|
222
|
+
visibility: base_1.bsb.enum(['public', 'private'], 'Default visibility'),
|
|
223
|
+
members: (0, base_1.optional)(base_1.bsb.array(exports.OrgMemberSchema, { description: 'Organization members with permissions' })),
|
|
224
|
+
}, 'Organization information');
|
|
225
|
+
exports.ErrorResponseSchema = base_1.bsb.object({
|
|
226
|
+
error: base_1.bsb.string({ description: 'Error message' }),
|
|
227
|
+
code: (0, base_1.optional)(base_1.bsb.string({ description: 'Error code' })),
|
|
228
|
+
details: (0, base_1.optional)(base_1.bsb.string({ description: 'Additional error details' })),
|
|
229
|
+
}, 'Error response');
|
|
230
|
+
exports.HealthResponseSchema = base_1.bsb.object({
|
|
231
|
+
status: base_1.bsb.string({ description: 'Health status (ok/degraded/down)' }),
|
|
232
|
+
uptime: base_1.bsb.int32({ min: 0, description: 'Uptime in seconds' }),
|
|
233
|
+
version: base_1.bsb.string({ description: 'Registry version' }),
|
|
234
|
+
}, 'Health check response');
|
|
235
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/plugins/service-bsb-registry/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registry UI & API HTTP Server (Event-Driven with Handlebars)
|
|
3
|
+
*
|
|
4
|
+
* Serves both the web UI (HTML via Handlebars) and the REST API (JSON)
|
|
5
|
+
* using content negotiation (Accept header).
|
|
6
|
+
* Communicates with registry core via typed BsbRegistryClient.
|
|
7
|
+
*/
|
|
8
|
+
import { Observable } from '@bsb/base';
|
|
9
|
+
import type { Plugin } from './index';
|
|
10
|
+
export declare class RegistryUIServer {
|
|
11
|
+
private app;
|
|
12
|
+
readonly port: number;
|
|
13
|
+
readonly host: string;
|
|
14
|
+
private readonly pageSize;
|
|
15
|
+
private readonly uploadDir;
|
|
16
|
+
private readonly badgesFile;
|
|
17
|
+
private readonly maxImageUploadBytes;
|
|
18
|
+
private readonly imageIndexPath;
|
|
19
|
+
private imageIndex;
|
|
20
|
+
private badgeMap;
|
|
21
|
+
private registryClient;
|
|
22
|
+
private createTrace;
|
|
23
|
+
constructor(port: number, host: string, pageSize: number, uploadDir: string, badgesFile: string, maxImageUploadMb: number);
|
|
24
|
+
private getHandlebarsHelpers;
|
|
25
|
+
private registerHandlebarsHelpers;
|
|
26
|
+
init(obs: Observable, plugin: Plugin): Promise<void>;
|
|
27
|
+
private registerRoutes;
|
|
28
|
+
/**
|
|
29
|
+
* Authenticate request via Bearer token.
|
|
30
|
+
* Returns the userId on success, or null if not authenticated (also sends 401 reply).
|
|
31
|
+
*/
|
|
32
|
+
private authenticateRequest;
|
|
33
|
+
/** Check if request accepts JSON */
|
|
34
|
+
private wantsJson;
|
|
35
|
+
/**
|
|
36
|
+
* Validate input against a Zod schema. Returns parsed data on success,
|
|
37
|
+
* or sends a 400 response and returns null on failure.
|
|
38
|
+
*/
|
|
39
|
+
private validateInput;
|
|
40
|
+
/** Render an error page (HTML) or send JSON error depending on Accept header */
|
|
41
|
+
private renderError;
|
|
42
|
+
private loadImageIndex;
|
|
43
|
+
private saveImageIndex;
|
|
44
|
+
private loadBadgeMap;
|
|
45
|
+
private resolvePluginImageUrl;
|
|
46
|
+
private normalizeBadgeLabel;
|
|
47
|
+
private resolvePluginBadges;
|
|
48
|
+
private enrichPlugin;
|
|
49
|
+
private enrichPluginList;
|
|
50
|
+
private getImageExtension;
|
|
51
|
+
/**
|
|
52
|
+
* Self-contained HTML error page that never touches the template engine.
|
|
53
|
+
* Used by the global error handler as a last-resort fallback.
|
|
54
|
+
*/
|
|
55
|
+
private fallbackErrorHtml;
|
|
56
|
+
/**
|
|
57
|
+
* Count events by type from an events map (Record<string, EventExportEntry>).
|
|
58
|
+
* The stored `eventSchema` field is the events map directly (not the full export wrapper).
|
|
59
|
+
*/
|
|
60
|
+
private countEvents;
|
|
61
|
+
/**
|
|
62
|
+
* Transform the flat events map into client-perspective grouped format for Handlebars.
|
|
63
|
+
*
|
|
64
|
+
* The stored schema records the SERVICE perspective (onReturnableEvents = the service
|
|
65
|
+
* listens). But the registry shows the CLIENT perspective: if the service listens,
|
|
66
|
+
* the client emits-and-returns.
|
|
67
|
+
*
|
|
68
|
+
* Mapping (service -> client perspective):
|
|
69
|
+
* onReturnableEvents -> emitReturnableEvents (client calls, service responds)
|
|
70
|
+
* emitReturnableEvents -> onReturnableEvents (service calls, client responds)
|
|
71
|
+
* onEvents -> emitEvents (client fires, service handles)
|
|
72
|
+
* emitEvents -> onEvents (service fires, client handles)
|
|
73
|
+
* onBroadcast -> emitBroadcast (client broadcasts, service receives)
|
|
74
|
+
* emitBroadcast -> onBroadcast (service broadcasts, client receives)
|
|
75
|
+
*
|
|
76
|
+
* Also extracts input/output schema property names for display.
|
|
77
|
+
*/
|
|
78
|
+
private groupEventsByCategory;
|
|
79
|
+
/**
|
|
80
|
+
* Extract property names and types from a JSON Schema object for display.
|
|
81
|
+
* Returns an array of { name, type, required, description } for each property.
|
|
82
|
+
*/
|
|
83
|
+
private extractSchemaProps;
|
|
84
|
+
/**
|
|
85
|
+
* Extract config properties from a JSON Schema for template display.
|
|
86
|
+
* Builds a tree-like flattened node list preserving hierarchy depth.
|
|
87
|
+
*/
|
|
88
|
+
private extractConfigProps;
|
|
89
|
+
/** Get a human-readable type label from a JSON Schema property definition */
|
|
90
|
+
private configTypeLabel;
|
|
91
|
+
private extractObservableFeatureGroups;
|
|
92
|
+
/**
|
|
93
|
+
* Build documentation tabs from an array of markdown strings.
|
|
94
|
+
* Extracts the title from the first # heading in each document.
|
|
95
|
+
* Returns an array of { id, title, html, active } for the template.
|
|
96
|
+
*/
|
|
97
|
+
private buildDocTabs;
|
|
98
|
+
/**
|
|
99
|
+
* Extract the title from the first # heading in a markdown string.
|
|
100
|
+
* Returns null if no heading is found.
|
|
101
|
+
*/
|
|
102
|
+
private extractMarkdownTitle;
|
|
103
|
+
/** Extract major.minor from semantic version */
|
|
104
|
+
private extractMajorMinor;
|
|
105
|
+
/**
|
|
106
|
+
* Render a markdown string to sanitized HTML.
|
|
107
|
+
* External links open in a new tab. Raw HTML in the source is escaped.
|
|
108
|
+
*/
|
|
109
|
+
private renderMarkdown;
|
|
110
|
+
private handleHome;
|
|
111
|
+
private handleBrowse;
|
|
112
|
+
private handleOrgBrowse;
|
|
113
|
+
/**
|
|
114
|
+
* Internal browse handler shared by /plugins and /plugins/:org.
|
|
115
|
+
* Supports list, search, pagination, and content negotiation.
|
|
116
|
+
*/
|
|
117
|
+
private _handleBrowseInternal;
|
|
118
|
+
private handlePluginDetail;
|
|
119
|
+
/** GET /stats — Registry statistics */
|
|
120
|
+
private handleStats;
|
|
121
|
+
/** GET /plugins/:org/:name/versions — Plugin version list */
|
|
122
|
+
private handleVersions;
|
|
123
|
+
/** GET /plugins/:org/:name/match?version=1.0 — Find latest patch for major.minor */
|
|
124
|
+
private handleMatchVersion;
|
|
125
|
+
/** GET /plugins/:org/:name/:version/schema — Plugin event schema (JSON) */
|
|
126
|
+
private handleSchema;
|
|
127
|
+
/** GET /plugins/:org/:name/:version/docs?index=0 — Plugin documentation by index */
|
|
128
|
+
private handleDocs;
|
|
129
|
+
/** GET /plugins/:org/:name/:version/types/:language — Type definitions (text/plain) */
|
|
130
|
+
private handleTypes;
|
|
131
|
+
/** POST /plugins/:org/:name/image — Upload or replace plugin image */
|
|
132
|
+
private handleImageUpload;
|
|
133
|
+
/** POST /plugins — Publish a plugin (immutable versions) */
|
|
134
|
+
private handlePublish;
|
|
135
|
+
start(obs: Observable): Promise<void>;
|
|
136
|
+
close(): void;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=http-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../../../src/plugins/service-bsb-registry-ui/http-server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAcH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAsKtC,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,GAAG,CAAkB;IAC7B,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,WAAW,CAAyB;gBAG1C,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM;IAiB1B,OAAO,CAAC,oBAAoB;IAqE5B,OAAO,CAAC,yBAAyB;IAO3B,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2H1D,OAAO,CAAC,cAAc;IA6EtB;;;OAGG;YACW,mBAAmB;IA4CjC,oCAAoC;IACpC,OAAO,CAAC,SAAS;IAIjB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAqBrB,gFAAgF;YAClE,WAAW;YAkBX,cAAc;YAad,cAAc;YAKd,YAAY;IAa1B,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,iBAAiB;IAWzB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAgCzB;;;OAGG;IACH,OAAO,CAAC,WAAW;IA2BnB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,qBAAqB;IAqC7B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAmC1B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA2D1B,6EAA6E;IAC7E,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,8BAA8B;IAgDtC;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAoCpB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAM5B,gDAAgD;IAChD,OAAO,CAAC,iBAAiB;IAQzB;;;OAGG;IACH,OAAO,CAAC,cAAc;YAoBR,UAAU;YA6CV,YAAY;YAIZ,eAAe;IAM7B;;;OAGG;YACW,qBAAqB;YAoHrB,kBAAkB;IA8HhC,uCAAuC;YACzB,WAAW;IAkBzB,6DAA6D;YAC/C,cAAc;IAmC5B,oFAAoF;YACtE,kBAAkB;IAsDhC,2EAA2E;YAC7D,YAAY;IAuD1B,oFAAoF;YACtE,UAAU;IA8DxB,uFAAuF;YACzE,WAAW;IAkDzB,sEAAsE;YACxD,iBAAiB;IAgG/B,4DAA4D;YAC9C,aAAa;IAsErB,KAAK,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB3C,KAAK,IAAI,IAAI;CAGd"}
|