@holo-js/adapter-nuxt 0.1.1 → 0.1.3
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/module.d.mts +34 -3
- package/dist/module.json +1 -1
- package/dist/module.mjs +90 -18
- package/dist/runtime/composables/index.d.ts +0 -13
- package/dist/runtime/composables/index.js +0 -6
- package/dist/runtime/composables/storage.d.ts +12 -0
- package/dist/runtime/composables/storage.js +6 -0
- package/dist/runtime/drivers/s3.js +1 -1
- package/dist/types.d.mts +1 -1
- package/package.json +25 -6
package/dist/module.d.mts
CHANGED
|
@@ -1,8 +1,34 @@
|
|
|
1
1
|
import { LoadedHoloConfig, HoloConfigMap } from '@holo-js/config';
|
|
2
|
-
import { ModuleOptions as ModuleOptions$1 } from '@holo-js/storage';
|
|
3
2
|
|
|
4
3
|
type ModuleOptions = Record<string, never>;
|
|
5
|
-
|
|
4
|
+
type StorageDriver = 'local' | 'public' | 's3';
|
|
5
|
+
type StorageVisibility = 'private' | 'public';
|
|
6
|
+
type StorageDiskConfig = {
|
|
7
|
+
driver: StorageDriver;
|
|
8
|
+
visibility?: StorageVisibility;
|
|
9
|
+
root?: string;
|
|
10
|
+
url?: string;
|
|
11
|
+
bucket?: string;
|
|
12
|
+
region?: string;
|
|
13
|
+
endpoint?: string;
|
|
14
|
+
accessKeyId?: string;
|
|
15
|
+
secretAccessKey?: string;
|
|
16
|
+
sessionToken?: string;
|
|
17
|
+
forcePathStyleEndpoint?: boolean;
|
|
18
|
+
[key: string]: unknown;
|
|
19
|
+
};
|
|
20
|
+
type StorageModuleOptions = {
|
|
21
|
+
defaultDisk?: string;
|
|
22
|
+
routePrefix?: string;
|
|
23
|
+
disks?: Record<string, StorageDiskConfig>;
|
|
24
|
+
};
|
|
25
|
+
type StorageS3Module = {
|
|
26
|
+
default: unknown;
|
|
27
|
+
};
|
|
28
|
+
declare function hasModuleNotFoundCode(error: unknown, expectedSpecifier: string): boolean;
|
|
29
|
+
declare function importOptionalStorageS3Module(): Promise<StorageS3Module | undefined>;
|
|
30
|
+
declare function hasLoadedConfigFile(loaded: LoadedHoloConfig<HoloConfigMap>, configName: string): boolean;
|
|
31
|
+
declare function toStorageModuleOptions(loaded: LoadedHoloConfig<HoloConfigMap>): StorageModuleOptions;
|
|
6
32
|
declare const _default: {
|
|
7
33
|
meta?: {
|
|
8
34
|
name?: string;
|
|
@@ -11,9 +37,14 @@ declare const _default: {
|
|
|
11
37
|
setup: (options: ModuleOptions, nuxt: unknown) => void | Promise<void>;
|
|
12
38
|
};
|
|
13
39
|
|
|
40
|
+
declare const moduleInternals: {
|
|
41
|
+
hasModuleNotFoundCode: typeof hasModuleNotFoundCode;
|
|
42
|
+
hasLoadedConfigFile: typeof hasLoadedConfigFile;
|
|
43
|
+
importOptionalStorageS3Module: typeof importOptionalStorageS3Module;
|
|
44
|
+
};
|
|
14
45
|
declare const adapterNuxtInternals: {
|
|
15
46
|
toStorageModuleOptions: typeof toStorageModuleOptions;
|
|
16
47
|
};
|
|
17
48
|
|
|
18
|
-
export { adapterNuxtInternals, _default as default };
|
|
49
|
+
export { adapterNuxtInternals, _default as default, moduleInternals };
|
|
19
50
|
export type { ModuleOptions };
|
package/dist/module.json
CHANGED
package/dist/module.mjs
CHANGED
|
@@ -1,8 +1,58 @@
|
|
|
1
1
|
import { resolve } from 'node:path';
|
|
2
2
|
import { defineNuxtModule, createResolver, addServerPlugin, addImports, addServerImportsDir, addServerHandler } from '@nuxt/kit';
|
|
3
3
|
import { loadConfigDirectory } from '@holo-js/config';
|
|
4
|
-
import { mergeModuleOptions, normalizeModuleOptions, applyNitroStorageConfig, hasPublicLocalDisk } from '@holo-js/storage';
|
|
5
4
|
|
|
5
|
+
function escapeRegExp(value) {
|
|
6
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
7
|
+
}
|
|
8
|
+
function hasModuleNotFoundCode(error, expectedSpecifier) {
|
|
9
|
+
if (!error || typeof error !== "object") {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
if ("code" in error && error.code === "ERR_MODULE_NOT_FOUND") {
|
|
13
|
+
const message = "message" in error && typeof error.message === "string" ? error.message : "";
|
|
14
|
+
const escapedSpecifier = escapeRegExp(expectedSpecifier);
|
|
15
|
+
if ([
|
|
16
|
+
new RegExp(`Cannot find package ['"]${escapedSpecifier}['"]`),
|
|
17
|
+
new RegExp(`Cannot find module ['"]${escapedSpecifier}['"]`),
|
|
18
|
+
new RegExp(`Could not resolve ['"]${escapedSpecifier}['"]`),
|
|
19
|
+
new RegExp(`Failed to load url\\s+(?:['"\`]${escapedSpecifier}['"\`]|${escapedSpecifier}(?=[\\s(]|$))`)
|
|
20
|
+
].some((pattern) => pattern.test(message))) {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if ("cause" in error) {
|
|
25
|
+
return hasModuleNotFoundCode(error.cause, expectedSpecifier);
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
async function importOptionalStorageModule() {
|
|
30
|
+
try {
|
|
31
|
+
return await import('@holo-js/storage');
|
|
32
|
+
} catch (error) {
|
|
33
|
+
if (hasModuleNotFoundCode(error, "@holo-js/storage")) {
|
|
34
|
+
return void 0;
|
|
35
|
+
}
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async function importOptionalStorageS3Module() {
|
|
40
|
+
try {
|
|
41
|
+
const storageS3 = await import('@holo-js/storage-s3');
|
|
42
|
+
return typeof storageS3.default === "undefined" ? void 0 : storageS3;
|
|
43
|
+
} catch (error) {
|
|
44
|
+
if (hasModuleNotFoundCode(error, "@holo-js/storage-s3")) {
|
|
45
|
+
return void 0;
|
|
46
|
+
}
|
|
47
|
+
throw error;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function hasLoadedConfigFile(loaded, configName) {
|
|
51
|
+
return loaded.loadedFiles.some((filePath) => {
|
|
52
|
+
const normalizedPath = filePath.replaceAll("\\", "/");
|
|
53
|
+
return normalizedPath.endsWith(`/config/${configName}.ts`) || normalizedPath.endsWith(`/config/${configName}.mts`) || normalizedPath.endsWith(`/config/${configName}.js`) || normalizedPath.endsWith(`/config/${configName}.mjs`) || normalizedPath.endsWith(`/config/${configName}.cts`) || normalizedPath.endsWith(`/config/${configName}.cjs`);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
6
56
|
function toStorageModuleOptions(loaded) {
|
|
7
57
|
return {
|
|
8
58
|
defaultDisk: loaded.storage.defaultDisk,
|
|
@@ -24,6 +74,7 @@ const module$1 = defineNuxtModule({
|
|
|
24
74
|
preferCache: process.env.NODE_ENV === "production",
|
|
25
75
|
processEnv: process.env
|
|
26
76
|
});
|
|
77
|
+
const storageModule = await importOptionalStorageModule();
|
|
27
78
|
const loadedStorageOptions = toStorageModuleOptions(loaded);
|
|
28
79
|
const s3Driver = resolver.resolve("./runtime/drivers/s3.js");
|
|
29
80
|
opts.nitro = opts.nitro || { storage: {} };
|
|
@@ -36,43 +87,59 @@ const module$1 = defineNuxtModule({
|
|
|
36
87
|
projectRoot: rootDir
|
|
37
88
|
};
|
|
38
89
|
opts.runtimeConfig.db = loaded.database;
|
|
39
|
-
const
|
|
40
|
-
|
|
90
|
+
const storageConfigured = hasLoadedConfigFile(loaded, "storage");
|
|
91
|
+
if (!storageModule && storageConfigured) {
|
|
92
|
+
throw new Error("[@holo-js/adapter-nuxt] Storage config requires @holo-js/storage to be installed.");
|
|
93
|
+
}
|
|
94
|
+
const mergedStorageOptions = storageModule?.mergeModuleOptions(void 0, loadedStorageOptions);
|
|
95
|
+
const normalizedStorage = mergedStorageOptions ? storageModule?.normalizeModuleOptions(mergedStorageOptions) : void 0;
|
|
41
96
|
opts._holoStorageModuleOptions = mergedStorageOptions;
|
|
42
|
-
|
|
97
|
+
if (normalizedStorage && Object.values(normalizedStorage.disks).some((disk) => disk.driver === "s3")) {
|
|
98
|
+
if (!await importOptionalStorageS3Module()) {
|
|
99
|
+
throw new Error("[@holo-js/adapter-nuxt] S3 storage disks require @holo-js/storage-s3 to be installed.");
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (normalizedStorage) {
|
|
103
|
+
opts.runtimeConfig.holoStorage = normalizedStorage;
|
|
104
|
+
}
|
|
43
105
|
if (!opts._holoCoreRuntimeRegistered) {
|
|
44
|
-
|
|
45
|
-
addImports([
|
|
106
|
+
const imports = [
|
|
46
107
|
{ name: "holo", as: "holo", from: resolver.resolve("./runtime/composables") },
|
|
47
108
|
{ name: "useHoloDb", as: "useHoloDb", from: resolver.resolve("./runtime/composables") },
|
|
48
109
|
{ name: "useHoloEnv", as: "useHoloEnv", from: resolver.resolve("./runtime/composables") },
|
|
49
|
-
{ name: "useHoloDebug", as: "useHoloDebug", from: resolver.resolve("./runtime/composables") }
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
110
|
+
{ name: "useHoloDebug", as: "useHoloDebug", from: resolver.resolve("./runtime/composables") }
|
|
111
|
+
];
|
|
112
|
+
if (storageModule) {
|
|
113
|
+
imports.push(
|
|
114
|
+
{ name: "useStorage", as: "useStorage", from: resolver.resolve("./runtime/composables/storage") },
|
|
115
|
+
{ name: "Storage", as: "Storage", from: resolver.resolve("./runtime/composables/storage") }
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
addServerPlugin(resolver.resolve("./runtime/plugins/init"));
|
|
119
|
+
addImports(imports);
|
|
53
120
|
addServerImportsDir(resolver.resolve("./runtime/server/imports"));
|
|
54
121
|
addServerImportsDir(resolve(sourceDir, "server/models"));
|
|
55
122
|
opts._holoCoreRuntimeRegistered = true;
|
|
56
123
|
}
|
|
57
|
-
if (!opts._holoStorageRuntimeRegistered) {
|
|
124
|
+
if (storageModule && !opts._holoStorageRuntimeRegistered) {
|
|
58
125
|
addServerPlugin(resolver.resolve("./runtime/plugins/storage"));
|
|
59
126
|
opts._holoStorageRuntimeRegistered = true;
|
|
60
127
|
}
|
|
61
|
-
if (!opts.nitro.storage || Object.keys(opts.nitro.storage).every((key) => !key.startsWith("holo:"))) {
|
|
62
|
-
applyNitroStorageConfig(opts, normalizedStorage, s3Driver);
|
|
128
|
+
if (storageModule && normalizedStorage && (!opts.nitro.storage || Object.keys(opts.nitro.storage).every((key) => !key.startsWith("holo:")))) {
|
|
129
|
+
storageModule.applyNitroStorageConfig(opts, normalizedStorage, s3Driver);
|
|
63
130
|
}
|
|
64
131
|
const runtimePath = resolver.resolve("./runtime");
|
|
65
132
|
if (!opts.build.transpile.includes(runtimePath)) {
|
|
66
133
|
opts.build.transpile.push(runtimePath);
|
|
67
134
|
}
|
|
68
|
-
if (!opts._holoStorageFinalizeRegistered) {
|
|
135
|
+
if (storageModule && !opts._holoStorageFinalizeRegistered) {
|
|
69
136
|
opts._holoStorageFinalizeRegistered = true;
|
|
70
137
|
nuxt.hook("modules:done", () => {
|
|
71
|
-
const finalNormalized = normalizeModuleOptions(opts._holoStorageModuleOptions);
|
|
138
|
+
const finalNormalized = storageModule.normalizeModuleOptions(opts._holoStorageModuleOptions);
|
|
72
139
|
opts.runtimeConfig = opts.runtimeConfig || {};
|
|
73
140
|
opts.runtimeConfig.holoStorage = finalNormalized;
|
|
74
|
-
applyNitroStorageConfig(opts, finalNormalized, s3Driver);
|
|
75
|
-
if (hasPublicLocalDisk(finalNormalized)) {
|
|
141
|
+
storageModule.applyNitroStorageConfig(opts, finalNormalized, s3Driver);
|
|
142
|
+
if (storageModule.hasPublicLocalDisk(finalNormalized)) {
|
|
76
143
|
addServerHandler({
|
|
77
144
|
route: `${finalNormalized.routePrefix}/**`,
|
|
78
145
|
handler: resolver.resolve("./runtime/server/routes/storage.get")
|
|
@@ -88,8 +155,13 @@ const module$1 = defineNuxtModule({
|
|
|
88
155
|
}
|
|
89
156
|
}
|
|
90
157
|
});
|
|
158
|
+
const moduleInternals = {
|
|
159
|
+
hasModuleNotFoundCode,
|
|
160
|
+
hasLoadedConfigFile,
|
|
161
|
+
importOptionalStorageS3Module
|
|
162
|
+
};
|
|
91
163
|
const adapterNuxtInternals = {
|
|
92
164
|
toStorageModuleOptions
|
|
93
165
|
};
|
|
94
166
|
|
|
95
|
-
export { adapterNuxtInternals, module$1 as default };
|
|
167
|
+
export { adapterNuxtInternals, module$1 as default, moduleInternals };
|
|
@@ -1,16 +1,3 @@
|
|
|
1
|
-
export {
|
|
2
|
-
Storage,
|
|
3
|
-
configureStorageRuntime,
|
|
4
|
-
resetStorageRuntime,
|
|
5
|
-
useStorage,
|
|
6
|
-
type StorageBackend,
|
|
7
|
-
type StorageContent,
|
|
8
|
-
type StorageDisk,
|
|
9
|
-
type StorageInstance,
|
|
10
|
-
type StorageRuntimeBindings,
|
|
11
|
-
type TemporaryUrlOptions,
|
|
12
|
-
} from '@holo-js/storage/runtime'
|
|
13
|
-
|
|
14
1
|
export interface HoloRuntimeConnection {
|
|
15
2
|
driver?: 'sqlite' | 'postgres' | 'mysql'
|
|
16
3
|
url?: string
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export {
|
|
2
|
+
Storage,
|
|
3
|
+
configureStorageRuntime,
|
|
4
|
+
resetStorageRuntime,
|
|
5
|
+
useStorage,
|
|
6
|
+
type StorageBackend,
|
|
7
|
+
type StorageContent,
|
|
8
|
+
type StorageDisk,
|
|
9
|
+
type StorageInstance,
|
|
10
|
+
type StorageRuntimeBindings,
|
|
11
|
+
type TemporaryUrlOptions,
|
|
12
|
+
} from '@holo-js/storage/runtime'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default } from "@holo-js/storage
|
|
1
|
+
export { default } from "@holo-js/storage-s3";
|
package/dist/types.d.mts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@holo-js/adapter-nuxt",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Holo-JS Framework - Nuxt adapter",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -16,6 +16,10 @@
|
|
|
16
16
|
"./runtime": {
|
|
17
17
|
"types": "./dist/runtime/composables/index.d.ts",
|
|
18
18
|
"import": "./dist/runtime/composables/index.js"
|
|
19
|
+
},
|
|
20
|
+
"./storage": {
|
|
21
|
+
"types": "./dist/runtime/composables/storage.d.ts",
|
|
22
|
+
"import": "./dist/runtime/composables/storage.js"
|
|
19
23
|
}
|
|
20
24
|
},
|
|
21
25
|
"main": "./dist/module.mjs",
|
|
@@ -31,13 +35,28 @@
|
|
|
31
35
|
},
|
|
32
36
|
"dependencies": {
|
|
33
37
|
"@nuxt/kit": "^4.0.0",
|
|
34
|
-
"@holo-js/config": "^0.1.
|
|
35
|
-
"@holo-js/core": "^0.1.
|
|
36
|
-
"@holo-js/db": "^0.1.
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
"@holo-js/config": "^0.1.3",
|
|
39
|
+
"@holo-js/core": "^0.1.3",
|
|
40
|
+
"@holo-js/db": "^0.1.3"
|
|
41
|
+
},
|
|
42
|
+
"peerDependencies": {
|
|
43
|
+
"@holo-js/forms": "^0.1.3",
|
|
44
|
+
"@holo-js/storage": "^0.1.3",
|
|
45
|
+
"@holo-js/storage-s3": "^0.1.3"
|
|
46
|
+
},
|
|
47
|
+
"peerDependenciesMeta": {
|
|
48
|
+
"@holo-js/forms": {
|
|
49
|
+
"optional": true
|
|
50
|
+
},
|
|
51
|
+
"@holo-js/storage": {
|
|
52
|
+
"optional": true
|
|
53
|
+
},
|
|
54
|
+
"@holo-js/storage-s3": {
|
|
55
|
+
"optional": true
|
|
56
|
+
}
|
|
39
57
|
},
|
|
40
58
|
"devDependencies": {
|
|
59
|
+
"@holo-js/storage-s3": "workspace:*",
|
|
41
60
|
"@nuxt/module-builder": "^1.0.2",
|
|
42
61
|
"@types/node": "^22.10.2",
|
|
43
62
|
"nuxt": "^4.0.0",
|