@duongthiu/onex-core 0.1.0
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 +428 -0
- package/THEME_API.md +681 -0
- package/dist/api-vuL1Eg5L.d.mts +2961 -0
- package/dist/api-vuL1Eg5L.d.ts +2961 -0
- package/dist/chunk-3SZX6LHT.js +244 -0
- package/dist/chunk-3SZX6LHT.js.map +1 -0
- package/dist/chunk-7EON6Q4L.mjs +8149 -0
- package/dist/chunk-7EON6Q4L.mjs.map +1 -0
- package/dist/chunk-WDY773GJ.js +8308 -0
- package/dist/chunk-WDY773GJ.js.map +1 -0
- package/dist/chunk-XE4EOKS4.mjs +239 -0
- package/dist/chunk-XE4EOKS4.mjs.map +1 -0
- package/dist/client.d.mts +1461 -0
- package/dist/client.d.ts +1461 -0
- package/dist/client.js +542 -0
- package/dist/client.js.map +1 -0
- package/dist/client.mjs +5 -0
- package/dist/client.mjs.map +1 -0
- package/dist/index.d.mts +125 -0
- package/dist/index.d.ts +125 -0
- package/dist/index.js +601 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +61 -0
- package/dist/index.mjs.map +1 -0
- package/dist/server.d.mts +70 -0
- package/dist/server.d.ts +70 -0
- package/dist/server.js +196 -0
- package/dist/server.js.map +1 -0
- package/dist/server.mjs +188 -0
- package/dist/server.mjs.map +1 -0
- package/package.json +113 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __defProps = Object.defineProperties;
|
|
6
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
7
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
10
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
11
|
+
var __spreadValues = (a, b) => {
|
|
12
|
+
for (var prop in b || (b = {}))
|
|
13
|
+
if (__hasOwnProp.call(b, prop))
|
|
14
|
+
__defNormalProp(a, prop, b[prop]);
|
|
15
|
+
if (__getOwnPropSymbols)
|
|
16
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
17
|
+
if (__propIsEnum.call(b, prop))
|
|
18
|
+
__defNormalProp(a, prop, b[prop]);
|
|
19
|
+
}
|
|
20
|
+
return a;
|
|
21
|
+
};
|
|
22
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
23
|
+
|
|
24
|
+
// src/registry/section-registry.ts
|
|
25
|
+
function createSectionRegistry(config = {}) {
|
|
26
|
+
const { debug = false, allowOverride = false, maxSections = 100 } = config;
|
|
27
|
+
const sections = /* @__PURE__ */ new Map();
|
|
28
|
+
const templates = /* @__PURE__ */ new Map();
|
|
29
|
+
const templateComponents = /* @__PURE__ */ new Map();
|
|
30
|
+
const categories = /* @__PURE__ */ new Map();
|
|
31
|
+
const tags = /* @__PURE__ */ new Map();
|
|
32
|
+
const loadedComponents = /* @__PURE__ */ new Map();
|
|
33
|
+
const eventListeners = /* @__PURE__ */ new Map();
|
|
34
|
+
function emit(type, payload) {
|
|
35
|
+
const event = {
|
|
36
|
+
type,
|
|
37
|
+
payload,
|
|
38
|
+
timestamp: /* @__PURE__ */ new Date()
|
|
39
|
+
};
|
|
40
|
+
const listeners = eventListeners.get(type);
|
|
41
|
+
if (listeners) {
|
|
42
|
+
listeners.forEach(
|
|
43
|
+
(handler) => handler(event)
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function register(sectionType, schema, component, options) {
|
|
48
|
+
if (!sectionType) {
|
|
49
|
+
throw new Error("Section type is required");
|
|
50
|
+
}
|
|
51
|
+
if (sections.has(sectionType) && !allowOverride) {
|
|
52
|
+
throw new Error(`Section "${sectionType}" is already registered`);
|
|
53
|
+
}
|
|
54
|
+
if (sections.size >= maxSections) {
|
|
55
|
+
throw new Error(`Maximum number of sections (${maxSections}) reached`);
|
|
56
|
+
}
|
|
57
|
+
const templateMap = /* @__PURE__ */ new Map();
|
|
58
|
+
const componentMap = /* @__PURE__ */ new Map();
|
|
59
|
+
schema.templates.forEach((templateDef) => {
|
|
60
|
+
templateMap.set(templateDef.id, templateDef);
|
|
61
|
+
});
|
|
62
|
+
if (options == null ? void 0 : options.templates) {
|
|
63
|
+
options.templates.forEach(
|
|
64
|
+
({ definition, component: templateComponent }) => {
|
|
65
|
+
templateMap.set(definition.id, definition);
|
|
66
|
+
componentMap.set(definition.id, templateComponent);
|
|
67
|
+
}
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
const registration = {
|
|
71
|
+
schema,
|
|
72
|
+
component,
|
|
73
|
+
templateComponents: componentMap,
|
|
74
|
+
registeredAt: /* @__PURE__ */ new Date(),
|
|
75
|
+
category: (options == null ? void 0 : options.category) || schema.category,
|
|
76
|
+
tags: (options == null ? void 0 : options.tags) || schema.tags || [],
|
|
77
|
+
lazyLoad: typeof component === "function" && component.length === 0 ? component : void 0
|
|
78
|
+
};
|
|
79
|
+
sections.set(sectionType, registration);
|
|
80
|
+
templates.set(sectionType, templateMap);
|
|
81
|
+
templateComponents.set(sectionType, componentMap);
|
|
82
|
+
const category = registration.category;
|
|
83
|
+
if (!categories.has(category)) {
|
|
84
|
+
categories.set(category, /* @__PURE__ */ new Set());
|
|
85
|
+
}
|
|
86
|
+
categories.get(category).add(sectionType);
|
|
87
|
+
registration.tags.forEach((tag) => {
|
|
88
|
+
if (!tags.has(tag)) {
|
|
89
|
+
tags.set(tag, /* @__PURE__ */ new Set());
|
|
90
|
+
}
|
|
91
|
+
tags.get(tag).add(sectionType);
|
|
92
|
+
});
|
|
93
|
+
emit("section:registered", {
|
|
94
|
+
type: sectionType,
|
|
95
|
+
schema,
|
|
96
|
+
templates: Array.from(templateMap.values())
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
function getSchema(sectionType) {
|
|
100
|
+
const registration = sections.get(sectionType);
|
|
101
|
+
return registration == null ? void 0 : registration.schema;
|
|
102
|
+
}
|
|
103
|
+
async function get(sectionType) {
|
|
104
|
+
const registration = sections.get(sectionType);
|
|
105
|
+
if (!registration) {
|
|
106
|
+
return void 0;
|
|
107
|
+
}
|
|
108
|
+
if (registration.lazyLoad && !loadedComponents.has(sectionType)) {
|
|
109
|
+
try {
|
|
110
|
+
const loadedComponent = await registration.lazyLoad();
|
|
111
|
+
loadedComponents.set(
|
|
112
|
+
sectionType,
|
|
113
|
+
loadedComponent
|
|
114
|
+
);
|
|
115
|
+
registration.component = loadedComponent;
|
|
116
|
+
if (debug) {
|
|
117
|
+
}
|
|
118
|
+
} catch (error) {
|
|
119
|
+
console.error(
|
|
120
|
+
`[SectionRegistry] Failed to lazy load ${sectionType}:`,
|
|
121
|
+
error
|
|
122
|
+
);
|
|
123
|
+
throw error;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return registration;
|
|
127
|
+
}
|
|
128
|
+
function getTemplate(sectionType, templateId) {
|
|
129
|
+
var _a;
|
|
130
|
+
return (_a = templates.get(sectionType)) == null ? void 0 : _a.get(templateId);
|
|
131
|
+
}
|
|
132
|
+
function getTemplateComponent(sectionType, templateId) {
|
|
133
|
+
var _a;
|
|
134
|
+
return (_a = templateComponents.get(sectionType)) == null ? void 0 : _a.get(templateId);
|
|
135
|
+
}
|
|
136
|
+
function has(sectionType) {
|
|
137
|
+
return sections.has(sectionType);
|
|
138
|
+
}
|
|
139
|
+
function unregister(sectionType) {
|
|
140
|
+
var _a, _b;
|
|
141
|
+
const registration = sections.get(sectionType);
|
|
142
|
+
if (!registration) {
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
sections.delete(sectionType);
|
|
146
|
+
templates.delete(sectionType);
|
|
147
|
+
templateComponents.delete(sectionType);
|
|
148
|
+
loadedComponents.delete(sectionType);
|
|
149
|
+
const category = registration.category;
|
|
150
|
+
(_a = categories.get(category)) == null ? void 0 : _a.delete(sectionType);
|
|
151
|
+
if (((_b = categories.get(category)) == null ? void 0 : _b.size) === 0) {
|
|
152
|
+
categories.delete(category);
|
|
153
|
+
}
|
|
154
|
+
registration.tags.forEach((tag) => {
|
|
155
|
+
var _a2, _b2;
|
|
156
|
+
(_a2 = tags.get(tag)) == null ? void 0 : _a2.delete(sectionType);
|
|
157
|
+
if (((_b2 = tags.get(tag)) == null ? void 0 : _b2.size) === 0) {
|
|
158
|
+
tags.delete(tag);
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
emit("section:unregistered", {
|
|
162
|
+
type: sectionType
|
|
163
|
+
});
|
|
164
|
+
return true;
|
|
165
|
+
}
|
|
166
|
+
function getAll() {
|
|
167
|
+
return new Map(sections);
|
|
168
|
+
}
|
|
169
|
+
function getByCategory(category) {
|
|
170
|
+
const sectionTypes = categories.get(category);
|
|
171
|
+
if (!sectionTypes) {
|
|
172
|
+
return [];
|
|
173
|
+
}
|
|
174
|
+
const result = [];
|
|
175
|
+
sectionTypes.forEach((type) => {
|
|
176
|
+
const registration = sections.get(type);
|
|
177
|
+
if (registration) {
|
|
178
|
+
result.push(registration);
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
return result;
|
|
182
|
+
}
|
|
183
|
+
function getByTags(searchTags) {
|
|
184
|
+
const matchingSections = /* @__PURE__ */ new Set();
|
|
185
|
+
searchTags.forEach((tag) => {
|
|
186
|
+
const sectionTypes = tags.get(tag);
|
|
187
|
+
if (sectionTypes) {
|
|
188
|
+
sectionTypes.forEach((type) => matchingSections.add(type));
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
const result = [];
|
|
192
|
+
matchingSections.forEach((type) => {
|
|
193
|
+
const registration = sections.get(type);
|
|
194
|
+
if (registration) {
|
|
195
|
+
result.push(registration);
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
return result;
|
|
199
|
+
}
|
|
200
|
+
function on(eventType, handler) {
|
|
201
|
+
if (!eventListeners.has(eventType)) {
|
|
202
|
+
eventListeners.set(eventType, /* @__PURE__ */ new Set());
|
|
203
|
+
}
|
|
204
|
+
eventListeners.get(eventType).add(handler);
|
|
205
|
+
}
|
|
206
|
+
function off(eventType, handler) {
|
|
207
|
+
var _a;
|
|
208
|
+
(_a = eventListeners.get(eventType)) == null ? void 0 : _a.delete(handler);
|
|
209
|
+
}
|
|
210
|
+
function clear() {
|
|
211
|
+
sections.clear();
|
|
212
|
+
templates.clear();
|
|
213
|
+
templateComponents.clear();
|
|
214
|
+
loadedComponents.clear();
|
|
215
|
+
categories.clear();
|
|
216
|
+
tags.clear();
|
|
217
|
+
}
|
|
218
|
+
return {
|
|
219
|
+
register,
|
|
220
|
+
get,
|
|
221
|
+
getSchema,
|
|
222
|
+
getTemplate,
|
|
223
|
+
getTemplateComponent,
|
|
224
|
+
has,
|
|
225
|
+
unregister,
|
|
226
|
+
getAll,
|
|
227
|
+
getByCategory,
|
|
228
|
+
getByTags,
|
|
229
|
+
on,
|
|
230
|
+
off,
|
|
231
|
+
clear
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
var sectionRegistry = createSectionRegistry({
|
|
235
|
+
debug: process.env.NODE_ENV === "development",
|
|
236
|
+
allowOverride: process.env.NODE_ENV === "development"
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
exports.__spreadProps = __spreadProps;
|
|
240
|
+
exports.__spreadValues = __spreadValues;
|
|
241
|
+
exports.createSectionRegistry = createSectionRegistry;
|
|
242
|
+
exports.sectionRegistry = sectionRegistry;
|
|
243
|
+
//# sourceMappingURL=chunk-3SZX6LHT.js.map
|
|
244
|
+
//# sourceMappingURL=chunk-3SZX6LHT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/registry/section-registry.ts"],"names":["_a","_b"],"mappings":"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","file":"chunk-3SZX6LHT.js","sourcesContent":["/**\n * Section Registry Implementation\n * Hierarchical registry with multi-template support\n */\n\nimport type {\n SectionRegistry,\n RegistryConfig,\n RegistryEvent,\n RegistryEventType,\n RegistryEventHandler,\n SectionRegisteredPayload,\n SectionUnregisteredPayload,\n} from \"../types/registry\";\nimport type {\n SectionSchema,\n SectionRegistration,\n TemplateDefinition,\n SectionComponentProps,\n} from \"../types/section\";\nimport React from \"react\";\n\n/**\n * Create a new section registry instance\n */\nexport function createSectionRegistry(\n config: RegistryConfig = {}\n): SectionRegistry {\n const { debug = false, allowOverride = false, maxSections = 100 } = config;\n\n // Main registries\n const sections = new Map<string, SectionRegistration>();\n const templates = new Map<string, Map<string, TemplateDefinition>>();\n const templateComponents = new Map<\n string,\n Map<string, React.ComponentType<SectionComponentProps>>\n >();\n const categories = new Map<string, Set<string>>();\n const tags = new Map<string, Set<string>>();\n\n // Lazy load cache\n const loadedComponents = new Map<\n string,\n React.ComponentType<SectionComponentProps>\n >();\n\n // Event listeners\n const eventListeners = new Map<\n RegistryEventType,\n Set<RegistryEventHandler>\n >();\n\n /**\n * Emit an event\n */\n function emit<TPayload>(type: RegistryEventType, payload: TPayload): void {\n const event: RegistryEvent<TPayload> = {\n type,\n payload,\n timestamp: new Date(),\n };\n\n const listeners = eventListeners.get(type);\n if (listeners) {\n // Cast handler to accept any payload type\n listeners.forEach((handler) =>\n (handler as (event: RegistryEvent<TPayload>) => void)(event)\n );\n }\n\n if (debug) {\n }\n }\n\n /**\n * Register a section type\n */\n function register<T>(\n sectionType: string,\n schema: SectionSchema,\n component: React.ComponentType<T> | (() => Promise<React.ComponentType<T>>),\n options?: {\n templates?: Array<{\n definition: TemplateDefinition;\n component: React.ComponentType<SectionComponentProps>;\n }>;\n category?: string;\n tags?: string[];\n }\n ): void {\n // Validate\n if (!sectionType) {\n throw new Error(\"Section type is required\");\n }\n\n if (sections.has(sectionType) && !allowOverride) {\n throw new Error(`Section \"${sectionType}\" is already registered`);\n }\n\n if (sections.size >= maxSections) {\n throw new Error(`Maximum number of sections (${maxSections}) reached`);\n }\n\n // Prepare templates\n const templateMap = new Map<string, TemplateDefinition>();\n const componentMap = new Map<\n string,\n React.ComponentType<SectionComponentProps>\n >();\n\n // Register schema templates\n schema.templates.forEach((templateDef: TemplateDefinition) => {\n templateMap.set(templateDef.id, templateDef);\n });\n\n // Register custom template components\n if (options?.templates) {\n options.templates.forEach(\n ({ definition, component: templateComponent }) => {\n templateMap.set(definition.id, definition);\n componentMap.set(definition.id, templateComponent);\n }\n );\n }\n\n // Create registration\n const registration: SectionRegistration<T> = {\n schema,\n component: component as React.ComponentType<T>,\n templateComponents: componentMap,\n registeredAt: new Date(),\n category: options?.category || schema.category,\n tags: options?.tags || schema.tags || [],\n lazyLoad:\n typeof component === \"function\" && component.length === 0\n ? (component as () => Promise<React.ComponentType<T>>)\n : undefined,\n };\n\n // Store registration\n sections.set(sectionType, registration as SectionRegistration);\n templates.set(sectionType, templateMap);\n templateComponents.set(sectionType, componentMap);\n\n // Index by category\n const category = registration.category;\n if (!categories.has(category)) {\n categories.set(category, new Set());\n }\n categories.get(category)!.add(sectionType);\n\n // Index by tags\n registration.tags.forEach((tag: string) => {\n if (!tags.has(tag)) {\n tags.set(tag, new Set());\n }\n tags.get(tag)!.add(sectionType);\n });\n\n // Emit event\n emit<SectionRegisteredPayload>(\"section:registered\", {\n type: sectionType,\n schema,\n templates: Array.from(templateMap.values()),\n });\n\n if (debug) {\n }\n }\n\n /**\n * Get just the schema without loading the component (server-safe)\n */\n function getSchema(sectionType: string): SectionSchema | undefined {\n const registration = sections.get(sectionType);\n return registration?.schema;\n }\n\n /**\n * Get a section registration (with lazy loading support)\n */\n async function get<T>(\n sectionType: string\n ): Promise<SectionRegistration<T> | undefined> {\n const registration = sections.get(sectionType) as\n | SectionRegistration<T>\n | undefined;\n\n if (!registration) {\n return undefined;\n }\n\n // Handle lazy loading\n if (registration.lazyLoad && !loadedComponents.has(sectionType)) {\n try {\n const loadedComponent = await registration.lazyLoad();\n loadedComponents.set(\n sectionType,\n loadedComponent as React.ComponentType<SectionComponentProps>\n );\n registration.component = loadedComponent;\n\n if (debug) {\n }\n } catch (error) {\n console.error(\n `[SectionRegistry] Failed to lazy load ${sectionType}:`,\n error\n );\n throw error;\n }\n }\n\n return registration;\n }\n\n /**\n * Get a template definition\n */\n function getTemplate(\n sectionType: string,\n templateId: string\n ): TemplateDefinition | undefined {\n return templates.get(sectionType)?.get(templateId);\n }\n\n /**\n * Get a template component\n */\n function getTemplateComponent(\n sectionType: string,\n templateId: string\n ): React.ComponentType<SectionComponentProps> | undefined {\n return templateComponents.get(sectionType)?.get(templateId);\n }\n\n /**\n * Check if a section is registered\n */\n function has(sectionType: string): boolean {\n return sections.has(sectionType);\n }\n\n /**\n * Unregister a section\n */\n function unregister(sectionType: string): boolean {\n const registration = sections.get(sectionType);\n\n if (!registration) {\n return false;\n }\n\n // Remove from maps\n sections.delete(sectionType);\n templates.delete(sectionType);\n templateComponents.delete(sectionType);\n loadedComponents.delete(sectionType);\n\n // Remove from category index\n const category = registration.category;\n categories.get(category)?.delete(sectionType);\n if (categories.get(category)?.size === 0) {\n categories.delete(category);\n }\n\n // Remove from tags index\n registration.tags.forEach((tag) => {\n tags.get(tag)?.delete(sectionType);\n if (tags.get(tag)?.size === 0) {\n tags.delete(tag);\n }\n });\n\n // Emit event\n emit<SectionUnregisteredPayload>(\"section:unregistered\", {\n type: sectionType,\n });\n\n if (debug) {\n }\n\n return true;\n }\n\n /**\n * Get all registrations\n */\n function getAll(): Map<string, SectionRegistration> {\n return new Map(sections);\n }\n\n /**\n * Get sections by category\n */\n function getByCategory(category: string): SectionRegistration[] {\n const sectionTypes = categories.get(category);\n if (!sectionTypes) {\n return [];\n }\n\n const result: SectionRegistration[] = [];\n sectionTypes.forEach((type) => {\n const registration = sections.get(type);\n if (registration) {\n result.push(registration);\n }\n });\n\n return result;\n }\n\n /**\n * Get sections by tags\n */\n function getByTags(searchTags: string[]): SectionRegistration[] {\n const matchingSections = new Set<string>();\n\n searchTags.forEach((tag: string) => {\n const sectionTypes = tags.get(tag);\n if (sectionTypes) {\n sectionTypes.forEach((type) => matchingSections.add(type));\n }\n });\n\n const result: SectionRegistration[] = [];\n matchingSections.forEach((type) => {\n const registration = sections.get(type);\n if (registration) {\n result.push(registration);\n }\n });\n\n return result;\n }\n\n /**\n * Add event listener\n */\n function on<TPayload>(\n eventType: RegistryEventType,\n handler: RegistryEventHandler<TPayload>\n ): void {\n if (!eventListeners.has(eventType)) {\n eventListeners.set(eventType, new Set());\n }\n eventListeners.get(eventType)!.add(handler as RegistryEventHandler);\n }\n\n /**\n * Remove event listener\n */\n function off<TPayload>(\n eventType: RegistryEventType,\n handler: RegistryEventHandler<TPayload>\n ): void {\n eventListeners.get(eventType)?.delete(handler as RegistryEventHandler);\n }\n\n /**\n * Clear all registrations\n */\n function clear(): void {\n sections.clear();\n templates.clear();\n templateComponents.clear();\n loadedComponents.clear();\n categories.clear();\n tags.clear();\n\n if (debug) {\n }\n }\n\n return {\n register,\n get,\n getSchema,\n getTemplate,\n getTemplateComponent,\n has,\n unregister,\n getAll,\n getByCategory,\n getByTags,\n on,\n off,\n clear,\n };\n}\n\n/**\n * Global section registry instance\n */\nexport const sectionRegistry = createSectionRegistry({\n debug: process.env.NODE_ENV === \"development\",\n allowOverride: process.env.NODE_ENV === \"development\",\n});\n"]}
|