@revojs/storage 0.2.26 → 0.2.28
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.
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { getContext } from "revojs";
|
|
1
|
+
import { useStorageContext } from "../index.js";
|
|
3
2
|
import { defineCommand } from "revojs/module";
|
|
4
3
|
import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from "fs";
|
|
5
4
|
import { join, resolve } from "path";
|
|
@@ -15,7 +14,7 @@ var generate_default = defineCommand({
|
|
|
15
14
|
async run(scope, context) {
|
|
16
15
|
const databases = new Array();
|
|
17
16
|
const names = /* @__PURE__ */ new Set();
|
|
18
|
-
for (const files of Object.values(
|
|
17
|
+
for (const files of Object.values(useStorageContext(scope))) for (const [name, database] of Object.entries(files)) {
|
|
19
18
|
if (names.has(name)) throw new Error("Migration database names must be unique across storage scopes.");
|
|
20
19
|
names.add(name);
|
|
21
20
|
databases.push({
|
package/dist/index.d.ts
CHANGED
|
@@ -374,6 +374,7 @@ export declare function mergeTable<TTable extends Table, TColumns extends Record
|
|
|
374
374
|
};
|
|
375
375
|
export declare function useReferenceStorage<TSchema extends Record<string, Table>>(scope: Scope, references: TSchema): Database<TSchema>;
|
|
376
376
|
export declare function useStorageProvider<TProvider>(scope: Scope, providers: ReadonlyArray<TProvider>, getReferences: (provider: TProvider) => Record<string, Table>): TProvider;
|
|
377
|
+
export declare function useStorageContext(scope: Scope): Record<string, Record<string, Database<Record<string, Table<string, Record<string, Column<unknown>>>>>>>;
|
|
377
378
|
export declare function useStorage<TSource extends Source<Resolvable<Awaitable<Database>>> = typeof import("#storage").default, TScope extends SourceScope<TSource> = SourceScope<TSource>>(scope: Scope, scopeName: TScope): { [TKey in SourceValue<TSource, TScope>]: Awaited<ReturnType<Awaited<ReturnType<TSource[TScope][TKey]>>>>; };
|
|
378
379
|
export declare const STORAGE_CONTEXT: import("revojs").Descriptor<Record<string, Record<string, Database<Record<string, Table<string, Record<string, Column<unknown>>>>>>>>;
|
|
379
380
|
export {};
|
package/dist/index.js
CHANGED
|
@@ -901,7 +901,7 @@ function useReferenceStorage(scope, references) {
|
|
|
901
901
|
const tables = Object.values(references);
|
|
902
902
|
if (tables.length === 0) throw new Error("Expected at least one table reference.");
|
|
903
903
|
const databases = new Array();
|
|
904
|
-
for (const files of Object.values(
|
|
904
|
+
for (const files of Object.values(useStorageContext(scope))) for (const database of Object.values(files)) {
|
|
905
905
|
let matches = true;
|
|
906
906
|
for (const reference of tables) {
|
|
907
907
|
let found = false;
|
|
@@ -921,7 +921,8 @@ function useReferenceStorage(scope, references) {
|
|
|
921
921
|
return databases[0];
|
|
922
922
|
}
|
|
923
923
|
function useStorageProvider(scope, providers, getReferences) {
|
|
924
|
-
const databases =
|
|
924
|
+
const databases = new Array();
|
|
925
|
+
for (const files of Object.values(useStorageContext(scope))) for (const database of Object.values(files)) databases.push(database);
|
|
925
926
|
const matches = new Array();
|
|
926
927
|
for (const provider of providers) {
|
|
927
928
|
const tables = Object.values(getReferences(provider));
|
|
@@ -932,8 +933,11 @@ function useStorageProvider(scope, providers, getReferences) {
|
|
|
932
933
|
useReferenceStorage(scope, getReferences(matches[0]));
|
|
933
934
|
return matches[0];
|
|
934
935
|
}
|
|
936
|
+
function useStorageContext(scope) {
|
|
937
|
+
return getContext(scope, STORAGE_CONTEXT);
|
|
938
|
+
}
|
|
935
939
|
function useStorage(scope, scopeName) {
|
|
936
|
-
const storages =
|
|
940
|
+
const storages = useStorageContext(scope);
|
|
937
941
|
const storage = storages[scopeName] ?? {};
|
|
938
942
|
storages[scopeName] = storage;
|
|
939
943
|
setContext(scope, STORAGE_CONTEXT, storages);
|
|
@@ -941,4 +945,4 @@ function useStorage(scope, scopeName) {
|
|
|
941
945
|
}
|
|
942
946
|
var STORAGE_CONTEXT = defineContext("STORAGE_CONTEXT");
|
|
943
947
|
//#endregion
|
|
944
|
-
export { CheckConstraint, Column, Database, DeleteStatement, ForeignKeyConstraint, Index, InsertStatement, Migration, Parameter, PreparedQuery, PrimaryKeyConstraint, STORAGE_CONTEXT, SelectStatement, Session, Sql, Statement, Table, UniqueConstraint, UniqueIndex, UpdateStatement, and, asc, between, combine, contains, desc, equals, exists, greater, greaterEquals, like, lower, lowerEquals, mergeTable, not, nullish, or, sql, toParameter, useReferenceStorage, useStorage, useStorageProvider };
|
|
948
|
+
export { CheckConstraint, Column, Database, DeleteStatement, ForeignKeyConstraint, Index, InsertStatement, Migration, Parameter, PreparedQuery, PrimaryKeyConstraint, STORAGE_CONTEXT, SelectStatement, Session, Sql, Statement, Table, UniqueConstraint, UniqueIndex, UpdateStatement, and, asc, between, combine, contains, desc, equals, exists, greater, greaterEquals, like, lower, lowerEquals, mergeTable, not, nullish, or, sql, toParameter, useReferenceStorage, useStorage, useStorageContext, useStorageProvider };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { STORAGE_CONTEXT, useStorageContext } from "../index.js";
|
|
2
|
+
import { definePlugin, setContext } from "revojs";
|
|
3
|
+
//#region src/plugins/index.server.ts
|
|
4
|
+
var index_server_default = definePlugin({ async setup(scope) {
|
|
5
|
+
const databases = useStorageContext(scope);
|
|
6
|
+
for (const [scopeName, files] of Object.entries((await import("#storage")).default)) {
|
|
7
|
+
const entries = databases[scopeName] ?? {};
|
|
8
|
+
for (const [name, resolve] of Object.entries(files)) {
|
|
9
|
+
if (entries[name]) continue;
|
|
10
|
+
entries[name] = await (await resolve())(scope);
|
|
11
|
+
}
|
|
12
|
+
databases[scopeName] = entries;
|
|
13
|
+
}
|
|
14
|
+
setContext(scope, STORAGE_CONTEXT, databases);
|
|
15
|
+
} });
|
|
16
|
+
//#endregion
|
|
17
|
+
export { index_server_default as default };
|
package/package.json
CHANGED
package/dist/plugins/index.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { STORAGE_CONTEXT } from "../index.js";
|
|
2
|
-
import { definePlugin, getContext, setContext } from "revojs";
|
|
3
|
-
import { isServer } from "#variables";
|
|
4
|
-
//#region src/plugins/index.ts
|
|
5
|
-
var plugins_default = definePlugin({ async setup(scope) {
|
|
6
|
-
if (isServer) {
|
|
7
|
-
const databases = getContext(scope, STORAGE_CONTEXT);
|
|
8
|
-
for (const [scopeName, files] of Object.entries((await import("#storage")).default)) {
|
|
9
|
-
const entries = databases[scopeName] ?? {};
|
|
10
|
-
for (const [name, resolve] of Object.entries(files)) {
|
|
11
|
-
if (entries[name]) continue;
|
|
12
|
-
entries[name] = await (await resolve())(scope);
|
|
13
|
-
}
|
|
14
|
-
databases[scopeName] = entries;
|
|
15
|
-
}
|
|
16
|
-
setContext(scope, STORAGE_CONTEXT, databases);
|
|
17
|
-
}
|
|
18
|
-
} });
|
|
19
|
-
//#endregion
|
|
20
|
-
export { plugins_default as default };
|
|
File without changes
|