@unchainedshop/api 4.1.2 → 4.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/index.html +1 -1
- package/lib/fastify/ercMetadataHandler.js +1 -1
- package/lib/fastify/ercMetadataHandler.js.map +1 -1
- package/lib/fastify/index.d.ts.map +1 -1
- package/lib/fastify/index.js +43 -17
- package/lib/fastify/index.js.map +1 -1
- package/package.json +1 -1
- package/src/fastify/ercMetadataHandler.ts +1 -1
- package/src/fastify/index.ts +41 -18
package/index.html
CHANGED
|
@@ -156,7 +156,7 @@
|
|
|
156
156
|
<div class="info-box">
|
|
157
157
|
<h2>🚀 Ready to Install Admin UI?</h2>
|
|
158
158
|
<p style="margin-bottom: 10px;">Get started with the Unchained admin interface by running:</p>
|
|
159
|
-
<div class="code">npm install @unchainedshop/admin-ui</div>
|
|
159
|
+
<div class="code">npm install @fastify/static @unchainedshop/admin-ui</div>
|
|
160
160
|
</div>
|
|
161
161
|
|
|
162
162
|
<div class="info-box" style="margin-top: 20px;">
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createLogger } from '@unchainedshop/logger';
|
|
2
|
-
const logger = createLogger('unchained:erc-metadata');
|
|
2
|
+
const logger = createLogger('unchained:api:erc-metadata');
|
|
3
3
|
const { ROOT_URL = 'http://localhost:4010' } = process.env;
|
|
4
4
|
const notFoundHandler = (res) => {
|
|
5
5
|
logger.error('Method not supported, return 404');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ercMetadataHandler.js","sourceRoot":"","sources":["../../src/fastify/ercMetadataHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAIrD,MAAM,MAAM,GAAG,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"ercMetadataHandler.js","sourceRoot":"","sources":["../../src/fastify/ercMetadataHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAIrD,MAAM,MAAM,GAAG,YAAY,CAAC,4BAA4B,CAAC,CAAC;AAE1D,MAAM,EAAE,QAAQ,GAAG,uBAAuB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAE3D,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,EAAE;IAC9B,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACjD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAuB,KAAK,EAClD,GAAmD,EACnD,GAAG,EACH,EAAE;IACF,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,gBAAgB,CAAC;QACpE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAEvC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAE/F,MAAM,EAAE,SAAS,EAAE,qBAAqB,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC,MAAa,CAAC;QAE9E,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QAEhE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC;YACnD,iBAAiB,EAAE,CAAC,aAAa,IAAI,qBAAqB,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YAC9F,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,eAAe;SACxD,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC;YACzD,OAAO;YACP,KAAK;YACL,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM;SACxE,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW;YAAE,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;QAE9C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChB,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChB,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACtE,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fastify/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOpD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,kBAAkB,EAAkB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fastify/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOpD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,kBAAkB,EAAkB,MAAM,SAAS,CAAC;AAIjG,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAiFD,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,KAAG,iBAehD,CAAC;AAEF,eAAO,MAAM,OAAO,GAClB,SAAS,eAAe,EACxB,uCAIG;IACD,cAAc,EAAE,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7C,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;IACf,YAAY,EAAE,aAAa,CAAC;CAC7B,EACD,iFAKG;IACD,mCAAmC,CAAC,EAAE,OAAO,CAAC;IAC9C,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;IAC1D,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,qBAAqB,CAAC,EAAE,CACtB,GAAG,EAAE,eAAe,EACpB,EAAE,YAAY,EAAE,EAAE;QAAE,YAAY,EAAE,aAAa,CAAA;KAAE,KAC9C,IAAI,CAAC;CACN,SA4HP,CAAC;AAqBF,eAAO,MAAM,aAAa,EAAE,kBAAkB,CAAC,oBAAoB,CAmClE,CAAC;AAGF,eAAO,MAAM,aAAa,0CAAgB,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
package/lib/fastify/index.js
CHANGED
|
@@ -10,8 +10,8 @@ import fastifyMultipart from '@fastify/multipart';
|
|
|
10
10
|
import { createLogger } from '@unchainedshop/logger';
|
|
11
11
|
import mcpHandler from './mcpHandler.js';
|
|
12
12
|
import tempUploadHandler from './tempUploadHandler.js';
|
|
13
|
-
import fastifyStatic from '@fastify/static';
|
|
14
13
|
import { connectChat } from './chatHandler.js';
|
|
14
|
+
import { readFileSync } from 'node:fs';
|
|
15
15
|
const resolveUserRemoteAddress = (req) => {
|
|
16
16
|
const remoteAddress = req.headers['x-real-ip'] ||
|
|
17
17
|
req.headers['x-forwarded-for'] ||
|
|
@@ -190,26 +190,52 @@ export const connect = (fastify, { graphqlHandler, db, unchainedAPI, }, { allowR
|
|
|
190
190
|
});
|
|
191
191
|
}
|
|
192
192
|
};
|
|
193
|
-
|
|
193
|
+
const fallbackLandingPageHandler = (request, reply) => {
|
|
194
|
+
if (request.raw.method === 'GET') {
|
|
195
|
+
const staticURL = import.meta.resolve('@unchainedshop/api/index.html');
|
|
196
|
+
const staticPath = new URL(staticURL).pathname.split('/').slice(0, -1).join('/');
|
|
197
|
+
return reply.type('text/html').send(readFileSync(staticPath + '/index.html'));
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
return reply.status(404).send();
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
const resolveAdminUIPath = () => {
|
|
194
204
|
try {
|
|
195
205
|
const staticURL = import.meta.resolve('@unchainedshop/admin-ui');
|
|
196
|
-
|
|
197
|
-
await fastify.register(fastifyStatic, {
|
|
198
|
-
root: staticPath,
|
|
199
|
-
prefix: opts.prefix || '/',
|
|
200
|
-
});
|
|
201
|
-
fastify.setNotFoundHandler((request, reply) => {
|
|
202
|
-
if (request.raw.method === 'GET') {
|
|
203
|
-
const staticURL = import.meta.resolve('@unchainedshop/api/index.html');
|
|
204
|
-
const staticPath = new URL(staticURL).pathname.split('/').slice(0, -1).join('/');
|
|
205
|
-
return reply.type('text/html').sendFile('index.html', staticPath);
|
|
206
|
-
}
|
|
207
|
-
else {
|
|
208
|
-
return reply.status(404).send();
|
|
209
|
-
}
|
|
210
|
-
});
|
|
206
|
+
return new URL(staticURL).pathname.split('/').slice(0, -1).join('/');
|
|
211
207
|
}
|
|
212
208
|
catch {
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
export const adminUIRouter = async (fastify, opts) => {
|
|
213
|
+
try {
|
|
214
|
+
let fastifyStatic;
|
|
215
|
+
try {
|
|
216
|
+
const fastifyStaticModule = await import('@fastify/static');
|
|
217
|
+
fastifyStatic = fastifyStaticModule.default;
|
|
218
|
+
}
|
|
219
|
+
catch {
|
|
220
|
+
/* */
|
|
221
|
+
}
|
|
222
|
+
if (!fastifyStatic) {
|
|
223
|
+
fastify.log.warn("npm dependency @fastify/static is not installed, can't serve admin-ui");
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
const adminUIPath = resolveAdminUIPath();
|
|
227
|
+
if (adminUIPath) {
|
|
228
|
+
await fastify.register(fastifyStatic, {
|
|
229
|
+
root: adminUIPath,
|
|
230
|
+
prefix: opts.prefix || '/',
|
|
231
|
+
});
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
await fastify.get(opts.prefix || '/', fallbackLandingPageHandler);
|
|
236
|
+
}
|
|
237
|
+
catch (e) {
|
|
238
|
+
fastify.log.error(e);
|
|
213
239
|
if (process.env.NODE_ENV !== 'production') {
|
|
214
240
|
// Trying the default admin ui dev port
|
|
215
241
|
fastify.get('/', async (request, reply) => {
|
package/lib/fastify/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fastify/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAqB,MAAM,eAAe,CAAC;AAC7E,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AACvD,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AACzD,OAAO,UAAU,MAAM,eAAe,CAAC;AAIvC,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fastify/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@ import { createLogger } from '@unchainedshop/logger';
|
|
|
2
2
|
import { Context } from '../context.js';
|
|
3
3
|
import { FastifyRequest, RouteHandlerMethod } from 'fastify';
|
|
4
4
|
|
|
5
|
-
const logger = createLogger('unchained:erc-metadata');
|
|
5
|
+
const logger = createLogger('unchained:api:erc-metadata');
|
|
6
6
|
|
|
7
7
|
const { ROOT_URL = 'http://localhost:4010' } = process.env;
|
|
8
8
|
|
package/src/fastify/index.ts
CHANGED
|
@@ -15,10 +15,9 @@ import { FastifyBaseLogger, FastifyInstance, FastifyPluginAsync, FastifyRequest
|
|
|
15
15
|
import { createLogger } from '@unchainedshop/logger';
|
|
16
16
|
import mcpHandler from './mcpHandler.js';
|
|
17
17
|
import tempUploadHandler from './tempUploadHandler.js';
|
|
18
|
-
import fastifyStatic from '@fastify/static';
|
|
19
18
|
import { connectChat } from './chatHandler.js';
|
|
20
19
|
import { ChatConfiguration } from '../chat/utils.js';
|
|
21
|
-
|
|
20
|
+
import { readFileSync } from 'node:fs';
|
|
22
21
|
export interface AdminUIRouterOptions {
|
|
23
22
|
prefix: string;
|
|
24
23
|
enabled?: boolean;
|
|
@@ -270,29 +269,53 @@ export const connect = (
|
|
|
270
269
|
}
|
|
271
270
|
};
|
|
272
271
|
|
|
272
|
+
const fallbackLandingPageHandler = (request, reply) => {
|
|
273
|
+
if (request.raw.method === 'GET') {
|
|
274
|
+
const staticURL = import.meta.resolve('@unchainedshop/api/index.html');
|
|
275
|
+
const staticPath = new URL(staticURL).pathname.split('/').slice(0, -1).join('/');
|
|
276
|
+
return reply.type('text/html').send(readFileSync(staticPath + '/index.html'));
|
|
277
|
+
} else {
|
|
278
|
+
return reply.status(404).send();
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
|
|
282
|
+
const resolveAdminUIPath = () => {
|
|
283
|
+
try {
|
|
284
|
+
const staticURL = import.meta.resolve('@unchainedshop/admin-ui');
|
|
285
|
+
return new URL(staticURL).pathname.split('/').slice(0, -1).join('/');
|
|
286
|
+
} catch {
|
|
287
|
+
return null;
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
|
|
273
291
|
export const adminUIRouter: FastifyPluginAsync<AdminUIRouterOptions> = async (
|
|
274
292
|
fastify: FastifyInstance,
|
|
275
293
|
opts,
|
|
276
294
|
) => {
|
|
277
295
|
try {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
}
|
|
296
|
+
let fastifyStatic;
|
|
297
|
+
try {
|
|
298
|
+
const fastifyStaticModule = await import('@fastify/static');
|
|
299
|
+
fastifyStatic = fastifyStaticModule.default;
|
|
300
|
+
} catch {
|
|
301
|
+
/* */
|
|
302
|
+
}
|
|
285
303
|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
304
|
+
if (!fastifyStatic) {
|
|
305
|
+
fastify.log.warn("npm dependency @fastify/static is not installed, can't serve admin-ui");
|
|
306
|
+
} else {
|
|
307
|
+
const adminUIPath = resolveAdminUIPath();
|
|
308
|
+
if (adminUIPath) {
|
|
309
|
+
await fastify.register(fastifyStatic, {
|
|
310
|
+
root: adminUIPath,
|
|
311
|
+
prefix: opts.prefix || '/',
|
|
312
|
+
});
|
|
313
|
+
return;
|
|
293
314
|
}
|
|
294
|
-
}
|
|
295
|
-
|
|
315
|
+
}
|
|
316
|
+
await fastify.get(opts.prefix || '/', fallbackLandingPageHandler);
|
|
317
|
+
} catch (e) {
|
|
318
|
+
fastify.log.error(e);
|
|
296
319
|
if (process.env.NODE_ENV !== 'production') {
|
|
297
320
|
// Trying the default admin ui dev port
|
|
298
321
|
fastify.get('/', async (request, reply) => {
|