@eldrin-project/eldrin-app-core 0.0.3 → 0.0.4
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/index.cjs +0 -123
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -168
- package/dist/index.d.ts +1 -168
- package/dist/index.js +1 -119
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
package/dist/index.cjs
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var react = require('react');
|
|
4
3
|
var promises = require('fs/promises');
|
|
5
4
|
var fs = require('fs');
|
|
6
5
|
var path = require('path');
|
|
7
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
8
|
-
|
|
9
|
-
// src/app/createApp.tsx
|
|
10
6
|
|
|
11
7
|
// src/migrations/checksum.ts
|
|
12
8
|
var CHECKSUM_PREFIX = "sha256:";
|
|
@@ -444,120 +440,6 @@ async function validateMigrationManifest(manifest, files) {
|
|
|
444
440
|
errors
|
|
445
441
|
};
|
|
446
442
|
}
|
|
447
|
-
var EldrinDatabaseContext = react.createContext(null);
|
|
448
|
-
function DatabaseProvider({
|
|
449
|
-
db,
|
|
450
|
-
migrationsComplete,
|
|
451
|
-
migrationResult,
|
|
452
|
-
children
|
|
453
|
-
}) {
|
|
454
|
-
const value = {
|
|
455
|
-
db,
|
|
456
|
-
migrationsComplete,
|
|
457
|
-
migrationResult
|
|
458
|
-
};
|
|
459
|
-
return /* @__PURE__ */ jsxRuntime.jsx(EldrinDatabaseContext.Provider, { value, children });
|
|
460
|
-
}
|
|
461
|
-
function useDatabase() {
|
|
462
|
-
const context = react.useContext(EldrinDatabaseContext);
|
|
463
|
-
if (context === null) {
|
|
464
|
-
throw new Error("useDatabase must be used within a DatabaseProvider (via createApp)");
|
|
465
|
-
}
|
|
466
|
-
return context.db;
|
|
467
|
-
}
|
|
468
|
-
function useDatabaseContext() {
|
|
469
|
-
const context = react.useContext(EldrinDatabaseContext);
|
|
470
|
-
if (context === null) {
|
|
471
|
-
throw new Error("useDatabaseContext must be used within a DatabaseProvider (via createApp)");
|
|
472
|
-
}
|
|
473
|
-
return context;
|
|
474
|
-
}
|
|
475
|
-
function useMigrationsComplete() {
|
|
476
|
-
const context = react.useContext(EldrinDatabaseContext);
|
|
477
|
-
return context?.migrationsComplete ?? false;
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
// src/app/createApp.tsx
|
|
481
|
-
function createApp(options) {
|
|
482
|
-
const { name, root: RootComponent, migrations = [], onMigrationsComplete, onMigrationError } = options;
|
|
483
|
-
const state = {
|
|
484
|
-
db: null,
|
|
485
|
-
migrationsComplete: false,
|
|
486
|
-
migrationResult: void 0,
|
|
487
|
-
mountedElement: void 0,
|
|
488
|
-
reactRoot: void 0
|
|
489
|
-
};
|
|
490
|
-
async function bootstrap(props) {
|
|
491
|
-
const db = props.db ?? null;
|
|
492
|
-
state.db = db;
|
|
493
|
-
if (db && migrations.length > 0) {
|
|
494
|
-
try {
|
|
495
|
-
const result = await runMigrations(db, {
|
|
496
|
-
migrations,
|
|
497
|
-
onLog: (message, level) => {
|
|
498
|
-
const prefix = `[${name}]`;
|
|
499
|
-
if (level === "error") {
|
|
500
|
-
console.error(prefix, message);
|
|
501
|
-
} else if (level === "warn") {
|
|
502
|
-
console.warn(prefix, message);
|
|
503
|
-
} else {
|
|
504
|
-
console.log(prefix, message);
|
|
505
|
-
}
|
|
506
|
-
}
|
|
507
|
-
});
|
|
508
|
-
state.migrationResult = result;
|
|
509
|
-
if (result.success) {
|
|
510
|
-
state.migrationsComplete = true;
|
|
511
|
-
onMigrationsComplete?.(result);
|
|
512
|
-
} else {
|
|
513
|
-
const error = new Error(result.error?.message ?? "Migration failed");
|
|
514
|
-
onMigrationError?.(error);
|
|
515
|
-
throw error;
|
|
516
|
-
}
|
|
517
|
-
} catch (error) {
|
|
518
|
-
state.migrationsComplete = false;
|
|
519
|
-
const err = error instanceof Error ? error : new Error(String(error));
|
|
520
|
-
onMigrationError?.(err);
|
|
521
|
-
throw err;
|
|
522
|
-
}
|
|
523
|
-
} else {
|
|
524
|
-
state.migrationsComplete = true;
|
|
525
|
-
}
|
|
526
|
-
}
|
|
527
|
-
async function mount(props) {
|
|
528
|
-
const domElement = props.domElement ?? document.getElementById(`app-${name}`);
|
|
529
|
-
if (!domElement) {
|
|
530
|
-
throw new Error(`No DOM element found for app "${name}". Expected element with id="app-${name}" or domElement prop.`);
|
|
531
|
-
}
|
|
532
|
-
state.mountedElement = domElement;
|
|
533
|
-
const rootElement = react.createElement(RootComponent, props.customProps ?? {});
|
|
534
|
-
const appElement = react.createElement(DatabaseProvider, {
|
|
535
|
-
db: state.db,
|
|
536
|
-
migrationsComplete: state.migrationsComplete,
|
|
537
|
-
migrationResult: state.migrationResult,
|
|
538
|
-
children: rootElement
|
|
539
|
-
});
|
|
540
|
-
const ReactDOM = await import('react-dom/client');
|
|
541
|
-
const root = ReactDOM.createRoot(domElement);
|
|
542
|
-
root.render(appElement);
|
|
543
|
-
state.reactRoot = root;
|
|
544
|
-
}
|
|
545
|
-
async function unmount(_props) {
|
|
546
|
-
if (state.reactRoot) {
|
|
547
|
-
state.reactRoot.unmount();
|
|
548
|
-
state.reactRoot = void 0;
|
|
549
|
-
}
|
|
550
|
-
if (state.mountedElement) {
|
|
551
|
-
state.mountedElement.innerHTML = "";
|
|
552
|
-
state.mountedElement = void 0;
|
|
553
|
-
}
|
|
554
|
-
}
|
|
555
|
-
return {
|
|
556
|
-
bootstrap,
|
|
557
|
-
mount,
|
|
558
|
-
unmount
|
|
559
|
-
};
|
|
560
|
-
}
|
|
561
443
|
|
|
562
444
|
// src/events/client.ts
|
|
563
445
|
var EldrinEventClient = class {
|
|
@@ -1163,12 +1045,10 @@ function createPermissionMiddleware(config) {
|
|
|
1163
1045
|
|
|
1164
1046
|
exports.AUTH_HEADERS = AUTH_HEADERS;
|
|
1165
1047
|
exports.CHECKSUM_PREFIX = CHECKSUM_PREFIX;
|
|
1166
|
-
exports.DatabaseProvider = DatabaseProvider;
|
|
1167
1048
|
exports.EldrinEventClient = EldrinEventClient;
|
|
1168
1049
|
exports.calculateChecksum = calculateChecksum;
|
|
1169
1050
|
exports.calculatePrefixedChecksum = calculatePrefixedChecksum;
|
|
1170
1051
|
exports.compileRoutes = compileRoutes;
|
|
1171
|
-
exports.createApp = createApp;
|
|
1172
1052
|
exports.createEventClient = createEventClient;
|
|
1173
1053
|
exports.createPermissionMiddleware = createPermissionMiddleware;
|
|
1174
1054
|
exports.extractTimestamp = extractTimestamp;
|
|
@@ -1193,9 +1073,6 @@ exports.requireJWTPermission = requireJWTPermission;
|
|
|
1193
1073
|
exports.requirePermission = requirePermission;
|
|
1194
1074
|
exports.rollbackMigrations = rollbackMigrations;
|
|
1195
1075
|
exports.runMigrations = runMigrations;
|
|
1196
|
-
exports.useDatabase = useDatabase;
|
|
1197
|
-
exports.useDatabaseContext = useDatabaseContext;
|
|
1198
|
-
exports.useMigrationsComplete = useMigrationsComplete;
|
|
1199
1076
|
exports.validateMigrationManifest = validateMigrationManifest;
|
|
1200
1077
|
exports.verifyChecksum = verifyChecksum;
|
|
1201
1078
|
exports.verifyJWT = verifyJWT;
|