@objectql/core 1.5.0 → 1.6.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/dist/driver.d.ts DELETED
@@ -1,2 +0,0 @@
1
- import { Driver } from '@objectql/types';
2
- export declare function createDriverFromConnection(connection: string): Driver;
package/dist/driver.js DELETED
@@ -1,55 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createDriverFromConnection = createDriverFromConnection;
4
- function createDriverFromConnection(connection) {
5
- let driverPackage = '';
6
- let driverClass = '';
7
- let driverConfig = {};
8
- if (connection.startsWith('mongodb://')) {
9
- driverPackage = '@objectql/driver-mongo';
10
- driverClass = 'MongoDriver';
11
- driverConfig = { url: connection };
12
- }
13
- else if (connection.startsWith('sqlite://')) {
14
- driverPackage = '@objectql/driver-knex';
15
- driverClass = 'KnexDriver';
16
- const filename = connection.replace('sqlite://', '');
17
- driverConfig = {
18
- client: 'sqlite3',
19
- connection: { filename },
20
- useNullAsDefault: true
21
- };
22
- }
23
- else if (connection.startsWith('postgres://') || connection.startsWith('postgresql://')) {
24
- driverPackage = '@objectql/driver-knex';
25
- driverClass = 'KnexDriver';
26
- driverConfig = {
27
- client: 'pg',
28
- connection: connection
29
- };
30
- }
31
- else if (connection.startsWith('mysql://')) {
32
- driverPackage = '@objectql/driver-knex';
33
- driverClass = 'KnexDriver';
34
- driverConfig = {
35
- client: 'mysql2',
36
- connection: connection
37
- };
38
- }
39
- else {
40
- throw new Error(`Unsupported connection protocol: ${connection}`);
41
- }
42
- try {
43
- // eslint-disable-next-line @typescript-eslint/no-var-requires
44
- const pkg = require(driverPackage);
45
- const DriverClass = pkg[driverClass];
46
- if (!DriverClass) {
47
- throw new Error(`${driverClass} not found in ${driverPackage}`);
48
- }
49
- return new DriverClass(driverConfig);
50
- }
51
- catch (e) {
52
- throw new Error(`Failed to load driver ${driverPackage}. Please install it: npm install ${driverPackage}. Error: ${e.message}`);
53
- }
54
- }
55
- //# sourceMappingURL=driver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"driver.js","sourceRoot":"","sources":["../src/driver.ts"],"names":[],"mappings":";;AAEA,gEAmDC;AAnDD,SAAgB,0BAA0B,CAAC,UAAkB;IACzD,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,YAAY,GAAQ,EAAE,CAAC;IAE3B,IAAI,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACtC,aAAa,GAAG,wBAAwB,CAAC;QACzC,WAAW,GAAG,aAAa,CAAC;QAC5B,YAAY,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;IACvC,CAAC;SACI,IAAI,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1C,aAAa,GAAG,uBAAuB,CAAC;QACxC,WAAW,GAAG,YAAY,CAAC;QAC3B,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACrD,YAAY,GAAG;YACX,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,EAAE,QAAQ,EAAE;YACxB,gBAAgB,EAAE,IAAI;SACzB,CAAC;IACN,CAAC;SACI,IAAI,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACtF,aAAa,GAAG,uBAAuB,CAAC;QACxC,WAAW,GAAG,YAAY,CAAC;QAC3B,YAAY,GAAG;YACX,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,UAAU;SACzB,CAAC;IACN,CAAC;SACI,IAAI,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACzC,aAAa,GAAG,uBAAuB,CAAC;QACxC,WAAW,GAAG,YAAY,CAAC;QAC3B,YAAY,GAAG;YACX,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE,UAAU;SACzB,CAAC;IACN,CAAC;SACI,CAAC;QACF,MAAM,IAAI,KAAK,CAAC,oCAAoC,UAAU,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,CAAC;QACD,8DAA8D;QAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QACnC,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;QACrC,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,GAAG,WAAW,iBAAiB,aAAa,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,IAAI,WAAW,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,aAAa,oCAAoC,aAAa,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACpI,CAAC;AACL,CAAC"}
package/dist/loader.d.ts DELETED
@@ -1,12 +0,0 @@
1
- import { MetadataRegistry, ObjectConfig, LoaderPlugin } from '@objectql/types';
2
- export declare class ObjectLoader {
3
- protected registry: MetadataRegistry;
4
- private plugins;
5
- constructor(registry: MetadataRegistry);
6
- private registerBuiltinPlugins;
7
- use(plugin: LoaderPlugin): void;
8
- load(dir: string, packageName?: string): void;
9
- loadPackage(packageName: string): void;
10
- private runPlugin;
11
- }
12
- export declare function loadObjectConfigs(dir: string): Record<string, ObjectConfig>;
package/dist/loader.js DELETED
@@ -1,318 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.ObjectLoader = void 0;
37
- exports.loadObjectConfigs = loadObjectConfigs;
38
- const fs = __importStar(require("fs"));
39
- const glob = __importStar(require("fast-glob"));
40
- const path = __importStar(require("path"));
41
- const types_1 = require("@objectql/types");
42
- const yaml = __importStar(require("js-yaml"));
43
- class ObjectLoader {
44
- constructor(registry) {
45
- this.registry = registry;
46
- this.plugins = [];
47
- this.registerBuiltinPlugins();
48
- }
49
- registerBuiltinPlugins() {
50
- // Objects
51
- this.use({
52
- name: 'object',
53
- glob: ['**/*.object.yml', '**/*.object.yaml'],
54
- handler: (ctx) => {
55
- try {
56
- const doc = yaml.load(ctx.content);
57
- if (!doc)
58
- return;
59
- if (doc.name && doc.fields) {
60
- registerObject(ctx.registry, doc, ctx.file, ctx.packageName || ctx.registry.getEntry('package-map', ctx.file)?.package);
61
- }
62
- else {
63
- for (const [key, value] of Object.entries(doc)) {
64
- if (typeof value === 'object' && value.fields) {
65
- const obj = value;
66
- if (!obj.name)
67
- obj.name = key;
68
- registerObject(ctx.registry, obj, ctx.file, ctx.packageName);
69
- }
70
- }
71
- }
72
- }
73
- catch (e) {
74
- console.error(`Error loading object from ${ctx.file}:`, e);
75
- }
76
- }
77
- });
78
- // Hooks
79
- this.use({
80
- name: 'hook',
81
- glob: ['**/*.hook.ts', '**/*.hook.js'],
82
- handler: (ctx) => {
83
- const basename = path.basename(ctx.file);
84
- // Extract object name from filename: user.hook.ts -> user
85
- const objectName = basename.replace(/\.hook\.(ts|js)$/, '');
86
- try {
87
- const mod = require(ctx.file);
88
- // Support default export or named exports
89
- const hooks = mod.default || mod;
90
- ctx.registry.register('hook', {
91
- type: 'hook',
92
- id: objectName, // Hook ID is the object name
93
- path: ctx.file,
94
- package: ctx.packageName,
95
- content: hooks
96
- });
97
- }
98
- catch (e) {
99
- console.error(`Error loading hook from ${ctx.file}:`, e);
100
- }
101
- }
102
- });
103
- // Actions
104
- this.use({
105
- name: 'action',
106
- glob: ['**/*.action.ts', '**/*.action.js'],
107
- handler: (ctx) => {
108
- const basename = path.basename(ctx.file);
109
- // Extract object name: invoice.action.ts -> invoice
110
- const objectName = basename.replace(/\.action\.(ts|js)$/, '');
111
- try {
112
- const mod = require(ctx.file);
113
- const actions = {};
114
- for (const [key, value] of Object.entries(mod)) {
115
- if (key === 'default')
116
- continue;
117
- if (typeof value === 'object' && value.handler) {
118
- actions[key] = value;
119
- }
120
- }
121
- if (Object.keys(actions).length > 0) {
122
- ctx.registry.register('action', {
123
- type: 'action',
124
- id: objectName, // Action collection ID is the object name
125
- path: ctx.file,
126
- package: ctx.packageName,
127
- content: actions
128
- });
129
- }
130
- }
131
- catch (e) {
132
- console.error(`Error loading action from ${ctx.file}:`, e);
133
- }
134
- }
135
- });
136
- // Generic YAML Metadata Loaders
137
- const metaTypes = ['view', 'form', 'menu', 'permission', 'report', 'workflow', 'validation', 'data'];
138
- for (const type of metaTypes) {
139
- this.use({
140
- name: type,
141
- glob: [`**/*.${type}.yml`, `**/*.${type}.yaml`],
142
- handler: (ctx) => {
143
- try {
144
- const doc = yaml.load(ctx.content);
145
- if (!doc)
146
- return;
147
- // Use 'name' from doc, or filename base (without extension)
148
- let id = doc.name;
149
- if (!id && type !== 'data') {
150
- const basename = path.basename(ctx.file);
151
- // e.g. "my-view.view.yml" -> "my-view"
152
- // Regex: remove .type.yml or .type.yaml
153
- const re = new RegExp(`\\.${type}\\.(yml|yaml)$`);
154
- id = basename.replace(re, '');
155
- }
156
- // Data entries might not need a name, but for registry we need an ID.
157
- // For data, we can use filename if not present.
158
- if (!id && type === 'data') {
159
- id = path.basename(ctx.file);
160
- }
161
- // Ensure name is in the doc for consistency
162
- if (!doc.name)
163
- doc.name = id;
164
- ctx.registry.register(type, {
165
- type: type,
166
- id: id,
167
- path: ctx.file,
168
- package: ctx.packageName,
169
- content: doc
170
- });
171
- }
172
- catch (e) {
173
- console.error(`Error loading ${type} from ${ctx.file}:`, e);
174
- }
175
- }
176
- });
177
- }
178
- }
179
- use(plugin) {
180
- this.plugins.push(plugin);
181
- }
182
- load(dir, packageName) {
183
- for (const plugin of this.plugins) {
184
- this.runPlugin(plugin, dir, packageName);
185
- }
186
- }
187
- loadPackage(packageName) {
188
- try {
189
- const entryPath = require.resolve(packageName, { paths: [process.cwd()] });
190
- // clean cache
191
- delete require.cache[entryPath];
192
- const packageDir = path.dirname(entryPath);
193
- this.load(packageDir, packageName);
194
- }
195
- catch (e) {
196
- // fallback to directory
197
- this.load(packageName, packageName);
198
- }
199
- }
200
- runPlugin(plugin, dir, packageName) {
201
- // Enforce path conventions:
202
- // 1. Never scan node_modules (unless explicitly loaded via loadPackage which sets cwd inside it)
203
- // 2. Ignore build artifacts (dist, build, out) to avoid double-loading metadata if both src and dist exist.
204
- // Note: If you want to load from 'dist', you must explicitly point the loader to it (e.g. loader.load('./dist')).
205
- // In that case, the patterns won't match relative to the CWD.
206
- // Path conventions:
207
- // 1. Always ignore node_modules and .git
208
- const ignore = [
209
- '**/node_modules/**',
210
- '**/.git/**'
211
- ];
212
- // 2. Intelligent handling of build artifacts (dist/build)
213
- // If 'src' exists in the scan directory, we assume it's a Development Environment.
214
- // In Dev, we ignore 'dist' to avoid duplicate loading (ts in src vs js in dist).
215
- // In Production (no src), we must NOT ignore 'dist', otherwise we can't load compiled hooks/actions.
216
- const srcPath = path.join(dir, 'src');
217
- const hasSrc = fs.existsSync(srcPath) && fs.statSync(srcPath).isDirectory();
218
- if (hasSrc) {
219
- ignore.push('**/dist/**', '**/build/**', '**/out/**');
220
- }
221
- // 3. User instruction: "src 不行的" (src is not viable for metadata in production)
222
- // Metadata (.yml) should ideally be placed in 'objects/' or root, not 'src/',
223
- // to simplify packaging (so you don't need to copy assets from src to dist).
224
- // However, we do not strictly block 'src' scanning here to avoid breaking dev workflow.
225
- // The exclusion of 'dist' in dev mode (above) handles the code duality.
226
- const files = glob.sync(plugin.glob, {
227
- cwd: dir,
228
- absolute: true,
229
- ignore
230
- });
231
- for (const file of files) {
232
- try {
233
- const ctx = {
234
- file,
235
- content: '',
236
- registry: this.registry,
237
- packageName
238
- };
239
- // Pre-read for convenience
240
- if (!file.match(/\.(js|ts|node)$/)) {
241
- ctx.content = fs.readFileSync(file, 'utf8');
242
- }
243
- plugin.handler(ctx);
244
- }
245
- catch (e) {
246
- console.error(`Error in loader plugin '${plugin.name}' processing ${file}:`, e);
247
- }
248
- }
249
- }
250
- }
251
- exports.ObjectLoader = ObjectLoader;
252
- function registerObject(registry, obj, file, packageName) {
253
- // Normalize fields
254
- if (obj.fields) {
255
- for (const [key, field] of Object.entries(obj.fields)) {
256
- if (typeof field === 'object' && field !== null) {
257
- if (!field.name) {
258
- field.name = key;
259
- }
260
- }
261
- }
262
- }
263
- // Check for existing object to Merge
264
- const existing = registry.getEntry('object', obj.name);
265
- if (existing) {
266
- const base = existing.content;
267
- // Merge Fields: New fields overwrite old ones
268
- if (obj.fields) {
269
- base.fields = { ...base.fields, ...obj.fields };
270
- }
271
- // Merge Actions
272
- if (obj.actions) {
273
- base.actions = { ...base.actions, ...obj.actions };
274
- }
275
- // Merge Indexes
276
- if (obj.indexes) {
277
- base.indexes = { ...base.indexes, ...obj.indexes };
278
- }
279
- // Override Top-level Properties if provided
280
- if (obj.label)
281
- base.label = obj.label;
282
- if (obj.icon)
283
- base.icon = obj.icon;
284
- if (obj.description)
285
- base.description = obj.description;
286
- if (obj.datasource)
287
- base.datasource = obj.datasource;
288
- // Update the content reference
289
- existing.content = base;
290
- return;
291
- }
292
- registry.register('object', {
293
- type: 'object',
294
- id: obj.name,
295
- path: file,
296
- package: packageName,
297
- content: obj
298
- });
299
- }
300
- function loadObjectConfigs(dir) {
301
- const registry = new types_1.MetadataRegistry();
302
- const loader = new ObjectLoader(registry);
303
- loader.load(dir);
304
- // Merge actions into objects
305
- const actions = registry.list('action');
306
- for (const act of actions) {
307
- const obj = registry.get('object', act.id);
308
- if (obj) {
309
- obj.actions = act.content;
310
- }
311
- }
312
- const result = {};
313
- for (const obj of registry.list('object')) {
314
- result[obj.name] = obj;
315
- }
316
- return result;
317
- }
318
- //# sourceMappingURL=loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
package/dist/plugin.d.ts DELETED
@@ -1,2 +0,0 @@
1
- import { ObjectQLPlugin } from '@objectql/types';
2
- export declare function loadPlugin(packageName: string): ObjectQLPlugin;
package/dist/plugin.js DELETED
@@ -1,56 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.loadPlugin = loadPlugin;
4
- function loadPlugin(packageName) {
5
- let mod;
6
- try {
7
- const modulePath = require.resolve(packageName, { paths: [process.cwd()] });
8
- mod = require(modulePath);
9
- }
10
- catch (e) {
11
- throw new Error(`Failed to resolve plugin '${packageName}': ${e}`);
12
- }
13
- // Helper to find plugin instance
14
- const findPlugin = (candidate) => {
15
- if (!candidate)
16
- return undefined;
17
- // 1. Try treating as Class
18
- if (typeof candidate === 'function') {
19
- try {
20
- const inst = new candidate();
21
- if (inst && typeof inst.setup === 'function') {
22
- return inst; // Found it!
23
- }
24
- }
25
- catch (e) {
26
- // Not a constructor or instantiation failed
27
- }
28
- }
29
- // 2. Try treating as Instance
30
- if (candidate && typeof candidate.setup === 'function') {
31
- if (candidate.name)
32
- return candidate;
33
- }
34
- return undefined;
35
- };
36
- // Search in default, module root, and all named exports
37
- let instance = findPlugin(mod.default) || findPlugin(mod);
38
- if (!instance && mod && typeof mod === 'object') {
39
- for (const key of Object.keys(mod)) {
40
- if (key === 'default')
41
- continue;
42
- instance = findPlugin(mod[key]);
43
- if (instance)
44
- break;
45
- }
46
- }
47
- if (instance) {
48
- instance._packageName = packageName;
49
- return instance;
50
- }
51
- else {
52
- console.error(`[PluginLoader] Failed to find ObjectQLPlugin in '${packageName}'. Exports:`, Object.keys(mod));
53
- throw new Error(`Plugin '${packageName}' must export a class or object implementing ObjectQLPlugin.`);
54
- }
55
- }
56
- //# sourceMappingURL=plugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":";;AAEA,gCAkDC;AAlDD,SAAgB,UAAU,CAAC,WAAmB;IAC1C,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5E,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,6BAA6B,WAAW,MAAM,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,iCAAiC;IACjC,MAAM,UAAU,GAAG,CAAC,SAAc,EAA8B,EAAE;QAC1D,IAAI,CAAC,SAAS;YAAE,OAAO,SAAS,CAAC;QAEjC,2BAA2B;QAC3B,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;YAClC,IAAI,CAAC;gBACD,MAAM,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;gBAC7B,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;oBAC3C,OAAO,IAAI,CAAC,CAAC,YAAY;gBAC7B,CAAC;YACL,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,4CAA4C;YAChD,CAAC;QACL,CAAC;QAED,8BAA8B;QAC9B,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACrD,IAAI,SAAS,CAAC,IAAI;gBAAE,OAAO,SAAS,CAAC;QACzC,CAAC;QACD,OAAO,SAAS,CAAC;IACzB,CAAC,CAAC;IAEF,wDAAwD;IACxD,IAAI,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IAE1D,IAAI,CAAC,QAAQ,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC9C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,IAAI,GAAG,KAAK,SAAS;gBAAE,SAAS;YAChC,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAChC,IAAI,QAAQ;gBAAE,MAAM;QACxB,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACV,QAAgB,CAAC,YAAY,GAAG,WAAW,CAAC;QAC7C,OAAO,QAAQ,CAAC;IACpB,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,KAAK,CAAC,oDAAoD,WAAW,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9G,MAAM,IAAI,KAAK,CAAC,WAAW,WAAW,8DAA8D,CAAC,CAAC;IAC1G,CAAC;AACL,CAAC"}
package/dist/remote.d.ts DELETED
@@ -1,8 +0,0 @@
1
- import { RemoteDriver } from '@objectql/driver-remote';
2
- import { ObjectConfig } from '@objectql/types';
3
- export interface RemoteLoadResult {
4
- driverName: string;
5
- driver: RemoteDriver;
6
- objects: ObjectConfig[];
7
- }
8
- export declare function loadRemoteFromUrl(url: string): Promise<RemoteLoadResult | null>;
package/dist/remote.js DELETED
@@ -1,43 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.loadRemoteFromUrl = loadRemoteFromUrl;
4
- const driver_remote_1 = require("@objectql/driver-remote");
5
- async function loadRemoteFromUrl(url) {
6
- try {
7
- const baseUrl = url.replace(/\/$/, '');
8
- const metadataUrl = `${baseUrl}/api/metadata/objects`;
9
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
10
- // @ts-ignore - Fetch is available in Node 18+
11
- const res = await fetch(metadataUrl);
12
- if (!res.ok) {
13
- console.warn(`[ObjectQL] Remote ${url} returned ${res.status}`);
14
- return null;
15
- }
16
- const data = await res.json();
17
- if (!data || !data.objects)
18
- return null;
19
- const driverName = `remote:${baseUrl}`;
20
- const driver = new driver_remote_1.RemoteDriver(baseUrl);
21
- const objects = [];
22
- await Promise.all(data.objects.map(async (summary) => {
23
- try {
24
- // @ts-ignore
25
- const detailRes = await fetch(`${metadataUrl}/${summary.name}`);
26
- if (detailRes.ok) {
27
- const config = await detailRes.json();
28
- config.datasource = driverName;
29
- objects.push(config);
30
- }
31
- }
32
- catch (e) {
33
- console.warn(`[ObjectQL] Failed to load object ${summary.name} from ${url}`);
34
- }
35
- }));
36
- return { driverName, driver, objects };
37
- }
38
- catch (e) {
39
- console.warn(`[ObjectQL] Remote connection error ${url}: ${e.message}`);
40
- return null;
41
- }
42
- }
43
- //# sourceMappingURL=remote.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remote.js","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":";;AASA,8CAwCC;AAjDD,2DAAuD;AAShD,KAAK,UAAU,iBAAiB,CAAC,GAAW;IAC/C,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvC,MAAM,WAAW,GAAG,GAAG,OAAO,uBAAuB,CAAC;QAEtD,6DAA6D;QAC7D,8CAA8C;QAC9C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,qBAAqB,GAAG,aAAa,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAChE,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAS,CAAC;QACrC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAExC,MAAM,UAAU,GAAG,UAAU,OAAO,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,4BAAY,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,OAAO,GAAmB,EAAE,CAAC;QAEnC,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAY,EAAE,EAAE;YACtD,IAAI,CAAC;gBACD,aAAa;gBACb,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBAChE,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;oBACf,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAkB,CAAC;oBACtD,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;oBAC/B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACzB,CAAC;YACL,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,OAAO,CAAC,IAAI,CAAC,oCAAoC,OAAO,CAAC,IAAI,SAAS,GAAG,EAAE,CAAC,CAAC;YACjF,CAAC;QACL,CAAC,CAAC,CAAC,CAAC;QAEJ,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAE3C,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,sCAAsC,GAAG,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC;IACjB,CAAC;AACL,CAAC"}
package/src/driver.ts DELETED
@@ -1,54 +0,0 @@
1
- import { Driver } from '@objectql/types';
2
-
3
- export function createDriverFromConnection(connection: string): Driver {
4
- let driverPackage = '';
5
- let driverClass = '';
6
- let driverConfig: any = {};
7
-
8
- if (connection.startsWith('mongodb://')) {
9
- driverPackage = '@objectql/driver-mongo';
10
- driverClass = 'MongoDriver';
11
- driverConfig = { url: connection };
12
- }
13
- else if (connection.startsWith('sqlite://')) {
14
- driverPackage = '@objectql/driver-knex';
15
- driverClass = 'KnexDriver';
16
- const filename = connection.replace('sqlite://', '');
17
- driverConfig = {
18
- client: 'sqlite3',
19
- connection: { filename },
20
- useNullAsDefault: true
21
- };
22
- }
23
- else if (connection.startsWith('postgres://') || connection.startsWith('postgresql://')) {
24
- driverPackage = '@objectql/driver-knex';
25
- driverClass = 'KnexDriver';
26
- driverConfig = {
27
- client: 'pg',
28
- connection: connection
29
- };
30
- }
31
- else if (connection.startsWith('mysql://')) {
32
- driverPackage = '@objectql/driver-knex';
33
- driverClass = 'KnexDriver';
34
- driverConfig = {
35
- client: 'mysql2',
36
- connection: connection
37
- };
38
- }
39
- else {
40
- throw new Error(`Unsupported connection protocol: ${connection}`);
41
- }
42
-
43
- try {
44
- // eslint-disable-next-line @typescript-eslint/no-var-requires
45
- const pkg = require(driverPackage);
46
- const DriverClass = pkg[driverClass];
47
- if (!DriverClass) {
48
- throw new Error(`${driverClass} not found in ${driverPackage}`);
49
- }
50
- return new DriverClass(driverConfig);
51
- } catch (e: any) {
52
- throw new Error(`Failed to load driver ${driverPackage}. Please install it: npm install ${driverPackage}. Error: ${e.message}`);
53
- }
54
- }